diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 3d5737b391..3ed27596ec 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -5516,3 +5516,6 @@ Any member of this group will be able to see messages in the channel."; "Media.SendingOptionsTooltip" = "Hold this button to send your message with a self-destruct timer."; "Media.SendWithTimer" = "Send With Timer"; + +"Conversation.Timer.Title" = "Send With Timer"; +"Conversation.Timer.Send" = "Send With Timer"; diff --git a/submodules/LegacyComponents/Sources/TGCameraController.m b/submodules/LegacyComponents/Sources/TGCameraController.m index 7d78698962..b40c4c7d3c 100644 --- a/submodules/LegacyComponents/Sources/TGCameraController.m +++ b/submodules/LegacyComponents/Sources/TGCameraController.m @@ -1365,6 +1365,38 @@ static CGPoint TGCameraControllerClampPointToScreenSize(__unused id self, __unus [strongSelf _dismissTransitionForResultController:strongController]; }); }; + controller.sendWithTimer = ^{ + __strong TGCameraController *strongSelf = weakSelf; + if (strongSelf == nil) + return; + + strongSelf.presentTimerController(^(int32_t time) { + __strong TGCameraController *strongSelf = weakSelf; + __strong TGMediaPickerGalleryModel *strongModel = weakModel; + + if (strongSelf == nil || strongModel == nil) + return; + + __strong TGModernGalleryController *strongController = weakGalleryController; + if (strongController == nil) + return; + + if ([item isKindOfClass:[TGMediaPickerGalleryVideoItem class]]) + { + TGMediaPickerGalleryVideoItemView *itemView = (TGMediaPickerGalleryVideoItemView *)[strongController itemViewForItem:item]; + [itemView stop]; + [itemView setPlayButtonHidden:true animated:true]; + } + + if (strongSelf->_selectionContext.allowGrouping) + [[NSUserDefaults standardUserDefaults] setObject:@(!strongSelf->_selectionContext.grouping) forKey:@"TG_mediaGroupingDisabled_v0"]; + + if (strongSelf.finishedWithResults != nil) + strongSelf.finishedWithResults(strongController, strongSelf->_selectionContext, strongSelf->_editingContext, item.asset, false, time); + + [strongSelf _dismissTransitionForResultController:strongController]; + }); + }; id windowManager = nil; id windowContext = nil; diff --git a/submodules/LegacyComponents/Sources/TGMediaGroupCell.m b/submodules/LegacyComponents/Sources/TGMediaGroupCell.m index cdab6b8179..cc458c004c 100644 --- a/submodules/LegacyComponents/Sources/TGMediaGroupCell.m +++ b/submodules/LegacyComponents/Sources/TGMediaGroupCell.m @@ -131,14 +131,14 @@ const CGFloat TGMediaGroupCellHeight = 86.0f; } _nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(96, 24, 0, 0)]; - _nameLabel.backgroundColor = [UIColor whiteColor]; + _nameLabel.backgroundColor = [UIColor clearColor]; _nameLabel.contentMode = UIViewContentModeLeft; _nameLabel.font = TGSystemFontOfSize(17); _nameLabel.textColor = [UIColor blackColor]; [self.contentView addSubview:_nameLabel]; _countLabel = [[UILabel alloc] initWithFrame:CGRectMake(96, 49, 0, 0)]; - _countLabel.backgroundColor = [UIColor whiteColor]; + _countLabel.backgroundColor = [UIColor clearColor]; _countLabel.contentMode = UIViewContentModeLeft; _countLabel.font = TGSystemFontOfSize(13); _countLabel.textColor = [UIColor blackColor]; @@ -161,10 +161,7 @@ const CGFloat TGMediaGroupCellHeight = 86.0f; self.backgroundColor = pallete.backgroundColor; self.selectedBackgroundView.backgroundColor = pallete.selectionColor; - - _nameLabel.backgroundColor = self.backgroundColor; - _countLabel.backgroundColor = self.backgroundColor; - + _nameLabel.textColor = pallete.textColor; _countLabel.textColor = pallete.textColor; diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m index 8067f56c3f..d12490f9f5 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m @@ -458,10 +458,8 @@ if (strongSelf == nil) return; - if (tab == TGPhotoEditorTimerTab) - [strongSelf openTimerSetup]; - else - editorTabPressed(tab); + [strongSelf tooltipTimerTick]; + editorTabPressed(tab); }; _portraitToolbarView.tabPressed = tabPressed; _landscapeToolbarView.tabPressed = tabPressed; @@ -913,7 +911,6 @@ - (bool)shouldDisplayTooltip { -// return true; return ![[[NSUserDefaults standardUserDefaults] objectForKey:@"TG_displayedMediaTimerTooltip_v1"] boolValue]; } diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m b/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m index 9f3b20a438..87ae43882f 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m @@ -209,15 +209,23 @@ if (strongSelf == nil) return; - strongSelf.presentScheduleController(^(int32_t time) { + strongSelf.presentTimerController(^(int32_t time) { __strong TGMediaPickerModernGalleryMixin *strongSelf = weakSelf; if (strongSelf == nil) return; strongSelf->_galleryModel.dismiss(true, false); + TGMediaEditingContext *editingContext = strongSelf->_editingContext; + NSMutableArray *items = [strongSelf->_galleryModel.selectionContext.selectedItems mutableCopy]; + [items addObject:item.asset]; + + for (id editableItem in items) { + [editingContext setTimer:@(time) forItem:editableItem]; + } + if (strongSelf.completeWithItem != nil) - strongSelf.completeWithItem(item, false, time); + strongSelf.completeWithItem(item, false, 0); }); }; diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift b/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift index cb0165620d..29654ec5d6 100644 --- a/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift +++ b/submodules/LegacyMediaPickerUI/Sources/LegacyAttachmentMenu.swift @@ -59,7 +59,7 @@ public enum LegacyAttachmentMenuMediaEditing { case file } -public func legacyAttachmentMenu(context: AccountContext, peer: Peer, editMediaOptions: LegacyAttachmentMenuMediaEditing?, saveEditedPhotos: Bool, allowGrouping: Bool, hasSchedule: Bool, canSendPolls: Bool, presentationData: PresentationData, parentController: LegacyController, recentlyUsedInlineBots: [Peer], initialCaption: String, openGallery: @escaping () -> Void, openCamera: @escaping (TGAttachmentCameraView?, TGMenuSheetController?) -> Void, openFileGallery: @escaping () -> Void, openWebSearch: @escaping () -> Void, openMap: @escaping () -> Void, openContacts: @escaping () -> Void, openPoll: @escaping () -> Void, presentSelectionLimitExceeded: @escaping () -> Void, presentCantSendMultipleFiles: @escaping () -> Void, presentSchedulePicker: @escaping (@escaping (Int32) -> Void) -> Void, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32) -> Void, selectRecentlyUsedInlineBot: @escaping (Peer) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> Void, present: @escaping (ViewController, Any?) -> Void) -> TGMenuSheetController { +public func legacyAttachmentMenu(context: AccountContext, peer: Peer, editMediaOptions: LegacyAttachmentMenuMediaEditing?, saveEditedPhotos: Bool, allowGrouping: Bool, hasSchedule: Bool, canSendPolls: Bool, presentationData: PresentationData, parentController: LegacyController, recentlyUsedInlineBots: [Peer], initialCaption: String, openGallery: @escaping () -> Void, openCamera: @escaping (TGAttachmentCameraView?, TGMenuSheetController?) -> Void, openFileGallery: @escaping () -> Void, openWebSearch: @escaping () -> Void, openMap: @escaping () -> Void, openContacts: @escaping () -> Void, openPoll: @escaping () -> Void, presentSelectionLimitExceeded: @escaping () -> Void, presentCantSendMultipleFiles: @escaping () -> Void, presentSchedulePicker: @escaping (@escaping (Int32) -> Void) -> Void, presentTimerPicker: @escaping (@escaping (Int32) -> Void) -> Void, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32) -> Void, selectRecentlyUsedInlineBot: @escaping (Peer) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> Void, present: @escaping (ViewController, Any?) -> Void) -> TGMenuSheetController { let defaultVideoPreset = defaultVideoPresetForContext(context) UserDefaults.standard.set(defaultVideoPreset.rawValue as NSNumber, forKey: "TG_preferredVideoPreset_v0") @@ -151,7 +151,7 @@ public func legacyAttachmentMenu(context: AccountContext, peer: Peer, editMediaO } } carouselItem.presentTimerController = { done in - presentSchedulePicker { time in + presentTimerPicker { time in done?(time) } } diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift b/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift index 107ae98e22..fe1d206ce7 100644 --- a/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift +++ b/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift @@ -19,7 +19,7 @@ public func guessMimeTypeByFileExtension(_ ext: String) -> String { return TGMimeTypeMap.mimeType(forExtension: ext) ?? "application/binary" } -public func configureLegacyAssetPicker(_ controller: TGMediaAssetsController, context: AccountContext, peer: Peer, captionsEnabled: Bool = true, storeCreatedAssets: Bool = true, showFileTooltip: Bool = false, initialCaption: String, hasSchedule: Bool, presentWebSearch: (() -> Void)?, presentSelectionLimitExceeded: @escaping () -> Void, presentSchedulePicker: @escaping (@escaping (Int32) -> Void) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> Void) { +public func configureLegacyAssetPicker(_ controller: TGMediaAssetsController, context: AccountContext, peer: Peer, captionsEnabled: Bool = true, storeCreatedAssets: Bool = true, showFileTooltip: Bool = false, initialCaption: String, hasSchedule: Bool, presentWebSearch: (() -> Void)?, presentSelectionLimitExceeded: @escaping () -> Void, presentSchedulePicker: @escaping (@escaping (Int32) -> Void) -> Void, presentTimerPicker: @escaping (@escaping (Int32) -> Void) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> Void) { let isSecretChat = peer.id.namespace == Namespaces.Peer.SecretChat let paintStickersContext = LegacyPaintStickersContext(context: context) @@ -49,7 +49,7 @@ public func configureLegacyAssetPicker(_ controller: TGMediaAssetsController, co } } controller.presentTimerController = { done in - presentSchedulePicker { time in + presentTimerPicker { time in done?(time) } } diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyPaintStickersContext.swift b/submodules/LegacyMediaPickerUI/Sources/LegacyPaintStickersContext.swift index 822cb10941..2155ddcbc2 100644 --- a/submodules/LegacyMediaPickerUI/Sources/LegacyPaintStickersContext.swift +++ b/submodules/LegacyMediaPickerUI/Sources/LegacyPaintStickersContext.swift @@ -256,21 +256,24 @@ public final class LegacyPaintEntityRenderer: NSObject, TGPhotoPaintEntityRender completion(nil) } else { let count = Atomic(value: 1) - let images = Atomic<[CIImage]>(value: []) + let images = Atomic<[(CIImage, Int)]>(value: []) let maybeFinalize = { let count = count.modify { current -> Int in return current - 1 } if count == 0 { - completion(images.with { $0 }) + let sortedImages = images.with({ $0 }).sorted(by: { $0.1 < $1.1 }).map({ $0.0 }) + completion(sortedImages) } } + var i = 0 for entity in entities { let _ = count.modify { current -> Int in return current + 1 } entity.image(for: time, completion: { image in if var image = image { + let index = i var transform = CGAffineTransform(translationX: -image.extent.midX, y: -image.extent.midY) image = image.transformed(by: transform) @@ -289,12 +292,13 @@ public final class LegacyPaintEntityRenderer: NSObject, TGPhotoPaintEntityRender image = image.transformed(by: transform) let _ = images.modify { current in var updated = current - updated.append(image) + updated.append((image, index)) return updated } } maybeFinalize() }) + i += 1 } maybeFinalize() } diff --git a/submodules/SolidRoundedButtonNode/Sources/SolidRoundedButtonNode.swift b/submodules/SolidRoundedButtonNode/Sources/SolidRoundedButtonNode.swift index d8756f5bba..c5c6f42d3f 100644 --- a/submodules/SolidRoundedButtonNode/Sources/SolidRoundedButtonNode.swift +++ b/submodules/SolidRoundedButtonNode/Sources/SolidRoundedButtonNode.swift @@ -15,8 +15,14 @@ public final class SolidRoundedButtonTheme { } } +public enum SolidRoundedButtonFont { + case bold + case regular +} + public final class SolidRoundedButtonNode: ASDisplayNode { private var theme: SolidRoundedButtonTheme + private var font: SolidRoundedButtonFont private let buttonBackgroundNode: ASImageNode private let buttonGlossNode: SolidRoundedButtonGlossNode @@ -47,8 +53,9 @@ public final class SolidRoundedButtonNode: ASDisplayNode { } } - public init(title: String? = nil, icon: UIImage? = nil, theme: SolidRoundedButtonTheme, height: CGFloat = 48.0, cornerRadius: CGFloat = 24.0, gloss: Bool = false) { + public init(title: String? = nil, icon: UIImage? = nil, theme: SolidRoundedButtonTheme, font: SolidRoundedButtonFont = .bold, height: CGFloat = 48.0, cornerRadius: CGFloat = 24.0, gloss: Bool = false) { self.theme = theme + self.font = font self.buttonHeight = height self.buttonCornerRadius = cornerRadius self.title = title @@ -117,7 +124,7 @@ public final class SolidRoundedButtonNode: ASDisplayNode { self.buttonBackgroundNode.image = generateStretchableFilledCircleImage(radius: self.buttonCornerRadius, color: theme.backgroundColor) self.buttonGlossNode.color = theme.foregroundColor - self.titleNode.attributedText = NSAttributedString(string: self.title ?? "", font: Font.semibold(17.0), textColor: theme.foregroundColor) + self.titleNode.attributedText = NSAttributedString(string: self.title ?? "", font: self.font == .bold ? Font.semibold(17.0) : Font.regular(17.0), textColor: theme.foregroundColor) self.subtitleNode.attributedText = NSAttributedString(string: self.subtitle ?? "", font: Font.regular(14.0), textColor: theme.foregroundColor) } @@ -135,7 +142,7 @@ public final class SolidRoundedButtonNode: ASDisplayNode { transition.updateFrame(node: self.buttonNode, frame: buttonFrame) if self.title != self.titleNode.attributedText?.string { - self.titleNode.attributedText = NSAttributedString(string: self.title ?? "", font: Font.semibold(17.0), textColor: self.theme.foregroundColor) + self.titleNode.attributedText = NSAttributedString(string: self.title ?? "", font: self.font == .bold ? Font.semibold(17.0) : Font.regular(17.0), textColor: self.theme.foregroundColor) } let iconSize = self.iconNode.image?.size ?? CGSize() diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index a9519c0979..9922cfa1d6 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -4032,1284 +4032,1288 @@ public final class PresentationStrings: Equatable { public var Theme_Colors_Messages: String { return self._s[3593]! } public var Weekday_Saturday: String { return self._s[3594]! } public var WallpaperPreview_SwipeColorsTopText: String { return self._s[3595]! } - public var Profile_CreateEncryptedChatError: String { return self._s[3596]! } - public var Common_Next: String { return self._s[3598]! } - public var Channel_Stickers_YourStickers: String { return self._s[3600]! } - public var Message_Theme: String { return self._s[3601]! } - public var Call_AudioRouteHeadphones: String { return self._s[3602]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3604]! } - public var Watch_Contacts_NoResults: String { return self._s[3606]! } - public var PhotoEditor_TintTool: String { return self._s[3609]! } - public var LoginPassword_ResetAccount: String { return self._s[3611]! } - public var Settings_SavedMessages: String { return self._s[3612]! } - public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[3613]! } - public var Bot_GenericSupportStatus: String { return self._s[3614]! } - public var StickerPack_Add: String { return self._s[3615]! } - public var Checkout_TotalAmount: String { return self._s[3616]! } - public var Your_cards_number_is_invalid: String { return self._s[3617]! } - public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[3618]! } - public var VoiceOver_Chat_VideoMessage: String { return self._s[3619]! } + public var Conversation_Timer_Send: String { return self._s[3596]! } + public var Profile_CreateEncryptedChatError: String { return self._s[3597]! } + public var Common_Next: String { return self._s[3599]! } + public var Channel_Stickers_YourStickers: String { return self._s[3601]! } + public var Message_Theme: String { return self._s[3602]! } + public var Call_AudioRouteHeadphones: String { return self._s[3603]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3605]! } + public var Watch_Contacts_NoResults: String { return self._s[3607]! } + public var PhotoEditor_TintTool: String { return self._s[3610]! } + public var LoginPassword_ResetAccount: String { return self._s[3612]! } + public var Settings_SavedMessages: String { return self._s[3613]! } + public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[3614]! } + public var Bot_GenericSupportStatus: String { return self._s[3615]! } + public var StickerPack_Add: String { return self._s[3616]! } + public var Checkout_TotalAmount: String { return self._s[3617]! } + public var Your_cards_number_is_invalid: String { return self._s[3618]! } + public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[3619]! } + public var VoiceOver_Chat_VideoMessage: String { return self._s[3620]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3620]!, self._r[3620]!, [_0]) + return formatWithArgumentRanges(self._s[3621]!, self._r[3621]!, [_0]) } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3621]!, self._r[3621]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3622]!, self._r[3622]!, [_1, _2]) } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[3622]! } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[3623]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3624]!, self._r[3624]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3625]!, self._r[3625]!, [_1, _2]) } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3625]!, self._r[3625]!, [_0]) + return formatWithArgumentRanges(self._s[3626]!, self._r[3626]!, [_0]) } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[3626]! } - public var StickerPack_Share: String { return self._s[3627]! } - public var Passport_DeleteAddress: String { return self._s[3628]! } - public var Settings_Passport: String { return self._s[3629]! } - public var SharedMedia_EmptyFilesText: String { return self._s[3630]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[3631]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3632]! } - public var Contacts_PermissionsText: String { return self._s[3633]! } - public var Group_Setup_HistoryVisible: String { return self._s[3634]! } - public var Wallet_Month_ShortDecember: String { return self._s[3636]! } - public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3637]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[3638]! } - public var SocksProxySetup_Title: String { return self._s[3639]! } - public var Notification_Mute1h: String { return self._s[3640]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[3627]! } + public var StickerPack_Share: String { return self._s[3628]! } + public var Passport_DeleteAddress: String { return self._s[3629]! } + public var Settings_Passport: String { return self._s[3630]! } + public var SharedMedia_EmptyFilesText: String { return self._s[3631]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[3632]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3633]! } + public var Contacts_PermissionsText: String { return self._s[3634]! } + public var Group_Setup_HistoryVisible: String { return self._s[3635]! } + public var Wallet_Month_ShortDecember: String { return self._s[3637]! } + public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3638]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[3639]! } + public var SocksProxySetup_Title: String { return self._s[3640]! } + public var Notification_Mute1h: String { return self._s[3641]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3641]!, self._r[3641]!, [_0]) + return formatWithArgumentRanges(self._s[3642]!, self._r[3642]!, [_0]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[3642]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[3643]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3643]!, self._r[3643]!, [_1]) + return formatWithArgumentRanges(self._s[3644]!, self._r[3644]!, [_1]) } - public var FastTwoStepSetup_PasswordSection: String { return self._s[3644]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[3647]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[3649]! } - public var DialogList_NoMessagesText: String { return self._s[3650]! } - public var Privacy_ContactsResetConfirmation: String { return self._s[3651]! } - public var Privacy_Calls_P2PHelp: String { return self._s[3652]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3654]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[3655]! } - public var Common_TakePhotoOrVideo: String { return self._s[3656]! } - public var Wallet_Words_Text: String { return self._s[3657]! } - public var Call_StatusBusy: String { return self._s[3658]! } - public var Conversation_PinnedMessage: String { return self._s[3659]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[3660]! } - public var ChatList_EmptyChatListNewMessage: String { return self._s[3661]! } - public var Wallet_Configuration_BlockchainNameChangedProceed: String { return self._s[3662]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[3663]! } - public var Undo_ChatCleared: String { return self._s[3664]! } - public var CreatePoll_Explanation: String { return self._s[3665]! } - public var AppleWatch_ReplyPresets: String { return self._s[3666]! } - public var Passport_DiscardMessageDescription: String { return self._s[3668]! } - public var Login_NetworkError: String { return self._s[3669]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[3645]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[3648]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[3650]! } + public var DialogList_NoMessagesText: String { return self._s[3651]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[3652]! } + public var Privacy_Calls_P2PHelp: String { return self._s[3653]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3655]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[3656]! } + public var Common_TakePhotoOrVideo: String { return self._s[3657]! } + public var Wallet_Words_Text: String { return self._s[3658]! } + public var Call_StatusBusy: String { return self._s[3659]! } + public var Conversation_PinnedMessage: String { return self._s[3660]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[3661]! } + public var ChatList_EmptyChatListNewMessage: String { return self._s[3662]! } + public var Wallet_Configuration_BlockchainNameChangedProceed: String { return self._s[3663]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[3664]! } + public var Undo_ChatCleared: String { return self._s[3665]! } + public var CreatePoll_Explanation: String { return self._s[3666]! } + public var AppleWatch_ReplyPresets: String { return self._s[3667]! } + public var Passport_DiscardMessageDescription: String { return self._s[3669]! } + public var Login_NetworkError: String { return self._s[3670]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3670]!, self._r[3670]!, [_0]) - } - public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3671]!, self._r[3671]!, [_0]) } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3672]! } - public var Wallet_WordCheck_ViewWords: String { return self._s[3674]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[3675]! } + public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3672]!, self._r[3672]!, [_0]) + } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3673]! } + public var Wallet_WordCheck_ViewWords: String { return self._s[3675]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[3676]! } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3677]!, self._r[3677]!, [_0]) + return formatWithArgumentRanges(self._s[3678]!, self._r[3678]!, [_0]) } - public var Call_ConnectionErrorMessage: String { return self._s[3678]! } - public var VoiceOver_Chat_Music: String { return self._s[3679]! } - public var ChatListFolder_CategoryContacts: String { return self._s[3680]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[3681]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[3683]! } - public var ConversationMedia_Title: String { return self._s[3684]! } - public var EncryptionKey_Title: String { return self._s[3686]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[3687]! } - public var Notification_Exceptions_AddException: String { return self._s[3688]! } - public var PrivacySettings_BlockedPeersEmpty: String { return self._s[3689]! } - public var Profile_MessageLifetime1m: String { return self._s[3690]! } + public var Call_ConnectionErrorMessage: String { return self._s[3679]! } + public var VoiceOver_Chat_Music: String { return self._s[3680]! } + public var ChatListFolder_CategoryContacts: String { return self._s[3681]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[3682]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[3684]! } + public var ConversationMedia_Title: String { return self._s[3685]! } + public var EncryptionKey_Title: String { return self._s[3687]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[3688]! } + public var Notification_Exceptions_AddException: String { return self._s[3689]! } + public var PrivacySettings_BlockedPeersEmpty: String { return self._s[3690]! } + public var Profile_MessageLifetime1m: String { return self._s[3691]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3691]!, self._r[3691]!, [_1]) + return formatWithArgumentRanges(self._s[3692]!, self._r[3692]!, [_1]) } - public var Month_GenMay: String { return self._s[3692]! } + public var Month_GenMay: String { return self._s[3693]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3693]!, self._r[3693]!, [_0]) + return formatWithArgumentRanges(self._s[3694]!, self._r[3694]!, [_0]) } - public var PeopleNearby_Users: String { return self._s[3694]! } - public var Wallet_Send_AddressInfo: String { return self._s[3695]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[3696]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[3697]! } + public var PeopleNearby_Users: String { return self._s[3695]! } + public var Wallet_Send_AddressInfo: String { return self._s[3696]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[3697]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[3698]! } public func Wallet_Updated_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3699]!, self._r[3699]!, [_0]) + return formatWithArgumentRanges(self._s[3700]!, self._r[3700]!, [_0]) } - public var Stats_LoadingTitle: String { return self._s[3700]! } - public var Conversation_EmptyPlaceholder: String { return self._s[3701]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[3702]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[3703]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[3704]! } - public var Camera_TapAndHoldForVideo: String { return self._s[3705]! } - public var Channel_JoinChannel: String { return self._s[3707]! } - public var Appearance_Animations: String { return self._s[3710]! } + public var Stats_LoadingTitle: String { return self._s[3701]! } + public var Conversation_EmptyPlaceholder: String { return self._s[3702]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[3703]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[3704]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[3705]! } + public var Camera_TapAndHoldForVideo: String { return self._s[3706]! } + public var Channel_JoinChannel: String { return self._s[3708]! } + public var Appearance_Animations: String { return self._s[3711]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3711]!, self._r[3711]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3712]!, self._r[3712]!, [_1, _2]) } - public var Stickers_GroupStickers: String { return self._s[3713]! } - public var Appearance_ShareTheme: String { return self._s[3714]! } - public var TwoFactorSetup_Hint_Placeholder: String { return self._s[3715]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[3717]! } - public var StickerPackActionInfo_RemovedTitle: String { return self._s[3718]! } - public var Passport_Address_Street: String { return self._s[3719]! } - public var Conversation_AddContact: String { return self._s[3720]! } - public var Login_PhonePlaceholder: String { return self._s[3721]! } - public var Channel_Members_InviteLink: String { return self._s[3723]! } - public var Bot_Stop: String { return self._s[3724]! } - public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[3726]! } - public var Notification_PassportValueAddress: String { return self._s[3727]! } - public var Month_ShortJuly: String { return self._s[3728]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[3729]! } - public var Channel_AdminLog_BanSendMedia: String { return self._s[3730]! } - public var Passport_Identity_ReverseSide: String { return self._s[3731]! } - public var Watch_Stickers_Recents: String { return self._s[3734]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3736]! } - public var Map_SendThisLocation: String { return self._s[3737]! } + public var Stickers_GroupStickers: String { return self._s[3714]! } + public var Appearance_ShareTheme: String { return self._s[3715]! } + public var TwoFactorSetup_Hint_Placeholder: String { return self._s[3716]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[3718]! } + public var StickerPackActionInfo_RemovedTitle: String { return self._s[3719]! } + public var Passport_Address_Street: String { return self._s[3720]! } + public var Conversation_AddContact: String { return self._s[3721]! } + public var Login_PhonePlaceholder: String { return self._s[3722]! } + public var Channel_Members_InviteLink: String { return self._s[3724]! } + public var Bot_Stop: String { return self._s[3725]! } + public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[3727]! } + public var Notification_PassportValueAddress: String { return self._s[3728]! } + public var Month_ShortJuly: String { return self._s[3729]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[3730]! } + public var Channel_AdminLog_BanSendMedia: String { return self._s[3731]! } + public var Passport_Identity_ReverseSide: String { return self._s[3732]! } + public var Watch_Stickers_Recents: String { return self._s[3735]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3737]! } + public var Map_SendThisLocation: String { return self._s[3738]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3738]!, self._r[3738]!, [_0]) - } - public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3739]!, self._r[3739]!, [_0]) } - public var ConvertToSupergroup_Note: String { return self._s[3740]! } - public var Wallet_Intro_NotNow: String { return self._s[3741]! } + public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3740]!, self._r[3740]!, [_0]) + } + public var ConvertToSupergroup_Note: String { return self._s[3741]! } + public var Wallet_Intro_NotNow: String { return self._s[3742]! } public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3742]!, self._r[3742]!, [_0]) + return formatWithArgumentRanges(self._s[3743]!, self._r[3743]!, [_0]) } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[3743]! } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[3744]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3744]!, self._r[3744]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3745]!, self._r[3745]!, [_0, _1]) } - public var Login_CallRequestState3: String { return self._s[3746]! } - public var Wallpaper_SearchShort: String { return self._s[3747]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[3749]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[3750]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[3751]! } + public var Login_CallRequestState3: String { return self._s[3747]! } + public var Wallpaper_SearchShort: String { return self._s[3748]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[3750]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[3751]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[3752]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3752]!, self._r[3752]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3753]!, self._r[3753]!, [_1, _2]) } - public var Channel_AdminLogFilter_Title: String { return self._s[3753]! } - public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[3755]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[3758]! } + public var Channel_AdminLogFilter_Title: String { return self._s[3754]! } + public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[3756]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[3759]! } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3759]!, self._r[3759]!, [_0]) + return formatWithArgumentRanges(self._s[3760]!, self._r[3760]!, [_0]) } - public var Passport_CorrectErrors: String { return self._s[3760]! } - public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[3761]! } + public var Passport_CorrectErrors: String { return self._s[3761]! } + public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[3762]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3762]!, self._r[3762]!, [_0]) + return formatWithArgumentRanges(self._s[3763]!, self._r[3763]!, [_0]) } - public var Map_SendMyCurrentLocation: String { return self._s[3763]! } - public var Channel_DiscussionGroup: String { return self._s[3764]! } - public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3765]! } + public var Map_SendMyCurrentLocation: String { return self._s[3764]! } + public var Channel_DiscussionGroup: String { return self._s[3765]! } + public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3766]! } public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3766]!, self._r[3766]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3767]!, self._r[3767]!, [_1, _2]) } - public var SharedMedia_SearchNoResults: String { return self._s[3767]! } - public var Permissions_NotificationsText_v0: String { return self._s[3768]! } - public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[3769]! } - public var Appearance_AppIcon: String { return self._s[3770]! } - public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[3771]! } - public var LoginPassword_FloodError: String { return self._s[3772]! } - public var Wallet_Send_OwnAddressAlertProceed: String { return self._s[3774]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[3775]! } + public var SharedMedia_SearchNoResults: String { return self._s[3768]! } + public var Permissions_NotificationsText_v0: String { return self._s[3769]! } + public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[3770]! } + public var Appearance_AppIcon: String { return self._s[3771]! } + public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[3772]! } + public var LoginPassword_FloodError: String { return self._s[3773]! } + public var Wallet_Send_OwnAddressAlertProceed: String { return self._s[3775]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[3776]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3776]!, self._r[3776]!, [_0]) + return formatWithArgumentRanges(self._s[3777]!, self._r[3777]!, [_0]) } - public var Passport_Language_bn: String { return self._s[3777]! } + public var Passport_Language_bn: String { return self._s[3778]! } public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3778]!, self._r[3778]!, [_0]) + return formatWithArgumentRanges(self._s[3779]!, self._r[3779]!, [_0]) } - public var ChatList_Context_Pin: String { return self._s[3779]! } + public var ChatList_Context_Pin: String { return self._s[3780]! } public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3780]!, self._r[3780]!, [_0]) - } - public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3781]!, self._r[3781]!, [_0]) } - public var Wallet_Navigation_Close: String { return self._s[3782]! } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3786]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3788]! } - public var Wallet_Month_GenDecember: String { return self._s[3789]! } - public var Contacts_PermissionsAllow: String { return self._s[3790]! } - public var ReportPeer_ReasonCopyright: String { return self._s[3791]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3792]! } - public var WallpaperPreview_Pattern: String { return self._s[3793]! } - public var Paint_Duplicate: String { return self._s[3794]! } - public var Passport_Address_Country: String { return self._s[3795]! } - public var Notification_RenamedChannel: String { return self._s[3797]! } - public var DialogList_UnknownPinLimitError: String { return self._s[3798]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3799]! } - public var ChatList_Context_Unmute: String { return self._s[3800]! } - public var Group_MessagePhotoUpdated: String { return self._s[3801]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[3802]! } - public var Conversation_ContextMenuBan: String { return self._s[3803]! } - public var TwoStepAuth_EmailSent: String { return self._s[3804]! } - public var MessagePoll_NoVotes: String { return self._s[3805]! } - public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[3806]! } - public var Passport_Language_is: String { return self._s[3808]! } - public var PeopleNearby_UsersEmpty: String { return self._s[3810]! } - public var Tour_Text5: String { return self._s[3811]! } + public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3782]!, self._r[3782]!, [_0]) + } + public var Wallet_Navigation_Close: String { return self._s[3783]! } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3787]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3789]! } + public var Wallet_Month_GenDecember: String { return self._s[3790]! } + public var Contacts_PermissionsAllow: String { return self._s[3791]! } + public var ReportPeer_ReasonCopyright: String { return self._s[3792]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3793]! } + public var WallpaperPreview_Pattern: String { return self._s[3794]! } + public var Paint_Duplicate: String { return self._s[3795]! } + public var Passport_Address_Country: String { return self._s[3796]! } + public var Notification_RenamedChannel: String { return self._s[3798]! } + public var DialogList_UnknownPinLimitError: String { return self._s[3799]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3800]! } + public var ChatList_Context_Unmute: String { return self._s[3801]! } + public var Group_MessagePhotoUpdated: String { return self._s[3802]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[3803]! } + public var Conversation_ContextMenuBan: String { return self._s[3804]! } + public var TwoStepAuth_EmailSent: String { return self._s[3805]! } + public var MessagePoll_NoVotes: String { return self._s[3806]! } + public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[3807]! } + public var Passport_Language_is: String { return self._s[3809]! } + public var PeopleNearby_UsersEmpty: String { return self._s[3811]! } + public var Tour_Text5: String { return self._s[3812]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3814]!, self._r[3814]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3815]!, self._r[3815]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[3815]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[3816]! } + public var Undo_SecretChatDeleted: String { return self._s[3816]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[3817]! } public func VoiceOver_Chat_Size(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3817]!, self._r[3817]!, [_0]) + return formatWithArgumentRanges(self._s[3818]!, self._r[3818]!, [_0]) } - public var Forward_ErrorDisabledForChat: String { return self._s[3818]! } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3819]! } - public var Paint_Edit: String { return self._s[3821]! } - public var ScheduledMessages_ReminderNotification: String { return self._s[3823]! } - public var Undo_DeletedGroup: String { return self._s[3825]! } - public var LoginPassword_ForgotPassword: String { return self._s[3826]! } - public var Wallet_WordImport_IncorrectTitle: String { return self._s[3827]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[3828]! } + public var Forward_ErrorDisabledForChat: String { return self._s[3819]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3820]! } + public var Paint_Edit: String { return self._s[3822]! } + public var ScheduledMessages_ReminderNotification: String { return self._s[3824]! } + public var Undo_DeletedGroup: String { return self._s[3826]! } + public var LoginPassword_ForgotPassword: String { return self._s[3827]! } + public var Wallet_WordImport_IncorrectTitle: String { return self._s[3828]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[3829]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3829]!, self._r[3829]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3830]!, self._r[3830]!, [_0, _1]) } - public var AppWallet_TransactionInfo_FeeInfoURL: String { return self._s[3830]! } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3831]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3832]! } - public var Passport_Language_uz: String { return self._s[3833]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[3834]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3835]! } - public var Map_StopLiveLocation: String { return self._s[3837]! } - public var VoiceOver_MessageContextSend: String { return self._s[3839]! } - public var PasscodeSettings_Help: String { return self._s[3840]! } - public var NotificationsSound_Input: String { return self._s[3841]! } - public var Share_Title: String { return self._s[3844]! } - public var LogoutOptions_Title: String { return self._s[3845]! } - public var Wallet_Send_AddressText: String { return self._s[3846]! } - public var Login_TermsOfServiceAgree: String { return self._s[3847]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[3848]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3849]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3850]! } - public var EnterPasscode_EnterTitle: String { return self._s[3851]! } + public var AppWallet_TransactionInfo_FeeInfoURL: String { return self._s[3831]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3832]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3833]! } + public var Passport_Language_uz: String { return self._s[3834]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[3835]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3836]! } + public var Map_StopLiveLocation: String { return self._s[3838]! } + public var VoiceOver_MessageContextSend: String { return self._s[3840]! } + public var PasscodeSettings_Help: String { return self._s[3841]! } + public var NotificationsSound_Input: String { return self._s[3842]! } + public var Share_Title: String { return self._s[3845]! } + public var LogoutOptions_Title: String { return self._s[3846]! } + public var Wallet_Send_AddressText: String { return self._s[3847]! } + public var Login_TermsOfServiceAgree: String { return self._s[3848]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3849]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3850]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3851]! } + public var EnterPasscode_EnterTitle: String { return self._s[3852]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3852]!, self._r[3852]!, [_0]) + return formatWithArgumentRanges(self._s[3853]!, self._r[3853]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[3853]! } - public var Conversation_AddToContacts: String { return self._s[3854]! } + public var Settings_CopyPhoneNumber: String { return self._s[3854]! } + public var Conversation_AddToContacts: String { return self._s[3855]! } public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3855]!, self._r[3855]!, [_0]) + return formatWithArgumentRanges(self._s[3856]!, self._r[3856]!, [_0]) } - public var NotificationsSound_Keys: String { return self._s[3856]! } + public var NotificationsSound_Keys: String { return self._s[3857]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3857]!, self._r[3857]!, [_0]) + return formatWithArgumentRanges(self._s[3858]!, self._r[3858]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[3858]! } - public var Message_Video: String { return self._s[3859]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[3860]! } + public var Notification_MessageLifetime1w: String { return self._s[3859]! } + public var Message_Video: String { return self._s[3860]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[3861]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3861]!, self._r[3861]!, [_1]) + return formatWithArgumentRanges(self._s[3862]!, self._r[3862]!, [_1]) } - public var Wallet_Receive_AmountInfo: String { return self._s[3864]! } - public var Stats_Overview: String { return self._s[3865]! } + public var Wallet_Receive_AmountInfo: String { return self._s[3865]! } + public var Stats_Overview: String { return self._s[3866]! } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3866]!, self._r[3866]!, [_0]) - } - public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3867]!, self._r[3867]!, [_0]) } - public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3868]! } - public var Passport_Language_mk: String { return self._s[3869]! } - public var ChatListFolder_CategoryNonContacts: String { return self._s[3870]! } - public func Wallet_Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3871]!, self._r[3871]!, [_1, _2, _3]) + public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3868]!, self._r[3868]!, [_0]) } - public var CreatePoll_CancelConfirmation: String { return self._s[3872]! } - public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3873]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3875]! } - public var PrivacyPolicy_Decline: String { return self._s[3876]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[3877]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3878]! } - public var AuthSessions_AddDeviceIntro_Action: String { return self._s[3879]! } - public var Permissions_SiriAllow_v0: String { return self._s[3881]! } - public var Wallet_Month_ShortAugust: String { return self._s[3882]! } - public var Appearance_ThemeCarouselNight: String { return self._s[3883]! } + public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3869]! } + public var Passport_Language_mk: String { return self._s[3870]! } + public var ChatListFolder_CategoryNonContacts: String { return self._s[3871]! } + public func Wallet_Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3872]!, self._r[3872]!, [_1, _2, _3]) + } + public var CreatePoll_CancelConfirmation: String { return self._s[3873]! } + public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3874]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3876]! } + public var PrivacyPolicy_Decline: String { return self._s[3877]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[3878]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3879]! } + public var AuthSessions_AddDeviceIntro_Action: String { return self._s[3880]! } + public var Permissions_SiriAllow_v0: String { return self._s[3882]! } + public var Wallet_Month_ShortAugust: String { return self._s[3883]! } + public var Appearance_ThemeCarouselNight: String { return self._s[3884]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3884]!, self._r[3884]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3885]!, self._r[3885]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3885]!, self._r[3885]!, [_0]) + return formatWithArgumentRanges(self._s[3886]!, self._r[3886]!, [_0]) } - public var Paint_Regular: String { return self._s[3886]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3887]! } - public var SocksProxySetup_ShareLink: String { return self._s[3888]! } - public var Wallet_Qr_Title: String { return self._s[3889]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[3890]! } - public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3892]! } - public var Wallet_Settings_Configuration: String { return self._s[3893]! } - public var GroupInfo_InviteByLink: String { return self._s[3894]! } - public var MessageTimer_Custom: String { return self._s[3895]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3896]! } - public var Conversation_StopQuizConfirmationTitle: String { return self._s[3897]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3899]! } - public var Conversation_SendMessage_SetReminder: String { return self._s[3900]! } - public var VoiceOver_Chat_Selected: String { return self._s[3901]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3902]! } - public var Channel_Username_InvalidTaken: String { return self._s[3903]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[3904]! } - public var Wallet_WordCheck_TryAgain: String { return self._s[3905]! } - public var Wallet_Info_TransactionPendingHeader: String { return self._s[3906]! } - public var Settings_ChatBackground: String { return self._s[3907]! } - public var Channel_Subscribers_Title: String { return self._s[3908]! } - public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3909]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3910]! } - public var Watch_ConnectionDescription: String { return self._s[3911]! } - public var OldChannels_NoticeText: String { return self._s[3914]! } - public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[3915]! } - public var IntentsSettings_SuggestBy: String { return self._s[3917]! } - public var Theme_ThemeChangedText: String { return self._s[3918]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[3919]! } - public var Wallpaper_ResetWallpapers: String { return self._s[3920]! } - public var Wallet_Send_TransactionInProgress: String { return self._s[3921]! } - public var Conversation_SendDice: String { return self._s[3922]! } - public var EditProfile_Title: String { return self._s[3923]! } - public var NotificationsSound_Bamboo: String { return self._s[3925]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3927]! } - public var Login_SmsRequestState2: String { return self._s[3928]! } - public var Passport_Language_ar: String { return self._s[3929]! } + public var Paint_Regular: String { return self._s[3887]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3888]! } + public var SocksProxySetup_ShareLink: String { return self._s[3889]! } + public var Wallet_Qr_Title: String { return self._s[3890]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[3891]! } + public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3893]! } + public var Wallet_Settings_Configuration: String { return self._s[3894]! } + public var GroupInfo_InviteByLink: String { return self._s[3895]! } + public var MessageTimer_Custom: String { return self._s[3896]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3897]! } + public var Conversation_StopQuizConfirmationTitle: String { return self._s[3898]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3900]! } + public var Conversation_SendMessage_SetReminder: String { return self._s[3901]! } + public var VoiceOver_Chat_Selected: String { return self._s[3902]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3903]! } + public var Channel_Username_InvalidTaken: String { return self._s[3904]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[3905]! } + public var Wallet_WordCheck_TryAgain: String { return self._s[3906]! } + public var Wallet_Info_TransactionPendingHeader: String { return self._s[3907]! } + public var Settings_ChatBackground: String { return self._s[3908]! } + public var Channel_Subscribers_Title: String { return self._s[3909]! } + public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3910]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3911]! } + public var Watch_ConnectionDescription: String { return self._s[3912]! } + public var OldChannels_NoticeText: String { return self._s[3915]! } + public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[3916]! } + public var IntentsSettings_SuggestBy: String { return self._s[3918]! } + public var Theme_ThemeChangedText: String { return self._s[3919]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[3920]! } + public var Wallpaper_ResetWallpapers: String { return self._s[3921]! } + public var Wallet_Send_TransactionInProgress: String { return self._s[3922]! } + public var Conversation_SendDice: String { return self._s[3923]! } + public var EditProfile_Title: String { return self._s[3924]! } + public var NotificationsSound_Bamboo: String { return self._s[3926]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3928]! } + public var Login_SmsRequestState2: String { return self._s[3929]! } + public var Passport_Language_ar: String { return self._s[3930]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3930]!, self._r[3930]!, [_0]) + return formatWithArgumentRanges(self._s[3931]!, self._r[3931]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3931]! } - public var Wallet_Created_Text: String { return self._s[3932]! } - public var Conversation_MessageDialogEdit: String { return self._s[3934]! } - public var Wallet_Created_Proceed: String { return self._s[3935]! } - public var Wallet_Words_Done: String { return self._s[3936]! } - public var VoiceOver_Media_PlaybackPause: String { return self._s[3937]! } - public var ChatListFolder_NameChannels: String { return self._s[3938]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3932]! } + public var Wallet_Created_Text: String { return self._s[3933]! } + public var Conversation_MessageDialogEdit: String { return self._s[3935]! } + public var Wallet_Created_Proceed: String { return self._s[3936]! } + public var Wallet_Words_Done: String { return self._s[3937]! } + public var VoiceOver_Media_PlaybackPause: String { return self._s[3938]! } + public var ChatListFolder_NameChannels: String { return self._s[3939]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3939]!, self._r[3939]!, [_1]) + return formatWithArgumentRanges(self._s[3940]!, self._r[3940]!, [_1]) } - public var Common_Close: String { return self._s[3940]! } - public var GroupInfo_PublicLink: String { return self._s[3941]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3942]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3943]! } + public var Common_Close: String { return self._s[3941]! } + public var GroupInfo_PublicLink: String { return self._s[3942]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3943]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3944]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3947]!, self._r[3947]!, [_0]) + return formatWithArgumentRanges(self._s[3948]!, self._r[3948]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[3948]! } + public var UserInfo_About_Placeholder: String { return self._s[3949]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3949]!, self._r[3949]!, [_0]) + return formatWithArgumentRanges(self._s[3950]!, self._r[3950]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[3950]! } - public var Channel_Info_Banned: String { return self._s[3952]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[3951]! } + public var Channel_Info_Banned: String { return self._s[3953]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3953]!, self._r[3953]!, [_0]) + return formatWithArgumentRanges(self._s[3954]!, self._r[3954]!, [_0]) } - public var Appearance_Other: String { return self._s[3954]! } - public var Passport_Language_my: String { return self._s[3955]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3956]! } + public var Appearance_Other: String { return self._s[3955]! } + public var Passport_Language_my: String { return self._s[3956]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3957]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3957]!, self._r[3957]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3958]!, self._r[3958]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3958]! } - public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[3959]! } - public var Preview_CopyAddress: String { return self._s[3960]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3959]! } + public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[3960]! } + public var Preview_CopyAddress: String { return self._s[3961]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3961]!, self._r[3961]!, [_0]) + return formatWithArgumentRanges(self._s[3962]!, self._r[3962]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3962]! } - public var UserInfo_BotSettings: String { return self._s[3963]! } - public var LiveLocation_MenuStopAll: String { return self._s[3965]! } - public var Passport_PasswordCreate: String { return self._s[3966]! } - public var StickerSettings_MaskContextInfo: String { return self._s[3967]! } - public var Message_PinnedLocationMessage: String { return self._s[3968]! } - public var Map_Satellite: String { return self._s[3969]! } - public var Watch_Message_Unsupported: String { return self._s[3970]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[3971]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3972]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3963]! } + public var UserInfo_BotSettings: String { return self._s[3964]! } + public var LiveLocation_MenuStopAll: String { return self._s[3966]! } + public var Passport_PasswordCreate: String { return self._s[3967]! } + public var StickerSettings_MaskContextInfo: String { return self._s[3968]! } + public var Message_PinnedLocationMessage: String { return self._s[3969]! } + public var Map_Satellite: String { return self._s[3970]! } + public var Watch_Message_Unsupported: String { return self._s[3971]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[3972]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3973]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3973]!, self._r[3973]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3974]!, self._r[3974]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3974]!, self._r[3974]!, [_0]) + return formatWithArgumentRanges(self._s[3975]!, self._r[3975]!, [_0]) } - public var Wallet_WordImport_Continue: String { return self._s[3975]! } + public var Wallet_WordImport_Continue: String { return self._s[3976]! } public func TwoFactorSetup_EmailVerification_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3976]!, self._r[3976]!, [_0]) + return formatWithArgumentRanges(self._s[3977]!, self._r[3977]!, [_0]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[3977]! } - public var Privacy_Calls_P2PContacts: String { return self._s[3978]! } - public var NotificationsSound_None: String { return self._s[3979]! } - public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[3980]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3982]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3983]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[3978]! } + public var Privacy_Calls_P2PContacts: String { return self._s[3979]! } + public var NotificationsSound_None: String { return self._s[3980]! } + public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[3981]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3983]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3984]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3984]!, self._r[3984]!, [_1]) + return formatWithArgumentRanges(self._s[3985]!, self._r[3985]!, [_1]) } - public var Cache_Indexing: String { return self._s[3985]! } - public var DialogList_RecentTitlePeople: String { return self._s[3987]! } - public var DialogList_EncryptionRejected: String { return self._s[3988]! } - public var GroupInfo_Administrators: String { return self._s[3989]! } - public var Passport_ScanPassportHelp: String { return self._s[3990]! } - public var Application_Name: String { return self._s[3991]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3992]! } - public var ChatList_PeerTypeGroup: String { return self._s[3993]! } - public var PeopleNearby_MakeVisible: String { return self._s[3995]! } - public var Appearance_ThemeCarouselDay: String { return self._s[3996]! } - public var Stats_GrowthTitle: String { return self._s[3997]! } - public var Passport_Identity_TranslationHelp: String { return self._s[3998]! } + public var Cache_Indexing: String { return self._s[3986]! } + public var DialogList_RecentTitlePeople: String { return self._s[3988]! } + public var DialogList_EncryptionRejected: String { return self._s[3989]! } + public var GroupInfo_Administrators: String { return self._s[3990]! } + public var Passport_ScanPassportHelp: String { return self._s[3991]! } + public var Application_Name: String { return self._s[3992]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3993]! } + public var Conversation_Timer_Title: String { return self._s[3994]! } + public var ChatList_PeerTypeGroup: String { return self._s[3995]! } + public var PeopleNearby_MakeVisible: String { return self._s[3997]! } + public var Appearance_ThemeCarouselDay: String { return self._s[3998]! } + public var Stats_GrowthTitle: String { return self._s[3999]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4000]! } public func VoiceOver_Chat_VideoMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3999]!, self._r[3999]!, [_0]) - } - public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4000]!, self._r[4000]!, [_0]) - } - public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4001]!, self._r[4001]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[4002]! } - public var Privacy_ChatsTitle: String { return self._s[4003]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[4004]! } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[4005]! } - public var Watch_Suggestion_HoldOn: String { return self._s[4006]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[4007]! } - public var WebBrowser_Title: String { return self._s[4008]! } - public var Group_LinkedChannel: String { return self._s[4009]! } - public var VoiceOver_Chat_SeenByRecipient: String { return self._s[4010]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4011]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[4012]! } - public var Appearance_TextSize_UseSystem: String { return self._s[4013]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[4014]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[4016]! } - public var Channel_Setup_TypePublic: String { return self._s[4018]! } + public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4002]!, self._r[4002]!, [_0]) + } + public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4003]!, self._r[4003]!, [_0]) + } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[4004]! } + public var Privacy_ChatsTitle: String { return self._s[4005]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[4006]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[4007]! } + public var Watch_Suggestion_HoldOn: String { return self._s[4008]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[4009]! } + public var WebBrowser_Title: String { return self._s[4010]! } + public var Group_LinkedChannel: String { return self._s[4011]! } + public var VoiceOver_Chat_SeenByRecipient: String { return self._s[4012]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4013]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[4014]! } + public var Appearance_TextSize_UseSystem: String { return self._s[4015]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[4016]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[4018]! } + public var Channel_Setup_TypePublic: String { return self._s[4020]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4019]!, self._r[4019]!, [_0]) + return formatWithArgumentRanges(self._s[4021]!, self._r[4021]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[4021]! } - public var MessagePoll_ViewResults: String { return self._s[4022]! } - public var Map_OpenInMaps: String { return self._s[4024]! } + public var Channel_TypeSetup_Title: String { return self._s[4023]! } + public var MessagePoll_ViewResults: String { return self._s[4024]! } + public var Map_OpenInMaps: String { return self._s[4026]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4025]!, self._r[4025]!, [_1]) + return formatWithArgumentRanges(self._s[4027]!, self._r[4027]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[4027]! } + public var NotificationsSound_Tremolo: String { return self._s[4029]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4028]!, self._r[4028]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4030]!, self._r[4030]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[4029]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[4030]! } - public var Passport_PasswordHelp: String { return self._s[4032]! } - public var Login_CodeExpiredError: String { return self._s[4033]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[4034]! } - public var Conversation_TitleUnmute: String { return self._s[4035]! } - public var Passport_Identity_ScansHelp: String { return self._s[4036]! } - public var Passport_Language_lo: String { return self._s[4037]! } - public var Camera_FlashAuto: String { return self._s[4038]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[4039]! } - public var Common_Cancel: String { return self._s[4040]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[4041]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[4042]! } - public var Appearance_TintAllColors: String { return self._s[4043]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[4031]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[4032]! } + public var Passport_PasswordHelp: String { return self._s[4034]! } + public var Login_CodeExpiredError: String { return self._s[4035]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[4036]! } + public var Conversation_TitleUnmute: String { return self._s[4037]! } + public var Passport_Identity_ScansHelp: String { return self._s[4038]! } + public var Passport_Language_lo: String { return self._s[4039]! } + public var Camera_FlashAuto: String { return self._s[4040]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[4041]! } + public var Common_Cancel: String { return self._s[4042]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[4043]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[4044]! } + public var Appearance_TintAllColors: String { return self._s[4045]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4044]!, self._r[4044]!, [_1]) + return formatWithArgumentRanges(self._s[4046]!, self._r[4046]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[4045]! } - public var ChatSettings_Title: String { return self._s[4047]! } - public var Passport_PasswordReset: String { return self._s[4048]! } - public var SocksProxySetup_TypeNone: String { return self._s[4049]! } - public var EditTheme_Title: String { return self._s[4052]! } - public var PhoneNumberHelp_Help: String { return self._s[4053]! } - public var Checkout_EnterPassword: String { return self._s[4054]! } - public var Activity_UploadingDocument: String { return self._s[4056]! } - public var Share_AuthTitle: String { return self._s[4057]! } - public var State_Connecting: String { return self._s[4058]! } - public var Profile_MessageLifetime1w: String { return self._s[4059]! } - public var Conversation_ContextMenuReport: String { return self._s[4060]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[4061]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[4062]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[4047]! } + public var ChatSettings_Title: String { return self._s[4049]! } + public var Passport_PasswordReset: String { return self._s[4050]! } + public var SocksProxySetup_TypeNone: String { return self._s[4051]! } + public var EditTheme_Title: String { return self._s[4054]! } + public var PhoneNumberHelp_Help: String { return self._s[4055]! } + public var Checkout_EnterPassword: String { return self._s[4056]! } + public var Activity_UploadingDocument: String { return self._s[4058]! } + public var Share_AuthTitle: String { return self._s[4059]! } + public var State_Connecting: String { return self._s[4060]! } + public var Profile_MessageLifetime1w: String { return self._s[4061]! } + public var Conversation_ContextMenuReport: String { return self._s[4062]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[4063]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[4064]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4063]!, self._r[4063]!, [_0]) + return formatWithArgumentRanges(self._s[4065]!, self._r[4065]!, [_0]) } - public var AuthSessions_Terminate: String { return self._s[4064]! } - public var Wallet_WordImport_CanNotRemember: String { return self._s[4065]! } - public var PeerInfo_PaneAudio: String { return self._s[4066]! } + public var AuthSessions_Terminate: String { return self._s[4066]! } + public var Wallet_WordImport_CanNotRemember: String { return self._s[4067]! } + public var PeerInfo_PaneAudio: String { return self._s[4068]! } public func Message_ForwardedPsa_covid(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4067]!, self._r[4067]!, [_0]) + return formatWithArgumentRanges(self._s[4069]!, self._r[4069]!, [_0]) } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[4069]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[4070]! } - public var PhotoEditor_Set: String { return self._s[4071]! } - public var EmptyGroupInfo_Title: String { return self._s[4072]! } - public var Login_PadPhoneHelp: String { return self._s[4074]! } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[4076]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[4078]! } - public var NotificationsSound_Complete: String { return self._s[4079]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4080]! } - public var Group_Info_AdminLog: String { return self._s[4081]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[4082]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[4071]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[4072]! } + public var PhotoEditor_Set: String { return self._s[4073]! } + public var EmptyGroupInfo_Title: String { return self._s[4074]! } + public var Login_PadPhoneHelp: String { return self._s[4076]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[4078]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[4080]! } + public var NotificationsSound_Complete: String { return self._s[4081]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4082]! } + public var Group_Info_AdminLog: String { return self._s[4083]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[4084]! } public func Wallet_Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4083]!, self._r[4083]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4085]!, self._r[4085]!, [_1, _2, _3]) } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[4084]! } - public var Group_Location_CreateInThisPlace: String { return self._s[4086]! } - public var Conversation_Admin: String { return self._s[4087]! } - public var Conversation_GifTooltip: String { return self._s[4088]! } - public var Passport_NotLoggedInMessage: String { return self._s[4089]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[4086]! } + public var Group_Location_CreateInThisPlace: String { return self._s[4088]! } + public var Conversation_Admin: String { return self._s[4089]! } + public var Conversation_GifTooltip: String { return self._s[4090]! } + public var Passport_NotLoggedInMessage: String { return self._s[4091]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4091]!, self._r[4091]!, [_0]) + return formatWithArgumentRanges(self._s[4093]!, self._r[4093]!, [_0]) } - public var Profile_MessageLifetimeForever: String { return self._s[4092]! } - public var SharedMedia_EmptyTitle: String { return self._s[4094]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[4096]! } - public var Username_Help: String { return self._s[4097]! } - public var DialogList_LanguageTooltip: String { return self._s[4099]! } - public var Map_LoadError: String { return self._s[4100]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[4101]! } - public var Channel_AdminLog_AddMembers: String { return self._s[4102]! } - public var ArchivedChats_IntroTitle2: String { return self._s[4103]! } - public var Notification_Exceptions_NewException: String { return self._s[4104]! } - public var TwoStepAuth_EmailTitle: String { return self._s[4105]! } - public var WatchRemote_AlertText: String { return self._s[4106]! } + public var Profile_MessageLifetimeForever: String { return self._s[4094]! } + public var SharedMedia_EmptyTitle: String { return self._s[4096]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[4098]! } + public var Username_Help: String { return self._s[4099]! } + public var DialogList_LanguageTooltip: String { return self._s[4101]! } + public var Map_LoadError: String { return self._s[4102]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[4103]! } + public var Channel_AdminLog_AddMembers: String { return self._s[4104]! } + public var ArchivedChats_IntroTitle2: String { return self._s[4105]! } + public var Notification_Exceptions_NewException: String { return self._s[4106]! } + public var TwoStepAuth_EmailTitle: String { return self._s[4107]! } + public var WatchRemote_AlertText: String { return self._s[4108]! } public func Wallet_Send_ConfirmationText(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4107]!, self._r[4107]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4109]!, self._r[4109]!, [_1, _2, _3]) } - public var ChatSettings_ConnectionType_Title: String { return self._s[4111]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[4113]! } public func PUSH_PINNED_QUIZ(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4112]!, self._r[4112]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4114]!, self._r[4114]!, [_1, _2]) } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4113]!, self._r[4113]!, [_0]) + return formatWithArgumentRanges(self._s[4115]!, self._r[4115]!, [_0]) } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[4114]! } - public var WebBrowser_DefaultBrowser: String { return self._s[4115]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[4116]! } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[4116]! } + public var WebBrowser_DefaultBrowser: String { return self._s[4117]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[4118]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4117]!, self._r[4117]!, [_0]) + return formatWithArgumentRanges(self._s[4119]!, self._r[4119]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4118]!, self._r[4118]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4120]!, self._r[4120]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[4119]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[4120]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[4122]! } - public var Wallet_Created_ExportErrorText: String { return self._s[4123]! } - public var ChatList_UndoArchiveText1: String { return self._s[4124]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4125]! } - public var AccessDenied_VideoMicrophone: String { return self._s[4126]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4127]! } - public var Cache_ClearNone: String { return self._s[4128]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[4129]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[4130]! } + public var Group_AdminLog_EmptyText: String { return self._s[4121]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[4122]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[4124]! } + public var Wallet_Created_ExportErrorText: String { return self._s[4125]! } + public var ChatList_UndoArchiveText1: String { return self._s[4126]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4127]! } + public var AccessDenied_VideoMicrophone: String { return self._s[4128]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4129]! } + public var Cache_ClearNone: String { return self._s[4130]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[4131]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[4132]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4131]!, self._r[4131]!, [_0]) - } - public var Passport_Identity_Country: String { return self._s[4132]! } - public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4133]!, self._r[4133]!, [_0]) } + public var Passport_Identity_Country: String { return self._s[4134]! } + public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4135]!, self._r[4135]!, [_0]) + } public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4134]!, self._r[4134]!, [_0]) + return formatWithArgumentRanges(self._s[4136]!, self._r[4136]!, [_0]) } - public var Exceptions_AddToExceptions: String { return self._s[4135]! } - public var AccessDenied_Settings: String { return self._s[4136]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[4137]! } - public var Month_ShortMay: String { return self._s[4139]! } - public var Compose_NewGroup: String { return self._s[4141]! } - public var Group_Setup_TypePrivate: String { return self._s[4143]! } - public var Login_PadPhoneHelpTitle: String { return self._s[4145]! } - public var Appearance_ThemeDayClassic: String { return self._s[4146]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[4147]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[4148]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[4149]! } - public var Conversation_typing: String { return self._s[4151]! } - public var Undo_ScheduledMessagesCleared: String { return self._s[4152]! } - public var Paint_Masks: String { return self._s[4153]! } - public var Contacts_DeselectAll: String { return self._s[4154]! } + public var Exceptions_AddToExceptions: String { return self._s[4137]! } + public var AccessDenied_Settings: String { return self._s[4138]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[4139]! } + public var Month_ShortMay: String { return self._s[4141]! } + public var Compose_NewGroup: String { return self._s[4143]! } + public var Group_Setup_TypePrivate: String { return self._s[4145]! } + public var Login_PadPhoneHelpTitle: String { return self._s[4147]! } + public var Appearance_ThemeDayClassic: String { return self._s[4148]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[4149]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[4150]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[4151]! } + public var Conversation_typing: String { return self._s[4153]! } + public var Undo_ScheduledMessagesCleared: String { return self._s[4154]! } + public var Paint_Masks: String { return self._s[4155]! } + public var Contacts_DeselectAll: String { return self._s[4156]! } public func Wallet_Updated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4155]!, self._r[4155]!, [_0]) + return formatWithArgumentRanges(self._s[4157]!, self._r[4157]!, [_0]) } - public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[4156]! } - public var Username_InvalidTaken: String { return self._s[4157]! } - public var Call_StatusNoAnswer: String { return self._s[4158]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[4159]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4160]! } - public var Passport_Identity_Selfie: String { return self._s[4161]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[4162]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[4163]! } - public var Conversation_ClearSecretHistory: String { return self._s[4164]! } - public var PeopleNearby_Description: String { return self._s[4166]! } - public var NetworkUsageSettings_Title: String { return self._s[4167]! } - public var Your_cards_security_code_is_invalid: String { return self._s[4169]! } - public var Stats_EnabledNotifications: String { return self._s[4170]! } + public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[4158]! } + public var Username_InvalidTaken: String { return self._s[4159]! } + public var Call_StatusNoAnswer: String { return self._s[4160]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[4161]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4162]! } + public var Passport_Identity_Selfie: String { return self._s[4163]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[4164]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[4165]! } + public var Conversation_ClearSecretHistory: String { return self._s[4166]! } + public var PeopleNearby_Description: String { return self._s[4168]! } + public var NetworkUsageSettings_Title: String { return self._s[4169]! } + public var Your_cards_security_code_is_invalid: String { return self._s[4171]! } + public var Stats_EnabledNotifications: String { return self._s[4172]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4172]!, self._r[4172]!, [_0]) + return formatWithArgumentRanges(self._s[4174]!, self._r[4174]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4173]!, self._r[4173]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4175]!, self._r[4175]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[4175]! } - public var VoiceOver_Navigation_Search: String { return self._s[4176]! } - public var Map_LiveLocationTitle: String { return self._s[4177]! } - public var Login_InfoAvatarAdd: String { return self._s[4178]! } - public var Passport_Identity_FilesView: String { return self._s[4179]! } - public var ChatListFolderSettings_Title: String { return self._s[4180]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[4181]! } - public var Privacy_Calls_NeverAllow: String { return self._s[4182]! } - public var VoiceOver_Chat_File: String { return self._s[4183]! } - public var Wallet_Settings_DeleteWalletInfo: String { return self._s[4184]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[4177]! } + public var VoiceOver_Navigation_Search: String { return self._s[4178]! } + public var Map_LiveLocationTitle: String { return self._s[4179]! } + public var Login_InfoAvatarAdd: String { return self._s[4180]! } + public var Passport_Identity_FilesView: String { return self._s[4181]! } + public var ChatListFolderSettings_Title: String { return self._s[4182]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[4183]! } + public var Privacy_Calls_NeverAllow: String { return self._s[4184]! } + public var VoiceOver_Chat_File: String { return self._s[4185]! } + public var Wallet_Settings_DeleteWalletInfo: String { return self._s[4186]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4185]!, self._r[4185]!, [_0]) + return formatWithArgumentRanges(self._s[4187]!, self._r[4187]!, [_0]) } - public var ChatList_EmptyChatList: String { return self._s[4186]! } - public var ContactInfo_PhoneNumberHidden: String { return self._s[4187]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[4188]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[4189]! } + public var ChatList_EmptyChatList: String { return self._s[4188]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[4189]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[4190]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[4191]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4190]!, self._r[4190]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4192]!, self._r[4192]!, [_1, _2, _3]) } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[4191]! } - public var Wallet_Intro_CreateErrorText: String { return self._s[4192]! } - public var Tour_Title2: String { return self._s[4193]! } - public var Wallet_Sent_ViewWallet: String { return self._s[4194]! } - public var Conversation_FileOpenIn: String { return self._s[4195]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[4196]! } - public var Wallet_Send_ErrorInvalidAddress: String { return self._s[4197]! } - public var Wallpaper_Set: String { return self._s[4198]! } - public var Passport_Identity_Translations: String { return self._s[4200]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[4193]! } + public var Wallet_Intro_CreateErrorText: String { return self._s[4194]! } + public var Tour_Title2: String { return self._s[4195]! } + public var Wallet_Sent_ViewWallet: String { return self._s[4196]! } + public var Conversation_FileOpenIn: String { return self._s[4197]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[4198]! } + public var Wallet_Send_ErrorInvalidAddress: String { return self._s[4199]! } + public var Wallpaper_Set: String { return self._s[4200]! } + public var Passport_Identity_Translations: String { return self._s[4202]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4201]!, self._r[4201]!, [_0]) + return formatWithArgumentRanges(self._s[4203]!, self._r[4203]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[4202]! } + public var Channel_LeaveChannel: String { return self._s[4204]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4203]!, self._r[4203]!, [_1]) + return formatWithArgumentRanges(self._s[4205]!, self._r[4205]!, [_1]) } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[4205]! } - public var PhotoEditor_HighlightsTint: String { return self._s[4206]! } - public var MessagePoll_LabelPoll: String { return self._s[4207]! } - public var Passport_Email_Delete: String { return self._s[4208]! } - public var Conversation_Mute: String { return self._s[4210]! } - public var Channel_AddBotAsAdmin: String { return self._s[4211]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[4213]! } - public var Wallet_Configuration_BlockchainNameChangedText: String { return self._s[4214]! } - public var ChatSettings_IntentsSettings: String { return self._s[4216]! } - public var Channel_Management_LabelOwner: String { return self._s[4217]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[4207]! } + public var PhotoEditor_HighlightsTint: String { return self._s[4208]! } + public var MessagePoll_LabelPoll: String { return self._s[4209]! } + public var Passport_Email_Delete: String { return self._s[4210]! } + public var Conversation_Mute: String { return self._s[4212]! } + public var Channel_AddBotAsAdmin: String { return self._s[4213]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[4215]! } + public var Wallet_Configuration_BlockchainNameChangedText: String { return self._s[4216]! } + public var ChatSettings_IntentsSettings: String { return self._s[4218]! } + public var Channel_Management_LabelOwner: String { return self._s[4219]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4218]!, self._r[4218]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4220]!, self._r[4220]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[4219]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[4220]! } - public var Common_No: String { return self._s[4221]! } - public var Weekday_Sunday: String { return self._s[4222]! } - public var Notification_Reply: String { return self._s[4223]! } - public var Conversation_ViewMessage: String { return self._s[4224]! } + public var Calls_CallTabDescription: String { return self._s[4221]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[4222]! } + public var Common_No: String { return self._s[4223]! } + public var Weekday_Sunday: String { return self._s[4224]! } + public var Notification_Reply: String { return self._s[4225]! } + public var Conversation_ViewMessage: String { return self._s[4226]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4225]!, self._r[4225]!, [_0]) + return formatWithArgumentRanges(self._s[4227]!, self._r[4227]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4226]!, self._r[4226]!, [_0]) + return formatWithArgumentRanges(self._s[4228]!, self._r[4228]!, [_0]) } public func Wallet_Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4227]!, self._r[4227]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4229]!, self._r[4229]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4228]! } - public var Wallet_Send_Title: String { return self._s[4229]! } - public var Message_PinnedDocumentMessage: String { return self._s[4230]! } - public var Wallet_Info_RefreshErrorText: String { return self._s[4231]! } - public var DialogList_TabTitle: String { return self._s[4233]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[4234]! } - public var Passport_FieldEmail: String { return self._s[4235]! } - public var Conversation_UnpinMessageAlert: String { return self._s[4236]! } - public var Passport_Address_TypeBankStatement: String { return self._s[4237]! } - public var Wallet_SecureStorageReset_Title: String { return self._s[4238]! } - public var Passport_Identity_ExpiryDate: String { return self._s[4239]! } - public var Privacy_Calls_P2P: String { return self._s[4240]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4230]! } + public var Wallet_Send_Title: String { return self._s[4231]! } + public var Message_PinnedDocumentMessage: String { return self._s[4232]! } + public var Wallet_Info_RefreshErrorText: String { return self._s[4233]! } + public var DialogList_TabTitle: String { return self._s[4235]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[4236]! } + public var Passport_FieldEmail: String { return self._s[4237]! } + public var Conversation_UnpinMessageAlert: String { return self._s[4238]! } + public var Passport_Address_TypeBankStatement: String { return self._s[4239]! } + public var Wallet_SecureStorageReset_Title: String { return self._s[4240]! } + public var Passport_Identity_ExpiryDate: String { return self._s[4241]! } + public var Privacy_Calls_P2P: String { return self._s[4242]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4242]!, self._r[4242]!, [_0]) + return formatWithArgumentRanges(self._s[4244]!, self._r[4244]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[4243]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[4245]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4244]!, self._r[4244]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4246]!, self._r[4246]!, [_1, _2]) } - public var Stickers_ClearRecent: String { return self._s[4245]! } - public var EnterPasscode_ChangeTitle: String { return self._s[4246]! } - public var TwoFactorSetup_Email_Title: String { return self._s[4247]! } - public var Passport_InfoText: String { return self._s[4248]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[4249]! } + public var Stickers_ClearRecent: String { return self._s[4247]! } + public var EnterPasscode_ChangeTitle: String { return self._s[4248]! } + public var TwoFactorSetup_Email_Title: String { return self._s[4249]! } + public var Passport_InfoText: String { return self._s[4250]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[4251]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4250]!, self._r[4250]!, [_0]) + return formatWithArgumentRanges(self._s[4252]!, self._r[4252]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4251]!, self._r[4251]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4253]!, self._r[4253]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4252]! } - public var ScheduledMessages_PollUnavailable: String { return self._s[4253]! } - public var VoiceOver_Navigation_Compose: String { return self._s[4254]! } - public var Passport_Identity_EditDriversLicense: String { return self._s[4255]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[4257]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4258]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4254]! } + public var ScheduledMessages_PollUnavailable: String { return self._s[4255]! } + public var VoiceOver_Navigation_Compose: String { return self._s[4256]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[4257]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[4259]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4260]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4259]!, self._r[4259]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4261]!, self._r[4261]!, [_1, _2]) } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[4262]! } - public var ChatSettings_OpenLinksIn: String { return self._s[4263]! } - public var Map_HomeAndWorkTitle: String { return self._s[4264]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[4264]! } + public var ChatSettings_OpenLinksIn: String { return self._s[4265]! } + public var Map_HomeAndWorkTitle: String { return self._s[4266]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4266]!, self._r[4266]!, [_0]) + return formatWithArgumentRanges(self._s[4268]!, self._r[4268]!, [_0]) } - public var DialogList_Unread: String { return self._s[4267]! } + public var DialogList_Unread: String { return self._s[4269]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4268]!, self._r[4268]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4270]!, self._r[4270]!, [_1, _2]) } - public var User_DeletedAccount: String { return self._s[4269]! } - public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[4270]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[4271]! } + public var User_DeletedAccount: String { return self._s[4271]! } + public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[4272]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[4273]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4272]!, self._r[4272]!, [_0]) + return formatWithArgumentRanges(self._s[4274]!, self._r[4274]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[4273]! } - public var SharedMedia_CategoryMedia: String { return self._s[4274]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4275]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[4276]! } - public var Watch_ChatList_Compose: String { return self._s[4277]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[4278]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[4279]! } - public var Watch_Microphone_Access: String { return self._s[4280]! } - public var Group_Setup_HistoryHeader: String { return self._s[4281]! } - public var Map_SetThisLocation: String { return self._s[4282]! } - public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[4283]! } - public var Activity_UploadingPhoto: String { return self._s[4284]! } - public var Conversation_Edit: String { return self._s[4286]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[4287]! } - public var Login_TermsOfServiceDecline: String { return self._s[4288]! } - public var Message_PinnedContactMessage: String { return self._s[4289]! } + public var UserInfo_NotificationsDefault: String { return self._s[4275]! } + public var SharedMedia_CategoryMedia: String { return self._s[4276]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4277]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[4278]! } + public var Watch_ChatList_Compose: String { return self._s[4279]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[4280]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[4281]! } + public var Watch_Microphone_Access: String { return self._s[4282]! } + public var Group_Setup_HistoryHeader: String { return self._s[4283]! } + public var Map_SetThisLocation: String { return self._s[4284]! } + public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[4285]! } + public var Activity_UploadingPhoto: String { return self._s[4286]! } + public var Conversation_Edit: String { return self._s[4288]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[4289]! } + public var Login_TermsOfServiceDecline: String { return self._s[4290]! } + public var Message_PinnedContactMessage: String { return self._s[4291]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4290]!, self._r[4290]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4292]!, self._r[4292]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4291]!, self._r[4291]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[4293]!, self._r[4293]!, [_1, _2, _3, _4, _5]) } - public var Appearance_LargeEmoji: String { return self._s[4292]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[4294]! } - public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[4295]! } + public var Appearance_LargeEmoji: String { return self._s[4294]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[4296]! } + public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[4297]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4296]!, self._r[4296]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4298]!, self._r[4298]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[4297]! } - public var Message_PinnedPhotoMessage: String { return self._s[4298]! } - public var Passport_FieldPhone: String { return self._s[4299]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[4300]! } - public var Stats_NotificationsTitle: String { return self._s[4301]! } - public var ChatSettings_AutoPlayGifs: String { return self._s[4302]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[4304]! } - public var Conversation_Call: String { return self._s[4305]! } - public var Common_TakePhoto: String { return self._s[4307]! } - public var Group_EditAdmin_RankTitle: String { return self._s[4308]! } - public var Wallet_Receive_CommentHeader: String { return self._s[4309]! } - public var Channel_NotificationLoading: String { return self._s[4310]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[4299]! } + public var Message_PinnedPhotoMessage: String { return self._s[4300]! } + public var Passport_FieldPhone: String { return self._s[4301]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[4302]! } + public var Stats_NotificationsTitle: String { return self._s[4303]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[4304]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[4306]! } + public var Conversation_Call: String { return self._s[4307]! } + public var Common_TakePhoto: String { return self._s[4309]! } + public var Group_EditAdmin_RankTitle: String { return self._s[4310]! } + public var Wallet_Receive_CommentHeader: String { return self._s[4311]! } + public var Channel_NotificationLoading: String { return self._s[4312]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4311]!, self._r[4311]!, [_0]) + return formatWithArgumentRanges(self._s[4313]!, self._r[4313]!, [_0]) } public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4312]!, self._r[4312]!, [_0]) + return formatWithArgumentRanges(self._s[4314]!, self._r[4314]!, [_0]) } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4313]!, self._r[4313]!, [_1]) + return formatWithArgumentRanges(self._s[4315]!, self._r[4315]!, [_1]) } - public var Permissions_SiriTitle_v0: String { return self._s[4314]! } + public var Permissions_SiriTitle_v0: String { return self._s[4316]! } public func VoiceOver_Chat_VoiceMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4315]!, self._r[4315]!, [_0]) + return formatWithArgumentRanges(self._s[4317]!, self._r[4317]!, [_0]) } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4316]!, self._r[4316]!, [_0]) + return formatWithArgumentRanges(self._s[4318]!, self._r[4318]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[4317]! } - public var Wallet_Info_ReceiveGrams: String { return self._s[4318]! } - public var ClearCache_FreeSpace: String { return self._s[4319]! } - public var Appearance_BubbleCorners_Apply: String { return self._s[4320]! } - public var Common_edit: String { return self._s[4321]! } - public var PrivacySettings_AuthSessions: String { return self._s[4322]! } - public var Month_ShortJune: String { return self._s[4323]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[4324]! } - public var Call_ReportSend: String { return self._s[4325]! } - public var Watch_LastSeen_JustNow: String { return self._s[4326]! } - public var Notifications_MessageNotifications: String { return self._s[4327]! } - public var WallpaperSearch_ColorGreen: String { return self._s[4328]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[4330]! } - public var Group_Status: String { return self._s[4331]! } + public var Channel_MessagePhotoRemoved: String { return self._s[4319]! } + public var Wallet_Info_ReceiveGrams: String { return self._s[4320]! } + public var ClearCache_FreeSpace: String { return self._s[4321]! } + public var Appearance_BubbleCorners_Apply: String { return self._s[4322]! } + public var Common_edit: String { return self._s[4323]! } + public var PrivacySettings_AuthSessions: String { return self._s[4324]! } + public var Month_ShortJune: String { return self._s[4325]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[4326]! } + public var Call_ReportSend: String { return self._s[4327]! } + public var Watch_LastSeen_JustNow: String { return self._s[4328]! } + public var Notifications_MessageNotifications: String { return self._s[4329]! } + public var WallpaperSearch_ColorGreen: String { return self._s[4330]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[4332]! } + public var Group_Status: String { return self._s[4333]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4332]!, self._r[4332]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4334]!, self._r[4334]!, [_0, _1]) } - public var TextFormat_AddLinkTitle: String { return self._s[4333]! } - public var ShareMenu_ShareTo: String { return self._s[4334]! } - public var Conversation_Moderate_Ban: String { return self._s[4335]! } + public var TextFormat_AddLinkTitle: String { return self._s[4335]! } + public var ShareMenu_ShareTo: String { return self._s[4336]! } + public var Conversation_Moderate_Ban: String { return self._s[4337]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4336]!, self._r[4336]!, [_0]) + return formatWithArgumentRanges(self._s[4338]!, self._r[4338]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[4337]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4338]! } + public var SharedMedia_ViewInChat: String { return self._s[4339]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4340]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4339]!, self._r[4339]!, [_1]) + return formatWithArgumentRanges(self._s[4341]!, self._r[4341]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4340]!, self._r[4340]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4342]!, self._r[4342]!, [_1, _2]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4342]!, self._r[4342]!, [_0]) + return formatWithArgumentRanges(self._s[4344]!, self._r[4344]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[4343]! } - public var Appearance_ReduceMotion: String { return self._s[4344]! } + public var Map_OpenInHereMaps: String { return self._s[4345]! } + public var Appearance_ReduceMotion: String { return self._s[4346]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4345]!, self._r[4345]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4347]!, self._r[4347]!, [_1, _2]) } - public var Channel_Setup_TypePublicHelp: String { return self._s[4346]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[4347]! } - public var PhotoEditor_Skip: String { return self._s[4348]! } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + public var Channel_Setup_TypePublicHelp: String { return self._s[4348]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[4349]! } + public var PhotoEditor_Skip: String { return self._s[4350]! } + public func Conversation_SelectedMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAudios(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func InstantPage_Views(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_InviteContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_ImportersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_SelectedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageViews(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveMonth(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_Exceptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveYear(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } public func MuteExpires_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Theme_UsersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, _2, _1, _3) } public func AttachmentMenu_SendItem(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PollResults_ShowMore(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, _1, _2) } public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InstantPage_Views(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) } public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) } - public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveYear(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) } public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessagePoll_VotedCount(_ value: Int32) -> String { + public func MessagePoll_QuizCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + public func SharedMedia_Generic(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) } public func StickerPack_AddMaskCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_ShortMinutes(_ value: Int32) -> String { + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageViews(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_GroupFormat(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) } public func Call_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_Leave(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) } public func OldChannels_InactiveWeek(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PollResults_ShowMore(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageForwards(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessagePoll_QuizCount(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) @@ -5319,190 +5323,188 @@ public final class PresentationStrings: Equatable { let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Years(_ value: Int32) -> String { + public func Notification_GameScoreSimple(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) } - public func OldChannels_Leave(_ value: Int32) -> String { + public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + public func Notifications_Exceptions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_MessageForwards(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func MessageTimer_Weeks(_ value: Int32) -> String { + public func Theme_UsersCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { + public func Contacts_ImportersCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_GroupFormat(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_ShortSeconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, _2, _1, _3) } public func ChatList_DeletedChats(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) } public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + public func MessageTimer_Months(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_ShareVideo(_ value: Int32) -> String { + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + public func Conversation_StatusOnline(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func StickerPack_StickerCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteFor_Hours(_ value: Int32) -> String { + public func SharedMedia_Video(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveMonth(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedStickers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedGifs(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_InviteContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_File(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Seconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, _1, _2) } public init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index a9800e9f57..15d653813a 100644 Binary files a/submodules/TelegramUI/Resources/PresentationStrings.mapping and b/submodules/TelegramUI/Resources/PresentationStrings.mapping differ diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index f554632a2d..f06878ba5e 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -6037,7 +6037,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } }, presentSchedulePicker: { [weak self] done in if let strongSelf = self { - strongSelf.presentScheduleTimePicker(completion: { [weak self] time in + strongSelf.presentScheduleTimePicker(style: .media, completion: { [weak self] time in if let strongSelf = self { done(time) if !strongSelf.presentationInterfaceState.isScheduledMessages && time != scheduleWhenOnlineTimestamp { @@ -6046,6 +6046,12 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } }) } + }, presentTimerPicker: { [weak self] done in + if let strongSelf = self { + strongSelf.presentTimerPicker(style: .media, completion: { time in + done(time) + }) + } }, presentStickers: { [weak self] completion in if let strongSelf = self { let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in @@ -6084,15 +6090,23 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationData: strongSelf.presentationData), title: nil, text: strongSelf.presentationData.strings.Chat_AttachmentMultipleFilesDisabled, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root)) }, presentSchedulePicker: { [weak self] done in if let strongSelf = self { - strongSelf.presentScheduleTimePicker(completion: { [weak self] time in + strongSelf.presentScheduleTimePicker(style: .media, completion: { [weak self] time in if let strongSelf = self { - done(time) + done(time) if !strongSelf.presentationInterfaceState.isScheduledMessages && time != scheduleWhenOnlineTimestamp { strongSelf.openScheduledMessages() } } }) } + }, presentTimerPicker: { [weak self] done in + if let strongSelf = self { + strongSelf.presentTimerPicker(style: .media, completion: { [weak self] time in + if let strongSelf = self { + done(time) + } + }) + } }, sendMessagesWithSignals: { [weak self] signals, silentPosting, scheduleTime in if !inputText.string.isEmpty { //strongSelf.clearInputText() @@ -6286,7 +6300,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationData: strongSelf.presentationData), title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root)) }, presentSchedulePicker: { [weak self] done in if let strongSelf = self { - strongSelf.presentScheduleTimePicker(completion: { [weak self] time in + strongSelf.presentScheduleTimePicker(style: .media, completion: { [weak self] time in if let strongSelf = self { done(time) if !strongSelf.presentationInterfaceState.isScheduledMessages && time != scheduleWhenOnlineTimestamp { @@ -6295,6 +6309,14 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } }) } + }, presentTimerPicker: { [weak self] done in + if let strongSelf = self { + strongSelf.presentTimerPicker(style: .media, completion: { [weak self] time in + if let strongSelf = self { + done(time) + } + }) + } }, presentStickers: { [weak self] completion in if let strongSelf = self { let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in @@ -9161,7 +9183,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G navigationController.pushViewController(controller) } - private func presentScheduleTimePicker(selectedTime: Int32? = nil, dismissByTapOutside: Bool = true, completion: @escaping (Int32) -> Void) { + private func presentScheduleTimePicker(style: ChatScheduleTimeControllerStyle = .default, selectedTime: Int32? = nil, dismissByTapOutside: Bool = true, completion: @escaping (Int32) -> Void) { guard case let .peer(peerId) = self.chatLocation else { return } @@ -9182,7 +9204,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } else { mode = .scheduledMessages(sendWhenOnlineAvailable: sendWhenOnlineAvailable) } - let controller = ChatScheduleTimeController(context: strongSelf.context, peerId: peerId, mode: mode, currentTime: selectedTime, minimalTime: strongSelf.presentationInterfaceState.slowmodeState?.timeout, dismissByTapOutside: dismissByTapOutside, completion: { time in + let controller = ChatScheduleTimeController(context: strongSelf.context, peerId: peerId, mode: mode, style: style, currentTime: selectedTime, minimalTime: strongSelf.presentationInterfaceState.slowmodeState?.timeout, dismissByTapOutside: dismissByTapOutside, completion: { time in completion(time) }) strongSelf.chatDisplayNode.dismissInput() @@ -9190,6 +9212,17 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G }) } + private func presentTimerPicker(style: ChatTimerScreenStyle = .default, selectedTime: Int32? = nil, dismissByTapOutside: Bool = true, completion: @escaping (Int32) -> Void) { + guard case let .peer(peerId) = self.chatLocation else { + return + } + let controller = ChatTimerScreen(context: self.context, peerId: peerId, style: style, currentTime: selectedTime, dismissByTapOutside: dismissByTapOutside, completion: { time in + completion(time) + }) + self.chatDisplayNode.dismissInput() + self.present(controller, in: .window(.root)) + } + private var effectiveNavigationController: NavigationController? { if let navigationController = self.navigationController as? NavigationController { return navigationController diff --git a/submodules/TelegramUI/Sources/ChatScheduleTimeController.swift b/submodules/TelegramUI/Sources/ChatScheduleTimeController.swift index 641e481c43..c310880aa2 100644 --- a/submodules/TelegramUI/Sources/ChatScheduleTimeController.swift +++ b/submodules/TelegramUI/Sources/ChatScheduleTimeController.swift @@ -13,6 +13,11 @@ enum ChatScheduleTimeControllerMode { case reminders } +enum ChatScheduleTimeControllerStyle { + case `default` + case media +} + final class ChatScheduleTimeController: ViewController { private var controllerNode: ChatScheduleTimeControllerNode { return self.displayNode as! ChatScheduleTimeControllerNode @@ -23,6 +28,7 @@ final class ChatScheduleTimeController: ViewController { private let context: AccountContext private let peerId: PeerId private let mode: ChatScheduleTimeControllerMode + private let style: ChatScheduleTimeControllerStyle private let currentTime: Int32? private let minimalTime: Int32? private let dismissByTapOutside: Bool @@ -30,10 +36,11 @@ final class ChatScheduleTimeController: ViewController { private var presentationDataDisposable: Disposable? - init(context: AccountContext, peerId: PeerId, mode: ChatScheduleTimeControllerMode, currentTime: Int32? = nil, minimalTime: Int32? = nil, dismissByTapOutside: Bool = true, completion: @escaping (Int32) -> Void) { + init(context: AccountContext, peerId: PeerId, mode: ChatScheduleTimeControllerMode, style: ChatScheduleTimeControllerStyle, currentTime: Int32? = nil, minimalTime: Int32? = nil, dismissByTapOutside: Bool = true, completion: @escaping (Int32) -> Void) { self.context = context self.peerId = peerId self.mode = mode + self.style = style self.currentTime = currentTime != scheduleWhenOnlineTimestamp ? currentTime : nil self.minimalTime = minimalTime self.dismissByTapOutside = dismissByTapOutside @@ -64,7 +71,7 @@ final class ChatScheduleTimeController: ViewController { } override public func loadDisplayNode() { - self.displayNode = ChatScheduleTimeControllerNode(context: self.context, mode: self.mode, currentTime: self.currentTime, minimalTime: self.minimalTime, dismissByTapOutside: self.dismissByTapOutside) + self.displayNode = ChatScheduleTimeControllerNode(context: self.context, mode: self.mode, style: self.style, currentTime: self.currentTime, minimalTime: self.minimalTime, dismissByTapOutside: self.dismissByTapOutside) self.controllerNode.completion = { [weak self] time in guard let strongSelf = self else { return diff --git a/submodules/TelegramUI/Sources/ChatScheduleTimeControllerNode.swift b/submodules/TelegramUI/Sources/ChatScheduleTimeControllerNode.swift index e69a824772..d3b4346f7f 100644 --- a/submodules/TelegramUI/Sources/ChatScheduleTimeControllerNode.swift +++ b/submodules/TelegramUI/Sources/ChatScheduleTimeControllerNode.swift @@ -15,6 +15,7 @@ import PresentationDataUtils class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDelegate { private let context: AccountContext private let mode: ChatScheduleTimeControllerMode + private let controllerStyle: ChatScheduleTimeControllerStyle private var presentationData: PresentationData private let dismissByTapOutside: Bool private let minimalTime: Int32? @@ -22,11 +23,13 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel private let dimNode: ASDisplayNode private let wrappingScrollNode: ASScrollNode private let contentContainerNode: ASDisplayNode - private let contentBackgroundNode: ASImageNode + private let effectNode: ASDisplayNode + private let backgroundNode: ASDisplayNode + private let contentBackgroundNode: ASDisplayNode private let titleNode: ASTextNode private let cancelButton: HighlightableButtonNode private let doneButton: SolidRoundedButtonNode - private let onlineButton: HighlightableButtonNode + private let onlineButton: SolidRoundedButtonNode private var pickerView: UIDatePicker? private let dateFormatter: DateFormatter @@ -37,9 +40,10 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel var dismiss: (() -> Void)? var cancel: (() -> Void)? - init(context: AccountContext, mode: ChatScheduleTimeControllerMode, currentTime: Int32?, minimalTime: Int32?, dismissByTapOutside: Bool) { + init(context: AccountContext, mode: ChatScheduleTimeControllerMode, style: ChatScheduleTimeControllerStyle, currentTime: Int32?, minimalTime: Int32?, dismissByTapOutside: Bool) { self.context = context self.mode = mode + self.controllerStyle = style self.presentationData = context.sharedContext.currentPresentationData.with { $0 } self.dismissByTapOutside = dismissByTapOutside self.minimalTime = minimalTime @@ -54,12 +58,40 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel self.contentContainerNode = ASDisplayNode() self.contentContainerNode.isOpaque = false - self.contentContainerNode.clipsToBounds = true + + self.backgroundNode = ASDisplayNode() + self.backgroundNode.clipsToBounds = true + self.backgroundNode.cornerRadius = 16.0 - self.contentBackgroundNode = ASImageNode() - self.contentBackgroundNode.displaysAsynchronously = false - self.contentBackgroundNode.displayWithoutProcessing = true - self.contentBackgroundNode.image = generateStretchableFilledCircleImage(radius: 16.0, color: self.presentationData.theme.actionSheet.opaqueItemBackgroundColor) + let backgroundColor: UIColor + let textColor: UIColor + let accentColor: UIColor + let buttonColor: UIColor + let buttonTextColor: UIColor + let blurStyle: UIBlurEffect.Style + switch style { + case .default: + backgroundColor = self.presentationData.theme.actionSheet.itemBackgroundColor + textColor = self.presentationData.theme.actionSheet.primaryTextColor + accentColor = self.presentationData.theme.actionSheet.controlAccentColor + buttonColor = self.presentationData.theme.actionSheet.opaqueItemBackgroundColor + buttonTextColor = accentColor + blurStyle = self.presentationData.theme.actionSheet.backgroundType == .light ? .light : .dark + case .media: + backgroundColor = UIColor(rgb: 0x1c1c1e) + textColor = .white + accentColor = self.presentationData.theme.actionSheet.controlAccentColor + buttonColor = UIColor(rgb: 0x2b2b2f) + buttonTextColor = .white + blurStyle = .dark + } + + self.effectNode = ASDisplayNode(viewBlock: { + return UIVisualEffectView(effect: UIBlurEffect(style: blurStyle)) + }) + + self.contentBackgroundNode = ASDisplayNode() + self.contentBackgroundNode.backgroundColor = backgroundColor let title: String switch mode { @@ -70,16 +102,16 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel } self.titleNode = ASTextNode() - self.titleNode.attributedText = NSAttributedString(string: title, font: Font.bold(17.0), textColor: self.presentationData.theme.actionSheet.primaryTextColor) + self.titleNode.attributedText = NSAttributedString(string: title, font: Font.bold(17.0), textColor: textColor) self.cancelButton = HighlightableButtonNode() - self.cancelButton.setTitle(self.presentationData.strings.Common_Cancel, with: Font.regular(17.0), with: self.presentationData.theme.actionSheet.controlAccentColor, for: .normal) + self.cancelButton.setTitle(self.presentationData.strings.Common_Cancel, with: Font.regular(17.0), with: accentColor, for: .normal) self.doneButton = SolidRoundedButtonNode(theme: SolidRoundedButtonTheme(theme: self.presentationData.theme), height: 52.0, cornerRadius: 11.0, gloss: false) - self.onlineButton = HighlightableButtonNode() - self.onlineButton.setTitle(self.presentationData.strings.Conversation_ScheduleMessage_SendWhenOnline, with: Font.regular(17.0), with: self.presentationData.theme.actionSheet.controlAccentColor, for: .normal) - + self.onlineButton = SolidRoundedButtonNode(theme: SolidRoundedButtonTheme(backgroundColor: buttonColor, foregroundColor: buttonTextColor), font: .regular, height: 52.0, cornerRadius: 11.0, gloss: false) + self.onlineButton.title = self.presentationData.strings.Conversation_ScheduleMessage_SendWhenOnline + self.dateFormatter = DateFormatter() self.dateFormatter.timeStyle = .none self.dateFormatter.dateStyle = .short @@ -96,9 +128,11 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel self.wrappingScrollNode.view.delegate = self self.addSubnode(self.wrappingScrollNode) - self.wrappingScrollNode.addSubnode(self.contentBackgroundNode) + self.wrappingScrollNode.addSubnode(self.backgroundNode) self.wrappingScrollNode.addSubnode(self.contentContainerNode) + self.backgroundNode.addSubnode(self.effectNode) + self.backgroundNode.addSubnode(self.contentBackgroundNode) self.contentContainerNode.addSubnode(self.titleNode) self.contentContainerNode.addSubnode(self.cancelButton) self.contentContainerNode.addSubnode(self.doneButton) @@ -119,7 +153,12 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel } } } - self.onlineButton.addTarget(self, action: #selector(self.onlineButtonPressed), forControlEvents: .touchUpInside) + self.onlineButton.pressed = { [weak self] in + if let strongSelf = self { + strongSelf.onlineButton.isUserInteractionEnabled = false + strongSelf.completion?(scheduleWhenOnlineTimestamp) + } + } self.setupPickerView(currentTime: currentTime) self.updateButtonTitle() @@ -132,9 +171,17 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel pickerView.removeFromSuperview() } + let textColor: UIColor + switch self.controllerStyle { + case .default: + textColor = self.presentationData.theme.actionSheet.primaryTextColor + case .media: + textColor = UIColor.white + } + let pickerView = UIDatePicker() pickerView.timeZone = TimeZone(secondsFromGMT: 0) - pickerView.setValue(self.presentationData.theme.actionSheet.primaryTextColor, forKey: "textColor") + pickerView.setValue(textColor, forKey: "textColor") pickerView.datePickerMode = .countDownTimer pickerView.datePickerMode = .dateAndTime pickerView.locale = Locale.current @@ -154,7 +201,15 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel let previousTheme = self.presentationData.theme self.presentationData = presentationData - self.contentBackgroundNode.image = generateStretchableFilledCircleImage(radius: 16.0, color: self.presentationData.theme.actionSheet.opaqueItemBackgroundColor) + guard case .default = self.controllerStyle else { + return + } + + if let effectView = self.effectNode.view as? UIVisualEffectView { + effectView.effect = UIBlurEffect(style: presentationData.theme.actionSheet.backgroundType == .light ? .light : .dark) + } + + self.contentBackgroundNode.backgroundColor = self.presentationData.theme.actionSheet.itemBackgroundColor self.titleNode.attributedText = NSAttributedString(string: self.titleNode.attributedText?.string ?? "", font: Font.bold(17.0), textColor: self.presentationData.theme.actionSheet.primaryTextColor) if previousTheme !== presentationData.theme, let (layout, navigationBarHeight) = self.containerLayout { @@ -164,7 +219,7 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel self.cancelButton.setTitle(self.presentationData.strings.Common_Cancel, with: Font.regular(17.0), with: self.presentationData.theme.actionSheet.controlAccentColor, for: .normal) self.doneButton.updateTheme(SolidRoundedButtonTheme(theme: self.presentationData.theme)) - self.onlineButton.setTitle(self.presentationData.strings.Conversation_ScheduleMessage_SendWhenOnline, with: Font.regular(17.0), with: self.presentationData.theme.actionSheet.controlAccentColor, for: .normal) + self.onlineButton.updateTheme(SolidRoundedButtonTheme(backgroundColor: self.presentationData.theme.actionSheet.opaqueItemBackgroundColor, foregroundColor: self.presentationData.theme.actionSheet.controlAccentColor)) } private func updateMinimumDate(currentTime: Int32? = nil) { @@ -244,10 +299,6 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel self.cancel?() } - @objc func onlineButtonPressed() { - self.completion?(scheduleWhenOnlineTimestamp) - } - @objc func dimTapGesture(_ recognizer: UITapGestureRecognizer) { if self.dismissByTapOutside, case .ended = recognizer.state { self.cancelButtonPressed() @@ -316,7 +367,7 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel var buttonOffset: CGFloat = 0.0 if case .scheduledMessages(true) = self.mode { - buttonOffset += 60.0 + buttonOffset += 64.0 } let bottomInset: CGFloat = 10.0 + cleanInsets.bottom @@ -335,7 +386,9 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel if backgroundFrame.minY < contentFrame.minY { backgroundFrame.origin.y = contentFrame.minY } - transition.updateFrame(node: self.contentBackgroundNode, frame: backgroundFrame) + transition.updateFrame(node: self.backgroundNode, frame: backgroundFrame) + transition.updateFrame(node: self.effectNode, frame: CGRect(origin: CGPoint(), size: backgroundFrame.size)) + transition.updateFrame(node: self.contentBackgroundNode, frame: CGRect(origin: CGPoint(), size: backgroundFrame.size)) transition.updateFrame(node: self.wrappingScrollNode, frame: CGRect(origin: CGPoint(), size: layout.size)) transition.updateFrame(node: self.dimNode, frame: CGRect(origin: CGPoint(), size: layout.size)) @@ -348,12 +401,11 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel transition.updateFrame(node: self.cancelButton, frame: cancelFrame) let buttonInset: CGFloat = 16.0 - let buttonHeight = self.doneButton.updateLayout(width: contentFrame.width - buttonInset * 2.0, transition: transition) - transition.updateFrame(node: self.doneButton, frame: CGRect(x: buttonInset, y: contentHeight - buttonHeight - insets.bottom - 10.0 - buttonOffset, width: contentFrame.width, height: buttonHeight)) + let doneButtonHeight = self.doneButton.updateLayout(width: contentFrame.width - buttonInset * 2.0, transition: transition) + transition.updateFrame(node: self.doneButton, frame: CGRect(x: buttonInset, y: contentHeight - doneButtonHeight - insets.bottom - 16.0 - buttonOffset, width: contentFrame.width, height: doneButtonHeight)) - let onlineSize = self.onlineButton.measure(CGSize(width: width, height: titleHeight)) - let onlineFrame = CGRect(origin: CGPoint(x: ceil((contentFrame.width - onlineSize.width) / 2.0), y: contentHeight - 45.0 - insets.bottom), size: onlineSize) - transition.updateFrame(node: self.onlineButton, frame: onlineFrame) + let onlineButtonHeight = self.onlineButton.updateLayout(width: contentFrame.width - buttonInset * 2.0, transition: transition) + transition.updateFrame(node: self.onlineButton, frame: CGRect(x: buttonInset, y: contentHeight - onlineButtonHeight - insets.bottom - 16.0, width: contentFrame.width, height: onlineButtonHeight)) self.pickerView?.frame = CGRect(origin: CGPoint(x: 0.0, y: 54.0), size: CGSize(width: contentFrame.width, height: pickerHeight)) diff --git a/submodules/TelegramUI/Sources/ChatTimerScreen.swift b/submodules/TelegramUI/Sources/ChatTimerScreen.swift new file mode 100644 index 0000000000..2ccb917a2b --- /dev/null +++ b/submodules/TelegramUI/Sources/ChatTimerScreen.swift @@ -0,0 +1,499 @@ +import Foundation +import UIKit +import Display +import AsyncDisplayKit +import Postbox +import TelegramCore +import SyncCore +import SwiftSignalKit +import AccountContext +import SolidRoundedButtonNode +import TelegramPresentationData +import PresentationDataUtils + +enum ChatTimerScreenStyle { + case `default` + case media +} + +final class ChatTimerScreen: ViewController { + private var controllerNode: ChatTimerScreenNode { + return self.displayNode as! ChatTimerScreenNode + } + + private var animatedIn = false + + private let context: AccountContext + private let peerId: PeerId + private let style: ChatTimerScreenStyle + private let currentTime: Int32? + private let dismissByTapOutside: Bool + private let completion: (Int32) -> Void + + private var presentationDataDisposable: Disposable? + + init(context: AccountContext, peerId: PeerId, style: ChatTimerScreenStyle, currentTime: Int32? = nil, dismissByTapOutside: Bool = true, completion: @escaping (Int32) -> Void) { + self.context = context + self.peerId = peerId + self.style = style + self.currentTime = currentTime + self.dismissByTapOutside = dismissByTapOutside + self.completion = completion + + super.init(navigationBarPresentationData: nil) + + self.statusBar.statusBarStyle = .Ignore + + self.blocksBackgroundWhenInOverlay = true + + self.presentationDataDisposable = (context.sharedContext.presentationData + |> deliverOnMainQueue).start(next: { [weak self] presentationData in + if let strongSelf = self { + strongSelf.controllerNode.updatePresentationData(presentationData) + } + }) + + self.statusBar.statusBarStyle = .Ignore + } + + required init(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + deinit { + self.presentationDataDisposable?.dispose() + } + + override public func loadDisplayNode() { + self.displayNode = ChatTimerScreenNode(context: self.context, style: self.style, currentTime: self.currentTime, dismissByTapOutside: self.dismissByTapOutside) + self.controllerNode.completion = { [weak self] time in + guard let strongSelf = self else { + return + } + strongSelf.completion(time) + strongSelf.dismiss() + } + self.controllerNode.dismiss = { [weak self] in + self?.presentingViewController?.dismiss(animated: false, completion: nil) + } + self.controllerNode.cancel = { [weak self] in + self?.dismiss() + } + } + + override public func loadView() { + super.loadView() + } + + override public func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + if !self.animatedIn { + self.animatedIn = true + self.controllerNode.animateIn() + } + } + + override public func dismiss(completion: (() -> Void)? = nil) { + self.controllerNode.animateOut(completion: completion) + } + + override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { + super.containerLayoutUpdated(layout, transition: transition) + + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + } +} + +private class TimerPickerView: UIPickerView { + var selectorColor: UIColor? = nil { + didSet { + for subview in self.subviews { + if subview.bounds.height <= 1.0 { + subview.backgroundColor = self.selectorColor + } + } + } + } + + override func didAddSubview(_ subview: UIView) { + super.didAddSubview(subview) + + if let selectorColor = self.selectorColor { + if subview.bounds.height <= 1.0 { + subview.backgroundColor = selectorColor + } + } + } + + override func didMoveToWindow() { + super.didMoveToWindow() + + if let selectorColor = self.selectorColor { + for subview in self.subviews { + if subview.bounds.height <= 1.0 { + subview.backgroundColor = selectorColor + } + } + } + } +} + +private class TimerPickerItemView: UIView { + let valueLabel = UILabel() + let unitLabel = UILabel() + + var textColor: UIColor? = nil { + didSet { + self.valueLabel.textColor = self.textColor + self.unitLabel.textColor = self.textColor + } + } + + var value: (Int32, String)? { + didSet { + if let (_, string) = self.value { + let components = string.components(separatedBy: " ") + if components.count > 1 { + self.valueLabel.text = components[0] + self.unitLabel.text = components[1] + } + } + + self.setNeedsLayout() + } + } + + override init(frame: CGRect) { + self.valueLabel.backgroundColor = nil + self.valueLabel.isOpaque = false + self.valueLabel.font = Font.regular(24.0) + + self.unitLabel.backgroundColor = nil + self.unitLabel.isOpaque = false + self.unitLabel.font = Font.medium(16.0) + + super.init(frame: frame) + + self.addSubview(self.valueLabel) + self.addSubview(self.unitLabel) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + + self.valueLabel.sizeToFit() + self.unitLabel.sizeToFit() + + self.valueLabel.frame = CGRect(origin: CGPoint(x: self.frame.width / 2.0 - 20.0 - self.valueLabel.frame.size.width, y: floor((self.frame.height - self.valueLabel.frame.height) / 2.0)), size: self.valueLabel.frame.size) + self.unitLabel.frame = CGRect(origin: CGPoint(x: self.frame.width / 2.0 - 12.0, y: floor((self.frame.height - self.unitLabel.frame.height) / 2.0) + 2.0), size: self.unitLabel.frame.size) + } +} + +private var timerValues: [Int32] = { + var values: [Int32] = [] + for i in 1 ..< 20 { + values.append(Int32(i)) + } + for i in 0 ..< 9 { + values.append(Int32(20 + i * 5)) + } + return values +}() + +class ChatTimerScreenNode: ViewControllerTracingNode, UIScrollViewDelegate, UIPickerViewDataSource, UIPickerViewDelegate { + private let context: AccountContext + private let controllerStyle: ChatTimerScreenStyle + private var presentationData: PresentationData + private let dismissByTapOutside: Bool + + private let dimNode: ASDisplayNode + private let wrappingScrollNode: ASScrollNode + private let contentContainerNode: ASDisplayNode + private let effectNode: ASDisplayNode + private let backgroundNode: ASDisplayNode + private let contentBackgroundNode: ASDisplayNode + private let titleNode: ASTextNode + private let textNode: ImmediateTextNode + private let cancelButton: HighlightableButtonNode + private let doneButton: SolidRoundedButtonNode + + private var pickerView: TimerPickerView? + + private var containerLayout: (ContainerViewLayout, CGFloat)? + + var completion: ((Int32) -> Void)? + var dismiss: (() -> Void)? + var cancel: (() -> Void)? + + init(context: AccountContext, style: ChatTimerScreenStyle, currentTime: Int32?, dismissByTapOutside: Bool) { + self.context = context + self.controllerStyle = style + self.presentationData = context.sharedContext.currentPresentationData.with { $0 } + self.dismissByTapOutside = dismissByTapOutside + + self.wrappingScrollNode = ASScrollNode() + self.wrappingScrollNode.view.alwaysBounceVertical = true + self.wrappingScrollNode.view.delaysContentTouches = false + self.wrappingScrollNode.view.canCancelContentTouches = true + + self.dimNode = ASDisplayNode() + self.dimNode.backgroundColor = UIColor(white: 0.0, alpha: 0.5) + + self.contentContainerNode = ASDisplayNode() + self.contentContainerNode.isOpaque = false + + self.backgroundNode = ASDisplayNode() + self.backgroundNode.clipsToBounds = true + self.backgroundNode.cornerRadius = 16.0 + + let backgroundColor: UIColor + let textColor: UIColor + let accentColor: UIColor + let blurStyle: UIBlurEffect.Style + switch style { + case .default: + backgroundColor = self.presentationData.theme.actionSheet.itemBackgroundColor + textColor = self.presentationData.theme.actionSheet.primaryTextColor + accentColor = self.presentationData.theme.actionSheet.controlAccentColor + blurStyle = self.presentationData.theme.actionSheet.backgroundType == .light ? .light : .dark + case .media: + backgroundColor = UIColor(rgb: 0x1c1c1e) + textColor = .white + accentColor = self.presentationData.theme.actionSheet.controlAccentColor + blurStyle = .dark + } + + self.effectNode = ASDisplayNode(viewBlock: { + return UIVisualEffectView(effect: UIBlurEffect(style: blurStyle)) + }) + + self.contentBackgroundNode = ASDisplayNode() + self.contentBackgroundNode.backgroundColor = backgroundColor + + let title = self.presentationData.strings.Conversation_Timer_Title + self.titleNode = ASTextNode() + self.titleNode.attributedText = NSAttributedString(string: title, font: Font.bold(17.0), textColor: textColor) + + self.textNode = ImmediateTextNode() + + self.cancelButton = HighlightableButtonNode() + self.cancelButton.setTitle(self.presentationData.strings.Common_Cancel, with: Font.regular(17.0), with: accentColor, for: .normal) + + self.doneButton = SolidRoundedButtonNode(theme: SolidRoundedButtonTheme(theme: self.presentationData.theme), height: 52.0, cornerRadius: 11.0, gloss: false) + self.doneButton.title = self.presentationData.strings.Conversation_Timer_Send + + super.init() + + self.backgroundColor = nil + self.isOpaque = false + + self.dimNode.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dimTapGesture(_:)))) + self.addSubnode(self.dimNode) + + self.wrappingScrollNode.view.delegate = self + self.addSubnode(self.wrappingScrollNode) + + self.wrappingScrollNode.addSubnode(self.backgroundNode) + self.wrappingScrollNode.addSubnode(self.contentContainerNode) + + self.backgroundNode.addSubnode(self.effectNode) + self.backgroundNode.addSubnode(self.contentBackgroundNode) + self.contentContainerNode.addSubnode(self.titleNode) + self.contentContainerNode.addSubnode(self.textNode) + self.contentContainerNode.addSubnode(self.cancelButton) + self.contentContainerNode.addSubnode(self.doneButton) + + self.cancelButton.addTarget(self, action: #selector(self.cancelButtonPressed), forControlEvents: .touchUpInside) + self.doneButton.pressed = { [weak self] in + if let strongSelf = self, let pickerView = strongSelf.pickerView { + strongSelf.doneButton.isUserInteractionEnabled = false + strongSelf.completion?(timerValues[pickerView.selectedRow(inComponent: 0)]) + } + } + + self.setupPickerView(currentTime: currentTime) + } + + func setupPickerView(currentTime: Int32? = nil) { + if let pickerView = self.pickerView { + pickerView.removeFromSuperview() + } + + let pickerView = TimerPickerView() + pickerView.selectorColor = UIColor(rgb: 0xffffff, alpha: 0.18) + pickerView.dataSource = self + pickerView.delegate = self + + self.contentContainerNode.view.addSubview(pickerView) + self.pickerView = pickerView + } + + func numberOfComponents(in pickerView: UIPickerView) -> Int { + return 1 + } + + func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { + return timerValues.count + } + + func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { + let value = timerValues[row] + let string = timeIntervalString(strings: self.presentationData.strings, value: value) + if let view = view as? TimerPickerItemView { + view.value = (value, string) + return view + } + + let view = TimerPickerItemView() + view.value = (value, string) + view.textColor = .white + return view + } + + func updatePresentationData(_ presentationData: PresentationData) { + let previousTheme = self.presentationData.theme + self.presentationData = presentationData + + guard case .default = self.controllerStyle else { + return + } + + if let effectView = self.effectNode.view as? UIVisualEffectView { + effectView.effect = UIBlurEffect(style: presentationData.theme.actionSheet.backgroundType == .light ? .light : .dark) + } + + self.contentBackgroundNode.backgroundColor = self.presentationData.theme.actionSheet.itemBackgroundColor + self.titleNode.attributedText = NSAttributedString(string: self.titleNode.attributedText?.string ?? "", font: Font.bold(17.0), textColor: self.presentationData.theme.actionSheet.primaryTextColor) + + if previousTheme !== presentationData.theme, let (layout, navigationBarHeight) = self.containerLayout { + self.setupPickerView() + self.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: .immediate) + } + + self.cancelButton.setTitle(self.presentationData.strings.Common_Cancel, with: Font.regular(17.0), with: self.presentationData.theme.actionSheet.controlAccentColor, for: .normal) + self.doneButton.updateTheme(SolidRoundedButtonTheme(theme: self.presentationData.theme)) + } + + override func didLoad() { + super.didLoad() + + if #available(iOSApplicationExtension 11.0, iOS 11.0, *) { + self.wrappingScrollNode.view.contentInsetAdjustmentBehavior = .never + } + } + + @objc func cancelButtonPressed() { + self.cancel?() + } + + @objc func dimTapGesture(_ recognizer: UITapGestureRecognizer) { + if self.dismissByTapOutside, case .ended = recognizer.state { + self.cancelButtonPressed() + } + } + + func animateIn() { + self.dimNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.4) + + let offset = self.bounds.size.height - self.contentBackgroundNode.frame.minY + + let dimPosition = self.dimNode.layer.position + self.dimNode.layer.animatePosition(from: CGPoint(x: dimPosition.x, y: dimPosition.y - offset), to: dimPosition, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring) + self.layer.animateBoundsOriginYAdditive(from: -offset, to: 0.0, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring) + } + + func animateOut(completion: (() -> Void)? = nil) { + var dimCompleted = false + var offsetCompleted = false + + let internalCompletion: () -> Void = { [weak self] in + if let strongSelf = self, dimCompleted && offsetCompleted { + strongSelf.dismiss?() + } + completion?() + } + + self.dimNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, removeOnCompletion: false, completion: { _ in + dimCompleted = true + internalCompletion() + }) + + let offset = self.bounds.size.height - self.contentBackgroundNode.frame.minY + let dimPosition = self.dimNode.layer.position + self.dimNode.layer.animatePosition(from: dimPosition, to: CGPoint(x: dimPosition.x, y: dimPosition.y - offset), duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false) + self.layer.animateBoundsOriginYAdditive(from: 0.0, to: -offset, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false, completion: { _ in + offsetCompleted = true + internalCompletion() + }) + } + + override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { + if self.bounds.contains(point) { + if !self.contentBackgroundNode.bounds.contains(self.convert(point, to: self.contentBackgroundNode)) { + return self.dimNode.view + } + } + return super.hitTest(point, with: event) + } + + func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { + let contentOffset = scrollView.contentOffset + let additionalTopHeight = max(0.0, -contentOffset.y) + + if additionalTopHeight >= 30.0 { + self.cancelButtonPressed() + } + } + + func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) { + self.containerLayout = (layout, navigationBarHeight) + + var insets = layout.insets(options: [.statusBar, .input]) + let cleanInsets = layout.insets(options: [.statusBar]) + insets.top = max(10.0, insets.top) + + let buttonOffset: CGFloat = 0.0 + let bottomInset: CGFloat = 10.0 + cleanInsets.bottom + let titleHeight: CGFloat = 54.0 + var contentHeight = titleHeight + bottomInset + 52.0 + 17.0 + let pickerHeight: CGFloat = min(216.0, layout.size.height - contentHeight) + contentHeight = titleHeight + bottomInset + 52.0 + 17.0 + pickerHeight + buttonOffset + + let width = horizontalContainerFillingSizeForLayout(layout: layout, sideInset: layout.safeInsets.left) + + let sideInset = floor((layout.size.width - width) / 2.0) + let contentContainerFrame = CGRect(origin: CGPoint(x: sideInset, y: layout.size.height - contentHeight), size: CGSize(width: width, height: contentHeight)) + let contentFrame = contentContainerFrame + + var backgroundFrame = CGRect(origin: CGPoint(x: contentFrame.minX, y: contentFrame.minY), size: CGSize(width: contentFrame.width, height: contentFrame.height + 2000.0)) + if backgroundFrame.minY < contentFrame.minY { + backgroundFrame.origin.y = contentFrame.minY + } + transition.updateFrame(node: self.backgroundNode, frame: backgroundFrame) + transition.updateFrame(node: self.effectNode, frame: CGRect(origin: CGPoint(), size: backgroundFrame.size)) + transition.updateFrame(node: self.contentBackgroundNode, frame: CGRect(origin: CGPoint(), size: backgroundFrame.size)) + transition.updateFrame(node: self.wrappingScrollNode, frame: CGRect(origin: CGPoint(), size: layout.size)) + transition.updateFrame(node: self.dimNode, frame: CGRect(origin: CGPoint(), size: layout.size)) + + let titleSize = self.titleNode.measure(CGSize(width: width, height: titleHeight)) + let titleFrame = CGRect(origin: CGPoint(x: floor((contentFrame.width - titleSize.width) / 2.0), y: 16.0), size: titleSize) + transition.updateFrame(node: self.titleNode, frame: titleFrame) + + let cancelSize = self.cancelButton.measure(CGSize(width: width, height: titleHeight)) + let cancelFrame = CGRect(origin: CGPoint(x: 16.0, y: 16.0), size: cancelSize) + transition.updateFrame(node: self.cancelButton, frame: cancelFrame) + + let buttonInset: CGFloat = 16.0 + let doneButtonHeight = self.doneButton.updateLayout(width: contentFrame.width - buttonInset * 2.0, transition: transition) + transition.updateFrame(node: self.doneButton, frame: CGRect(x: buttonInset, y: contentHeight - doneButtonHeight - insets.bottom - 16.0 - buttonOffset, width: contentFrame.width, height: doneButtonHeight)) + + self.pickerView?.frame = CGRect(origin: CGPoint(x: 0.0, y: 54.0), size: CGSize(width: contentFrame.width, height: pickerHeight)) + + transition.updateFrame(node: self.contentContainerNode, frame: contentContainerFrame) + } +} diff --git a/submodules/TelegramUI/Sources/DrawingStickersScreen.swift b/submodules/TelegramUI/Sources/DrawingStickersScreen.swift index 6fc01cca46..7b8b715564 100644 --- a/submodules/TelegramUI/Sources/DrawingStickersScreen.swift +++ b/submodules/TelegramUI/Sources/DrawingStickersScreen.swift @@ -20,7 +20,7 @@ import SegmentedControlNode private final class DrawingStickersScreenNode: ViewControllerTracingNode { private let context: AccountContext private var presentationData: PresentationData - private let selectSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)? + fileprivate var selectSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)? private var searchItemContext = StickerPaneSearchGlobalItemContext() private let themeAndStringsPromise: Promise<(PresentationTheme, PresentationStrings)> @@ -384,7 +384,7 @@ private final class DrawingStickersScreenNode: ViewControllerTracingNode { } let panelEntries = chatMediaInputPanelEntries(view: view, savedStickers: savedStickers, recentStickers: recentStickers, peerSpecificPack: nil, canInstallPeerSpecificPack: .none, hasUnreadTrending: nil, theme: theme, hasGifs: false) - var gridEntries = chatMediaInputGridEntries(view: view, savedStickers: savedStickers, recentStickers: recentStickers, peerSpecificPack: nil, canInstallPeerSpecificPack: .none, hasSearch: false, strings: strings, theme: theme) + let gridEntries = chatMediaInputGridEntries(view: view, savedStickers: savedStickers, recentStickers: recentStickers, peerSpecificPack: nil, canInstallPeerSpecificPack: .none, hasSearch: false, strings: strings, theme: theme) if view.higher == nil { var hasTopSeparator = true @@ -821,6 +821,10 @@ private final class DrawingStickersScreenNode: ViewControllerTracingNode { func animateIn() { self.layer.animatePosition(from: CGPoint(x: self.layer.position.x, y: self.layer.position.y + self.layer.bounds.size.height), to: self.layer.position, duration: 0.5, timingFunction: kCAMediaTimingFunctionSpring) } + + func animateOut() { + self.layer.animatePosition(from: self.layer.position, to: CGPoint(x: self.layer.position.x, y: self.layer.position.y + self.layer.bounds.size.height), duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring) + } func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationHeight: CGFloat, transition: ContainedViewLayoutTransition) { self.validLayout = layout @@ -834,7 +838,7 @@ private final class DrawingStickersScreenNode: ViewControllerTracingNode { final class DrawingStickersScreen: ViewController { private let context: AccountContext - private let selectSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)? + var selectSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)? private var controllerNode: DrawingStickersScreenNode { return self.displayNode as! DrawingStickersScreenNode @@ -890,14 +894,11 @@ final class DrawingStickersScreen: ViewController { override public func loadDisplayNode() { self.displayNode = DrawingStickersScreenNode( context: self.context, - selectSticker: self.selectSticker.flatMap { [weak self] selectSticker in - return { file, sourceNode, sourceRect in - if selectSticker(file, sourceNode, sourceRect) { - self?.dismiss() - return true - } else { - return false - } + selectSticker: { [weak self] file, sourceNode, sourceRect in + if let strongSelf = self, let selectSticker = strongSelf.selectSticker { + return selectSticker(file, sourceNode, sourceRect) + } else { + return false } } ) diff --git a/submodules/TelegramUI/Sources/FetchVideoMediaResource.swift b/submodules/TelegramUI/Sources/FetchVideoMediaResource.swift index d1896c6994..1dec60b41c 100644 --- a/submodules/TelegramUI/Sources/FetchVideoMediaResource.swift +++ b/submodules/TelegramUI/Sources/FetchVideoMediaResource.swift @@ -291,7 +291,7 @@ public func fetchVideoLibraryMediaResource(account: Account, resource: VideoLibr let signal = TGMediaVideoConverter.convert(avAsset, adjustments: adjustments, watcher: VideoConversionWatcher(update: { path, size in var value = stat() if stat(path, &value) == 0 { - /*if let data = try? Data(contentsOf: URL(fileURLWithPath: path), options: [.mappedRead]) { + if let data = try? Data(contentsOf: URL(fileURLWithPath: path), options: [.mappedRead]) { var range: Range? let _ = updatedSize.modify { updatedSize in range = updatedSize ..< Int(value.st_size) @@ -299,26 +299,26 @@ public func fetchVideoLibraryMediaResource(account: Account, resource: VideoLibr } //print("size = \(Int(value.st_size)), range: \(range!)") subscriber.putNext(.dataPart(resourceOffset: range!.lowerBound, data: data, range: range!, complete: false)) - }*/ + } } }), entityRenderer: entityRenderer)! let signalDisposable = signal.start(next: { next in if let result = next as? TGMediaVideoConversionResult { var value = stat() if stat(result.fileURL.path, &value) == 0 { - if config.remuxToFMp4 { - let tempFile = TempBox.shared.tempFile(fileName: "video.mp4") - if FFMpegRemuxer.remux(result.fileURL.path, to: tempFile.path) { - let _ = try? FileManager.default.removeItem(atPath: result.fileURL.path) - subscriber.putNext(.moveTempFile(file: tempFile)) - } else { - TempBox.shared.dispose(tempFile) - subscriber.putNext(.moveLocalFile(path: result.fileURL.path)) - } - } else { - subscriber.putNext(.moveLocalFile(path: result.fileURL.path)) - } - /*if let data = try? Data(contentsOf: result.fileURL, options: [.mappedRead]) { +// if config.remuxToFMp4 { +// let tempFile = TempBox.shared.tempFile(fileName: "video.mp4") +// if FFMpegRemuxer.remux(result.fileURL.path, to: tempFile.path) { +// let _ = try? FileManager.default.removeItem(atPath: result.fileURL.path) +// subscriber.putNext(.moveTempFile(file: tempFile)) +// } else { +// TempBox.shared.dispose(tempFile) +// subscriber.putNext(.moveLocalFile(path: result.fileURL.path)) +// } +// } else { +// subscriber.putNext(.moveLocalFile(path: result.fileURL.path)) +// } + if let data = try? Data(contentsOf: result.fileURL, options: [.mappedRead]) { var range: Range? let _ = updatedSize.modify { updatedSize in range = updatedSize ..< Int(value.st_size) @@ -328,7 +328,7 @@ public func fetchVideoLibraryMediaResource(account: Account, resource: VideoLibr subscriber.putNext(.dataPart(resourceOffset: range!.lowerBound, data: data, range: range!, complete: false)) subscriber.putNext(.replaceHeader(data: data, range: 0 ..< 1024)) subscriber.putNext(.dataPart(resourceOffset: data.count, data: Data(), range: 0 ..< 0, complete: true)) - }*/ + } } else { subscriber.putError(.generic) } diff --git a/submodules/TelegramUI/Sources/LegacyCamera.swift b/submodules/TelegramUI/Sources/LegacyCamera.swift index fbb138a15f..f0a2fd3249 100644 --- a/submodules/TelegramUI/Sources/LegacyCamera.swift +++ b/submodules/TelegramUI/Sources/LegacyCamera.swift @@ -11,7 +11,7 @@ import ShareController import LegacyUI import LegacyMediaPickerUI -func presentedLegacyCamera(context: AccountContext, peer: Peer, cameraView: TGAttachmentCameraView?, menuController: TGMenuSheetController?, parentController: ViewController, editingMedia: Bool, saveCapturedPhotos: Bool, mediaGrouping: Bool, initialCaption: String, hasSchedule: Bool, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32) -> Void, recognizedQRCode: @escaping (String) -> Void = { _ in }, presentSchedulePicker: @escaping (@escaping (Int32) -> Void) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> Void) { +func presentedLegacyCamera(context: AccountContext, peer: Peer, cameraView: TGAttachmentCameraView?, menuController: TGMenuSheetController?, parentController: ViewController, editingMedia: Bool, saveCapturedPhotos: Bool, mediaGrouping: Bool, initialCaption: String, hasSchedule: Bool, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32) -> Void, recognizedQRCode: @escaping (String) -> Void = { _ in }, presentSchedulePicker: @escaping (@escaping (Int32) -> Void) -> Void, presentTimerPicker: @escaping (@escaping (Int32) -> Void) -> Void, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> Void) { let presentationData = context.sharedContext.currentPresentationData.with { $0 } let legacyController = LegacyController(presentation: .custom, theme: presentationData.theme) legacyController.supportedOrientations = ViewControllerSupportedOrientations(regularSize: .portrait, compactSize: .portrait) @@ -35,7 +35,7 @@ func presentedLegacyCamera(context: AccountContext, peer: Peer, cameraView: TGAt } } controller.presentTimerController = { done in - presentSchedulePicker { time in + presentTimerPicker { time in done?(time) } }