From b9e52f27e37f470bc4309594e140577c124a1bbd Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 7 Apr 2021 04:33:05 +0300 Subject: [PATCH] Voice Chat Scheduling --- Telegram/Telegram-iOS/Resources/VoiceMute.tgs | Bin 1100 -> 2311 bytes .../Telegram-iOS/Resources/VoiceStart.tgs | Bin 0 -> 3477 bytes .../Telegram-iOS/Resources/VoiceUnmute.tgs | Bin 1191 -> 2419 bytes .../Telegram-iOS/en.lproj/Localizable.strings | 19 +- .../Sources/AccountContext.swift | 1 + .../Sources/PresentationCallManager.swift | 16 +- .../Sources/Node/ChatListItem.swift | 6 +- .../Sources/Node/ChatListItemStrings.swift | 6 +- .../Sources/ContextActionsContainerNode.swift | 5 +- .../ContextUI/Sources/ContextController.swift | 7 +- submodules/Display/Source/GenerateImage.swift | 9 +- .../ChatItemGalleryFooterContentNode.swift | 4 +- .../Sources/ManagedAnimationNode.swift | 13 + .../Sources/ChangePhoneNumberController.swift | 11 +- .../Sources/SolidRoundedButtonNode.swift | 2 - .../Sources/StatsMessageItem.swift | 4 +- .../Sources/TelegramBaseController.swift | 4 +- .../Sources/CallControllerButton.swift | 3 + .../Sources/CallStatusBarNode.swift | 61 +- .../GroupCallNavigationAccessoryPanel.swift | 124 +- .../Sources/PresentationCallManager.swift | 107 + .../Sources/PresentationGroupCall.swift | 601 +- .../Sources/VoiceChatActionButton.swift | 224 +- .../Sources/VoiceChatController.swift | 651 +- .../Sources/VoiceChatJoinScreen.swift | 2 +- .../Sources/VoiceChatOverlayController.swift | 11 +- .../Sources/VoiceChatTimerNode.swift | 143 + .../VoiceChatTitleEditController.swift | 14 +- .../Sources/VoiceChatTitleNode.swift | 103 + .../TelegramCore/Sources/GroupCalls.swift | 26 +- .../Sources/PresentationStrings.swift | 8952 +++++++++-------- .../Sources/MessageContentKind.swift | 12 +- .../Sources/ServiceMessageStrings.swift | 9 +- .../CallShareButton.imageset/Contents.json | 12 + .../callshare (1).pdf | Bin 0 -> 4013 bytes .../Animations/anim_profilemute.json | 2 +- .../Animations/anim_profileunmute.json | 2 +- .../Resources/PresentationStrings.mapping | Bin 169791 -> 170036 bytes .../TelegramUI/Sources/AccountContext.swift | 4 + .../Sources/ApplicationContext.swift | 2 +- .../AuthorizationSequenceController.swift | 10 +- .../TelegramUI/Sources/ChatController.swift | 6 +- .../ChatInterfaceStateAccessoryPanels.swift | 4 +- .../Sources/ChatMessageActionItemNode.swift | 6 +- .../Sources/ChatMessageItemView.swift | 2 +- .../Sources/ChatMessageNotificationItem.swift | 10 +- .../Sources/ChatMessageReplyInfoNode.swift | 2 +- .../ChatPinnedMessageTitlePanelNode.swift | 8 +- .../ChatScheduleTimeControllerNode.swift | 2 +- .../Sources/EditAccessoryPanelNode.swift | 9 +- .../Sources/PeerInfo/PeerInfoData.swift | 16 +- .../Sources/PeerInfo/PeerInfoHeaderNode.swift | 6 +- .../Sources/PeerInfo/PeerInfoScreen.swift | 183 +- .../Sources/ReplyAccessoryPanelNode.swift | 6 +- 54 files changed, 6278 insertions(+), 5164 deletions(-) create mode 100644 Telegram/Telegram-iOS/Resources/VoiceStart.tgs create mode 100644 submodules/TelegramCallsUI/Sources/VoiceChatTimerNode.swift create mode 100644 submodules/TelegramCallsUI/Sources/VoiceChatTitleNode.swift create mode 100644 submodules/TelegramUI/Images.xcassets/Call/CallShareButton.imageset/Contents.json create mode 100644 submodules/TelegramUI/Images.xcassets/Call/CallShareButton.imageset/callshare (1).pdf diff --git a/Telegram/Telegram-iOS/Resources/VoiceMute.tgs b/Telegram/Telegram-iOS/Resources/VoiceMute.tgs index a6d20bddcc4d262c035894653b31268161c49a8c..a0212c1f2d8ac274401823b3c6466c7372ccb378 100644 GIT binary patch literal 2311 zcmV+i3HbIOiwFp^>tcR%HLLzpU0A7DbzQ#i7U=(vyTzx?jD%cWrQXx^dbU|t7vl-5Zl|AT zEBgJVX`bKVTVk-!5L#sX_0#R`NJ7SXmD+CBH2)=iOw&U*`O*KPRbqat(jrp}gwN>) zTE~KW3=7d?IYGze?!GSf1>N6N7Y3u1%ddJ~+AKhF`?VrenL{mjNHTCwt7cx4vSNYW z_lH)D(UMTv8VVz&d!h`JB`RyUFp4P^xbRFs{ANibF_ACk%|&}XCk!C_BN%<=5!Buq z%qb&~KE;96Z`G?Fk~g$=+Sm$av%IALha}SJhZ>mqHFg+)>vk5-+_+|Bra>|UyHOWdVr!b zpqK(E@8);2(XaE%)e@j`KV8l4@UTCMFEo{Xgy~|>Bc7-Swy|k%XW6>tO@6LJ`5eA%LI9zlcptasXcyWgn;YsMt&_kr6^>nDk zJ~T$0-mO0@SBr{vLAsT;Y0}T#eWGEP#p*?i#mxqk*Wccg4AiOswQ-LCweAA-`}yp0 zAF1tGk-AtxgB`;qg6BHQW40Xb`2B&cw%mBj6t`9vRAb|q=2|PROl)A!afIAjavfCD zu|_Bmks0oS>tUjd+#w7F#1~JJwd2t;4`A08mzHo*vkqhB2cD4j1Y_?5{(A=z610l@)ESS}6N`WX3{R2rxu2ooCE0AiSc6p2V9 zIeM)$4=OSVB+}*gz8OXaz>-qW*FstM|Aw+1mSw+7fR9_@olkSSN^bKv!jV5aoG5(#V5|iJKv%M|Pf=7E(4F37DKT4OoFSS!swx zxoC1PN}nU1Q$)IIpjkq~luv)dEOckqJ@|SBuUGJT3E<^=)xFury_8Wt2XrCxLB0hR zWJ|I6NGZ%4CXEF>aW4YQPN{{7?Tpj?=+e(;0-jfwez`9FJ+eOEb?Kj$SD(L483?{A z;LX-jlz+sj2Ri;>X`t=qUJV3vKe0r>SH9NB4YeOYji!(!Ef-o+R%iv)hwA*ueyQC? z9u0Vq<}pyNR~t|q$~%qZnFATe1sx$EDHNWV7BadJ8FI=Pa*ZpipZYpM+{l^Gt~mA1 zN1mh`H=rAg5Ti>ZEY-dg*8;$f6&QQEx}ch1ENMt7n@$+;yk;IzHG;aM1J1F+5KtG@A(Anm zK8;;VHBe*2 zhmED!=C~K;Iiu)FcF~9n8KGn&f&@>g9UWin`_xfda9rcy9~ipEPLbaOw6>JO2kw3NTI~j6 zsZ3MlG@Tr)RN|y}_k5;a7U=-CzD--6iV<*AN1MtPuZV=4`Do{ri~PB`h&swe)U%Ww zLbvRYk3io3{^r;B@7|tp5YmvC&KsMP^h&hczDl=!4XfPU8siXt15!J z=$CPPavaV&jh(hFhz&qi)32ZTv`5%gGf#n};Vh>MZN#umNaC3b28c@Z#E~`gS%p z9Dod;i2{Nun1dvWoTgRxI@7fcMOfN@{n6^)Z0g`s?AmR!fLIsPF=D&rk*%d(FOr`FPh22{{T@|yf5lA008ALiF^P6 literal 1100 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�CIb-3N4B`l$0uRn|!d=0SZGODmK&JJpI7j8g-#LUV|M*cv8FqrU)%r!kE2? zWh1-{H7+S7Bwt4PN;`Q5hDi0Taa@EXs1oFO+LI2LfinetoS>)NwR?S>@T0ON_QKde zKPJjq(+Y%ym)DU8IT(*aRYp6;M!3;8p|4Xr$J&A7J^*>bI<{gCt~8gl>yutf8-l>3 zK!DFQ?RcfGU2$&{9#UNdEN})%z?RLhNSK@-4xE*O9Agqn{LZC3 zCUu5%?u2EgNm{2f52irws4WjWMsDHLl7^7;rTSJgX-=7gl2?{eTgv-cD4?ySTm(1p z1)n1&o|L4rl?<0iskNhrK<2DW=O`;-sU|aCnf6p^q2Om=8sWr7swpQKQl#!IVAxE7 zUT|`jIM%nCi5|nJ3@>9SEXoObWKYaJU%@;cvTF(V@g;G#~6{2`nV!b44aie#%`YFR-E`yI@g;;rWOa;iy%^gwg{63y$ia$>k1M0pTt) zMHkkMw_W+{2?x6Mg!P2^-;89yFbCF7+%T0Dl3p+gOu?tp!x3PEL`@?DieX<=8e~lD z5_p@!L!-cE1!d(UC- zduoEZ=$G;IbU#k@8hdSPXc_>brr%~2+MS`@pFaj@hKtTVXpK+(I$QVeA6iYSoti{u z6>=?RI>Aqp&1*Urx~(iaUAYJKGCT;q1=o~#3W*pRx(46ZX06_Q(%7YY2aOZDS*95Q zt7>|6au+Q+q&1fUbRHvw<%_NtSBn9QJI;3O}LV zHMd8`=P+@%l%y?Q$#HQrphoVD3PFd+oB0~ldN)fQE) zv|Kg|*O74(-6Bs@a3#+5g7()j{(>N}2bDfn2Z1EWA8A|k7tUE7teoM>&}Wk32i9?l zGvFPQ@kzMIqHXP}j&AXD@n`XN_wDYx-LruU1|&;Zeem%|pA5c;j`LMIc!Ks1hJ%Oc z>U0ePvuUNudX(ivAJB}9OZA_PhuG3Sz`U)_ohA!{X?PNN3sB5q_)5nmS?I+0GSR}u zgI|m1#S8G_W$}A)+3mx_G+fW(WANfhp04ImryDr}vp&H8%H-%z4FwLWDj`H)R;vEU zj8N&kYZJyS3%fY7!u7Y^v*Hy*Tbw6#tRO$Qo{01~Mxiro+0DfMZ*$fFc8>a#RXTG5ys+>M!WNyimEYF&4{ zH&uHqVM^KP&n+!&fEO=-y8&eO;m4_DPwA*`pAv zAx}>uh#t(d$LVSvrFm?hns|9;0|xxn6z&>01B}hDepl#~Zw&2vZ#>R|fDYw|1-=JN zyMS~6WEWKmn|BGF*w*prK>>^9ys!REUi|_!{f*5jOp`l&d53V(kF4)FS1=Pyd7AL* zz*JJqkrXI?5IMm{I!YZ1hk|iYiE&XQ0Q~m$N+)Qs+Qb1&pijw$h2=Rdb#M&2!g z5?#e4I5KpZtFWOM;fNxzsud|96;q<7d;nM)lN{I@;G!XwMA9j_d%{gk!@YBcig`i9 zjG<({XxV{BNr(YbE#^Ur-Bst){E1#C5bsSO&I~|cm+Mj>xw{8fDFFf$*qyb=>kMgr zVJoWc;o{kKy<)H+ZxI+w3y--{K}E8WV@ah+*(4oH+RczxN+&FC)-}Kb&(fwQthl9( zwi`mh-wg`B4~6K1!evsGMe1WxdH#OkfXJvs%L(X#NC^iDx*ZY6BVYnU7aXX)!o$Mh zL-Hzvq0cn{YE;rf(_YY|9ZQ?-0I;rcWSTpPt0rk=EooHU5DoEeKM4}-DihPK)@|zd z(1g8&hyQKy=I^(vkD~PH`_iNQZ@cKSy}~A1-lB=VrpcRN)0584zfC9GzW`GO6quP6 F007PfPy7G? diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 5ce3cf9967..0d7c0d85af 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -6338,26 +6338,31 @@ Sorry for the inconvenience."; "VoiceChat.PinVideo" = "Pin Video"; "VoiceChat.UnpinVideo" = "Unpin Video"; -"Notification.VoiceChatScheduled" = "Voice chat scheduled"; +"Notification.VoiceChatScheduled" = "Voice chat scheduled for %@"; -"VoiceChat.EditStartTime" = "Edit Start Time"; "VoiceChat.StartsIn" = "Starts in"; +"VoiceChat.LateBy" = "Late by"; +"VoiceChat.StartNow" = "Start Now"; "VoiceChat.SetReminder" = "Set Reminder"; "VoiceChat.CancelReminder" = "Cancel Reminder"; "VoiceChat.ShareShort" = "share"; +"VoiceChat.TapToEditTitle" = "Tap to edit title"; + "ChannelInfo.ScheduleVoiceChat" = "Schedule Voice Chat"; "ScheduleVoiceChat.Title" = "Schedule Voice Chat"; "ScheduleVoiceChat.GroupText" = "The members of the group will be notified that the voice chat will start in %@."; "ScheduleVoiceChat.ChannelText" = "The members of the channel will be notified that the voice chat will start in %@."; -"ScheduleVoiceChat.ScheduleToday" = "Remind today at %@"; -"ScheduleVoiceChat.ScheduleTomorrow" = "Remind tomorrow at %@"; -"ScheduleVoiceChat.ScheduleOn" = "Remind on %@ at %@"; +"ScheduleVoiceChat.ScheduleToday" = "Start today at %@"; +"ScheduleVoiceChat.ScheduleTomorrow" = "Start tomorrow at %@"; +"ScheduleVoiceChat.ScheduleOn" = "Start on %@ at %@"; + +"VoiceChat.ScheduledTitle" = "Scheduled Voice Chat"; "Conversation.ScheduledVoiceChat" = "Scheduled Voice Chat"; -"Conversation.ScheduledVoiceChatStartsInShort" = "Voice chat starts %@"; -"Conversation.ScheduledVoiceChatStartsInShort" = "Starts %@"; +"Conversation.ScheduledVoiceChatStartsOn" = "Voice chat starts %@"; +"Conversation.ScheduledVoiceChatStartsOnShort" = "Starts %@"; diff --git a/submodules/AccountContext/Sources/AccountContext.swift b/submodules/AccountContext/Sources/AccountContext.swift index bfc8bcf819..1b3bd875fe 100644 --- a/submodules/AccountContext/Sources/AccountContext.swift +++ b/submodules/AccountContext/Sources/AccountContext.swift @@ -736,6 +736,7 @@ public protocol AccountContext: class { func chatLocationOutgoingReadState(for location: ChatLocation, contextHolder: Atomic) -> Signal func applyMaxReadIndex(for location: ChatLocation, contextHolder: Atomic, messageIndex: MessageIndex) + func scheduleGroupCall(peerId: PeerId) func joinGroupCall(peerId: PeerId, invite: String?, requestJoinAsPeerId: ((@escaping (PeerId?) -> Void) -> Void)?, activeCall: CachedChannelData.ActiveCall) func requestCall(peerId: PeerId, isVideo: Bool, completion: @escaping () -> Void) } diff --git a/submodules/AccountContext/Sources/PresentationCallManager.swift b/submodules/AccountContext/Sources/PresentationCallManager.swift index f27b559e4f..380d275cfe 100644 --- a/submodules/AccountContext/Sources/PresentationCallManager.swift +++ b/submodules/AccountContext/Sources/PresentationCallManager.swift @@ -17,6 +17,11 @@ public enum JoinGroupCallManagerResult { case alreadyInProgress(PeerId?) } +public enum RequestScheduleGroupCallResult { + case success + case alreadyInProgress(PeerId?) +} + public struct CallAuxiliaryServer { public enum Connection { case stun @@ -181,6 +186,7 @@ public struct PresentationGroupCallState: Equatable { public var recordingStartTimestamp: Int32? public var title: String? public var raisedHand: Bool + public var scheduleTimestamp: Int32? public init( myPeerId: PeerId, @@ -191,7 +197,8 @@ public struct PresentationGroupCallState: Equatable { defaultParticipantMuteState: DefaultParticipantMuteState?, recordingStartTimestamp: Int32?, title: String?, - raisedHand: Bool + raisedHand: Bool, + scheduleTimestamp: Int32? ) { self.myPeerId = myPeerId self.networkState = networkState @@ -202,6 +209,7 @@ public struct PresentationGroupCallState: Equatable { self.recordingStartTimestamp = recordingStartTimestamp self.title = title self.raisedHand = raisedHand + self.scheduleTimestamp = scheduleTimestamp } } @@ -299,6 +307,8 @@ public protocol PresentationGroupCall: class { var isVideo: Bool { get } + var schedulePending: Bool { get } + var audioOutputState: Signal<([AudioSessionOutput], AudioSessionOutput?), NoError> { get } var canBeRemoved: Signal { get } @@ -313,6 +323,9 @@ public protocol PresentationGroupCall: class { var memberEvents: Signal { get } var reconnectedAsEvents: Signal { get } + func schedule(timestamp: Int32) + func startScheduled() + func reconnect(with invite: String) func reconnect(as peerId: PeerId) func leave(terminateIfPossible: Bool) -> Signal @@ -355,4 +368,5 @@ public protocol PresentationCallManager: class { func requestCall(context: AccountContext, peerId: PeerId, isVideo: Bool, endCurrentIfAny: Bool) -> RequestCallResult func joinGroupCall(context: AccountContext, peerId: PeerId, invite: String?, requestJoinAsPeerId: ((@escaping (PeerId?) -> Void) -> Void)?, initialCall: CachedChannelData.ActiveCall, endCurrentIfAny: Bool) -> JoinGroupCallManagerResult + func scheduleGroupCall(context: AccountContext, peerId: PeerId, endCurrentIfAny: Bool) -> RequestScheduleGroupCallResult } diff --git a/submodules/ChatListUI/Sources/Node/ChatListItem.swift b/submodules/ChatListUI/Sources/Node/ChatListItem.swift index 51eef18469..5a6f282b89 100644 --- a/submodules/ChatListUI/Sources/Node/ChatListItem.swift +++ b/submodules/ChatListUI/Sources/Node/ChatListItem.swift @@ -518,7 +518,7 @@ class ChatListItemNode: ItemListRevealOptionsItemNode { } else { result += item.presentationData.strings.VoiceOver_ChatList_OutgoingMessage } - let (_, initialHideAuthor, messageText) = chatListItemStrings(strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, messages: messages, chatPeer: peer, accountPeerId: item.context.account.peerId, isPeerGroup: false) + let (_, initialHideAuthor, messageText) = chatListItemStrings(strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, dateTimeFormat: item.presentationData.dateTimeFormat, messages: messages, chatPeer: peer, accountPeerId: item.context.account.peerId, isPeerGroup: false) if message.flags.contains(.Incoming), !initialHideAuthor, let author = message.author, author is TelegramUser { result += "\n\(item.presentationData.strings.VoiceOver_ChatList_MessageFrom(author.displayTitle(strings: item.presentationData.strings, displayOrder: item.presentationData.nameDisplayOrder)).0)" } @@ -552,7 +552,7 @@ class ChatListItemNode: ItemListRevealOptionsItemNode { } else { result += item.presentationData.strings.VoiceOver_ChatList_OutgoingMessage } - let (_, initialHideAuthor, messageText) = chatListItemStrings(strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, messages: messages, chatPeer: peer, accountPeerId: item.context.account.peerId, isPeerGroup: false) + let (_, initialHideAuthor, messageText) = chatListItemStrings(strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, dateTimeFormat: item.presentationData.dateTimeFormat, messages: messages, chatPeer: peer, accountPeerId: item.context.account.peerId, isPeerGroup: false) if message.flags.contains(.Incoming), !initialHideAuthor, let author = message.author, author is TelegramUser { result += "\n\(item.presentationData.strings.VoiceOver_ChatList_MessageFrom(author.displayTitle(strings: item.presentationData.strings, displayOrder: item.presentationData.nameDisplayOrder)).0)" } @@ -958,7 +958,7 @@ class ChatListItemNode: ItemListRevealOptionsItemNode { var hideAuthor = false switch contentPeer { case let .chat(itemPeer): - var (peer, initialHideAuthor, messageText) = chatListItemStrings(strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, messages: messages, chatPeer: itemPeer, accountPeerId: item.context.account.peerId, enableMediaEmoji: !enableChatListPhotos, isPeerGroup: isPeerGroup) + var (peer, initialHideAuthor, messageText) = chatListItemStrings(strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, dateTimeFormat: item.presentationData.dateTimeFormat, messages: messages, chatPeer: itemPeer, accountPeerId: item.context.account.peerId, enableMediaEmoji: !enableChatListPhotos, isPeerGroup: isPeerGroup) if case let .psa(_, maybePsaText) = promoInfo, let psaText = maybePsaText { initialHideAuthor = true diff --git a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift index f30ee72089..c7e3c3b503 100644 --- a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift +++ b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift @@ -46,7 +46,7 @@ private func messageGroupType(messages: [Message]) -> MessageGroupType { return currentType } -public func chatListItemStrings(strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, messages: [Message], chatPeer: RenderedPeer, accountPeerId: PeerId, enableMediaEmoji: Bool = true, isPeerGroup: Bool = false) -> (peer: Peer?, hideAuthor: Bool, messageText: String) { +public func chatListItemStrings(strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, dateTimeFormat: PresentationDateTimeFormat, messages: [Message], chatPeer: RenderedPeer, accountPeerId: PeerId, enableMediaEmoji: Bool = true, isPeerGroup: Bool = false) -> (peer: Peer?, hideAuthor: Bool, messageText: String) { let peer: Peer? let message = messages.last @@ -262,12 +262,12 @@ public func chatListItemStrings(strings: PresentationStrings, nameDisplayOrder: } default: hideAuthor = true - if let text = plainServiceMessageString(strings: strings, nameDisplayOrder: nameDisplayOrder, message: message, accountPeerId: accountPeerId, forChatList: true) { + if let text = plainServiceMessageString(strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat, message: message, accountPeerId: accountPeerId, forChatList: true) { messageText = text } } case _ as TelegramMediaExpiredContent: - if let text = plainServiceMessageString(strings: strings, nameDisplayOrder: nameDisplayOrder, message: message, accountPeerId: accountPeerId, forChatList: true) { + if let text = plainServiceMessageString(strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat, message: message, accountPeerId: accountPeerId, forChatList: true) { messageText = text } case let poll as TelegramMediaPoll: diff --git a/submodules/ContextUI/Sources/ContextActionsContainerNode.swift b/submodules/ContextUI/Sources/ContextActionsContainerNode.swift index 70837d63f4..c09c105d8c 100644 --- a/submodules/ContextUI/Sources/ContextActionsContainerNode.swift +++ b/submodules/ContextUI/Sources/ContextActionsContainerNode.swift @@ -569,12 +569,15 @@ final class ContextActionsContainerNode: ASDisplayNode { } func animateOut(offset: CGFloat, transition: ContainedViewLayoutTransition) { - guard let additionalActionsNode = self.additionalActionsNode else { + guard let additionalActionsNode = self.additionalActionsNode, let additionalShadowNode = self.additionalShadowNode else { return } transition.animatePosition(node: additionalActionsNode, to: CGPoint(x: 0.0, y: offset / 2.0), additive: true) + transition.animatePosition(node: additionalShadowNode, to: CGPoint(x: 0.0, y: offset / 2.0), additive: true) additionalActionsNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false) + additionalShadowNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false) additionalActionsNode.layer.animateScale(from: 1.0, to: 0.75, duration: 0.15, removeOnCompletion: false) + additionalShadowNode.layer.animateScale(from: 1.0, to: 0.75, duration: 0.15, removeOnCompletion: false) } } diff --git a/submodules/ContextUI/Sources/ContextController.swift b/submodules/ContextUI/Sources/ContextController.swift index 865b6613e9..a31f2f4d01 100644 --- a/submodules/ContextUI/Sources/ContextController.swift +++ b/submodules/ContextUI/Sources/ContextController.swift @@ -1561,11 +1561,10 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi } } } - - + if let previousActionsContainerNode = previousActionsContainerNode { if transition.isAnimated { - if previousActionsContainerNode.hasAdditionalActions && !self.actionsContainerNode.hasAdditionalActions { + if previousActionsContainerNode.hasAdditionalActions && !self.actionsContainerNode.hasAdditionalActions && self.getController()?.useComplexItemsTransitionAnimation == true { var initialFrame = self.actionsContainerNode.frame let delta = (previousActionsContainerNode.frame.height - self.actionsContainerNode.frame.height) initialFrame.origin.y = self.actionsContainerNode.frame.minY + previousActionsContainerNode.frame.height - self.actionsContainerNode.frame.height @@ -1773,6 +1772,8 @@ public final class ContextController: ViewController, StandalonePresentableContr public var reactionSelected: ((ReactionContextItem.Reaction) -> Void)? public var dismissed: (() -> Void)? + public var useComplexItemsTransitionAnimation = false + private var shouldBeDismissedDisposable: Disposable? public init(account: Account, presentationData: PresentationData, source: ContextContentSource, items: Signal<[ContextMenuItem], NoError>, reactionItems: [ReactionContextItem], recognizer: TapLongTapOrDoubleTapGestureRecognizer? = nil, gesture: ContextGesture? = nil, displayTextSelectionTip: Bool = false) { diff --git a/submodules/Display/Source/GenerateImage.swift b/submodules/Display/Source/GenerateImage.swift index e2d8433351..9468cbe92d 100644 --- a/submodules/Display/Source/GenerateImage.swift +++ b/submodules/Display/Source/GenerateImage.swift @@ -383,7 +383,12 @@ public func generateGradientTintedImage(image: UIImage?, colors: [UIColor]) -> U return tintedImage } -public func generateGradientImage(size: CGSize, colors: [UIColor], locations: [CGFloat]) -> UIImage? { +public enum GradientImageDirection { + case vertical + case horizontal +} + +public func generateGradientImage(size: CGSize, colors: [UIColor], locations: [CGFloat], direction: GradientImageDirection = .vertical) -> UIImage? { guard colors.count == locations.count else { return nil } @@ -395,7 +400,7 @@ public func generateGradientImage(size: CGSize, colors: [UIColor], locations: [C var locations = locations let gradient = CGGradient(colorsSpace: colorSpace, colors: gradientColors, locations: &locations)! - context.drawLinearGradient(gradient, start: CGPoint(x: 0.0, y: 0.0), end: CGPoint(x: 0.0, y: size.height), options: CGGradientDrawingOptions()) + context.drawLinearGradient(gradient, start: CGPoint(x: 0.0, y: 0.0), end: direction == .horizontal ? CGPoint(x: size.width, y: 0.0) : CGPoint(x: 0.0, y: size.height), options: CGGradientDrawingOptions()) } let image = UIGraphicsGetImageFromCurrentImageContext()! diff --git a/submodules/GalleryUI/Sources/ChatItemGalleryFooterContentNode.swift b/submodules/GalleryUI/Sources/ChatItemGalleryFooterContentNode.swift index a32fd16150..46fdf27b98 100644 --- a/submodules/GalleryUI/Sources/ChatItemGalleryFooterContentNode.swift +++ b/submodules/GalleryUI/Sources/ChatItemGalleryFooterContentNode.swift @@ -907,7 +907,7 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode, UIScroll var generalMessageContentKind: MessageContentKind? for message in messages { - let currentKind = messageContentKind(contentSettings: strongSelf.context.currentContentSettings.with { $0 }, message: message, strings: presentationData.strings, nameDisplayOrder: presentationData.nameDisplayOrder, accountPeerId: strongSelf.context.account.peerId) + let currentKind = messageContentKind(contentSettings: strongSelf.context.currentContentSettings.with { $0 }, message: message, strings: presentationData.strings, nameDisplayOrder: presentationData.nameDisplayOrder, dateTimeFormat: presentationData.dateTimeFormat, accountPeerId: strongSelf.context.account.peerId) if generalMessageContentKind == nil || generalMessageContentKind == currentKind { generalMessageContentKind = currentKind } else { @@ -1056,7 +1056,7 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode, UIScroll var messageContentKinds = Set() for message in messages { - let currentKind = messageContentKind(contentSettings: strongSelf.context.currentContentSettings.with { $0 }, message: message, strings: presentationData.strings, nameDisplayOrder: presentationData.nameDisplayOrder, accountPeerId: strongSelf.context.account.peerId) + let currentKind = messageContentKind(contentSettings: strongSelf.context.currentContentSettings.with { $0 }, message: message, strings: presentationData.strings, nameDisplayOrder: presentationData.nameDisplayOrder, dateTimeFormat: presentationData.dateTimeFormat, accountPeerId: strongSelf.context.account.peerId) if beganContentKindScanning && currentKind != generalMessageContentKind { generalMessageContentKind = nil } else if !beganContentKindScanning || currentKind == generalMessageContentKind { diff --git a/submodules/ManagedAnimationNode/Sources/ManagedAnimationNode.swift b/submodules/ManagedAnimationNode/Sources/ManagedAnimationNode.swift index d42228667f..9e4a89025a 100644 --- a/submodules/ManagedAnimationNode/Sources/ManagedAnimationNode.swift +++ b/submodules/ManagedAnimationNode/Sources/ManagedAnimationNode.swift @@ -145,6 +145,12 @@ open class ManagedAnimationNode: ASDisplayNode { } } + public var scale: CGFloat = 1.0 { + didSet { + self.imageNode.transform = CATransform3DMakeScale(self.scale, self.scale, 1.0) + } + } + public init(size: CGSize) { self.intrinsicSize = size @@ -286,4 +292,11 @@ open class ManagedAnimationNode: ASDisplayNode { self.didTryAdvancingState = false self.updateAnimation() } + + open override func layout() { + super.layout() + + self.imageNode.bounds = self.bounds + self.imageNode.position = CGPoint(x: self.bounds.width / 2.0, y: self.bounds.height / 2.0) + } } diff --git a/submodules/SettingsUI/Sources/ChangePhoneNumberController.swift b/submodules/SettingsUI/Sources/ChangePhoneNumberController.swift index 6aa1ab0183..3e25abcabf 100644 --- a/submodules/SettingsUI/Sources/ChangePhoneNumberController.swift +++ b/submodules/SettingsUI/Sources/ChangePhoneNumberController.swift @@ -135,19 +135,21 @@ final class ChangePhoneNumberController: ViewController, MFMailComposeViewContro let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 } let text: String - var actions: [TextAlertAction] = [ - TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {}) - ] + var actions: [TextAlertAction] = [] switch error { case .limitExceeded: text = presentationData.strings.Login_CodeFloodError + actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) case .invalidPhoneNumber: text = presentationData.strings.Login_InvalidPhoneError + actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) case .phoneNumberOccupied: text = presentationData.strings.ChangePhone_ErrorOccupied(formatPhoneNumber(phoneNumber)).0 + actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) case .phoneBanned: text = presentationData.strings.Login_PhoneBannedError - actions.append(TextAlertAction(type: .defaultAction, title: presentationData.strings.Login_PhoneNumberHelp, action: { [weak self] in + actions.append(TextAlertAction(type: .genericAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) + actions.append(TextAlertAction(type: .genericAction, title: presentationData.strings.Login_PhoneNumberHelp, action: { [weak self] in guard let strongSelf = self else { return } @@ -162,6 +164,7 @@ final class ChangePhoneNumberController: ViewController, MFMailComposeViewContro })) case .generic: text = presentationData.strings.Login_UnknownError + actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) } strongSelf.present(textAlertController(context: strongSelf.context, title: nil, text: text, actions: actions), in: .window(.root)) diff --git a/submodules/SolidRoundedButtonNode/Sources/SolidRoundedButtonNode.swift b/submodules/SolidRoundedButtonNode/Sources/SolidRoundedButtonNode.swift index f25d6743ea..2f63f71b6f 100644 --- a/submodules/SolidRoundedButtonNode/Sources/SolidRoundedButtonNode.swift +++ b/submodules/SolidRoundedButtonNode/Sources/SolidRoundedButtonNode.swift @@ -3,8 +3,6 @@ import UIKit import AsyncDisplayKit import Display -private let textFont: UIFont = Font.regular(16.0) - public final class SolidRoundedButtonTheme { public let backgroundColor: UIColor public let foregroundColor: UIColor diff --git a/submodules/StatisticsUI/Sources/StatsMessageItem.swift b/submodules/StatisticsUI/Sources/StatsMessageItem.swift index 0851a6a5e8..c097cecdb8 100644 --- a/submodules/StatisticsUI/Sources/StatsMessageItem.swift +++ b/submodules/StatisticsUI/Sources/StatsMessageItem.swift @@ -241,7 +241,8 @@ public class StatsMessageItemNode: ListViewItemNode, ItemListItemNode { let titleFont = Font.regular(item.presentationData.fontSize.itemListBaseFontSize) - let contentKind = messageContentKind(contentSettings: item.context.currentContentSettings.with { $0 }, message: item.message, strings: item.presentationData.strings, nameDisplayOrder: .firstLast, accountPeerId: item.context.account.peerId) + let presentationData = item.context.sharedContext.currentPresentationData.with { $0 } + let contentKind = messageContentKind(contentSettings: item.context.currentContentSettings.with { $0 }, message: item.message, strings: item.presentationData.strings, nameDisplayOrder: .firstLast, dateTimeFormat: presentationData.dateTimeFormat, accountPeerId: item.context.account.peerId) var text = !item.message.text.isEmpty ? item.message.text : stringForMediaKind(contentKind, strings: item.presentationData.strings).0 text = foldLineBreaks(text) @@ -288,7 +289,6 @@ public class StatsMessageItemNode: ListViewItemNode, ItemListItemNode { let labelFont = Font.regular(floor(item.presentationData.fontSize.itemListBaseFontSize * 13.0 / 17.0)) - let presentationData = item.context.sharedContext.currentPresentationData.with { $0 } let label = stringForFullDate(timestamp: item.message.timestamp, strings: item.presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat) let (labelLayout, labelApply) = makeLabelLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: label, font: labelFont, textColor: item.presentationData.theme.list.itemSecondaryTextColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: params.width - totalLeftInset - rightInset - additionalRightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) diff --git a/submodules/TelegramBaseController/Sources/TelegramBaseController.swift b/submodules/TelegramBaseController/Sources/TelegramBaseController.swift index 534023efba..18b8202cc9 100644 --- a/submodules/TelegramBaseController/Sources/TelegramBaseController.swift +++ b/submodules/TelegramBaseController/Sources/TelegramBaseController.swift @@ -333,7 +333,7 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { if previousCurrentGroupCall != nil && currentGroupCall == nil && availableState?.participantCount == 1 { panelData = nil } else { - panelData = currentGroupCall != nil || availableState?.participantCount == 0 ? nil : availableState + panelData = currentGroupCall != nil || (availableState?.participantCount == 0 && availableState?.info.scheduleTimestamp == nil) ? nil : availableState } let wasEmpty = strongSelf.groupCallPanelData == nil @@ -406,7 +406,7 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { strongSelf.joinGroupCall( peerId: groupCallPanelData.peerId, invite: nil, - activeCall: CachedChannelData.ActiveCall(id: groupCallPanelData.info.id, accessHash: groupCallPanelData.info.accessHash, title: groupCallPanelData.info.title) + activeCall: CachedChannelData.ActiveCall(id: groupCallPanelData.info.id, accessHash: groupCallPanelData.info.accessHash, title: groupCallPanelData.info.title, scheduleTimestamp: groupCallPanelData.info.scheduleTimestamp, subscribed: false) ) }) if let navigationBar = self.navigationBar { diff --git a/submodules/TelegramCallsUI/Sources/CallControllerButton.swift b/submodules/TelegramCallsUI/Sources/CallControllerButton.swift index 77ce6f1627..2f80b15fc1 100644 --- a/submodules/TelegramCallsUI/Sources/CallControllerButton.swift +++ b/submodules/TelegramCallsUI/Sources/CallControllerButton.swift @@ -41,6 +41,7 @@ final class CallControllerButtonItemNode: HighlightTrackingButtonNode { case accept case end case cancel + case share } var appearance: Appearance @@ -254,6 +255,8 @@ final class CallControllerButtonItemNode: HighlightTrackingButtonNode { context.addLine(to: CGPoint(x: 2.0 + UIScreenPixel, y: 26.0 - UIScreenPixel)) context.strokePath() }) + case .share: + image = generateTintedImage(image: UIImage(bundleImageName: "Call/CallShareButton"), color: imageColor) } if let image = image { diff --git a/submodules/TelegramCallsUI/Sources/CallStatusBarNode.swift b/submodules/TelegramCallsUI/Sources/CallStatusBarNode.swift index 5dbf6ecaf4..31ec30ae15 100644 --- a/submodules/TelegramCallsUI/Sources/CallStatusBarNode.swift +++ b/submodules/TelegramCallsUI/Sources/CallStatusBarNode.swift @@ -15,11 +15,20 @@ private let blue = UIColor(rgb: 0x0078ff) private let lightBlue = UIColor(rgb: 0x59c7f8) private let green = UIColor(rgb: 0x33c659) private let activeBlue = UIColor(rgb: 0x00a0b9) +private let purple = UIColor(rgb: 0x3252ef) +private let pink = UIColor(rgb: 0xef436c) private class CallStatusBarBackgroundNode: ASDisplayNode { + enum State { + case connecting + case cantSpeak + case active + case speaking + } private let foregroundView: UIView private let foregroundGradientLayer: CAGradientLayer private let maskCurveView: VoiceCurveView + private let initialTimestamp = CACurrentMediaTime() var audioLevel: Float = 0.0 { didSet { @@ -35,9 +44,9 @@ private class CallStatusBarBackgroundNode: ASDisplayNode { } } - var speaking: Bool? = nil { + var state: State = .connecting { didSet { - if self.speaking != oldValue { + if self.state != oldValue { self.updateGradientColors() } } @@ -46,13 +55,26 @@ private class CallStatusBarBackgroundNode: ASDisplayNode { private func updateGradientColors() { let initialColors = self.foregroundGradientLayer.colors let targetColors: [CGColor] - if let speaking = self.speaking { - targetColors = speaking ? [green.cgColor, activeBlue.cgColor] : [blue.cgColor, lightBlue.cgColor] - } else { - targetColors = [connectingColor.cgColor, connectingColor.cgColor] + switch self.state { + case .connecting: + targetColors = [connectingColor.cgColor, connectingColor.cgColor] + case .active: + targetColors = [blue.cgColor, lightBlue.cgColor] + case .speaking: + targetColors = [green.cgColor, activeBlue.cgColor] + case .cantSpeak: + targetColors = [purple.cgColor, pink.cgColor] + } + + if CACurrentMediaTime() - self.initialTimestamp > 0.1 { + self.foregroundGradientLayer.colors = targetColors + self.foregroundGradientLayer.animate(from: initialColors as AnyObject, to: targetColors as AnyObject, keyPath: "colors", timingFunction: CAMediaTimingFunctionName.linear.rawValue, duration: 0.3) + } else { + CATransaction.begin() + CATransaction.setDisableActions(true) + self.foregroundGradientLayer.colors = targetColors + CATransaction.commit() } - self.foregroundGradientLayer.colors = targetColors - self.foregroundGradientLayer.animate(from: initialColors as AnyObject, to: targetColors as AnyObject, keyPath: "colors", timingFunction: CAMediaTimingFunctionName.linear.rawValue, duration: 0.3) } private let hierarchyTrackingNode: HierarchyTrackingNode @@ -177,6 +199,7 @@ public class CallStatusBarNodeImpl: CallStatusBarNode { private var currentCallState: PresentationCallState? private var currentGroupCallState: PresentationGroupCallSummaryState? private var currentIsMuted = true + private var currentCantSpeak = false private var currentMembers: PresentationGroupCallMembers? private var currentIsConnected = true @@ -279,16 +302,24 @@ public class CallStatusBarNodeImpl: CallStatusBarNode { strongSelf.currentMembers = members var isMuted = isMuted + var cantSpeak = false if let state = state, let muteState = state.callState.muteState { if !muteState.canUnmute { isMuted = true + cantSpeak = true } } + if state?.callState.scheduleTimestamp != nil { + cantSpeak = true + } strongSelf.currentIsMuted = isMuted + strongSelf.currentCantSpeak = cantSpeak let currentIsConnected: Bool if let state = state, case .connected = state.callState.networkState { currentIsConnected = true + } else if state?.callState.scheduleTimestamp != nil { + currentIsConnected = true } else { currentIsConnected = false } @@ -439,7 +470,19 @@ public class CallStatusBarNodeImpl: CallStatusBarNode { self.speakerNode.frame = CGRect(origin: CGPoint(x: horizontalOrigin + titleSize.width + spacing, y: verticalOrigin + floor((contentHeight - speakerSize.height) / 2.0)), size: speakerSize) } - self.backgroundNode.speaking = self.currentIsConnected ? !self.currentIsMuted : nil + let state: CallStatusBarBackgroundNode.State + if self.currentIsConnected { + if self.currentCantSpeak { + state = .cantSpeak + } else if self.currentIsMuted { + state = .active + } else { + state = .speaking + } + } else { + state = .connecting + } + self.backgroundNode.state = state self.backgroundNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: size.width, height: size.height + 18.0)) } } diff --git a/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift b/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift index e49dc24222..c26f008d51 100644 --- a/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift +++ b/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift @@ -7,12 +7,29 @@ import SyncCore import Postbox import TelegramPresentationData import TelegramUIPreferences +import TelegramStringFormatting import AccountContext import AppBundle import SwiftSignalKit import AnimatedAvatarSetNode import AudioBlob +func textForTimeout(value: Int32) -> String { + if value < 3600 { + let minutes = value / 60 + let seconds = value % 60 + let secondsPadding = seconds < 10 ? "0" : "" + return "\(minutes):\(secondsPadding)\(seconds)" + } else { + let hours = value / 3600 + let minutes = (value % 3600) / 60 + let minutesPadding = minutes < 10 ? "0" : "" + let seconds = value % 60 + let secondsPadding = seconds < 10 ? "0" : "" + return "\(hours):\(minutesPadding)\(minutes):\(secondsPadding)\(seconds)" + } +} + private let titleFont = Font.semibold(15.0) private let subtitleFont = Font.regular(13.0) @@ -79,6 +96,7 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { private let context: AccountContext private var theme: PresentationTheme private var strings: PresentationStrings + private var dateTimeFormat: PresentationDateTimeFormat private let tapAction: () -> Void @@ -102,6 +120,10 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { private var textIsActive = false private let muteIconNode: ASImageNode + private var isScheduled = false + private var currentText: String = "" + private var updateTimer: SwiftSignalKit.Timer? + private let avatarsContext: AnimatedAvatarSetContext private var avatarsContent: AnimatedAvatarSetContext.Content? private let avatarsNode: AnimatedAvatarSetNode @@ -125,6 +147,7 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { self.context = context self.theme = presentationData.theme self.strings = presentationData.strings + self.dateTimeFormat = presentationData.dateTimeFormat self.tapAction = tapAction @@ -135,6 +158,9 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { self.joinButton = HighlightableButtonNode() self.joinButtonTitleNode = ImmediateTextNode() self.joinButtonBackgroundNode = ASImageNode() + self.joinButtonBackgroundNode.clipsToBounds = true + self.joinButtonBackgroundNode.displaysAsynchronously = false + self.joinButtonBackgroundNode.cornerRadius = 14.0 self.micButton = HighlightTrackingButtonNode() self.micButtonForegroundNode = VoiceChatMicrophoneNode() @@ -198,6 +224,7 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { self.membersDisposable.dispose() self.isMutedDisposable.dispose() self.audioLevelGeneratorTimer?.invalidate() + self.updateTimer?.invalidate() } public override func didLoad() { @@ -250,6 +277,7 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { public func updatePresentationData(_ presentationData: PresentationData) { self.theme = presentationData.theme self.strings = presentationData.strings + self.dateTimeFormat = presentationData.dateTimeFormat self.contentNode.backgroundColor = self.theme.rootController.navigationBar.backgroundColor @@ -257,18 +285,31 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { self.separatorNode.backgroundColor = presentationData.theme.chat.historyNavigation.strokeColor - self.joinButtonTitleNode.attributedText = NSAttributedString(string: presentationData.strings.VoiceChat_PanelJoin.uppercased(), font: Font.semibold(15.0), textColor: presentationData.theme.chat.inputPanel.actionControlForegroundColor) - self.joinButtonBackgroundNode.image = generateStretchableFilledCircleImage(diameter: 28.0, color: presentationData.theme.chat.inputPanel.actionControlFillColor) - + self.joinButtonTitleNode.attributedText = NSAttributedString(string: self.joinButtonTitleNode.attributedText?.string ?? "", font: Font.with(size: 15.0, design: .round, weight: .semibold, traits: [.monospacedNumbers]), textColor: presentationData.theme.chat.inputPanel.actionControlForegroundColor) + self.textNode.attributedText = NSAttributedString(string: self.textNode.attributedText?.string ?? "", font: Font.regular(13.0), textColor: presentationData.theme.chat.inputPanel.secondaryTextColor) self.muteIconNode.image = PresentationResourcesChat.chatTitleMuteIcon(presentationData.theme) + self.updateJoinButton() + if let (size, leftInset, rightInset) = self.validLayout { self.updateLayout(size: size, leftInset: leftInset, rightInset: rightInset, transition: .immediate) } } + private func updateJoinButton() { + if self.isScheduled { + let purple = UIColor(rgb: 0x3252ef) + let pink = UIColor(rgb: 0xef436c) + self.joinButtonBackgroundNode.image = generateGradientImage(size: CGSize(width: 100.0, height: 1.0), colors: [purple, pink], locations: [0.0, 1.0], direction: .horizontal) + self.joinButtonBackgroundNode.backgroundColor = nil + } else { + self.joinButtonBackgroundNode.image = nil + self.joinButtonBackgroundNode.backgroundColor = self.theme.chat.inputPanel.actionControlFillColor + } + } + private func animateTextChange() { if let snapshotView = self.textNode.view.snapshotContentTree() { let offset: CGFloat = self.textIsActive ? -7.0 : 7.0 @@ -298,6 +339,7 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { } else { membersText = self.strings.VoiceChat_Panel_Members(Int32(data.participantCount)) } + self.currentText = membersText self.avatarsContent = self.avatarsContext.update(peers: data.topParticipants.map { $0.peer }, animated: false) @@ -321,9 +363,8 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { } else { membersText = strongSelf.strings.VoiceChat_Panel_Members(Int32(summaryState.participantCount)) } - - strongSelf.textNode.attributedText = NSAttributedString(string: membersText, font: Font.regular(13.0), textColor: strongSelf.theme.chat.inputPanel.secondaryTextColor) - + strongSelf.currentText = membersText + strongSelf.avatarsContent = strongSelf.avatarsContext.update(peers: summaryState.topParticipants.map { $0.peer }, animated: false) if let (size, leftInset, rightInset) = strongSelf.validLayout { @@ -382,7 +423,6 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { strongSelf.micButton.view.insertSubview(audioLevelView, at: 0) } - let level = min(1.0, max(0.0, CGFloat(value))) strongSelf.audioLevelView?.updateLevel(CGFloat(value) * 2.0) if value > 0.0 { strongSelf.audioLevelView?.startAnimating() @@ -400,9 +440,8 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { } else { membersText = self.strings.VoiceChat_Panel_Members(Int32(data.participantCount)) } + self.currentText = membersText - self.textNode.attributedText = NSAttributedString(string: membersText, font: Font.regular(13.0), textColor: self.theme.chat.inputPanel.secondaryTextColor) - self.avatarsContent = self.avatarsContext.update(peers: data.topParticipants.map { $0.peer }, animated: false) updateAudioLevels = true @@ -466,6 +505,57 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { transition.updateFrame(node: self.avatarsNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - avatarsSize.width) / 2.0), y: floor((size.height - avatarsSize.height) / 2.0)), size: avatarsSize)) } + var joinText = self.strings.VoiceChat_PanelJoin.uppercased() + var title = self.strings.VoiceChat_Title + var text = self.currentText + var isScheduled = false + if let scheduleTime = self.currentData?.info.scheduleTimestamp { + isScheduled = true + let timeString = humanReadableStringForTimestamp(strings: self.strings, dateTimeFormat: self.dateTimeFormat, timestamp: scheduleTime) + if let voiceChatTitle = self.currentData?.info.title { + title = voiceChatTitle + text = self.strings.Conversation_ScheduledVoiceChatStartsOn(timeString).0 + } else { + title = self.strings.Conversation_ScheduledVoiceChat + text = self.strings.Conversation_ScheduledVoiceChatStartsOnShort(timeString).0 + } + + let currentTime = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970) + let elapsedTime = scheduleTime - currentTime + if elapsedTime >= 86400 { + joinText = timeIntervalString(strings: strings, value: elapsedTime) + } else if elapsedTime < 0 { + joinText = "+\(textForTimeout(value: abs(elapsedTime)))" + } else { + joinText = textForTimeout(value: elapsedTime) + } + + if self.updateTimer == nil { + let timer = SwiftSignalKit.Timer(timeout: 0.5, repeat: true, completion: { [weak self] in + if let strongSelf = self, let (size, leftInset, rightInset) = strongSelf.validLayout { + strongSelf.updateLayout(size: size, leftInset: leftInset, rightInset: rightInset, transition: .immediate) + } + }, queue: Queue.mainQueue()) + self.updateTimer = timer + timer.start() + } + } else { + if let timer = self.updateTimer { + self.updateTimer = nil + timer.invalidate() + } + if let voiceChatTitle = self.currentData?.info.title, voiceChatTitle.count < 15 { + title = voiceChatTitle + } + } + + if self.isScheduled != isScheduled { + self.isScheduled = isScheduled + self.updateJoinButton() + } + + self.joinButtonTitleNode.attributedText = NSAttributedString(string: joinText, font: Font.with(size: 15.0, design: .round, weight: .semibold, traits: [.monospacedNumbers]), textColor: self.theme.chat.inputPanel.actionControlForegroundColor) + let joinButtonTitleSize = self.joinButtonTitleNode.updateLayout(CGSize(width: 150.0, height: .greatestFiniteMagnitude)) let joinButtonSize = CGSize(width: joinButtonTitleSize.width + 20.0, height: 28.0) let joinButtonFrame = CGRect(origin: CGPoint(x: size.width - rightInset - 7.0 - joinButtonSize.width, y: floor((panelHeight - joinButtonSize.height) / 2.0)), size: joinButtonSize) @@ -500,15 +590,17 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { self.micButtonBackgroundNode.image = updatedImage } } - - var title = self.strings.VoiceChat_Title - if let voiceChatTitle = self.currentData?.info.title, voiceChatTitle.count < 15 { - title = voiceChatTitle - } - + self.titleNode.attributedText = NSAttributedString(string: title, font: Font.semibold(15.0), textColor: self.theme.chat.inputPanel.primaryTextColor) - let titleSize = self.titleNode.updateLayout(CGSize(width: size.width / 2.0 - 56.0, height: .greatestFiniteMagnitude)) + self.textNode.attributedText = NSAttributedString(string: text, font: Font.regular(13.0), textColor: self.theme.chat.inputPanel.secondaryTextColor) + + var constrainedWidth = size.width / 2.0 - 56.0 + if isScheduled { + constrainedWidth = size.width - 100.0 + } + + let titleSize = self.titleNode.updateLayout(CGSize(width: constrainedWidth, height: .greatestFiniteMagnitude)) let textSize = self.textNode.updateLayout(CGSize(width: size.width, height: .greatestFiniteMagnitude)) let titleFrame = CGRect(origin: CGPoint(x: leftInset + 16.0, y: 9.0), size: titleSize) diff --git a/submodules/TelegramCallsUI/Sources/PresentationCallManager.swift b/submodules/TelegramCallsUI/Sources/PresentationCallManager.swift index 08b27f546f..f0d671d9ca 100644 --- a/submodules/TelegramCallsUI/Sources/PresentationCallManager.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationCallManager.swift @@ -624,6 +624,113 @@ public final class PresentationCallManagerImpl: PresentationCallManager { } } + private func requestScheduleGroupCall(accountContext: AccountContext, peerId: PeerId, internalId: CallSessionInternalId = CallSessionInternalId()) -> Signal { + let (presentationData, present, openSettings) = self.getDeviceAccessData() + + let isVideo = false + + let accessEnabledSignal: Signal = Signal { subscriber in + DeviceAccess.authorizeAccess(to: .microphone(.voiceCall), presentationData: presentationData, present: { c, a in + present(c, a) + }, openSettings: { + openSettings() + }, { value in + if isVideo && value { + DeviceAccess.authorizeAccess(to: .camera(.videoCall), presentationData: presentationData, present: { c, a in + present(c, a) + }, openSettings: { + openSettings() + }, { value in + subscriber.putNext(value) + subscriber.putCompletion() + }) + } else { + subscriber.putNext(value) + subscriber.putCompletion() + } + }) + return EmptyDisposable + } + |> runOn(Queue.mainQueue()) + + return accessEnabledSignal + |> deliverOnMainQueue + |> mapToSignal { [weak self] accessEnabled -> Signal in + guard let strongSelf = self else { + return .single(false) + } + + if !accessEnabled { + return .single(false) + } + + let call = PresentationGroupCallImpl( + accountContext: accountContext, + audioSession: strongSelf.audioSession, + callKitIntegration: nil, + getDeviceAccessData: strongSelf.getDeviceAccessData, + initialCall: nil, + internalId: internalId, + peerId: peerId, + invite: nil, + joinAsPeerId: nil + ) + strongSelf.updateCurrentGroupCall(call) + strongSelf.currentGroupCallPromise.set(.single(call)) + strongSelf.hasActiveGroupCallsPromise.set(true) + strongSelf.removeCurrentGroupCallDisposable.set((call.canBeRemoved + |> filter { $0 } + |> take(1) + |> deliverOnMainQueue).start(next: { [weak call] value in + guard let strongSelf = self, let call = call else { + return + } + if value { + if strongSelf.currentGroupCall === call { + strongSelf.updateCurrentGroupCall(nil) + strongSelf.currentGroupCallPromise.set(.single(nil)) + strongSelf.hasActiveGroupCallsPromise.set(false) + } + } + })) + + return .single(true) + } + } + + public func scheduleGroupCall(context: AccountContext, peerId: PeerId, endCurrentIfAny: Bool) -> RequestScheduleGroupCallResult { + let begin: () -> Void = { [weak self] in + let _ = self?.requestScheduleGroupCall(accountContext: context, peerId: peerId).start() + } + + if let currentGroupCall = self.currentGroupCallValue { + if endCurrentIfAny { + let endSignal = currentGroupCall.leave(terminateIfPossible: false) + |> filter { $0 } + |> take(1) + |> deliverOnMainQueue + self.startCallDisposable.set(endSignal.start(next: { _ in + begin() + })) + } else { + return .alreadyInProgress(currentGroupCall.peerId) + } + } else if let currentCall = self.currentCall { + if endCurrentIfAny { + self.callKitIntegration?.dropCall(uuid: currentCall.internalId) + self.startCallDisposable.set((currentCall.hangUp() + |> deliverOnMainQueue).start(next: { _ in + begin() + })) + } else { + return .alreadyInProgress(currentCall.peerId) + } + } else { + begin() + } + return .success + } + public func joinGroupCall(context: AccountContext, peerId: PeerId, invite: String?, requestJoinAsPeerId: ((@escaping (PeerId?) -> Void) -> Void)?, initialCall: CachedChannelData.ActiveCall, endCurrentIfAny: Bool) -> JoinGroupCallManagerResult { let begin: () -> Void = { [weak self] in if let requestJoinAsPeerId = requestJoinAsPeerId { diff --git a/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift b/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift index 7e259cedc8..165b4b35e9 100644 --- a/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift @@ -77,6 +77,7 @@ public final class AccountGroupCallContextImpl: AccountGroupCallContext { clientParams: nil, streamDcId: nil, title: call.title, + scheduleTimestamp: call.scheduleTimestamp, recordingStartTimestamp: nil, sortAscending: true ), @@ -120,7 +121,7 @@ public final class AccountGroupCallContextImpl: AccountGroupCallContext { } return GroupCallPanelData( peerId: peerId, - info: GroupCallInfo(id: call.id, accessHash: call.accessHash, participantCount: state.totalCount, clientParams: nil, streamDcId: nil, title: state.title, recordingStartTimestamp: nil, sortAscending: state.sortAscending), + info: GroupCallInfo(id: call.id, accessHash: call.accessHash, participantCount: state.totalCount, clientParams: nil, streamDcId: nil, title: state.title, scheduleTimestamp: state.scheduleTimestamp, recordingStartTimestamp: nil, sortAscending: state.sortAscending), topParticipants: topParticipants, participantCount: state.totalCount, activeSpeakers: activeSpeakers, @@ -205,7 +206,7 @@ public final class AccountGroupCallContextCacheImpl: AccountGroupCallContextCach } private extension PresentationGroupCallState { - static func initialValue(myPeerId: PeerId, title: String?) -> PresentationGroupCallState { + static func initialValue(myPeerId: PeerId, title: String?, scheduleTimestamp: Int32?) -> PresentationGroupCallState { return PresentationGroupCallState( myPeerId: myPeerId, networkState: .connecting, @@ -215,7 +216,8 @@ private extension PresentationGroupCallState { defaultParticipantMuteState: nil, recordingStartTimestamp: nil, title: title, - raisedHand: false + raisedHand: false, + scheduleTimestamp: scheduleTimestamp ) } } @@ -508,6 +510,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { private let joinDisposable = MetaDisposable() private let requestDisposable = MetaDisposable() + private let startDisposable = MetaDisposable() private var groupCallParticipantUpdatesDisposable: Disposable? private let networkStateDisposable = MetaDisposable() @@ -550,6 +553,8 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { private var peerUpdatesSubscription: Disposable? + public private(set) var schedulePending = false + init( accountContext: AccountContext, audioSession: ManagedAudioSession, @@ -572,8 +577,9 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { self.peerId = peerId self.invite = invite self.joinAsPeerId = joinAsPeerId ?? accountContext.account.peerId + self.schedulePending = initialCall == nil - self.stateValue = PresentationGroupCallState.initialValue(myPeerId: self.joinAsPeerId, title: initialCall?.title) + self.stateValue = PresentationGroupCallState.initialValue(myPeerId: self.joinAsPeerId, title: initialCall?.title, scheduleTimestamp: initialCall?.scheduleTimestamp) self.statePromise = ValuePromise(self.stateValue) self.temporaryJoinTimestamp = Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970) @@ -761,7 +767,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { }) if let initialCall = initialCall, let temporaryParticipantsContext = (self.accountContext.cachedGroupCallContexts as? AccountGroupCallContextCacheImpl)?.impl.syncWith({ impl in - impl.get(account: accountContext.account, peerId: peerId, call: CachedChannelData.ActiveCall(id: initialCall.id, accessHash: initialCall.accessHash, title: initialCall.title)) + impl.get(account: accountContext.account, peerId: peerId, call: CachedChannelData.ActiveCall(id: initialCall.id, accessHash: initialCall.accessHash, title: initialCall.title, scheduleTimestamp: initialCall.scheduleTimestamp, subscribed: initialCall.subscribed)) }) { self.switchToTemporaryParticipantsContext(sourceContext: temporaryParticipantsContext.context.participantsContext, oldMyPeerId: self.joinAsPeerId) } else { @@ -805,7 +811,9 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { strongSelf.stateValue = updatedValue }) - self.requestCall(movingFromBroadcastToRtc: false) + if let _ = self.initialCall { + self.requestCall(movingFromBroadcastToRtc: false) + } } deinit { @@ -815,6 +823,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { self.audioSessionDisposable?.dispose() self.joinDisposable.dispose() self.requestDisposable.dispose() + self.startDisposable.dispose() self.groupCallParticipantUpdatesDisposable?.dispose() self.leaveDisposable.dispose() self.isMutedDisposable.dispose() @@ -1039,287 +1048,301 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { } } + var shouldJoin = false + let activeCallInfo: GroupCallInfo? switch previousInternalState { - case .active: - break - default: - if case let .active(callInfo) = internalState { - let callContext: OngoingGroupCallContext - if let current = self.callContext { - callContext = current + case let .active(previousCallInfo): + if case let .active(callInfo) = internalState { + shouldJoin = previousCallInfo.scheduleTimestamp != nil && callInfo.scheduleTimestamp == nil + activeCallInfo = callInfo } else { - var outgoingAudioBitrateKbit: Int32? - let appConfiguration = self.accountContext.currentAppConfiguration.with({ $0 }) - if let data = appConfiguration.data, let value = data["voice_chat_send_bitrate"] as? Int32 { - outgoingAudioBitrateKbit = value - } + activeCallInfo = nil + } + default: + if case let .active(callInfo) = internalState { + shouldJoin = callInfo.scheduleTimestamp == nil + activeCallInfo = callInfo + } else { + activeCallInfo = nil + } + } + + if shouldJoin, let callInfo = activeCallInfo { + let callContext: OngoingGroupCallContext + if let current = self.callContext { + callContext = current + } else { + var outgoingAudioBitrateKbit: Int32? + let appConfiguration = self.accountContext.currentAppConfiguration.with({ $0 }) + if let data = appConfiguration.data, let value = data["voice_chat_send_bitrate"] as? Int32 { + outgoingAudioBitrateKbit = value + } - callContext = OngoingGroupCallContext(video: self.videoCapturer, participantDescriptionsRequired: { [weak self] ssrcs in - Queue.mainQueue().async { - guard let strongSelf = self else { - return - } - strongSelf.maybeRequestParticipants(ssrcs: ssrcs) - } - }, audioStreamData: OngoingGroupCallContext.AudioStreamData(account: self.accountContext.account, callId: callInfo.id, accessHash: callInfo.accessHash), rejoinNeeded: { [weak self] in - Queue.mainQueue().async { - guard let strongSelf = self else { - return - } - if case .established = strongSelf.internalState { - strongSelf.requestCall(movingFromBroadcastToRtc: false) - } - } - }, outgoingAudioBitrateKbit: outgoingAudioBitrateKbit, enableVideo: self.isVideo) - self.incomingVideoSourcePromise.set(callContext.videoSources - |> deliverOnMainQueue - |> map { [weak self] sources -> [PeerId: UInt32] in + callContext = OngoingGroupCallContext(video: self.videoCapturer, participantDescriptionsRequired: { [weak self] ssrcs in + Queue.mainQueue().async { guard let strongSelf = self else { - return [:] + return } - var result: [PeerId: UInt32] = [:] - for source in sources { - if let peerId = strongSelf.ssrcMapping[source] { - result[peerId] = source + strongSelf.maybeRequestParticipants(ssrcs: ssrcs) + } + }, audioStreamData: OngoingGroupCallContext.AudioStreamData(account: self.accountContext.account, callId: callInfo.id, accessHash: callInfo.accessHash), rejoinNeeded: { [weak self] in + Queue.mainQueue().async { + guard let strongSelf = self else { + return + } + if case .established = strongSelf.internalState { + strongSelf.requestCall(movingFromBroadcastToRtc: false) + } + } + }, outgoingAudioBitrateKbit: outgoingAudioBitrateKbit, enableVideo: self.isVideo) + self.incomingVideoSourcePromise.set(callContext.videoSources + |> deliverOnMainQueue + |> map { [weak self] sources -> [PeerId: UInt32] in + guard let strongSelf = self else { + return [:] + } + var result: [PeerId: UInt32] = [:] + for source in sources { + if let peerId = strongSelf.ssrcMapping[source] { + result[peerId] = source + } + } + return result + }) + self.callContext = callContext + } + self.joinDisposable.set((callContext.joinPayload + |> distinctUntilChanged(isEqual: { lhs, rhs in + if lhs.0 != rhs.0 { + return false + } + if lhs.1 != rhs.1 { + return false + } + return true + }) + |> deliverOnMainQueue).start(next: { [weak self] joinPayload, ssrc in + guard let strongSelf = self else { + return + } + + let peerAdminIds: Signal<[PeerId], NoError> + let peerId = strongSelf.peerId + if strongSelf.peerId.namespace == Namespaces.Peer.CloudChannel { + peerAdminIds = Signal { subscriber in + let (disposable, _) = strongSelf.accountContext.peerChannelMemberCategoriesContextsManager.admins(postbox: strongSelf.accountContext.account.postbox, network: strongSelf.accountContext.account.network, accountPeerId: strongSelf.accountContext.account.peerId, peerId: peerId, updated: { list in + var peerIds = Set() + for item in list.list { + if let adminInfo = item.participant.adminInfo, adminInfo.rights.rights.contains(.canManageCalls) { + peerIds.insert(item.peer.id) + } + } + subscriber.putNext(Array(peerIds)) + }) + return disposable + } + |> distinctUntilChanged + |> runOn(.mainQueue()) + } else { + peerAdminIds = strongSelf.account.postbox.transaction { transaction -> [PeerId] in + var result: [PeerId] = [] + if let cachedData = transaction.getPeerCachedData(peerId: peerId) as? CachedGroupData { + if let participants = cachedData.participants { + for participant in participants.participants { + if case .creator = participant { + result.append(participant.peerId) + } else if case .admin = participant { + result.append(participant.peerId) + } + } } } return result - }) - self.callContext = callContext + } } - self.joinDisposable.set((callContext.joinPayload - |> distinctUntilChanged(isEqual: { lhs, rhs in - if lhs.0 != rhs.0 { - return false - } - if lhs.1 != rhs.1 { - return false - } - return true - }) - |> deliverOnMainQueue).start(next: { [weak self] joinPayload, ssrc in + + strongSelf.currentLocalSsrc = ssrc + strongSelf.requestDisposable.set((joinGroupCall( + account: strongSelf.account, + peerId: strongSelf.peerId, + joinAs: strongSelf.joinAsPeerId, + callId: callInfo.id, + accessHash: callInfo.accessHash, + preferMuted: true, + joinPayload: joinPayload, + peerAdminIds: peerAdminIds, + inviteHash: strongSelf.invite + ) + |> deliverOnMainQueue).start(next: { joinCallResult in guard let strongSelf = self else { return } - - let peerAdminIds: Signal<[PeerId], NoError> - let peerId = strongSelf.peerId - if strongSelf.peerId.namespace == Namespaces.Peer.CloudChannel { - peerAdminIds = Signal { subscriber in - let (disposable, _) = strongSelf.accountContext.peerChannelMemberCategoriesContextsManager.admins(postbox: strongSelf.accountContext.account.postbox, network: strongSelf.accountContext.account.network, accountPeerId: strongSelf.accountContext.account.peerId, peerId: peerId, updated: { list in - var peerIds = Set() - for item in list.list { - if let adminInfo = item.participant.adminInfo, adminInfo.rights.rights.contains(.canManageCalls) { - peerIds.insert(item.peer.id) - } + if let clientParams = joinCallResult.callInfo.clientParams { + strongSelf.ssrcMapping.removeAll() + let addedParticipants: [(UInt32, String?)] = [] + for participant in joinCallResult.state.participants { + if let ssrc = participant.ssrc { + strongSelf.ssrcMapping[ssrc] = participant.peer.id + //addedParticipants.append((participant.ssrc, participant.jsonParams)) + } + } + + switch joinCallResult.connectionMode { + case .rtc: + strongSelf.currentConnectionMode = .rtc + strongSelf.callContext?.setConnectionMode(.rtc, keepBroadcastConnectedIfWasEnabled: false) + strongSelf.callContext?.setJoinResponse(payload: clientParams, participants: addedParticipants) + case .broadcast: + strongSelf.currentConnectionMode = .broadcast + strongSelf.callContext?.setConnectionMode(.broadcast, keepBroadcastConnectedIfWasEnabled: false) + } + + strongSelf.updateSessionState(internalState: .established(info: joinCallResult.callInfo, connectionMode: joinCallResult.connectionMode, clientParams: clientParams, localSsrc: ssrc, initialState: joinCallResult.state), audioSessionControl: strongSelf.audioSessionControl) + } + }, error: { error in + guard let strongSelf = self else { + return + } + if case .anonymousNotAllowed = error { + let presentationData = strongSelf.accountContext.sharedContext.currentPresentationData.with { $0 } + strongSelf.accountContext.sharedContext.mainWindow?.present(standardTextAlertController(theme: AlertControllerTheme(presentationData: presentationData), title: nil, text: presentationData.strings.VoiceChat_AnonymousDisabledAlertText, actions: [ + TextAlertAction(type: .genericAction, title: presentationData.strings.Common_OK, action: {}) + ]), on: .root, blockInteraction: false, completion: {}) + } else if case .tooManyParticipants = error { + let presentationData = strongSelf.accountContext.sharedContext.currentPresentationData.with { $0 } + strongSelf.accountContext.sharedContext.mainWindow?.present(standardTextAlertController(theme: AlertControllerTheme(presentationData: presentationData), title: nil, text: presentationData.strings.VoiceChat_ChatFullAlertText, actions: [ + TextAlertAction(type: .genericAction, title: presentationData.strings.Common_OK, action: {}) + ]), on: .root, blockInteraction: false, completion: {}) + } else if case .invalidJoinAsPeer = error { + let peerId = strongSelf.peerId + let _ = clearCachedGroupCallDisplayAsAvailablePeers(account: strongSelf.accountContext.account, peerId: peerId).start() + let _ = (strongSelf.accountContext.account.postbox.transaction { transaction -> Void in + transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, current in + if let current = current as? CachedChannelData { + return current.withUpdatedCallJoinPeerId(nil) + } else if let current = current as? CachedGroupData { + return current.withUpdatedCallJoinPeerId(nil) + } else { + return current } - subscriber.putNext(Array(peerIds)) }) - return disposable - } - |> distinctUntilChanged - |> runOn(.mainQueue()) - } else { - peerAdminIds = strongSelf.account.postbox.transaction { transaction -> [PeerId] in - var result: [PeerId] = [] - if let cachedData = transaction.getPeerCachedData(peerId: peerId) as? CachedGroupData { - if let participants = cachedData.participants { - for participant in participants.participants { - if case .creator = participant { - result.append(participant.peerId) - } else if case .admin = participant { - result.append(participant.peerId) - } - } - } - } - return result - } + }).start() } - - strongSelf.currentLocalSsrc = ssrc - strongSelf.requestDisposable.set((joinGroupCall( - account: strongSelf.account, - peerId: strongSelf.peerId, - joinAs: strongSelf.joinAsPeerId, - callId: callInfo.id, - accessHash: callInfo.accessHash, - preferMuted: true, - joinPayload: joinPayload, - peerAdminIds: peerAdminIds, - inviteHash: strongSelf.invite - ) - |> deliverOnMainQueue).start(next: { joinCallResult in - guard let strongSelf = self else { - return - } - if let clientParams = joinCallResult.callInfo.clientParams { - strongSelf.ssrcMapping.removeAll() - let addedParticipants: [(UInt32, String?)] = [] - for participant in joinCallResult.state.participants { - if let ssrc = participant.ssrc { - strongSelf.ssrcMapping[ssrc] = participant.peer.id - //addedParticipants.append((participant.ssrc, participant.jsonParams)) - } - } - - switch joinCallResult.connectionMode { - case .rtc: - strongSelf.currentConnectionMode = .rtc - strongSelf.callContext?.setConnectionMode(.rtc, keepBroadcastConnectedIfWasEnabled: false) - strongSelf.callContext?.setJoinResponse(payload: clientParams, participants: addedParticipants) - case .broadcast: - strongSelf.currentConnectionMode = .broadcast - strongSelf.callContext?.setConnectionMode(.broadcast, keepBroadcastConnectedIfWasEnabled: false) - } - - strongSelf.updateSessionState(internalState: .established(info: joinCallResult.callInfo, connectionMode: joinCallResult.connectionMode, clientParams: clientParams, localSsrc: ssrc, initialState: joinCallResult.state), audioSessionControl: strongSelf.audioSessionControl) - } - }, error: { error in - guard let strongSelf = self else { - return - } - if case .anonymousNotAllowed = error { - let presentationData = strongSelf.accountContext.sharedContext.currentPresentationData.with { $0 } - strongSelf.accountContext.sharedContext.mainWindow?.present(standardTextAlertController(theme: AlertControllerTheme(presentationData: presentationData), title: nil, text: presentationData.strings.VoiceChat_AnonymousDisabledAlertText, actions: [ - TextAlertAction(type: .genericAction, title: presentationData.strings.Common_OK, action: {}) - ]), on: .root, blockInteraction: false, completion: {}) - } else if case .tooManyParticipants = error { - let presentationData = strongSelf.accountContext.sharedContext.currentPresentationData.with { $0 } - strongSelf.accountContext.sharedContext.mainWindow?.present(standardTextAlertController(theme: AlertControllerTheme(presentationData: presentationData), title: nil, text: presentationData.strings.VoiceChat_ChatFullAlertText, actions: [ - TextAlertAction(type: .genericAction, title: presentationData.strings.Common_OK, action: {}) - ]), on: .root, blockInteraction: false, completion: {}) - } else if case .invalidJoinAsPeer = error { - let peerId = strongSelf.peerId - let _ = clearCachedGroupCallDisplayAsAvailablePeers(account: strongSelf.accountContext.account, peerId: peerId).start() - let _ = (strongSelf.accountContext.account.postbox.transaction { transaction -> Void in - transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, current in - if let current = current as? CachedChannelData { - return current.withUpdatedCallJoinPeerId(nil) - } else if let current = current as? CachedGroupData { - return current.withUpdatedCallJoinPeerId(nil) - } else { - return current - } - }) - }).start() - } - strongSelf.markAsCanBeRemoved() - })) + strongSelf.markAsCanBeRemoved() })) + })) + + self.networkStateDisposable.set((callContext.networkState + |> deliverOnMainQueue).start(next: { [weak self] state in + guard let strongSelf = self else { + return + } + let mappedState: PresentationGroupCallState.NetworkState + if state.isConnected { + mappedState = .connected + } else { + mappedState = .connecting + } + + let wasConnecting = strongSelf.stateValue.networkState == .connecting + if strongSelf.stateValue.networkState != mappedState { + strongSelf.stateValue.networkState = mappedState + } + let isConnecting = mappedState == .connecting - self.networkStateDisposable.set((callContext.networkState - |> deliverOnMainQueue).start(next: { [weak self] state in - guard let strongSelf = self else { - return - } - let mappedState: PresentationGroupCallState.NetworkState - if state.isConnected { - mappedState = .connected - } else { - mappedState = .connecting - } - - let wasConnecting = strongSelf.stateValue.networkState == .connecting - if strongSelf.stateValue.networkState != mappedState { - strongSelf.stateValue.networkState = mappedState - } - let isConnecting = mappedState == .connecting - - if strongSelf.isCurrentlyConnecting != isConnecting { - strongSelf.isCurrentlyConnecting = isConnecting - if isConnecting { - strongSelf.startCheckingCallIfNeeded() - } else { - strongSelf.checkCallDisposable?.dispose() - strongSelf.checkCallDisposable = nil - } - } - - strongSelf.isReconnectingAsSpeaker = state.isTransitioningFromBroadcastToRtc - - if (wasConnecting != isConnecting && strongSelf.didConnectOnce) { - if isConnecting { - let toneRenderer = PresentationCallToneRenderer(tone: .groupConnecting) - strongSelf.toneRenderer = toneRenderer - toneRenderer.setAudioSessionActive(strongSelf.isAudioSessionActive) - } else { - strongSelf.toneRenderer = nil - } - } - + if strongSelf.isCurrentlyConnecting != isConnecting { + strongSelf.isCurrentlyConnecting = isConnecting if isConnecting { - strongSelf.didStartConnectingOnce = true + strongSelf.startCheckingCallIfNeeded() + } else { + strongSelf.checkCallDisposable?.dispose() + strongSelf.checkCallDisposable = nil } - - if state.isConnected { - if !strongSelf.didConnectOnce { - strongSelf.didConnectOnce = true - - let toneRenderer = PresentationCallToneRenderer(tone: .groupJoined) - strongSelf.toneRenderer = toneRenderer - toneRenderer.setAudioSessionActive(strongSelf.isAudioSessionActive) - } + } - if let peer = strongSelf.reconnectingAsPeer { - strongSelf.reconnectingAsPeer = nil - strongSelf.reconnectedAsEventsPipe.putNext(peer) - } - } - })) - - self.isNoiseSuppressionEnabledDisposable.set((callContext.isNoiseSuppressionEnabled - |> deliverOnMainQueue).start(next: { [weak self] value in - guard let strongSelf = self else { - return - } - strongSelf.isNoiseSuppressionEnabledPromise.set(value) - })) + strongSelf.isReconnectingAsSpeaker = state.isTransitioningFromBroadcastToRtc - self.audioLevelsDisposable.set((callContext.audioLevels - |> deliverOnMainQueue).start(next: { [weak self] levels in - guard let strongSelf = self else { - return + if (wasConnecting != isConnecting && strongSelf.didConnectOnce) { + if isConnecting { + let toneRenderer = PresentationCallToneRenderer(tone: .groupConnecting) + strongSelf.toneRenderer = toneRenderer + toneRenderer.setAudioSessionActive(strongSelf.isAudioSessionActive) + } else { + strongSelf.toneRenderer = nil } - var result: [(PeerId, UInt32, Float, Bool)] = [] - var myLevel: Float = 0.0 - var myLevelHasVoice: Bool = false - var missingSsrcs = Set() - for (ssrcKey, level, hasVoice) in levels { - var peerId: PeerId? - let ssrcValue: UInt32 - switch ssrcKey { - case .local: - peerId = strongSelf.joinAsPeerId - ssrcValue = 0 - case let .source(ssrc): - peerId = strongSelf.ssrcMapping[ssrc] - ssrcValue = ssrc - } - if let peerId = peerId { - if case .local = ssrcKey { - if !strongSelf.isMutedValue.isEffectivelyMuted { - myLevel = level - myLevelHasVoice = hasVoice - } + } + + if isConnecting { + strongSelf.didStartConnectingOnce = true + } + + if state.isConnected { + if !strongSelf.didConnectOnce { + strongSelf.didConnectOnce = true + + let toneRenderer = PresentationCallToneRenderer(tone: .groupJoined) + strongSelf.toneRenderer = toneRenderer + toneRenderer.setAudioSessionActive(strongSelf.isAudioSessionActive) + } + + if let peer = strongSelf.reconnectingAsPeer { + strongSelf.reconnectingAsPeer = nil + strongSelf.reconnectedAsEventsPipe.putNext(peer) + } + } + })) + + self.isNoiseSuppressionEnabledDisposable.set((callContext.isNoiseSuppressionEnabled + |> deliverOnMainQueue).start(next: { [weak self] value in + guard let strongSelf = self else { + return + } + strongSelf.isNoiseSuppressionEnabledPromise.set(value) + })) + + self.audioLevelsDisposable.set((callContext.audioLevels + |> deliverOnMainQueue).start(next: { [weak self] levels in + guard let strongSelf = self else { + return + } + var result: [(PeerId, UInt32, Float, Bool)] = [] + var myLevel: Float = 0.0 + var myLevelHasVoice: Bool = false + var missingSsrcs = Set() + for (ssrcKey, level, hasVoice) in levels { + var peerId: PeerId? + let ssrcValue: UInt32 + switch ssrcKey { + case .local: + peerId = strongSelf.joinAsPeerId + ssrcValue = 0 + case let .source(ssrc): + peerId = strongSelf.ssrcMapping[ssrc] + ssrcValue = ssrc + } + if let peerId = peerId { + if case .local = ssrcKey { + if !strongSelf.isMutedValue.isEffectivelyMuted { + myLevel = level + myLevelHasVoice = hasVoice } - result.append((peerId, ssrcValue, level, hasVoice)) - } else if ssrcValue != 0 { - missingSsrcs.insert(ssrcValue) } + result.append((peerId, ssrcValue, level, hasVoice)) + } else if ssrcValue != 0 { + missingSsrcs.insert(ssrcValue) } - - strongSelf.speakingParticipantsContext.update(levels: result) - - let mappedLevel = myLevel * 1.5 - strongSelf.myAudioLevelPipe.putNext(mappedLevel) - strongSelf.processMyAudioLevel(level: mappedLevel, hasVoice: myLevelHasVoice) - - if !missingSsrcs.isEmpty { - strongSelf.participantsContext?.ensureHaveParticipants(ssrcs: missingSsrcs) - } - })) - } + } + + strongSelf.speakingParticipantsContext.update(levels: result) + + let mappedLevel = myLevel * 1.5 + strongSelf.myAudioLevelPipe.putNext(mappedLevel) + strongSelf.processMyAudioLevel(level: mappedLevel, hasVoice: myLevelHasVoice) + + if !missingSsrcs.isEmpty { + strongSelf.participantsContext?.ensureHaveParticipants(ssrcs: missingSsrcs) + } + })) } switch previousInternalState { @@ -1339,6 +1362,9 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { if self.stateValue.title != initialState.title { self.stateValue.title = initialState.title } + if self.stateValue.scheduleTimestamp != initialState.scheduleTimestamp { + self.stateValue.scheduleTimestamp = initialState.scheduleTimestamp + } let accountContext = self.accountContext let peerId = self.peerId @@ -1630,6 +1656,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { } strongSelf.stateValue.recordingStartTimestamp = state.recordingStartTimestamp strongSelf.stateValue.title = state.title + strongSelf.stateValue.scheduleTimestamp = state.scheduleTimestamp strongSelf.summaryInfoState.set(.single(SummaryInfoState(info: GroupCallInfo( id: callInfo.id, @@ -1638,6 +1665,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { clientParams: nil, streamDcId: nil, title: state.title, + scheduleTimestamp: state.scheduleTimestamp, recordingStartTimestamp: state.recordingStartTimestamp, sortAscending: state.sortAscending )))) @@ -1887,7 +1915,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { public func leave(terminateIfPossible: Bool) -> Signal { self.leaving = true - if let callInfo = self.internalState.callInfo, let localSsrc = self.currentLocalSsrc { + if let callInfo = self.internalState.callInfo { if terminateIfPossible { self.leaveDisposable.set((stopGroupCall(account: self.account, peerId: self.peerId, callId: callInfo.id, accessHash: callInfo.accessHash) |> deliverOnMainQueue).start(completed: { [weak self] in @@ -1896,7 +1924,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { } strongSelf.markAsCanBeRemoved() })) - } else { + } else if let localSsrc = self.currentLocalSsrc { if let contexts = self.accountContext.cachedGroupCallContexts as? AccountGroupCallContextCacheImpl { let account = self.account let id = callInfo.id @@ -1907,6 +1935,8 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { } } self.markAsCanBeRemoved() + } else { + self.markAsCanBeRemoved() } } else { self.markAsCanBeRemoved() @@ -1957,6 +1987,39 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { self.callContext?.setIsNoiseSuppressionEnabled(isNoiseSuppressionEnabled) } + public func schedule(timestamp: Int32) { + guard self.schedulePending else { + return + } + + self.schedulePending = false + self.stateValue.scheduleTimestamp = timestamp + + self.startDisposable.set((createGroupCall(account: self.account, peerId: self.peerId, title: nil, scheduleDate: timestamp) + |> deliverOnMainQueue).start(next: { [weak self] callInfo in + guard let strongSelf = self else { + return + } + strongSelf.updateSessionState(internalState: .active(callInfo), audioSessionControl: strongSelf.audioSessionControl) + })) + } + + public func startScheduled() { + guard case let .active(callInfo) = self.internalState else { + return + } + + self.stateValue.scheduleTimestamp = nil + + self.startDisposable.set((startScheduledGroupCall(account: self.account, peerId: self.peerId, callId: callInfo.id, accessHash: callInfo.accessHash) + |> deliverOnMainQueue).start(next: { [weak self] callInfo in + guard let strongSelf = self else { + return + } + strongSelf.updateSessionState(internalState: .active(callInfo), audioSessionControl: strongSelf.audioSessionControl) + })) + } + public func raiseHand() { guard let membersValue = self.membersValue else { return @@ -2207,7 +2270,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { } if let value = value { - strongSelf.initialCall = CachedChannelData.ActiveCall(id: value.id, accessHash: value.accessHash, title: value.title) + strongSelf.initialCall = CachedChannelData.ActiveCall(id: value.id, accessHash: value.accessHash, title: value.title, scheduleTimestamp: nil, subscribed: false) strongSelf.updateSessionState(internalState: .active(value), audioSessionControl: strongSelf.audioSessionControl) } else { @@ -2217,7 +2280,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { } public func invitePeer(_ peerId: PeerId) -> Bool { - guard case let .established(callInfo, _, _, _, _) = self.internalState, !self.invitedPeersValue.contains(peerId) else { + guard let callInfo = self.internalState.callInfo, !self.invitedPeersValue.contains(peerId) else { return false } @@ -2236,11 +2299,11 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { self.invitedPeersValue = updatedInvitedPeers } - public func updateTitle(_ title: String){ - guard case let .established(callInfo, _, _, _, _) = self.internalState else { + public func updateTitle(_ title: String) { + guard let callInfo = self.internalState.callInfo else { return } - + self.stateValue.title = title let _ = editGroupCallTitle(account: self.account, callId: callInfo.id, accessHash: callInfo.accessHash, title: title).start() } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatActionButton.swift b/submodules/TelegramCallsUI/Sources/VoiceChatActionButton.swift index 96e5adc46f..754bcc7d2c 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatActionButton.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatActionButton.swift @@ -27,6 +27,8 @@ private let blobSize = CGSize(width: 190.0, height: 190.0) private let smallScale: CGFloat = 0.48 private let smallIconScale: CGFloat = 0.69 +private let buttonHeight: CGFloat = 52.0 + final class VoiceChatActionButton: HighlightTrackingButtonNode { enum State: Equatable { enum ActiveState: Equatable { @@ -34,7 +36,15 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { case muted case on } + + enum ScheduledState: Equatable { + case start + case subscribe + case unsubscribe + } + case button(text: String) + case scheduled(state: ScheduledState) case connecting case active(state: ActiveState) } @@ -53,6 +63,7 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { private let iconNode: VoiceChatActionButtonIconNode private let titleLabel: ImmediateTextNode private let subtitleLabel: ImmediateTextNode + private let buttonTitleLabel: ImmediateTextNode private var currentParams: (size: CGSize, buttonSize: CGSize, state: VoiceChatActionButton.State, dark: Bool, small: Bool, title: String, subtitle: String, snap: Bool)? @@ -103,7 +114,7 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { default: break } - case .connecting: + case .connecting, .button, .scheduled: break } } else { @@ -121,12 +132,17 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { init() { self.bottomNode = ASDisplayNode() + self.bottomNode.isUserInteractionEnabled = false self.containerNode = ASDisplayNode() + self.containerNode.isUserInteractionEnabled = false self.backgroundNode = VoiceChatActionButtonBackgroundNode() self.iconNode = VoiceChatActionButtonIconNode(isColored: false) self.titleLabel = ImmediateTextNode() self.subtitleLabel = ImmediateTextNode() + self.buttonTitleLabel = ImmediateTextNode() + self.buttonTitleLabel.isUserInteractionEnabled = false + self.buttonTitleLabel.alpha = 0.0 super.init() @@ -138,26 +154,38 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { self.containerNode.addSubnode(self.backgroundNode) self.containerNode.addSubnode(self.iconNode) + self.containerNode.addSubnode(self.buttonTitleLabel) + self.highligthedChanged = { [weak self] pressing in if let strongSelf = self { - guard let (_, _, _, _, small, _, _, snap) = strongSelf.currentParams else { + guard let (_, _, state, _, small, _, _, snap) = strongSelf.currentParams else { return } if pressing { - let transition: ContainedViewLayoutTransition = .animated(duration: 0.25, curve: .spring) - if small { - transition.updateTransformScale(node: strongSelf.backgroundNode, scale: smallScale * 0.9) - transition.updateTransformScale(node: strongSelf.backgroundNode, scale: smallIconScale * 0.9) + if case .button = state { + strongSelf.containerNode.layer.removeAnimation(forKey: "opacity") + strongSelf.containerNode.alpha = 0.4 } else { - transition.updateTransformScale(node: strongSelf.iconNode, scale: snap ? 0.5 : 0.9) + let transition: ContainedViewLayoutTransition = .animated(duration: 0.25, curve: .spring) + if small { + transition.updateTransformScale(node: strongSelf.backgroundNode, scale: smallScale * 0.9) + transition.updateTransformScale(node: strongSelf.backgroundNode, scale: smallIconScale * 0.9) + } else { + transition.updateTransformScale(node: strongSelf.iconNode, scale: snap ? 0.5 : 0.9) + } } } else if !strongSelf.pressing { - let transition: ContainedViewLayoutTransition = .animated(duration: 0.25, curve: .spring) - if small { - transition.updateTransformScale(node: strongSelf.backgroundNode, scale: smallScale) - transition.updateTransformScale(node: strongSelf.backgroundNode, scale: smallIconScale) + if case .button = state { + strongSelf.containerNode.alpha = 1.0 + strongSelf.containerNode.layer.animateAlpha(from: 0.4, to: 1.0, duration: 0.2) } else { - transition.updateTransformScale(node: strongSelf.iconNode, scale: snap ? 0.5 : 1.0) + let transition: ContainedViewLayoutTransition = .animated(duration: 0.25, curve: .spring) + if small { + transition.updateTransformScale(node: strongSelf.backgroundNode, scale: smallScale) + transition.updateTransformScale(node: strongSelf.backgroundNode, scale: smallIconScale) + } else { + transition.updateTransformScale(node: strongSelf.iconNode, scale: snap ? 0.5 : 1.0) + } } } } @@ -214,7 +242,7 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { let subtitleSize = self.subtitleLabel.updateLayout(CGSize(width: size.width, height: .greatestFiniteMagnitude)) let totalHeight = titleSize.height + subtitleSize.height + 1.0 - self.titleLabel.frame = CGRect(origin: CGPoint(x: floor((size.width - titleSize.width) / 2.0), y: floor(size.height - totalHeight / 2.0) - 70.0), size: titleSize) + self.titleLabel.frame = CGRect(origin: CGPoint(x: floor((size.width - titleSize.width) / 2.0), y: floor((size.height - totalHeight) / 2.0) + 88.0), size: titleSize) self.subtitleLabel.frame = CGRect(origin: CGPoint(x: floor((size.width - subtitleSize.width) / 2.0), y: self.titleLabel.frame.maxY + 1.0), size: subtitleSize) self.bottomNode.frame = CGRect(origin: CGPoint(), size: size) @@ -232,7 +260,7 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { default: break } - case .connecting: + case .connecting, .button, .scheduled: break } @@ -271,6 +299,17 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { let icon: VoiceChatActionButtonIconAnimationState switch state { + case .button: + icon = .empty + case let .scheduled(state): + switch state { + case .start: + icon = .start + case .subscribe: + icon = .subscribe + case .unsubscribe: + icon = .unsubscribe + } case let .active(state): switch state { case .on: @@ -290,7 +329,6 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { self.previousIcon = icon self.iconNode.enqueueState(icon) -// self.iconNode.update(state: VoiceChatMicrophoneNode.State(muted: iconMuted, filled: true, color: iconColor), animated: true) } func update(snap: Bool, animated: Bool) { @@ -312,8 +350,26 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { self.statePromise.set(state) + if let previousState = previousState, case .button = previousState, case .scheduled = state { + self.buttonTitleLabel.alpha = 0.0 + self.buttonTitleLabel.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2) + self.buttonTitleLabel.layer.animateScale(from: 1.0, to: 0.001, duration: 0.24) + + self.iconNode.alpha = 1.0 + self.iconNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.iconNode.layer.animateSpring(from: 0.01 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.42, damping: 104.0) + } + var backgroundState: VoiceChatActionButtonBackgroundNode.State switch state { + case let .button(text): + backgroundState = .button + self.buttonTitleLabel.alpha = 1.0 + self.buttonTitleLabel.attributedText = NSAttributedString(string: text, font: Font.semibold(17.0), textColor: .white) + let titleSize = self.buttonTitleLabel.updateLayout(CGSize(width: size.width, height: 100.0)) + self.buttonTitleLabel.frame = CGRect(origin: CGPoint(x: floor((self.bounds.width - titleSize.width) / 2.0), y: floor((self.bounds.height - titleSize.height) / 2.0)), size: titleSize) + case .scheduled: + backgroundState = .disabled case let .active(state): switch state { case .on: @@ -340,14 +396,18 @@ final class VoiceChatActionButton: HighlightTrackingButtonNode { } })) } else { - applyParams(animated: animated) + self.applyParams(animated: animated) } } override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { var hitRect = self.bounds - if let (_, buttonSize, _, _, _, _, _, _) = self.currentParams { - hitRect = self.bounds.insetBy(dx: (self.bounds.width - buttonSize.width) / 2.0, dy: (self.bounds.height - buttonSize.height) / 2.0) + if let (_, buttonSize, state, _, _, _, _, _) = self.currentParams { + if case .button = state { + hitRect = CGRect(x: 0.0, y: floor((self.bounds.height - buttonHeight) / 2.0), width: self.bounds.width, height: buttonHeight) + } else { + hitRect = self.bounds.insetBy(dx: (self.bounds.width - buttonSize.width) / 2.0, dy: (self.bounds.height - buttonSize.height) / 2.0) + } } let result = super.hitTest(point, with: event) if !hitRect.contains(point) { @@ -453,6 +513,7 @@ private final class VoiceChatActionButtonBackgroundNode: ASDisplayNode { enum State: Equatable { case connecting case disabled + case button case blob(Bool) } @@ -546,7 +607,9 @@ private final class VoiceChatActionButtonBackgroundNode: ASDisplayNode { self.maskProgressLayer.lineCap = .round self.maskProgressLayer.path = path - let largerCirclePath = UIBezierPath(ovalIn: CGRect(origin: CGPoint(), size: CGSize(width: buttonSize.width + progressLineWidth, height: buttonSize.height + progressLineWidth))).cgPath + let circleFrame = CGRect(origin: CGPoint(x: (358 - buttonSize.width) / 2.0, y: (358 - buttonSize.height) / 2.0), size: buttonSize).insetBy(dx: -progressLineWidth / 2.0, dy: -progressLineWidth / 2.0) + let largerCirclePath = UIBezierPath(roundedRect: CGRect(x: circleFrame.minX, y: circleFrame.minY, width: circleFrame.width, height: circleFrame.height), cornerRadius: circleFrame.width / 2.0).cgPath + self.maskCircleLayer.fillColor = white.cgColor self.maskCircleLayer.path = largerCirclePath self.maskCircleLayer.isHidden = true @@ -825,7 +888,7 @@ private final class VoiceChatActionButtonBackgroundNode: ASDisplayNode { self.maskBlobView.startAnimating() self.maskBlobView.layer.animateSpring(from: 0.1 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.45) } - + private func playConnectionAnimation(type: Gradient, completion: @escaping () -> Void) { CATransaction.begin() let initialRotation: CGFloat = CGFloat((self.maskProgressLayer.value(forKeyPath: "presentationLayer.transform.rotation.z") as? NSNumber)?.floatValue ?? 0.0) @@ -872,7 +935,8 @@ private final class VoiceChatActionButtonBackgroundNode: ASDisplayNode { self.updateGlowAndGradientAnimations(type: type, previousType: nil) - if case .blob = self.state { + if case .connecting = self.state { + } else { self.maskBlobView.isHidden = false self.maskBlobView.startAnimating() self.maskBlobView.layer.animateSpring(from: 0.1 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.45) @@ -907,6 +971,47 @@ private final class VoiceChatActionButtonBackgroundNode: ASDisplayNode { CATransaction.commit() } + private func setupButtonAnimation() { + CATransaction.begin() + CATransaction.setDisableActions(true) + self.backgroundCircleLayer.isHidden = true + self.foregroundCircleLayer.isHidden = true + self.maskCircleLayer.isHidden = false + self.maskProgressLayer.isHidden = true + self.maskGradientLayer.isHidden = true + + let path = UIBezierPath(roundedRect: CGRect(x: 0.0, y: floor((self.bounds.height - buttonHeight) / 2.0), width: self.bounds.width, height: buttonHeight), cornerRadius: 10.0).cgPath + self.maskCircleLayer.path = path + + CATransaction.commit() + + self.updateGlowAndGradientAnimations(type: .muted, previousType: nil) + + self.updatedActive?(true) + } + + private func playScheduledAnimation() { + CATransaction.begin() + CATransaction.setDisableActions(true) + self.maskGradientLayer.isHidden = false + CATransaction.commit() + + let circleFrame = CGRect(origin: CGPoint(x: (self.bounds.width - buttonSize.width) / 2.0, y: (self.bounds.height - buttonSize.height) / 2.0), size: buttonSize).insetBy(dx: -progressLineWidth / 2.0, dy: -progressLineWidth / 2.0) + let largerCirclePath = UIBezierPath(roundedRect: CGRect(x: circleFrame.minX, y: circleFrame.minY, width: circleFrame.width, height: circleFrame.height), cornerRadius: circleFrame.width / 2.0).cgPath + + let previousPath = self.maskCircleLayer.path + self.maskCircleLayer.path = largerCirclePath + + self.maskCircleLayer.animateSpring(from: previousPath as AnyObject, to: largerCirclePath as AnyObject, keyPath: "path", duration: 0.42, initialVelocity: 0.0, damping: 104.0) + + self.maskBlobView.isHidden = false + self.maskBlobView.startAnimating() + self.maskBlobView.layer.animateSpring(from: 0.1 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.45) + + let initialScale: CGFloat = ((self.maskGradientLayer.value(forKeyPath: "presentationLayer.transform.scale.x") as? NSNumber)?.floatValue).flatMap({ CGFloat($0) }) ?? (((self.maskGradientLayer.value(forKeyPath: "transform.scale.x") as? NSNumber)?.floatValue).flatMap({ CGFloat($0) }) ?? 0.8) + self.maskGradientLayer.animateSpring(from: initialScale as NSNumber, to: 0.85 as NSNumber, keyPath: "transform.scale", duration: 0.45) + } + var isActive = false func updateAnimations() { if !self.isCurrentlyInHierarchy { @@ -959,7 +1064,9 @@ private final class VoiceChatActionButtonBackgroundNode: ASDisplayNode { self.isActive = false if let transition = self.transition { - if case .connecting = transition { + if case .button = transition { + self.playScheduledAnimation() + } else if case .connecting = transition { self.playConnectionAnimation(type: .muted) { [weak self] in self?.isActive = false } @@ -969,7 +1076,10 @@ private final class VoiceChatActionButtonBackgroundNode: ASDisplayNode { } self.transition = nil } - break + case .button: + self.updatedActive?(true) + self.isActive = false + self.setupButtonAnimation() } } @@ -1037,20 +1147,24 @@ private final class VoiceChatActionButtonBackgroundNode: ASDisplayNode { override func layout() { super.layout() - let center = CGPoint(x: self.bounds.width / 2.0, y: self.bounds.height / 2.0) + let bounds = CGRect(x: (self.bounds.width - areaSize.width) / 2.0, y: (self.bounds.height - areaSize.height) / 2.0, width: areaSize.width, height: areaSize.height) + let center = bounds.center - let circleFrame = CGRect(origin: CGPoint(x: (self.bounds.width - buttonSize.width) / 2.0, y: (self.bounds.height - buttonSize.height) / 2.0), size: buttonSize) + self.maskBlobView.frame = CGRect(origin: CGPoint(x: bounds.minX + (bounds.width - blobSize.width) / 2.0, y: bounds.minY + (bounds.height - blobSize.height) / 2.0), size: blobSize) + + let circleFrame = CGRect(origin: CGPoint(x: bounds.minX + (bounds.width - buttonSize.width) / 2.0, y: bounds.minY + (bounds.height - buttonSize.height) / 2.0), size: buttonSize) self.backgroundCircleLayer.frame = circleFrame self.foregroundCircleLayer.position = center self.foregroundCircleLayer.bounds = CGRect(origin: CGPoint(), size: CGSize(width: circleFrame.width - progressLineWidth, height: circleFrame.height - progressLineWidth)) self.growingForegroundCircleLayer.position = center self.growingForegroundCircleLayer.bounds = self.foregroundCircleLayer.bounds - self.maskCircleLayer.frame = circleFrame.insetBy(dx: -progressLineWidth / 2.0, dy: -progressLineWidth / 2.0) + self.maskCircleLayer.frame = self.bounds +// circleFrame.insetBy(dx: -progressLineWidth / 2.0, dy: -progressLineWidth / 2.0) self.maskProgressLayer.frame = circleFrame.insetBy(dx: -3.0, dy: -3.0) self.foregroundView.frame = self.bounds self.foregroundGradientLayer.frame = self.bounds self.maskGradientLayer.position = center - self.maskGradientLayer.bounds = self.bounds + self.maskGradientLayer.bounds = bounds self.maskView.frame = self.bounds } } @@ -1386,6 +1500,10 @@ final class BlobView: UIView { } enum VoiceChatActionButtonIconAnimationState: Equatable { + case empty + case start + case subscribe + case unsubscribe case unmute case mute case hand @@ -1399,6 +1517,7 @@ final class VoiceChatActionButtonIconNode: ManagedAnimationNode { self.isColored = isColored super.init(size: CGSize(width: 100.0, height: 100.0)) + self.scale = 0.8 self.trackTo(item: ManagedAnimationItem(source: .local("VoiceUnmute"), frames: .range(startFrame: 0, endFrame: 0), duration: 0.1)) } @@ -1410,30 +1529,73 @@ final class VoiceChatActionButtonIconNode: ManagedAnimationNode { let previousState = self.iconState self.iconState = state + if state != .empty { + self.alpha = 1.0 + } switch previousState { + case .empty: + switch state { + case .start: + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceStart"), frames: .range(startFrame: 0, endFrame: 0), duration: 0.001)) + default: + break + } + case .subscribe: + switch state { + case .unsubscribe: + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceStart"))) + case .mute: + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceStart"))) + case .hand: + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceStart"))) + default: + break + } + case .unsubscribe: + switch state { + case .subscribe: + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceStart"))) + case .mute: + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceStart"))) + case .hand: + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceStart"))) + default: + break + } + case .start: + switch state { + case .mute: + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceStart"))) + default: + break + } case .unmute: switch state { case .mute: self.trackTo(item: ManagedAnimationItem(source: .local("VoiceMute"))) case .hand: self.trackTo(item: ManagedAnimationItem(source: .local("VoiceHandOff2"))) - case .unmute: + default: break } case .mute: switch state { + case .start: + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceStart"), frames: .range(startFrame: 0, endFrame: 0), duration: 0.001)) case .unmute: - self.trackTo(item: ManagedAnimationItem(source: .local("VoiceUnmute"), frames: .range(startFrame: 0, endFrame: 12), duration: 0.2)) + self.trackTo(item: ManagedAnimationItem(source: .local("VoiceUnmute"))) case .hand: self.trackTo(item: ManagedAnimationItem(source: .local("VoiceHandOff"))) - case .mute: + case .empty: + self.alpha = 0.0 + default: break } case .hand: switch state { case .mute, .unmute: self.trackTo(item: ManagedAnimationItem(source: .local("VoiceHandOn"))) - case .hand: + default: break } } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift index cf836e130a..a758f3ebb6 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import TelegramPresentationData import TelegramUIPreferences +import TelegramStringFormatting import TelegramVoip import TelegramAudio import AccountContext @@ -29,6 +30,7 @@ import LegacyComponents import LegacyMediaPickerUI import WebSearchUI import MapResourceToAvatarSizes +import SolidRoundedButtonNode private let panelBackgroundColor = UIColor(rgb: 0x1c1c1e) private let secondaryPanelBackgroundColor = UIColor(rgb: 0x2c2c2e) @@ -65,105 +67,6 @@ private func cornersImage(top: Bool, bottom: Bool, dark: Bool) -> UIImage? { })?.stretchableImage(withLeftCapWidth: 25, topCapHeight: 25) } - -private final class VoiceChatControllerTitleNode: ASDisplayNode { - private var theme: PresentationTheme - - private let titleNode: ASTextNode - private let infoNode: ASTextNode - fileprivate let recordingIconNode: VoiceChatRecordingIconNode - - public var isRecording: Bool = false { - didSet { - self.recordingIconNode.isHidden = !self.isRecording - } - } - - var tapped: (() -> Void)? - - init(theme: PresentationTheme) { - self.theme = theme - - self.titleNode = ASTextNode() - self.titleNode.displaysAsynchronously = false - self.titleNode.maximumNumberOfLines = 1 - self.titleNode.truncationMode = .byTruncatingTail - self.titleNode.isOpaque = false - - self.infoNode = ASTextNode() - self.infoNode.displaysAsynchronously = false - self.infoNode.maximumNumberOfLines = 1 - self.infoNode.truncationMode = .byTruncatingTail - self.infoNode.isOpaque = false - - self.recordingIconNode = VoiceChatRecordingIconNode(hasBackground: false) - - super.init() - - self.addSubnode(self.titleNode) - self.addSubnode(self.infoNode) - self.addSubnode(self.recordingIconNode) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func didLoad() { - super.didLoad() - - self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tap))) - } - - override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { - if point.y > 0.0 && point.y < self.frame.size.height && point.x > min(self.titleNode.frame.minX, self.infoNode.frame.minX) && point.x < max(self.recordingIconNode.frame.maxX, self.infoNode.frame.maxX) { - return true - } else { - return false - } - } - - @objc private func tap() { - self.tapped?() - } - - func update(size: CGSize, title: String, subtitle: String, transition: ContainedViewLayoutTransition) { - var titleUpdated = false - if let previousTitle = self.titleNode.attributedText?.string { - titleUpdated = previousTitle != title - } - - if titleUpdated, let snapshotView = self.titleNode.view.snapshotContentTree() { - snapshotView.frame = self.titleNode.frame - self.view.addSubview(snapshotView) - - snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak snapshotView] _ in - snapshotView?.removeFromSuperview() - }) - - self.titleNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) - } - - self.titleNode.attributedText = NSAttributedString(string: title, font: Font.medium(17.0), textColor: UIColor(rgb: 0xffffff)) - self.infoNode.attributedText = NSAttributedString(string: subtitle, font: Font.regular(13.0), textColor: UIColor(rgb: 0xffffff, alpha: 0.5)) - - let constrainedSize = CGSize(width: size.width - 140.0, height: size.height) - let titleSize = self.titleNode.measure(constrainedSize) - let infoSize = self.infoNode.measure(constrainedSize) - let titleInfoSpacing: CGFloat = 0.0 - - let combinedHeight = titleSize.height + infoSize.height + titleInfoSpacing - - let titleFrame = CGRect(origin: CGPoint(x: floor((size.width - titleSize.width) / 2.0), y: floor((size.height - combinedHeight) / 2.0)), size: titleSize) - self.titleNode.frame = titleFrame - self.infoNode.frame = CGRect(origin: CGPoint(x: floor((size.width - infoSize.width) / 2.0), y: floor((size.height - combinedHeight) / 2.0) + titleSize.height + titleInfoSpacing), size: infoSize) - - let iconSide = 16.0 + (1.0 + UIScreenPixel) * 2.0 - let iconSize: CGSize = CGSize(width: iconSide, height: iconSide) - self.recordingIconNode.frame = CGRect(origin: CGPoint(x: titleFrame.maxX + 1.0, y: titleFrame.minY + 1.0), size: iconSize) - } -} - final class GroupVideoNode: ASDisplayNode { private let videoViewContainer: UIView private let videoView: PresentationCallVideoView @@ -730,7 +633,15 @@ public final class VoiceChatController: ViewController { private let leftBorderNode: ASDisplayNode private let rightBorderNode: ASDisplayNode - private let titleNode: VoiceChatControllerTitleNode + private var isScheduling = false + private let timerNode: VoiceChatTimerNode + private var pickerView: UIDatePicker? + private let dateFormatter: DateFormatter + private let scheduleTextNode: ImmediateTextNode + private let scheduleCancelButton: SolidRoundedButtonNode + private var scheduleButtonTitle = "" + + private let titleNode: VoiceChatTitleNode private var enqueuedTransitions: [ListTransition] = [] private var floatingHeaderOffset: CGFloat? @@ -823,6 +734,8 @@ public final class VoiceChatController: ViewController { self.context = call.accountContext self.call = call + self.isScheduling = call.schedulePending + let presentationData = sharedContext.currentPresentationData.with { $0 } self.presentationData = presentationData @@ -836,7 +749,7 @@ public final class VoiceChatController: ViewController { self.contentContainer.isHidden = true self.backgroundNode = ASDisplayNode() - self.backgroundNode.backgroundColor = secondaryPanelBackgroundColor + self.backgroundNode.backgroundColor = self.isScheduling ? panelBackgroundColor : secondaryPanelBackgroundColor self.backgroundNode.clipsToBounds = false if sharedContext.immediateExperimentalUISettings.demoVideoChats { @@ -844,6 +757,8 @@ public final class VoiceChatController: ViewController { } self.listNode = ListView() + self.listNode.alpha = self.isScheduling ? 0.0 : 1.0 + self.listNode.isUserInteractionEnabled = !self.isScheduling self.listNode.verticalScrollIndicatorColor = UIColor(white: 1.0, alpha: 0.3) self.listNode.clipsToBounds = true self.listNode.scroller.bounces = false @@ -870,7 +785,7 @@ public final class VoiceChatController: ViewController { self.closeButton = VoiceChatHeaderButton(context: self.context) self.closeButton.setContent(.image(closeButtonImage(dark: false))) - self.titleNode = VoiceChatControllerTitleNode(theme: self.presentationData.theme) + self.titleNode = VoiceChatTitleNode(theme: self.presentationData.theme) self.topCornersNode = ASImageNode() self.topCornersNode.displaysAsynchronously = false @@ -895,6 +810,13 @@ public final class VoiceChatController: ViewController { self.switchCameraButton.isUserInteractionEnabled = false self.leaveButton = CallControllerButtonItemNode() self.actionButton = VoiceChatActionButton() + + if self.isScheduling { + self.audioButton.alpha = 0.0 + self.audioButton.isUserInteractionEnabled = false + self.leaveButton.alpha = 0.0 + self.leaveButton.isUserInteractionEnabled = false + } self.leftBorderNode = ASDisplayNode() self.leftBorderNode.backgroundColor = panelBackgroundColor @@ -906,6 +828,19 @@ public final class VoiceChatController: ViewController { self.rightBorderNode.isUserInteractionEnabled = false self.rightBorderNode.clipsToBounds = false + self.scheduleTextNode = ImmediateTextNode() + self.scheduleTextNode.isHidden = !self.isScheduling + + self.scheduleCancelButton = SolidRoundedButtonNode(title: self.presentationData.strings.Common_Cancel, theme: SolidRoundedButtonTheme(backgroundColor: UIColor(rgb: 0x2b2b2f), foregroundColor: .white), height: 52.0, cornerRadius: 10.0) + self.scheduleCancelButton.isHidden = !self.isScheduling + + self.dateFormatter = DateFormatter() + self.dateFormatter.timeStyle = .none + self.dateFormatter.dateStyle = .short + self.dateFormatter.timeZone = TimeZone.current + + self.timerNode = VoiceChatTimerNode(strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat) + super.init() let statePromise = ValuePromise(State(), ignoreRepeated: true) @@ -1514,6 +1449,7 @@ public final class VoiceChatController: ViewController { } let contextController = ContextController(account: strongSelf.context.account, presentationData: strongSelf.presentationData.withUpdated(theme: strongSelf.darkTheme), source: .extracted(source), items: items, reactionItems: [], gesture: gesture) + contextController.useComplexItemsTransitionAnimation = true strongSelf.controller?.presentInGlobalOverlay(contextController) }, setPeerIdWithRevealedOptions: { peerId, _ in updateState { state in @@ -1550,6 +1486,7 @@ public final class VoiceChatController: ViewController { } self.bottomPanelNode.addSubnode(self.leaveButton) self.bottomPanelNode.addSubnode(self.actionButton) + self.bottomPanelNode.addSubnode(self.scheduleCancelButton) self.addSubnode(self.dimNode) self.addSubnode(self.contentContainer) @@ -1563,6 +1500,7 @@ public final class VoiceChatController: ViewController { self.contentContainer.addSubnode(self.leftBorderNode) self.contentContainer.addSubnode(self.rightBorderNode) self.contentContainer.addSubnode(self.bottomPanelNode) + self.contentContainer.addSubnode(self.timerNode) let invitedPeers: Signal<[Peer], NoError> = self.call.invitedPeers |> mapToSignal { ids -> Signal<[Peer], NoError> in @@ -1619,7 +1557,13 @@ public final class VoiceChatController: ViewController { let subtitle = strongSelf.presentationData.strings.VoiceChat_Panel_Members(Int32(max(1, callMembers?.totalCount ?? 0))) strongSelf.currentSubtitle = subtitle - if let callState = strongSelf.callState, callState.canManageCall { + if strongSelf.isScheduling { + strongSelf.optionsButtonIsAvatar = false + strongSelf.optionsButton.isUserInteractionEnabled = false + strongSelf.optionsButton.alpha = 0.0 + strongSelf.closeButton.isUserInteractionEnabled = false + strongSelf.closeButton.alpha = 0.0 + } else if let callState = strongSelf.callState, callState.canManageCall { strongSelf.optionsButtonIsAvatar = false strongSelf.optionsButton.isUserInteractionEnabled = true strongSelf.optionsButton.alpha = 1.0 @@ -1774,16 +1718,6 @@ public final class VoiceChatController: ViewController { } } -// self.memberEventsDisposable.set((self.call.memberEvents -// |> deliverOnMainQueue).start(next: { [weak self] event in -// guard let strongSelf = self else { -// return -// } -// if event.joined { -// strongSelf.presentUndoOverlay(content: .invitedToVoiceChat(context: strongSelf.context, peer: event.peer, text: strongSelf.presentationData.strings.VoiceChat_PeerJoinedText(event.peer.displayTitle(strings: strongSelf.presentationData.strings, displayOrder: strongSelf.presentationData.nameDisplayOrder)).0), action: { _ in return false }) -// } -// })) - self.reconnectedAsEventsDisposable.set((self.call.reconnectedAsEvents |> deliverOnMainQueue).start(next: { [weak self] peer in guard let strongSelf = self else { @@ -1874,22 +1808,32 @@ public final class VoiceChatController: ViewController { })) self.titleNode.tapped = { [weak self] in - if let strongSelf = self, !strongSelf.titleNode.recordingIconNode.isHidden { - var hasTooltipAlready = false - strongSelf.controller?.forEachController { controller -> Bool in - if controller is TooltipScreen { - hasTooltipAlready = true + if let strongSelf = self { + if strongSelf.callState?.canManageCall ?? false { + strongSelf.openTitleEditing() + } else if !strongSelf.titleNode.recordingIconNode.isHidden { + var hasTooltipAlready = false + strongSelf.controller?.forEachController { controller -> Bool in + if controller is TooltipScreen { + hasTooltipAlready = true + } + return true + } + if !hasTooltipAlready { + let location = strongSelf.titleNode.recordingIconNode.convert(strongSelf.titleNode.recordingIconNode.bounds, to: nil) + strongSelf.controller?.present(TooltipScreen(text: presentationData.strings.VoiceChat_RecordingInProgress, icon: nil, location: .point(location.offsetBy(dx: 1.0, dy: 0.0), .top), displayDuration: .custom(3.0), shouldDismissOnTouch: { _ in + return .dismiss(consume: true) + }), in: .window(.root)) } - return true - } - if !hasTooltipAlready { - let location = strongSelf.titleNode.recordingIconNode.convert(strongSelf.titleNode.recordingIconNode.bounds, to: nil) - strongSelf.controller?.present(TooltipScreen(text: presentationData.strings.VoiceChat_RecordingInProgress, icon: nil, location: .point(location.offsetBy(dx: 1.0, dy: 0.0), .top), displayDuration: .custom(3.0), shouldDismissOnTouch: { _ in - return .dismiss(consume: true) - }), in: .window(.root)) } } } + + self.scheduleCancelButton.pressed = { [weak self] in + if let strongSelf = self { + strongSelf.dismissScheduled() + } + } } deinit { @@ -1931,7 +1875,7 @@ public final class VoiceChatController: ViewController { let avatarSize = CGSize(width: 28.0, height: 28.0) - return combineLatest(self.displayAsPeersPromise.get(), self.context.account.postbox.loadedPeerWithId(call.peerId), self.inviteLinksPromise.get()) + return combineLatest(self.displayAsPeersPromise.get(), self.context.account.postbox.loadedPeerWithId(self.call.peerId), self.inviteLinksPromise.get()) |> take(1) |> deliverOnMainQueue |> map { [weak self] peers, chatPeer, inviteLinks -> [ContextMenuItem] in @@ -1965,15 +1909,7 @@ public final class VoiceChatController: ViewController { guard let strongSelf = self else { return } - - let controller = voiceChatTitleEditController(sharedContext: strongSelf.context.sharedContext, account: strongSelf.context.account, forceTheme: strongSelf.darkTheme, title: presentationData.strings.VoiceChat_EditTitleTitle, text: presentationData.strings.VoiceChat_EditTitleText, placeholder: chatPeer.displayTitle(strings: strongSelf.presentationData.strings, displayOrder: strongSelf.presentationData.nameDisplayOrder), value: strongSelf.callState?.title, maxLength: 40, apply: { title in - if let strongSelf = self, let title = title { - strongSelf.call.updateTitle(title) - - strongSelf.presentUndoOverlay(content: .voiceChatFlag(text: title.isEmpty ? strongSelf.presentationData.strings.VoiceChat_EditTitleRemoveSuccess : strongSelf.presentationData.strings.VoiceChat_EditTitleSuccess(title).0), action: { _ in return false }) - } - }) - self?.controller?.present(controller, in: .window(.root)) + strongSelf.openTitleEditing() }))) var hasPermissions = true @@ -1994,16 +1930,7 @@ public final class VoiceChatController: ViewController { c.setItems(strongSelf.contextMenuPermissionItems()) }))) } - - items.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.VoiceChat_EditPermissions, icon: { theme -> UIImage? in - return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Restrict"), color: theme.actionSheet.primaryTextColor) - }, action: { c, _ in - guard let strongSelf = self else { - return - } - c.setItems(strongSelf.contextMenuPermissionItems()) - }))) - + if let inviteLinks = inviteLinks { items.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.VoiceChat_Share, icon: { theme in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Link"), color: theme.actionSheet.primaryTextColor) @@ -2044,25 +1971,27 @@ public final class VoiceChatController: ViewController { self?.controller?.present(alertController, in: .window(.root)) }), false)) } else { - items.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.VoiceChat_StartRecording, icon: { theme -> UIImage? in - return generateStartRecordingIcon(color: theme.actionSheet.primaryTextColor) - }, action: { _, f in - f(.dismissWithoutContent) + if strongSelf.callState?.scheduleTimestamp == nil { + items.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.VoiceChat_StartRecording, icon: { theme -> UIImage? in + return generateStartRecordingIcon(color: theme.actionSheet.primaryTextColor) + }, action: { _, f in + f(.dismissWithoutContent) - guard let strongSelf = self else { - return - } - - let controller = voiceChatTitleEditController(sharedContext: strongSelf.context.sharedContext, account: strongSelf.context.account, forceTheme: strongSelf.darkTheme, title: presentationData.strings.VoiceChat_StartRecordingTitle, text: presentationData.strings.VoiceChat_StartRecordingText, placeholder: presentationData.strings.VoiceChat_RecordingTitlePlaceholder, value: nil, maxLength: 40, apply: { title in - if let strongSelf = self, let title = title { - strongSelf.call.setShouldBeRecording(true, title: title) - - strongSelf.presentUndoOverlay(content: .voiceChatRecording(text: strongSelf.presentationData.strings.VoiceChat_RecordingStarted), action: { _ in return false }) - strongSelf.call.playTone(.recordingStarted) + guard let strongSelf = self else { + return } - }) - self?.controller?.present(controller, in: .window(.root)) - }))) + + let controller = voiceChatTitleEditController(sharedContext: strongSelf.context.sharedContext, account: strongSelf.context.account, forceTheme: strongSelf.darkTheme, title: presentationData.strings.VoiceChat_StartRecordingTitle, text: presentationData.strings.VoiceChat_StartRecordingText, placeholder: presentationData.strings.VoiceChat_RecordingTitlePlaceholder, value: nil, maxLength: 40, apply: { title in + if let strongSelf = self, let title = title { + strongSelf.call.setShouldBeRecording(true, title: title) + + strongSelf.presentUndoOverlay(content: .voiceChatRecording(text: strongSelf.presentationData.strings.VoiceChat_RecordingStarted), action: { _ in return false }) + strongSelf.call.playTone(.recordingStarted) + } + }) + self?.controller?.present(controller, in: .window(.root)) + }))) + } } items.append(.action(ContextMenuActionItem(text: strongSelf.isNoiseSuppressionEnabled ? "Disable Noise Suppression" : "Enable Noise Suppression", textColor: .primary, icon: { theme in @@ -2275,6 +2204,161 @@ public final class VoiceChatController: ViewController { panRecognizer.delaysTouchesBegan = false panRecognizer.cancelsTouchesInView = true self.view.addGestureRecognizer(panRecognizer) + + if self.isScheduling { + self.setupPickerView() + self.updateScheduleButtonTitle() + } + } + + private func updateMinimumDate() { + let timeZone = TimeZone(secondsFromGMT: 0)! + var calendar = Calendar(identifier: .gregorian) + calendar.timeZone = timeZone + let currentDate = Date() + var components = calendar.dateComponents(Set([.era, .year, .month, .day, .hour, .minute, .second]), from: currentDate) + components.second = 0 + let minute = (components.minute ?? 0) % 5 + + let next1MinDate = calendar.date(byAdding: .minute, value: 1, to: calendar.date(from: components)!) + let next5MinDate = calendar.date(byAdding: .minute, value: 5 - minute, to: calendar.date(from: components)!) + + if let date = calendar.date(byAdding: .day, value: 365, to: currentDate) { + self.pickerView?.maximumDate = date + } + + if let next1MinDate = next1MinDate, let next5MinDate = next5MinDate { + self.pickerView?.minimumDate = next1MinDate + self.pickerView?.date = next5MinDate + } + } + + private func setupPickerView() { + var currentDate: Date? + if let pickerView = self.pickerView { + currentDate = pickerView.date + pickerView.removeFromSuperview() + } + + let textColor = UIColor.white + UILabel.setDateLabel(textColor) + + let pickerView = UIDatePicker() + pickerView.timeZone = TimeZone(secondsFromGMT: 0) + pickerView.datePickerMode = .countDownTimer + pickerView.datePickerMode = .dateAndTime + pickerView.locale = Locale.current + pickerView.timeZone = TimeZone.current + pickerView.minuteInterval = 1 + self.contentContainer.view.addSubview(pickerView) + pickerView.addTarget(self, action: #selector(self.datePickerUpdated), for: .valueChanged) + if #available(iOS 13.4, *) { + pickerView.preferredDatePickerStyle = .wheels + } + pickerView.setValue(textColor, forKey: "textColor") + self.pickerView = pickerView + + self.updateMinimumDate() + if let currentDate = currentDate { + pickerView.date = currentDate + } + } + + private let calendar = Calendar(identifier: .gregorian) + private func updateScheduleButtonTitle() { + guard let date = self.pickerView?.date else { + return + } + + let calendar = Calendar(identifier: .gregorian) + let time = stringForMessageTimestamp(timestamp: Int32(date.timeIntervalSince1970), dateTimeFormat: self.presentationData.dateTimeFormat) + let buttonTitle: String + if calendar.isDateInToday(date) { + buttonTitle = self.presentationData.strings.ScheduleVoiceChat_ScheduleToday(time).0 + } else if calendar.isDateInTomorrow(date) { + buttonTitle = self.presentationData.strings.ScheduleVoiceChat_ScheduleTomorrow(time).0 + } else { + buttonTitle = self.presentationData.strings.ScheduleVoiceChat_ScheduleOn(self.dateFormatter.string(from: date), time).0 + } + self.scheduleButtonTitle = buttonTitle + + if let (layout, navigationHeight) = self.validLayout { + self.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .spring)) + } + } + + @objc private func datePickerUpdated() { + self.updateScheduleButtonTitle() + } + + private func schedule() { + if let date = self.pickerView?.date, date > Date() { + self.call.schedule(timestamp: Int32(date.timeIntervalSince1970)) + + self.isScheduling = false + self.transitionToScheduled() + if let (layout, navigationHeight) = self.validLayout { + self.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .spring)) + } + } + } + + private func dismissScheduled() { + self.leaveDisposable.set((self.call.leave(terminateIfPossible: true) + |> deliverOnMainQueue).start(completed: { [weak self] in + self?.controller?.dismiss(closing: true) + })) + } + + private func transitionToScheduled() { + self.optionsButton.alpha = 1.0 + self.optionsButton.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.optionsButton.layer.animateSpring(from: 0.01 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.42, damping: 104.0) + self.optionsButton.isUserInteractionEnabled = true + + self.closeButton.alpha = 1.0 + self.closeButton.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.closeButton.layer.animateSpring(from: 0.01 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.42, damping: 104.0) + self.closeButton.isUserInteractionEnabled = true + + self.audioButton.alpha = 1.0 + self.audioButton.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.audioButton.layer.animateSpring(from: 0.01 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.42, damping: 104.0) + self.audioButton.isUserInteractionEnabled = true + + self.leaveButton.alpha = 1.0 + self.leaveButton.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.leaveButton.layer.animateSpring(from: 0.01 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.42, damping: 104.0) + self.leaveButton.isUserInteractionEnabled = true + + self.scheduleCancelButton.alpha = 0.0 + self.scheduleCancelButton.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2) + self.scheduleCancelButton.layer.animatePosition(from: CGPoint(), to: CGPoint(x: 0.0, y: 26.0), duration: 0.2, removeOnCompletion: false, additive: true) + + if let pickerView = self.pickerView { + pickerView.alpha = 0.0 + pickerView.layer.animateScale(from: 1.0, to: 0.1, duration: 0.2) + pickerView.isUserInteractionEnabled = false + } + + self.timerNode.alpha = 1.0 + self.timerNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.timerNode.layer.animateSpring(from: 0.4 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.3, damping: 104.0) + self.timerNode.animateIn() + + self.updateTitle(transition: .animated(duration: 0.2, curve: .easeInOut)) + } + + private func transitionToCall() { + self.updateIsFullscreen(false, force: true) + + self.listNode.alpha = 1.0 + self.listNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + + self.timerNode.alpha = 0.0 + self.timerNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2) + + self.updateTitle(transition: .animated(duration: 0.2, curve: .easeInOut)) } @objc private func optionsPressed() { @@ -2491,7 +2575,31 @@ public final class VoiceChatController: ViewController { guard let callState = self.callState else { return } - if case .connecting = callState.networkState { + if case .connecting = callState.networkState, callState.scheduleTimestamp == nil && !self.isScheduling { + return + } + if callState.scheduleTimestamp != nil || self.isScheduling { + switch gestureRecognizer.state { + case .began: + self.actionButton.pressing = true + self.hapticFeedback.impact(.light) + case .ended, .cancelled: + self.actionButton.pressing = false + + let location = gestureRecognizer.location(in: self.actionButton.view) + if self.actionButton.hitTest(location, with: nil) != nil { + if self.isScheduling { + self.schedule() + } else if callState.canManageCall { + self.call.startScheduled() + self.transitionToCall() + } else { + + } + } + default: + break + } return } if let muteState = callState.muteState { @@ -2548,11 +2656,27 @@ public final class VoiceChatController: ViewController { } @objc private func actionButtonPressed() { + if self.isScheduling { + self.schedule() + } } @objc private func audioOutputPressed() { self.hapticFeedback.impact(.light) + if let _ = self.callState?.scheduleTimestamp { + let _ = (self.inviteLinksPromise.get() + |> take(1) + |> deliverOnMainQueue).start(next: { [weak self] inviteLinks in + if let inviteLinks = inviteLinks { + self?.presentShare(inviteLinks) + } else { + self?.presentShare(GroupCallInviteLinks(listenerLink: "a", speakerLink: nil)) + } + }) + return + } + guard let (availableOutputs, currentOutput) = self.audioOutputState else { return } @@ -2743,8 +2867,8 @@ public final class VoiceChatController: ViewController { } var isFullscreen = false - func updateIsFullscreen(_ isFullscreen: Bool) { - guard self.isFullscreen != isFullscreen, let (layout, _) = self.validLayout else { + func updateIsFullscreen(_ isFullscreen: Bool, force: Bool = false) { + guard self.isFullscreen != isFullscreen || force, let (layout, _) = self.validLayout else { return } self.isFullscreen = isFullscreen @@ -2770,16 +2894,20 @@ public final class VoiceChatController: ViewController { topEdgeFrame = CGRect(x: 0.0, y: 0.0, width: size.width, height: topPanelHeight) } + var isScheduled = false + if self.isScheduling || self.callState?.scheduleTimestamp != nil { + isScheduled = true + } + let transition: ContainedViewLayoutTransition = .animated(duration: 0.3, curve: .linear) transition.updateFrame(node: self.topPanelEdgeNode, frame: topEdgeFrame) transition.updateCornerRadius(node: self.topPanelEdgeNode, cornerRadius: isFullscreen ? layout.deviceMetrics.screenCornerRadius - 0.5 : 12.0) transition.updateBackgroundColor(node: self.topPanelBackgroundNode, color: isFullscreen ? fullscreenBackgroundColor : panelBackgroundColor) transition.updateBackgroundColor(node: self.topPanelEdgeNode, color: isFullscreen ? fullscreenBackgroundColor : panelBackgroundColor) - transition.updateBackgroundColor(node: self.backgroundNode, color: isFullscreen ? panelBackgroundColor : secondaryPanelBackgroundColor) + transition.updateBackgroundColor(node: self.backgroundNode, color: isFullscreen || isScheduled ? panelBackgroundColor : secondaryPanelBackgroundColor) transition.updateBackgroundColor(node: self.bottomPanelBackgroundNode, color: isFullscreen ? fullscreenBackgroundColor : panelBackgroundColor) transition.updateBackgroundColor(node: self.leftBorderNode, color: isFullscreen ? fullscreenBackgroundColor : panelBackgroundColor) transition.updateBackgroundColor(node: self.rightBorderNode, color: isFullscreen ? fullscreenBackgroundColor : panelBackgroundColor) - transition.updateBackgroundColor(node: self.rightBorderNode, color: isFullscreen ? fullscreenBackgroundColor : panelBackgroundColor) if let snapshotView = self.topCornersNode.view.snapshotContentTree() { snapshotView.frame = self.topCornersNode.frame @@ -2814,22 +2942,39 @@ public final class VoiceChatController: ViewController { return } var title = self.currentTitle - if !self.isFullscreen && !self.currentTitleIsCustom { + if self.isScheduling { + title = self.presentationData.strings.ScheduleVoiceChat_Title + } else if !self.isFullscreen && !self.currentTitleIsCustom { if let navigationController = self.controller?.navigationController as? NavigationController { for controller in navigationController.viewControllers.reversed() { if let controller = controller as? ChatController, case let .peer(peerId) = controller.chatLocation, peerId == self.call.peerId { - title = self.presentationData.strings.VoiceChat_Title + if self.callState?.scheduleTimestamp != nil { + title = self.presentationData.strings.VoiceChat_ScheduledTitle + } else { + title = self.presentationData.strings.VoiceChat_Title + } } } } } + var subtitle = self.currentSubtitle + if self.isScheduling { + subtitle = "" + } else if self.callState?.scheduleTimestamp != nil { + if self.callState?.canManageCall ?? false { + subtitle = self.presentationData.strings.VoiceChat_TapToEditTitle + } else { + subtitle = "" + } + } + var size = layout.size if case .regular = layout.metrics.widthClass { size.width = floor(min(size.width, size.height) * 0.5) } - self.titleNode.update(size: CGSize(width: size.width, height: 44.0), title: title, subtitle: self.currentSubtitle, transition: transition) + self.titleNode.update(size: CGSize(width: size.width, height: 44.0), title: title, subtitle: subtitle, transition: transition) } private func updateButtons(animated: Bool) { @@ -2866,7 +3011,7 @@ public final class VoiceChatController: ViewController { coloredButtonAppearance = .color(.custom(self.isFullscreen ? 0x1c1c1e : 0x2c2c2e, 1.0)) } - let soundImage: CallControllerButtonItemNode.Content.Image + var soundImage: CallControllerButtonItemNode.Content.Image var soundAppearance: CallControllerButtonItemNode.Content.Appearance = coloredButtonAppearance var soundTitle: String = self.presentationData.strings.Call_Speaker switch audioMode { @@ -2890,6 +3035,12 @@ public final class VoiceChatController: ViewController { soundTitle = self.presentationData.strings.Call_Audio } + if self.isScheduling || self.callState?.scheduleTimestamp != nil { + soundImage = .share + soundTitle = self.presentationData.strings.VoiceChat_ShareShort + soundAppearance = coloredButtonAppearance + } + let videoButtonSize: CGSize var buttonsTitleAlpha: CGFloat switch self.displayMode { @@ -2916,6 +3067,7 @@ public final class VoiceChatController: ViewController { transition.updateAlpha(node: self.leaveButton.textNode, alpha: buttonsTitleAlpha) } + private var ignoreNextConnecting = false func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationHeight: CGFloat, transition: ContainedViewLayoutTransition) { let isFirstTime = self.validLayout == nil self.validLayout = (layout, navigationHeight) @@ -2993,7 +3145,16 @@ public final class VoiceChatController: ViewController { let bottomPanelFrame = CGRect(origin: CGPoint(x: 0.0, y: layout.size.height - bottomPanelHeight), size: CGSize(width: size.width, height: bottomPanelHeight)) transition.updateFrame(node: self.bottomPanelNode, frame: bottomPanelFrame) - let centralButtonSize = CGSize(width: 300.0, height: 300.0) + if let pickerView = self.pickerView { + transition.updateFrame(view: pickerView, frame: CGRect(x: 0.0, y: layout.size.height - bottomPanelHeight - 216.0, width: size.width, height: 216.0)) + } + + let timerFrame = CGRect(x: 0.0, y: layout.size.height - bottomPanelHeight - 216.0, width: size.width, height: 216.0) + transition.updateFrame(node: self.timerNode, frame: timerFrame) + self.timerNode.update(size: timerFrame.size, scheduleTime: self.callState?.scheduleTimestamp, transition: .immediate) + + let centralButtonSide = min(size.width, size.height) - 32.0 + let centralButtonSize = CGSize(width: centralButtonSide, height: centralButtonSide) let cameraButtonSize = CGSize(width: 36.0, height: 36.0) let sideButtonMinimalInset: CGFloat = 16.0 let sideButtonOffset = min(42.0, floor((((size.width - 112.0) / 2.0) - sideButtonSize.width) / 2.0)) @@ -3037,48 +3198,76 @@ public final class VoiceChatController: ViewController { let actionButtonTitle: String let actionButtonSubtitle: String var actionButtonEnabled = true - if let callState = self.callState { - switch callState.networkState { - case .connecting: + if let callState = self.callState, !self.isScheduling { + var isScheduled = callState.scheduleTimestamp != nil + if isScheduled { + self.ignoreNextConnecting = true + if callState.canManageCall { + actionButtonState = .scheduled(state: .start) + actionButtonTitle = self.presentationData.strings.VoiceChat_StartNow + actionButtonSubtitle = "" + } else { + actionButtonState = .scheduled(state: .subscribe) + actionButtonTitle = self.presentationData.strings.VoiceChat_SetReminder + actionButtonSubtitle = "" + } + } else { + let connected = self.ignoreNextConnecting || callState.networkState == .connected + if case .connected = callState.networkState { + self.ignoreNextConnecting = false + } + + if connected { + if let muteState = callState.muteState, !self.pushingToTalk { + if muteState.canUnmute { + actionButtonState = .active(state: .muted) + + actionButtonTitle = self.presentationData.strings.VoiceChat_Unmute + actionButtonSubtitle = "" + } else { + actionButtonState = .active(state: .cantSpeak) + + if callState.raisedHand { + actionButtonTitle = self.presentationData.strings.VoiceChat_AskedToSpeak + actionButtonSubtitle = self.presentationData.strings.VoiceChat_AskedToSpeakHelp + } else { + actionButtonTitle = self.presentationData.strings.VoiceChat_MutedByAdmin + actionButtonSubtitle = self.presentationData.strings.VoiceChat_MutedByAdminHelp + } + } + } else { + actionButtonState = .active(state: .on) + + actionButtonTitle = self.pushingToTalk ? self.presentationData.strings.VoiceChat_Live : self.presentationData.strings.VoiceChat_Mute + actionButtonSubtitle = "" + } + } else { + actionButtonState = .connecting + actionButtonTitle = self.presentationData.strings.VoiceChat_Connecting + actionButtonSubtitle = "" + actionButtonEnabled = false + } + } + } else { + if self.isScheduling { + actionButtonState = .button(text: self.scheduleButtonTitle) + actionButtonTitle = "" + actionButtonSubtitle = "" + actionButtonEnabled = true + } else { actionButtonState = .connecting actionButtonTitle = self.presentationData.strings.VoiceChat_Connecting actionButtonSubtitle = "" actionButtonEnabled = false - case .connected: - if let muteState = callState.muteState, !self.pushingToTalk { - if muteState.canUnmute { - actionButtonState = .active(state: .muted) - - actionButtonTitle = self.presentationData.strings.VoiceChat_Unmute - actionButtonSubtitle = "" - } else { - actionButtonState = .active(state: .cantSpeak) - - if callState.raisedHand { - actionButtonTitle = self.presentationData.strings.VoiceChat_AskedToSpeak - actionButtonSubtitle = self.presentationData.strings.VoiceChat_AskedToSpeakHelp - } else { - actionButtonTitle = self.presentationData.strings.VoiceChat_MutedByAdmin - actionButtonSubtitle = self.presentationData.strings.VoiceChat_MutedByAdminHelp - } - } - } else { - actionButtonState = .active(state: .on) - - actionButtonTitle = self.pushingToTalk ? self.presentationData.strings.VoiceChat_Live : self.presentationData.strings.VoiceChat_Mute - actionButtonSubtitle = "" - } } - } else { - actionButtonState = .connecting - actionButtonTitle = self.presentationData.strings.VoiceChat_Connecting - actionButtonSubtitle = "" - actionButtonEnabled = false } self.actionButton.isDisabled = !actionButtonEnabled self.actionButton.update(size: centralButtonSize, buttonSize: CGSize(width: 112.0, height: 112.0), state: actionButtonState, title: actionButtonTitle, subtitle: actionButtonSubtitle, dark: self.isFullscreen, small: smallButtons, animated: true) + let buttonHeight = self.scheduleCancelButton.updateLayout(width: size.width - 32.0, transition: .immediate) + self.scheduleCancelButton.frame = CGRect(x: 16.0, y: 137.0, width: size.width - 32.0, height: buttonHeight) + if self.actionButton.supernode === self.bottomPanelNode { transition.updateFrame(node: self.actionButton, frame: thirdButtonFrame) } @@ -3196,6 +3385,12 @@ public final class VoiceChatController: ViewController { } self.enqueuedTransitions.remove(at: 0) + if self.callState?.scheduleTimestamp != nil && self.listNode.alpha > 0.0 { + self.listNode.alpha = 0.0 + self.backgroundNode.backgroundColor = panelBackgroundColor + self.updateIsFullscreen(false) + } + var options = ListViewDeleteAndInsertOptions() let isFirstTime = self.isFirstTime if isFirstTime { @@ -3235,7 +3430,11 @@ public final class VoiceChatController: ViewController { let listTopInset = layoutTopInset + 63.0 let listSize = CGSize(width: size.width, height: layout.size.height - listTopInset - bottomPanelHeight) - self.topInset = max(0.0, max(listSize.height - itemsHeight, listSize.height - 46.0 - floor(56.0 * 3.5))) + if self.isScheduling || self.callState?.scheduleTimestamp != nil { + self.topInset = listSize.height - 46.0 - floor(56.0 * 3.5) + } else { + self.topInset = max(0.0, max(listSize.height - itemsHeight, listSize.height - 46.0 - floor(56.0 * 3.5))) + } let targetY = listTopInset + (self.topInset ?? listSize.height) @@ -3453,9 +3652,12 @@ public final class VoiceChatController: ViewController { } override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { - if gestureRecognizer is DirectionalPanGestureRecognizer { + if gestureRecognizer is UILongPressGestureRecognizer { + return !self.isScheduling + } else if gestureRecognizer is DirectionalPanGestureRecognizer { let location = gestureRecognizer.location(in: self.bottomPanelNode.view) - if self.audioButton.frame.contains(location) || (!self.cameraButton.isHidden && self.cameraButton.frame.contains(location)) || self.leaveButton.frame.contains(location) { + let containerLocation = gestureRecognizer.location(in: self.contentContainer.view) + if self.audioButton.frame.contains(location) || (!self.cameraButton.isHidden && self.cameraButton.frame.contains(location)) || self.leaveButton.frame.contains(location) || self.pickerView?.frame.contains(containerLocation) == true { return false } } @@ -3494,6 +3696,9 @@ public final class VoiceChatController: ViewController { self.controller?.dismissAllTooltips() case .changed: var translation = recognizer.translation(in: self.contentContainer.view).y + if (self.isScheduling || self.callState?.scheduleTimestamp != nil) && translation < 0.0 { + return + } var topInset: CGFloat = 0.0 if let (currentTopInset, currentPanOffset) = self.panGestureArguments { topInset = currentTopInset @@ -3591,9 +3796,13 @@ public final class VoiceChatController: ViewController { self.panGestureArguments = nil var dismissing = false if bounds.minY < -60 || (bounds.minY < 0.0 && velocity.y > 300.0) { - self.controller?.dismiss(closing: false, manual: true) + if self.isScheduling { + self.dismissScheduled() + } else { + self.controller?.dismiss(closing: false, manual: true) + } dismissing = true - } else if velocity.y < -300.0 || offset < topInset / 2.0 { + } else if !self.isScheduling && (velocity.y < -300.0 || offset < topInset / 2.0) { if velocity.y > -1500.0 && !self.isFullscreen { DispatchQueue.main.async { self.listNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: ListViewScrollToItem(index: 0, position: .top(0.0), animated: true, curve: .Default(duration: nil), directionHint: .Up), updateSizeAndInsets: nil, stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in }) @@ -3610,7 +3819,7 @@ public final class VoiceChatController: ViewController { self.updateFloatingHeaderOffset(offset: self.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut), completion: { self.animatingExpansion = false }) - } else { + } else if !self.isScheduling { self.updateIsFullscreen(false) self.animatingExpansion = true self.listNode.scroller.setContentOffset(CGPoint(), animated: false) @@ -3684,6 +3893,24 @@ public final class VoiceChatController: ViewController { } } + private func openTitleEditing() { + let _ = (self.context.account.postbox.loadedPeerWithId(self.call.peerId) + |> deliverOnMainQueue).start(next: { [weak self] chatPeer in + guard let strongSelf = self else { + return + } + + let controller = voiceChatTitleEditController(sharedContext: strongSelf.context.sharedContext, account: strongSelf.context.account, forceTheme: strongSelf.darkTheme, title: strongSelf.presentationData.strings.VoiceChat_EditTitleTitle, text: strongSelf.presentationData.strings.VoiceChat_EditTitleText, placeholder: chatPeer.displayTitle(strings: strongSelf.presentationData.strings, displayOrder: strongSelf.presentationData.nameDisplayOrder), value: strongSelf.callState?.title, maxLength: 40, apply: { title in + if let strongSelf = self, let title = title { + strongSelf.call.updateTitle(title) + + strongSelf.presentUndoOverlay(content: .voiceChatFlag(text: title.isEmpty ? strongSelf.presentationData.strings.VoiceChat_EditTitleRemoveSuccess : strongSelf.presentationData.strings.VoiceChat_EditTitleSuccess(title).0), action: { _ in return false }) + } + }) + strongSelf.controller?.present(controller, in: .window(.root)) + }) + } + private func openAvatarForEditing(fromGallery: Bool = false, completion: @escaping () -> Void = {}) { guard let peerId = self.callState?.myPeerId else { return @@ -3765,7 +3992,7 @@ public final class VoiceChatController: ViewController { return } - let proceed = { + let proceed = { let _ = strongSelf.currentAvatarMixin.swap(nil) let postbox = strongSelf.context.account.postbox strongSelf.updateAvatarDisposable.set((updatePeerPhoto(postbox: strongSelf.context.account.postbox, network: strongSelf.context.account.network, stateManager: strongSelf.context.account.stateManager, accountPeerId: strongSelf.context.account.peerId, peerId: peerId, photo: nil, mapResourceToAvatarSizes: { resource, representations in @@ -4096,6 +4323,8 @@ public final class VoiceChatController: ViewController { let count = navigationController.viewControllers.count if count == 2 || navigationController.viewControllers[count - 2] is ChatController { if case .active(.cantSpeak) = self.controllerNode.actionButton.stateValue { + } else if case .button = self.controllerNode.actionButton.stateValue { + } else if case .scheduled = self.controllerNode.actionButton.stateValue { } else if let chatController = navigationController.viewControllers[count - 2] as? ChatController, chatController.isSendButtonVisible { } else if let tabBarController = navigationController.viewControllers[count - 2] as? TabBarController, let chatListController = tabBarController.controllers[tabBarController.selectedIndex] as? ChatListController, chatListController.isSearchActive { } else { diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatJoinScreen.swift b/submodules/TelegramCallsUI/Sources/VoiceChatJoinScreen.swift index b6086120ad..2b0c01617f 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatJoinScreen.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatJoinScreen.swift @@ -145,7 +145,7 @@ public final class VoiceChatJoinScreen: ViewController { defaultJoinAsPeerId = cachedData.callJoinPeerId } - let activeCall = CachedChannelData.ActiveCall(id: call.info.id, accessHash: call.info.accessHash, title: call.info.title) + let activeCall = CachedChannelData.ActiveCall(id: call.info.id, accessHash: call.info.accessHash, title: call.info.title, scheduleTimestamp: call.info.scheduleTimestamp, subscribed: false) if availablePeers.count > 0 && defaultJoinAsPeerId == nil { strongSelf.dismiss() strongSelf.join(activeCall) diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatOverlayController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatOverlayController.swift index 73a578f66f..1917f3cef8 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatOverlayController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatOverlayController.swift @@ -396,7 +396,7 @@ public final class VoiceChatOverlayController: ViewController { var slide = true var hidden = true var animated = true - var animateInsets = true + if controllers.count == 1 || controllers.last is ChatController { if let chatController = controllers.last as? ChatController { slide = false @@ -416,9 +416,13 @@ public final class VoiceChatOverlayController: ViewController { hidden = true } - if case .active(.cantSpeak) = state { - hidden = true + switch state { + case .active(.cantSpeak), .button, .scheduled: + hidden = true + default: + break } + if hasVoiceChatController { hidden = false animated = self.initiallyHidden @@ -429,7 +433,6 @@ public final class VoiceChatOverlayController: ViewController { let previousInsets = self.additionalSideInsets self.additionalSideInsets = hidden ? UIEdgeInsets() : UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 75.0) - if previousInsets != self.additionalSideInsets { self.parentNavigationController?.requestLayout(transition: .animated(duration: 0.3, curve: .easeInOut)) } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatTimerNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatTimerNode.swift new file mode 100644 index 0000000000..fe3a71af12 --- /dev/null +++ b/submodules/TelegramCallsUI/Sources/VoiceChatTimerNode.swift @@ -0,0 +1,143 @@ +import Foundation +import UIKit +import AsyncDisplayKit +import Display +import SwiftSignalKit +import TelegramPresentationData +import TelegramStringFormatting + +private let purple = UIColor(rgb: 0x3252ef) +private let pink = UIColor(rgb: 0xef436c) + +final class VoiceChatTimerNode: ASDisplayNode { + private let strings: PresentationStrings + private let dateTimeFormat: PresentationDateTimeFormat + + private let titleNode: ImmediateTextNode + private let subtitleNode: ImmediateTextNode + + private let timerNode: ImmediateTextNode + + private let foregroundView = UIView() + private let foregroundGradientLayer = CAGradientLayer() + private let maskView = UIView() + + private var validLayout: CGSize? + + private var updateTimer: SwiftSignalKit.Timer? + + init(strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat) { + self.strings = strings + self.dateTimeFormat = dateTimeFormat + + self.titleNode = ImmediateTextNode() + self.subtitleNode = ImmediateTextNode() + + self.timerNode = ImmediateTextNode() + + super.init() + + self.allowsGroupOpacity = true + + self.foregroundGradientLayer.type = .radial + self.foregroundGradientLayer.colors = [pink.cgColor, purple.cgColor, purple.cgColor] + self.foregroundGradientLayer.locations = [0.0, 0.85, 1.0] + self.foregroundGradientLayer.startPoint = CGPoint(x: 1.0, y: 0.0) + self.foregroundGradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0) + + self.foregroundView.mask = self.maskView + self.foregroundView.layer.addSublayer(self.foregroundGradientLayer) + + self.view.addSubview(self.foregroundView) + self.addSubnode(self.titleNode) + self.addSubnode(self.subtitleNode) + + self.maskView.addSubnode(self.timerNode) + } + + deinit { + self.updateTimer?.invalidate() + } + + func animateIn() { + self.foregroundView.layer.animateSpring(from: 0.01 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.42, damping: 104.0) + } + + private func setupGradientAnimations() { + if let _ = self.foregroundGradientLayer.animation(forKey: "movement") { + } else { + let previousValue = self.foregroundGradientLayer.startPoint + let newValue = CGPoint(x: CGFloat.random(in: 0.65 ..< 0.85), y: CGFloat.random(in: 0.1 ..< 0.45)) + self.foregroundGradientLayer.startPoint = newValue + + CATransaction.begin() + + let animation = CABasicAnimation(keyPath: "startPoint") + animation.duration = Double.random(in: 0.8 ..< 1.4) + animation.fromValue = previousValue + animation.toValue = newValue + + CATransaction.setCompletionBlock { [weak self] in +// if let isCurrentlyInHierarchy = self?.isCurrentlyInHierarchy, isCurrentlyInHierarchy { + self?.setupGradientAnimations() +// } + } + + self.foregroundGradientLayer.add(animation, forKey: "movement") + CATransaction.commit() + } + } + + func update(size: CGSize, scheduleTime: Int32?, transition: ContainedViewLayoutTransition) { + if self.validLayout == nil { + self.setupGradientAnimations() + } + self.validLayout = size + + guard let scheduleTime = scheduleTime else { + return + } + + self.foregroundView.frame = CGRect(origin: CGPoint(), size: size) + self.foregroundGradientLayer.frame = self.foregroundView.bounds + self.maskView.frame = self.foregroundView.bounds + + let currentTime = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970) + let elapsedTime = scheduleTime - currentTime + let timerText: String + if elapsedTime >= 86400 { + timerText = timeIntervalString(strings: self.strings, value: elapsedTime) + } else if elapsedTime < 0 { + timerText = "\(textForTimeout(value: abs(elapsedTime)))" + } else { + timerText = textForTimeout(value: elapsedTime) + } + + if self.updateTimer == nil { + let timer = SwiftSignalKit.Timer(timeout: 0.5, repeat: true, completion: { [weak self] in + if let strongSelf = self, let size = strongSelf.validLayout { + strongSelf.update(size: size, scheduleTime: scheduleTime, transition: .immediate) + } + }, queue: Queue.mainQueue()) + self.updateTimer = timer + timer.start() + } + + let subtitle = humanReadableStringForTimestamp(strings: self.strings, dateTimeFormat: self.dateTimeFormat, timestamp: scheduleTime) + + self.titleNode.attributedText = NSAttributedString(string: elapsedTime < 0 ? self.strings.VoiceChat_LateBy : self.strings.VoiceChat_StartsIn, font: Font.with(size: 23.0, design: .round, weight: .semibold, traits: []), textColor: .white) + let titleSize = self.titleNode.updateLayout(size) + self.titleNode.frame = CGRect(x: floor((size.width - titleSize.width) / 2.0), y: 48.0, width: titleSize.width, height: titleSize.height) + + self.timerNode.attributedText = NSAttributedString(string: timerText, font: Font.with(size: 68.0, design: .round, weight: .semibold, traits: [.monospacedNumbers]), textColor: .white) + + let timerSize = self.timerNode.updateLayout(size) + self.timerNode.frame = CGRect(x: floor((size.width - timerSize.width) / 2.0), y: 80.0, width: timerSize.width, height: timerSize.height) + + self.subtitleNode.attributedText = NSAttributedString(string: subtitle, font: Font.with(size: 21.0, design: .round, weight: .semibold, traits: []), textColor: .white) + let subtitleSize = self.subtitleNode.updateLayout(size) + self.subtitleNode.frame = CGRect(x: floor((size.width - subtitleSize.width) / 2.0), y: 164.0, width: timerSize.width, height: subtitleSize.height) + + self.foregroundView.frame = CGRect(origin: CGPoint(), size: size) + } +} diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatTitleEditController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatTitleEditController.swift index 90ed073d82..26f27aeeb0 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatTitleEditController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatTitleEditController.swift @@ -47,7 +47,7 @@ private final class VoiceChatTitleEditInputFieldNode: ASDisplayNode, ASEditableT private let maxLength: Int - init(theme: PresentationTheme, placeholder: String, maxLength: Int) { + init(theme: PresentationTheme, placeholder: String, maxLength: Int, returnKeyType: UIReturnKeyType = .done) { self.theme = theme self.maxLength = maxLength @@ -65,7 +65,7 @@ private final class VoiceChatTitleEditInputFieldNode: ASDisplayNode, ASEditableT self.textInputNode.keyboardAppearance = theme.rootController.keyboardColor.keyboardAppearance self.textInputNode.keyboardType = .default self.textInputNode.autocapitalizationType = .sentences - self.textInputNode.returnKeyType = .done + self.textInputNode.returnKeyType = returnKeyType self.textInputNode.autocorrectionType = .default self.textInputNode.tintColor = theme.actionSheet.controlAccentColor @@ -510,7 +510,7 @@ private final class VoiceChatUserNameEditAlertContentNode: AlertContentNode { self.titleNode = ASTextNode() self.titleNode.maximumNumberOfLines = 2 - self.firstNameInputFieldNode = VoiceChatTitleEditInputFieldNode(theme: ptheme, placeholder: firstNamePlaceholder, maxLength: maxLength) + self.firstNameInputFieldNode = VoiceChatTitleEditInputFieldNode(theme: ptheme, placeholder: firstNamePlaceholder, maxLength: maxLength, returnKeyType: .next) self.firstNameInputFieldNode.text = firstNameValue ?? "" self.lastNameInputFieldNode = VoiceChatTitleEditInputFieldNode(theme: ptheme, placeholder: lastNamePlaceholder, maxLength: maxLength) @@ -550,14 +550,6 @@ private final class VoiceChatUserNameEditAlertContentNode: AlertContentNode { self.addSubnode(separatorNode) } - self.firstNameInputFieldNode.updateHeight = { [weak self] in - if let strongSelf = self { - if let _ = strongSelf.validLayout { - strongSelf.requestLayout?(.animated(duration: 0.15, curve: .spring)) - } - } - } - self.updateTheme(theme) } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatTitleNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatTitleNode.swift new file mode 100644 index 0000000000..07d9ff976b --- /dev/null +++ b/submodules/TelegramCallsUI/Sources/VoiceChatTitleNode.swift @@ -0,0 +1,103 @@ +import Foundation +import UIKit +import AsyncDisplayKit +import Display +import TelegramPresentationData + +final class VoiceChatTitleNode: ASDisplayNode { + private var theme: PresentationTheme + + private let titleNode: ASTextNode + private let infoNode: ASTextNode + let recordingIconNode: VoiceChatRecordingIconNode + + public var isRecording: Bool = false { + didSet { + self.recordingIconNode.isHidden = !self.isRecording + } + } + + var tapped: (() -> Void)? + + init(theme: PresentationTheme) { + self.theme = theme + + self.titleNode = ASTextNode() + self.titleNode.displaysAsynchronously = false + self.titleNode.maximumNumberOfLines = 1 + self.titleNode.truncationMode = .byTruncatingTail + self.titleNode.isOpaque = false + + self.infoNode = ASTextNode() + self.infoNode.displaysAsynchronously = false + self.infoNode.maximumNumberOfLines = 1 + self.infoNode.truncationMode = .byTruncatingTail + self.infoNode.isOpaque = false + + self.recordingIconNode = VoiceChatRecordingIconNode(hasBackground: false) + + super.init() + + self.addSubnode(self.titleNode) + self.addSubnode(self.infoNode) + self.addSubnode(self.recordingIconNode) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func didLoad() { + super.didLoad() + + self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tap))) + } + + override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { + if point.y > 0.0 && point.y < self.frame.size.height && point.x > min(self.titleNode.frame.minX, self.infoNode.frame.minX) && point.x < max(self.recordingIconNode.frame.maxX, self.infoNode.frame.maxX) { + return true + } else { + return false + } + } + + @objc private func tap() { + self.tapped?() + } + + func update(size: CGSize, title: String, subtitle: String, transition: ContainedViewLayoutTransition) { + var titleUpdated = false + if let previousTitle = self.titleNode.attributedText?.string { + titleUpdated = previousTitle != title + } + + if titleUpdated, let snapshotView = self.titleNode.view.snapshotContentTree() { + snapshotView.frame = self.titleNode.frame + self.view.addSubview(snapshotView) + + snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak snapshotView] _ in + snapshotView?.removeFromSuperview() + }) + + self.titleNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + } + + self.titleNode.attributedText = NSAttributedString(string: title, font: Font.medium(17.0), textColor: UIColor(rgb: 0xffffff)) + self.infoNode.attributedText = NSAttributedString(string: subtitle, font: Font.regular(13.0), textColor: UIColor(rgb: 0xffffff, alpha: 0.5)) + + let constrainedSize = CGSize(width: size.width - 140.0, height: size.height) + let titleSize = self.titleNode.measure(constrainedSize) + let infoSize = self.infoNode.measure(constrainedSize) + let titleInfoSpacing: CGFloat = 0.0 + + let combinedHeight = titleSize.height + infoSize.height + titleInfoSpacing + + let titleFrame = CGRect(origin: CGPoint(x: floor((size.width - titleSize.width) / 2.0), y: floor((size.height - combinedHeight) / 2.0)), size: titleSize) + self.titleNode.frame = titleFrame + self.infoNode.frame = CGRect(origin: CGPoint(x: floor((size.width - infoSize.width) / 2.0), y: floor((size.height - combinedHeight) / 2.0) + titleSize.height + titleInfoSpacing), size: infoSize) + + let iconSide = 16.0 + (1.0 + UIScreenPixel) * 2.0 + let iconSize: CGSize = CGSize(width: iconSide, height: iconSide) + self.recordingIconNode.frame = CGRect(origin: CGPoint(x: titleFrame.maxX + 1.0, y: titleFrame.minY + 1.0), size: iconSize) + } +} diff --git a/submodules/TelegramCore/Sources/GroupCalls.swift b/submodules/TelegramCore/Sources/GroupCalls.swift index 7e8c864861..03cae06a63 100644 --- a/submodules/TelegramCore/Sources/GroupCalls.swift +++ b/submodules/TelegramCore/Sources/GroupCalls.swift @@ -259,9 +259,9 @@ public func startScheduledGroupCall(account: Account, peerId: PeerId, callId: In return account.postbox.transaction { transaction -> GroupCallInfo in transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, cachedData -> CachedPeerData? in if let cachedData = cachedData as? CachedChannelData { - return cachedData.withUpdatedActiveCall(CachedChannelData.ActiveCall(id: callInfo.id, accessHash: callInfo.accessHash, title: callInfo.title, scheduleTimestamp: callInfo.scheduleTimestamp, subscribed: false)) + return cachedData.withUpdatedActiveCall(CachedChannelData.ActiveCall(id: callInfo.id, accessHash: callInfo.accessHash, title: callInfo.title, scheduleTimestamp: nil, subscribed: false)) } else if let cachedData = cachedData as? CachedGroupData { - return cachedData.withUpdatedActiveCall(CachedChannelData.ActiveCall(id: callInfo.id, accessHash: callInfo.accessHash, title: callInfo.title, scheduleTimestamp: callInfo.scheduleTimestamp, subscribed: false)) + return cachedData.withUpdatedActiveCall(CachedChannelData.ActiveCall(id: callInfo.id, accessHash: callInfo.accessHash, title: callInfo.title, scheduleTimestamp: nil, subscribed: false)) } else { return cachedData } @@ -331,15 +331,27 @@ public func updateGroupCallJoinAsPeer(account: Account, peerId: PeerId, joinAs: } |> castError(UpdateGroupCallJoinAsPeerError.self) |> mapToSignal { result in - guard let (peer, joinAs) = result else { + guard let (inputPeer, joinInputPeer) = result else { return .fail(.generic) } - return account.network.request(Api.functions.phone.saveDefaultGroupCallJoinAs(peer: peer, joinAs: joinAs)) + return account.network.request(Api.functions.phone.saveDefaultGroupCallJoinAs(peer: inputPeer, joinAs: joinInputPeer)) |> mapError { _ -> UpdateGroupCallJoinAsPeerError in return .generic } |> mapToSignal { result -> Signal in - return .complete() + return account.postbox.transaction { transaction in + transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, cachedData -> CachedPeerData? in + if let cachedData = cachedData as? CachedChannelData { + return cachedData.withUpdatedCallJoinPeerId(joinAs) + } else if let cachedData = cachedData as? CachedGroupData { + return cachedData.withUpdatedCallJoinPeerId(joinAs) + } else { + return cachedData + } + }) + } + |> castError(UpdateGroupCallJoinAsPeerError.self) + |> ignoreValues } } } @@ -644,9 +656,9 @@ public func joinGroupCall(account: Account, peerId: PeerId, joinAs: PeerId?, cal return account.postbox.transaction { transaction -> JoinGroupCallResult in transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, cachedData -> CachedPeerData? in if let cachedData = cachedData as? CachedChannelData { - return cachedData.withUpdatedCallJoinPeerId(joinAs) + return cachedData.withUpdatedCallJoinPeerId(joinAs).withUpdatedActiveCall(CachedChannelData.ActiveCall(id: parsedCall.id, accessHash: parsedCall.accessHash, title: parsedCall.title, scheduleTimestamp: nil, subscribed: false)) } else if let cachedData = cachedData as? CachedGroupData { - return cachedData.withUpdatedCallJoinPeerId(joinAs) + return cachedData.withUpdatedCallJoinPeerId(joinAs).withUpdatedActiveCall(CachedChannelData.ActiveCall(id: parsedCall.id, accessHash: parsedCall.accessHash, title: parsedCall.title, scheduleTimestamp: nil, subscribed: false)) } else { return cachedData } diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 0b77eeeeb1..81245860bb 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -752,5592 +752,5604 @@ public final class PresentationStrings: Equatable { return formatWithArgumentRanges(self._s[511]!, self._r[511]!, [_0]) } public var ClearCache_Forever: String { return self._s[512]! } + public var VoiceChat_TapToEditTitle: String { return self._s[514]! } public func ChannelInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[514]!, self._r[514]!, [_0]) + return formatWithArgumentRanges(self._s[515]!, self._r[515]!, [_0]) } - public var Group_EditAdmin_RankAdminPlaceholder: String { return self._s[515]! } - public var Calls_SubmitRating: String { return self._s[516]! } - public var Location_LiveLocationRequired_ShareLocation: String { return self._s[517]! } + public var Group_EditAdmin_RankAdminPlaceholder: String { return self._s[516]! } + public var Calls_SubmitRating: String { return self._s[517]! } + public var Location_LiveLocationRequired_ShareLocation: String { return self._s[518]! } public func ChatList_AddedToFolderTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[518]!, self._r[518]!, [_1, _2]) + return formatWithArgumentRanges(self._s[519]!, self._r[519]!, [_1, _2]) } - public var IntentsSettings_MainAccountInfo: String { return self._s[519]! } - public var Map_Hybrid: String { return self._s[521]! } - public var ChatList_Context_Archive: String { return self._s[522]! } - public var Message_PinnedDocumentMessage: String { return self._s[523]! } - public var State_ConnectingToProxyInfo: String { return self._s[524]! } - public var Passport_Identity_NativeNameGenericTitle: String { return self._s[526]! } - public var Settings_AppLanguage: String { return self._s[527]! } + public var IntentsSettings_MainAccountInfo: String { return self._s[520]! } + public var Map_Hybrid: String { return self._s[522]! } + public var ChatList_Context_Archive: String { return self._s[523]! } + public var Message_PinnedDocumentMessage: String { return self._s[524]! } + public var State_ConnectingToProxyInfo: String { return self._s[525]! } + public var Passport_Identity_NativeNameGenericTitle: String { return self._s[527]! } + public var Settings_AppLanguage: String { return self._s[528]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[528]!, self._r[528]!, [_0]) + return formatWithArgumentRanges(self._s[529]!, self._r[529]!, [_0]) } - public var Notifications_PermissionsEnable: String { return self._s[530]! } - public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[531]! } + public var Notifications_PermissionsEnable: String { return self._s[531]! } + public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[532]! } public func UserInfo_BlockActionTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[532]!, self._r[532]!, [_0]) - } - public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[533]!, self._r[533]!, [_0]) } - public var NotificationsSound_Aurora: String { return self._s[536]! } - public var ScheduledMessages_ClearAll: String { return self._s[539]! } + public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[534]!, self._r[534]!, [_0]) + } + public var NotificationsSound_Aurora: String { return self._s[537]! } + public var ScheduledMessages_ClearAll: String { return self._s[540]! } public func CancelResetAccount_TextSMS(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[540]!, self._r[540]!, [_0]) + return formatWithArgumentRanges(self._s[541]!, self._r[541]!, [_0]) } - public var Settings_BlockedUsers: String { return self._s[542]! } - public var VoiceOver_Keyboard: String { return self._s[544]! } + public var Settings_BlockedUsers: String { return self._s[543]! } + public var VoiceOver_Keyboard: String { return self._s[545]! } public func UserInfo_StartSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[545]!, self._r[545]!, [_0]) + return formatWithArgumentRanges(self._s[546]!, self._r[546]!, [_0]) } - public var Passport_Language_hu: String { return self._s[546]! } + public var Passport_Language_hu: String { return self._s[547]! } public func Conversation_ScheduleMessage_SendTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[547]!, self._r[547]!, [_0]) + return formatWithArgumentRanges(self._s[548]!, self._r[548]!, [_0]) } - public var StickerPack_Share: String { return self._s[548]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[549]! } + public var StickerPack_Share: String { return self._s[549]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[550]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[550]!, self._r[550]!, [_0, _1]) + return formatWithArgumentRanges(self._s[551]!, self._r[551]!, [_0, _1]) } - public var Privacy_ContactsResetConfirmation: String { return self._s[551]! } - public var VoiceChat_EditTitle: String { return self._s[552]! } - public var AppleWatch_ReplyPresets: String { return self._s[553]! } - public var Bot_GenericBotStatus: String { return self._s[554]! } - public var Appearance_ShareThemeColor: String { return self._s[555]! } - public var AuthSessions_AddDevice_UrlLoginHint: String { return self._s[556]! } - public var ReportGroupLocation_Title: String { return self._s[557]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[552]! } + public var VoiceChat_EditTitle: String { return self._s[553]! } + public var AppleWatch_ReplyPresets: String { return self._s[554]! } + public var Bot_GenericBotStatus: String { return self._s[555]! } + public var Appearance_ShareThemeColor: String { return self._s[556]! } + public var AuthSessions_AddDevice_UrlLoginHint: String { return self._s[557]! } + public var ReportGroupLocation_Title: String { return self._s[558]! } public func Conversation_AutoremoveTimerSetUserYou(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[558]!, self._r[558]!, [_1]) + return formatWithArgumentRanges(self._s[559]!, self._r[559]!, [_1]) } public func Activity_RemindAboutUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[559]!, self._r[559]!, [_0]) + return formatWithArgumentRanges(self._s[560]!, self._r[560]!, [_0]) } - public var Profile_CreateEncryptedChatError: String { return self._s[560]! } - public var Channel_EditAdmin_TransferOwnership: String { return self._s[561]! } - public var Wallpaper_ErrorNotFound: String { return self._s[562]! } - public var Bot_GenericSupportStatus: String { return self._s[563]! } - public var Activity_UploadingPhoto: String { return self._s[565]! } - public var Intents_ErrorLockedTitle: String { return self._s[566]! } - public var Watch_UserInfo_Title: String { return self._s[568]! } - public var SocksProxySetup_ProxyTelegram: String { return self._s[569]! } - public var Appearance_ThemeDay: String { return self._s[570]! } + public var Profile_CreateEncryptedChatError: String { return self._s[561]! } + public var Channel_EditAdmin_TransferOwnership: String { return self._s[562]! } + public var Wallpaper_ErrorNotFound: String { return self._s[563]! } + public var Bot_GenericSupportStatus: String { return self._s[564]! } + public var Activity_UploadingPhoto: String { return self._s[566]! } + public var Intents_ErrorLockedTitle: String { return self._s[567]! } + public var Watch_UserInfo_Title: String { return self._s[569]! } + public var SocksProxySetup_ProxyTelegram: String { return self._s[570]! } + public var Appearance_ThemeDay: String { return self._s[571]! } public func ApplyLanguage_ChangeLanguageOfficialText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[571]!, self._r[571]!, [_1]) + return formatWithArgumentRanges(self._s[572]!, self._r[572]!, [_1]) } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[572]!, self._r[572]!, [_0]) + return formatWithArgumentRanges(self._s[573]!, self._r[573]!, [_0]) } - public var InviteLink_AdditionalLinks: String { return self._s[573]! } - public var Passport_Title: String { return self._s[576]! } + public var InviteLink_AdditionalLinks: String { return self._s[574]! } + public var Passport_Title: String { return self._s[577]! } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[578]!, self._r[578]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[579]!, self._r[579]!, [_1, _2, _3]) } - public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[579]! } - public var SocksProxySetup_ShareLink: String { return self._s[582]! } - public var AuthSessions_OtherDevices: String { return self._s[583]! } - public var IntentsSettings_SuggestedChatsGroups: String { return self._s[584]! } - public var Watch_MessageView_Reply: String { return self._s[585]! } - public var Camera_FlashOn: String { return self._s[587]! } + public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[580]! } + public var SocksProxySetup_ShareLink: String { return self._s[583]! } + public var AuthSessions_OtherDevices: String { return self._s[584]! } + public var IntentsSettings_SuggestedChatsGroups: String { return self._s[585]! } + public var Watch_MessageView_Reply: String { return self._s[586]! } + public var Camera_FlashOn: String { return self._s[588]! } public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[588]!, self._r[588]!, [_1, _2]) + return formatWithArgumentRanges(self._s[589]!, self._r[589]!, [_1, _2]) } - public var Conversation_ContextMenuBlock: String { return self._s[589]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[591]! } - public var Privacy_Calls_NeverAllow: String { return self._s[592]! } - public var BroadcastGroups_Cancel: String { return self._s[593]! } - public var SharedMedia_CategoryLinks: String { return self._s[594]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[597]! } - public var Passport_Identity_ScansHelp: String { return self._s[599]! } - public var ShareMenu_CopyShareLink: String { return self._s[600]! } - public var StickerSettings_MaskContextInfo: String { return self._s[601]! } - public var InviteLink_Create_EditTitle: String { return self._s[602]! } - public var SocksProxySetup_ProxyStatusChecking: String { return self._s[603]! } - public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[606]! } - public var ChatImportActivity_Success: String { return self._s[608]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[609]! } - public var NotificationsSound_Popcorn: String { return self._s[610]! } - public var FeatureDisabled_Oops: String { return self._s[611]! } + public var Conversation_ContextMenuBlock: String { return self._s[590]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[592]! } + public var Privacy_Calls_NeverAllow: String { return self._s[593]! } + public var BroadcastGroups_Cancel: String { return self._s[594]! } + public var SharedMedia_CategoryLinks: String { return self._s[595]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[598]! } + public var Passport_Identity_ScansHelp: String { return self._s[600]! } + public var ShareMenu_CopyShareLink: String { return self._s[601]! } + public var StickerSettings_MaskContextInfo: String { return self._s[602]! } + public var InviteLink_Create_EditTitle: String { return self._s[603]! } + public var SocksProxySetup_ProxyStatusChecking: String { return self._s[604]! } + public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[607]! } + public var ChatImportActivity_Success: String { return self._s[609]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[610]! } + public var NotificationsSound_Popcorn: String { return self._s[611]! } + public var FeatureDisabled_Oops: String { return self._s[612]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[612]!, self._r[612]!, [_0]) + return formatWithArgumentRanges(self._s[613]!, self._r[613]!, [_0]) } - public var Notification_PinnedMessage: String { return self._s[613]! } - public var Tour_Title4: String { return self._s[614]! } + public var Notification_PinnedMessage: String { return self._s[614]! } + public var Tour_Title4: String { return self._s[615]! } public func Notification_VoiceChatInvitationForYou(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[615]!, self._r[615]!, [_1]) + return formatWithArgumentRanges(self._s[616]!, self._r[616]!, [_1]) } - public var Watch_Suggestion_OK: String { return self._s[616]! } - public var Compose_TokenListPlaceholder: String { return self._s[617]! } - public var InviteLink_PermanentLink: String { return self._s[618]! } - public var EditTheme_Edit_TopInfo: String { return self._s[619]! } - public var Gif_NoGifsFound: String { return self._s[620]! } - public var Login_InvalidCountryCode: String { return self._s[621]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[622]! } - public var Call_VoiceOver_VideoCallMissed: String { return self._s[623]! } - public var VoiceChat_ChangeNameTitle: String { return self._s[625]! } + public var Watch_Suggestion_OK: String { return self._s[617]! } + public var Compose_TokenListPlaceholder: String { return self._s[618]! } + public var InviteLink_PermanentLink: String { return self._s[619]! } + public var EditTheme_Edit_TopInfo: String { return self._s[620]! } + public var Gif_NoGifsFound: String { return self._s[621]! } + public var Login_InvalidCountryCode: String { return self._s[622]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[623]! } + public var Call_VoiceOver_VideoCallMissed: String { return self._s[624]! } + public var VoiceChat_ChangeNameTitle: String { return self._s[626]! } public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[626]!, self._r[626]!, [_1]) + return formatWithArgumentRanges(self._s[627]!, self._r[627]!, [_1]) } - public var Profile_CreateNewContact: String { return self._s[627]! } - public var AutoDownloadSettings_DataUsageLow: String { return self._s[628]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[629]! } - public var Group_Setup_TypePublic: String { return self._s[630]! } - public var Weekday_ShortSaturday: String { return self._s[631]! } + public var Profile_CreateNewContact: String { return self._s[628]! } + public var AutoDownloadSettings_DataUsageLow: String { return self._s[629]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[630]! } + public var Group_Setup_TypePublic: String { return self._s[631]! } + public var Weekday_ShortSaturday: String { return self._s[632]! } public func Time_MonthOfYear_m12(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[632]!, self._r[632]!, [_0]) + return formatWithArgumentRanges(self._s[633]!, self._r[633]!, [_0]) } - public var LiveLocation_MenuStopAll: String { return self._s[633]! } + public var LiveLocation_MenuStopAll: String { return self._s[634]! } public func DialogList_EncryptedChatStartedIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[634]!, self._r[634]!, [_0]) + return formatWithArgumentRanges(self._s[635]!, self._r[635]!, [_0]) } - public var ChatListFolder_NamePlaceholder: String { return self._s[635]! } - public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[636]! } + public var ChatListFolder_NamePlaceholder: String { return self._s[636]! } + public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[637]! } public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[637]!, self._r[637]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[638]!, self._r[638]!, [_1, _2, _3]) } - public var VoiceChat_ChatFullAlertText: String { return self._s[638]! } - public var Chat_GenericPsaTooltip: String { return self._s[640]! } - public var ChannelInfo_CreateVoiceChat: String { return self._s[641]! } + public var VoiceChat_ChatFullAlertText: String { return self._s[639]! } + public var Chat_GenericPsaTooltip: String { return self._s[641]! } + public var ChannelInfo_CreateVoiceChat: String { return self._s[642]! } public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[642]!, self._r[642]!, [_0]) + return formatWithArgumentRanges(self._s[643]!, self._r[643]!, [_0]) } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[643]! } - public var Login_PhoneAndCountryHelp: String { return self._s[644]! } - public var SaveIncomingPhotosSettings_From: String { return self._s[646]! } - public var Conversation_JumpToDate: String { return self._s[647]! } - public var AuthSessions_AddDevice: String { return self._s[648]! } - public var Settings_FAQ: String { return self._s[650]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[644]! } + public var Login_PhoneAndCountryHelp: String { return self._s[645]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[647]! } + public var Conversation_JumpToDate: String { return self._s[648]! } + public var AuthSessions_AddDevice: String { return self._s[649]! } + public var Settings_FAQ: String { return self._s[651]! } public func ChatImport_CreateGroupAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[651]!, self._r[651]!, [_0]) + return formatWithArgumentRanges(self._s[652]!, self._r[652]!, [_0]) } - public var Username_Title: String { return self._s[652]! } - public var DialogList_Read: String { return self._s[653]! } - public var Conversation_InstantPagePreview: String { return self._s[654]! } - public var Report_Succeed: String { return self._s[656]! } - public var Login_ResetAccountProtected_Title: String { return self._s[657]! } - public var CallFeedback_ReasonDistortedSpeech: String { return self._s[658]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[659]! } + public var Username_Title: String { return self._s[653]! } + public var DialogList_Read: String { return self._s[654]! } + public var Conversation_InstantPagePreview: String { return self._s[655]! } + public var Report_Succeed: String { return self._s[657]! } + public var Login_ResetAccountProtected_Title: String { return self._s[658]! } + public var CallFeedback_ReasonDistortedSpeech: String { return self._s[659]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[660]! } public func Channel_AdminLog_MessageRankUsername(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[660]!, self._r[660]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[661]!, self._r[661]!, [_1, _2, _3]) } - public var WallpaperPreview_PreviewBottomText: String { return self._s[662]! } - public var Privacy_SecretChatsTitle: String { return self._s[665]! } + public var WallpaperPreview_PreviewBottomText: String { return self._s[663]! } + public var Privacy_SecretChatsTitle: String { return self._s[666]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[666]!, self._r[666]!, [_1, _2]) + return formatWithArgumentRanges(self._s[667]!, self._r[667]!, [_1, _2]) } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[667]! } - public var Conversation_ClousStorageInfo_Description4: String { return self._s[668]! } - public var PasscodeSettings_TurnPasscodeOn: String { return self._s[669]! } - public var Message_ReplyActionButtonShowReceipt: String { return self._s[670]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[668]! } + public var Conversation_ClousStorageInfo_Description4: String { return self._s[669]! } + public var PasscodeSettings_TurnPasscodeOn: String { return self._s[670]! } + public var Message_ReplyActionButtonShowReceipt: String { return self._s[671]! } public func PrivacyPolicy_AgeVerificationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[671]!, self._r[671]!, [_0]) + return formatWithArgumentRanges(self._s[672]!, self._r[672]!, [_0]) } - public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[673]! } - public var TwoStepAuth_ConfirmationAbort: String { return self._s[674]! } - public var PrivacySettings_LastSeenEverybody: String { return self._s[675]! } - public var CallFeedback_ReasonDropped: String { return self._s[676]! } + public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[674]! } + public var TwoStepAuth_ConfirmationAbort: String { return self._s[675]! } + public var PrivacySettings_LastSeenEverybody: String { return self._s[676]! } + public var CallFeedback_ReasonDropped: String { return self._s[677]! } public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[677]!, self._r[677]!, [_0]) + return formatWithArgumentRanges(self._s[678]!, self._r[678]!, [_0]) } - public var WebSearch_Images: String { return self._s[678]! } - public var Passport_Identity_Surname: String { return self._s[679]! } - public var Channel_Stickers_CreateYourOwn: String { return self._s[680]! } - public var TwoFactorSetup_Email_Title: String { return self._s[681]! } - public var Cache_ClearEmpty: String { return self._s[682]! } - public var AuthSessions_AddDeviceIntro_Action: String { return self._s[683]! } - public var Theme_Context_Apply: String { return self._s[684]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[685]! } - public var CallList_DeleteAllForEveryone: String { return self._s[686]! } + public var WebSearch_Images: String { return self._s[679]! } + public var Passport_Identity_Surname: String { return self._s[680]! } + public var Channel_Stickers_CreateYourOwn: String { return self._s[681]! } + public var TwoFactorSetup_Email_Title: String { return self._s[682]! } + public var Cache_ClearEmpty: String { return self._s[683]! } + public var AuthSessions_AddDeviceIntro_Action: String { return self._s[684]! } + public var Theme_Context_Apply: String { return self._s[685]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[686]! } + public var CallList_DeleteAllForEveryone: String { return self._s[687]! } public func BroadcastGroups_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[687]!, self._r[687]!, [_0]) + return formatWithArgumentRanges(self._s[688]!, self._r[688]!, [_0]) } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[688]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[689]! } public func NetworkUsageSettings_CellularUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[689]!, self._r[689]!, [_0]) + return formatWithArgumentRanges(self._s[690]!, self._r[690]!, [_0]) } - public var Call_StatusRinging: String { return self._s[690]! } + public var Call_StatusRinging: String { return self._s[691]! } public func Map_DistanceAway(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[691]!, self._r[691]!, [_0]) - } - public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[692]!, self._r[692]!, [_0]) } - public var Cache_ClearNone: String { return self._s[693]! } - public var PrivacyPolicy_Accept: String { return self._s[694]! } - public var Contacts_PhoneNumber: String { return self._s[695]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[696]! } - public var PhotoEditor_HighlightsTint: String { return self._s[698]! } - public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[699]! } - public var Checkout_PaymentMethod_Title: String { return self._s[702]! } - public var Month_GenAugust: String { return self._s[704]! } - public var DialogList_Draft: String { return self._s[705]! } - public var ChatList_EmptyChatListFilterText: String { return self._s[706]! } - public var PeopleNearby_Description: String { return self._s[707]! } - public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[708]! } - public var VoiceChat_InviteLink_CopyListenerLink: String { return self._s[709]! } - public var VoiceChat_EditTitleRemoveSuccess: String { return self._s[710]! } - public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[712]! } - public var Watch_Message_ForwardedFrom: String { return self._s[713]! } - public var Notification_Mute1h: String { return self._s[714]! } - public var Appearance_ThemePreview_Chat_3_TextWithLink: String { return self._s[715]! } - public var SettingsSearch_Synonyms_Privacy_AuthSessions: String { return self._s[717]! } - public var Channel_Edit_LinkItem: String { return self._s[718]! } - public var Presence_online: String { return self._s[719]! } - public var AutoDownloadSettings_Title: String { return self._s[720]! } - public var Conversation_MessageDialogRetry: String { return self._s[721]! } - public var SettingsSearch_Synonyms_ChatSettings_OpenLinksIn: String { return self._s[723]! } - public var Channel_About_Placeholder: String { return self._s[725]! } - public var Passport_Language_sl: String { return self._s[726]! } - public var AppleWatch_Title: String { return self._s[728]! } - public var RepliesChat_DescriptionText: String { return self._s[730]! } - public var Stats_Message_PrivateShares: String { return self._s[731]! } - public var Settings_ViewPhoto: String { return self._s[732]! } - public var Conversation_ForwardTooltip_SavedMessages_One: String { return self._s[733]! } - public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[734]! } - public var Cache_ClearProgress: String { return self._s[735]! } - public var Cache_Music: String { return self._s[736]! } - public var Conversation_ContextMenuShare: String { return self._s[738]! } - public var AutoDownloadSettings_Unlimited: String { return self._s[739]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[740]! } - public var Contacts_PermissionsAllow: String { return self._s[741]! } - public var Passport_Language_vi: String { return self._s[743]! } + public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[693]!, self._r[693]!, [_0]) + } + public var Cache_ClearNone: String { return self._s[694]! } + public var PrivacyPolicy_Accept: String { return self._s[695]! } + public var Contacts_PhoneNumber: String { return self._s[696]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[697]! } + public var PhotoEditor_HighlightsTint: String { return self._s[699]! } + public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[700]! } + public var Checkout_PaymentMethod_Title: String { return self._s[703]! } + public var Month_GenAugust: String { return self._s[705]! } + public var DialogList_Draft: String { return self._s[706]! } + public var ChatList_EmptyChatListFilterText: String { return self._s[707]! } + public var PeopleNearby_Description: String { return self._s[708]! } + public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[709]! } + public var VoiceChat_InviteLink_CopyListenerLink: String { return self._s[710]! } + public var VoiceChat_EditTitleRemoveSuccess: String { return self._s[711]! } + public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[713]! } + public var Watch_Message_ForwardedFrom: String { return self._s[714]! } + public var Notification_Mute1h: String { return self._s[715]! } + public var Appearance_ThemePreview_Chat_3_TextWithLink: String { return self._s[716]! } + public var SettingsSearch_Synonyms_Privacy_AuthSessions: String { return self._s[718]! } + public var Channel_Edit_LinkItem: String { return self._s[719]! } + public var Presence_online: String { return self._s[720]! } + public var AutoDownloadSettings_Title: String { return self._s[721]! } + public var Conversation_MessageDialogRetry: String { return self._s[722]! } + public var SettingsSearch_Synonyms_ChatSettings_OpenLinksIn: String { return self._s[724]! } + public var Channel_About_Placeholder: String { return self._s[726]! } + public var Passport_Language_sl: String { return self._s[727]! } + public var AppleWatch_Title: String { return self._s[729]! } + public var RepliesChat_DescriptionText: String { return self._s[731]! } + public var Stats_Message_PrivateShares: String { return self._s[732]! } + public var Settings_ViewPhoto: String { return self._s[733]! } + public var Conversation_ForwardTooltip_SavedMessages_One: String { return self._s[734]! } + public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[735]! } + public var Cache_ClearProgress: String { return self._s[736]! } + public var Cache_Music: String { return self._s[737]! } + public var Conversation_ContextMenuShare: String { return self._s[739]! } + public var AutoDownloadSettings_Unlimited: String { return self._s[740]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[741]! } + public var Contacts_PermissionsAllow: String { return self._s[742]! } + public var Passport_Language_vi: String { return self._s[744]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[746]!, self._r[746]!, [_1, _2]) + return formatWithArgumentRanges(self._s[747]!, self._r[747]!, [_1, _2]) } - public var Passport_Language_de: String { return self._s[747]! } - public var Notifications_PermissionsText: String { return self._s[749]! } - public var GroupRemoved_AddToGroup: String { return self._s[750]! } - public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[751]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[752]! } - public var Login_TermsOfServiceAgree: String { return self._s[753]! } - public var VoiceOver_Navigation_ProxySettings: String { return self._s[754]! } + public var Passport_Language_de: String { return self._s[748]! } + public var Notifications_PermissionsText: String { return self._s[750]! } + public var GroupRemoved_AddToGroup: String { return self._s[751]! } + public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[752]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[753]! } + public var Login_TermsOfServiceAgree: String { return self._s[754]! } + public var VoiceOver_Navigation_ProxySettings: String { return self._s[755]! } public func PUSH_CHAT_JOINED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[755]!, self._r[755]!, [_1, _2]) + return formatWithArgumentRanges(self._s[756]!, self._r[756]!, [_1, _2]) } - public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[757]! } + public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[758]! } public func PUSH_CHAT_VOICECHAT_START(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[758]!, self._r[758]!, [_1, _2]) + return formatWithArgumentRanges(self._s[759]!, self._r[759]!, [_1, _2]) } - public var ChatListFolder_NameGroups: String { return self._s[759]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[760]! } + public var ChatListFolder_NameGroups: String { return self._s[760]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[761]! } public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[761]!, self._r[761]!, [_1, _2]) + return formatWithArgumentRanges(self._s[762]!, self._r[762]!, [_1, _2]) } - public var Watch_Suggestion_TalkLater: String { return self._s[762]! } - public var Checkout_ShippingOption_Title: String { return self._s[763]! } - public var Conversation_TitleRepliesEmpty: String { return self._s[764]! } - public var CreatePoll_TextHeader: String { return self._s[765]! } - public var VoiceOver_Chat_Message: String { return self._s[767]! } - public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[768]! } - public var ContactInfo_Note: String { return self._s[770]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[771]! } - public var Checkout_NewCard_CardholderNameTitle: String { return self._s[772]! } - public var AutoDownloadSettings_Photos: String { return self._s[773]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[774]! } + public var Watch_Suggestion_TalkLater: String { return self._s[763]! } + public var Checkout_ShippingOption_Title: String { return self._s[764]! } + public var Conversation_TitleRepliesEmpty: String { return self._s[765]! } + public var CreatePoll_TextHeader: String { return self._s[766]! } + public var VoiceOver_Chat_Message: String { return self._s[768]! } + public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[769]! } + public var ContactInfo_Note: String { return self._s[771]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[772]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[773]! } + public var AutoDownloadSettings_Photos: String { return self._s[774]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[775]! } public func Conversation_ForwardTooltip_Chat_One(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[775]!, self._r[775]!, [_0]) + return formatWithArgumentRanges(self._s[776]!, self._r[776]!, [_0]) } - public var Channel_Info_Subscribers: String { return self._s[776]! } - public var ChatList_DeleteForCurrentUser: String { return self._s[777]! } - public var ChatListFolderSettings_FoldersSection: String { return self._s[778]! } - public var ChannelInfo_ScheduleVoiceChat: String { return self._s[779]! } - public var VoiceOver_ChatList_OutgoingMessage: String { return self._s[780]! } + public var Channel_Info_Subscribers: String { return self._s[777]! } + public var ChatList_DeleteForCurrentUser: String { return self._s[778]! } + public var ChatListFolderSettings_FoldersSection: String { return self._s[779]! } + public var ChannelInfo_ScheduleVoiceChat: String { return self._s[780]! } + public var VoiceOver_ChatList_OutgoingMessage: String { return self._s[781]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[784]!, self._r[784]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[785]!, self._r[785]!, [_1, _2, _3]) } - public var AutoNightTheme_System: String { return self._s[785]! } - public var Call_StatusWaiting: String { return self._s[786]! } - public var GroupInfo_GroupHistoryHidden: String { return self._s[787]! } + public var AutoNightTheme_System: String { return self._s[786]! } + public var Call_StatusWaiting: String { return self._s[787]! } + public var GroupInfo_GroupHistoryHidden: String { return self._s[788]! } public func CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[788]!, self._r[788]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[789]!, self._r[789]!, [_1, _2, _3]) } - public var Conversation_ContextMenuCopy: String { return self._s[790]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[791]! } - public var Notifications_InAppNotificationsVibrate: String { return self._s[792]! } + public var Conversation_ContextMenuCopy: String { return self._s[791]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[792]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[793]! } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[793]!, self._r[793]!, [_0]) + return formatWithArgumentRanges(self._s[794]!, self._r[794]!, [_0]) } - public var Group_Status: String { return self._s[795]! } - public var Group_Setup_HistoryVisible: String { return self._s[796]! } - public var Conversation_UploadFileTooLarge: String { return self._s[797]! } - public var Conversation_DiscardVoiceMessageAction: String { return self._s[798]! } - public var Paint_Edit: String { return self._s[799]! } - public var PeerInfo_AutoremoveMessages: String { return self._s[800]! } + public var Group_Status: String { return self._s[796]! } + public var Group_Setup_HistoryVisible: String { return self._s[797]! } + public var Conversation_UploadFileTooLarge: String { return self._s[798]! } + public var Conversation_DiscardVoiceMessageAction: String { return self._s[799]! } + public var Paint_Edit: String { return self._s[800]! } + public var PeerInfo_AutoremoveMessages: String { return self._s[801]! } public func ChatImport_SelectionConfirmationGroupWithoutTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[802]!, self._r[802]!, [_0]) + return formatWithArgumentRanges(self._s[803]!, self._r[803]!, [_0]) } - public var Channel_EditAdmin_CannotEdit: String { return self._s[803]! } - public var Username_InvalidTooShort: String { return self._s[804]! } - public var ClearCache_StorageOtherApps: String { return self._s[805]! } - public var Conversation_ViewMessage: String { return self._s[806]! } - public var GroupInfo_PublicLinkAdd: String { return self._s[808]! } + public var Channel_EditAdmin_CannotEdit: String { return self._s[804]! } + public var Username_InvalidTooShort: String { return self._s[805]! } + public var ClearCache_StorageOtherApps: String { return self._s[806]! } + public var Conversation_ViewMessage: String { return self._s[807]! } + public var GroupInfo_PublicLinkAdd: String { return self._s[809]! } public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[809]!, self._r[809]!, [_0]) + return formatWithArgumentRanges(self._s[810]!, self._r[810]!, [_0]) } - public var CallSettings_Title: String { return self._s[810]! } + public var CallSettings_Title: String { return self._s[811]! } public func Conversation_BotInteractiveUrlAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[811]!, self._r[811]!, [_0]) + return formatWithArgumentRanges(self._s[812]!, self._r[812]!, [_0]) } public func VoiceOver_Chat_ContactFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[814]!, self._r[814]!, [_0]) + return formatWithArgumentRanges(self._s[815]!, self._r[815]!, [_0]) } - public var PUSH_SENDER_YOU: String { return self._s[817]! } + public var PUSH_SENDER_YOU: String { return self._s[818]! } public func Conversation_DeletedFromContacts(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[818]!, self._r[818]!, [_0]) + return formatWithArgumentRanges(self._s[819]!, self._r[819]!, [_0]) } - public var Profile_ShareContactButton: String { return self._s[819]! } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[820]! } + public var Profile_ShareContactButton: String { return self._s[820]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[821]! } public func VoiceOver_Chat_StickerFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[821]!, self._r[821]!, [_0]) + return formatWithArgumentRanges(self._s[822]!, self._r[822]!, [_0]) } - public var Map_ShareLiveLocation: String { return self._s[822]! } - public var ChatListFolder_TitleEdit: String { return self._s[823]! } + public var Map_ShareLiveLocation: String { return self._s[823]! } + public var ChatListFolder_TitleEdit: String { return self._s[824]! } public func VoiceOver_Chat_AnimatedStickerFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[824]!, self._r[824]!, [_0]) + return formatWithArgumentRanges(self._s[825]!, self._r[825]!, [_0]) } - public var Passport_Address_Address: String { return self._s[826]! } - public var LastSeen_JustNow: String { return self._s[828]! } + public var Passport_Address_Address: String { return self._s[827]! } + public var LastSeen_JustNow: String { return self._s[829]! } public func SecretImage_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[829]!, self._r[829]!, [_0]) + return formatWithArgumentRanges(self._s[830]!, self._r[830]!, [_0]) } - public var ContactInfo_PhoneLabelOther: String { return self._s[830]! } - public var PasscodeSettings_DoNotMatch: String { return self._s[831]! } - public var Weekday_Today: String { return self._s[834]! } - public var DialogList_Title: String { return self._s[835]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[836]! } - public var Cache_ClearCache: String { return self._s[837]! } - public var CreatePoll_ExplanationInfo: String { return self._s[838]! } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[840]! } - public var Stats_MessageTitle: String { return self._s[841]! } - public var Passport_Address_Street: String { return self._s[843]! } + public var ContactInfo_PhoneLabelOther: String { return self._s[831]! } + public var PasscodeSettings_DoNotMatch: String { return self._s[832]! } + public var Weekday_Today: String { return self._s[835]! } + public var DialogList_Title: String { return self._s[836]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[837]! } + public var Cache_ClearCache: String { return self._s[838]! } + public var CreatePoll_ExplanationInfo: String { return self._s[839]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[841]! } + public var Stats_MessageTitle: String { return self._s[842]! } + public var Passport_Address_Street: String { return self._s[844]! } public func Channel_AdminLog_MessageRemovedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[844]!, self._r[844]!, [_0]) + return formatWithArgumentRanges(self._s[845]!, self._r[845]!, [_0]) } - public var Channel_AdminLog_ChannelEmptyText: String { return self._s[845]! } + public var Channel_AdminLog_ChannelEmptyText: String { return self._s[846]! } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[846]!, self._r[846]!, [_0]) + return formatWithArgumentRanges(self._s[847]!, self._r[847]!, [_0]) } - public var TwoStepAuth_Email: String { return self._s[848]! } - public var Conversation_SecretLinkPreviewAlert: String { return self._s[849]! } - public var PrivacySettings_PasscodeOn: String { return self._s[850]! } - public var Camera_SquareMode: String { return self._s[852]! } - public var SocksProxySetup_Port: String { return self._s[853]! } - public var Watch_LastSeen_JustNow: String { return self._s[855]! } + public var TwoStepAuth_Email: String { return self._s[849]! } + public var Conversation_SecretLinkPreviewAlert: String { return self._s[850]! } + public var PrivacySettings_PasscodeOn: String { return self._s[851]! } + public var Camera_SquareMode: String { return self._s[853]! } + public var SocksProxySetup_Port: String { return self._s[854]! } + public var Watch_LastSeen_JustNow: String { return self._s[856]! } public func Location_ProximityAlertSetText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[856]!, self._r[856]!, [_1, _2]) - } - public func PUSH_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[857]!, self._r[857]!, [_1, _2]) } + public func PUSH_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[858]!, self._r[858]!, [_1, _2]) + } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[858]!, self._r[858]!, [_0]) + return formatWithArgumentRanges(self._s[859]!, self._r[859]!, [_0]) } - public var EditTheme_Expand_Preview_OutgoingText: String { return self._s[859]! } - public var Channel_AdminLogFilter_EventsTitle: String { return self._s[860]! } - public var Watch_Suggestion_HoldOn: String { return self._s[863]! } + public var EditTheme_Expand_Preview_OutgoingText: String { return self._s[860]! } + public var Channel_AdminLogFilter_EventsTitle: String { return self._s[861]! } + public var Watch_Suggestion_HoldOn: String { return self._s[864]! } public func PUSH_CHANNEL_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[864]!, self._r[864]!, [_1]) + return formatWithArgumentRanges(self._s[865]!, self._r[865]!, [_1]) } - public var CallSettings_TabIcon: String { return self._s[865]! } - public var ScheduledMessages_SendNow: String { return self._s[866]! } - public var Stats_GroupTopWeekdaysTitle: String { return self._s[867]! } - public var UserInfo_PhoneCall: String { return self._s[868]! } - public var Month_GenMarch: String { return self._s[869]! } - public var Camera_Discard: String { return self._s[870]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[871]! } - public var Passport_RequestedInformation: String { return self._s[872]! } - public var VoiceChat_RecordingTitlePlaceholder: String { return self._s[874]! } + public var CallSettings_TabIcon: String { return self._s[866]! } + public var ScheduledMessages_SendNow: String { return self._s[867]! } + public var Stats_GroupTopWeekdaysTitle: String { return self._s[868]! } + public var UserInfo_PhoneCall: String { return self._s[869]! } + public var Month_GenMarch: String { return self._s[870]! } + public var Camera_Discard: String { return self._s[871]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[872]! } + public var Passport_RequestedInformation: String { return self._s[873]! } + public var VoiceChat_RecordingTitlePlaceholder: String { return self._s[875]! } public func Notification_ProximityYouReached(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[875]!, self._r[875]!, [_1, _2]) + return formatWithArgumentRanges(self._s[876]!, self._r[876]!, [_1, _2]) } - public var Passport_Language_ro: String { return self._s[876]! } + public var Passport_Language_ro: String { return self._s[877]! } public func PUSH_CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[877]!, self._r[877]!, [_1, _2]) + return formatWithArgumentRanges(self._s[878]!, self._r[878]!, [_1, _2]) } - public var AutoDownloadSettings_ResetHelp: String { return self._s[878]! } - public var Passport_Identity_DocumentDetails: String { return self._s[880]! } - public var Passport_Address_ScansHelp: String { return self._s[881]! } - public var Location_LiveLocationRequired_Title: String { return self._s[882]! } - public var ClearCache_StorageCache: String { return self._s[883]! } - public var Theme_Colors_ColorWallpaperWarningProceed: String { return self._s[884]! } - public var Conversation_RestrictedText: String { return self._s[885]! } - public var Notifications_MessageNotifications: String { return self._s[887]! } - public var Passport_Scans: String { return self._s[888]! } - public var TwoStepAuth_SetupHintTitle: String { return self._s[890]! } - public var LogoutOptions_ContactSupportTitle: String { return self._s[891]! } - public var Passport_Identity_SelfieHelp: String { return self._s[892]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[893]! } - public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[894]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[895]! } - public var PeerInfo_ButtonSearch: String { return self._s[896]! } + public var AutoDownloadSettings_ResetHelp: String { return self._s[879]! } + public var Passport_Identity_DocumentDetails: String { return self._s[881]! } + public var Passport_Address_ScansHelp: String { return self._s[882]! } + public var Location_LiveLocationRequired_Title: String { return self._s[883]! } + public var ClearCache_StorageCache: String { return self._s[884]! } + public var Theme_Colors_ColorWallpaperWarningProceed: String { return self._s[885]! } + public var Conversation_RestrictedText: String { return self._s[886]! } + public var Notifications_MessageNotifications: String { return self._s[888]! } + public var Passport_Scans: String { return self._s[889]! } + public var TwoStepAuth_SetupHintTitle: String { return self._s[891]! } + public var LogoutOptions_ContactSupportTitle: String { return self._s[892]! } + public var Passport_Identity_SelfieHelp: String { return self._s[893]! } + public var Permissions_NotificationsUnreachableText_v0: String { return self._s[894]! } + public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[895]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[896]! } + public var PeerInfo_ButtonSearch: String { return self._s[897]! } public func Notification_ProximityReachedYou(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[899]!, self._r[899]!, [_1, _2]) + return formatWithArgumentRanges(self._s[900]!, self._r[900]!, [_1, _2]) } - public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[900]! } - public var Passport_FieldIdentityTranslationHelp: String { return self._s[902]! } - public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[903]! } - public var Month_GenSeptember: String { return self._s[904]! } + public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[901]! } + public var Passport_FieldIdentityTranslationHelp: String { return self._s[903]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[904]! } + public var Month_GenSeptember: String { return self._s[905]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[906]!, self._r[906]!, [_1, _2]) + return formatWithArgumentRanges(self._s[907]!, self._r[907]!, [_1, _2]) } - public var StickerPacksSettings_ArchivedPacks: String { return self._s[907]! } + public var StickerPacksSettings_ArchivedPacks: String { return self._s[908]! } public func Notification_VoiceChatInvitation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[909]!, self._r[909]!, [_1, _2]) + return formatWithArgumentRanges(self._s[910]!, self._r[910]!, [_1, _2]) } public func Channel_Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[910]!, self._r[910]!, [_0]) + return formatWithArgumentRanges(self._s[911]!, self._r[911]!, [_0]) } public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[912]!, self._r[912]!, [_1, _2]) - } - public func PUSH_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[913]!, self._r[913]!, [_1, _2]) } - public var Calls_NotNow: String { return self._s[915]! } - public var Settings_ChatFolders: String { return self._s[919]! } - public var Login_PadPhoneHelpTitle: String { return self._s[920]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[921]! } - public var Widget_MessageAutoremoveTimerRemoved: String { return self._s[922]! } - public var VoiceChat_RecordingSaved: String { return self._s[923]! } - public var Settings_ChatBackground: String { return self._s[924]! } + public func PUSH_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[914]!, self._r[914]!, [_1, _2]) + } + public var Calls_NotNow: String { return self._s[916]! } + public var Settings_ChatFolders: String { return self._s[920]! } + public var Login_PadPhoneHelpTitle: String { return self._s[921]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[922]! } + public var Widget_MessageAutoremoveTimerRemoved: String { return self._s[923]! } + public var VoiceChat_RecordingSaved: String { return self._s[924]! } + public var Settings_ChatBackground: String { return self._s[925]! } public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[926]!, self._r[926]!, [_1, _2]) + return formatWithArgumentRanges(self._s[927]!, self._r[927]!, [_1, _2]) } - public var ProxyServer_VoiceOver_Active: String { return self._s[927]! } - public var Call_StatusBusy: String { return self._s[928]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[929]! } - public var Login_NetworkError: String { return self._s[931]! } - public var TwoStepAuth_SetupPasswordDescription: String { return self._s[932]! } - public var Privacy_Calls_Integration: String { return self._s[933]! } - public var DialogList_SearchSectionMessages: String { return self._s[934]! } - public var AutoDownloadSettings_VideosTitle: String { return self._s[935]! } - public var Preview_DeletePhoto: String { return self._s[936]! } - public var VoiceChat_Video: String { return self._s[937]! } - public var PrivacySettings_PhoneNumber: String { return self._s[939]! } - public var Forward_ErrorDisabledForChat: String { return self._s[940]! } - public var Watch_Compose_CurrentLocation: String { return self._s[941]! } - public var Settings_CallSettings: String { return self._s[942]! } - public var AutoDownloadSettings_TypePrivateChats: String { return self._s[943]! } - public var Conversation_StickerRemovedFromFavorites: String { return self._s[944]! } - public var ChatList_Context_MarkAllAsRead: String { return self._s[945]! } - public var ChatSettings_AutoPlayAnimations: String { return self._s[946]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[947]! } - public var OwnershipTransfer_SecurityRequirements: String { return self._s[948]! } - public var Map_LiveLocationFor1Hour: String { return self._s[949]! } + public var ProxyServer_VoiceOver_Active: String { return self._s[928]! } + public var Call_StatusBusy: String { return self._s[929]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[930]! } + public var Login_NetworkError: String { return self._s[932]! } + public var TwoStepAuth_SetupPasswordDescription: String { return self._s[933]! } + public var Privacy_Calls_Integration: String { return self._s[934]! } + public var DialogList_SearchSectionMessages: String { return self._s[935]! } + public var AutoDownloadSettings_VideosTitle: String { return self._s[936]! } + public var Preview_DeletePhoto: String { return self._s[937]! } + public var VoiceChat_Video: String { return self._s[938]! } + public var PrivacySettings_PhoneNumber: String { return self._s[940]! } + public var Forward_ErrorDisabledForChat: String { return self._s[941]! } + public var Watch_Compose_CurrentLocation: String { return self._s[942]! } + public var Settings_CallSettings: String { return self._s[943]! } + public var AutoDownloadSettings_TypePrivateChats: String { return self._s[944]! } + public var Conversation_StickerRemovedFromFavorites: String { return self._s[945]! } + public var ChatList_Context_MarkAllAsRead: String { return self._s[946]! } + public var ChatSettings_AutoPlayAnimations: String { return self._s[947]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[948]! } + public var OwnershipTransfer_SecurityRequirements: String { return self._s[949]! } + public var Map_LiveLocationFor1Hour: String { return self._s[950]! } public func Privacy_GroupsAndChannels_InviteToGroupError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[950]!, self._r[950]!, [_0, _1]) + return formatWithArgumentRanges(self._s[951]!, self._r[951]!, [_0, _1]) } - public var VoiceChat_MutedByAdmin: String { return self._s[951]! } + public var VoiceChat_MutedByAdmin: String { return self._s[952]! } public func Notification_PinnedLiveLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[952]!, self._r[952]!, [_0]) + return formatWithArgumentRanges(self._s[953]!, self._r[953]!, [_0]) } - public var Conversation_UnvotePoll: String { return self._s[953]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[954]! } + public var Conversation_UnvotePoll: String { return self._s[954]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[955]! } public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[955]!, self._r[955]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[956]!, self._r[956]!, [_1, "\(_2)"]) } - public var Passport_InfoTitle: String { return self._s[956]! } + public var Passport_InfoTitle: String { return self._s[957]! } public func Conversation_Bytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[957]!, self._r[957]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[958]!, self._r[958]!, ["\(_0)"]) } - public var AccentColor_Title: String { return self._s[958]! } + public var AccentColor_Title: String { return self._s[959]! } public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[959]!, self._r[959]!, [_1, _2]) + return formatWithArgumentRanges(self._s[960]!, self._r[960]!, [_1, _2]) } public func Notification_JoinedChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[962]!, self._r[962]!, [_0]) + return formatWithArgumentRanges(self._s[963]!, self._r[963]!, [_0]) } - public var AutoDownloadSettings_DataUsageCustom: String { return self._s[963]! } - public var Conversation_ShareBotLocationConfirmation: String { return self._s[964]! } - public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[965]! } - public var VoiceOver_Editing_ClearText: String { return self._s[966]! } - public var Conversation_Unarchive: String { return self._s[967]! } - public var Notification_CallOutgoing: String { return self._s[968]! } - public var Channel_Setup_PublicNoLink: String { return self._s[969]! } - public var Passport_Identity_GenderPlaceholder: String { return self._s[970]! } - public var Message_Animation: String { return self._s[971]! } - public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[972]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[973]! } + public var AutoDownloadSettings_DataUsageCustom: String { return self._s[964]! } + public var Conversation_ShareBotLocationConfirmation: String { return self._s[965]! } + public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[966]! } + public var VoiceOver_Editing_ClearText: String { return self._s[967]! } + public var Conversation_Unarchive: String { return self._s[968]! } + public var Notification_CallOutgoing: String { return self._s[969]! } + public var Channel_Setup_PublicNoLink: String { return self._s[970]! } + public var Passport_Identity_GenderPlaceholder: String { return self._s[971]! } + public var Message_Animation: String { return self._s[972]! } + public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[973]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[974]! } public func Watch_Time_ShortFullAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[974]!, self._r[974]!, [_1, _2]) + return formatWithArgumentRanges(self._s[975]!, self._r[975]!, [_1, _2]) } public func VoiceChat_StatusSpeakingVolume(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[975]!, self._r[975]!, [_0]) + return formatWithArgumentRanges(self._s[976]!, self._r[976]!, [_0]) } - public var Notification_CallBack: String { return self._s[976]! } - public var Appearance_Title: String { return self._s[979]! } - public var NotificationsSound_Glass: String { return self._s[981]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[983]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[985]! } - public var ChatSearch_SearchPlaceholder: String { return self._s[986]! } - public var Passport_Identity_AddPassport: String { return self._s[987]! } - public var GroupPermission_NoAddMembers: String { return self._s[989]! } - public var ContactList_Context_SendMessage: String { return self._s[990]! } - public var PhotoEditor_GrainTool: String { return self._s[991]! } - public var Settings_CopyPhoneNumber: String { return self._s[992]! } - public var Passport_Address_City: String { return self._s[993]! } - public var ChannelRemoved_RemoveInfo: String { return self._s[994]! } - public var SocksProxySetup_Password: String { return self._s[996]! } - public var Settings_Passport: String { return self._s[997]! } - public var Channel_MessagePhotoUpdated: String { return self._s[999]! } - public var Stats_LanguagesTitle: String { return self._s[1000]! } - public var ChatList_PeerTypeGroup: String { return self._s[1001]! } - public var Privacy_Calls_P2PHelp: String { return self._s[1002]! } - public var VoiceOver_Chat_PollNoVotes: String { return self._s[1003]! } - public var Embed_PlayingInPIP: String { return self._s[1004]! } - public var BlockedUsers_BlockUser: String { return self._s[1007]! } - public var Login_CancelPhoneVerificationContinue: String { return self._s[1008]! } + public var Notification_CallBack: String { return self._s[977]! } + public var Appearance_Title: String { return self._s[980]! } + public var NotificationsSound_Glass: String { return self._s[982]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[984]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[986]! } + public var ChatSearch_SearchPlaceholder: String { return self._s[987]! } + public var Passport_Identity_AddPassport: String { return self._s[988]! } + public var GroupPermission_NoAddMembers: String { return self._s[990]! } + public var ContactList_Context_SendMessage: String { return self._s[991]! } + public var PhotoEditor_GrainTool: String { return self._s[992]! } + public var Settings_CopyPhoneNumber: String { return self._s[993]! } + public var Passport_Address_City: String { return self._s[994]! } + public var ChannelRemoved_RemoveInfo: String { return self._s[995]! } + public var SocksProxySetup_Password: String { return self._s[997]! } + public var Settings_Passport: String { return self._s[998]! } + public var Channel_MessagePhotoUpdated: String { return self._s[1000]! } + public var Stats_LanguagesTitle: String { return self._s[1001]! } + public var ChatList_PeerTypeGroup: String { return self._s[1002]! } + public var Privacy_Calls_P2PHelp: String { return self._s[1003]! } + public var VoiceOver_Chat_PollNoVotes: String { return self._s[1004]! } + public var Embed_PlayingInPIP: String { return self._s[1005]! } + public var BlockedUsers_BlockUser: String { return self._s[1008]! } + public var Login_CancelPhoneVerificationContinue: String { return self._s[1009]! } public func PUSH_CHANNEL_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1009]!, self._r[1009]!, [_1]) + return formatWithArgumentRanges(self._s[1010]!, self._r[1010]!, [_1]) } - public var AuthSessions_LoggedIn: String { return self._s[1010]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[1011]! } - public var Activity_UploadingDocument: String { return self._s[1012]! } - public var PeopleNearby_NoMembers: String { return self._s[1013]! } - public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1016]! } - public var ChatSettings_AutoPlayVideos: String { return self._s[1017]! } - public var VoiceOver_Chat_OpenLinkHint: String { return self._s[1018]! } - public var InstantPage_VoiceOver_IncreaseFontSize: String { return self._s[1019]! } - public var Settings_ViewVideo: String { return self._s[1020]! } - public var Map_ShowPlaces: String { return self._s[1022]! } - public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1023]! } - public var InviteLink_Create_Title: String { return self._s[1024]! } - public var Notification_CreatedGroup: String { return self._s[1025]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[1026]! } + public var AuthSessions_LoggedIn: String { return self._s[1011]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[1012]! } + public var Activity_UploadingDocument: String { return self._s[1013]! } + public var PeopleNearby_NoMembers: String { return self._s[1014]! } + public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1017]! } + public var ChatSettings_AutoPlayVideos: String { return self._s[1018]! } + public var VoiceOver_Chat_OpenLinkHint: String { return self._s[1019]! } + public var InstantPage_VoiceOver_IncreaseFontSize: String { return self._s[1020]! } + public var Settings_ViewVideo: String { return self._s[1021]! } + public var Map_ShowPlaces: String { return self._s[1023]! } + public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1024]! } + public var InviteLink_Create_Title: String { return self._s[1025]! } + public var Notification_CreatedGroup: String { return self._s[1026]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[1027]! } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1027]!, self._r[1027]!, [_0]) + return formatWithArgumentRanges(self._s[1028]!, self._r[1028]!, [_0]) } - public var Conversation_StatusLeftGroup: String { return self._s[1028]! } - public var Theme_Colors_Messages: String { return self._s[1029]! } - public var AuthSessions_EmptyText: String { return self._s[1030]! } + public var Conversation_StatusLeftGroup: String { return self._s[1029]! } + public var Theme_Colors_Messages: String { return self._s[1030]! } + public var AuthSessions_EmptyText: String { return self._s[1031]! } public func PUSH_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1031]!, self._r[1031]!, [_1]) + return formatWithArgumentRanges(self._s[1032]!, self._r[1032]!, [_1]) } - public var UserInfo_StartSecretChat: String { return self._s[1032]! } - public var ChatListFolderSettings_EditFoldersInfo: String { return self._s[1033]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[1034]! } - public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1035]! } - public var Conversation_PrivateMessageLinkCopied: String { return self._s[1037]! } - public var PeerInfo_PaneFiles: String { return self._s[1038]! } - public var VoiceChat_DisplayAs: String { return self._s[1039]! } - public var PrivacySettings_AutoArchive: String { return self._s[1040]! } - public var Camera_VideoMode: String { return self._s[1041]! } - public var NotificationsSound_Alert: String { return self._s[1042]! } - public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1043]! } - public var Appearance_AutoNightTheme: String { return self._s[1044]! } - public var Passport_Language_he: String { return self._s[1045]! } - public var Passport_InvalidPasswordError: String { return self._s[1046]! } - public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1047]! } - public var UserInfo_InviteBotToGroup: String { return self._s[1048]! } - public var Conversation_SilentBroadcastTooltipOff: String { return self._s[1049]! } - public var Common_TakePhoto: String { return self._s[1050]! } + public var UserInfo_StartSecretChat: String { return self._s[1033]! } + public var ChatListFolderSettings_EditFoldersInfo: String { return self._s[1034]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[1035]! } + public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1036]! } + public var Conversation_PrivateMessageLinkCopied: String { return self._s[1038]! } + public var PeerInfo_PaneFiles: String { return self._s[1039]! } + public var VoiceChat_DisplayAs: String { return self._s[1040]! } + public var PrivacySettings_AutoArchive: String { return self._s[1041]! } + public var Camera_VideoMode: String { return self._s[1042]! } + public var NotificationsSound_Alert: String { return self._s[1043]! } + public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1044]! } + public var Appearance_AutoNightTheme: String { return self._s[1045]! } + public var Passport_Language_he: String { return self._s[1046]! } + public var Passport_InvalidPasswordError: String { return self._s[1047]! } + public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1048]! } + public var UserInfo_InviteBotToGroup: String { return self._s[1049]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[1050]! } + public var Common_TakePhoto: String { return self._s[1051]! } public func Channel_AdminLog_RevokedInviteLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1051]!, self._r[1051]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1052]!, self._r[1052]!, [_1, _2]) } - public var Passport_Email_UseTelegramEmailHelp: String { return self._s[1052]! } - public var ChatList_Context_JoinChannel: String { return self._s[1053]! } - public var MediaPlayer_UnknownArtist: String { return self._s[1054]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[1057]! } - public var Channel_OwnershipTransfer_Title: String { return self._s[1058]! } - public var EditTheme_UploadEditedTheme: String { return self._s[1059]! } - public var Settings_SetProfilePhotoOrVideo: String { return self._s[1061]! } - public var Passport_FieldOneOf_Delimeter: String { return self._s[1062]! } - public var MessagePoll_ViewResults: String { return self._s[1063]! } - public var Group_Setup_TypePrivateHelp: String { return self._s[1064]! } + public var Passport_Email_UseTelegramEmailHelp: String { return self._s[1053]! } + public var ChatList_Context_JoinChannel: String { return self._s[1054]! } + public var MediaPlayer_UnknownArtist: String { return self._s[1055]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[1058]! } + public var Channel_OwnershipTransfer_Title: String { return self._s[1059]! } + public var EditTheme_UploadEditedTheme: String { return self._s[1060]! } + public var Settings_SetProfilePhotoOrVideo: String { return self._s[1062]! } + public var Passport_FieldOneOf_Delimeter: String { return self._s[1063]! } + public var MessagePoll_ViewResults: String { return self._s[1064]! } + public var Group_Setup_TypePrivateHelp: String { return self._s[1065]! } public func UserInfo_ContactForwardTooltip_Chat_One(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1065]!, self._r[1065]!, [_0]) + return formatWithArgumentRanges(self._s[1066]!, self._r[1066]!, [_0]) } - public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1066]! } - public var ChatList_Search_ShowLess: String { return self._s[1067]! } - public var InviteLink_Create_UsersLimitNoLimit: String { return self._s[1068]! } - public var UserInfo_ShareBot: String { return self._s[1069]! } - public var Privacy_Calls_P2P: String { return self._s[1071]! } - public var WebBrowser_InAppSafari: String { return self._s[1072]! } - public var SharedMedia_EmptyFilesText: String { return self._s[1075]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[1076]! } - public var GroupInfo_SetSound: String { return self._s[1077]! } - public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1078]! } + public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1067]! } + public var ChatList_Search_ShowLess: String { return self._s[1068]! } + public var InviteLink_Create_UsersLimitNoLimit: String { return self._s[1069]! } + public var UserInfo_ShareBot: String { return self._s[1070]! } + public var Privacy_Calls_P2P: String { return self._s[1072]! } + public var WebBrowser_InAppSafari: String { return self._s[1073]! } + public var SharedMedia_EmptyFilesText: String { return self._s[1076]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[1077]! } + public var GroupInfo_SetSound: String { return self._s[1078]! } + public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1079]! } public func Conversation_AutoremoveRemainingTime(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1079]!, self._r[1079]!, [_0]) + return formatWithArgumentRanges(self._s[1080]!, self._r[1080]!, [_0]) } - public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1080]! } - public var Channel_AdminLogFilter_EventsAll: String { return self._s[1081]! } - public var CallSettings_UseLessData: String { return self._s[1082]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[1083]! } - public var NotificationsSound_Chord: String { return self._s[1084]! } - public var PhotoEditor_CurvesTool: String { return self._s[1085]! } - public var Appearance_ThemePreview_Chat_2_Text: String { return self._s[1086]! } - public var Resolve_ErrorNotFound: String { return self._s[1087]! } - public var Activity_PlayingGame: String { return self._s[1088]! } + public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1081]! } + public var Channel_AdminLogFilter_EventsAll: String { return self._s[1082]! } + public var CallSettings_UseLessData: String { return self._s[1083]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[1084]! } + public var NotificationsSound_Chord: String { return self._s[1085]! } + public var PhotoEditor_CurvesTool: String { return self._s[1086]! } + public var Appearance_ThemePreview_Chat_2_Text: String { return self._s[1087]! } + public var Resolve_ErrorNotFound: String { return self._s[1088]! } + public var Activity_PlayingGame: String { return self._s[1089]! } public func VoiceChat_InvitedPeerText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1091]!, self._r[1091]!, [_0]) + return formatWithArgumentRanges(self._s[1092]!, self._r[1092]!, [_0]) } - public var StickerPacksSettings_AnimatedStickersInfo: String { return self._s[1092]! } + public var StickerPacksSettings_AnimatedStickersInfo: String { return self._s[1093]! } public func PUSH_CHANNEL_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1093]!, self._r[1093]!, [_1]) + return formatWithArgumentRanges(self._s[1094]!, self._r[1094]!, [_1]) } - public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[1094]! } - public var Notification_CallIncoming: String { return self._s[1095]! } - public var Stats_EnabledNotifications: String { return self._s[1096]! } - public var Notification_VoiceChatStartedChannel: String { return self._s[1097]! } - public var Notifications_PermissionsOpenSettings: String { return self._s[1098]! } - public var Checkout_ErrorProviderAccountTimeout: String { return self._s[1099]! } + public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[1095]! } + public var Notification_CallIncoming: String { return self._s[1096]! } + public var Stats_EnabledNotifications: String { return self._s[1097]! } + public var Notification_VoiceChatStartedChannel: String { return self._s[1098]! } + public var Notifications_PermissionsOpenSettings: String { return self._s[1099]! } + public var Checkout_ErrorProviderAccountTimeout: String { return self._s[1100]! } public func Activity_RemindAboutChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1100]!, self._r[1100]!, [_0]) + return formatWithArgumentRanges(self._s[1101]!, self._r[1101]!, [_0]) } - public var VoiceChat_StatusMutedYou: String { return self._s[1101]! } - public var VoiceOver_Chat_ReplyToYourMessage: String { return self._s[1102]! } - public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[1103]! } - public var StickerPacksSettings_Title: String { return self._s[1104]! } + public var VoiceChat_StatusMutedYou: String { return self._s[1102]! } + public var VoiceOver_Chat_ReplyToYourMessage: String { return self._s[1103]! } + public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[1104]! } + public var StickerPacksSettings_Title: String { return self._s[1105]! } public func Channel_AdminLog_MessageGroupPreHistoryVisible(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1105]!, self._r[1105]!, [_0]) + return formatWithArgumentRanges(self._s[1106]!, self._r[1106]!, [_0]) } - public var Watch_NoConnection: String { return self._s[1106]! } - public var EncryptionKey_Title: String { return self._s[1107]! } - public var Widget_AuthRequired: String { return self._s[1108]! } + public var Watch_NoConnection: String { return self._s[1107]! } + public var EncryptionKey_Title: String { return self._s[1108]! } + public var Widget_AuthRequired: String { return self._s[1109]! } public func PUSH_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1109]!, self._r[1109]!, [_1]) + return formatWithArgumentRanges(self._s[1110]!, self._r[1110]!, [_1]) } - public var Notifications_ExceptionsTitle: String { return self._s[1110]! } - public var EditTheme_Expand_TopInfo: String { return self._s[1111]! } + public var Notifications_ExceptionsTitle: String { return self._s[1111]! } + public var EditTheme_Expand_TopInfo: String { return self._s[1112]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1112]!, self._r[1112]!, [_0]) + return formatWithArgumentRanges(self._s[1113]!, self._r[1113]!, [_0]) } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[1114]! } - public var Notifications_GroupNotificationsSound: String { return self._s[1115]! } - public var VoiceChat_SpeakPermissionAdmin: String { return self._s[1116]! } - public var Passport_Email_EnterOtherEmail: String { return self._s[1117]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[1115]! } + public var Notifications_GroupNotificationsSound: String { return self._s[1116]! } + public var VoiceChat_SpeakPermissionAdmin: String { return self._s[1117]! } + public var Passport_Email_EnterOtherEmail: String { return self._s[1118]! } public func VoiceChat_RemovePeerConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1120]!, self._r[1120]!, [_0]) + return formatWithArgumentRanges(self._s[1121]!, self._r[1121]!, [_0]) } - public var Conversation_AddToContacts: String { return self._s[1121]! } - public var AutoDownloadSettings_DataUsageMedium: String { return self._s[1122]! } - public var AuthSessions_LogOutApplications: String { return self._s[1124]! } - public var VoiceChat_LeaveVoiceChat: String { return self._s[1125]! } - public var ChatList_Context_Unpin: String { return self._s[1126]! } - public var PeopleNearby_DiscoverDescription: String { return self._s[1127]! } - public var UserInfo_FakeBotWarning: String { return self._s[1128]! } - public var Notification_MessageLifetime1d: String { return self._s[1129]! } - public var PrivacyLastSeenSettings_NeverShareWith_Title: String { return self._s[1130]! } - public var ChatListFolder_CategoryChannels: String { return self._s[1131]! } - public var VoiceOver_Chat_SeenByRecipient: String { return self._s[1132]! } - public var Notifications_PermissionsAllow: String { return self._s[1133]! } - public var Undo_ScheduledMessagesCleared: String { return self._s[1134]! } - public var AutoDownloadSettings_PrivateChats: String { return self._s[1136]! } - public var VoiceChat_ImproveYourProfileText: String { return self._s[1137]! } - public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1138]! } - public var ChatImportActivity_ErrorInvalidChatType: String { return self._s[1139]! } + public var Conversation_AddToContacts: String { return self._s[1122]! } + public var AutoDownloadSettings_DataUsageMedium: String { return self._s[1123]! } + public var AuthSessions_LogOutApplications: String { return self._s[1125]! } + public var VoiceChat_LeaveVoiceChat: String { return self._s[1126]! } + public var ChatList_Context_Unpin: String { return self._s[1127]! } + public var PeopleNearby_DiscoverDescription: String { return self._s[1128]! } + public var UserInfo_FakeBotWarning: String { return self._s[1129]! } + public var Notification_MessageLifetime1d: String { return self._s[1130]! } + public var PrivacyLastSeenSettings_NeverShareWith_Title: String { return self._s[1131]! } + public var ChatListFolder_CategoryChannels: String { return self._s[1132]! } + public var VoiceOver_Chat_SeenByRecipient: String { return self._s[1133]! } + public var Notifications_PermissionsAllow: String { return self._s[1134]! } + public var Undo_ScheduledMessagesCleared: String { return self._s[1135]! } + public var AutoDownloadSettings_PrivateChats: String { return self._s[1137]! } + public var VoiceChat_ImproveYourProfileText: String { return self._s[1138]! } + public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1139]! } + public var ChatImportActivity_ErrorInvalidChatType: String { return self._s[1140]! } public func PrivacySettings_LastSeenNobodyPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1140]!, self._r[1140]!, [_0]) + return formatWithArgumentRanges(self._s[1141]!, self._r[1141]!, [_0]) } - public var Conversation_AutoremoveTimerRemovedChannel: String { return self._s[1142]! } - public var Notifications_MessageNotificationsHelp: String { return self._s[1144]! } - public var WallpaperSearch_ColorPink: String { return self._s[1145]! } - public var ContactInfo_PhoneNumberHidden: String { return self._s[1146]! } - public var Passport_Identity_IssueDate: String { return self._s[1148]! } + public var Conversation_AutoremoveTimerRemovedChannel: String { return self._s[1143]! } + public var Notifications_MessageNotificationsHelp: String { return self._s[1145]! } + public var WallpaperSearch_ColorPink: String { return self._s[1146]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[1147]! } + public var Passport_Identity_IssueDate: String { return self._s[1149]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1149]!, self._r[1149]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1150]!, self._r[1150]!, [_1, _2]) } - public var ChatList_DeleteForAllSubscribersConfirmationText: String { return self._s[1150]! } - public var Channel_Info_Description: String { return self._s[1151]! } - public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1152]! } - public var Weekday_ShortTuesday: String { return self._s[1153]! } - public var Common_Back: String { return self._s[1154]! } - public var Chat_PinnedMessagesHiddenTitle: String { return self._s[1156]! } - public var ChatListFolder_AddChats: String { return self._s[1157]! } - public var Common_Close: String { return self._s[1159]! } - public var Map_OpenIn: String { return self._s[1160]! } - public var Group_Setup_HistoryTitle: String { return self._s[1161]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[1162]! } - public var Notification_MessageLifetime1h: String { return self._s[1163]! } + public var ChatList_DeleteForAllSubscribersConfirmationText: String { return self._s[1151]! } + public var Channel_Info_Description: String { return self._s[1152]! } + public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1153]! } + public var Weekday_ShortTuesday: String { return self._s[1154]! } + public var Common_Back: String { return self._s[1155]! } + public var Chat_PinnedMessagesHiddenTitle: String { return self._s[1157]! } + public var ChatListFolder_AddChats: String { return self._s[1158]! } + public var Common_Close: String { return self._s[1160]! } + public var Map_OpenIn: String { return self._s[1161]! } + public var Group_Setup_HistoryTitle: String { return self._s[1162]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[1163]! } + public var Notification_MessageLifetime1h: String { return self._s[1164]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1164]!, self._r[1164]!, [_0]) + return formatWithArgumentRanges(self._s[1165]!, self._r[1165]!, [_0]) } - public var Watch_Contacts_NoResults: String { return self._s[1166]! } - public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1167]! } - public var Checkout_Phone: String { return self._s[1168]! } - public var OwnershipTransfer_ComeBackLater: String { return self._s[1169]! } + public var Watch_Contacts_NoResults: String { return self._s[1167]! } + public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1168]! } + public var Checkout_Phone: String { return self._s[1169]! } + public var OwnershipTransfer_ComeBackLater: String { return self._s[1170]! } public func Channel_CommentsGroup_HeaderGroupSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1170]!, self._r[1170]!, [_0]) + return formatWithArgumentRanges(self._s[1171]!, self._r[1171]!, [_0]) } public func DialogList_MultipleTypingSuffix(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1171]!, self._r[1171]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1172]!, self._r[1172]!, ["\(_0)"]) } - public var Conversation_AudioRateTooltipSpeedUp: String { return self._s[1172]! } - public var ChatAdmins_Title: String { return self._s[1173]! } - public var Appearance_ThemePreview_Chat_7_Text: String { return self._s[1174]! } + public var Conversation_AudioRateTooltipSpeedUp: String { return self._s[1173]! } + public var ChatAdmins_Title: String { return self._s[1174]! } + public var Appearance_ThemePreview_Chat_7_Text: String { return self._s[1175]! } public func PUSH_CHANNEL_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1175]!, self._r[1175]!, [_1]) + return formatWithArgumentRanges(self._s[1176]!, self._r[1176]!, [_1]) } - public var Common_Done: String { return self._s[1176]! } - public var ChatList_HeaderImportIntoAnExistingGroup: String { return self._s[1177]! } - public var Appearance_ThemeCarouselNight: String { return self._s[1180]! } + public var Common_Done: String { return self._s[1177]! } + public var ChatList_HeaderImportIntoAnExistingGroup: String { return self._s[1178]! } + public var Appearance_ThemeCarouselNight: String { return self._s[1181]! } public func PUSH_PINNED_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1182]!, self._r[1182]!, [_1]) + return formatWithArgumentRanges(self._s[1183]!, self._r[1183]!, [_1]) } - public var InviteLink_Expired: String { return self._s[1184]! } - public var Preview_OpenInInstagram: String { return self._s[1185]! } - public var Wallpaper_SetColor: String { return self._s[1189]! } - public var VoiceOver_Media_PlaybackRate: String { return self._s[1190]! } - public var ChatSettings_Groups: String { return self._s[1191]! } + public var InviteLink_Expired: String { return self._s[1185]! } + public var Preview_OpenInInstagram: String { return self._s[1186]! } + public var Wallpaper_SetColor: String { return self._s[1190]! } + public var VoiceOver_Media_PlaybackRate: String { return self._s[1191]! } + public var ChatSettings_Groups: String { return self._s[1192]! } public func VoiceOver_Chat_VoiceMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1192]!, self._r[1192]!, [_0]) + return formatWithArgumentRanges(self._s[1193]!, self._r[1193]!, [_0]) } - public var Contacts_SortedByName: String { return self._s[1193]! } - public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1194]! } - public var Channel_Management_LabelCreator: String { return self._s[1195]! } - public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1196]! } + public var Contacts_SortedByName: String { return self._s[1194]! } + public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1195]! } + public var Channel_Management_LabelCreator: String { return self._s[1196]! } + public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1197]! } public func PrivacySettings_LastSeenContactsMinusPlus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1197]!, self._r[1197]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1198]!, self._r[1198]!, [_0, _1]) } - public var Group_GroupMembersHeader: String { return self._s[1198]! } - public var Group_PublicLink_Title: String { return self._s[1199]! } - public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[1200]! } - public var VoiceOver_Chat_Photo: String { return self._s[1201]! } - public var TwoFactorSetup_EmailVerification_Placeholder: String { return self._s[1202]! } - public var IntentsSettings_SuggestBy: String { return self._s[1203]! } - public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[1204]! } - public var Appearance_ThemePreview_ChatList_1_Name: String { return self._s[1205]! } - public var PhoneNumberHelp_ChangeNumber: String { return self._s[1206]! } - public var LogoutOptions_SetPasscodeText: String { return self._s[1207]! } - public var Map_OpenInMaps: String { return self._s[1208]! } - public var ContactInfo_PhoneLabelWorkFax: String { return self._s[1209]! } - public var BlockedUsers_Unblock: String { return self._s[1210]! } + public var Group_GroupMembersHeader: String { return self._s[1199]! } + public var Group_PublicLink_Title: String { return self._s[1200]! } + public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[1201]! } + public var VoiceOver_Chat_Photo: String { return self._s[1202]! } + public var TwoFactorSetup_EmailVerification_Placeholder: String { return self._s[1203]! } + public var IntentsSettings_SuggestBy: String { return self._s[1204]! } + public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[1205]! } + public var Appearance_ThemePreview_ChatList_1_Name: String { return self._s[1206]! } + public var PhoneNumberHelp_ChangeNumber: String { return self._s[1207]! } + public var LogoutOptions_SetPasscodeText: String { return self._s[1208]! } + public var Map_OpenInMaps: String { return self._s[1209]! } + public var ContactInfo_PhoneLabelWorkFax: String { return self._s[1210]! } + public var BlockedUsers_Unblock: String { return self._s[1211]! } public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1211]!, self._r[1211]!, [_1, _2]) - } - public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1212]!, self._r[1212]!, [_1, _2]) } - public var ChatImport_CreateGroupAlertTitle: String { return self._s[1214]! } - public var Conversation_Block: String { return self._s[1215]! } - public var VoiceChat_PersonalAccount: String { return self._s[1216]! } - public var Passport_Scans_UploadNew: String { return self._s[1217]! } - public var Share_Title: String { return self._s[1218]! } - public var Conversation_ApplyLocalization: String { return self._s[1219]! } - public var SharedMedia_EmptyLinksText: String { return self._s[1220]! } - public var Settings_NotificationsAndSounds: String { return self._s[1221]! } - public var Stats_ViewsByHoursTitle: String { return self._s[1222]! } - public var PhotoEditor_QualityMedium: String { return self._s[1223]! } - public var Conversation_ContextMenuCancelSending: String { return self._s[1224]! } + public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1213]!, self._r[1213]!, [_1, _2]) + } + public var ChatImport_CreateGroupAlertTitle: String { return self._s[1215]! } + public var Conversation_Block: String { return self._s[1216]! } + public var VoiceChat_PersonalAccount: String { return self._s[1217]! } + public var Passport_Scans_UploadNew: String { return self._s[1218]! } + public var Share_Title: String { return self._s[1219]! } + public var Conversation_ApplyLocalization: String { return self._s[1220]! } + public var SharedMedia_EmptyLinksText: String { return self._s[1221]! } + public var Settings_NotificationsAndSounds: String { return self._s[1222]! } + public var Stats_ViewsByHoursTitle: String { return self._s[1223]! } + public var PhotoEditor_QualityMedium: String { return self._s[1224]! } + public var Conversation_ContextMenuCancelSending: String { return self._s[1225]! } public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1225]!, self._r[1225]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1226]!, self._r[1226]!, [_1, _2]) } - public var Conversation_RestrictedInline: String { return self._s[1226]! } - public var Passport_Language_tr: String { return self._s[1227]! } - public var Call_Mute: String { return self._s[1228]! } + public var Conversation_RestrictedInline: String { return self._s[1227]! } + public var Passport_Language_tr: String { return self._s[1228]! } + public var Call_Mute: String { return self._s[1229]! } public func Conversation_NoticeInvitedByInGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1229]!, self._r[1229]!, [_0]) + return formatWithArgumentRanges(self._s[1230]!, self._r[1230]!, [_0]) } - public var Passport_Language_bn: String { return self._s[1230]! } - public var Common_Save: String { return self._s[1232]! } - public var AccessDenied_LocationTracking: String { return self._s[1234]! } - public var Month_ShortOctober: String { return self._s[1235]! } - public var AutoDownloadSettings_WiFi: String { return self._s[1236]! } - public var ProfilePhoto_SetMainPhoto: String { return self._s[1238]! } - public var ChangePhoneNumberNumber_NewNumber: String { return self._s[1239]! } + public var Passport_Language_bn: String { return self._s[1231]! } + public var Common_Save: String { return self._s[1233]! } + public var AccessDenied_LocationTracking: String { return self._s[1235]! } + public var Month_ShortOctober: String { return self._s[1236]! } + public var AutoDownloadSettings_WiFi: String { return self._s[1237]! } + public var ProfilePhoto_SetMainPhoto: String { return self._s[1239]! } + public var ChangePhoneNumberNumber_NewNumber: String { return self._s[1240]! } public func Time_MonthOfYear_m3(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1240]!, self._r[1240]!, [_0]) + return formatWithArgumentRanges(self._s[1241]!, self._r[1241]!, [_0]) } - public var Watch_ChannelInfo_Title: String { return self._s[1241]! } - public var State_Updating: String { return self._s[1242]! } - public var Conversation_UnblockUser: String { return self._s[1243]! } - public var Notifications_ChannelNotificationsSound: String { return self._s[1244]! } - public var Map_GetDirections: String { return self._s[1245]! } - public var Watch_Compose_AddContact: String { return self._s[1247]! } - public var Conversation_Dice_u26BD: String { return self._s[1248]! } - public var AccessDenied_PhotosRestricted: String { return self._s[1249]! } + public var Watch_ChannelInfo_Title: String { return self._s[1242]! } + public var State_Updating: String { return self._s[1243]! } + public var Conversation_UnblockUser: String { return self._s[1244]! } + public var Notifications_ChannelNotificationsSound: String { return self._s[1245]! } + public var Map_GetDirections: String { return self._s[1246]! } + public var Watch_Compose_AddContact: String { return self._s[1248]! } + public var Conversation_Dice_u26BD: String { return self._s[1249]! } + public var AccessDenied_PhotosRestricted: String { return self._s[1250]! } public func Channel_AdminLog_MessageRank(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1250]!, self._r[1250]!, [_1]) + return formatWithArgumentRanges(self._s[1251]!, self._r[1251]!, [_1]) } - public var Map_LoadError: String { return self._s[1252]! } - public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[1253]! } - public var PhotoEditor_CropAuto: String { return self._s[1254]! } + public var Map_LoadError: String { return self._s[1253]! } + public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[1254]! } + public var PhotoEditor_CropAuto: String { return self._s[1255]! } public func Target_ShareGameConfirmationPrivate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1257]!, self._r[1257]!, [_0]) + return formatWithArgumentRanges(self._s[1258]!, self._r[1258]!, [_0]) } - public var Username_TooManyPublicUsernamesError: String { return self._s[1259]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[1260]! } public func PUSH_PINNED_GAME(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1260]!, self._r[1260]!, [_1]) + return formatWithArgumentRanges(self._s[1261]!, self._r[1261]!, [_1]) } - public var Settings_PhoneNumber: String { return self._s[1261]! } + public var Settings_PhoneNumber: String { return self._s[1262]! } public func Channel_AdminLog_MessageTransferedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1262]!, self._r[1262]!, [_1]) + return formatWithArgumentRanges(self._s[1263]!, self._r[1263]!, [_1]) } - public var Month_GenJune: String { return self._s[1264]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[1265]! } - public var ChatListFolder_CategoryRead: String { return self._s[1266]! } - public var LoginPassword_ResetAccount: String { return self._s[1267]! } + public var Month_GenJune: String { return self._s[1265]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[1266]! } + public var ChatListFolder_CategoryRead: String { return self._s[1267]! } + public var LoginPassword_ResetAccount: String { return self._s[1268]! } public func DialogList_SingleUploadingFileSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1268]!, self._r[1268]!, [_0]) + return formatWithArgumentRanges(self._s[1269]!, self._r[1269]!, [_0]) } - public var Call_CameraConfirmationConfirm: String { return self._s[1269]! } - public var Notification_RenamedChannel: String { return self._s[1270]! } + public var Call_CameraConfirmationConfirm: String { return self._s[1270]! } + public var Notification_RenamedChannel: String { return self._s[1271]! } public func Channel_AdminLog_MessageUnpinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1271]!, self._r[1271]!, [_0]) + return formatWithArgumentRanges(self._s[1272]!, self._r[1272]!, [_0]) } - public var Channel_AdminLogFilter_EventsAdmins: String { return self._s[1272]! } - public var IntentsSettings_Title: String { return self._s[1274]! } - public var CallList_DeleteAllForMe: String { return self._s[1275]! } - public var Settings_AppleWatch: String { return self._s[1276]! } - public var Conversation_LinkCopied: String { return self._s[1277]! } - public var DialogList_NoMessagesText: String { return self._s[1278]! } + public var Channel_AdminLogFilter_EventsAdmins: String { return self._s[1273]! } + public var IntentsSettings_Title: String { return self._s[1275]! } + public var CallList_DeleteAllForMe: String { return self._s[1276]! } + public var Settings_AppleWatch: String { return self._s[1277]! } + public var Conversation_LinkCopied: String { return self._s[1278]! } + public var DialogList_NoMessagesText: String { return self._s[1279]! } public func VoiceChat_SendPublicLinkText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1279]!, self._r[1279]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1280]!, self._r[1280]!, [_1, _2]) } - public var GroupPermission_NoChangeInfo: String { return self._s[1280]! } - public var Channel_ErrorAccessDenied: String { return self._s[1282]! } - public var ScheduledMessages_EmptyPlaceholder: String { return self._s[1283]! } + public var GroupPermission_NoChangeInfo: String { return self._s[1281]! } + public var Channel_ErrorAccessDenied: String { return self._s[1283]! } + public var ScheduledMessages_EmptyPlaceholder: String { return self._s[1284]! } public func Message_StickerText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1284]!, self._r[1284]!, [_0]) + return formatWithArgumentRanges(self._s[1285]!, self._r[1285]!, [_0]) } - public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1285]! } - public var StickerPacksSettings_AnimatedStickers: String { return self._s[1286]! } - public var Month_ShortJanuary: String { return self._s[1287]! } - public var Conversation_UnreadMessages: String { return self._s[1288]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[1290]! } - public var Call_VoiceOver_VideoCallCanceled: String { return self._s[1291]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[1293]! } - public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1294]! } + public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1286]! } + public var StickerPacksSettings_AnimatedStickers: String { return self._s[1287]! } + public var Month_ShortJanuary: String { return self._s[1288]! } + public var Conversation_UnreadMessages: String { return self._s[1289]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[1291]! } + public var Call_VoiceOver_VideoCallCanceled: String { return self._s[1292]! } + public var PrivacySettings_DeleteAccountTitle: String { return self._s[1294]! } + public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1295]! } public func Conversation_ShareMyPhoneNumberConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1298]!, self._r[1298]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1299]!, self._r[1299]!, [_1, _2]) } - public var Widget_ApplicationLocked: String { return self._s[1299]! } + public var Widget_ApplicationLocked: String { return self._s[1300]! } public func TextFormat_AddLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1300]!, self._r[1300]!, [_0]) + return formatWithArgumentRanges(self._s[1301]!, self._r[1301]!, [_0]) } - public var Common_TakePhotoOrVideo: String { return self._s[1301]! } - public var Passport_Language_ru: String { return self._s[1302]! } - public var MediaPicker_VideoMuteDescription: String { return self._s[1303]! } - public var EditTheme_ErrorLinkTaken: String { return self._s[1304]! } + public var Common_TakePhotoOrVideo: String { return self._s[1302]! } + public var Passport_Language_ru: String { return self._s[1303]! } + public var MediaPicker_VideoMuteDescription: String { return self._s[1304]! } + public var EditTheme_ErrorLinkTaken: String { return self._s[1305]! } public func Group_EditAdmin_RankInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1306]!, self._r[1306]!, [_0]) + return formatWithArgumentRanges(self._s[1307]!, self._r[1307]!, [_0]) } - public var VoiceChat_ShareShort: String { return self._s[1307]! } - public var Channel_Members_AddAdminErrorBlacklisted: String { return self._s[1308]! } - public var Conversation_Owner: String { return self._s[1310]! } - public var Settings_FAQ_Intro: String { return self._s[1311]! } - public var PhotoEditor_QualityLow: String { return self._s[1313]! } - public var Widget_GalleryTitle: String { return self._s[1314]! } - public var Call_End: String { return self._s[1315]! } - public var StickerPacksSettings_FeaturedPacks: String { return self._s[1317]! } - public var Privacy_ContactsSyncHelp: String { return self._s[1318]! } - public var OldChannels_NoticeUpgradeText: String { return self._s[1322]! } - public var Conversation_Call: String { return self._s[1324]! } - public var Watch_MessageView_Title: String { return self._s[1325]! } + public var VoiceChat_ShareShort: String { return self._s[1308]! } + public var Channel_Members_AddAdminErrorBlacklisted: String { return self._s[1309]! } + public var Conversation_Owner: String { return self._s[1311]! } + public var Settings_FAQ_Intro: String { return self._s[1312]! } + public var PhotoEditor_QualityLow: String { return self._s[1314]! } + public var Widget_GalleryTitle: String { return self._s[1315]! } + public var Call_End: String { return self._s[1316]! } + public var StickerPacksSettings_FeaturedPacks: String { return self._s[1318]! } + public var Privacy_ContactsSyncHelp: String { return self._s[1319]! } + public var OldChannels_NoticeUpgradeText: String { return self._s[1323]! } + public var Conversation_Call: String { return self._s[1325]! } + public var Watch_MessageView_Title: String { return self._s[1326]! } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1326]!, self._r[1326]!, [_0]) + return formatWithArgumentRanges(self._s[1327]!, self._r[1327]!, [_0]) } - public var Passport_PasswordCompleteSetup: String { return self._s[1327]! } + public var Passport_PasswordCompleteSetup: String { return self._s[1328]! } public func Notification_ChangedGroupVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1328]!, self._r[1328]!, [_0]) + return formatWithArgumentRanges(self._s[1329]!, self._r[1329]!, [_0]) } public func TwoFactorSetup_EmailVerification_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1330]!, self._r[1330]!, [_0]) + return formatWithArgumentRanges(self._s[1331]!, self._r[1331]!, [_0]) } - public var Map_Location: String { return self._s[1331]! } - public var Watch_MessageView_ViewOnPhone: String { return self._s[1332]! } - public var Login_CountryCode: String { return self._s[1333]! } - public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[1335]! } - public var ChatState_ConnectingToProxy: String { return self._s[1336]! } - public var Login_CallRequestState3: String { return self._s[1337]! } - public var NetworkUsageSettings_MediaAudioDataSection: String { return self._s[1340]! } - public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1341]! } - public var Widget_ChatsGalleryDescription: String { return self._s[1343]! } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[1345]! } - public var InstantPage_FontSanFrancisco: String { return self._s[1346]! } - public var Call_StatusEnded: String { return self._s[1347]! } - public var MusicPlayer_VoiceNote: String { return self._s[1350]! } - public var ChatImportActivity_ErrorUserBlocked: String { return self._s[1351]! } + public var Map_Location: String { return self._s[1332]! } + public var Watch_MessageView_ViewOnPhone: String { return self._s[1333]! } + public var Login_CountryCode: String { return self._s[1334]! } + public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[1336]! } + public var ChatState_ConnectingToProxy: String { return self._s[1337]! } + public var Login_CallRequestState3: String { return self._s[1338]! } + public var NetworkUsageSettings_MediaAudioDataSection: String { return self._s[1341]! } + public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1342]! } + public var Widget_ChatsGalleryDescription: String { return self._s[1344]! } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[1346]! } + public var InstantPage_FontSanFrancisco: String { return self._s[1347]! } + public var Call_StatusEnded: String { return self._s[1348]! } + public var MusicPlayer_VoiceNote: String { return self._s[1351]! } + public var ChatImportActivity_ErrorUserBlocked: String { return self._s[1352]! } public func PUSH_CHANNEL_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1352]!, self._r[1352]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1353]!, self._r[1353]!, [_1, _2]) } - public var VoiceOver_MessageContextShare: String { return self._s[1353]! } - public var ProfilePhoto_SearchWeb: String { return self._s[1354]! } - public var EditProfile_Title: String { return self._s[1355]! } + public var VoiceOver_MessageContextShare: String { return self._s[1354]! } + public var ProfilePhoto_SearchWeb: String { return self._s[1355]! } + public var EditProfile_Title: String { return self._s[1356]! } public func Notification_PinnedQuizMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1356]!, self._r[1356]!, [_0]) + return formatWithArgumentRanges(self._s[1357]!, self._r[1357]!, [_0]) } - public var VoiceChat_Unmute: String { return self._s[1357]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[1358]! } - public var NetworkUsageSettings_ResetStats: String { return self._s[1360]! } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[1361]! } - public var StickerPackActionInfo_AddedTitle: String { return self._s[1362]! } - public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[1363]! } + public var VoiceChat_Unmute: String { return self._s[1358]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[1359]! } + public var NetworkUsageSettings_ResetStats: String { return self._s[1361]! } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[1362]! } + public var StickerPackActionInfo_AddedTitle: String { return self._s[1363]! } + public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[1364]! } public func Call_ParticipantVideoVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1364]!, self._r[1364]!, [_0]) + return formatWithArgumentRanges(self._s[1365]!, self._r[1365]!, [_0]) } - public var Location_ProximityNotification_Title: String { return self._s[1365]! } - public var AuthSessions_AddDeviceIntro_Text1: String { return self._s[1366]! } - public var Passport_Identity_LatinNameHelp: String { return self._s[1369]! } - public var AuthSessions_AddDeviceIntro_Text2: String { return self._s[1370]! } - public var Stats_GroupMembersTitle: String { return self._s[1371]! } - public var AuthSessions_AddDeviceIntro_Text3: String { return self._s[1372]! } - public var InviteLink_InviteLinkRevoked: String { return self._s[1373]! } - public var Contacts_PermissionsSuppressWarningText: String { return self._s[1374]! } - public var OpenFile_PotentiallyDangerousContentAlert: String { return self._s[1375]! } - public var Settings_SetUsername: String { return self._s[1376]! } - public var GroupInfo_ActionRestrict: String { return self._s[1377]! } - public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1378]! } + public var Location_ProximityNotification_Title: String { return self._s[1366]! } + public var AuthSessions_AddDeviceIntro_Text1: String { return self._s[1367]! } + public var Passport_Identity_LatinNameHelp: String { return self._s[1370]! } + public var AuthSessions_AddDeviceIntro_Text2: String { return self._s[1371]! } + public var Stats_GroupMembersTitle: String { return self._s[1372]! } + public var AuthSessions_AddDeviceIntro_Text3: String { return self._s[1373]! } + public var InviteLink_InviteLinkRevoked: String { return self._s[1374]! } + public var Contacts_PermissionsSuppressWarningText: String { return self._s[1375]! } + public var OpenFile_PotentiallyDangerousContentAlert: String { return self._s[1376]! } + public var Settings_SetUsername: String { return self._s[1377]! } + public var GroupInfo_ActionRestrict: String { return self._s[1378]! } + public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1379]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1379]!, self._r[1379]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1380]!, self._r[1380]!, [_1, _2, _3]) } - public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1381]! } - public var Notification_Exceptions_AlwaysOff: String { return self._s[1382]! } - public var Conversation_ContextMenuDelete: String { return self._s[1383]! } - public var Privacy_Calls_WhoCanCallMe: String { return self._s[1384]! } - public var ChatList_PsaAlert_covid: String { return self._s[1387]! } - public var VoiceOver_SilentPostOn: String { return self._s[1388]! } - public var DialogList_Pin: String { return self._s[1389]! } - public var Channel_AdminLog_CanInviteUsersViaLink: String { return self._s[1390]! } - public var PrivacySettings_SecurityTitle: String { return self._s[1391]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[1392]! } - public var PeopleNearby_Groups: String { return self._s[1393]! } - public var Message_File: String { return self._s[1394]! } - public var Calls_NoCallsPlaceholder: String { return self._s[1395]! } - public var ChatList_GenericPsaLabel: String { return self._s[1397]! } - public var UserInfo_LastNamePlaceholder: String { return self._s[1398]! } - public var IntentsSettings_Reset: String { return self._s[1400]! } - public var Call_ConnectionErrorTitle: String { return self._s[1401]! } - public var PhotoEditor_SaturationTool: String { return self._s[1402]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[1403]! } - public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1404]! } - public var Conversation_SearchNoResults: String { return self._s[1405]! } - public var Channel_DiscussionGroup_PrivateChannel: String { return self._s[1406]! } - public var Map_OpenInWaze: String { return self._s[1407]! } - public var InviteLink_PeopleJoinedNone: String { return self._s[1408]! } - public var WallpaperPreview_Title: String { return self._s[1409]! } + public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1382]! } + public var Notification_Exceptions_AlwaysOff: String { return self._s[1383]! } + public var Conversation_ContextMenuDelete: String { return self._s[1384]! } + public var Privacy_Calls_WhoCanCallMe: String { return self._s[1385]! } + public var ChatList_PsaAlert_covid: String { return self._s[1388]! } + public var VoiceOver_SilentPostOn: String { return self._s[1389]! } + public var DialogList_Pin: String { return self._s[1390]! } + public var Channel_AdminLog_CanInviteUsersViaLink: String { return self._s[1391]! } + public var PrivacySettings_SecurityTitle: String { return self._s[1392]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[1393]! } + public var PeopleNearby_Groups: String { return self._s[1394]! } + public var Message_File: String { return self._s[1395]! } + public var Calls_NoCallsPlaceholder: String { return self._s[1396]! } + public var ChatList_GenericPsaLabel: String { return self._s[1398]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[1399]! } + public var IntentsSettings_Reset: String { return self._s[1401]! } + public var Call_ConnectionErrorTitle: String { return self._s[1402]! } + public var PhotoEditor_SaturationTool: String { return self._s[1403]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[1404]! } + public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1405]! } + public var Conversation_SearchNoResults: String { return self._s[1406]! } + public var Channel_DiscussionGroup_PrivateChannel: String { return self._s[1407]! } + public var Map_OpenInWaze: String { return self._s[1408]! } + public var InviteLink_PeopleJoinedNone: String { return self._s[1409]! } + public var WallpaperPreview_Title: String { return self._s[1410]! } public func Passport_AcceptHelp(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1411]!, self._r[1411]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1412]!, self._r[1412]!, [_1, _2]) } - public var AuthSessions_AddDeviceIntro_Title: String { return self._s[1412]! } - public var VoiceOver_Chat_RecordModeVideoMessageInfo: String { return self._s[1413]! } - public var VoiceOver_Chat_ChannelInfo: String { return self._s[1414]! } - public var Conversation_ImageCopied: String { return self._s[1415]! } - public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[1416]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[1418]! } - public var Stats_Total: String { return self._s[1421]! } - public var Stats_GroupMessages: String { return self._s[1422]! } - public var TwoFactorSetup_Email_SkipAction: String { return self._s[1423]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[1424]! } - public var VoiceChat_You: String { return self._s[1425]! } - public var VoiceChat_DisplayAsInfoGroup: String { return self._s[1426]! } - public var Passport_Identity_Translation: String { return self._s[1427]! } - public var Notifications_TextTone: String { return self._s[1430]! } - public var Settings_RemoveConfirmation: String { return self._s[1432]! } - public var ScheduledMessages_Delete: String { return self._s[1433]! } - public var Channel_AdminLog_BanEmbedLinks: String { return self._s[1434]! } - public var Passport_PasswordNext: String { return self._s[1435]! } + public var AuthSessions_AddDeviceIntro_Title: String { return self._s[1413]! } + public var VoiceOver_Chat_RecordModeVideoMessageInfo: String { return self._s[1414]! } + public var VoiceOver_Chat_ChannelInfo: String { return self._s[1415]! } + public var Conversation_ImageCopied: String { return self._s[1416]! } + public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[1417]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[1419]! } + public var Stats_Total: String { return self._s[1422]! } + public var Stats_GroupMessages: String { return self._s[1423]! } + public var TwoFactorSetup_Email_SkipAction: String { return self._s[1424]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[1425]! } + public var VoiceChat_You: String { return self._s[1426]! } + public var VoiceChat_DisplayAsInfoGroup: String { return self._s[1427]! } + public var Passport_Identity_Translation: String { return self._s[1428]! } + public var Notifications_TextTone: String { return self._s[1431]! } + public var Settings_RemoveConfirmation: String { return self._s[1433]! } + public var ScheduledMessages_Delete: String { return self._s[1434]! } + public var Channel_AdminLog_BanEmbedLinks: String { return self._s[1435]! } + public var Passport_PasswordNext: String { return self._s[1436]! } public func PUSH_ENCRYPTED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1436]!, self._r[1436]!, [_1]) + return formatWithArgumentRanges(self._s[1437]!, self._r[1437]!, [_1]) } - public var Passport_Address_EditBankStatement: String { return self._s[1437]! } - public var PhotoEditor_ShadowsTool: String { return self._s[1438]! } - public var Notification_VideoCallMissed: String { return self._s[1439]! } - public var AccessDenied_CameraDisabled: String { return self._s[1440]! } - public var AuthSessions_AddDevice_ScanInfo: String { return self._s[1441]! } - public var Notifications_ExceptionsMuted: String { return self._s[1442]! } - public var Conversation_ScheduleMessage_SendWhenOnline: String { return self._s[1443]! } - public var Channel_BlackList_Title: String { return self._s[1444]! } - public var PasscodeSettings_4DigitCode: String { return self._s[1445]! } - public var NotificationsSound_Bamboo: String { return self._s[1446]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[1447]! } - public var Passport_Address_TypeUtilityBill: String { return self._s[1448]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[1449]! } - public var GroupPermission_SectionTitle: String { return self._s[1450]! } - public var InviteLink_ContextRevoke: String { return self._s[1451]! } + public var Passport_Address_EditBankStatement: String { return self._s[1438]! } + public var PhotoEditor_ShadowsTool: String { return self._s[1439]! } + public var Notification_VideoCallMissed: String { return self._s[1440]! } + public var AccessDenied_CameraDisabled: String { return self._s[1441]! } + public var AuthSessions_AddDevice_ScanInfo: String { return self._s[1442]! } + public var Notifications_ExceptionsMuted: String { return self._s[1443]! } + public var Conversation_ScheduleMessage_SendWhenOnline: String { return self._s[1444]! } + public var Channel_BlackList_Title: String { return self._s[1445]! } + public var PasscodeSettings_4DigitCode: String { return self._s[1446]! } + public var NotificationsSound_Bamboo: String { return self._s[1447]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[1448]! } + public var Passport_Address_TypeUtilityBill: String { return self._s[1449]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[1450]! } + public var GroupPermission_SectionTitle: String { return self._s[1451]! } + public var InviteLink_ContextRevoke: String { return self._s[1452]! } public func Notification_InvitedMultiple(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1452]!, self._r[1452]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1453]!, self._r[1453]!, [_0, _1]) } - public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[1453]! } - public var Channel_LeaveChannel: String { return self._s[1454]! } - public var Watch_Notification_Joined: String { return self._s[1455]! } - public var PeerInfo_ButtonMore: String { return self._s[1456]! } - public var Passport_FieldEmailHelp: String { return self._s[1457]! } - public var ChatList_Context_Pin: String { return self._s[1458]! } + public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[1454]! } + public var Channel_LeaveChannel: String { return self._s[1455]! } + public var Watch_Notification_Joined: String { return self._s[1456]! } + public var PeerInfo_ButtonMore: String { return self._s[1457]! } + public var Passport_FieldEmailHelp: String { return self._s[1458]! } + public var ChatList_Context_Pin: String { return self._s[1459]! } public func Time_MonthOfYear_m9(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1459]!, self._r[1459]!, [_0]) + return formatWithArgumentRanges(self._s[1460]!, self._r[1460]!, [_0]) } - public var Group_Location_CreateInThisPlace: String { return self._s[1460]! } - public var PhotoEditor_QualityVeryHigh: String { return self._s[1461]! } - public var Tour_Title5: String { return self._s[1462]! } + public var Group_Location_CreateInThisPlace: String { return self._s[1461]! } + public var PhotoEditor_QualityVeryHigh: String { return self._s[1462]! } + public var Tour_Title5: String { return self._s[1463]! } public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1463]!, self._r[1463]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1464]!, self._r[1464]!, [_1, _2]) } - public var Passport_Language_en: String { return self._s[1464]! } - public var Checkout_Name: String { return self._s[1465]! } - public var ChatImport_Title: String { return self._s[1466]! } + public var Passport_Language_en: String { return self._s[1465]! } + public var Checkout_Name: String { return self._s[1466]! } + public var ChatImport_Title: String { return self._s[1467]! } public func NetworkUsageSettings_WifiUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1467]!, self._r[1467]!, [_0]) + return formatWithArgumentRanges(self._s[1468]!, self._r[1468]!, [_0]) } - public var PhotoEditor_EnhanceTool: String { return self._s[1468]! } + public var PhotoEditor_EnhanceTool: String { return self._s[1469]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1469]!, self._r[1469]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1470]!, self._r[1470]!, [_1, _2]) } public func VoiceChat_UserCanNowSpeak(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1470]!, self._r[1470]!, [_0]) + return formatWithArgumentRanges(self._s[1471]!, self._r[1471]!, [_0]) } - public var PeerInfo_CustomizeNotifications: String { return self._s[1471]! } + public var PeerInfo_CustomizeNotifications: String { return self._s[1472]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1472]!, self._r[1472]!, [_0]) + return formatWithArgumentRanges(self._s[1473]!, self._r[1473]!, [_0]) } - public var Group_ErrorSendRestrictedMedia: String { return self._s[1473]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[1474]! } public func UserInfo_NotificationsDefaultSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1474]!, self._r[1474]!, [_0]) + return formatWithArgumentRanges(self._s[1475]!, self._r[1475]!, [_0]) } - public var Login_UnknownError: String { return self._s[1475]! } - public var Conversation_ImportedMessageHint: String { return self._s[1477]! } + public var Login_UnknownError: String { return self._s[1476]! } + public var Conversation_ImportedMessageHint: String { return self._s[1478]! } public func VoiceChat_ForwardTooltip_Chat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1478]!, self._r[1478]!, [_0]) + return formatWithArgumentRanges(self._s[1479]!, self._r[1479]!, [_0]) } - public var Passport_Identity_TypeDriversLicense: String { return self._s[1480]! } - public var ChatList_AutoarchiveSuggestion_Title: String { return self._s[1481]! } - public var Watch_PhotoView_Title: String { return self._s[1482]! } - public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[1483]! } - public var Checkout_TotalAmount: String { return self._s[1484]! } - public var ChatList_RemoveFolderAction: String { return self._s[1485]! } + public var Passport_Identity_TypeDriversLicense: String { return self._s[1481]! } + public var ChatList_AutoarchiveSuggestion_Title: String { return self._s[1482]! } + public var Watch_PhotoView_Title: String { return self._s[1483]! } + public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[1484]! } + public var Checkout_TotalAmount: String { return self._s[1485]! } + public var ChatList_RemoveFolderAction: String { return self._s[1486]! } public func GroupInfo_Permissions_BroadcastConvertInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1486]!, self._r[1486]!, [_0]) + return formatWithArgumentRanges(self._s[1487]!, self._r[1487]!, [_0]) } - public var GroupInfo_SetGroupPhoto: String { return self._s[1487]! } - public var Watch_AppName: String { return self._s[1488]! } + public var GroupInfo_SetGroupPhoto: String { return self._s[1488]! } + public var Watch_AppName: String { return self._s[1489]! } public func PUSH_PINNED_GAME_SCORE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1489]!, self._r[1489]!, [_1]) + return formatWithArgumentRanges(self._s[1490]!, self._r[1490]!, [_1]) } - public var Channel_Username_CheckingUsername: String { return self._s[1490]! } - public var ContactList_Context_Call: String { return self._s[1491]! } - public var ChatList_ReorderTabs: String { return self._s[1492]! } - public var Watch_ChatList_Compose: String { return self._s[1493]! } + public var Channel_Username_CheckingUsername: String { return self._s[1491]! } + public var ContactList_Context_Call: String { return self._s[1492]! } + public var ChatList_ReorderTabs: String { return self._s[1493]! } + public var Watch_ChatList_Compose: String { return self._s[1494]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1494]!, self._r[1494]!, [_0]) + return formatWithArgumentRanges(self._s[1495]!, self._r[1495]!, [_0]) } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[1495]! } - public var ArchivedChats_IntroTitle1: String { return self._s[1496]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[1496]! } + public var ArchivedChats_IntroTitle1: String { return self._s[1497]! } public func PUSH_ENCRYPTION_ACCEPT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1497]!, self._r[1497]!, [_1]) + return formatWithArgumentRanges(self._s[1498]!, self._r[1498]!, [_1]) } - public var Call_StatusRequesting: String { return self._s[1499]! } - public var Checkout_TotalPaidAmount: String { return self._s[1500]! } - public var Weekday_Friday: String { return self._s[1502]! } - public var CreateGroup_ChannelsTooMuch: String { return self._s[1503]! } + public var Call_StatusRequesting: String { return self._s[1500]! } + public var Checkout_TotalPaidAmount: String { return self._s[1501]! } + public var Weekday_Friday: String { return self._s[1503]! } + public var CreateGroup_ChannelsTooMuch: String { return self._s[1504]! } public func ChatImport_SelectionConfirmationUserWithoutTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1504]!, self._r[1504]!, [_0]) + return formatWithArgumentRanges(self._s[1505]!, self._r[1505]!, [_0]) } - public var Watch_ChatList_NoConversationsText: String { return self._s[1505]! } - public var Group_Members_AddMembersHelp: String { return self._s[1506]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[1506]! } + public var Group_Members_AddMembersHelp: String { return self._s[1507]! } public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1507]!, self._r[1507]!, [_0]) + return formatWithArgumentRanges(self._s[1508]!, self._r[1508]!, [_0]) } - public var SecretVideo_Title: String { return self._s[1508]! } + public var SecretVideo_Title: String { return self._s[1509]! } public func Notification_PinnedStickerMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1511]!, self._r[1511]!, [_0]) + return formatWithArgumentRanges(self._s[1512]!, self._r[1512]!, [_0]) } - public var Undo_Undo: String { return self._s[1512]! } - public var Watch_Microphone_Access: String { return self._s[1513]! } + public var Undo_Undo: String { return self._s[1513]! } + public var Watch_Microphone_Access: String { return self._s[1514]! } public func ChatImport_SelectionConfirmationGroupWithTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1514]!, self._r[1514]!, [_1, _2]) - } - public func PUSH_CHAT_MESSAGE_PHOTO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1515]!, self._r[1515]!, [_1, _2]) } - public func ChatList_Search_NoResultsQueryDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1516]!, self._r[1516]!, [_0]) + public func PUSH_CHAT_MESSAGE_PHOTO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1516]!, self._r[1516]!, [_1, _2]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[1518]! } - public var TwoFactorSetup_Intro_Action: String { return self._s[1519]! } - public var Passport_Language_ne: String { return self._s[1520]! } - public var TwoStepAuth_EmailHelp: String { return self._s[1522]! } - public var Profile_MessageLifetime2s: String { return self._s[1523]! } + public func ChatList_Search_NoResultsQueryDescription(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1517]!, self._r[1517]!, [_0]) + } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[1519]! } + public var TwoFactorSetup_Intro_Action: String { return self._s[1520]! } + public var Passport_Language_ne: String { return self._s[1521]! } + public var TwoStepAuth_EmailHelp: String { return self._s[1523]! } + public var Profile_MessageLifetime2s: String { return self._s[1524]! } public func Conversation_MessageDialogRetryAll(_ _1: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1524]!, self._r[1524]!, ["\(_1)"]) + return formatWithArgumentRanges(self._s[1525]!, self._r[1525]!, ["\(_1)"]) } public func Items_NOfM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1525]!, self._r[1525]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1526]!, self._r[1526]!, [_1, _2]) } - public var VoiceChat_SendPublicLinkSend: String { return self._s[1526]! } - public var Media_LimitedAccessText: String { return self._s[1527]! } + public var VoiceChat_SendPublicLinkSend: String { return self._s[1527]! } + public var Media_LimitedAccessText: String { return self._s[1528]! } public func PUSH_CHAT_TITLE_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1528]!, self._r[1528]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1529]!, self._r[1529]!, [_1, _2]) } - public var GroupPermission_NoPinMessages: String { return self._s[1529]! } + public var GroupPermission_NoPinMessages: String { return self._s[1530]! } public func Notification_VoiceChatStarted(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1530]!, self._r[1530]!, [_1]) + return formatWithArgumentRanges(self._s[1531]!, self._r[1531]!, [_1]) } public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1531]!, self._r[1531]!, [_0]) + return formatWithArgumentRanges(self._s[1532]!, self._r[1532]!, [_0]) } - public var FastTwoStepSetup_HintHelp: String { return self._s[1532]! } - public var VoiceOver_SilentPostOff: String { return self._s[1533]! } - public var WallpaperSearch_ColorRed: String { return self._s[1534]! } - public var Watch_ConnectionDescription: String { return self._s[1535]! } - public var Notification_Exceptions_AddException: String { return self._s[1536]! } - public var LocalGroup_IrrelevantWarning: String { return self._s[1537]! } - public var VoiceOver_MessageContextDelete: String { return self._s[1538]! } - public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1539]! } - public var Passport_PasswordPlaceholder: String { return self._s[1540]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[1541]! } - public var Stats_MessageInteractionsTitle: String { return self._s[1542]! } - public var Appearance_ThemeCarouselClassic: String { return self._s[1543]! } - public var TwoFactorSetup_Email_SkipConfirmationText: String { return self._s[1545]! } - public var Channel_AdminLog_PinMessages: String { return self._s[1546]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[1548]! } - public var Watch_Message_Game: String { return self._s[1549]! } - public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1550]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[1551]! } - public var EditTheme_FileReadError: String { return self._s[1552]! } - public var Group_ErrorAddBlocked: String { return self._s[1553]! } - public var CallSettings_UseLessDataLongDescription: String { return self._s[1554]! } + public var FastTwoStepSetup_HintHelp: String { return self._s[1533]! } + public var VoiceOver_SilentPostOff: String { return self._s[1534]! } + public var WallpaperSearch_ColorRed: String { return self._s[1535]! } + public var Watch_ConnectionDescription: String { return self._s[1536]! } + public var Notification_Exceptions_AddException: String { return self._s[1537]! } + public var LocalGroup_IrrelevantWarning: String { return self._s[1538]! } + public var VoiceOver_MessageContextDelete: String { return self._s[1539]! } + public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1540]! } + public var Passport_PasswordPlaceholder: String { return self._s[1541]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[1542]! } + public var Stats_MessageInteractionsTitle: String { return self._s[1543]! } + public var Appearance_ThemeCarouselClassic: String { return self._s[1544]! } + public var TwoFactorSetup_Email_SkipConfirmationText: String { return self._s[1546]! } + public var Channel_AdminLog_PinMessages: String { return self._s[1547]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[1549]! } + public var Watch_Message_Game: String { return self._s[1550]! } + public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1551]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[1552]! } + public var EditTheme_FileReadError: String { return self._s[1553]! } + public var Group_ErrorAddBlocked: String { return self._s[1554]! } + public var CallSettings_UseLessDataLongDescription: String { return self._s[1555]! } public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1556]!, self._r[1556]!, [_1]) + return formatWithArgumentRanges(self._s[1557]!, self._r[1557]!, [_1]) } - public var GroupRemoved_ViewChannelInfo: String { return self._s[1557]! } + public var GroupRemoved_ViewChannelInfo: String { return self._s[1558]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1558]!, self._r[1558]!, [_0]) + return formatWithArgumentRanges(self._s[1559]!, self._r[1559]!, [_0]) } - public var CheckoutInfo_ShippingInfoAddress2Placeholder: String { return self._s[1559]! } - public var TwoFactorSetup_EmailVerification_Action: String { return self._s[1560]! } + public var CheckoutInfo_ShippingInfoAddress2Placeholder: String { return self._s[1560]! } + public var TwoFactorSetup_EmailVerification_Action: String { return self._s[1561]! } public func Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1561]!, self._r[1561]!, [_0]) + return formatWithArgumentRanges(self._s[1562]!, self._r[1562]!, [_0]) } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[1562]! } - public var Bot_GroupStatusReadsHistory: String { return self._s[1563]! } - public var PhotoEditor_CurvesRed: String { return self._s[1564]! } - public var InstantPage_TapToOpenLink: String { return self._s[1565]! } - public var InviteLink_PeopleJoinedShortNoneExpired: String { return self._s[1566]! } - public var FastTwoStepSetup_PasswordHelp: String { return self._s[1567]! } - public var Conversation_DiscussionNotStarted: String { return self._s[1568]! } - public var Notification_CallMissedShort: String { return self._s[1569]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[1563]! } + public var Bot_GroupStatusReadsHistory: String { return self._s[1564]! } + public var PhotoEditor_CurvesRed: String { return self._s[1565]! } + public var InstantPage_TapToOpenLink: String { return self._s[1566]! } + public var InviteLink_PeopleJoinedShortNoneExpired: String { return self._s[1567]! } + public var FastTwoStepSetup_PasswordHelp: String { return self._s[1568]! } + public var Conversation_DiscussionNotStarted: String { return self._s[1569]! } + public var Notification_CallMissedShort: String { return self._s[1570]! } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1570]!, self._r[1570]!, [_0]) + return formatWithArgumentRanges(self._s[1571]!, self._r[1571]!, [_0]) } - public var Conversation_DeleteMessagesForEveryone: String { return self._s[1571]! } - public var VoiceChat_UnpinVideo: String { return self._s[1572]! } - public var Permissions_SiriTitle_v0: String { return self._s[1573]! } - public var GroupInfo_AddUserLeftError: String { return self._s[1574]! } - public var Conversation_SendMessage_SendSilently: String { return self._s[1575]! } - public var Paint_Duplicate: String { return self._s[1576]! } - public var AttachmentMenu_WebSearch: String { return self._s[1577]! } - public var Bot_Stop: String { return self._s[1579]! } - public var Conversation_PrivateChannelTimeLimitedAlertTitle: String { return self._s[1580]! } - public var ReportGroupLocation_Report: String { return self._s[1581]! } - public var Compose_Create: String { return self._s[1582]! } - public var Stats_GroupViewers: String { return self._s[1583]! } - public var AutoDownloadSettings_Channels: String { return self._s[1584]! } - public var PhotoEditor_QualityHigh: String { return self._s[1585]! } - public var VoiceChat_Leave: String { return self._s[1586]! } - public var Call_Speaker: String { return self._s[1587]! } + public var Conversation_DeleteMessagesForEveryone: String { return self._s[1572]! } + public var VoiceChat_UnpinVideo: String { return self._s[1573]! } + public var Permissions_SiriTitle_v0: String { return self._s[1574]! } + public var GroupInfo_AddUserLeftError: String { return self._s[1575]! } + public var Conversation_SendMessage_SendSilently: String { return self._s[1576]! } + public var Paint_Duplicate: String { return self._s[1577]! } + public var AttachmentMenu_WebSearch: String { return self._s[1578]! } + public var Bot_Stop: String { return self._s[1580]! } + public var Conversation_PrivateChannelTimeLimitedAlertTitle: String { return self._s[1581]! } + public var ReportGroupLocation_Report: String { return self._s[1582]! } + public var Compose_Create: String { return self._s[1583]! } + public var Stats_GroupViewers: String { return self._s[1584]! } + public var AutoDownloadSettings_Channels: String { return self._s[1585]! } + public var PhotoEditor_QualityHigh: String { return self._s[1586]! } + public var VoiceChat_Leave: String { return self._s[1587]! } + public var Call_Speaker: String { return self._s[1588]! } public func ChatList_LeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1588]!, self._r[1588]!, [_0]) + return formatWithArgumentRanges(self._s[1589]!, self._r[1589]!, [_0]) } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[1589]! } - public var Chat_AttachmentMultipleFilesDisabled: String { return self._s[1590]! } - public var ChatList_Context_AddToFolder: String { return self._s[1591]! } - public var InviteLink_QRCode_Info: String { return self._s[1592]! } - public var AutoremoveSetup_Title: String { return self._s[1593]! } - public var ChatList_DeleteForAllMembersConfirmationText: String { return self._s[1594]! } - public var Conversation_Unblock: String { return self._s[1595]! } - public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[1596]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[1590]! } + public var Chat_AttachmentMultipleFilesDisabled: String { return self._s[1591]! } + public var ChatList_Context_AddToFolder: String { return self._s[1592]! } + public var InviteLink_QRCode_Info: String { return self._s[1593]! } + public var AutoremoveSetup_Title: String { return self._s[1594]! } + public var ChatList_DeleteForAllMembersConfirmationText: String { return self._s[1595]! } + public var Conversation_Unblock: String { return self._s[1596]! } + public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[1597]! } public func Time_PreciseDate_m8(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1597]!, self._r[1597]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1598]!, self._r[1598]!, [_1, _2, _3]) } - public var Conversation_ContextMenuReply: String { return self._s[1598]! } - public var Contacts_SearchLabel: String { return self._s[1599]! } - public var Forward_ErrorPublicQuizDisabledInChannels: String { return self._s[1600]! } - public var Stats_GroupMessagesTitle: String { return self._s[1602]! } - public var Notification_CallCanceled: String { return self._s[1603]! } - public var VoiceOver_Chat_Selected: String { return self._s[1604]! } - public var NotificationsSound_Tremolo: String { return self._s[1606]! } - public var VoiceOver_AuthSessions_CurrentSession: String { return self._s[1607]! } - public var ChatList_Search_NoResultsDescription: String { return self._s[1608]! } - public var AccessDenied_PhotosAndVideos: String { return self._s[1609]! } - public var LogoutOptions_ClearCacheText: String { return self._s[1610]! } + public var Conversation_ContextMenuReply: String { return self._s[1599]! } + public var Contacts_SearchLabel: String { return self._s[1600]! } + public var Forward_ErrorPublicQuizDisabledInChannels: String { return self._s[1601]! } + public var Stats_GroupMessagesTitle: String { return self._s[1603]! } + public var Notification_CallCanceled: String { return self._s[1604]! } + public var VoiceOver_Chat_Selected: String { return self._s[1605]! } + public var NotificationsSound_Tremolo: String { return self._s[1607]! } + public var VoiceOver_AuthSessions_CurrentSession: String { return self._s[1608]! } + public var ChatList_Search_NoResultsDescription: String { return self._s[1609]! } + public var AccessDenied_PhotosAndVideos: String { return self._s[1610]! } + public var LogoutOptions_ClearCacheText: String { return self._s[1611]! } public func VoiceChat_DisplayAsSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1612]!, self._r[1612]!, [_0]) + return formatWithArgumentRanges(self._s[1613]!, self._r[1613]!, [_0]) } - public var VoiceOver_Chat_Sticker: String { return self._s[1613]! } - public var ChatListFolder_NameUnread: String { return self._s[1614]! } - public var PeerInfo_ButtonMessage: String { return self._s[1616]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[1617]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[1618]! } - public var ChatSettings_Other: String { return self._s[1619]! } - public var UserInfo_NotificationsEnabled: String { return self._s[1620]! } - public var CreatePoll_OptionsHeader: String { return self._s[1621]! } - public var Appearance_RemoveThemeColorConfirmation: String { return self._s[1624]! } - public var Channel_Moderator_Title: String { return self._s[1625]! } + public var VoiceOver_Chat_Sticker: String { return self._s[1614]! } + public var ChatListFolder_NameUnread: String { return self._s[1615]! } + public var PeerInfo_ButtonMessage: String { return self._s[1617]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[1618]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[1619]! } + public var ChatSettings_Other: String { return self._s[1620]! } + public var UserInfo_NotificationsEnabled: String { return self._s[1621]! } + public var CreatePoll_OptionsHeader: String { return self._s[1622]! } + public var Appearance_RemoveThemeColorConfirmation: String { return self._s[1625]! } + public var Channel_Moderator_Title: String { return self._s[1626]! } public func Conversation_ForwardTooltip_Chat_Many(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1626]!, self._r[1626]!, [_0]) + return formatWithArgumentRanges(self._s[1627]!, self._r[1627]!, [_0]) } public func UserInfo_ContactForwardTooltip_ManyChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1627]!, self._r[1627]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1628]!, self._r[1628]!, [_0, _1]) } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[1628]! } - public var WallpaperColors_Title: String { return self._s[1629]! } - public var InviteLink_InviteLink: String { return self._s[1631]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[1632]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[1633]! } - public var Your_card_was_declined: String { return self._s[1634]! } - public var SettingsSearch_FAQ: String { return self._s[1636]! } - public var EditTheme_Expand_Preview_IncomingReplyName: String { return self._s[1637]! } - public var Conversation_ReportSpamConfirmation: String { return self._s[1638]! } - public var OwnershipTransfer_SecurityCheck: String { return self._s[1640]! } - public var PrivacySettings_DataSettingsHelp: String { return self._s[1641]! } - public var Settings_About_Help: String { return self._s[1642]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[1629]! } + public var WallpaperColors_Title: String { return self._s[1630]! } + public var InviteLink_InviteLink: String { return self._s[1632]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[1633]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[1634]! } + public var Your_card_was_declined: String { return self._s[1635]! } + public var SettingsSearch_FAQ: String { return self._s[1637]! } + public var EditTheme_Expand_Preview_IncomingReplyName: String { return self._s[1638]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[1639]! } + public var OwnershipTransfer_SecurityCheck: String { return self._s[1641]! } + public var PrivacySettings_DataSettingsHelp: String { return self._s[1642]! } + public var Settings_About_Help: String { return self._s[1643]! } public func Channel_DiscussionGroup_HeaderGroupSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1643]!, self._r[1643]!, [_0]) + return formatWithArgumentRanges(self._s[1644]!, self._r[1644]!, [_0]) } - public var Settings_Proxy: String { return self._s[1644]! } - public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[1645]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[1647]! } - public var NotificationsSound_Bell: String { return self._s[1648]! } - public var PrivacySettings_Title: String { return self._s[1650]! } - public var PrivacySettings_DataSettings: String { return self._s[1651]! } - public var ConversationMedia_Title: String { return self._s[1652]! } + public var Settings_Proxy: String { return self._s[1645]! } + public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[1646]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[1648]! } + public var NotificationsSound_Bell: String { return self._s[1649]! } + public var PrivacySettings_Title: String { return self._s[1651]! } + public var PrivacySettings_DataSettings: String { return self._s[1652]! } + public var ConversationMedia_Title: String { return self._s[1653]! } public func Channel_AdminLog_MessageAddedAdminName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1653]!, self._r[1653]!, [_1]) + return formatWithArgumentRanges(self._s[1654]!, self._r[1654]!, [_1]) } public func Conversation_EncryptedPlaceholderTitleIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1654]!, self._r[1654]!, [_0]) + return formatWithArgumentRanges(self._s[1655]!, self._r[1655]!, [_0]) } - public var PrivacySettings_BlockedPeersEmpty: String { return self._s[1655]! } - public var ReportPeer_ReasonPornography: String { return self._s[1657]! } - public var Privacy_Calls: String { return self._s[1658]! } - public var TwoFactorSetup_Email_Text: String { return self._s[1659]! } - public var Conversation_EncryptedDescriptionTitle: String { return self._s[1660]! } + public var PrivacySettings_BlockedPeersEmpty: String { return self._s[1656]! } + public var ReportPeer_ReasonPornography: String { return self._s[1658]! } + public var Privacy_Calls: String { return self._s[1659]! } + public var TwoFactorSetup_Email_Text: String { return self._s[1660]! } + public var Conversation_EncryptedDescriptionTitle: String { return self._s[1661]! } public func VoiceOver_Chat_MusicTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1661]!, self._r[1661]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1662]!, self._r[1662]!, [_1, _2]) } - public var Passport_Identity_FrontSideHelp: String { return self._s[1662]! } - public var InstantPage_VoiceOver_DecreaseFontSize: String { return self._s[1663]! } - public var GroupInfo_Permissions_SlowmodeHeader: String { return self._s[1665]! } - public var ContactList_Context_VideoCall: String { return self._s[1666]! } - public var Settings_SaveIncomingPhotos: String { return self._s[1667]! } - public var Passport_Identity_MiddleName: String { return self._s[1668]! } - public var MessagePoll_QuizNoUsers: String { return self._s[1669]! } + public var Passport_Identity_FrontSideHelp: String { return self._s[1663]! } + public var InstantPage_VoiceOver_DecreaseFontSize: String { return self._s[1664]! } + public var GroupInfo_Permissions_SlowmodeHeader: String { return self._s[1666]! } + public var ContactList_Context_VideoCall: String { return self._s[1667]! } + public var Settings_SaveIncomingPhotos: String { return self._s[1668]! } + public var Passport_Identity_MiddleName: String { return self._s[1669]! } + public var MessagePoll_QuizNoUsers: String { return self._s[1670]! } public func Channel_AdminLog_MutedParticipant(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1670]!, self._r[1670]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1671]!, self._r[1671]!, [_1, _2]) } - public var OldChannels_ChannelFormat: String { return self._s[1671]! } - public var Watch_Message_Call: String { return self._s[1672]! } - public var VoiceChat_OpenChannel: String { return self._s[1673]! } - public var Wallpaper_Title: String { return self._s[1674]! } - public var PasscodeSettings_TurnPasscodeOff: String { return self._s[1675]! } - public var IntentsSettings_SuggestedChatsSavedMessages: String { return self._s[1676]! } - public var ReportGroupLocation_Text: String { return self._s[1677]! } - public var InviteText_URL: String { return self._s[1678]! } - public var ClearCache_StorageServiceFiles: String { return self._s[1679]! } - public var MessageTimer_Custom: String { return self._s[1680]! } - public var Message_PinnedLocationMessage: String { return self._s[1681]! } + public var OldChannels_ChannelFormat: String { return self._s[1672]! } + public var Watch_Message_Call: String { return self._s[1673]! } + public var VoiceChat_OpenChannel: String { return self._s[1674]! } + public var Wallpaper_Title: String { return self._s[1675]! } + public var PasscodeSettings_TurnPasscodeOff: String { return self._s[1676]! } + public var IntentsSettings_SuggestedChatsSavedMessages: String { return self._s[1677]! } + public var ReportGroupLocation_Text: String { return self._s[1678]! } + public var InviteText_URL: String { return self._s[1679]! } + public var ClearCache_StorageServiceFiles: String { return self._s[1680]! } + public var MessageTimer_Custom: String { return self._s[1681]! } + public var Message_PinnedLocationMessage: String { return self._s[1682]! } public func VoiceOver_Chat_ContactOrganization(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1682]!, self._r[1682]!, [_0]) + return formatWithArgumentRanges(self._s[1683]!, self._r[1683]!, [_0]) } - public var EditTheme_UploadNewTheme: String { return self._s[1683]! } - public var ChatImportActivity_ErrorLimitExceeded: String { return self._s[1686]! } + public var EditTheme_UploadNewTheme: String { return self._s[1684]! } + public var ChatImportActivity_ErrorLimitExceeded: String { return self._s[1687]! } public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1687]!, self._r[1687]!, [_0]) + return formatWithArgumentRanges(self._s[1688]!, self._r[1688]!, [_0]) } - public var Login_CodeSentCall: String { return self._s[1689]! } + public var Login_CodeSentCall: String { return self._s[1690]! } public func Conversation_AutoremoveTimerSetUser(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1690]!, self._r[1690]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1691]!, self._r[1691]!, [_1, _2]) } - public var Conversation_Report: String { return self._s[1691]! } - public var NotificationSettings_ContactJoined: String { return self._s[1692]! } + public var Conversation_Report: String { return self._s[1692]! } + public var NotificationSettings_ContactJoined: String { return self._s[1693]! } public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1693]!, self._r[1693]!, [_1]) + return formatWithArgumentRanges(self._s[1694]!, self._r[1694]!, [_1]) } - public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[1694]! } - public var BroadcastGroups_IntroText: String { return self._s[1695]! } - public var IntentsSettings_SuggestByAll: String { return self._s[1697]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[1698]! } - public var AuthSessions_Title: String { return self._s[1699]! } + public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[1695]! } + public var BroadcastGroups_IntroText: String { return self._s[1696]! } + public var IntentsSettings_SuggestByAll: String { return self._s[1698]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[1699]! } + public var AuthSessions_Title: String { return self._s[1700]! } public func Notification_VoiceChatEnded(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1700]!, self._r[1700]!, [_0]) + return formatWithArgumentRanges(self._s[1701]!, self._r[1701]!, [_0]) } - public var Channel_AdminLog_TitleAllEvents: String { return self._s[1701]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1702]! } - public var VoiceChat_YouCanNowSpeak: String { return self._s[1705]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[1707]! } + public var Channel_AdminLog_TitleAllEvents: String { return self._s[1702]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1703]! } + public var VoiceChat_YouCanNowSpeak: String { return self._s[1706]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[1708]! } public func UserInfo_LinkForwardTooltip_ManyChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1708]!, self._r[1708]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1709]!, self._r[1709]!, [_0, _1]) } - public var AutoDownloadSettings_MaxVideoSize: String { return self._s[1709]! } - public var ExplicitContent_AlertTitle: String { return self._s[1710]! } - public var Channel_UpdatePhotoItem: String { return self._s[1711]! } - public var ChatList_AutoarchiveSuggestion_Text: String { return self._s[1713]! } - public var Channel_DiscussionGroup_LinkGroup: String { return self._s[1714]! } + public var AutoDownloadSettings_MaxVideoSize: String { return self._s[1710]! } + public var ExplicitContent_AlertTitle: String { return self._s[1711]! } + public var Channel_UpdatePhotoItem: String { return self._s[1712]! } + public var ChatList_AutoarchiveSuggestion_Text: String { return self._s[1714]! } + public var Channel_DiscussionGroup_LinkGroup: String { return self._s[1715]! } public func Call_BatteryLow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1715]!, self._r[1715]!, [_0]) + return formatWithArgumentRanges(self._s[1716]!, self._r[1716]!, [_0]) } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[1716]! } - public var WallpaperPreview_PatternPaternApply: String { return self._s[1717]! } - public var Notifications_MessageNotificationsSound: String { return self._s[1718]! } - public var CommentsGroup_ErrorAccessDenied: String { return self._s[1719]! } - public var Appearance_AccentColor: String { return self._s[1721]! } - public var GroupInfo_SharedMedia: String { return self._s[1722]! } - public var Login_PhonePlaceholder: String { return self._s[1723]! } - public var Appearance_TextSize_Automatic: String { return self._s[1724]! } - public var EmptyGroupInfo_Line2: String { return self._s[1725]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[1717]! } + public var WallpaperPreview_PatternPaternApply: String { return self._s[1718]! } + public var Notifications_MessageNotificationsSound: String { return self._s[1719]! } + public var CommentsGroup_ErrorAccessDenied: String { return self._s[1720]! } + public var Appearance_AccentColor: String { return self._s[1722]! } + public var GroupInfo_SharedMedia: String { return self._s[1723]! } + public var Login_PhonePlaceholder: String { return self._s[1724]! } + public var Appearance_TextSize_Automatic: String { return self._s[1725]! } + public var EmptyGroupInfo_Line2: String { return self._s[1726]! } public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1726]!, self._r[1726]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1727]!, self._r[1727]!, [_1, _2]) } - public var VoiceChat_TapToAddPhotoOrBio: String { return self._s[1727]! } - public var Conversation_ClearChannel: String { return self._s[1728]! } - public var Appearance_AppIconDefaultX: String { return self._s[1730]! } - public var EditProfile_NameAndPhotoOrVideoHelp: String { return self._s[1731]! } - public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[1732]! } - public var Notifications_GroupNotificationsHelp: String { return self._s[1733]! } + public var VoiceChat_TapToAddPhotoOrBio: String { return self._s[1728]! } + public var Conversation_ClearChannel: String { return self._s[1729]! } + public var Appearance_AppIconDefaultX: String { return self._s[1731]! } + public var EditProfile_NameAndPhotoOrVideoHelp: String { return self._s[1732]! } + public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[1733]! } + public var Notifications_GroupNotificationsHelp: String { return self._s[1734]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1734]!, self._r[1734]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1735]!, self._r[1735]!, [_1, _2]) } - public var ChatList_EmptyChatListEditFilter: String { return self._s[1735]! } - public var ChatSettings_ConnectionType_UseProxy: String { return self._s[1738]! } - public var Chat_PinnedMessagesHiddenText: String { return self._s[1739]! } + public var ChatList_EmptyChatListEditFilter: String { return self._s[1736]! } + public var ChatSettings_ConnectionType_UseProxy: String { return self._s[1739]! } + public var Chat_PinnedMessagesHiddenText: String { return self._s[1740]! } public func Message_PinnedGenericMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1740]!, self._r[1740]!, [_0]) - } - public func Location_ProximityTip(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1741]!, self._r[1741]!, [_0]) } - public var UserInfo_NotificationsEnable: String { return self._s[1742]! } - public var Checkout_PayWithTouchId: String { return self._s[1743]! } - public var SharedMedia_ViewInChat: String { return self._s[1744]! } - public func Notification_CreatedChatWithTitle(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1745]!, self._r[1745]!, [_0, _1]) + public func Location_ProximityTip(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1742]!, self._r[1742]!, [_0]) } - public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1746]! } + public var UserInfo_NotificationsEnable: String { return self._s[1743]! } + public var Checkout_PayWithTouchId: String { return self._s[1744]! } + public var SharedMedia_ViewInChat: String { return self._s[1745]! } + public func Notification_CreatedChatWithTitle(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1746]!, self._r[1746]!, [_0, _1]) + } + public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1747]! } public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1747]!, self._r[1747]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1748]!, self._r[1748]!, [_1, _2]) } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1749]!, self._r[1749]!, [_0]) + return formatWithArgumentRanges(self._s[1750]!, self._r[1750]!, [_0]) } - public var Conversation_PeerNearbyText: String { return self._s[1751]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[1752]! } - public var PhotoEditor_Skip: String { return self._s[1753]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[1754]! } - public var ChatList_EmptyChatList: String { return self._s[1755]! } - public var Channel_BanUser_Unban: String { return self._s[1756]! } + public var Conversation_PeerNearbyText: String { return self._s[1752]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[1753]! } + public var PhotoEditor_Skip: String { return self._s[1754]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[1755]! } + public var ChatList_EmptyChatList: String { return self._s[1756]! } + public var Channel_BanUser_Unban: String { return self._s[1757]! } public func Message_GenericForwardedPsa(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1757]!, self._r[1757]!, [_0]) + return formatWithArgumentRanges(self._s[1758]!, self._r[1758]!, [_0]) } - public var Appearance_TextSize_Apply: String { return self._s[1758]! } + public var Appearance_TextSize_Apply: String { return self._s[1759]! } public func Conversation_MessageViewCommentsFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1759]!, self._r[1759]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1760]!, self._r[1760]!, [_1, _2]) } - public var Login_InfoFirstNamePlaceholder: String { return self._s[1760]! } - public var VoiceOver_Chat_YourSticker: String { return self._s[1761]! } - public var TwoStepAuth_HintPlaceholder: String { return self._s[1762]! } - public var TwoStepAuth_EmailSkip: String { return self._s[1764]! } - public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1765]! } - public var TwoFactorSetup_Email_SkipConfirmationTitle: String { return self._s[1766]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[1761]! } + public var VoiceOver_Chat_YourSticker: String { return self._s[1762]! } + public var TwoStepAuth_HintPlaceholder: String { return self._s[1763]! } + public var TwoStepAuth_EmailSkip: String { return self._s[1765]! } + public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1766]! } + public var TwoFactorSetup_Email_SkipConfirmationTitle: String { return self._s[1767]! } public func PUSH_MESSAGE_QUIZ(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1767]!, self._r[1767]!, [_1]) + return formatWithArgumentRanges(self._s[1768]!, self._r[1768]!, [_1]) } - public var VoiceOver_Chat_GoToOriginalMessage: String { return self._s[1769]! } - public var State_WaitingForNetwork: String { return self._s[1770]! } - public var AccessDenied_CameraRestricted: String { return self._s[1771]! } - public var ChatSettings_Appearance: String { return self._s[1772]! } - public var ScheduledMessages_BotActionUnavailable: String { return self._s[1773]! } - public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[1774]! } - public var Channel_DiscussionGroupAdd: String { return self._s[1775]! } - public var Conversation_SelectMessages: String { return self._s[1777]! } - public var Map_NoPlacesNearby: String { return self._s[1778]! } - public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1779]! } - public var GroupRemoved_Title: String { return self._s[1780]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1782]! } - public var VoiceChat_Mute: String { return self._s[1783]! } - public var Paint_Marker: String { return self._s[1784]! } - public var Widget_ChatsGalleryTitle: String { return self._s[1785]! } + public var VoiceOver_Chat_GoToOriginalMessage: String { return self._s[1770]! } + public var State_WaitingForNetwork: String { return self._s[1771]! } + public var AccessDenied_CameraRestricted: String { return self._s[1772]! } + public var ChatSettings_Appearance: String { return self._s[1773]! } + public var ScheduledMessages_BotActionUnavailable: String { return self._s[1774]! } + public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[1775]! } + public var Channel_DiscussionGroupAdd: String { return self._s[1776]! } + public var Conversation_SelectMessages: String { return self._s[1778]! } + public var Map_NoPlacesNearby: String { return self._s[1779]! } + public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1780]! } + public var GroupRemoved_Title: String { return self._s[1781]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1783]! } + public var VoiceChat_Mute: String { return self._s[1784]! } + public var Paint_Marker: String { return self._s[1785]! } + public var Widget_ChatsGalleryTitle: String { return self._s[1786]! } public func AddContact_ContactWillBeSharedAfterMutual(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1786]!, self._r[1786]!, [_1]) + return formatWithArgumentRanges(self._s[1787]!, self._r[1787]!, [_1]) } - public var SocksProxySetup_ShareProxyList: String { return self._s[1787]! } - public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[1788]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1788]! } + public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[1789]! } public func VoiceOver_Chat_Size(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1789]!, self._r[1789]!, [_0]) + return formatWithArgumentRanges(self._s[1790]!, self._r[1790]!, [_0]) } - public var EditTheme_ErrorInvalidCharacters: String { return self._s[1790]! } - public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[1791]! } - public var Notifications_GroupNotificationsAlert: String { return self._s[1792]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[1793]! } - public var Compose_NewGroup: String { return self._s[1794]! } + public var EditTheme_ErrorInvalidCharacters: String { return self._s[1791]! } + public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[1792]! } + public var Notifications_GroupNotificationsAlert: String { return self._s[1793]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[1794]! } + public var Compose_NewGroup: String { return self._s[1795]! } public func Passport_Address_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1795]!, self._r[1795]!, [_0]) + return formatWithArgumentRanges(self._s[1796]!, self._r[1796]!, [_0]) } - public var Location_LiveLocationRequired_Description: String { return self._s[1797]! } - public var Conversation_ClearGroupHistory: String { return self._s[1798]! } - public var GroupInfo_InviteLink_Help: String { return self._s[1801]! } - public var VoiceOver_BotKeyboard: String { return self._s[1802]! } - public var Channel_BanUser_BlockFor: String { return self._s[1803]! } - public var Bot_Start: String { return self._s[1804]! } - public var Your_card_has_expired: String { return self._s[1805]! } - public var Channel_About_Title: String { return self._s[1806]! } - public var VoiceChat_EditTitleTitle: String { return self._s[1807]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1808]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[1810]! } - public var Conversation_FileDropbox: String { return self._s[1811]! } - public var ChatList_Search_NoResultsFitlerMusic: String { return self._s[1812]! } - public var Month_GenNovember: String { return self._s[1813]! } - public var IntentsSettings_SuggestByShare: String { return self._s[1814]! } + public var Location_LiveLocationRequired_Description: String { return self._s[1798]! } + public var Conversation_ClearGroupHistory: String { return self._s[1799]! } + public var GroupInfo_InviteLink_Help: String { return self._s[1802]! } + public var VoiceOver_BotKeyboard: String { return self._s[1803]! } + public var Channel_BanUser_BlockFor: String { return self._s[1804]! } + public var Bot_Start: String { return self._s[1805]! } + public var Your_card_has_expired: String { return self._s[1806]! } + public var Channel_About_Title: String { return self._s[1807]! } + public var VoiceChat_EditTitleTitle: String { return self._s[1808]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1809]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[1811]! } + public var Conversation_FileDropbox: String { return self._s[1812]! } + public var ChatList_Search_NoResultsFitlerMusic: String { return self._s[1813]! } + public var Month_GenNovember: String { return self._s[1814]! } + public var IntentsSettings_SuggestByShare: String { return self._s[1815]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1815]!, self._r[1815]!, [_0]) + return formatWithArgumentRanges(self._s[1816]!, self._r[1816]!, [_0]) } - public var StickerPack_Add: String { return self._s[1816]! } - public var Theme_ErrorNotFound: String { return self._s[1817]! } - public var Wallpaper_SearchShort: String { return self._s[1819]! } - public var Channel_BanUser_PermissionsHeader: String { return self._s[1820]! } - public var ConversationProfile_UsersTooMuchError: String { return self._s[1821]! } - public var ChatList_FolderAllChats: String { return self._s[1822]! } - public var VoiceChat_EndConfirmationEnd: String { return self._s[1823]! } - public var Passport_Authorize: String { return self._s[1824]! } + public var StickerPack_Add: String { return self._s[1817]! } + public var Theme_ErrorNotFound: String { return self._s[1818]! } + public var Wallpaper_SearchShort: String { return self._s[1820]! } + public var Channel_BanUser_PermissionsHeader: String { return self._s[1821]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[1822]! } + public var ChatList_FolderAllChats: String { return self._s[1823]! } + public var VoiceChat_EndConfirmationEnd: String { return self._s[1824]! } + public var Passport_Authorize: String { return self._s[1825]! } public func Channel_AdminLog_MessageChangedLinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1825]!, self._r[1825]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1826]!, self._r[1826]!, [_1, _2]) } - public var GroupInfo_GroupHistoryVisible: String { return self._s[1826]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[1827]! } public func PUSH_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1827]!, self._r[1827]!, [_1]) + return formatWithArgumentRanges(self._s[1828]!, self._r[1828]!, [_1]) } - public var LocalGroup_ButtonTitle: String { return self._s[1828]! } - public var VoiceOver_Stickers: String { return self._s[1830]! } - public var UserInfo_GroupsInCommon: String { return self._s[1831]! } - public var LoginPassword_Title: String { return self._s[1833]! } - public var Wallpaper_Set: String { return self._s[1834]! } - public var Stats_InteractionsTitle: String { return self._s[1835]! } + public var LocalGroup_ButtonTitle: String { return self._s[1829]! } + public var VoiceOver_Stickers: String { return self._s[1831]! } + public var UserInfo_GroupsInCommon: String { return self._s[1832]! } + public var LoginPassword_Title: String { return self._s[1834]! } + public var Wallpaper_Set: String { return self._s[1835]! } + public var Stats_InteractionsTitle: String { return self._s[1836]! } public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1837]!, self._r[1837]!, [_0]) + return formatWithArgumentRanges(self._s[1838]!, self._r[1838]!, [_0]) } - public var Conversation_MessageDialogEdit: String { return self._s[1838]! } - public var Paint_Outlined: String { return self._s[1839]! } + public var Conversation_MessageDialogEdit: String { return self._s[1839]! } + public var Paint_Outlined: String { return self._s[1840]! } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1840]!, self._r[1840]!, [_0]) - } - public func Conversation_SetReminder_RemindTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1841]!, self._r[1841]!, [_0]) } - public var Invite_LargeRecipientsCountWarning: String { return self._s[1842]! } - public var Passport_Address_Street1Placeholder: String { return self._s[1843]! } - public var Appearance_ColorThemeNight: String { return self._s[1844]! } - public var ChannelInfo_Stats: String { return self._s[1845]! } - public var Widget_ShortcutsGalleryTitle: String { return self._s[1846]! } - public var TwoStepAuth_RecoveryTitle: String { return self._s[1847]! } - public var MediaPicker_TimerTooltip: String { return self._s[1848]! } - public var ChatImportActivity_ErrorNotAdmin: String { return self._s[1849]! } - public var Common_ChoosePhoto: String { return self._s[1850]! } - public var Media_LimitedAccessTitle: String { return self._s[1851]! } - public var ChatSettings_AutoDownloadVideos: String { return self._s[1852]! } - public var PeerInfo_PaneGroups: String { return self._s[1853]! } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[1855]! } - public var ChangePhoneNumberNumber_Title: String { return self._s[1856]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1857]! } - public var OldChannels_ChannelsHeader: String { return self._s[1858]! } - public var MuteFor_Forever: String { return self._s[1859]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[1860]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[1861]! } - public var MessagePoll_LabelAnonymous: String { return self._s[1862]! } - public var ContactInfo_Job: String { return self._s[1863]! } - public var Passport_Language_mk: String { return self._s[1864]! } - public var EditTheme_ShortLink: String { return self._s[1865]! } - public var AutoDownloadSettings_PhotosTitle: String { return self._s[1868]! } - public var Month_GenApril: String { return self._s[1870]! } - public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[1872]! } - public var NetworkUsageSettings_TotalSection: String { return self._s[1873]! } - public var EditTheme_Create_Preview_OutgoingText: String { return self._s[1874]! } - public var EditTheme_Title: String { return self._s[1875]! } - public var Conversation_LinkDialogCopy: String { return self._s[1876]! } + public func Conversation_SetReminder_RemindTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1842]!, self._r[1842]!, [_0]) + } + public var Invite_LargeRecipientsCountWarning: String { return self._s[1843]! } + public var Passport_Address_Street1Placeholder: String { return self._s[1844]! } + public var Appearance_ColorThemeNight: String { return self._s[1845]! } + public var ChannelInfo_Stats: String { return self._s[1846]! } + public var Widget_ShortcutsGalleryTitle: String { return self._s[1847]! } + public var TwoStepAuth_RecoveryTitle: String { return self._s[1848]! } + public var MediaPicker_TimerTooltip: String { return self._s[1849]! } + public var ChatImportActivity_ErrorNotAdmin: String { return self._s[1850]! } + public var Common_ChoosePhoto: String { return self._s[1851]! } + public var Media_LimitedAccessTitle: String { return self._s[1852]! } + public var ChatSettings_AutoDownloadVideos: String { return self._s[1853]! } + public var PeerInfo_PaneGroups: String { return self._s[1854]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[1856]! } + public var ChangePhoneNumberNumber_Title: String { return self._s[1857]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1858]! } + public var OldChannels_ChannelsHeader: String { return self._s[1859]! } + public var MuteFor_Forever: String { return self._s[1860]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[1861]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[1862]! } + public var MessagePoll_LabelAnonymous: String { return self._s[1863]! } + public var ContactInfo_Job: String { return self._s[1864]! } + public var Passport_Language_mk: String { return self._s[1865]! } + public var EditTheme_ShortLink: String { return self._s[1866]! } + public var AutoDownloadSettings_PhotosTitle: String { return self._s[1869]! } + public var Month_GenApril: String { return self._s[1871]! } + public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[1873]! } + public var NetworkUsageSettings_TotalSection: String { return self._s[1874]! } + public var EditTheme_Create_Preview_OutgoingText: String { return self._s[1875]! } + public var EditTheme_Title: String { return self._s[1876]! } + public var Conversation_LinkDialogCopy: String { return self._s[1877]! } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1877]!, self._r[1877]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1878]!, self._r[1878]!, [_1, _2]) } - public var Passport_ForgottenPassword: String { return self._s[1878]! } - public var WallpaperSearch_Recent: String { return self._s[1879]! } - public var ChatSettings_Title: String { return self._s[1884]! } - public var Appearance_ReduceMotionInfo: String { return self._s[1885]! } + public var Passport_ForgottenPassword: String { return self._s[1879]! } + public var WallpaperSearch_Recent: String { return self._s[1880]! } + public var ChatSettings_Title: String { return self._s[1885]! } + public var Appearance_ReduceMotionInfo: String { return self._s[1886]! } public func StickerPackActionInfo_AddedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1886]!, self._r[1886]!, [_0]) + return formatWithArgumentRanges(self._s[1887]!, self._r[1887]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[1887]! } - public var LastSeen_WithinAMonth: String { return self._s[1888]! } - public var VoiceChat_Live: String { return self._s[1889]! } - public var PeerInfo_ButtonCall: String { return self._s[1890]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[1891]! } - public var Group_Username_InvalidStartsWithNumber: String { return self._s[1892]! } - public var Call_AudioRouteHide: String { return self._s[1893]! } - public var DialogList_SavedMessages: String { return self._s[1894]! } - public var ChatList_Context_Mute: String { return self._s[1895]! } - public var Conversation_StatusKickedFromChannel: String { return self._s[1896]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[1888]! } + public var LastSeen_WithinAMonth: String { return self._s[1889]! } + public var VoiceChat_Live: String { return self._s[1890]! } + public var PeerInfo_ButtonCall: String { return self._s[1891]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[1892]! } + public var Group_Username_InvalidStartsWithNumber: String { return self._s[1893]! } + public var Call_AudioRouteHide: String { return self._s[1894]! } + public var DialogList_SavedMessages: String { return self._s[1895]! } + public var ChatList_Context_Mute: String { return self._s[1896]! } + public var Conversation_StatusKickedFromChannel: String { return self._s[1897]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1897]!, self._r[1897]!, [_0]) + return formatWithArgumentRanges(self._s[1898]!, self._r[1898]!, [_0]) } - public var VoiceChat_StatusMutedForYou: String { return self._s[1898]! } - public var Passport_Language_et: String { return self._s[1899]! } - public var Conversation_MessageLeaveCommentShort: String { return self._s[1900]! } - public var PhotoEditor_CropReset: String { return self._s[1901]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1902]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1903]! } - public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[1904]! } - public var WallpaperSearch_ColorWhite: String { return self._s[1907]! } - public var Channel_AdminLog_CanEditMessages: String { return self._s[1909]! } - public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[1910]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[1912]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[1914]! } - public var Map_YouAreHere: String { return self._s[1916]! } - public var Core_ServiceUserStatus: String { return self._s[1917]! } - public var Channel_Setup_TypePrivateHelp: String { return self._s[1920]! } - public var VoiceChat_StartRecording: String { return self._s[1921]! } - public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[1922]! } - public var MediaPicker_Videos: String { return self._s[1924]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[1926]! } - public var Passport_Identity_TranslationsHelp: String { return self._s[1927]! } - public var SharedMedia_CategoryMedia: String { return self._s[1928]! } + public var VoiceChat_StatusMutedForYou: String { return self._s[1899]! } + public var Passport_Language_et: String { return self._s[1900]! } + public var Conversation_MessageLeaveCommentShort: String { return self._s[1901]! } + public var PhotoEditor_CropReset: String { return self._s[1902]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1903]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1904]! } + public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[1905]! } + public var WallpaperSearch_ColorWhite: String { return self._s[1908]! } + public var Channel_AdminLog_CanEditMessages: String { return self._s[1910]! } + public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[1911]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[1913]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[1915]! } + public var Map_YouAreHere: String { return self._s[1917]! } + public var Core_ServiceUserStatus: String { return self._s[1918]! } + public var Channel_Setup_TypePrivateHelp: String { return self._s[1921]! } + public var VoiceChat_StartRecording: String { return self._s[1922]! } + public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[1923]! } + public var MediaPicker_Videos: String { return self._s[1925]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[1927]! } + public var Passport_Identity_TranslationsHelp: String { return self._s[1928]! } + public var SharedMedia_CategoryMedia: String { return self._s[1929]! } public func MediaPicker_Nof(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1929]!, self._r[1929]!, [_0]) + return formatWithArgumentRanges(self._s[1930]!, self._r[1930]!, [_0]) } - public var ChatSettings_AutoPlayGifs: String { return self._s[1930]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[1931]! } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[1932]! } - public var Conversation_JoinVoiceChatAsListener: String { return self._s[1933]! } - public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1934]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[1931]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[1932]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[1933]! } + public var Conversation_JoinVoiceChatAsListener: String { return self._s[1934]! } + public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1935]! } public func Chat_SlowmodeTooltip(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1935]!, self._r[1935]!, [_0]) + return formatWithArgumentRanges(self._s[1936]!, self._r[1936]!, [_0]) } - public var Web_Error: String { return self._s[1936]! } - public var PhotoEditor_SkinTool: String { return self._s[1937]! } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[1938]! } - public var AutoremoveSetup_TimerInfoChat: String { return self._s[1939]! } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[1941]! } - public var PasscodeSettings_Help: String { return self._s[1942]! } - public var Appearance_ColorTheme: String { return self._s[1943]! } + public var Web_Error: String { return self._s[1937]! } + public var PhotoEditor_SkinTool: String { return self._s[1938]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[1939]! } + public var AutoremoveSetup_TimerInfoChat: String { return self._s[1940]! } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[1942]! } + public var PasscodeSettings_Help: String { return self._s[1943]! } + public var Appearance_ColorTheme: String { return self._s[1944]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1944]!, self._r[1944]!, [_0]) + return formatWithArgumentRanges(self._s[1945]!, self._r[1945]!, [_0]) } - public var InviteLink_DeleteAllRevokedLinks: String { return self._s[1945]! } + public var InviteLink_DeleteAllRevokedLinks: String { return self._s[1946]! } public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1946]!, self._r[1946]!, [_1]) + return formatWithArgumentRanges(self._s[1947]!, self._r[1947]!, [_1]) } - public var InviteLink_QRCode_Title: String { return self._s[1947]! } - public var GroupInfo_LeftStatus: String { return self._s[1948]! } - public var EditTheme_Preview: String { return self._s[1949]! } - public var Watch_Suggestion_WhatsUp: String { return self._s[1950]! } + public var InviteLink_QRCode_Title: String { return self._s[1948]! } + public var GroupInfo_LeftStatus: String { return self._s[1949]! } + public var EditTheme_Preview: String { return self._s[1950]! } + public var Watch_Suggestion_WhatsUp: String { return self._s[1951]! } public func AutoDownloadSettings_PreloadVideoInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1951]!, self._r[1951]!, [_0]) + return formatWithArgumentRanges(self._s[1952]!, self._r[1952]!, [_0]) } - public var NotificationsSound_Keys: String { return self._s[1952]! } - public var VoiceChat_StatusWantsToSpeak: String { return self._s[1953]! } - public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1954]! } - public var ChatList_Context_MarkAsUnread: String { return self._s[1955]! } - public var DialogList_AdNoticeAlert: String { return self._s[1956]! } - public var UserInfo_Invite: String { return self._s[1957]! } - public var Checkout_Email: String { return self._s[1958]! } - public var Stats_GroupActionsTitle: String { return self._s[1959]! } - public var Coub_TapForSound: String { return self._s[1960]! } - public var Conversation_AutoremoveTimerRemovedUserYou: String { return self._s[1961]! } - public var Theme_ThemeChangedText: String { return self._s[1962]! } - public var Call_ExternalCallInProgressMessage: String { return self._s[1963]! } - public var AutoremoveSetup_TimerInfoChannel: String { return self._s[1964]! } - public var Settings_ApplyProxyAlertEnable: String { return self._s[1965]! } - public var ScheduledMessages_ScheduledToday: String { return self._s[1966]! } - public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1967]! } + public var NotificationsSound_Keys: String { return self._s[1953]! } + public var VoiceChat_StatusWantsToSpeak: String { return self._s[1954]! } + public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1955]! } + public var ChatList_Context_MarkAsUnread: String { return self._s[1956]! } + public var DialogList_AdNoticeAlert: String { return self._s[1957]! } + public var UserInfo_Invite: String { return self._s[1958]! } + public var Checkout_Email: String { return self._s[1959]! } + public var Stats_GroupActionsTitle: String { return self._s[1960]! } + public var Coub_TapForSound: String { return self._s[1961]! } + public var Conversation_AutoremoveTimerRemovedUserYou: String { return self._s[1962]! } + public var Theme_ThemeChangedText: String { return self._s[1963]! } + public var Call_ExternalCallInProgressMessage: String { return self._s[1964]! } + public var AutoremoveSetup_TimerInfoChannel: String { return self._s[1965]! } + public var Settings_ApplyProxyAlertEnable: String { return self._s[1966]! } + public var ScheduledMessages_ScheduledToday: String { return self._s[1967]! } + public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1968]! } public func VoiceChat_InviteMemberToChannelFirstText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1968]!, self._r[1968]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1969]!, self._r[1969]!, [_1, _2]) } - public var Call_ReportIncludeLogDescription: String { return self._s[1969]! } - public var Settings_FrequentlyAskedQuestions: String { return self._s[1971]! } - public var Call_VoiceOver_VoiceCallMissed: String { return self._s[1972]! } - public var Channel_MessagePhotoRemoved: String { return self._s[1973]! } - public var Passport_Email_Delete: String { return self._s[1974]! } + public var Call_ReportIncludeLogDescription: String { return self._s[1970]! } + public var Settings_FrequentlyAskedQuestions: String { return self._s[1972]! } + public var Call_VoiceOver_VoiceCallMissed: String { return self._s[1973]! } + public var Channel_MessagePhotoRemoved: String { return self._s[1974]! } + public var Passport_Email_Delete: String { return self._s[1975]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1975]!, self._r[1975]!, [_1]) + return formatWithArgumentRanges(self._s[1976]!, self._r[1976]!, [_1]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[1976]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[1977]! } public func Conversation_AutoremoveTimerRemovedUser(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1977]!, self._r[1977]!, [_1]) + return formatWithArgumentRanges(self._s[1978]!, self._r[1978]!, [_1]) } - public var Channel_AdminLog_CanAddAdmins: String { return self._s[1978]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[1980]! } - public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1981]! } - public var Common_of: String { return self._s[1982]! } - public var VoiceChat_CreateNewVoiceChatText: String { return self._s[1983]! } - public var VoiceChat_StartRecordingStart: String { return self._s[1984]! } - public var PeerInfo_ButtonUnmute: String { return self._s[1987]! } + public var Channel_AdminLog_CanAddAdmins: String { return self._s[1979]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[1981]! } + public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1982]! } + public var Common_of: String { return self._s[1983]! } + public var VoiceChat_CreateNewVoiceChatText: String { return self._s[1984]! } + public var VoiceChat_StartRecordingStart: String { return self._s[1985]! } + public var PeerInfo_ButtonUnmute: String { return self._s[1988]! } public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1988]!, self._r[1988]!, [_0]) + return formatWithArgumentRanges(self._s[1989]!, self._r[1989]!, [_0]) } - public var ChatList_AddChatsToFolder: String { return self._s[1989]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[1990]! } - public var Settings_Title: String { return self._s[1992]! } - public var AutoDownloadSettings_Contacts: String { return self._s[1994]! } - public var Appearance_BubbleCornersSetting: String { return self._s[1995]! } - public var InviteLink_OtherAdminsLinks: String { return self._s[1996]! } - public var Privacy_Calls_AlwaysAllow: String { return self._s[1997]! } - public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[1999]! } - public var WallpaperPreview_CropBottomText: String { return self._s[2000]! } - public var SecretTimer_VideoDescription: String { return self._s[2001]! } - public var VoiceOver_Chat_AnimatedSticker: String { return self._s[2002]! } - public var WallpaperPreview_Blurred: String { return self._s[2003]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2004]! } - public var ChatListFolder_ExcludedSectionHeader: String { return self._s[2006]! } - public var Conversation_CancelForwardSelectChat: String { return self._s[2007]! } - public var DialogList_PasscodeLockHelp: String { return self._s[2008]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[2009]! } - public var NetworkUsageSettings_CallDataSection: String { return self._s[2010]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2011]! } - public var Passport_FieldAddressTranslationHelp: String { return self._s[2012]! } - public var SocksProxySetup_Connection: String { return self._s[2013]! } - public var Passport_Address_TypePassportRegistration: String { return self._s[2014]! } - public var Contacts_PermissionsAllowInSettings: String { return self._s[2015]! } - public var Conversation_Unpin: String { return self._s[2016]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2017]! } - public var TwoFactorSetup_Hint_Placeholder: String { return self._s[2018]! } - public var Call_ReportSkip: String { return self._s[2019]! } + public var ChatList_AddChatsToFolder: String { return self._s[1990]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[1991]! } + public var Settings_Title: String { return self._s[1993]! } + public var AutoDownloadSettings_Contacts: String { return self._s[1995]! } + public var Appearance_BubbleCornersSetting: String { return self._s[1996]! } + public var InviteLink_OtherAdminsLinks: String { return self._s[1997]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[1998]! } + public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[2000]! } + public var WallpaperPreview_CropBottomText: String { return self._s[2001]! } + public var SecretTimer_VideoDescription: String { return self._s[2002]! } + public var VoiceOver_Chat_AnimatedSticker: String { return self._s[2003]! } + public var WallpaperPreview_Blurred: String { return self._s[2004]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2005]! } + public var ChatListFolder_ExcludedSectionHeader: String { return self._s[2007]! } + public var Conversation_CancelForwardSelectChat: String { return self._s[2008]! } + public var DialogList_PasscodeLockHelp: String { return self._s[2009]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[2010]! } + public var NetworkUsageSettings_CallDataSection: String { return self._s[2011]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2012]! } + public var Passport_FieldAddressTranslationHelp: String { return self._s[2013]! } + public var SocksProxySetup_Connection: String { return self._s[2014]! } + public var Passport_Address_TypePassportRegistration: String { return self._s[2015]! } + public var Contacts_PermissionsAllowInSettings: String { return self._s[2016]! } + public var Conversation_Unpin: String { return self._s[2017]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2018]! } + public var TwoFactorSetup_Hint_Placeholder: String { return self._s[2019]! } + public var Call_ReportSkip: String { return self._s[2020]! } public func VoiceOver_Chat_PhotoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2020]!, self._r[2020]!, [_0]) + return formatWithArgumentRanges(self._s[2021]!, self._r[2021]!, [_0]) } public func VoiceOver_Chat_Caption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2022]!, self._r[2022]!, [_0]) + return formatWithArgumentRanges(self._s[2023]!, self._r[2023]!, [_0]) } - public var AutoNightTheme_Automatic: String { return self._s[2023]! } - public var Passport_Language_az: String { return self._s[2025]! } + public var AutoNightTheme_Automatic: String { return self._s[2024]! } + public var Passport_Language_az: String { return self._s[2026]! } public func Conversation_AutoremoveChanged(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2026]!, self._r[2026]!, [_0]) + return formatWithArgumentRanges(self._s[2027]!, self._r[2027]!, [_0]) } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[2027]! } - public var Watch_UserInfo_Unmute: String { return self._s[2028]! } - public var Channel_Stickers_YourStickers: String { return self._s[2029]! } - public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2030]! } - public var PeerInfo_AutoremoveMessagesDisabled: String { return self._s[2031]! } - public var Tour_Text1: String { return self._s[2032]! } - public var Common_Delete: String { return self._s[2033]! } - public var Settings_EditPhoto: String { return self._s[2034]! } - public var Common_Edit: String { return self._s[2035]! } - public var ShareMenu_ShareTo: String { return self._s[2037]! } - public var Passport_Identity_ExpiryDate: String { return self._s[2038]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[2028]! } + public var Watch_UserInfo_Unmute: String { return self._s[2029]! } + public var Channel_Stickers_YourStickers: String { return self._s[2030]! } + public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2031]! } + public var PeerInfo_AutoremoveMessagesDisabled: String { return self._s[2032]! } + public var Tour_Text1: String { return self._s[2033]! } + public var Common_Delete: String { return self._s[2034]! } + public var Settings_EditPhoto: String { return self._s[2035]! } + public var Common_Edit: String { return self._s[2036]! } + public var ShareMenu_ShareTo: String { return self._s[2038]! } + public var Passport_Identity_ExpiryDate: String { return self._s[2039]! } public func Channel_AdminLog_MutedNewMembers(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2039]!, self._r[2039]!, [_1]) + return formatWithArgumentRanges(self._s[2040]!, self._r[2040]!, [_1]) } - public var Preview_DeleteGif: String { return self._s[2040]! } - public var WallpaperPreview_PatternPaternDiscard: String { return self._s[2041]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2042]! } - public var Conversation_ViewReply: String { return self._s[2043]! } - public var Stats_LoadingText: String { return self._s[2044]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[2045]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2046]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2047]! } + public var Preview_DeleteGif: String { return self._s[2041]! } + public var WallpaperPreview_PatternPaternDiscard: String { return self._s[2042]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2043]! } + public var Conversation_ViewReply: String { return self._s[2044]! } + public var Stats_LoadingText: String { return self._s[2045]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[2046]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2047]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2048]! } public func Passport_Phone_UseTelegramNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2048]!, self._r[2048]!, [_0]) - } - public func Time_MonthOfYear_m2(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2049]!, self._r[2049]!, [_0]) } + public func Time_MonthOfYear_m2(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2050]!, self._r[2050]!, [_0]) + } public func VoiceOver_Chat_VideoMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2051]!, self._r[2051]!, [_0]) + return formatWithArgumentRanges(self._s[2052]!, self._r[2052]!, [_0]) } - public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[2052]! } - public var InviteLink_Share: String { return self._s[2054]! } + public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[2053]! } + public var InviteLink_Share: String { return self._s[2055]! } public func Conversation_ImportProgress(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2056]!, self._r[2056]!, [_0]) + return formatWithArgumentRanges(self._s[2057]!, self._r[2057]!, [_0]) } - public var IntentsSettings_MainAccount: String { return self._s[2057]! } - public var Group_MessagePhotoRemoved: String { return self._s[2060]! } - public var Conversation_ContextMenuSelect: String { return self._s[2061]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2063]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2064]! } - public var Contacts_PermissionsEnable: String { return self._s[2065]! } - public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[2066]! } - public var Common_NotNow: String { return self._s[2067]! } - public var Notification_CreatedChannel: String { return self._s[2068]! } - public var Stats_ViewsBySourceTitle: String { return self._s[2070]! } - public var InviteLink_ContextShare: String { return self._s[2071]! } - public var Appearance_AppIconClassic: String { return self._s[2072]! } - public var PhotoEditor_QualityTool: String { return self._s[2073]! } - public var ClearCache_ClearCache: String { return self._s[2074]! } - public var TwoFactorSetup_Password_PlaceholderConfirmPassword: String { return self._s[2075]! } - public var AutoDownloadSettings_Videos: String { return self._s[2076]! } - public var GroupPermission_Duration: String { return self._s[2077]! } - public var ChatList_Read: String { return self._s[2078]! } + public var IntentsSettings_MainAccount: String { return self._s[2058]! } + public var Group_MessagePhotoRemoved: String { return self._s[2061]! } + public var Conversation_ContextMenuSelect: String { return self._s[2062]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2064]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2065]! } + public var Contacts_PermissionsEnable: String { return self._s[2066]! } + public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[2067]! } + public var Common_NotNow: String { return self._s[2068]! } + public var Notification_CreatedChannel: String { return self._s[2069]! } + public var Stats_ViewsBySourceTitle: String { return self._s[2071]! } + public var InviteLink_ContextShare: String { return self._s[2072]! } + public var Appearance_AppIconClassic: String { return self._s[2073]! } + public var PhotoEditor_QualityTool: String { return self._s[2074]! } + public var ClearCache_ClearCache: String { return self._s[2075]! } + public var TwoFactorSetup_Password_PlaceholderConfirmPassword: String { return self._s[2076]! } + public var AutoDownloadSettings_Videos: String { return self._s[2077]! } + public var GroupPermission_Duration: String { return self._s[2078]! } + public var ChatList_Read: String { return self._s[2079]! } public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2079]!, self._r[2079]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2080]!, self._r[2080]!, [_1, _2]) } public func ScheduleVoiceChat_ScheduleTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2080]!, self._r[2080]!, [_0]) + return formatWithArgumentRanges(self._s[2081]!, self._r[2081]!, [_0]) } - public var CallFeedback_Send: String { return self._s[2081]! } - public var Channel_Stickers_Searching: String { return self._s[2082]! } - public var ScheduledMessages_ReminderNotification: String { return self._s[2083]! } - public var FastTwoStepSetup_HintSection: String { return self._s[2084]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2085]! } - public var EditTheme_CreateTitle: String { return self._s[2086]! } - public var Application_Name: String { return self._s[2087]! } - public var Paint_Stickers: String { return self._s[2088]! } - public var Appearance_ThemePreview_Chat_1_Text: String { return self._s[2089]! } - public var Call_StatusFailed: String { return self._s[2090]! } - public var Stickers_FavoriteStickers: String { return self._s[2091]! } - public var ClearCache_Clear: String { return self._s[2092]! } - public var Passport_Language_mn: String { return self._s[2093]! } - public var WallpaperPreview_PreviewTopText: String { return self._s[2094]! } - public var LogoutOptions_ClearCacheTitle: String { return self._s[2095]! } - public var Call_VoiceOver_VideoCallOutgoing: String { return self._s[2097]! } - public var TwoFactorSetup_Hint_Text: String { return self._s[2099]! } - public var WallpaperPreview_PatternIntensity: String { return self._s[2100]! } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[2101]! } - public var Passport_Address_AddBankStatement: String { return self._s[2102]! } + public var CallFeedback_Send: String { return self._s[2082]! } + public var Channel_Stickers_Searching: String { return self._s[2083]! } + public var ScheduledMessages_ReminderNotification: String { return self._s[2084]! } + public var FastTwoStepSetup_HintSection: String { return self._s[2085]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2086]! } + public var EditTheme_CreateTitle: String { return self._s[2087]! } + public var Application_Name: String { return self._s[2088]! } + public var Paint_Stickers: String { return self._s[2089]! } + public var Appearance_ThemePreview_Chat_1_Text: String { return self._s[2090]! } + public var Call_StatusFailed: String { return self._s[2091]! } + public var Stickers_FavoriteStickers: String { return self._s[2092]! } + public var ClearCache_Clear: String { return self._s[2093]! } + public var Passport_Language_mn: String { return self._s[2094]! } + public var WallpaperPreview_PreviewTopText: String { return self._s[2095]! } + public var LogoutOptions_ClearCacheTitle: String { return self._s[2096]! } + public var Call_VoiceOver_VideoCallOutgoing: String { return self._s[2098]! } + public var TwoFactorSetup_Hint_Text: String { return self._s[2100]! } + public var WallpaperPreview_PatternIntensity: String { return self._s[2101]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[2102]! } + public var Passport_Address_AddBankStatement: String { return self._s[2103]! } public func Conversation_TitleRepliesFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2105]!, self._r[2105]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2106]!, self._r[2106]!, [_1, _2]) } - public var ChatListFolderSettings_RecommendedNewFolder: String { return self._s[2106]! } - public var UserInfo_ShareContact: String { return self._s[2107]! } - public var Passport_Identity_NamePlaceholder: String { return self._s[2108]! } - public var Channel_ErrorAdminsTooMuch: String { return self._s[2110]! } - public var Call_RateCall: String { return self._s[2111]! } - public var Contacts_AccessDeniedError: String { return self._s[2112]! } - public var Invite_ChannelsTooMuch: String { return self._s[2113]! } - public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[2114]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[2115]! } - public var InviteLink_Create_TimeLimitInfo: String { return self._s[2116]! } - public var Cache_NoLimit: String { return self._s[2118]! } - public var Conversation_EmptyPlaceholder: String { return self._s[2122]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2123]! } - public var GroupRemoved_RemoveInfo: String { return self._s[2125]! } - public var Notification_Exceptions_MessagePreviewAlwaysOff: String { return self._s[2126]! } - public var Privacy_Calls_IntegrationHelp: String { return self._s[2127]! } + public var ChatListFolderSettings_RecommendedNewFolder: String { return self._s[2107]! } + public var UserInfo_ShareContact: String { return self._s[2108]! } + public var Passport_Identity_NamePlaceholder: String { return self._s[2109]! } + public var Channel_ErrorAdminsTooMuch: String { return self._s[2111]! } + public var Call_RateCall: String { return self._s[2112]! } + public var Contacts_AccessDeniedError: String { return self._s[2113]! } + public var Invite_ChannelsTooMuch: String { return self._s[2114]! } + public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[2115]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2116]! } + public var InviteLink_Create_TimeLimitInfo: String { return self._s[2117]! } + public var Cache_NoLimit: String { return self._s[2119]! } + public var Conversation_EmptyPlaceholder: String { return self._s[2123]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2124]! } + public var GroupRemoved_RemoveInfo: String { return self._s[2126]! } + public var Notification_Exceptions_MessagePreviewAlwaysOff: String { return self._s[2127]! } + public var Privacy_Calls_IntegrationHelp: String { return self._s[2128]! } public func PUSH_VIDEO_CALL_MISSED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2128]!, self._r[2128]!, [_1]) + return formatWithArgumentRanges(self._s[2129]!, self._r[2129]!, [_1]) } - public var VoiceOver_Media_PlaybackRateFast: String { return self._s[2129]! } - public var Theme_ThemeChanged: String { return self._s[2130]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2132]! } - public var AutoDownloadSettings_MediaTypes: String { return self._s[2133]! } + public var VoiceOver_Media_PlaybackRateFast: String { return self._s[2130]! } + public var Theme_ThemeChanged: String { return self._s[2131]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2133]! } + public var AutoDownloadSettings_MediaTypes: String { return self._s[2134]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2134]!, self._r[2134]!, [_0]) + return formatWithArgumentRanges(self._s[2135]!, self._r[2135]!, [_0]) } - public var Channel_AdminLog_InfoPanelTitle: String { return self._s[2135]! } - public var Passport_Language_da: String { return self._s[2137]! } - public var Chat_SlowmodeSendError: String { return self._s[2138]! } - public var Application_Update: String { return self._s[2140]! } - public var SocksProxySetup_SaveProxy: String { return self._s[2141]! } + public var Channel_AdminLog_InfoPanelTitle: String { return self._s[2136]! } + public var Passport_Language_da: String { return self._s[2138]! } + public var Chat_SlowmodeSendError: String { return self._s[2139]! } + public var Application_Update: String { return self._s[2141]! } + public var SocksProxySetup_SaveProxy: String { return self._s[2142]! } public func PUSH_AUTH_REGION(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2142]!, self._r[2142]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2143]!, self._r[2143]!, [_1, _2]) } - public var Privacy_AddNewPeer: String { return self._s[2144]! } - public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[2146]! } - public var Channel_Members_Title: String { return self._s[2147]! } - public var StickerPacks_ActionDelete: String { return self._s[2148]! } - public var Settings_LogoutConfirmationText: String { return self._s[2149]! } - public var Chat_UnsendMyMessages: String { return self._s[2150]! } - public var PeerInfo_ReportProfilePhoto: String { return self._s[2151]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2153]! } - public var ChatListFilter_AddChatsTitle: String { return self._s[2154]! } - public var Passport_FloodError: String { return self._s[2155]! } - public var NotificationSettings_ContactJoinedInfo: String { return self._s[2156]! } - public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[2157]! } - public var CallSettings_TabIconDescription: String { return self._s[2158]! } - public var Group_Setup_HistoryHeader: String { return self._s[2160]! } + public var Privacy_AddNewPeer: String { return self._s[2145]! } + public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[2147]! } + public var Channel_Members_Title: String { return self._s[2148]! } + public var StickerPacks_ActionDelete: String { return self._s[2149]! } + public var Conversation_ScheduledVoiceChat: String { return self._s[2150]! } + public var Settings_LogoutConfirmationText: String { return self._s[2151]! } + public var Chat_UnsendMyMessages: String { return self._s[2152]! } + public var PeerInfo_ReportProfilePhoto: String { return self._s[2153]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2155]! } + public var ChatListFilter_AddChatsTitle: String { return self._s[2156]! } + public var Passport_FloodError: String { return self._s[2157]! } + public var NotificationSettings_ContactJoinedInfo: String { return self._s[2158]! } + public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[2159]! } + public var CallSettings_TabIconDescription: String { return self._s[2160]! } + public var Group_Setup_HistoryHeader: String { return self._s[2162]! } public func Channel_AdminLog_AllowedNewMembersToSpeak(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2161]!, self._r[2161]!, [_1]) + return formatWithArgumentRanges(self._s[2163]!, self._r[2163]!, [_1]) } - public var TwoStepAuth_EmailTitle: String { return self._s[2162]! } - public var GroupInfo_Permissions_Removed: String { return self._s[2163]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[2164]! } - public var Contacts_Title: String { return self._s[2166]! } + public var TwoStepAuth_EmailTitle: String { return self._s[2164]! } + public var GroupInfo_Permissions_Removed: String { return self._s[2165]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[2166]! } + public var Contacts_Title: String { return self._s[2168]! } public func Notification_Invited(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2167]!, self._r[2167]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2169]!, self._r[2169]!, [_0, _1]) } - public var ChatList_PeerTypeBot: String { return self._s[2170]! } + public var ChatList_PeerTypeBot: String { return self._s[2172]! } public func Channel_AdminLog_SetSlowmode(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2171]!, self._r[2171]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2173]!, self._r[2173]!, [_1, _2]) } - public var Appearance_ThemePreview_Chat_6_Text: String { return self._s[2172]! } + public var Appearance_ThemePreview_Chat_6_Text: String { return self._s[2174]! } public func Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2173]!, self._r[2173]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2175]!, self._r[2175]!, [_1, _2, _3]) } - public var Camera_PhotoMode: String { return self._s[2175]! } + public var Camera_PhotoMode: String { return self._s[2177]! } public func PUSH_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2176]!, self._r[2176]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2178]!, self._r[2178]!, [_1, _2, _3]) } - public var ContactInfo_PhoneLabelPager: String { return self._s[2177]! } - public var SettingsSearch_Synonyms_FAQ: String { return self._s[2178]! } - public var Call_CallAgain: String { return self._s[2179]! } - public var TwoStepAuth_PasswordSet: String { return self._s[2180]! } + public var ContactInfo_PhoneLabelPager: String { return self._s[2179]! } + public var SettingsSearch_Synonyms_FAQ: String { return self._s[2180]! } + public var Call_CallAgain: String { return self._s[2181]! } + public var TwoStepAuth_PasswordSet: String { return self._s[2182]! } public func Channel_Management_RestrictedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2181]!, self._r[2181]!, [_0]) + return formatWithArgumentRanges(self._s[2183]!, self._r[2183]!, [_0]) } - public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[2182]! } - public var ClearCache_FreeSpaceDescription: String { return self._s[2183]! } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2184]! } - public var Group_LeaveGroup: String { return self._s[2185]! } - public var Channel_Setup_LinkTypePrivate: String { return self._s[2187]! } - public var GroupInfo_LabelAdmin: String { return self._s[2189]! } - public var CheckoutInfo_ErrorStateInvalid: String { return self._s[2191]! } - public var Notification_PassportValuePersonalDetails: String { return self._s[2192]! } + public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[2184]! } + public var ClearCache_FreeSpaceDescription: String { return self._s[2185]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2186]! } + public var Group_LeaveGroup: String { return self._s[2187]! } + public var Channel_Setup_LinkTypePrivate: String { return self._s[2189]! } + public var GroupInfo_LabelAdmin: String { return self._s[2191]! } + public var CheckoutInfo_ErrorStateInvalid: String { return self._s[2193]! } + public var Notification_PassportValuePersonalDetails: String { return self._s[2194]! } public func WebSearch_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2193]!, self._r[2193]!, [_0]) + return formatWithArgumentRanges(self._s[2195]!, self._r[2195]!, [_0]) } - public var Stats_GroupNewMembersBySourceTitle: String { return self._s[2194]! } - public var Appearance_Preview: String { return self._s[2195]! } - public var VoiceOver_Chat_Contact: String { return self._s[2196]! } - public var Passport_Language_th: String { return self._s[2197]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[2199]! } - public var LastSeen_Offline: String { return self._s[2202]! } - public var Map_OpenInHereMaps: String { return self._s[2203]! } - public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[2204]! } - public var InviteLink_ContextEdit: String { return self._s[2206]! } - public var AutoDownloadSettings_Reset: String { return self._s[2207]! } - public var Conversation_SendMessage_SetReminder: String { return self._s[2208]! } - public var Channel_AdminLog_EmptyMessageText: String { return self._s[2209]! } + public var Stats_GroupNewMembersBySourceTitle: String { return self._s[2196]! } + public var Appearance_Preview: String { return self._s[2197]! } + public var VoiceOver_Chat_Contact: String { return self._s[2198]! } + public var Passport_Language_th: String { return self._s[2199]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[2201]! } + public var LastSeen_Offline: String { return self._s[2204]! } + public var Map_OpenInHereMaps: String { return self._s[2205]! } + public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[2206]! } + public var InviteLink_ContextEdit: String { return self._s[2208]! } + public var AutoDownloadSettings_Reset: String { return self._s[2209]! } + public var Conversation_SendMessage_SetReminder: String { return self._s[2210]! } + public var Channel_AdminLog_EmptyMessageText: String { return self._s[2211]! } public func AddContact_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2210]!, self._r[2210]!, [_0]) + return formatWithArgumentRanges(self._s[2212]!, self._r[2212]!, [_0]) } public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2211]!, self._r[2211]!, [_0]) + return formatWithArgumentRanges(self._s[2213]!, self._r[2213]!, [_0]) } - public var Passport_Identity_EditDriversLicense: String { return self._s[2212]! } - public var ChatListFolder_NameNonMuted: String { return self._s[2213]! } - public var Username_Placeholder: String { return self._s[2214]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[2214]! } + public var ChatListFolder_NameNonMuted: String { return self._s[2215]! } + public var Username_Placeholder: String { return self._s[2216]! } public func PUSH_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2215]!, self._r[2215]!, [_1]) + return formatWithArgumentRanges(self._s[2217]!, self._r[2217]!, [_1]) } - public var Passport_Language_it: String { return self._s[2216]! } - public var Checkout_NewCard_SaveInfo: String { return self._s[2217]! } + public var Passport_Language_it: String { return self._s[2218]! } + public var Checkout_NewCard_SaveInfo: String { return self._s[2219]! } public func Channel_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2218]!, self._r[2218]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2220]!, self._r[2220]!, [_1, _2]) } - public var NotificationsSound_Pulse: String { return self._s[2219]! } - public var VoiceOver_DismissContextMenu: String { return self._s[2221]! } - public var MessagePoll_NoVotes: String { return self._s[2224]! } - public var Message_Wallpaper: String { return self._s[2225]! } - public var Conversation_JoinVoiceChat: String { return self._s[2226]! } - public var Appearance_Other: String { return self._s[2227]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[2229]! } - public var Group_PublicLink_Placeholder: String { return self._s[2233]! } - public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2234]! } - public var VoiceOver_Recording_StopAndPreview: String { return self._s[2235]! } - public var ChatListFolder_NameBots: String { return self._s[2236]! } - public var Conversation_StopPollConfirmation: String { return self._s[2237]! } - public var UserInfo_DeleteContact: String { return self._s[2238]! } + public var NotificationsSound_Pulse: String { return self._s[2221]! } + public var VoiceOver_DismissContextMenu: String { return self._s[2223]! } + public var MessagePoll_NoVotes: String { return self._s[2226]! } + public var Message_Wallpaper: String { return self._s[2227]! } + public var Conversation_JoinVoiceChat: String { return self._s[2228]! } + public var Appearance_Other: String { return self._s[2229]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[2231]! } + public var Group_PublicLink_Placeholder: String { return self._s[2235]! } + public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2236]! } + public var VoiceOver_Recording_StopAndPreview: String { return self._s[2237]! } + public var ChatListFolder_NameBots: String { return self._s[2238]! } + public var Conversation_StopPollConfirmation: String { return self._s[2239]! } + public var UserInfo_DeleteContact: String { return self._s[2240]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2239]!, self._r[2239]!, [_0]) + return formatWithArgumentRanges(self._s[2241]!, self._r[2241]!, [_0]) } - public var Wallpaper_Wallpaper: String { return self._s[2241]! } + public var Wallpaper_Wallpaper: String { return self._s[2243]! } public func PUSH_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2242]!, self._r[2242]!, [_1]) + return formatWithArgumentRanges(self._s[2244]!, self._r[2244]!, [_1]) } - public var LoginPassword_ForgotPassword: String { return self._s[2243]! } - public var FeaturedStickerPacks_Title: String { return self._s[2244]! } - public var Paint_Pen: String { return self._s[2245]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2246]! } - public var ChatListFolderSettings_Info: String { return self._s[2247]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2248]! } - public var PhotoEditor_CurvesAll: String { return self._s[2250]! } + public var LoginPassword_ForgotPassword: String { return self._s[2245]! } + public var FeaturedStickerPacks_Title: String { return self._s[2246]! } + public var Paint_Pen: String { return self._s[2247]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2248]! } + public var ChatListFolderSettings_Info: String { return self._s[2249]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2250]! } + public var PhotoEditor_CurvesAll: String { return self._s[2252]! } public func Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2252]!, self._r[2252]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2254]!, self._r[2254]!, [_1, _2, _3]) } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2254]! } - public var Message_ImageExpired: String { return self._s[2255]! } - public var Call_ConnectionErrorMessage: String { return self._s[2256]! } - public var SearchImages_NoImagesFound: String { return self._s[2258]! } - public var PeerInfo_PaneGifs: String { return self._s[2259]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2260]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2261]! } - public var PhotoEditor_VignetteTool: String { return self._s[2262]! } - public var Passport_Language_dz: String { return self._s[2263]! } - public var Notifications_ChannelNotificationsHelp: String { return self._s[2264]! } - public var Conversation_BlockUser: String { return self._s[2265]! } - public var GroupPermission_PermissionDisabledByDefault: String { return self._s[2268]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2270]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2256]! } + public var Message_ImageExpired: String { return self._s[2257]! } + public var Call_ConnectionErrorMessage: String { return self._s[2258]! } + public var SearchImages_NoImagesFound: String { return self._s[2260]! } + public var PeerInfo_PaneGifs: String { return self._s[2261]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2262]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2263]! } + public var PhotoEditor_VignetteTool: String { return self._s[2264]! } + public var Passport_Language_dz: String { return self._s[2265]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[2266]! } + public var Conversation_BlockUser: String { return self._s[2267]! } + public var GroupPermission_PermissionDisabledByDefault: String { return self._s[2270]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2272]! } public func Time_MonthOfYear_m8(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2271]!, self._r[2271]!, [_0]) + return formatWithArgumentRanges(self._s[2273]!, self._r[2273]!, [_0]) } - public var KeyCommand_NewMessage: String { return self._s[2272]! } - public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[2275]! } + public var KeyCommand_NewMessage: String { return self._s[2274]! } + public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[2277]! } public func PUSH_CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2277]!, self._r[2277]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2279]!, self._r[2279]!, [_1, _2]) } - public var ContactList_Context_StartSecretChat: String { return self._s[2278]! } - public var VoiceOver_Chat_File: String { return self._s[2279]! } - public var ChatList_EditFolder: String { return self._s[2281]! } - public var Appearance_BubbleCorners_Title: String { return self._s[2282]! } - public var PeerInfo_PaneAudio: String { return self._s[2283]! } - public var ChatListFolder_CategoryContacts: String { return self._s[2285]! } - public var VoiceOver_ScheduledMessages: String { return self._s[2286]! } + public var ContactList_Context_StartSecretChat: String { return self._s[2280]! } + public var VoiceOver_Chat_File: String { return self._s[2281]! } + public var ChatList_EditFolder: String { return self._s[2283]! } + public var Appearance_BubbleCorners_Title: String { return self._s[2284]! } + public var PeerInfo_PaneAudio: String { return self._s[2285]! } + public var ChatListFolder_CategoryContacts: String { return self._s[2287]! } + public var VoiceOver_ScheduledMessages: String { return self._s[2288]! } public func Login_InvalidPhoneEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2287]!, self._r[2287]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[2289]!, self._r[2289]!, [_1, _2, _3, _4, _5]) } - public var ChatList_PeerTypeChannel: String { return self._s[2288]! } - public var VoiceOver_Navigation_Search: String { return self._s[2289]! } - public var Settings_Search: String { return self._s[2290]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2291]! } - public var Login_PhoneBannedError: String { return self._s[2292]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2293]! } - public var Passport_Language_fa: String { return self._s[2294]! } - public var Settings_About: String { return self._s[2295]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[2296]! } - public var Channel_AdminLog_InfoPanelChannelAlertText: String { return self._s[2297]! } - public var AutoDownloadSettings_DataUsageHigh: String { return self._s[2298]! } + public var ChatList_PeerTypeChannel: String { return self._s[2290]! } + public var VoiceOver_Navigation_Search: String { return self._s[2291]! } + public var Settings_Search: String { return self._s[2292]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2293]! } + public var Login_PhoneBannedError: String { return self._s[2294]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2295]! } + public var Passport_Language_fa: String { return self._s[2296]! } + public var Settings_About: String { return self._s[2297]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[2298]! } + public var Channel_AdminLog_InfoPanelChannelAlertText: String { return self._s[2299]! } + public var AutoDownloadSettings_DataUsageHigh: String { return self._s[2300]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2299]!, self._r[2299]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2301]!, self._r[2301]!, [_1, _2, _3]) } - public var Common_OK: String { return self._s[2300]! } - public var Contacts_SortBy: String { return self._s[2301]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[2302]! } + public var Common_OK: String { return self._s[2302]! } + public var Contacts_SortBy: String { return self._s[2303]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[2304]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2304]!, self._r[2304]!, [_0]) + return formatWithArgumentRanges(self._s[2306]!, self._r[2306]!, [_0]) } - public var CallFeedback_IncludeLogs: String { return self._s[2307]! } + public var CallFeedback_IncludeLogs: String { return self._s[2309]! } public func External_OpenIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2308]!, self._r[2308]!, [_0]) + return formatWithArgumentRanges(self._s[2310]!, self._r[2310]!, [_0]) } - public var Passcode_AppLockedAlert: String { return self._s[2310]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2311]! } - public var Channel_NotificationLoading: String { return self._s[2313]! } - public var Passport_Identity_DocumentNumber: String { return self._s[2314]! } - public var VoiceOver_Chat_PagePreview: String { return self._s[2315]! } - public var VoiceOver_Chat_OpenHint: String { return self._s[2316]! } - public var Weekday_ShortFriday: String { return self._s[2317]! } - public var Conversation_TitleMute: String { return self._s[2318]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2319]! } - public var ScheduledMessages_PollUnavailable: String { return self._s[2320]! } - public var DialogList_LanguageTooltip: String { return self._s[2322]! } - public var BroadcastGroups_IntroTitle: String { return self._s[2323]! } - public var Channel_AdminLogFilter_EventsPinned: String { return self._s[2324]! } + public var Passcode_AppLockedAlert: String { return self._s[2312]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2313]! } + public var Channel_NotificationLoading: String { return self._s[2315]! } + public var Passport_Identity_DocumentNumber: String { return self._s[2316]! } + public var VoiceOver_Chat_PagePreview: String { return self._s[2317]! } + public var VoiceOver_Chat_OpenHint: String { return self._s[2318]! } + public var Weekday_ShortFriday: String { return self._s[2319]! } + public var Conversation_TitleMute: String { return self._s[2320]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2321]! } + public var ScheduledMessages_PollUnavailable: String { return self._s[2322]! } + public var DialogList_LanguageTooltip: String { return self._s[2324]! } + public var BroadcastGroups_IntroTitle: String { return self._s[2325]! } + public var Channel_AdminLogFilter_EventsPinned: String { return self._s[2326]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2325]!, self._r[2325]!, [_0]) + return formatWithArgumentRanges(self._s[2327]!, self._r[2327]!, [_0]) } - public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[2327]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[2328]! } - public var Settings_EditVideo: String { return self._s[2329]! } - public var VoiceOver_Common_Off: String { return self._s[2330]! } - public var Stickers_FrequentlyUsed: String { return self._s[2331]! } - public var GroupPermission_Title: String { return self._s[2332]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2333]! } - public var Appearance_ThemeCarouselDay: String { return self._s[2334]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[2329]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[2330]! } + public var Settings_EditVideo: String { return self._s[2331]! } + public var VoiceOver_Common_Off: String { return self._s[2332]! } + public var Stickers_FrequentlyUsed: String { return self._s[2333]! } + public var GroupPermission_Title: String { return self._s[2334]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2335]! } + public var Appearance_ThemeCarouselDay: String { return self._s[2336]! } public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2335]!, self._r[2335]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2337]!, self._r[2337]!, [_1, _2]) } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2336]! } - public var Tour_Title6: String { return self._s[2337]! } - public var EmptyGroupInfo_Title: String { return self._s[2338]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2338]! } + public var Tour_Title6: String { return self._s[2339]! } + public var EmptyGroupInfo_Title: String { return self._s[2340]! } public func Channel_AdminLog_MessageToggleSignaturesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2339]!, self._r[2339]!, [_0]) + return formatWithArgumentRanges(self._s[2341]!, self._r[2341]!, [_0]) } - public var Passport_Language_sk: String { return self._s[2340]! } - public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[2341]! } - public var Preview_SaveToCameraRoll: String { return self._s[2342]! } + public var Passport_Language_sk: String { return self._s[2342]! } + public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[2343]! } + public var Preview_SaveToCameraRoll: String { return self._s[2344]! } public func VoiceChat_YouCanNowSpeakIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2343]!, self._r[2343]!, [_0]) + return formatWithArgumentRanges(self._s[2345]!, self._r[2345]!, [_0]) } - public var LogoutOptions_SetPasscodeTitle: String { return self._s[2344]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2345]! } - public var Conversation_ContextMenuMore: String { return self._s[2346]! } - public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[2347]! } - public var Channel_AdminLog_CanBeAnonymous: String { return self._s[2348]! } - public var CallFeedback_ReasonSilentLocal: String { return self._s[2350]! } + public var LogoutOptions_SetPasscodeTitle: String { return self._s[2346]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2347]! } + public var Conversation_ContextMenuMore: String { return self._s[2348]! } + public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[2349]! } + public var Channel_AdminLog_CanBeAnonymous: String { return self._s[2350]! } + public var CallFeedback_ReasonSilentLocal: String { return self._s[2352]! } public func Channel_AdminLog_UnmutedMutedParticipant(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2351]!, self._r[2351]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2353]!, self._r[2353]!, [_1, _2]) } - public var UserInfo_NotificationsDisable: String { return self._s[2352]! } + public var UserInfo_NotificationsDisable: String { return self._s[2354]! } public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2354]!, self._r[2354]!, [_0]) + return formatWithArgumentRanges(self._s[2356]!, self._r[2356]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[2355]! } + public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[2357]! } public func Date_ChatDateHeader(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2357]!, self._r[2357]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2359]!, self._r[2359]!, [_1, _2]) } - public var WallpaperSearch_ColorPrefix: String { return self._s[2358]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2360]! } public func Message_ForwardedPsa_covid(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2359]!, self._r[2359]!, [_0]) + return formatWithArgumentRanges(self._s[2361]!, self._r[2361]!, [_0]) } - public var Conversation_RestrictedMedia: String { return self._s[2361]! } - public var Group_MessageVideoUpdated: String { return self._s[2362]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2363]! } - public var GroupInfo_DeleteAndExit: String { return self._s[2364]! } - public var TwoFactorSetup_Email_Action: String { return self._s[2365]! } - public var Media_ShareThisVideo: String { return self._s[2367]! } - public var DialogList_Replies: String { return self._s[2369]! } + public var Conversation_RestrictedMedia: String { return self._s[2363]! } + public var Group_MessageVideoUpdated: String { return self._s[2364]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2365]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2366]! } + public var TwoFactorSetup_Email_Action: String { return self._s[2367]! } + public var Media_ShareThisVideo: String { return self._s[2369]! } + public var DialogList_Replies: String { return self._s[2371]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2370]!, self._r[2370]!, [_0]) + return formatWithArgumentRanges(self._s[2372]!, self._r[2372]!, [_0]) } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2371]! } - public var Watch_Suggestion_OnMyWay: String { return self._s[2372]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2373]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2373]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[2374]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2375]! } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2374]!, self._r[2374]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2376]!, self._r[2376]!, [_1, _2]) } public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2375]!, self._r[2375]!, [_0]) + return formatWithArgumentRanges(self._s[2377]!, self._r[2377]!, [_0]) } - public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[2376]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2377]! } - public var ChatList_Search_NoResultsFitlerMedia: String { return self._s[2378]! } - public var Channel_Members_InviteLink: String { return self._s[2379]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[2380]! } - public var WatchRemote_AlertText: String { return self._s[2381]! } + public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[2378]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2379]! } + public var ChatList_Search_NoResultsFitlerMedia: String { return self._s[2380]! } + public var Channel_Members_InviteLink: String { return self._s[2381]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[2382]! } + public var WatchRemote_AlertText: String { return self._s[2383]! } public func Channel_DiscussionGroup_PrivateChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2382]!, self._r[2382]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2384]!, self._r[2384]!, [_1, _2]) } - public var Conversation_Pin: String { return self._s[2383]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2384]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2385]! } - public var Conversation_CancelForwardTitle: String { return self._s[2386]! } + public var Conversation_Pin: String { return self._s[2385]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2386]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2387]! } + public var Conversation_CancelForwardTitle: String { return self._s[2388]! } public func Notification_PinnedPollMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2387]!, self._r[2387]!, [_0]) + return formatWithArgumentRanges(self._s[2389]!, self._r[2389]!, [_0]) } - public var Appearance_AppIconFilled: String { return self._s[2388]! } - public var StickerPack_ErrorNotFound: String { return self._s[2389]! } + public var Appearance_AppIconFilled: String { return self._s[2390]! } + public var StickerPack_ErrorNotFound: String { return self._s[2391]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2390]!, self._r[2390]!, [_1]) + return formatWithArgumentRanges(self._s[2392]!, self._r[2392]!, [_1]) } - public var Passport_Identity_AddIdentityCard: String { return self._s[2391]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[2393]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2393]!, self._r[2393]!, [_1]) + return formatWithArgumentRanges(self._s[2395]!, self._r[2395]!, [_1]) } - public var Call_Camera: String { return self._s[2394]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2395]! } - public var Group_Location_Info: String { return self._s[2396]! } - public var Watch_LastSeen_WithinAMonth: String { return self._s[2397]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2398]! } + public var Call_Camera: String { return self._s[2396]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2397]! } + public var Group_Location_Info: String { return self._s[2398]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[2399]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2400]! } public func DialogList_PinLimitError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2399]!, self._r[2399]!, [_0]) + return formatWithArgumentRanges(self._s[2401]!, self._r[2401]!, [_0]) } - public var Weekday_Yesterday: String { return self._s[2400]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[2401]! } - public var InviteLink_Create_UsersLimit: String { return self._s[2402]! } - public var ArchivedPacksAlert_Title: String { return self._s[2403]! } - public var PeerInfo_PaneMembers: String { return self._s[2404]! } - public var PhotoEditor_SelectCoverFrame: String { return self._s[2405]! } + public var Weekday_Yesterday: String { return self._s[2402]! } + public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[2403]! } + public var InviteLink_Create_UsersLimit: String { return self._s[2404]! } + public var ArchivedPacksAlert_Title: String { return self._s[2405]! } + public var PeerInfo_PaneMembers: String { return self._s[2406]! } + public var PhotoEditor_SelectCoverFrame: String { return self._s[2407]! } public func Location_ProximityAlertSetTextGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2406]!, self._r[2406]!, [_0]) + return formatWithArgumentRanges(self._s[2408]!, self._r[2408]!, [_0]) } - public var ContactInfo_PhoneLabelMain: String { return self._s[2407]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[2409]! } public func Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2408]!, self._r[2408]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2410]!, self._r[2410]!, [_1, _2, _3]) } - public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[2409]! } - public var Channel_DiscussionGroup: String { return self._s[2410]! } - public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[2411]! } - public var InviteLink_Create_TimeLimit: String { return self._s[2413]! } - public var Channel_EditAdmin_PermissionsHeader: String { return self._s[2414]! } - public var VoiceOver_MessageContextForward: String { return self._s[2415]! } - public var SocksProxySetup_TypeNone: String { return self._s[2416]! } - public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[2418]! } - public var ProfilePhoto_OpenInEditor: String { return self._s[2420]! } - public var WallpaperSearch_ColorPurple: String { return self._s[2421]! } - public var ChatListFolder_IncludeChatsTitle: String { return self._s[2422]! } - public var Group_Username_InvalidTooShort: String { return self._s[2423]! } - public var Location_ProximityNotification_DistanceM: String { return self._s[2424]! } - public var VoiceChat_EditTitleText: String { return self._s[2425]! } + public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[2411]! } + public var Channel_DiscussionGroup: String { return self._s[2412]! } + public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[2413]! } + public var InviteLink_Create_TimeLimit: String { return self._s[2415]! } + public var Channel_EditAdmin_PermissionsHeader: String { return self._s[2416]! } + public var VoiceOver_MessageContextForward: String { return self._s[2417]! } + public var SocksProxySetup_TypeNone: String { return self._s[2418]! } + public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[2420]! } + public var ProfilePhoto_OpenInEditor: String { return self._s[2422]! } + public var WallpaperSearch_ColorPurple: String { return self._s[2423]! } + public var ChatListFolder_IncludeChatsTitle: String { return self._s[2424]! } + public var Group_Username_InvalidTooShort: String { return self._s[2425]! } + public var Location_ProximityNotification_DistanceM: String { return self._s[2426]! } + public var VoiceChat_EditTitleText: String { return self._s[2427]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2426]!, self._r[2426]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[2428]!, self._r[2428]!, [_0, _1, _2]) } - public var Passport_Language_tk: String { return self._s[2427]! } - public var ConvertToSupergroup_Title: String { return self._s[2428]! } - public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[2429]! } - public var Cache_KeepMediaHelp: String { return self._s[2430]! } - public var Channel_Management_Title: String { return self._s[2431]! } + public var Passport_Language_tk: String { return self._s[2429]! } + public var ConvertToSupergroup_Title: String { return self._s[2430]! } + public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[2431]! } + public var Cache_KeepMediaHelp: String { return self._s[2432]! } + public var Channel_Management_Title: String { return self._s[2433]! } public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2432]!, self._r[2432]!, [_1]) + return formatWithArgumentRanges(self._s[2434]!, self._r[2434]!, [_1]) } - public var Conversation_ForwardChats: String { return self._s[2433]! } - public var Passport_Language_bg: String { return self._s[2434]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2435]! } - public var Permissions_PrivacyPolicy: String { return self._s[2436]! } - public var VoiceOver_Chat_YourMusic: String { return self._s[2437]! } - public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[2438]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2439]! } - public var Conversation_ContextMenuOpenChannel: String { return self._s[2440]! } - public var Report_AdditionalDetailsPlaceholder: String { return self._s[2441]! } - public var Activity_UploadingVideo: String { return self._s[2442]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[2444]! } - public var Widget_LongTapToEdit: String { return self._s[2445]! } - public var VoiceChat_InviteLink_Listener: String { return self._s[2447]! } - public var SocksProxySetup_Credentials: String { return self._s[2448]! } - public var Preview_SaveGif: String { return self._s[2449]! } - public var Cache_Photos: String { return self._s[2450]! } - public var Channel_AdminLogFilter_EventsCalls: String { return self._s[2451]! } - public var Conversation_ContextMenuCancelEditing: String { return self._s[2452]! } - public var Contacts_FailedToSendInvitesMessage: String { return self._s[2453]! } + public var Conversation_ForwardChats: String { return self._s[2435]! } + public var Passport_Language_bg: String { return self._s[2436]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2437]! } + public var Permissions_PrivacyPolicy: String { return self._s[2438]! } + public var VoiceOver_Chat_YourMusic: String { return self._s[2439]! } + public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[2440]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2441]! } + public var Conversation_ContextMenuOpenChannel: String { return self._s[2442]! } + public var Report_AdditionalDetailsPlaceholder: String { return self._s[2443]! } + public var Activity_UploadingVideo: String { return self._s[2444]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[2446]! } + public var Widget_LongTapToEdit: String { return self._s[2447]! } + public var VoiceChat_InviteLink_Listener: String { return self._s[2449]! } + public var SocksProxySetup_Credentials: String { return self._s[2450]! } + public var Preview_SaveGif: String { return self._s[2451]! } + public var Cache_Photos: String { return self._s[2452]! } + public var Channel_AdminLogFilter_EventsCalls: String { return self._s[2453]! } + public var Conversation_ContextMenuCancelEditing: String { return self._s[2454]! } + public var Contacts_FailedToSendInvitesMessage: String { return self._s[2455]! } public func VoiceChat_RemoveAndBanPeerConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2454]!, self._r[2454]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2456]!, self._r[2456]!, [_1, _2]) } - public var Passport_Language_lt: String { return self._s[2455]! } - public var Passport_DeleteDocument: String { return self._s[2457]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2458]! } + public var Passport_Language_lt: String { return self._s[2457]! } + public var Passport_DeleteDocument: String { return self._s[2459]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2460]! } public func Location_ProximityNotification_NotifyLong(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2459]!, self._r[2459]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2461]!, self._r[2461]!, [_1, _2]) } - public var AccessDenied_VideoMessageMicrophone: String { return self._s[2460]! } + public var AccessDenied_VideoMessageMicrophone: String { return self._s[2462]! } public func PeopleNearby_VisibleUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2461]!, self._r[2461]!, [_0]) - } - public var AccessDenied_VideoCallCamera: String { return self._s[2462]! } - public func Channel_AdminLog_MessageDeleted(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2463]!, self._r[2463]!, [_0]) } - public var PhotoEditor_SharpenTool: String { return self._s[2464]! } + public var AccessDenied_VideoCallCamera: String { return self._s[2464]! } + public func Channel_AdminLog_MessageDeleted(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2465]!, self._r[2465]!, [_0]) + } + public var PhotoEditor_SharpenTool: String { return self._s[2466]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2465]!, self._r[2465]!, [_1]) + return formatWithArgumentRanges(self._s[2467]!, self._r[2467]!, [_1]) } - public var DialogList_Unpin: String { return self._s[2466]! } - public var Stickers_NoStickersFound: String { return self._s[2467]! } - public var UserInfo_AddContact: String { return self._s[2469]! } - public var VoiceChat_EditStartTime: String { return self._s[2470]! } + public var DialogList_Unpin: String { return self._s[2468]! } + public var Stickers_NoStickersFound: String { return self._s[2469]! } + public var UserInfo_AddContact: String { return self._s[2471]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2472]!, self._r[2472]!, [_0]) - } - public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2473]!, self._r[2473]!, [_0]) } - public var CallFeedback_VideoReasonDistorted: String { return self._s[2474]! } - public var Tour_Text2: String { return self._s[2475]! } + public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2474]!, self._r[2474]!, [_0]) + } + public var CallFeedback_VideoReasonDistorted: String { return self._s[2475]! } + public var Tour_Text2: String { return self._s[2476]! } public func Conversation_TitleCommentsFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2477]!, self._r[2477]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2478]!, self._r[2478]!, [_1, _2]) } - public var InviteLink_DeleteAllRevokedLinksAlert_Text: String { return self._s[2479]! } - public var Paint_Delete: String { return self._s[2480]! } + public var InviteLink_DeleteAllRevokedLinksAlert_Text: String { return self._s[2480]! } + public var Paint_Delete: String { return self._s[2481]! } public func Call_VoiceChatInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2481]!, self._r[2481]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2482]!, self._r[2482]!, [_1, _2]) } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2482]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2483]! } public func PrivacySettings_LastSeenEverybodyMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2484]!, self._r[2484]!, [_0]) + return formatWithArgumentRanges(self._s[2485]!, self._r[2485]!, [_0]) } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2485]! } - public var Notification_CallOutgoingShort: String { return self._s[2486]! } - public var Checkout_PasswordEntry_Title: String { return self._s[2487]! } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2488]! } - public var Notification_MessageLifetime1m: String { return self._s[2489]! } - public var BlockedUsers_AddNew: String { return self._s[2491]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[2492]! } - public var Settings_SaveEditedPhotos: String { return self._s[2493]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[2494]! } - public var Channel_AboutItem: String { return self._s[2495]! } - public var GroupInfo_InviteLink_RevokeLink: String { return self._s[2496]! } - public var Privacy_Calls_P2PNever: String { return self._s[2498]! } - public var Passport_Language_uk: String { return self._s[2499]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2500]! } - public var Conversation_Moderate_Report: String { return self._s[2501]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2502]! } - public var VoiceOver_Chat_SeenByRecipients: String { return self._s[2503]! } - public var Permissions_SiriText_v0: String { return self._s[2504]! } - public var Theme_Colors_Background: String { return self._s[2505]! } - public var Notification_CallMissed: String { return self._s[2506]! } - public var Stats_ZoomOut: String { return self._s[2507]! } - public var Profile_AddToExisting: String { return self._s[2508]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2511]! } - public var VoiceChat_RemovePeerRemove: String { return self._s[2512]! } - public var Undo_DeletedChannel: String { return self._s[2513]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2486]! } + public var Notification_CallOutgoingShort: String { return self._s[2487]! } + public var Checkout_PasswordEntry_Title: String { return self._s[2488]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2489]! } + public var Notification_MessageLifetime1m: String { return self._s[2490]! } + public var BlockedUsers_AddNew: String { return self._s[2492]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[2493]! } + public var Settings_SaveEditedPhotos: String { return self._s[2494]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[2495]! } + public var Channel_AboutItem: String { return self._s[2496]! } + public var GroupInfo_InviteLink_RevokeLink: String { return self._s[2497]! } + public var Privacy_Calls_P2PNever: String { return self._s[2499]! } + public var Passport_Language_uk: String { return self._s[2500]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2501]! } + public var Conversation_Moderate_Report: String { return self._s[2502]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2503]! } + public var VoiceOver_Chat_SeenByRecipients: String { return self._s[2504]! } + public var Permissions_SiriText_v0: String { return self._s[2505]! } + public var Theme_Colors_Background: String { return self._s[2506]! } + public var Notification_CallMissed: String { return self._s[2507]! } + public var Stats_ZoomOut: String { return self._s[2508]! } + public var Profile_AddToExisting: String { return self._s[2509]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2512]! } + public var VoiceChat_RemovePeerRemove: String { return self._s[2513]! } + public var Undo_DeletedChannel: String { return self._s[2514]! } public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2514]!, self._r[2514]!, [_0]) + return formatWithArgumentRanges(self._s[2515]!, self._r[2515]!, [_0]) } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2515]! } - public var Map_LiveLocationGroupDescription: String { return self._s[2516]! } - public var Passport_InfoFAQ_URL: String { return self._s[2517]! } - public var IntentsSettings_SuggestedChats: String { return self._s[2520]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2516]! } + public var Map_LiveLocationGroupDescription: String { return self._s[2517]! } + public var Passport_InfoFAQ_URL: String { return self._s[2518]! } + public var IntentsSettings_SuggestedChats: String { return self._s[2521]! } public func PUSH_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2521]!, self._r[2521]!, [_1]) + return formatWithArgumentRanges(self._s[2522]!, self._r[2522]!, [_1]) } - public var State_connecting: String { return self._s[2522]! } - public var Passport_Identity_Country: String { return self._s[2523]! } - public var Passport_PasswordDescription: String { return self._s[2524]! } - public var ChatList_PsaLabel_covid: String { return self._s[2525]! } + public var State_connecting: String { return self._s[2523]! } + public var Passport_Identity_Country: String { return self._s[2524]! } + public var Passport_PasswordDescription: String { return self._s[2525]! } + public var ChatList_PsaLabel_covid: String { return self._s[2526]! } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2526]!, self._r[2526]!, [_1]) + return formatWithArgumentRanges(self._s[2527]!, self._r[2527]!, [_1]) } - public var Contacts_AddPeopleNearby: String { return self._s[2527]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[2528]! } - public var ClearCache_Description: String { return self._s[2529]! } - public var Localization_LanguageName: String { return self._s[2530]! } + public var Contacts_AddPeopleNearby: String { return self._s[2528]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[2529]! } + public var ClearCache_Description: String { return self._s[2530]! } + public var Localization_LanguageName: String { return self._s[2531]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2531]!, self._r[2531]!, [_0]) + return formatWithArgumentRanges(self._s[2532]!, self._r[2532]!, [_0]) } - public var Conversation_AddMembers: String { return self._s[2532]! } - public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[2533]! } - public var UserInfo_CreateNewContact: String { return self._s[2534]! } - public var Channel_Stickers_NotFound: String { return self._s[2536]! } - public var Message_FakeAccount: String { return self._s[2537]! } - public var Watch_Message_Poll: String { return self._s[2538]! } - public var Group_Members_Title: String { return self._s[2539]! } - public var Privacy_Forwards_WhoCanForward: String { return self._s[2540]! } + public var Conversation_AddMembers: String { return self._s[2533]! } + public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[2534]! } + public var UserInfo_CreateNewContact: String { return self._s[2535]! } + public var Channel_Stickers_NotFound: String { return self._s[2537]! } + public var Message_FakeAccount: String { return self._s[2538]! } + public var Watch_Message_Poll: String { return self._s[2539]! } + public var Group_Members_Title: String { return self._s[2540]! } + public var Privacy_Forwards_WhoCanForward: String { return self._s[2541]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2541]!, self._r[2541]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2542]!, self._r[2542]!, [_0, _1]) } - public var BroadcastGroups_Convert: String { return self._s[2542]! } - public var Login_InfoDeletePhoto: String { return self._s[2543]! } - public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[2544]! } - public var InstantPage_FeedbackButton: String { return self._s[2545]! } - public var Appearance_PreviewReplyText: String { return self._s[2546]! } - public var Passport_FieldPhoneHelp: String { return self._s[2547]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2548]! } - public var Media_SendingOptionsTooltip: String { return self._s[2549]! } - public var ScheduledMessages_ScheduledOnline: String { return self._s[2550]! } - public var Notifications_Badge: String { return self._s[2551]! } - public var VoiceOver_Chat_VideoMessage: String { return self._s[2552]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2553]! } + public var BroadcastGroups_Convert: String { return self._s[2543]! } + public var Login_InfoDeletePhoto: String { return self._s[2544]! } + public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[2545]! } + public var InstantPage_FeedbackButton: String { return self._s[2546]! } + public var Appearance_PreviewReplyText: String { return self._s[2547]! } + public var Passport_FieldPhoneHelp: String { return self._s[2548]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2549]! } + public var Media_SendingOptionsTooltip: String { return self._s[2550]! } + public var ScheduledMessages_ScheduledOnline: String { return self._s[2551]! } + public var Notifications_Badge: String { return self._s[2552]! } + public var VoiceOver_Chat_VideoMessage: String { return self._s[2553]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2554]! } public func Notification_PinnedPhotoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2555]!, self._r[2555]!, [_0]) + return formatWithArgumentRanges(self._s[2556]!, self._r[2556]!, [_0]) } - public var Passport_InfoLearnMore: String { return self._s[2556]! } - public var EnterPasscode_EnterTitle: String { return self._s[2557]! } - public var Appearance_EditTheme: String { return self._s[2558]! } - public var EditTheme_Expand_BottomInfo: String { return self._s[2559]! } - public var Stats_FollowersTitle: String { return self._s[2560]! } - public var Passport_Identity_SurnamePlaceholder: String { return self._s[2561]! } - public var Channel_Subscribers_Title: String { return self._s[2562]! } - public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[2563]! } - public var ChatImportActivity_ErrorGeneric: String { return self._s[2564]! } - public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[2565]! } - public var EditTheme_Create_Preview_IncomingText: String { return self._s[2566]! } - public var Conversation_AddToReadingList: String { return self._s[2567]! } - public var VoiceChat_EditBioPlaceholder: String { return self._s[2568]! } + public var Passport_InfoLearnMore: String { return self._s[2557]! } + public var EnterPasscode_EnterTitle: String { return self._s[2558]! } + public var Appearance_EditTheme: String { return self._s[2559]! } + public var EditTheme_Expand_BottomInfo: String { return self._s[2560]! } + public var Stats_FollowersTitle: String { return self._s[2561]! } + public var Passport_Identity_SurnamePlaceholder: String { return self._s[2562]! } + public var Channel_Subscribers_Title: String { return self._s[2563]! } + public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[2564]! } + public var ChatImportActivity_ErrorGeneric: String { return self._s[2565]! } + public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[2566]! } + public var EditTheme_Create_Preview_IncomingText: String { return self._s[2567]! } + public var Conversation_AddToReadingList: String { return self._s[2568]! } + public var VoiceChat_EditBioPlaceholder: String { return self._s[2569]! } public func Notifications_ExceptionsChangeSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2569]!, self._r[2569]!, [_0]) + return formatWithArgumentRanges(self._s[2570]!, self._r[2570]!, [_0]) } - public var Group_AdminLog_EmptyText: String { return self._s[2570]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[2571]! } - public var Watch_Location_Current: String { return self._s[2572]! } - public var PrivacyPolicy_Title: String { return self._s[2573]! } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2580]! } - public var Channel_TypeSetup_Title: String { return self._s[2584]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[2585]! } - public var Passport_Language_ja: String { return self._s[2586]! } - public var ReportPeer_ReasonSpam: String { return self._s[2587]! } - public var Widget_GalleryDescription: String { return self._s[2588]! } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[2589]! } - public var VoiceChat_ChangePhoto: String { return self._s[2591]! } - public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[2592]! } - public var Channel_AdminLog_ChangeInfo: String { return self._s[2593]! } - public var ChatListFolder_NameNonContacts: String { return self._s[2594]! } + public var Group_AdminLog_EmptyText: String { return self._s[2571]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[2572]! } + public var Watch_Location_Current: String { return self._s[2573]! } + public var PrivacyPolicy_Title: String { return self._s[2574]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2581]! } + public var Channel_TypeSetup_Title: String { return self._s[2585]! } + public var Appearance_PreviewReplyAuthor: String { return self._s[2586]! } + public var Passport_Language_ja: String { return self._s[2587]! } + public var ReportPeer_ReasonSpam: String { return self._s[2588]! } + public var Widget_GalleryDescription: String { return self._s[2589]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[2590]! } + public var VoiceChat_ChangePhoto: String { return self._s[2592]! } + public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[2593]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[2594]! } + public var ChatListFolder_NameNonContacts: String { return self._s[2595]! } public func InviteLink_ExpiresIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2595]!, self._r[2595]!, [_0]) + return formatWithArgumentRanges(self._s[2596]!, self._r[2596]!, [_0]) } - public var Call_Audio: String { return self._s[2596]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2597]! } - public var ChatList_Search_NoResultsFitlerFiles: String { return self._s[2598]! } - public var Settings_PrivacySettings: String { return self._s[2599]! } - public var InviteLink_UsageLimitReached: String { return self._s[2600]! } - public var Stats_Followers: String { return self._s[2601]! } - public var Notifications_AddExceptionTitle: String { return self._s[2602]! } - public var TwoFactorSetup_Password_Title: String { return self._s[2603]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2604]! } - public var OldChannels_NoticeText: String { return self._s[2605]! } - public var Conversation_SavedMessages: String { return self._s[2606]! } - public var Intents_ErrorLockedText: String { return self._s[2607]! } + public var Call_Audio: String { return self._s[2597]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2598]! } + public var ChatList_Search_NoResultsFitlerFiles: String { return self._s[2599]! } + public var Settings_PrivacySettings: String { return self._s[2600]! } + public var InviteLink_UsageLimitReached: String { return self._s[2601]! } + public var Stats_Followers: String { return self._s[2602]! } + public var Notifications_AddExceptionTitle: String { return self._s[2603]! } + public var TwoFactorSetup_Password_Title: String { return self._s[2604]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2605]! } + public var OldChannels_NoticeText: String { return self._s[2606]! } + public var Conversation_SavedMessages: String { return self._s[2607]! } + public var Intents_ErrorLockedText: String { return self._s[2608]! } public func Conversation_PeerNearbyTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2609]!, self._r[2609]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2610]!, self._r[2610]!, [_1, _2]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2610]! } - public var Appearance_ThemeNightBlue: String { return self._s[2611]! } - public var Notification_ChannelInviterSelf: String { return self._s[2612]! } - public var Conversation_ForwardTooltip_SavedMessages_Many: String { return self._s[2613]! } - public var InviteLink_Create_TimeLimitExpiryDateNever: String { return self._s[2615]! } - public var Watch_UserInfo_Service: String { return self._s[2616]! } - public var ChatList_Context_Back: String { return self._s[2617]! } - public var Passport_Email_Title: String { return self._s[2618]! } - public var Stats_GroupTopAdmin_Promote: String { return self._s[2619]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2611]! } + public var Appearance_ThemeNightBlue: String { return self._s[2612]! } + public var Notification_ChannelInviterSelf: String { return self._s[2613]! } + public var Conversation_ForwardTooltip_SavedMessages_Many: String { return self._s[2614]! } + public var InviteLink_Create_TimeLimitExpiryDateNever: String { return self._s[2616]! } + public var Watch_UserInfo_Service: String { return self._s[2617]! } + public var ChatList_Context_Back: String { return self._s[2618]! } + public var Passport_Email_Title: String { return self._s[2619]! } + public var Stats_GroupTopAdmin_Promote: String { return self._s[2620]! } public func PUSH_PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2620]!, self._r[2620]!, [_1]) + return formatWithArgumentRanges(self._s[2621]!, self._r[2621]!, [_1]) } - public var Conversation_UnsupportedMedia: String { return self._s[2621]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2622]! } - public var Privacy_TopPeersHelp: String { return self._s[2624]! } - public var Privacy_Forwards_AlwaysLink: String { return self._s[2625]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2626]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[2627]! } + public var Conversation_UnsupportedMedia: String { return self._s[2622]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2623]! } + public var Privacy_TopPeersHelp: String { return self._s[2625]! } + public var Privacy_Forwards_AlwaysLink: String { return self._s[2626]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2627]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[2628]! } public func Location_ProximityNotification_AlreadyClose(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2628]!, self._r[2628]!, [_0]) + return formatWithArgumentRanges(self._s[2629]!, self._r[2629]!, [_0]) } - public var Notification_PassportValueProofOfAddress: String { return self._s[2629]! } - public var Map_Map: String { return self._s[2630]! } - public var WallpaperSearch_ColorBlue: String { return self._s[2631]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[2632]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2633]! } - public var ChatList_Search_FilterMusic: String { return self._s[2634]! } - public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[2635]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[2636]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[2638]! } + public var Notification_PassportValueProofOfAddress: String { return self._s[2630]! } + public var Map_Map: String { return self._s[2631]! } + public var WallpaperSearch_ColorBlue: String { return self._s[2632]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[2633]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2634]! } + public var ChatList_Search_FilterMusic: String { return self._s[2635]! } + public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[2636]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[2637]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[2639]! } public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2639]!, self._r[2639]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2640]!, self._r[2640]!, [_1, _2]) } public func Notification_ChangedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2640]!, self._r[2640]!, [_0]) + return formatWithArgumentRanges(self._s[2641]!, self._r[2641]!, [_0]) } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2641]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[2642]! } - public var VoiceOver_ChatList_MessageEmpty: String { return self._s[2645]! } - public var GroupInfo_Location: String { return self._s[2646]! } - public var Passport_Language_ka: String { return self._s[2647]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2642]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[2643]! } + public var VoiceOver_ChatList_MessageEmpty: String { return self._s[2646]! } + public var GroupInfo_Location: String { return self._s[2647]! } + public var Passport_Language_ka: String { return self._s[2648]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2648]!, self._r[2648]!, [_0]) + return formatWithArgumentRanges(self._s[2649]!, self._r[2649]!, [_0]) } - public var Conversation_ContextMenuOpenChannelProfile: String { return self._s[2649]! } - public var ChatImport_SelectionConfirmationAlertTitle: String { return self._s[2651]! } - public var ScheduledMessages_ClearAllConfirmation: String { return self._s[2653]! } - public var DialogList_SearchSectionRecent: String { return self._s[2654]! } - public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[2655]! } - public var Conversation_Timer_Send: String { return self._s[2656]! } + public var Conversation_ContextMenuOpenChannelProfile: String { return self._s[2650]! } + public var ChatImport_SelectionConfirmationAlertTitle: String { return self._s[2652]! } + public var ScheduledMessages_ClearAllConfirmation: String { return self._s[2654]! } + public var DialogList_SearchSectionRecent: String { return self._s[2655]! } + public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[2656]! } + public var Conversation_Timer_Send: String { return self._s[2657]! } public func VoiceOver_ScrollStatus(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2658]!, self._r[2658]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2659]!, self._r[2659]!, [_1, _2]) } - public var ChatState_Updating: String { return self._s[2659]! } - public var ChannelMembers_WhoCanAddMembers: String { return self._s[2660]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2661]! } - public var TwoStepAuth_RecoveryFailed: String { return self._s[2662]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2663]! } - public var InviteLink_Create_TimeLimitExpiryTime: String { return self._s[2664]! } - public var ChannelInfo_InviteLink_RevokeAlert_Text: String { return self._s[2665]! } - public var ChatList_Search_NoResults: String { return self._s[2666]! } - public var ChatListFolderSettings_AddRecommended: String { return self._s[2668]! } - public var ChangePhoneNumberCode_Called: String { return self._s[2669]! } - public var PeerInfo_GroupAboutItem: String { return self._s[2670]! } - public var VoiceOver_SelfDestructTimerOff: String { return self._s[2672]! } + public var ChatState_Updating: String { return self._s[2660]! } + public var ChannelMembers_WhoCanAddMembers: String { return self._s[2661]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2662]! } + public var TwoStepAuth_RecoveryFailed: String { return self._s[2663]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2664]! } + public var InviteLink_Create_TimeLimitExpiryTime: String { return self._s[2665]! } + public var ChannelInfo_InviteLink_RevokeAlert_Text: String { return self._s[2666]! } + public var ChatList_Search_NoResults: String { return self._s[2667]! } + public var ChatListFolderSettings_AddRecommended: String { return self._s[2669]! } + public var ChangePhoneNumberCode_Called: String { return self._s[2670]! } + public var PeerInfo_GroupAboutItem: String { return self._s[2671]! } + public var VoiceOver_SelfDestructTimerOff: String { return self._s[2673]! } public func Channel_AdminLog_DeletedInviteLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2673]!, self._r[2673]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2674]!, self._r[2674]!, [_1, _2]) } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2674]!, self._r[2674]!, [_0]) + return formatWithArgumentRanges(self._s[2675]!, self._r[2675]!, [_0]) } - public var PrivacySettings_AuthSessions: String { return self._s[2675]! } - public var Passport_Address_Postcode: String { return self._s[2676]! } - public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2677]! } + public var PrivacySettings_AuthSessions: String { return self._s[2676]! } + public var Passport_Address_Postcode: String { return self._s[2677]! } + public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2678]! } public func VoiceChat_ForwardTooltip_ManyChats(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2678]!, self._r[2678]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2679]!, self._r[2679]!, [_0, _1]) } - public var Passport_Address_Street2Placeholder: String { return self._s[2679]! } - public var Group_Location_Title: String { return self._s[2680]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[2681]! } - public var PeopleNearby_UsersEmpty: String { return self._s[2682]! } - public var Conversation_ContextMenuSpeak: String { return self._s[2684]! } - public var SettingsSearch_Synonyms_Data_Title: String { return self._s[2685]! } + public var Passport_Address_Street2Placeholder: String { return self._s[2680]! } + public var Group_Location_Title: String { return self._s[2681]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[2682]! } + public var PeopleNearby_UsersEmpty: String { return self._s[2683]! } + public var Conversation_ContextMenuSpeak: String { return self._s[2685]! } + public var SettingsSearch_Synonyms_Data_Title: String { return self._s[2686]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2687]!, self._r[2687]!, [_0]) + return formatWithArgumentRanges(self._s[2688]!, self._r[2688]!, [_0]) } - public var Proxy_TooltipUnavailable: String { return self._s[2688]! } - public var Map_Search: String { return self._s[2689]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[2690]! } - public var Conversation_SearchByName_Prefix: String { return self._s[2691]! } + public var Proxy_TooltipUnavailable: String { return self._s[2689]! } + public var Map_Search: String { return self._s[2690]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[2691]! } + public var Conversation_SearchByName_Prefix: String { return self._s[2692]! } public func Channel_AdminLog_MessageToggleSignaturesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2692]!, self._r[2692]!, [_0]) + return formatWithArgumentRanges(self._s[2693]!, self._r[2693]!, [_0]) } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[2693]! } - public var ProfilePhoto_MainPhoto: String { return self._s[2694]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2695]! } - public var SharedMedia_EmptyMusicText: String { return self._s[2696]! } - public var ChatSettings_AutoDownloadPhotos: String { return self._s[2697]! } - public var NetworkUsageSettings_BytesReceived: String { return self._s[2698]! } - public var Channel_AdminLog_EmptyText: String { return self._s[2699]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[2700]! } - public var Undo_ChatDeletedForBothSides: String { return self._s[2701]! } - public var Notifications_GroupNotifications: String { return self._s[2702]! } - public var AccessDenied_SaveMedia: String { return self._s[2703]! } - public var InviteLink_Create_Revoke: String { return self._s[2704]! } - public var GroupInfo_LabelOwner: String { return self._s[2705]! } - public var Passport_Language_id: String { return self._s[2706]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2707]! } - public var Conversation_UnpinMessageAlert: String { return self._s[2708]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[2694]! } + public var ProfilePhoto_MainPhoto: String { return self._s[2695]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2696]! } + public var SharedMedia_EmptyMusicText: String { return self._s[2697]! } + public var ChatSettings_AutoDownloadPhotos: String { return self._s[2698]! } + public var NetworkUsageSettings_BytesReceived: String { return self._s[2699]! } + public var Channel_AdminLog_EmptyText: String { return self._s[2700]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[2701]! } + public var Undo_ChatDeletedForBothSides: String { return self._s[2702]! } + public var Notifications_GroupNotifications: String { return self._s[2703]! } + public var AccessDenied_SaveMedia: String { return self._s[2704]! } + public var InviteLink_Create_Revoke: String { return self._s[2705]! } + public var GroupInfo_LabelOwner: String { return self._s[2706]! } + public var Passport_Language_id: String { return self._s[2707]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2708]! } + public var Conversation_UnpinMessageAlert: String { return self._s[2709]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2709]!, self._r[2709]!, [_0]) - } - public func Call_RemoteVideoPaused(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2710]!, self._r[2710]!, [_0]) } - public var TwoFactorSetup_Done_Text: String { return self._s[2711]! } + public func Call_RemoteVideoPaused(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2711]!, self._r[2711]!, [_0]) + } + public var TwoFactorSetup_Done_Text: String { return self._s[2712]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2712]!, self._r[2712]!, [_0]) + return formatWithArgumentRanges(self._s[2713]!, self._r[2713]!, [_0]) } - public var NetworkUsageSettings_BytesSent: String { return self._s[2713]! } - public var Conversation_AudioRateTooltipNormal: String { return self._s[2714]! } - public var OwnershipTransfer_Transfer: String { return self._s[2715]! } + public var NetworkUsageSettings_BytesSent: String { return self._s[2714]! } + public var Conversation_AudioRateTooltipNormal: String { return self._s[2715]! } + public var OwnershipTransfer_Transfer: String { return self._s[2716]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2716]!, self._r[2716]!, [_0]) + return formatWithArgumentRanges(self._s[2717]!, self._r[2717]!, [_0]) } - public var Passport_Language_pt: String { return self._s[2717]! } - public var PrivacySettings_WebSessions: String { return self._s[2718]! } - public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[2720]! } - public var TwoFactorSetup_Hint_Title: String { return self._s[2721]! } + public var Passport_Language_pt: String { return self._s[2718]! } + public var PrivacySettings_WebSessions: String { return self._s[2719]! } + public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[2721]! } + public var TwoFactorSetup_Hint_Title: String { return self._s[2722]! } public func Notification_Joined(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2722]!, self._r[2722]!, [_0]) + return formatWithArgumentRanges(self._s[2723]!, self._r[2723]!, [_0]) } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[2723]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2724]! } - public var AutoNightTheme_Scheduled: String { return self._s[2725]! } - public var CreatePoll_ExplanationHeader: String { return self._s[2726]! } - public var Calls_TabTitle: String { return self._s[2727]! } - public var VoiceChat_RecordingInProgress: String { return self._s[2728]! } - public var ChatList_UndoArchiveHiddenText: String { return self._s[2729]! } - public var Notification_VideoCallCanceled: String { return self._s[2730]! } - public var Login_CodeSentInternal: String { return self._s[2731]! } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[2732]! } - public var Call_RecordingDisabledMessage: String { return self._s[2734]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[2724]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2725]! } + public var AutoNightTheme_Scheduled: String { return self._s[2726]! } + public var CreatePoll_ExplanationHeader: String { return self._s[2727]! } + public var Calls_TabTitle: String { return self._s[2728]! } + public var VoiceChat_RecordingInProgress: String { return self._s[2729]! } + public var ChatList_UndoArchiveHiddenText: String { return self._s[2730]! } + public var Notification_VideoCallCanceled: String { return self._s[2731]! } + public var Login_CodeSentInternal: String { return self._s[2732]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[2733]! } + public var Call_RecordingDisabledMessage: String { return self._s[2735]! } public func VoiceChat_RemovedPeerText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2735]!, self._r[2735]!, [_0]) + return formatWithArgumentRanges(self._s[2736]!, self._r[2736]!, [_0]) } - public var Conversation_UsersTooMuchError: String { return self._s[2737]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[2738]! } - public var Channel_Info_Stickers: String { return self._s[2739]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[2740]! } + public var Conversation_UsersTooMuchError: String { return self._s[2738]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[2739]! } + public var Channel_Info_Stickers: String { return self._s[2740]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[2741]! } public func Conversation_PeerNearbyDistance(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2741]!, self._r[2741]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2742]!, self._r[2742]!, [_1, _2]) } - public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[2742]! } + public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[2743]! } public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2743]!, self._r[2743]!, [_0]) + return formatWithArgumentRanges(self._s[2744]!, self._r[2744]!, [_0]) } - public var Passport_DiscardMessageTitle: String { return self._s[2744]! } - public var Call_VoiceOver_VideoCallIncoming: String { return self._s[2745]! } - public var Localization_LanguageOther: String { return self._s[2746]! } - public var Conversation_EncryptionCanceled: String { return self._s[2747]! } - public var ChatSettings_AutomaticPhotoDownload: String { return self._s[2748]! } - public var ReportPeer_ReasonFake: String { return self._s[2750]! } + public var Passport_DiscardMessageTitle: String { return self._s[2745]! } + public var Call_VoiceOver_VideoCallIncoming: String { return self._s[2746]! } + public var Localization_LanguageOther: String { return self._s[2747]! } + public var Conversation_EncryptionCanceled: String { return self._s[2748]! } + public var ChatSettings_AutomaticPhotoDownload: String { return self._s[2749]! } + public var ReportPeer_ReasonFake: String { return self._s[2751]! } public func Notification_SecretChatMessageScreenshot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2751]!, self._r[2751]!, [_0]) + return formatWithArgumentRanges(self._s[2752]!, self._r[2752]!, [_0]) } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[2753]! } - public var SocksProxySetup_SavedProxies: String { return self._s[2754]! } - public var InviteLink_Create_UsersLimitNumberOfUsers: String { return self._s[2755]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[2754]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2755]! } + public var InviteLink_Create_UsersLimitNumberOfUsers: String { return self._s[2756]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2756]!, self._r[2756]!, [_1]) + return formatWithArgumentRanges(self._s[2757]!, self._r[2757]!, [_1]) } - public var Conversation_ScamWarning: String { return self._s[2758]! } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[2759]! } - public var LocalGroup_Title: String { return self._s[2760]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[2762]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[2763]! } - public var VoiceChat_SelectAccount: String { return self._s[2764]! } - public var Login_PhoneFloodError: String { return self._s[2765]! } - public var Conversation_PinMessageAlert_PinAndNotifyMembers: String { return self._s[2766]! } - public var Username_InvalidTaken: String { return self._s[2768]! } - public var SocksProxySetup_AddProxy: String { return self._s[2770]! } - public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[2771]! } - public var MediaPicker_UngroupDescription: String { return self._s[2772]! } - public var Login_CodeExpired: String { return self._s[2773]! } - public var Localization_ChooseLanguage: String { return self._s[2774]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[2775]! } + public var Conversation_ScamWarning: String { return self._s[2759]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[2760]! } + public var LocalGroup_Title: String { return self._s[2761]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[2763]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[2764]! } + public var VoiceChat_SelectAccount: String { return self._s[2765]! } + public var Login_PhoneFloodError: String { return self._s[2766]! } + public var Conversation_PinMessageAlert_PinAndNotifyMembers: String { return self._s[2767]! } + public var Username_InvalidTaken: String { return self._s[2769]! } + public var SocksProxySetup_AddProxy: String { return self._s[2771]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[2772]! } + public var MediaPicker_UngroupDescription: String { return self._s[2773]! } + public var Login_CodeExpired: String { return self._s[2774]! } + public var Localization_ChooseLanguage: String { return self._s[2775]! } + public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[2776]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2776]!, self._r[2776]!, [_0]) - } - public func Channel_DiscussionGroup_HeaderSet(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2777]!, self._r[2777]!, [_0]) } - public var ReportPeer_ReasonOther_Title: String { return self._s[2779]! } - public var Conversation_ScheduleMessage_Title: String { return self._s[2780]! } + public func Channel_DiscussionGroup_HeaderSet(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2778]!, self._r[2778]!, [_0]) + } + public var ReportPeer_ReasonOther_Title: String { return self._s[2780]! } + public var Conversation_ScheduleMessage_Title: String { return self._s[2781]! } public func VoiceChat_UserInvited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2781]!, self._r[2781]!, [_0]) + return formatWithArgumentRanges(self._s[2782]!, self._r[2782]!, [_0]) } - public var PeerInfo_ButtonDiscuss: String { return self._s[2782]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[2783]! } - public var Call_StatusNoAnswer: String { return self._s[2784]! } - public var ScheduledMessages_DeleteMany: String { return self._s[2786]! } - public var Channel_DiscussionGroupInfo: String { return self._s[2787]! } - public var Conversation_UnarchiveDone: String { return self._s[2788]! } - public var LogoutOptions_AddAccountText: String { return self._s[2789]! } - public var Message_PinnedContactMessage: String { return self._s[2790]! } + public var PeerInfo_ButtonDiscuss: String { return self._s[2783]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[2784]! } + public var Call_StatusNoAnswer: String { return self._s[2785]! } + public var ScheduledMessages_DeleteMany: String { return self._s[2787]! } + public var Channel_DiscussionGroupInfo: String { return self._s[2788]! } + public var Conversation_UnarchiveDone: String { return self._s[2789]! } + public var LogoutOptions_AddAccountText: String { return self._s[2790]! } + public var Message_PinnedContactMessage: String { return self._s[2791]! } public func ChatList_DeleteAndLeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2791]!, self._r[2791]!, [_0]) + return formatWithArgumentRanges(self._s[2792]!, self._r[2792]!, [_0]) } - public var VoiceChat_EditBioTitle: String { return self._s[2793]! } + public var VoiceChat_EditBioTitle: String { return self._s[2794]! } public func FileSize_GB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2794]!, self._r[2794]!, [_0]) + return formatWithArgumentRanges(self._s[2795]!, self._r[2795]!, [_0]) } - public var Stats_GroupLanguagesTitle: String { return self._s[2795]! } - public var Passport_FieldAddressHelp: String { return self._s[2796]! } + public var Stats_GroupLanguagesTitle: String { return self._s[2796]! } + public var Passport_FieldAddressHelp: String { return self._s[2797]! } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2797]!, self._r[2797]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2798]!, self._r[2798]!, [_1, _2]) } - public var ChatSettings_OpenLinksIn: String { return self._s[2799]! } - public var TwoFactorSetup_Hint_SkipAction: String { return self._s[2800]! } - public var Message_Photo: String { return self._s[2801]! } - public var Media_LimitedAccessManage: String { return self._s[2803]! } - public var MediaPicker_AddCaption: String { return self._s[2804]! } - public var LogoutOptions_Title: String { return self._s[2805]! } + public var ChatSettings_OpenLinksIn: String { return self._s[2800]! } + public var TwoFactorSetup_Hint_SkipAction: String { return self._s[2801]! } + public var Message_Photo: String { return self._s[2802]! } + public var Media_LimitedAccessManage: String { return self._s[2804]! } + public var MediaPicker_AddCaption: String { return self._s[2805]! } + public var LogoutOptions_Title: String { return self._s[2806]! } public func PUSH_PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2806]!, self._r[2806]!, [_1]) + return formatWithArgumentRanges(self._s[2807]!, self._r[2807]!, [_1]) } - public var Conversation_StatusKickedFromGroup: String { return self._s[2807]! } - public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[2808]! } - public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2809]! } - public var Channel_AdminLogFilter_Title: String { return self._s[2810]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2811]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2812]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2813]! } - public var ChannelIntro_Title: String { return self._s[2814]! } - public var Stats_Message_Views: String { return self._s[2815]! } - public var Stickers_Install: String { return self._s[2816]! } + public var Conversation_StatusKickedFromGroup: String { return self._s[2808]! } + public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[2809]! } + public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2810]! } + public var Channel_AdminLogFilter_Title: String { return self._s[2811]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2812]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2813]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2814]! } + public var ChannelIntro_Title: String { return self._s[2815]! } + public var Stats_Message_Views: String { return self._s[2816]! } + public var Stickers_Install: String { return self._s[2817]! } public func VoiceOver_Chat_FileFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2817]!, self._r[2817]!, [_0]) + return formatWithArgumentRanges(self._s[2818]!, self._r[2818]!, [_0]) } - public var EditTheme_Create_Preview_IncomingReplyText: String { return self._s[2818]! } - public var Conversation_SwipeToReplyHintTitle: String { return self._s[2820]! } - public var Settings_Username: String { return self._s[2823]! } - public var FastTwoStepSetup_Title: String { return self._s[2824]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2825]! } - public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[2826]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2828]! } - public var CallFeedback_ReasonEcho: String { return self._s[2829]! } + public var EditTheme_Create_Preview_IncomingReplyText: String { return self._s[2819]! } + public var Conversation_SwipeToReplyHintTitle: String { return self._s[2821]! } + public var Settings_Username: String { return self._s[2824]! } + public var FastTwoStepSetup_Title: String { return self._s[2825]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2826]! } + public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[2827]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2829]! } + public var CallFeedback_ReasonEcho: String { return self._s[2830]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2830]!, self._r[2830]!, [_0]) + return formatWithArgumentRanges(self._s[2831]!, self._r[2831]!, [_0]) } - public var Conversation_OpenBotLinkTitle: String { return self._s[2831]! } - public var SocksProxySetup_Title: String { return self._s[2832]! } - public var CallFeedback_Success: String { return self._s[2833]! } - public var WallpaperPreview_SwipeTopText: String { return self._s[2835]! } - public var InstantPage_AutoNightTheme: String { return self._s[2837]! } - public var Watch_Conversation_Reply: String { return self._s[2838]! } - public var VoiceChat_Share: String { return self._s[2840]! } - public var VoiceChat_AddPhoto: String { return self._s[2841]! } - public var Chat_PanelUnpinAllMessages: String { return self._s[2842]! } - public var WallpaperPreview_Pattern: String { return self._s[2843]! } - public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[2844]! } + public var Conversation_OpenBotLinkTitle: String { return self._s[2832]! } + public var SocksProxySetup_Title: String { return self._s[2833]! } + public var CallFeedback_Success: String { return self._s[2834]! } + public var WallpaperPreview_SwipeTopText: String { return self._s[2836]! } + public var InstantPage_AutoNightTheme: String { return self._s[2838]! } + public var Watch_Conversation_Reply: String { return self._s[2839]! } + public var VoiceChat_Share: String { return self._s[2841]! } + public var VoiceChat_AddPhoto: String { return self._s[2842]! } + public var Chat_PanelUnpinAllMessages: String { return self._s[2843]! } + public var WallpaperPreview_Pattern: String { return self._s[2844]! } + public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[2845]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2845]!, self._r[2845]!, [_0]) + return formatWithArgumentRanges(self._s[2846]!, self._r[2846]!, [_0]) } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[2846]! } - public var VoiceOver_Chat_GroupInfo: String { return self._s[2847]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[2849]! } - public var Update_Title: String { return self._s[2850]! } - public var Conversation_ShareMyPhoneNumber: String { return self._s[2851]! } - public var WallpaperPreview_CropTopText: String { return self._s[2854]! } - public var Channel_EditMessageErrorGeneric: String { return self._s[2855]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2856]! } - public var ChatListFolder_DiscardCancel: String { return self._s[2857]! } - public var Message_PinnedPhotoMessage: String { return self._s[2858]! } - public var Appearance_ThemeDayClassic: String { return self._s[2859]! } - public var VoiceChat_ChangeName: String { return self._s[2860]! } - public var SocksProxySetup_ProxySocks5: String { return self._s[2861]! } - public var VoiceChat_DisplayAsInfo: String { return self._s[2863]! } - public var AccessDenied_Wallpapers: String { return self._s[2868]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[2847]! } + public var VoiceOver_Chat_GroupInfo: String { return self._s[2848]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[2850]! } + public var Update_Title: String { return self._s[2851]! } + public var Conversation_ShareMyPhoneNumber: String { return self._s[2852]! } + public var WallpaperPreview_CropTopText: String { return self._s[2855]! } + public var Channel_EditMessageErrorGeneric: String { return self._s[2856]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2857]! } + public var ChatListFolder_DiscardCancel: String { return self._s[2858]! } + public var Message_PinnedPhotoMessage: String { return self._s[2859]! } + public var Appearance_ThemeDayClassic: String { return self._s[2860]! } + public var VoiceChat_ChangeName: String { return self._s[2861]! } + public var SocksProxySetup_ProxySocks5: String { return self._s[2862]! } + public var VoiceChat_DisplayAsInfo: String { return self._s[2864]! } + public var AccessDenied_Wallpapers: String { return self._s[2869]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2869]!, self._r[2869]!, [_0]) + return formatWithArgumentRanges(self._s[2870]!, self._r[2870]!, [_0]) } - public var Weekday_Sunday: String { return self._s[2870]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[2872]! } - public var PeopleNearby_MakeVisibleDescription: String { return self._s[2873]! } - public var AccessDenied_LocationDisabled: String { return self._s[2874]! } - public var Tour_Text3: String { return self._s[2875]! } - public var AuthSessions_AddDevice_ScanTitle: String { return self._s[2876]! } + public var Weekday_Sunday: String { return self._s[2871]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[2873]! } + public var PeopleNearby_MakeVisibleDescription: String { return self._s[2874]! } + public var AccessDenied_LocationDisabled: String { return self._s[2875]! } + public var Tour_Text3: String { return self._s[2876]! } + public var AuthSessions_AddDevice_ScanTitle: String { return self._s[2877]! } public func Time_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2877]!, self._r[2877]!, [_0]) + return formatWithArgumentRanges(self._s[2878]!, self._r[2878]!, [_0]) } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2878]! } - public var Conversation_ClearCache: String { return self._s[2879]! } - public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[2880]! } - public var ChatList_Tabs_AllChats: String { return self._s[2881]! } - public var DialogList_RecentTitlePeople: String { return self._s[2882]! } - public var Stickers_AddToFavorites: String { return self._s[2883]! } - public var ChatList_Context_RemoveFromFolder: String { return self._s[2884]! } - public var VoiceChat_CancelSpeakRequest: String { return self._s[2885]! } - public var Settings_RemoveVideo: String { return self._s[2886]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2887]! } - public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[2888]! } - public var VoiceOver_Chat_YourFile: String { return self._s[2889]! } - public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[2891]! } - public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[2892]! } - public var VoiceChat_TapToAddBio: String { return self._s[2893]! } - public var Channel_AdminLog_AddMembers: String { return self._s[2894]! } - public var Map_SendThisLocation: String { return self._s[2896]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[2898]! } - public var IntentsSettings_SuggestedChatsPrivateChats: String { return self._s[2899]! } - public var CloudStorage_Title: String { return self._s[2900]! } - public var TwoFactorSetup_Password_Action: String { return self._s[2901]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[2902]! } - public var Passport_Address_EditTemporaryRegistration: String { return self._s[2904]! } - public var Undo_LeftGroup: String { return self._s[2905]! } - public var Conversation_StopLiveLocation: String { return self._s[2906]! } - public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[2907]! } - public var Message_PinnedInvoice: String { return self._s[2908]! } - public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[2909]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2879]! } + public var Conversation_ClearCache: String { return self._s[2880]! } + public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[2881]! } + public var ChatList_Tabs_AllChats: String { return self._s[2882]! } + public var DialogList_RecentTitlePeople: String { return self._s[2883]! } + public var Stickers_AddToFavorites: String { return self._s[2884]! } + public var ChatList_Context_RemoveFromFolder: String { return self._s[2885]! } + public var VoiceChat_CancelSpeakRequest: String { return self._s[2886]! } + public var Settings_RemoveVideo: String { return self._s[2887]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2888]! } + public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[2889]! } + public var VoiceOver_Chat_YourFile: String { return self._s[2890]! } + public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[2892]! } + public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[2893]! } + public var VoiceChat_TapToAddBio: String { return self._s[2894]! } + public var Channel_AdminLog_AddMembers: String { return self._s[2895]! } + public var Map_SendThisLocation: String { return self._s[2897]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[2899]! } + public var IntentsSettings_SuggestedChatsPrivateChats: String { return self._s[2900]! } + public var CloudStorage_Title: String { return self._s[2901]! } + public var TwoFactorSetup_Password_Action: String { return self._s[2902]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[2903]! } + public var Passport_Address_EditTemporaryRegistration: String { return self._s[2905]! } + public var Undo_LeftGroup: String { return self._s[2906]! } + public var Conversation_StopLiveLocation: String { return self._s[2907]! } + public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[2908]! } + public var Message_PinnedInvoice: String { return self._s[2909]! } + public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[2910]! } public func PUSH_CHAT_MESSAGE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2911]!, self._r[2911]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2912]!, self._r[2912]!, [_1, _2]) } public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2912]!, self._r[2912]!, [_0]) + return formatWithArgumentRanges(self._s[2913]!, self._r[2913]!, [_0]) } - public var Weekday_Tuesday: String { return self._s[2913]! } - public var ChangePhoneNumberCode_Code: String { return self._s[2914]! } - public var VoiceOver_Chat_YourMessage: String { return self._s[2915]! } - public var Calls_CallTabDescription: String { return self._s[2916]! } - public var ChatImport_SelectionErrorNotAdmin: String { return self._s[2917]! } - public var SocksProxySetup_UseProxy: String { return self._s[2919]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2920]! } - public var PasscodeSettings_AlphanumericCode: String { return self._s[2921]! } - public var VoiceOver_Chat_YourVideo: String { return self._s[2922]! } - public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[2924]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2925]! } - public var Exceptions_AddToExceptions: String { return self._s[2926]! } - public var UserInfo_Title: String { return self._s[2927]! } - public var Passport_DeleteDocumentConfirmation: String { return self._s[2929]! } - public var ChatList_Unmute: String { return self._s[2931]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[2932]! } + public var Weekday_Tuesday: String { return self._s[2914]! } + public var ChangePhoneNumberCode_Code: String { return self._s[2915]! } + public var VoiceOver_Chat_YourMessage: String { return self._s[2916]! } + public var Calls_CallTabDescription: String { return self._s[2917]! } + public var ChatImport_SelectionErrorNotAdmin: String { return self._s[2918]! } + public var SocksProxySetup_UseProxy: String { return self._s[2920]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2921]! } + public var PasscodeSettings_AlphanumericCode: String { return self._s[2922]! } + public var VoiceOver_Chat_YourVideo: String { return self._s[2923]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[2925]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2926]! } + public var Exceptions_AddToExceptions: String { return self._s[2927]! } + public var UserInfo_Title: String { return self._s[2928]! } + public var Passport_DeleteDocumentConfirmation: String { return self._s[2930]! } + public var ChatList_Unmute: String { return self._s[2932]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[2933]! } public func Channel_AdminLog_MessageChangedAutoremoveTimeoutSet(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2933]!, self._r[2933]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2934]!, self._r[2934]!, [_1, _2]) } - public var Stats_GroupTopPostersTitle: String { return self._s[2934]! } - public var Username_CheckingUsername: String { return self._s[2935]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2936]! } - public var PeerSelection_ImportIntoNewGroup: String { return self._s[2940]! } - public var Location_ProximityAlertSetTitle: String { return self._s[2941]! } - public var AuthSessions_AddedDeviceTerminate: String { return self._s[2942]! } - public var Conversation_JoinVoiceChatAsSpeaker: String { return self._s[2943]! } - public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[2944]! } - public var Settings_ChangePhoneNumber: String { return self._s[2945]! } - public var PeerInfo_PaneLinks: String { return self._s[2946]! } - public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2949]! } - public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[2951]! } + public var Stats_GroupTopPostersTitle: String { return self._s[2935]! } + public var Username_CheckingUsername: String { return self._s[2936]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2937]! } + public var PeerSelection_ImportIntoNewGroup: String { return self._s[2941]! } + public var Location_ProximityAlertSetTitle: String { return self._s[2942]! } + public var AuthSessions_AddedDeviceTerminate: String { return self._s[2943]! } + public var Conversation_JoinVoiceChatAsSpeaker: String { return self._s[2944]! } + public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[2945]! } + public var Settings_ChangePhoneNumber: String { return self._s[2946]! } + public var PeerInfo_PaneLinks: String { return self._s[2947]! } + public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2950]! } + public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[2952]! } public func PUSH_CHAT_VOICECHAT_INVITE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2952]!, self._r[2952]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2953]!, self._r[2953]!, [_1, _2]) } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[2953]! } - public var VoiceOver_Media_PlaybackPause: String { return self._s[2954]! } - public var BroadcastGroups_ConfirmationAlert_Title: String { return self._s[2955]! } - public var Stats_FollowersBySourceTitle: String { return self._s[2957]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[2954]! } + public var VoiceOver_Media_PlaybackPause: String { return self._s[2955]! } + public var BroadcastGroups_ConfirmationAlert_Title: String { return self._s[2956]! } + public var Stats_FollowersBySourceTitle: String { return self._s[2958]! } public func Conversation_ScheduleMessage_SendOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2958]!, self._r[2958]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2959]!, self._r[2959]!, [_0, _1]) } - public var Compose_NewEncryptedChatTitle: String { return self._s[2959]! } - public var Channel_CommentsGroup_Header: String { return self._s[2961]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[2960]! } + public var Channel_CommentsGroup_Header: String { return self._s[2962]! } public func ShareFileTip_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2965]!, self._r[2965]!, [_0]) + return formatWithArgumentRanges(self._s[2966]!, self._r[2966]!, [_0]) } public func PUSH_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2966]!, self._r[2966]!, [_1]) + return formatWithArgumentRanges(self._s[2967]!, self._r[2967]!, [_1]) } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[2968]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[2969]! } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2969]!, self._r[2969]!, [_0]) + return formatWithArgumentRanges(self._s[2970]!, self._r[2970]!, [_0]) } - public var Conversation_ReportMessages: String { return self._s[2970]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[2971]! } - public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[2972]! } - public var PrivacySettings_LastSeen: String { return self._s[2974]! } - public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[2975]! } - public var Theme_Colors_Proceed: String { return self._s[2976]! } - public var UserInfo_ScamBotWarning: String { return self._s[2977]! } - public var LogoutOptions_LogOut: String { return self._s[2979]! } - public var Conversation_SendMessage: String { return self._s[2980]! } - public var Conversation_CancelForwardCancelForward: String { return self._s[2981]! } - public var Passport_Address_Region: String { return self._s[2983]! } - public var MediaPicker_CameraRoll: String { return self._s[2985]! } + public var Conversation_ReportMessages: String { return self._s[2971]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[2972]! } + public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[2973]! } + public var PrivacySettings_LastSeen: String { return self._s[2975]! } + public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[2976]! } + public var Theme_Colors_Proceed: String { return self._s[2977]! } + public var UserInfo_ScamBotWarning: String { return self._s[2978]! } + public var LogoutOptions_LogOut: String { return self._s[2980]! } + public var Conversation_SendMessage: String { return self._s[2981]! } + public var Conversation_CancelForwardCancelForward: String { return self._s[2982]! } + public var Passport_Address_Region: String { return self._s[2984]! } + public var MediaPicker_CameraRoll: String { return self._s[2986]! } public func VoiceOver_Chat_ForwardedFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_0]) + return formatWithArgumentRanges(self._s[2988]!, self._r[2988]!, [_0]) } - public var Call_ReportSend: String { return self._s[2989]! } - public var VoiceOver_ChatList_Message: String { return self._s[2990]! } - public var Month_ShortJune: String { return self._s[2991]! } - public var AutoDownloadSettings_GroupChats: String { return self._s[2992]! } + public var Call_ReportSend: String { return self._s[2990]! } + public var VoiceOver_ChatList_Message: String { return self._s[2991]! } + public var Month_ShortJune: String { return self._s[2992]! } + public var AutoDownloadSettings_GroupChats: String { return self._s[2993]! } public func Channel_AdminLog_CaptionEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2995]!, self._r[2995]!, [_0]) + return formatWithArgumentRanges(self._s[2996]!, self._r[2996]!, [_0]) } - public var TwoStepAuth_DisableSuccess: String { return self._s[2996]! } - public var Cache_KeepMedia: String { return self._s[2997]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[2997]! } + public var Cache_KeepMedia: String { return self._s[2998]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2998]!, self._r[2998]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2999]!, self._r[2999]!, [_1, _2, _3]) } - public var Appearance_LargeEmoji: String { return self._s[2999]! } + public var Appearance_LargeEmoji: String { return self._s[3000]! } public func Notification_NewAuthDetected(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3000]!, self._r[3000]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[3001]!, self._r[3001]!, [_1, _2, _3, _4, _5, _6]) } - public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[3001]! } - public var Call_CameraConfirmationText: String { return self._s[3002]! } + public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[3002]! } + public var Call_CameraConfirmationText: String { return self._s[3003]! } public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3004]!, self._r[3004]!, [_0]) + return formatWithArgumentRanges(self._s[3005]!, self._r[3005]!, [_0]) } - public var DialogList_SearchSectionChats: String { return self._s[3005]! } - public var VoiceOver_MessageContextReport: String { return self._s[3007]! } - public var VoiceChat_RemovePeer: String { return self._s[3008]! } - public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3009]! } - public var InviteLink_ContextCopy: String { return self._s[3010]! } - public var NotificationsSound_Tritone: String { return self._s[3012]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[3015]! } - public var Stats_GroupTopAdmin_Actions: String { return self._s[3016]! } - public var PeerInfo_AddToContacts: String { return self._s[3017]! } - public var VoiceChat_OpenChat: String { return self._s[3018]! } - public var AccessDenied_Title: String { return self._s[3019]! } - public var InviteLink_QRCode_InfoChannel: String { return self._s[3020]! } - public var Tour_Title1: String { return self._s[3021]! } - public var VoiceOver_AttachMedia: String { return self._s[3022]! } + public var DialogList_SearchSectionChats: String { return self._s[3006]! } + public var VoiceOver_MessageContextReport: String { return self._s[3008]! } + public var VoiceChat_RemovePeer: String { return self._s[3009]! } + public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3010]! } + public var InviteLink_ContextCopy: String { return self._s[3011]! } + public var NotificationsSound_Tritone: String { return self._s[3013]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[3016]! } + public var Stats_GroupTopAdmin_Actions: String { return self._s[3017]! } + public var PeerInfo_AddToContacts: String { return self._s[3018]! } + public var VoiceChat_OpenChat: String { return self._s[3019]! } + public var AccessDenied_Title: String { return self._s[3020]! } + public var InviteLink_QRCode_InfoChannel: String { return self._s[3021]! } + public var Tour_Title1: String { return self._s[3022]! } + public var VoiceOver_AttachMedia: String { return self._s[3023]! } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3024]!, self._r[3024]!, [_0]) + return formatWithArgumentRanges(self._s[3025]!, self._r[3025]!, [_0]) } - public var Chat_Gifs_SavedSectionHeader: String { return self._s[3025]! } - public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[3026]! } + public var Chat_Gifs_SavedSectionHeader: String { return self._s[3026]! } + public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[3027]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3027]!, self._r[3027]!, [_0]) + return formatWithArgumentRanges(self._s[3028]!, self._r[3028]!, [_0]) } - public var Channel_AdminLog_MessagePreviousLink: String { return self._s[3028]! } - public var OldChannels_Title: String { return self._s[3029]! } - public var LoginPassword_FloodError: String { return self._s[3030]! } - public var ChatImportActivity_InProgress: String { return self._s[3032]! } - public var Checkout_ErrorPaymentFailed: String { return self._s[3033]! } + public var Channel_AdminLog_MessagePreviousLink: String { return self._s[3029]! } + public var OldChannels_Title: String { return self._s[3030]! } + public var LoginPassword_FloodError: String { return self._s[3031]! } + public var ChatImportActivity_InProgress: String { return self._s[3033]! } + public var Checkout_ErrorPaymentFailed: String { return self._s[3034]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3034]!, self._r[3034]!, [_0]) + return formatWithArgumentRanges(self._s[3035]!, self._r[3035]!, [_0]) } - public var VoiceOver_Media_PlaybackPlay: String { return self._s[3037]! } - public var Passport_CorrectErrors: String { return self._s[3039]! } + public var VoiceOver_Media_PlaybackPlay: String { return self._s[3038]! } + public var Passport_CorrectErrors: String { return self._s[3040]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3040]!, self._r[3040]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3041]!, self._r[3041]!, [_1, _2]) } - public var ChatListFolderSettings_Title: String { return self._s[3041]! } + public var ChatListFolderSettings_Title: String { return self._s[3042]! } public func AutoDownloadSettings_UpToFor(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3042]!, self._r[3042]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3043]!, self._r[3043]!, [_1, _2]) } - public var PhotoEditor_HighlightsTool: String { return self._s[3043]! } - public var Contacts_NotRegisteredSection: String { return self._s[3046]! } + public var PhotoEditor_HighlightsTool: String { return self._s[3044]! } + public var Contacts_NotRegisteredSection: String { return self._s[3047]! } public func Call_VoiceChatInProgressCallMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3047]!, self._r[3047]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3048]!, self._r[3048]!, [_1, _2]) } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3048]!, self._r[3048]!, [_1]) + return formatWithArgumentRanges(self._s[3049]!, self._r[3049]!, [_1]) } - public var InviteLink_Create_UsersLimitInfo: String { return self._s[3049]! } - public var User_DeletedAccount: String { return self._s[3050]! } - public var Conversation_ViewContactDetails: String { return self._s[3051]! } - public var Conversation_Dice_u1F3B3: String { return self._s[3052]! } - public var WebSearch_GIFs: String { return self._s[3053]! } - public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[3054]! } - public var Appearance_PreviewOutgoingText: String { return self._s[3055]! } - public var Calls_CallTabTitle: String { return self._s[3056]! } - public var Call_VoiceChatInProgressTitle: String { return self._s[3057]! } + public var InviteLink_Create_UsersLimitInfo: String { return self._s[3050]! } + public var User_DeletedAccount: String { return self._s[3051]! } + public var Conversation_ViewContactDetails: String { return self._s[3052]! } + public var Conversation_Dice_u1F3B3: String { return self._s[3053]! } + public var WebSearch_GIFs: String { return self._s[3054]! } + public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[3055]! } + public var Appearance_PreviewOutgoingText: String { return self._s[3056]! } + public var Calls_CallTabTitle: String { return self._s[3057]! } + public var Call_VoiceChatInProgressTitle: String { return self._s[3058]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3058]!, self._r[3058]!, [_0]) + return formatWithArgumentRanges(self._s[3059]!, self._r[3059]!, [_0]) } - public var Channel_Status: String { return self._s[3059]! } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[3061]! } - public var VoiceOver_Chat_OptionSelected: String { return self._s[3062]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[3063]! } + public var Channel_Status: String { return self._s[3060]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[3062]! } + public var VoiceOver_Chat_OptionSelected: String { return self._s[3063]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[3064]! } public func ClearCache_Success(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3064]!, self._r[3064]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3065]!, self._r[3065]!, [_0, _1]) } - public var Passport_Identity_ExpiryDateNone: String { return self._s[3066]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[3068]! } - public var Month_ShortDecember: String { return self._s[3069]! } - public var Username_Help: String { return self._s[3070]! } - public var Login_InfoAvatarAdd: String { return self._s[3071]! } - public var Month_ShortMay: String { return self._s[3072]! } - public var DialogList_UnknownPinLimitError: String { return self._s[3073]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[3074]! } - public var TwoStepAuth_EnabledSuccess: String { return self._s[3075]! } - public var VoiceChat_AskedToSpeak: String { return self._s[3076]! } - public var Weekday_ShortSunday: String { return self._s[3077]! } - public var Channel_Username_InvalidTooShort: String { return self._s[3078]! } - public var AuthSessions_TerminateSession: String { return self._s[3079]! } - public var Passport_Identity_FilesTitle: String { return self._s[3080]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[3067]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[3069]! } + public var Month_ShortDecember: String { return self._s[3070]! } + public var Username_Help: String { return self._s[3071]! } + public var Login_InfoAvatarAdd: String { return self._s[3072]! } + public var Month_ShortMay: String { return self._s[3073]! } + public var DialogList_UnknownPinLimitError: String { return self._s[3074]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[3075]! } + public var TwoStepAuth_EnabledSuccess: String { return self._s[3076]! } + public var VoiceChat_AskedToSpeak: String { return self._s[3077]! } + public var Weekday_ShortSunday: String { return self._s[3078]! } + public var Channel_Username_InvalidTooShort: String { return self._s[3079]! } + public var AuthSessions_TerminateSession: String { return self._s[3080]! } + public var Passport_Identity_FilesTitle: String { return self._s[3081]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3081]!, self._r[3081]!, [_0]) + return formatWithArgumentRanges(self._s[3082]!, self._r[3082]!, [_0]) } - public var PeopleNearby_MakeVisible: String { return self._s[3083]! } + public var PeopleNearby_MakeVisible: String { return self._s[3084]! } public func Conversation_RestrictedMediaTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3084]!, self._r[3084]!, [_0]) + return formatWithArgumentRanges(self._s[3085]!, self._r[3085]!, [_0]) } - public var Widget_UpdatedAt: String { return self._s[3085]! } + public var Widget_UpdatedAt: String { return self._s[3086]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3086]!, self._r[3086]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3087]!, self._r[3087]!, [_1, _2]) } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3087]!, self._r[3087]!, [_0]) + return formatWithArgumentRanges(self._s[3088]!, self._r[3088]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3088]! } - public var Conversation_ContextMenuForward: String { return self._s[3089]! } - public var Channel_AdminLog_CanManageCalls: String { return self._s[3090]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3089]! } + public var Conversation_ContextMenuForward: String { return self._s[3090]! } + public var Channel_AdminLog_CanManageCalls: String { return self._s[3091]! } public func PUSH_CHAT_MESSAGE_QUIZ(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3092]!, self._r[3092]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3093]!, self._r[3093]!, [_1, _2, _3]) } - public var Notification_GroupInviterSelf: String { return self._s[3094]! } - public var Privacy_Forwards_NeverLink: String { return self._s[3095]! } - public var AuthSessions_CurrentSession: String { return self._s[3096]! } - public var Passport_Address_EditPassportRegistration: String { return self._s[3097]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[3098]! } - public var ChatSearch_ResultsTooltip: String { return self._s[3100]! } - public var CheckoutInfo_Pay: String { return self._s[3101]! } + public var Notification_GroupInviterSelf: String { return self._s[3095]! } + public var Privacy_Forwards_NeverLink: String { return self._s[3096]! } + public var AuthSessions_CurrentSession: String { return self._s[3097]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[3098]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[3099]! } + public var ChatSearch_ResultsTooltip: String { return self._s[3101]! } + public var CheckoutInfo_Pay: String { return self._s[3102]! } public func Conversation_PinMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3103]!, self._r[3103]!, [_0]) + return formatWithArgumentRanges(self._s[3104]!, self._r[3104]!, [_0]) } - public var GroupInfo_AddParticipant: String { return self._s[3104]! } - public var GroupPermission_ApplyAlertAction: String { return self._s[3105]! } + public var GroupInfo_AddParticipant: String { return self._s[3105]! } + public var GroupPermission_ApplyAlertAction: String { return self._s[3106]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3106]!, self._r[3106]!, [_0]) + return formatWithArgumentRanges(self._s[3107]!, self._r[3107]!, [_0]) } - public var Localization_LanguageCustom: String { return self._s[3107]! } - public var SettingsSearch_Synonyms_Passport: String { return self._s[3108]! } - public var Settings_UsernameEmpty: String { return self._s[3109]! } - public var Settings_FAQ_URL: String { return self._s[3110]! } - public var ChatList_UndoArchiveText1: String { return self._s[3111]! } - public var Common_Select: String { return self._s[3113]! } - public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[3114]! } - public var Notification_PassportValueAddress: String { return self._s[3115]! } - public var Conversation_MessageDialogDelete: String { return self._s[3116]! } - public var Map_OpenInYandexNavigator: String { return self._s[3118]! } - public var DialogList_SearchSectionDialogs: String { return self._s[3119]! } - public var AccessDenied_Contacts: String { return self._s[3120]! } - public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[3122]! } - public var Passport_ScanPassportHelp: String { return self._s[3123]! } - public var Chat_PinnedListPreview_HidePinnedMessages: String { return self._s[3124]! } - public var ChatListFolder_NameChannels: String { return self._s[3125]! } - public var Appearance_ThemePreview_Chat_5_Text: String { return self._s[3126]! } + public var Localization_LanguageCustom: String { return self._s[3108]! } + public var SettingsSearch_Synonyms_Passport: String { return self._s[3109]! } + public var Settings_UsernameEmpty: String { return self._s[3110]! } + public var Settings_FAQ_URL: String { return self._s[3111]! } + public var ChatList_UndoArchiveText1: String { return self._s[3112]! } + public var Common_Select: String { return self._s[3114]! } + public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[3115]! } + public var Notification_PassportValueAddress: String { return self._s[3116]! } + public var Conversation_MessageDialogDelete: String { return self._s[3117]! } + public var Map_OpenInYandexNavigator: String { return self._s[3119]! } + public var DialogList_SearchSectionDialogs: String { return self._s[3120]! } + public var AccessDenied_Contacts: String { return self._s[3121]! } + public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[3123]! } + public var Passport_ScanPassportHelp: String { return self._s[3124]! } + public var Chat_PinnedListPreview_HidePinnedMessages: String { return self._s[3125]! } + public var ChatListFolder_NameChannels: String { return self._s[3126]! } + public var Appearance_ThemePreview_Chat_5_Text: String { return self._s[3127]! } public func Channel_OwnershipTransfer_TransferCompleted(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3127]!, self._r[3127]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3128]!, self._r[3128]!, [_1, _2]) } - public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[3128]! } + public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[3129]! } public func VoiceChat_InviteMemberToGroupFirstText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3129]!, self._r[3129]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3130]!, self._r[3130]!, [_1, _2]) } - public var Conversation_GifTooltip: String { return self._s[3130]! } - public var Widget_MessageAutoremoveTimerUpdated: String { return self._s[3131]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[3133]! } - public var VoiceChat_Connecting: String { return self._s[3134]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[3135]! } + public var Conversation_GifTooltip: String { return self._s[3131]! } + public var Widget_MessageAutoremoveTimerUpdated: String { return self._s[3132]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[3134]! } + public var VoiceChat_Connecting: String { return self._s[3135]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[3136]! } public func Channel_AdminLog_CreatedInviteLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3136]!, self._r[3136]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3137]!, self._r[3137]!, [_1, _2]) } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[3137]! } - public var AutoDownloadSettings_PreloadVideo: String { return self._s[3138]! } - public var CreatePoll_Quiz: String { return self._s[3139]! } - public var TwoFactorSetup_Email_Placeholder: String { return self._s[3141]! } - public var Watch_Message_Invoice: String { return self._s[3142]! } - public var Settings_AddAnotherAccount_Help: String { return self._s[3143]! } - public var Watch_Message_Unsupported: String { return self._s[3144]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[3138]! } + public var AutoDownloadSettings_PreloadVideo: String { return self._s[3139]! } + public var CreatePoll_Quiz: String { return self._s[3140]! } + public var TwoFactorSetup_Email_Placeholder: String { return self._s[3142]! } + public var Watch_Message_Invoice: String { return self._s[3143]! } + public var Settings_AddAnotherAccount_Help: String { return self._s[3144]! } + public var Watch_Message_Unsupported: String { return self._s[3145]! } public func Call_CameraOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3146]!, self._r[3146]!, [_0]) + return formatWithArgumentRanges(self._s[3147]!, self._r[3147]!, [_0]) } - public var AuthSessions_TerminateOtherSessions: String { return self._s[3147]! } - public var CreatePoll_AllOptionsAdded: String { return self._s[3149]! } - public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[3150]! } - public var Call_IncomingVoiceCall: String { return self._s[3151]! } + public var AuthSessions_TerminateOtherSessions: String { return self._s[3148]! } + public var CreatePoll_AllOptionsAdded: String { return self._s[3150]! } + public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[3151]! } + public var Call_IncomingVoiceCall: String { return self._s[3152]! } public func Channel_AdminLog_MessageTransferedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3152]!, self._r[3152]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3153]!, self._r[3153]!, [_1, _2]) } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[3153]! } - public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[3154]! } - public var Group_EditAdmin_RankOwnerPlaceholder: String { return self._s[3155]! } - public var Group_ErrorAccessDenied: String { return self._s[3156]! } - public var PasscodeSettings_HelpTop: String { return self._s[3157]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[3158]! } - public var AddContact_SharedContactException: String { return self._s[3159]! } - public var AccessDenied_MicrophoneRestricted: String { return self._s[3160]! } - public var Privacy_TopPeers: String { return self._s[3161]! } - public var Web_OpenExternal: String { return self._s[3162]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[3163]! } - public var Channel_Management_LabelAdministrator: String { return self._s[3164]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[3154]! } + public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[3155]! } + public var Group_EditAdmin_RankOwnerPlaceholder: String { return self._s[3156]! } + public var Group_ErrorAccessDenied: String { return self._s[3157]! } + public var PasscodeSettings_HelpTop: String { return self._s[3158]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[3159]! } + public var AddContact_SharedContactException: String { return self._s[3160]! } + public var AccessDenied_MicrophoneRestricted: String { return self._s[3161]! } + public var Privacy_TopPeers: String { return self._s[3162]! } + public var Web_OpenExternal: String { return self._s[3163]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[3164]! } + public var Channel_Management_LabelAdministrator: String { return self._s[3165]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3165]!, self._r[3165]!, [_0]) + return formatWithArgumentRanges(self._s[3166]!, self._r[3166]!, [_0]) } - public var Conversation_PhoneCopied: String { return self._s[3166]! } - public var Permissions_Skip: String { return self._s[3167]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[3168]! } + public var Conversation_PhoneCopied: String { return self._s[3167]! } + public var Permissions_Skip: String { return self._s[3168]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[3169]! } public func VoiceChat_ForwardTooltip_TwoChats(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3169]!, self._r[3169]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3170]!, self._r[3170]!, [_0, _1]) } - public var PeopleNearby_Title: String { return self._s[3170]! } - public var GroupInfo_SharedMediaNone: String { return self._s[3171]! } + public var PeopleNearby_Title: String { return self._s[3171]! } + public var GroupInfo_SharedMediaNone: String { return self._s[3172]! } public func PUSH_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3173]!, self._r[3173]!, [_1]) + return formatWithArgumentRanges(self._s[3174]!, self._r[3174]!, [_1]) } - public var Profile_MessageLifetime1w: String { return self._s[3174]! } + public var Profile_MessageLifetime1w: String { return self._s[3175]! } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3175]!, self._r[3175]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3176]!, self._r[3176]!, [_1, _2, _3]) } - public var WebBrowser_DefaultBrowser: String { return self._s[3176]! } - public var Conversation_PinOlderMessageAlertTitle: String { return self._s[3178]! } - public var EditTheme_Edit_BottomInfo: String { return self._s[3179]! } - public var Privacy_Forwards_Preview: String { return self._s[3180]! } - public var Settings_EditAccount: String { return self._s[3181]! } + public var WebBrowser_DefaultBrowser: String { return self._s[3177]! } + public var Conversation_PinOlderMessageAlertTitle: String { return self._s[3179]! } + public var EditTheme_Edit_BottomInfo: String { return self._s[3180]! } + public var Privacy_Forwards_Preview: String { return self._s[3181]! } + public var Settings_EditAccount: String { return self._s[3182]! } public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3182]!, self._r[3182]!, [_0]) + return formatWithArgumentRanges(self._s[3183]!, self._r[3183]!, [_0]) } - public var TwoFactorSetup_Intro_Title: String { return self._s[3183]! } + public var TwoFactorSetup_Intro_Title: String { return self._s[3184]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3185]!, self._r[3185]!, [_1]) + return formatWithArgumentRanges(self._s[3186]!, self._r[3186]!, [_1]) } - public var PeerInfo_ButtonVideoCall: String { return self._s[3186]! } + public var PeerInfo_ButtonVideoCall: String { return self._s[3187]! } public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3187]!, self._r[3187]!, [_0]) + return formatWithArgumentRanges(self._s[3188]!, self._r[3188]!, [_0]) } - public var Login_InfoHelp: String { return self._s[3188]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[3189]! } - public var VoiceChat_SpeakPermissionEveryone: String { return self._s[3190]! } - public var Profile_MessageLifetime1d: String { return self._s[3191]! } - public var Group_UpgradeConfirmation: String { return self._s[3192]! } + public var Login_InfoHelp: String { return self._s[3189]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[3190]! } + public var VoiceChat_SpeakPermissionEveryone: String { return self._s[3191]! } + public var Profile_MessageLifetime1d: String { return self._s[3192]! } + public var Group_UpgradeConfirmation: String { return self._s[3193]! } public func PUSH_PINNED_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3193]!, self._r[3193]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3194]!, self._r[3194]!, [_1, _2]) } - public var Appearance_RemoveThemeColor: String { return self._s[3194]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3195]! } + public var Appearance_RemoveThemeColor: String { return self._s[3195]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3196]! } public func Call_AnsweringWithAccount(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3196]!, self._r[3196]!, [_0]) + return formatWithArgumentRanges(self._s[3197]!, self._r[3197]!, [_0]) } - public var UserInfo_BotSettings: String { return self._s[3197]! } + public var UserInfo_BotSettings: String { return self._s[3198]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3199]!, self._r[3199]!, [_0]) + return formatWithArgumentRanges(self._s[3200]!, self._r[3200]!, [_0]) } - public var Permissions_ContactsText_v0: String { return self._s[3200]! } - public var Conversation_PinMessagesForMe: String { return self._s[3201]! } - public var VoiceChat_PanelJoin: String { return self._s[3202]! } - public var Conversation_DiscussionStarted: String { return self._s[3204]! } - public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[3205]! } - public var SharedMedia_SearchNoResults: String { return self._s[3207]! } + public var Permissions_ContactsText_v0: String { return self._s[3201]! } + public var Conversation_PinMessagesForMe: String { return self._s[3202]! } + public var VoiceChat_PanelJoin: String { return self._s[3203]! } + public var Conversation_DiscussionStarted: String { return self._s[3205]! } + public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[3206]! } + public var SharedMedia_SearchNoResults: String { return self._s[3208]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3209]!, self._r[3209]!, [_0]) + return formatWithArgumentRanges(self._s[3210]!, self._r[3210]!, [_0]) } public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3211]!, self._r[3211]!, [_0]) + return formatWithArgumentRanges(self._s[3212]!, self._r[3212]!, [_0]) } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[3212]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[3213]! } - public var Call_AudioRouteHeadphones: String { return self._s[3214]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[3213]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[3214]! } + public var Call_AudioRouteHeadphones: String { return self._s[3215]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3216]!, self._r[3216]!, [_1]) + return formatWithArgumentRanges(self._s[3217]!, self._r[3217]!, [_1]) } - public var Passport_Identity_FilesView: String { return self._s[3217]! } - public var TwoStepAuth_SetupEmail: String { return self._s[3218]! } - public var Widget_ApplicationStartRequired: String { return self._s[3219]! } - public var PhotoEditor_Original: String { return self._s[3220]! } - public var Call_YourMicrophoneOff: String { return self._s[3221]! } - public var Permissions_ContactsAllow_v0: String { return self._s[3222]! } - public var Conversation_CardNumberCopied: String { return self._s[3223]! } - public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[3224]! } - public var PrivacyPolicy_Decline: String { return self._s[3225]! } - public var SettingsSearch_Synonyms_ChatFolders: String { return self._s[3226]! } - public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[3227]! } - public var ChatListFolder_IncludeSectionInfo: String { return self._s[3228]! } + public var Passport_Identity_FilesView: String { return self._s[3218]! } + public var TwoStepAuth_SetupEmail: String { return self._s[3219]! } + public var Widget_ApplicationStartRequired: String { return self._s[3220]! } + public var PhotoEditor_Original: String { return self._s[3221]! } + public var Call_YourMicrophoneOff: String { return self._s[3222]! } + public var Permissions_ContactsAllow_v0: String { return self._s[3223]! } + public var Conversation_CardNumberCopied: String { return self._s[3224]! } + public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[3225]! } + public var PrivacyPolicy_Decline: String { return self._s[3226]! } + public var SettingsSearch_Synonyms_ChatFolders: String { return self._s[3227]! } + public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[3228]! } + public var ChatListFolder_IncludeSectionInfo: String { return self._s[3229]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3229]!, self._r[3229]!, [_0]) + return formatWithArgumentRanges(self._s[3230]!, self._r[3230]!, [_0]) } - public var Passport_Identity_Name: String { return self._s[3230]! } - public var WallpaperPreview_PatternTitle: String { return self._s[3232]! } - public var VoiceOver_Chat_RecordModeVideoMessage: String { return self._s[3233]! } - public var WallpaperSearch_ColorOrange: String { return self._s[3235]! } - public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[3236]! } - public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[3237]! } - public var Your_cards_security_code_is_invalid: String { return self._s[3238]! } - public var IntentsSettings_ResetAll: String { return self._s[3239]! } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3241]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[3242]! } - public var ChatList_DeleteForAllSubscribers: String { return self._s[3243]! } - public var Notification_Exceptions_Add: String { return self._s[3244]! } - public var Group_DeleteGroup: String { return self._s[3245]! } - public var Cache_Help: String { return self._s[3246]! } - public var Call_AudioRouteMute: String { return self._s[3247]! } - public var VoiceOver_Chat_YourVoiceMessage: String { return self._s[3248]! } - public var SocksProxySetup_ProxyEnabled: String { return self._s[3249]! } + public var Passport_Identity_Name: String { return self._s[3231]! } + public var WallpaperPreview_PatternTitle: String { return self._s[3233]! } + public var VoiceOver_Chat_RecordModeVideoMessage: String { return self._s[3234]! } + public var WallpaperSearch_ColorOrange: String { return self._s[3236]! } + public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[3237]! } + public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[3238]! } + public var Your_cards_security_code_is_invalid: String { return self._s[3239]! } + public var IntentsSettings_ResetAll: String { return self._s[3240]! } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3242]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[3243]! } + public var ChatList_DeleteForAllSubscribers: String { return self._s[3244]! } + public var Notification_Exceptions_Add: String { return self._s[3245]! } + public var Group_DeleteGroup: String { return self._s[3246]! } + public var Cache_Help: String { return self._s[3247]! } + public var Call_AudioRouteMute: String { return self._s[3248]! } + public var VoiceOver_Chat_YourVoiceMessage: String { return self._s[3249]! } + public var SocksProxySetup_ProxyEnabled: String { return self._s[3250]! } public func VoiceChat_Status_MembersFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3250]!, self._r[3250]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3251]!, self._r[3251]!, [_1, _2]) } public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3251]!, self._r[3251]!, [_1]) + return formatWithArgumentRanges(self._s[3252]!, self._r[3252]!, [_1]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3252]!, self._r[3252]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3253]!, self._r[3253]!, [_1, _2]) } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3253]! } - public var Channel_BanUser_PermissionAddMembers: String { return self._s[3254]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3254]! } + public var Channel_BanUser_PermissionAddMembers: String { return self._s[3255]! } public func PUSH_CHAT_VOICECHAT_INVITE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3255]!, self._r[3255]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3256]!, self._r[3256]!, [_1, _2, _3]) } - public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[3256]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[3257]! } - public var ClearCache_StorageFree: String { return self._s[3258]! } + public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[3257]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[3258]! } + public var ClearCache_StorageFree: String { return self._s[3259]! } public func DialogList_SingleRecordingVideoMessageSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3259]!, self._r[3259]!, [_0]) + return formatWithArgumentRanges(self._s[3260]!, self._r[3260]!, [_0]) } - public var Privacy_Forwards_CustomHelp: String { return self._s[3260]! } + public var Privacy_Forwards_CustomHelp: String { return self._s[3261]! } public func Channel_AdminLog_EditedInviteLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3262]!, self._r[3262]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3263]!, self._r[3263]!, [_1, _2]) } - public var Group_ErrorAddTooMuchAdmins: String { return self._s[3263]! } - public var DialogList_Typing: String { return self._s[3264]! } + public var Group_ErrorAddTooMuchAdmins: String { return self._s[3264]! } + public var DialogList_Typing: String { return self._s[3265]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3265]!, self._r[3265]!, [_0]) + return formatWithArgumentRanges(self._s[3266]!, self._r[3266]!, [_0]) } - public var Target_SelectGroup: String { return self._s[3266]! } - public var AuthSessions_IncompleteAttempts: String { return self._s[3267]! } + public var Target_SelectGroup: String { return self._s[3267]! } + public var AuthSessions_IncompleteAttempts: String { return self._s[3268]! } public func Notification_ProximityReached(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3268]!, self._r[3268]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3269]!, self._r[3269]!, [_1, _2, _3]) } - public var Chat_PinnedListPreview_ShowAllMessages: String { return self._s[3269]! } - public var TwoStepAuth_EmailChangeSuccess: String { return self._s[3270]! } + public var Chat_PinnedListPreview_ShowAllMessages: String { return self._s[3270]! } + public var TwoStepAuth_EmailChangeSuccess: String { return self._s[3271]! } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3271]!, self._r[3271]!, [_0]) + return formatWithArgumentRanges(self._s[3272]!, self._r[3272]!, [_0]) } - public var Channel_AdminLog_CanSendMessages: String { return self._s[3272]! } - public var TwoFactorSetup_EmailVerification_Title: String { return self._s[3273]! } - public var ChatSettings_TextSize: String { return self._s[3274]! } - public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[3276]! } - public var Map_SendThisPlace: String { return self._s[3277]! } - public var Conversation_TextCopied: String { return self._s[3278]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3279]! } - public var ContactInfo_BirthdayLabel: String { return self._s[3280]! } - public var Call_ShareStats: String { return self._s[3281]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[3273]! } + public var TwoFactorSetup_EmailVerification_Title: String { return self._s[3274]! } + public var ChatSettings_TextSize: String { return self._s[3275]! } + public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[3277]! } + public var Map_SendThisPlace: String { return self._s[3278]! } + public var Conversation_TextCopied: String { return self._s[3279]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3280]! } + public var ContactInfo_BirthdayLabel: String { return self._s[3281]! } + public var Call_ShareStats: String { return self._s[3282]! } public func PUSH_CHAT_VOICECHAT_END(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3283]!, self._r[3283]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3284]!, self._r[3284]!, [_1, _2]) } - public var ChatList_UndoArchiveRevealedText: String { return self._s[3284]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[3285]! } - public var Settings_Support: String { return self._s[3286]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[3287]! } + public var ChatList_UndoArchiveRevealedText: String { return self._s[3285]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[3286]! } + public var Settings_Support: String { return self._s[3287]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[3288]! } public func EmptyGroupInfo_Line1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3289]!, self._r[3289]!, [_0]) + return formatWithArgumentRanges(self._s[3290]!, self._r[3290]!, [_0]) } - public var Watch_Conversation_GroupInfo: String { return self._s[3290]! } - public var Tour_Text4: String { return self._s[3291]! } - public var VoiceChat_CancelReminder: String { return self._s[3292]! } - public var UserInfo_FakeUserWarning: String { return self._s[3294]! } - public var PasscodeSettings_AutoLock: String { return self._s[3295]! } - public var Channel_BanList_BlockedTitle: String { return self._s[3296]! } - public var Bot_DescriptionTitle: String { return self._s[3297]! } - public var Map_LocationTitle: String { return self._s[3298]! } - public var ChatListFolder_ExcludeSectionInfo: String { return self._s[3299]! } - public var Conversation_HashtagCopied: String { return self._s[3300]! } + public var Watch_Conversation_GroupInfo: String { return self._s[3291]! } + public var Tour_Text4: String { return self._s[3292]! } + public var VoiceChat_CancelReminder: String { return self._s[3293]! } + public var UserInfo_FakeUserWarning: String { return self._s[3295]! } + public var PasscodeSettings_AutoLock: String { return self._s[3296]! } + public var Channel_BanList_BlockedTitle: String { return self._s[3297]! } + public var Bot_DescriptionTitle: String { return self._s[3298]! } + public var Map_LocationTitle: String { return self._s[3299]! } + public var ChatListFolder_ExcludeSectionInfo: String { return self._s[3300]! } + public var Conversation_HashtagCopied: String { return self._s[3301]! } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3301]!, self._r[3301]!, [_1]) + return formatWithArgumentRanges(self._s[3302]!, self._r[3302]!, [_1]) } - public var Login_EmailNotConfiguredError: String { return self._s[3302]! } - public var AutoDownloadSettings_LimitBySize: String { return self._s[3303]! } - public var PrivacySettings_LastSeenNobody: String { return self._s[3304]! } - public var Permissions_CellularDataText_v0: String { return self._s[3305]! } - public var Conversation_EncryptionProcessing: String { return self._s[3306]! } - public var GroupPermission_Delete: String { return self._s[3307]! } - public var Contacts_SortByName: String { return self._s[3308]! } - public var TwoStepAuth_RecoveryUnavailable: String { return self._s[3309]! } - public var Compose_ChannelTokenListPlaceholder: String { return self._s[3310]! } - public var Group_Management_AddModeratorHelp: String { return self._s[3312]! } - public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[3313]! } - public var Forward_ErrorPublicPollDisabledInChannels: String { return self._s[3314]! } - public var CallFeedback_IncludeLogsInfo: String { return self._s[3316]! } + public var Login_EmailNotConfiguredError: String { return self._s[3303]! } + public var AutoDownloadSettings_LimitBySize: String { return self._s[3304]! } + public var PrivacySettings_LastSeenNobody: String { return self._s[3305]! } + public var Permissions_CellularDataText_v0: String { return self._s[3306]! } + public var Conversation_EncryptionProcessing: String { return self._s[3307]! } + public var GroupPermission_Delete: String { return self._s[3308]! } + public var Contacts_SortByName: String { return self._s[3309]! } + public var TwoStepAuth_RecoveryUnavailable: String { return self._s[3310]! } + public var Compose_ChannelTokenListPlaceholder: String { return self._s[3311]! } + public var Group_Management_AddModeratorHelp: String { return self._s[3313]! } + public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[3314]! } + public var Forward_ErrorPublicPollDisabledInChannels: String { return self._s[3315]! } + public var CallFeedback_IncludeLogsInfo: String { return self._s[3317]! } public func PUSH_CHANNEL_MESSAGE_QUIZ(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3317]!, self._r[3317]!, [_1]) + return formatWithArgumentRanges(self._s[3318]!, self._r[3318]!, [_1]) } public func SecretVideo_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3318]!, self._r[3318]!, [_0]) + return formatWithArgumentRanges(self._s[3319]!, self._r[3319]!, [_0]) } - public var ChatList_Context_Delete: String { return self._s[3319]! } - public var VoiceChat_InviteMember: String { return self._s[3320]! } - public var PrivacyPhoneNumberSettings_CustomDisabledHelp: String { return self._s[3321]! } - public var Conversation_Processing: String { return self._s[3322]! } - public var TwoStepAuth_EmailCodeExpired: String { return self._s[3323]! } - public var ChatSettings_Stickers: String { return self._s[3324]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[3325]! } - public var Passport_Language_cs: String { return self._s[3326]! } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3328]! } - public var Conversation_Contact: String { return self._s[3329]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[3330]! } - public var SocksProxySetup_PasteFromClipboard: String { return self._s[3331]! } - public var Theme_Unsupported: String { return self._s[3332]! } - public var Privacy_TopPeersWarning: String { return self._s[3333]! } - public var InviteLink_Title: String { return self._s[3335]! } + public var ChatList_Context_Delete: String { return self._s[3320]! } + public var VoiceChat_InviteMember: String { return self._s[3321]! } + public var PrivacyPhoneNumberSettings_CustomDisabledHelp: String { return self._s[3322]! } + public var Conversation_Processing: String { return self._s[3323]! } + public var TwoStepAuth_EmailCodeExpired: String { return self._s[3324]! } + public var ChatSettings_Stickers: String { return self._s[3325]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[3326]! } + public var Passport_Language_cs: String { return self._s[3327]! } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3329]! } + public var Conversation_Contact: String { return self._s[3330]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[3331]! } + public var SocksProxySetup_PasteFromClipboard: String { return self._s[3332]! } + public var Theme_Unsupported: String { return self._s[3333]! } + public var Privacy_TopPeersWarning: String { return self._s[3334]! } + public var InviteLink_Title: String { return self._s[3336]! } public func UserInfo_BlockConfirmationTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3336]!, self._r[3336]!, [_0]) + return formatWithArgumentRanges(self._s[3337]!, self._r[3337]!, [_0]) } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3337]! } - public var TwoStepAuth_RemovePassword: String { return self._s[3338]! } - public var Settings_CheckPhoneNumberText: String { return self._s[3339]! } - public var PeopleNearby_Users: String { return self._s[3340]! } - public var Appearance_TextSize_UseSystem: String { return self._s[3341]! } - public var Settings_SetProfilePhoto: String { return self._s[3342]! } - public var Conversation_ContextMenuBan: String { return self._s[3343]! } - public var KeyCommand_ScrollUp: String { return self._s[3344]! } - public var Settings_ChatSettings: String { return self._s[3346]! } - public var CallList_RecentCallsHeader: String { return self._s[3347]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3338]! } + public var TwoStepAuth_RemovePassword: String { return self._s[3339]! } + public var Settings_CheckPhoneNumberText: String { return self._s[3340]! } + public var PeopleNearby_Users: String { return self._s[3341]! } + public var Appearance_TextSize_UseSystem: String { return self._s[3342]! } + public var Settings_SetProfilePhoto: String { return self._s[3343]! } + public var Conversation_ContextMenuBan: String { return self._s[3344]! } + public var KeyCommand_ScrollUp: String { return self._s[3345]! } + public var Settings_ChatSettings: String { return self._s[3347]! } + public var CallList_RecentCallsHeader: String { return self._s[3348]! } public func PUSH_CHAT_MESSAGE_VIDEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3348]!, self._r[3348]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3349]!, self._r[3349]!, [_1, _2]) } - public var Stats_GroupTopInvitersTitle: String { return self._s[3349]! } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3350]! } - public var VoiceChat_StartRecordingTitle: String { return self._s[3351]! } - public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[3353]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[3354]! } - public var VoiceOver_ChatList_MessageRead: String { return self._s[3355]! } - public var Stats_GroupTopPoster_Promote: String { return self._s[3356]! } - public var Cache_Title: String { return self._s[3357]! } + public var Stats_GroupTopInvitersTitle: String { return self._s[3350]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3351]! } + public var VoiceChat_StartRecordingTitle: String { return self._s[3352]! } + public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[3354]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[3355]! } + public var VoiceOver_ChatList_MessageRead: String { return self._s[3356]! } + public var Stats_GroupTopPoster_Promote: String { return self._s[3357]! } + public var Cache_Title: String { return self._s[3358]! } public func Conversation_AutoremoveTimerSetToastText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3358]!, self._r[3358]!, [_0]) + return formatWithArgumentRanges(self._s[3359]!, self._r[3359]!, [_0]) } - public var Clipboard_SendPhoto: String { return self._s[3359]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[3361]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3362]! } - public var WatchRemote_AlertTitle: String { return self._s[3365]! } - public var Appearance_ReduceMotion: String { return self._s[3366]! } + public var Clipboard_SendPhoto: String { return self._s[3360]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[3362]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3363]! } + public var WatchRemote_AlertTitle: String { return self._s[3366]! } + public var Appearance_ReduceMotion: String { return self._s[3367]! } public func PUSH_CHAT_MESSAGE_ROUND(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3369]!, self._r[3369]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3370]!, self._r[3370]!, [_1, _2]) } - public var Notifications_PermissionsSuppressWarningText: String { return self._s[3370]! } - public var ChatList_UndoArchiveHiddenTitle: String { return self._s[3371]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[3372]! } + public var Notifications_PermissionsSuppressWarningText: String { return self._s[3371]! } + public var ChatList_UndoArchiveHiddenTitle: String { return self._s[3372]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[3373]! } public func Call_CallInProgressVoiceChatMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3373]!, self._r[3373]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3374]!, self._r[3374]!, [_1, _2]) } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3375]!, self._r[3375]!, [_0]) + return formatWithArgumentRanges(self._s[3376]!, self._r[3376]!, [_0]) } - public var ChatListFolder_DiscardConfirmation: String { return self._s[3376]! } + public var ChatListFolder_DiscardConfirmation: String { return self._s[3377]! } public func Conversation_RestrictedStickersTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3377]!, self._r[3377]!, [_0]) + return formatWithArgumentRanges(self._s[3378]!, self._r[3378]!, [_0]) } - public var InstantPage_Search: String { return self._s[3378]! } - public var ChatState_WaitingForNetwork: String { return self._s[3379]! } - public var GroupInfo_Sound: String { return self._s[3380]! } - public var NotificationsSound_Telegraph: String { return self._s[3381]! } - public var NotificationsSound_Hello: String { return self._s[3382]! } - public var VoiceChat_LeaveConfirmation: String { return self._s[3383]! } - public var UserInfo_LinkForwardTooltip_SavedMessages_One: String { return self._s[3384]! } - public var Passport_FieldIdentityDetailsHelp: String { return self._s[3385]! } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[3386]! } - public var Conversation_HoldForVideo: String { return self._s[3387]! } - public var Conversation_PinOlderMessageAlertText: String { return self._s[3388]! } - public var Appearance_ShareTheme: String { return self._s[3389]! } - public var TwoStepAuth_SetupHint: String { return self._s[3390]! } - public var Stats_GrowthTitle: String { return self._s[3393]! } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[3394]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[3395]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[3396]! } - public var GroupPermission_NoSendMessages: String { return self._s[3399]! } - public var Conversation_SetReminder_Title: String { return self._s[3400]! } - public var Privacy_Calls_CustomHelp: String { return self._s[3401]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3402]! } + public var InstantPage_Search: String { return self._s[3379]! } + public var ChatState_WaitingForNetwork: String { return self._s[3380]! } + public var GroupInfo_Sound: String { return self._s[3381]! } + public var NotificationsSound_Telegraph: String { return self._s[3382]! } + public var NotificationsSound_Hello: String { return self._s[3383]! } + public var VoiceChat_LeaveConfirmation: String { return self._s[3384]! } + public var UserInfo_LinkForwardTooltip_SavedMessages_One: String { return self._s[3385]! } + public var Passport_FieldIdentityDetailsHelp: String { return self._s[3386]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[3387]! } + public var Conversation_HoldForVideo: String { return self._s[3388]! } + public var Conversation_PinOlderMessageAlertText: String { return self._s[3389]! } + public var Appearance_ShareTheme: String { return self._s[3390]! } + public var TwoStepAuth_SetupHint: String { return self._s[3391]! } + public var Stats_GrowthTitle: String { return self._s[3394]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[3395]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[3396]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[3397]! } + public var GroupPermission_NoSendMessages: String { return self._s[3400]! } + public var Conversation_SetReminder_Title: String { return self._s[3401]! } + public var Privacy_Calls_CustomHelp: String { return self._s[3402]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3403]! } public func ClearCache_StorageTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3403]!, self._r[3403]!, [_0]) + return formatWithArgumentRanges(self._s[3404]!, self._r[3404]!, [_0]) } - public var InviteLinks_InviteLinkExpired: String { return self._s[3405]! } - public var Undo_SecretChatDeleted: String { return self._s[3406]! } - public var PhotoEditor_ContrastTool: String { return self._s[3407]! } - public var Privacy_Forwards: String { return self._s[3408]! } - public var AuthSessions_LoggedInWithTelegram: String { return self._s[3409]! } - public var KeyCommand_SendMessage: String { return self._s[3411]! } - public var Conversation_PrivateMessageLinkCopiedLong: String { return self._s[3412]! } + public var InviteLinks_InviteLinkExpired: String { return self._s[3406]! } + public var Undo_SecretChatDeleted: String { return self._s[3407]! } + public var PhotoEditor_ContrastTool: String { return self._s[3408]! } + public var Privacy_Forwards: String { return self._s[3409]! } + public var AuthSessions_LoggedInWithTelegram: String { return self._s[3410]! } + public var KeyCommand_SendMessage: String { return self._s[3412]! } + public var Conversation_PrivateMessageLinkCopiedLong: String { return self._s[3413]! } public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3413]!, self._r[3413]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3414]!, self._r[3414]!, [_1, _2]) } - public var GroupPermission_NoSendGifs: String { return self._s[3414]! } - public var Notification_MessageLifetime2s: String { return self._s[3415]! } - public var Message_Theme: String { return self._s[3416]! } - public var Conversation_Dice_u1F3AF: String { return self._s[3419]! } + public var GroupPermission_NoSendGifs: String { return self._s[3415]! } + public var Notification_MessageLifetime2s: String { return self._s[3416]! } + public var Message_Theme: String { return self._s[3417]! } + public var Conversation_Dice_u1F3AF: String { return self._s[3420]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3420]!, self._r[3420]!, [_0]) + return formatWithArgumentRanges(self._s[3421]!, self._r[3421]!, [_0]) } - public var Group_UpgradeNoticeHeader: String { return self._s[3422]! } - public var PeerInfo_BioExpand: String { return self._s[3423]! } - public var Passport_DeletePersonalDetails: String { return self._s[3424]! } - public var Widget_NoUsers: String { return self._s[3425]! } - public var TwoStepAuth_AddHintTitle: String { return self._s[3426]! } - public var Login_TermsOfServiceDecline: String { return self._s[3427]! } - public var CreatePoll_QuizTip: String { return self._s[3429]! } - public var Watch_LastSeen_WithinAWeek: String { return self._s[3430]! } - public var MessagePoll_SubmitVote: String { return self._s[3432]! } - public var ChatSettings_AutoDownloadEnabled: String { return self._s[3433]! } - public var Passport_Address_EditRentalAgreement: String { return self._s[3434]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[3435]! } - public var Conversation_UpdateTelegram: String { return self._s[3436]! } + public var Group_UpgradeNoticeHeader: String { return self._s[3423]! } + public var PeerInfo_BioExpand: String { return self._s[3424]! } + public var Passport_DeletePersonalDetails: String { return self._s[3425]! } + public var Widget_NoUsers: String { return self._s[3426]! } + public var TwoStepAuth_AddHintTitle: String { return self._s[3427]! } + public var Login_TermsOfServiceDecline: String { return self._s[3428]! } + public var CreatePoll_QuizTip: String { return self._s[3430]! } + public var Watch_LastSeen_WithinAWeek: String { return self._s[3431]! } + public var MessagePoll_SubmitVote: String { return self._s[3433]! } + public var ChatSettings_AutoDownloadEnabled: String { return self._s[3434]! } + public var Passport_Address_EditRentalAgreement: String { return self._s[3435]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[3436]! } + public var Conversation_UpdateTelegram: String { return self._s[3437]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3437]!, self._r[3437]!, [_0]) + return formatWithArgumentRanges(self._s[3438]!, self._r[3438]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[3438]! } - public var CallSettings_Always: String { return self._s[3439]! } - public var ChannelInfo_ScamChannelWarning: String { return self._s[3440]! } - public var VoiceChat_MutedByAdminHelp: String { return self._s[3441]! } - public var Login_TermsOfServiceHeader: String { return self._s[3442]! } - public var KeyCommand_ChatInfo: String { return self._s[3443]! } - public var MessagePoll_LabelPoll: String { return self._s[3444]! } - public var Paint_Clear: String { return self._s[3445]! } - public var PeerInfo_ButtonMute: String { return self._s[3446]! } - public var LastSeen_WithinAWeek: String { return self._s[3447]! } - public var Invitation_JoinVoiceChatAsSpeaker: String { return self._s[3448]! } - public var Passport_Identity_FrontSide: String { return self._s[3449]! } - public var Stickers_GroupStickers: String { return self._s[3450]! } - public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[3451]! } + public var UserInfo_About_Placeholder: String { return self._s[3439]! } + public var CallSettings_Always: String { return self._s[3440]! } + public var ChannelInfo_ScamChannelWarning: String { return self._s[3441]! } + public var VoiceChat_MutedByAdminHelp: String { return self._s[3442]! } + public var Login_TermsOfServiceHeader: String { return self._s[3443]! } + public var KeyCommand_ChatInfo: String { return self._s[3444]! } + public var MessagePoll_LabelPoll: String { return self._s[3445]! } + public var Paint_Clear: String { return self._s[3446]! } + public var PeerInfo_ButtonMute: String { return self._s[3447]! } + public var LastSeen_WithinAWeek: String { return self._s[3448]! } + public var Invitation_JoinVoiceChatAsSpeaker: String { return self._s[3449]! } + public var Passport_Identity_FrontSide: String { return self._s[3450]! } + public var Stickers_GroupStickers: String { return self._s[3451]! } + public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[3452]! } public func Map_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3452]!, self._r[3452]!, [_0]) + return formatWithArgumentRanges(self._s[3453]!, self._r[3453]!, [_0]) } - public var VoiceOver_BotCommands: String { return self._s[3453]! } + public var VoiceOver_BotCommands: String { return self._s[3454]! } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3456]!, self._r[3456]!, [_1]) + return formatWithArgumentRanges(self._s[3457]!, self._r[3457]!, [_1]) } - public var SocksProxySetup_ProxyStatusConnected: String { return self._s[3457]! } - public var Chat_MultipleTextMessagesDisabled: String { return self._s[3458]! } - public var InviteLink_ContextDelete: String { return self._s[3459]! } + public var SocksProxySetup_ProxyStatusConnected: String { return self._s[3458]! } + public var Chat_MultipleTextMessagesDisabled: String { return self._s[3459]! } + public var InviteLink_ContextDelete: String { return self._s[3460]! } public func Notification_LeftChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3460]!, self._r[3460]!, [_0]) + return formatWithArgumentRanges(self._s[3461]!, self._r[3461]!, [_0]) } - public var WebSearch_SearchNoResults: String { return self._s[3462]! } - public var Channel_DiscussionGroup_Create: String { return self._s[3463]! } - public var Passport_Language_es: String { return self._s[3464]! } - public var EnterPasscode_EnterCurrentPasscode: String { return self._s[3465]! } - public var Map_LiveLocationShowAll: String { return self._s[3466]! } - public var Cache_MaximumCacheSizeHelp: String { return self._s[3468]! } - public var Map_OpenInGoogleMaps: String { return self._s[3469]! } - public var CheckoutInfo_ErrorNameInvalid: String { return self._s[3471]! } - public var EditTheme_Create_BottomInfo: String { return self._s[3472]! } - public var PhotoEditor_BlurToolLinear: String { return self._s[3473]! } + public var WebSearch_SearchNoResults: String { return self._s[3463]! } + public var Channel_DiscussionGroup_Create: String { return self._s[3464]! } + public var Passport_Language_es: String { return self._s[3465]! } + public var EnterPasscode_EnterCurrentPasscode: String { return self._s[3466]! } + public var Map_LiveLocationShowAll: String { return self._s[3467]! } + public var Cache_MaximumCacheSizeHelp: String { return self._s[3469]! } + public var Map_OpenInGoogleMaps: String { return self._s[3470]! } + public var CheckoutInfo_ErrorNameInvalid: String { return self._s[3472]! } + public var EditTheme_Create_BottomInfo: String { return self._s[3473]! } + public var PhotoEditor_BlurToolLinear: String { return self._s[3474]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3474]!, self._r[3474]!, [_0]) + return formatWithArgumentRanges(self._s[3475]!, self._r[3475]!, [_0]) } - public var Passport_Phone_Delete: String { return self._s[3475]! } - public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[3476]! } - public var PrivacySettings_PrivacyTitle: String { return self._s[3477]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[3478]! } + public var Passport_Phone_Delete: String { return self._s[3476]! } + public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[3477]! } + public var PrivacySettings_PrivacyTitle: String { return self._s[3478]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[3479]! } public func EncryptionKey_Description(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3479]!, self._r[3479]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3480]!, self._r[3480]!, [_1, _2]) } - public var LogoutOptions_LogOutInfo: String { return self._s[3480]! } - public var Cache_ByPeerHeader: String { return self._s[3482]! } - public var Username_InvalidCharacters: String { return self._s[3483]! } - public var Checkout_ShippingAddress: String { return self._s[3484]! } + public var LogoutOptions_LogOutInfo: String { return self._s[3481]! } + public var Cache_ByPeerHeader: String { return self._s[3483]! } + public var Username_InvalidCharacters: String { return self._s[3484]! } + public var Checkout_ShippingAddress: String { return self._s[3485]! } public func PUSH_CHAT_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3485]!, self._r[3485]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[3486]!, self._r[3486]!, [_1, _2, _3, _4]) } - public var VoiceChat_LeaveAndEndVoiceChat: String { return self._s[3487]! } - public var Conversation_AddContact: String { return self._s[3488]! } - public var Passport_Address_EditUtilityBill: String { return self._s[3489]! } - public var InviteLink_ContextGetQRCode: String { return self._s[3490]! } - public var Conversation_ChecksTooltip_Delivered: String { return self._s[3492]! } + public var VoiceChat_LeaveAndEndVoiceChat: String { return self._s[3488]! } + public var Conversation_AddContact: String { return self._s[3489]! } + public var Passport_Address_EditUtilityBill: String { return self._s[3490]! } + public var InviteLink_ContextGetQRCode: String { return self._s[3491]! } + public var Conversation_ChecksTooltip_Delivered: String { return self._s[3493]! } public func Channel_AdminLog_MessageAddedAdminNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3493]!, self._r[3493]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3494]!, self._r[3494]!, [_1, _2]) } - public var Message_Video: String { return self._s[3494]! } + public var Message_Video: String { return self._s[3495]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3495]!, self._r[3495]!, [_0]) + return formatWithArgumentRanges(self._s[3496]!, self._r[3496]!, [_0]) } public func Conversation_Megabytes(_ _0: Float) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3496]!, self._r[3496]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[3497]!, self._r[3497]!, ["\(_0)"]) } - public var InviteLink_ReactivateLink: String { return self._s[3497]! } - public var Passport_Language_km: String { return self._s[3498]! } + public var InviteLink_ReactivateLink: String { return self._s[3498]! } + public var Passport_Language_km: String { return self._s[3499]! } public func PUSH_MESSAGE_CHANNEL_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3499]!, self._r[3499]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3500]!, self._r[3500]!, [_1, _2, _3]) } - public var EmptyGroupInfo_Line4: String { return self._s[3500]! } - public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[3502]! } - public var Notification_CallCanceledShort: String { return self._s[3503]! } - public var PhotoEditor_FadeTool: String { return self._s[3504]! } - public var Group_PublicLink_Info: String { return self._s[3505]! } - public var Contacts_DeselectAll: String { return self._s[3506]! } - public var Conversation_Moderate_Delete: String { return self._s[3507]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[3508]! } - public var NotificationsSound_Note: String { return self._s[3511]! } + public var EmptyGroupInfo_Line4: String { return self._s[3501]! } + public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[3503]! } + public var Notification_CallCanceledShort: String { return self._s[3504]! } + public var PhotoEditor_FadeTool: String { return self._s[3505]! } + public var Group_PublicLink_Info: String { return self._s[3506]! } + public var Contacts_DeselectAll: String { return self._s[3507]! } + public var Conversation_Moderate_Delete: String { return self._s[3508]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[3509]! } + public var NotificationsSound_Note: String { return self._s[3512]! } public func Message_PaymentSent(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3512]!, self._r[3512]!, [_0]) + return formatWithArgumentRanges(self._s[3513]!, self._r[3513]!, [_0]) } - public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[3513]! } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3515]! } - public var DialogList_SearchSectionGlobal: String { return self._s[3516]! } - public var AccessDenied_Settings: String { return self._s[3517]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[3518]! } - public var AuthSessions_EmptyTitle: String { return self._s[3519]! } - public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[3520]! } - public var GroupInfo_GroupType: String { return self._s[3521]! } - public var Calls_Missed: String { return self._s[3522]! } - public var Contacts_VoiceOver_AddContact: String { return self._s[3523]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[3525]! } - public var Passport_Language_uz: String { return self._s[3526]! } - public var Conversation_StopQuizConfirmationTitle: String { return self._s[3527]! } - public var PhotoEditor_BlurToolPortrait: String { return self._s[3528]! } - public var Map_ChooseLocationTitle: String { return self._s[3529]! } - public var Checkout_EnterPassword: String { return self._s[3530]! } - public var GroupInfo_ConvertToSupergroup: String { return self._s[3531]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[3532]! } - public var NetworkUsageSettings_Title: String { return self._s[3533]! } - public var Location_ProximityAlertCancelled: String { return self._s[3534]! } - public var SettingsSearch_Synonyms_ChatSettings_IntentsSettings: String { return self._s[3535]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[3536]! } - public var Compose_NewChannel: String { return self._s[3537]! } - public var Privacy_PaymentsClearInfo: String { return self._s[3539]! } + public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[3514]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3516]! } + public var DialogList_SearchSectionGlobal: String { return self._s[3517]! } + public var AccessDenied_Settings: String { return self._s[3518]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[3519]! } + public var AuthSessions_EmptyTitle: String { return self._s[3520]! } + public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[3521]! } + public var GroupInfo_GroupType: String { return self._s[3522]! } + public var Calls_Missed: String { return self._s[3523]! } + public var Contacts_VoiceOver_AddContact: String { return self._s[3524]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[3526]! } + public var Passport_Language_uz: String { return self._s[3527]! } + public var Conversation_StopQuizConfirmationTitle: String { return self._s[3528]! } + public var PhotoEditor_BlurToolPortrait: String { return self._s[3529]! } + public var Map_ChooseLocationTitle: String { return self._s[3530]! } + public var Checkout_EnterPassword: String { return self._s[3531]! } + public var GroupInfo_ConvertToSupergroup: String { return self._s[3532]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[3533]! } + public var NetworkUsageSettings_Title: String { return self._s[3534]! } + public var Location_ProximityAlertCancelled: String { return self._s[3535]! } + public var SettingsSearch_Synonyms_ChatSettings_IntentsSettings: String { return self._s[3536]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[3537]! } + public var Compose_NewChannel: String { return self._s[3538]! } + public var Privacy_PaymentsClearInfo: String { return self._s[3540]! } public func PUSH_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3540]!, self._r[3540]!, [_1]) + return formatWithArgumentRanges(self._s[3541]!, self._r[3541]!, [_1]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[3541]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3542]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[3545]! } - public var WallpaperSearch_ColorBrown: String { return self._s[3546]! } - public var Appearance_AppIconDefault: String { return self._s[3547]! } - public var StickerSettings_ContextInfo: String { return self._s[3550]! } - public var Channel_AddBotErrorNoRights: String { return self._s[3551]! } - public var Passport_FieldPhone: String { return self._s[3553]! } - public var Contacts_PermissionsTitle: String { return self._s[3554]! } - public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3555]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[3542]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3543]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[3546]! } + public var WallpaperSearch_ColorBrown: String { return self._s[3547]! } + public var Appearance_AppIconDefault: String { return self._s[3548]! } + public var StickerSettings_ContextInfo: String { return self._s[3551]! } + public var Channel_AddBotErrorNoRights: String { return self._s[3552]! } + public var Passport_FieldPhone: String { return self._s[3554]! } + public var Contacts_PermissionsTitle: String { return self._s[3555]! } + public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3556]! } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3556]!, self._r[3556]!, [_0]) + return formatWithArgumentRanges(self._s[3557]!, self._r[3557]!, [_0]) } - public var Bot_Unblock: String { return self._s[3557]! } - public var PasscodeSettings_SimplePasscode: String { return self._s[3558]! } - public var InviteLink_InviteLinkCopiedText: String { return self._s[3559]! } - public var Passport_PasswordHelp: String { return self._s[3560]! } - public var Watch_Conversation_UserInfo: String { return self._s[3561]! } + public var Bot_Unblock: String { return self._s[3558]! } + public var PasscodeSettings_SimplePasscode: String { return self._s[3559]! } + public var InviteLink_InviteLinkCopiedText: String { return self._s[3560]! } + public var Passport_PasswordHelp: String { return self._s[3561]! } + public var Watch_Conversation_UserInfo: String { return self._s[3562]! } public func Channel_AdminLog_MessageChangedGroupGeoLocation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3565]!, self._r[3565]!, [_0]) + return formatWithArgumentRanges(self._s[3566]!, self._r[3566]!, [_0]) } - public var State_Connecting: String { return self._s[3567]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3568]! } - public var TextFormat_AddLinkPlaceholder: String { return self._s[3569]! } - public var Conversation_Dice_u1F3B2: String { return self._s[3570]! } + public var State_Connecting: String { return self._s[3568]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3569]! } + public var TextFormat_AddLinkPlaceholder: String { return self._s[3570]! } + public var Conversation_Dice_u1F3B2: String { return self._s[3571]! } public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3571]!, self._r[3571]!, [_0]) + return formatWithArgumentRanges(self._s[3572]!, self._r[3572]!, [_0]) } - public var Conversation_SendingOptionsTooltip: String { return self._s[3572]! } - public var ChatList_UndoArchiveTitle: String { return self._s[3573]! } - public var ChatList_EmptyChatListNewMessage: String { return self._s[3574]! } - public var WallpaperSearch_ColorGreen: String { return self._s[3576]! } - public var PhotoEditor_BlurToolOff: String { return self._s[3577]! } - public var Conversation_AutoremoveOff: String { return self._s[3578]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[3579]! } - public var Weekday_Saturday: String { return self._s[3580]! } - public var DialogList_Unread: String { return self._s[3581]! } - public var Watch_LastSeen_ALongTimeAgo: String { return self._s[3582]! } - public var Stats_GroupPosters: String { return self._s[3583]! } + public var Conversation_SendingOptionsTooltip: String { return self._s[3573]! } + public var ChatList_UndoArchiveTitle: String { return self._s[3574]! } + public var ChatList_EmptyChatListNewMessage: String { return self._s[3575]! } + public var WallpaperSearch_ColorGreen: String { return self._s[3577]! } + public var PhotoEditor_BlurToolOff: String { return self._s[3578]! } + public var Conversation_AutoremoveOff: String { return self._s[3579]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[3580]! } + public var Weekday_Saturday: String { return self._s[3581]! } + public var DialogList_Unread: String { return self._s[3582]! } + public var Watch_LastSeen_ALongTimeAgo: String { return self._s[3583]! } + public var Stats_GroupPosters: String { return self._s[3584]! } public func PUSH_ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3584]!, self._r[3584]!, [_1]) + return formatWithArgumentRanges(self._s[3585]!, self._r[3585]!, [_1]) } - public var Conversation_AlsoClearCacheTitle: String { return self._s[3585]! } + public var Conversation_AlsoClearCacheTitle: String { return self._s[3586]! } public func Conversation_ForwardTooltip_TwoChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3586]!, self._r[3586]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3587]!, self._r[3587]!, [_0, _1]) } public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3589]!, self._r[3589]!, [_0]) + return formatWithArgumentRanges(self._s[3590]!, self._r[3590]!, [_0]) } - public var ReportPeer_ReasonChildAbuse: String { return self._s[3590]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[3591]! } public func Channel_AdminLog_MessageUnkickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3591]!, self._r[3591]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3592]!, self._r[3592]!, [_1, _2]) } - public var InfoPlist_NSContactsUsageDescription: String { return self._s[3592]! } - public var Conversation_EmailCopied: String { return self._s[3594]! } - public var AutoNightTheme_UseSunsetSunrise: String { return self._s[3595]! } - public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[3596]! } - public var Call_VoiceOver_VoiceCallCanceled: String { return self._s[3597]! } - public var Passport_Language_dv: String { return self._s[3598]! } - public var GroupPermission_AddSuccess: String { return self._s[3600]! } - public var Passport_Email_Help: String { return self._s[3601]! } - public var Call_ReportPlaceholder: String { return self._s[3602]! } - public var CreatePoll_AddOption: String { return self._s[3603]! } - public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3605]! } - public var PeerInfo_ButtonLeave: String { return self._s[3606]! } - public var PhotoEditor_TiltShift: String { return self._s[3609]! } - public var SecretGif_Title: String { return self._s[3611]! } - public var GroupInfo_InviteLinks: String { return self._s[3612]! } - public var PhotoEditor_QualityVeryLow: String { return self._s[3613]! } - public var SocksProxySetup_Connecting: String { return self._s[3615]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[3616]! } - public var ContactInfo_PhoneLabelWork: String { return self._s[3617]! } - public var Stats_GroupTopHoursTitle: String { return self._s[3618]! } - public var Compose_NewMessage: String { return self._s[3619]! } - public var VoiceOver_Common_SwitchHint: String { return self._s[3620]! } - public var NotificationsSound_Synth: String { return self._s[3621]! } - public var ChatImport_UserErrorNotMutual: String { return self._s[3622]! } - public var Conversation_FileOpenIn: String { return self._s[3623]! } - public var AutoDownloadSettings_WifiTitle: String { return self._s[3624]! } - public var UserInfo_SendMessage: String { return self._s[3625]! } - public var Checkout_PayWithFaceId: String { return self._s[3626]! } + public var InfoPlist_NSContactsUsageDescription: String { return self._s[3593]! } + public var Conversation_EmailCopied: String { return self._s[3595]! } + public var AutoNightTheme_UseSunsetSunrise: String { return self._s[3596]! } + public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[3597]! } + public var Call_VoiceOver_VoiceCallCanceled: String { return self._s[3598]! } + public var VoiceChat_LateBy: String { return self._s[3599]! } + public var Passport_Language_dv: String { return self._s[3600]! } + public var GroupPermission_AddSuccess: String { return self._s[3602]! } + public var Passport_Email_Help: String { return self._s[3603]! } + public var Call_ReportPlaceholder: String { return self._s[3604]! } + public var CreatePoll_AddOption: String { return self._s[3605]! } + public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3607]! } + public var PeerInfo_ButtonLeave: String { return self._s[3608]! } + public var PhotoEditor_TiltShift: String { return self._s[3611]! } + public var SecretGif_Title: String { return self._s[3613]! } + public var GroupInfo_InviteLinks: String { return self._s[3614]! } + public var PhotoEditor_QualityVeryLow: String { return self._s[3615]! } + public var SocksProxySetup_Connecting: String { return self._s[3617]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[3618]! } + public var ContactInfo_PhoneLabelWork: String { return self._s[3619]! } + public var Stats_GroupTopHoursTitle: String { return self._s[3620]! } + public var Compose_NewMessage: String { return self._s[3621]! } + public var VoiceOver_Common_SwitchHint: String { return self._s[3622]! } + public var NotificationsSound_Synth: String { return self._s[3623]! } + public var ChatImport_UserErrorNotMutual: String { return self._s[3624]! } + public var Conversation_FileOpenIn: String { return self._s[3625]! } + public var AutoDownloadSettings_WifiTitle: String { return self._s[3626]! } + public var UserInfo_SendMessage: String { return self._s[3627]! } + public var Checkout_PayWithFaceId: String { return self._s[3628]! } public func Map_LiveLocationShortHour(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3627]!, self._r[3627]!, [_0]) + return formatWithArgumentRanges(self._s[3629]!, self._r[3629]!, [_0]) } - public var TextFormat_Strikethrough: String { return self._s[3628]! } - public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[3629]! } - public var Conversation_ViewChannel: String { return self._s[3630]! } + public var TextFormat_Strikethrough: String { return self._s[3630]! } + public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[3631]! } + public var Conversation_ViewChannel: String { return self._s[3632]! } public func Message_ForwardedMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3631]!, self._r[3631]!, [_0]) + return formatWithArgumentRanges(self._s[3633]!, self._r[3633]!, [_0]) } - public var Channel_Stickers_Placeholder: String { return self._s[3632]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3633]! } - public var Message_ScamAccount: String { return self._s[3634]! } - public var Camera_FlashAuto: String { return self._s[3635]! } - public var Conversation_EncryptedDescription1: String { return self._s[3636]! } - public var LocalGroup_Text: String { return self._s[3637]! } - public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[3638]! } - public var UserInfo_FirstNamePlaceholder: String { return self._s[3639]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[3640]! } - public var Conversation_EncryptedDescription2: String { return self._s[3641]! } - public var Conversation_CancelForwardText: String { return self._s[3642]! } - public var Notification_GroupActivated: String { return self._s[3643]! } - public var LastSeen_Lately: String { return self._s[3644]! } - public var Conversation_EncryptedDescription3: String { return self._s[3645]! } - public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[3646]! } - public var Conversation_SwipeToReplyHintText: String { return self._s[3647]! } - public var Conversation_EncryptedDescription4: String { return self._s[3648]! } - public var SharedMedia_EmptyTitle: String { return self._s[3649]! } - public var Appearance_CreateTheme: String { return self._s[3650]! } - public var Stats_SharesPerPost: String { return self._s[3651]! } - public var Contacts_TabTitle: String { return self._s[3652]! } - public var Weekday_ShortThursday: String { return self._s[3653]! } - public var MessageTimer_Forever: String { return self._s[3654]! } - public var ChatListFolder_CategoryArchived: String { return self._s[3655]! } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3656]! } - public var EditTheme_Create_TopInfo: String { return self._s[3658]! } + public var Channel_Stickers_Placeholder: String { return self._s[3634]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3635]! } + public var Message_ScamAccount: String { return self._s[3636]! } + public var Camera_FlashAuto: String { return self._s[3637]! } + public var Conversation_EncryptedDescription1: String { return self._s[3638]! } + public var LocalGroup_Text: String { return self._s[3639]! } + public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[3640]! } + public var UserInfo_FirstNamePlaceholder: String { return self._s[3641]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[3642]! } + public var Conversation_EncryptedDescription2: String { return self._s[3643]! } + public var Conversation_CancelForwardText: String { return self._s[3644]! } + public var Notification_GroupActivated: String { return self._s[3645]! } + public var LastSeen_Lately: String { return self._s[3646]! } + public var Conversation_EncryptedDescription3: String { return self._s[3647]! } + public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[3648]! } + public var Conversation_SwipeToReplyHintText: String { return self._s[3649]! } + public var Conversation_EncryptedDescription4: String { return self._s[3650]! } + public var SharedMedia_EmptyTitle: String { return self._s[3651]! } + public var Appearance_CreateTheme: String { return self._s[3652]! } + public var Stats_SharesPerPost: String { return self._s[3653]! } + public var Contacts_TabTitle: String { return self._s[3654]! } + public var Weekday_ShortThursday: String { return self._s[3655]! } + public var MessageTimer_Forever: String { return self._s[3656]! } + public var ChatListFolder_CategoryArchived: String { return self._s[3657]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3658]! } + public var EditTheme_Create_TopInfo: String { return self._s[3660]! } public func VoiceOver_ChatList_MessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3659]!, self._r[3659]!, [_0]) + return formatWithArgumentRanges(self._s[3661]!, self._r[3661]!, [_0]) } - public var Month_GenDecember: String { return self._s[3660]! } - public var EnterPasscode_EnterPasscode: String { return self._s[3661]! } - public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[3662]! } - public var PeopleNearby_CreateGroup: String { return self._s[3664]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3665]! } - public var Paint_ClearConfirm: String { return self._s[3666]! } - public var ChatList_ReadAll: String { return self._s[3667]! } - public var ChatSettings_IntentsSettings: String { return self._s[3668]! } - public var Passport_PassportInformation: String { return self._s[3670]! } - public var Login_CheckOtherSessionMessages: String { return self._s[3672]! } - public var Location_ProximityNotification_DistanceMI: String { return self._s[3675]! } - public var PhotoEditor_ExposureTool: String { return self._s[3676]! } - public var Group_Username_CreatePrivateLinkHelp: String { return self._s[3677]! } - public var SettingsSearch_Synonyms_Watch: String { return self._s[3678]! } - public var Stats_GroupTopPoster_History: String { return self._s[3679]! } - public var UserInfo_AddPhone: String { return self._s[3680]! } - public var Media_SendWithTimer: String { return self._s[3682]! } - public var SettingsSearch_Synonyms_Notifications_Title: String { return self._s[3683]! } - public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3684]! } - public var GroupInfo_GroupHistoryShort: String { return self._s[3685]! } - public var PasscodeSettings_AutoLock_Disabled: String { return self._s[3686]! } - public var ChatList_Context_Unarchive: String { return self._s[3688]! } + public var Month_GenDecember: String { return self._s[3662]! } + public var EnterPasscode_EnterPasscode: String { return self._s[3663]! } + public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[3664]! } + public var PeopleNearby_CreateGroup: String { return self._s[3666]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3667]! } + public var Paint_ClearConfirm: String { return self._s[3668]! } + public var ChatList_ReadAll: String { return self._s[3669]! } + public var ChatSettings_IntentsSettings: String { return self._s[3670]! } + public var Passport_PassportInformation: String { return self._s[3672]! } + public var Login_CheckOtherSessionMessages: String { return self._s[3674]! } + public var Location_ProximityNotification_DistanceMI: String { return self._s[3677]! } + public var PhotoEditor_ExposureTool: String { return self._s[3678]! } + public var Group_Username_CreatePrivateLinkHelp: String { return self._s[3679]! } + public var SettingsSearch_Synonyms_Watch: String { return self._s[3680]! } + public var Stats_GroupTopPoster_History: String { return self._s[3681]! } + public var UserInfo_AddPhone: String { return self._s[3682]! } + public var Media_SendWithTimer: String { return self._s[3684]! } + public var SettingsSearch_Synonyms_Notifications_Title: String { return self._s[3685]! } + public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3686]! } + public var GroupInfo_GroupHistoryShort: String { return self._s[3687]! } + public var PasscodeSettings_AutoLock_Disabled: String { return self._s[3688]! } + public var ChatList_Context_Unarchive: String { return self._s[3690]! } public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3689]!, self._r[3689]!, [_0]) + return formatWithArgumentRanges(self._s[3691]!, self._r[3691]!, [_0]) } - public var BlockedUsers_Title: String { return self._s[3691]! } - public var TwoStepAuth_EmailPlaceholder: String { return self._s[3692]! } - public var Media_ShareThisPhoto: String { return self._s[3693]! } - public var Notifications_DisplayNamesOnLockScreen: String { return self._s[3694]! } - public var Conversation_FilePhotoOrVideo: String { return self._s[3695]! } - public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[3699]! } - public var CallFeedback_ReasonNoise: String { return self._s[3701]! } - public var WebBrowser_Title: String { return self._s[3702]! } + public var BlockedUsers_Title: String { return self._s[3693]! } + public var TwoStepAuth_EmailPlaceholder: String { return self._s[3694]! } + public var Media_ShareThisPhoto: String { return self._s[3695]! } + public var Notifications_DisplayNamesOnLockScreen: String { return self._s[3696]! } + public var Conversation_FilePhotoOrVideo: String { return self._s[3697]! } + public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[3701]! } + public var CallFeedback_ReasonNoise: String { return self._s[3703]! } + public var WebBrowser_Title: String { return self._s[3704]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3703]!, self._r[3703]!, [_0]) + return formatWithArgumentRanges(self._s[3705]!, self._r[3705]!, [_0]) } - public var Notification_MessageLifetime5s: String { return self._s[3705]! } - public var Passport_Address_AddResidentialAddress: String { return self._s[3706]! } - public var Profile_MessageLifetime1m: String { return self._s[3708]! } - public var Passport_ScanPassport: String { return self._s[3709]! } - public var Stats_LoadingTitle: String { return self._s[3710]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[3712]! } - public var Permissions_NotificationsAllow_v0: String { return self._s[3713]! } - public var Login_InvalidFirstNameError: String { return self._s[3714]! } - public var Undo_ChatCleared: String { return self._s[3716]! } + public var Notification_MessageLifetime5s: String { return self._s[3707]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[3708]! } + public var Profile_MessageLifetime1m: String { return self._s[3710]! } + public var Passport_ScanPassport: String { return self._s[3711]! } + public var Stats_LoadingTitle: String { return self._s[3712]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[3714]! } + public var Permissions_NotificationsAllow_v0: String { return self._s[3715]! } + public var Login_InvalidFirstNameError: String { return self._s[3716]! } + public var Undo_ChatCleared: String { return self._s[3718]! } public func ApplyLanguage_ChangeLanguageUnofficialText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3718]!, self._r[3718]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3720]!, self._r[3720]!, [_1, _2]) } - public var Conversation_PinMessageAlertPin: String { return self._s[3719]! } + public var Conversation_PinMessageAlertPin: String { return self._s[3721]! } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3720]!, self._r[3720]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3722]!, self._r[3722]!, [_1, _2, _3, _4, _5]) } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3721]!, self._r[3721]!, [_1]) + return formatWithArgumentRanges(self._s[3723]!, self._r[3723]!, [_1]) } - public var Share_MultipleMessagesDisabled: String { return self._s[3722]! } - public var TwoStepAuth_EmailInvalid: String { return self._s[3723]! } - public var EnterPasscode_ChangeTitle: String { return self._s[3725]! } - public var VoiceChat_InviteLink_Speaker: String { return self._s[3726]! } - public var CallSettings_RecentCalls: String { return self._s[3727]! } - public var GroupInfo_DeactivatedStatus: String { return self._s[3728]! } - public var AuthSessions_OtherSessions: String { return self._s[3729]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[3730]! } - public var Tour_Text5: String { return self._s[3731]! } - public var Login_PadPhoneHelp: String { return self._s[3732]! } - public var Wallpaper_PhotoLibrary: String { return self._s[3734]! } - public var Conversation_ViewGroup: String { return self._s[3735]! } - public var PeopleNearby_MakeVisibleTitle: String { return self._s[3737]! } - public var VoiceOver_Chat_YourContact: String { return self._s[3738]! } - public var Watch_AuthRequired: String { return self._s[3739]! } - public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[3741]! } - public var Conversation_ForwardContacts: String { return self._s[3742]! } - public var Conversation_InputTextPlaceholder: String { return self._s[3743]! } + public var Share_MultipleMessagesDisabled: String { return self._s[3724]! } + public var TwoStepAuth_EmailInvalid: String { return self._s[3725]! } + public var EnterPasscode_ChangeTitle: String { return self._s[3727]! } + public var VoiceChat_InviteLink_Speaker: String { return self._s[3728]! } + public var CallSettings_RecentCalls: String { return self._s[3729]! } + public var GroupInfo_DeactivatedStatus: String { return self._s[3730]! } + public var AuthSessions_OtherSessions: String { return self._s[3731]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[3732]! } + public var Tour_Text5: String { return self._s[3733]! } + public var Login_PadPhoneHelp: String { return self._s[3734]! } + public var Wallpaper_PhotoLibrary: String { return self._s[3736]! } + public var Conversation_ViewGroup: String { return self._s[3737]! } + public var PeopleNearby_MakeVisibleTitle: String { return self._s[3739]! } + public var VoiceOver_Chat_YourContact: String { return self._s[3740]! } + public var Watch_AuthRequired: String { return self._s[3741]! } + public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[3743]! } + public var Conversation_ForwardContacts: String { return self._s[3744]! } + public var Conversation_InputTextPlaceholder: String { return self._s[3745]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3744]!, self._r[3744]!, [_1]) + return formatWithArgumentRanges(self._s[3746]!, self._r[3746]!, [_1]) } public func Conversation_MessageViaUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3745]!, self._r[3745]!, [_0]) - } - public var Channel_Setup_TypePrivate: String { return self._s[3746]! } - public func Conversation_NoticeInvitedByInChannel(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3747]!, self._r[3747]!, [_0]) } - public var InviteLink_Create_TimeLimitExpiryDate: String { return self._s[3748]! } - public var InfoPlist_NSSiriUsageDescription: String { return self._s[3749]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[3750]! } - public var EmptyGroupInfo_Subtitle: String { return self._s[3751]! } - public var UserInfo_StartSecretChatStart: String { return self._s[3752]! } + public var Channel_Setup_TypePrivate: String { return self._s[3748]! } + public func Conversation_NoticeInvitedByInChannel(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3749]!, self._r[3749]!, [_0]) + } + public var InviteLink_Create_TimeLimitExpiryDate: String { return self._s[3750]! } + public var InfoPlist_NSSiriUsageDescription: String { return self._s[3751]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[3752]! } + public var EmptyGroupInfo_Subtitle: String { return self._s[3753]! } + public var UserInfo_StartSecretChatStart: String { return self._s[3754]! } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3753]!, self._r[3753]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3755]!, self._r[3755]!, [_1, _2]) } public func Channel_AdminLog_MessageRestricted(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3754]!, self._r[3754]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[3756]!, self._r[3756]!, [_0, _1, _2]) } public func Conversation_ForwardTooltip_TwoChats_Many(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3755]!, self._r[3755]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3757]!, self._r[3757]!, [_0, _1]) } - public var PrivacySettings_AutoArchiveTitle: String { return self._s[3756]! } - public var GroupInfo_InviteLink_LinkSection: String { return self._s[3757]! } - public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[3758]! } - public var StickerPacksSettings_ArchivedMasks: String { return self._s[3760]! } - public var NewContact_Title: String { return self._s[3763]! } - public var Appearance_ThemeCarouselTintedNight: String { return self._s[3764]! } - public var VoiceChat_StatusSpeaking: String { return self._s[3765]! } - public var Notifications_PermissionsKeepDisabled: String { return self._s[3766]! } + public var PrivacySettings_AutoArchiveTitle: String { return self._s[3758]! } + public var GroupInfo_InviteLink_LinkSection: String { return self._s[3759]! } + public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[3760]! } + public var StickerPacksSettings_ArchivedMasks: String { return self._s[3762]! } + public var NewContact_Title: String { return self._s[3765]! } + public var Appearance_ThemeCarouselTintedNight: String { return self._s[3766]! } + public var VoiceChat_StatusSpeaking: String { return self._s[3767]! } + public var Notifications_PermissionsKeepDisabled: String { return self._s[3768]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3767]!, self._r[3767]!, [_0]) + return formatWithArgumentRanges(self._s[3769]!, self._r[3769]!, [_0]) } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3768]!, self._r[3768]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3770]!, self._r[3770]!, [_0, _1]) } - public var Chat_SlowmodeTooltipPending: String { return self._s[3769]! } + public var Chat_SlowmodeTooltipPending: String { return self._s[3771]! } public func Time_MediumDate(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3771]!, self._r[3771]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3773]!, self._r[3773]!, [_1, _2]) } - public var ContactInfo_PhoneLabelHome: String { return self._s[3772]! } - public var CallFeedback_ReasonInterruption: String { return self._s[3773]! } - public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[3774]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[3774]! } + public var CallFeedback_ReasonInterruption: String { return self._s[3775]! } + public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[3776]! } public func PUSH_MESSAGE_DOCS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3777]!, self._r[3777]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3779]!, self._r[3779]!, [_1, "\(_2)"]) } - public var Conversation_MessageEditedLabel: String { return self._s[3778]! } - public var CallList_ActiveVoiceChatsHeader: String { return self._s[3779]! } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3780]! } - public var ChatList_Context_AddToContacts: String { return self._s[3781]! } - public var Passport_Language_is: String { return self._s[3782]! } - public var Notification_PassportValueProofOfIdentity: String { return self._s[3783]! } - public var PhotoEditor_CurvesBlue: String { return self._s[3784]! } + public var Conversation_MessageEditedLabel: String { return self._s[3780]! } + public var CallList_ActiveVoiceChatsHeader: String { return self._s[3781]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3782]! } + public var ChatList_Context_AddToContacts: String { return self._s[3783]! } + public var Passport_Language_is: String { return self._s[3784]! } + public var Notification_PassportValueProofOfIdentity: String { return self._s[3785]! } + public var PhotoEditor_CurvesBlue: String { return self._s[3786]! } public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3785]!, self._r[3785]!, [_0]) + return formatWithArgumentRanges(self._s[3787]!, self._r[3787]!, [_0]) } - public var SocksProxySetup_Username: String { return self._s[3786]! } - public var Login_SmsRequestState3: String { return self._s[3787]! } - public var Message_PinnedVideoMessage: String { return self._s[3788]! } - public var SharedMedia_TitleLink: String { return self._s[3789]! } - public var Passport_FieldIdentity: String { return self._s[3790]! } - public var GroupInfo_Permissions_BroadcastConvert: String { return self._s[3792]! } + public var SocksProxySetup_Username: String { return self._s[3788]! } + public var Login_SmsRequestState3: String { return self._s[3789]! } + public var Message_PinnedVideoMessage: String { return self._s[3790]! } + public var SharedMedia_TitleLink: String { return self._s[3791]! } + public var Passport_FieldIdentity: String { return self._s[3792]! } + public var GroupInfo_Permissions_BroadcastConvert: String { return self._s[3794]! } public func Conversation_EncryptedPlaceholderTitleOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3795]!, self._r[3795]!, [_0]) + return formatWithArgumentRanges(self._s[3797]!, self._r[3797]!, [_0]) } - public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[3798]! } - public var ReportSpam_DeleteThisChat: String { return self._s[3799]! } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3800]! } - public var Passport_Identity_DateOfBirth: String { return self._s[3801]! } - public var Call_StatusIncoming: String { return self._s[3802]! } - public var ChatAdmins_AdminLabel: String { return self._s[3803]! } + public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[3800]! } + public var ReportSpam_DeleteThisChat: String { return self._s[3801]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3802]! } + public var Passport_Identity_DateOfBirth: String { return self._s[3803]! } + public var Call_StatusIncoming: String { return self._s[3804]! } + public var ChatAdmins_AdminLabel: String { return self._s[3805]! } public func InstantPage_OpenInBrowser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3804]!, self._r[3804]!, [_0]) - } - public func Time_MonthOfYear_m10(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3806]!, self._r[3806]!, [_0]) } - public var Message_PinnedAnimationMessage: String { return self._s[3807]! } - public var Conversation_ReportSpamAndLeave: String { return self._s[3808]! } - public var Preview_CopyAddress: String { return self._s[3809]! } - public var MediaPlayer_UnknownTrack: String { return self._s[3811]! } - public var Login_CancelSignUpConfirmation: String { return self._s[3812]! } - public var Map_OpenInYandexMaps: String { return self._s[3814]! } + public func Time_MonthOfYear_m10(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3808]!, self._r[3808]!, [_0]) + } + public var Message_PinnedAnimationMessage: String { return self._s[3809]! } + public var Conversation_ReportSpamAndLeave: String { return self._s[3810]! } + public var Preview_CopyAddress: String { return self._s[3811]! } + public var MediaPlayer_UnknownTrack: String { return self._s[3813]! } + public var Login_CancelSignUpConfirmation: String { return self._s[3814]! } + public var Map_OpenInYandexMaps: String { return self._s[3816]! } public func Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3817]!, self._r[3817]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3819]!, self._r[3819]!, [_1, _2, _3]) } - public var GroupRemoved_Remove: String { return self._s[3818]! } - public var ChatListFolder_TitleCreate: String { return self._s[3819]! } + public var GroupRemoved_Remove: String { return self._s[3820]! } + public var ChatListFolder_TitleCreate: String { return self._s[3821]! } public func InstantPage_AuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3821]!, self._r[3821]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3823]!, self._r[3823]!, [_1, _2]) } - public var Watch_UserInfo_MuteTitle: String { return self._s[3822]! } + public var Watch_UserInfo_MuteTitle: String { return self._s[3824]! } public func UserInfo_LinkForwardTooltip_TwoChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3824]!, self._r[3824]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3826]!, self._r[3826]!, [_0, _1]) } - public var Group_UpgradeNoticeText2: String { return self._s[3825]! } - public var Stats_GroupGrowthTitle: String { return self._s[3826]! } - public var CreatePoll_CancelConfirmation: String { return self._s[3829]! } - public var Month_GenOctober: String { return self._s[3830]! } - public var Conversation_TitleCommentsEmpty: String { return self._s[3831]! } - public var Settings_Appearance: String { return self._s[3832]! } + public var Group_UpgradeNoticeText2: String { return self._s[3827]! } + public var Stats_GroupGrowthTitle: String { return self._s[3828]! } + public var CreatePoll_CancelConfirmation: String { return self._s[3831]! } + public var Month_GenOctober: String { return self._s[3832]! } + public var Conversation_TitleCommentsEmpty: String { return self._s[3833]! } + public var Settings_Appearance: String { return self._s[3834]! } public func Time_MonthOfYear_m6(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3833]!, self._r[3833]!, [_0]) + return formatWithArgumentRanges(self._s[3835]!, self._r[3835]!, [_0]) } - public var UserInfo_AddToExisting: String { return self._s[3834]! } - public var Call_PhoneCallInProgressMessage: String { return self._s[3836]! } - public var Map_HomeAndWorkInfo: String { return self._s[3837]! } - public var InstantPage_VoiceOver_ResetFontSize: String { return self._s[3838]! } - public var Paint_Arrow: String { return self._s[3839]! } - public var InviteLink_CreatePrivateLinkHelp: String { return self._s[3840]! } + public var UserInfo_AddToExisting: String { return self._s[3836]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[3838]! } + public var Map_HomeAndWorkInfo: String { return self._s[3839]! } + public var InstantPage_VoiceOver_ResetFontSize: String { return self._s[3840]! } + public var Paint_Arrow: String { return self._s[3841]! } + public var InviteLink_CreatePrivateLinkHelp: String { return self._s[3842]! } public func DialogList_MultipleTypingPair(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3841]!, self._r[3841]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3843]!, self._r[3843]!, [_0, _1]) } - public var CancelResetAccount_Title: String { return self._s[3842]! } - public var NotificationsSound_Circles: String { return self._s[3843]! } - public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[3844]! } - public var ChatState_Connecting: String { return self._s[3846]! } - public var Profile_MessageLifetime5s: String { return self._s[3847]! } + public var CancelResetAccount_Title: String { return self._s[3844]! } + public var NotificationsSound_Circles: String { return self._s[3845]! } + public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[3846]! } + public var ChatState_Connecting: String { return self._s[3848]! } + public var Profile_MessageLifetime5s: String { return self._s[3849]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3848]!, self._r[3848]!, [_0]) + return formatWithArgumentRanges(self._s[3850]!, self._r[3850]!, [_0]) } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[3849]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[3850]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[3851]! } - public var Conversation_DefaultRestrictedStickers: String { return self._s[3853]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[3854]! } + public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[3851]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[3852]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[3853]! } + public var Conversation_DefaultRestrictedStickers: String { return self._s[3855]! } + public var TwoStepAuth_ConfirmationTitle: String { return self._s[3856]! } public func Chat_UnsendMyMessagesAlertTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3855]!, self._r[3855]!, [_0]) + return formatWithArgumentRanges(self._s[3857]!, self._r[3857]!, [_0]) } - public var Passport_Phone_Help: String { return self._s[3856]! } - public var Privacy_ContactsSync: String { return self._s[3857]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3858]! } - public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[3860]! } - public var Map_SendMyCurrentLocation: String { return self._s[3861]! } - public var Map_AddressOnMap: String { return self._s[3862]! } - public var BroadcastGroups_ConfirmationAlert_Convert: String { return self._s[3864]! } - public var DialogList_SearchLabel: String { return self._s[3865]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3866]! } - public var GroupInfo_FakeGroupWarning: String { return self._s[3867]! } - public var Conversation_ChecksTooltip_Read: String { return self._s[3869]! } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[3870]! } - public var ChatList_Search_ShowMore: String { return self._s[3871]! } - public var DialogList_EncryptionRejected: String { return self._s[3872]! } - public var VoiceChat_InviteLinkCopiedText: String { return self._s[3873]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[3874]! } - public var VoiceChat_StartRecordingText: String { return self._s[3875]! } - public var Privacy_TopPeersDelete: String { return self._s[3876]! } - public var AttachmentMenu_SendAsFile: String { return self._s[3878]! } - public var ChatList_GenericPsaAlert: String { return self._s[3880]! } - public var SecretTimer_ImageDescription: String { return self._s[3882]! } + public var Passport_Phone_Help: String { return self._s[3858]! } + public var Privacy_ContactsSync: String { return self._s[3859]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3860]! } + public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[3862]! } + public var Map_SendMyCurrentLocation: String { return self._s[3863]! } + public var Map_AddressOnMap: String { return self._s[3864]! } + public var BroadcastGroups_ConfirmationAlert_Convert: String { return self._s[3866]! } + public var DialogList_SearchLabel: String { return self._s[3867]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3868]! } + public var GroupInfo_FakeGroupWarning: String { return self._s[3869]! } + public var Conversation_ChecksTooltip_Read: String { return self._s[3871]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[3872]! } + public var ChatList_Search_ShowMore: String { return self._s[3873]! } + public var DialogList_EncryptionRejected: String { return self._s[3874]! } + public var VoiceChat_InviteLinkCopiedText: String { return self._s[3875]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[3876]! } + public var VoiceChat_StartRecordingText: String { return self._s[3877]! } + public var Privacy_TopPeersDelete: String { return self._s[3878]! } + public var AttachmentMenu_SendAsFile: String { return self._s[3880]! } + public var ChatList_GenericPsaAlert: String { return self._s[3882]! } + public var SecretTimer_ImageDescription: String { return self._s[3884]! } public func Conversation_SetReminder_RemindOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3883]!, self._r[3883]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3885]!, self._r[3885]!, [_0, _1]) } - public var VoiceChat_EditNameSuccess: String { return self._s[3884]! } - public var ChatSettings_TextSizeUnits: String { return self._s[3885]! } - public var Notification_RenamedGroup: String { return self._s[3887]! } - public var Tour_Title2: String { return self._s[3888]! } - public var Settings_CopyUsername: String { return self._s[3889]! } - public var Compose_NewEncryptedChat: String { return self._s[3890]! } - public var Conversation_CloudStorageInfo_Title: String { return self._s[3891]! } - public var VoiceChat_SetReminder: String { return self._s[3892]! } - public var Month_ShortSeptember: String { return self._s[3893]! } - public var AutoDownloadSettings_OnForAll: String { return self._s[3894]! } - public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[3895]! } - public var Call_StatusConnecting: String { return self._s[3897]! } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[3898]! } - public var Map_ShareLiveLocationHelp: String { return self._s[3899]! } - public var Cache_Files: String { return self._s[3900]! } - public var Notifications_Reset: String { return self._s[3901]! } + public var VoiceChat_EditNameSuccess: String { return self._s[3886]! } + public var ChatSettings_TextSizeUnits: String { return self._s[3887]! } + public var Notification_RenamedGroup: String { return self._s[3889]! } + public var Tour_Title2: String { return self._s[3890]! } + public var Settings_CopyUsername: String { return self._s[3891]! } + public var Compose_NewEncryptedChat: String { return self._s[3892]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[3893]! } + public var VoiceChat_SetReminder: String { return self._s[3894]! } + public var Month_ShortSeptember: String { return self._s[3895]! } + public var AutoDownloadSettings_OnForAll: String { return self._s[3896]! } + public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[3897]! } + public var VoiceChat_StartNow: String { return self._s[3898]! } + public var Call_StatusConnecting: String { return self._s[3900]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[3901]! } + public var Map_ShareLiveLocationHelp: String { return self._s[3902]! } + public var Cache_Files: String { return self._s[3903]! } + public var Notifications_Reset: String { return self._s[3904]! } public func Settings_KeepPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3902]!, self._r[3902]!, [_0]) + return formatWithArgumentRanges(self._s[3905]!, self._r[3905]!, [_0]) } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[3903]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[3906]! } public func Conversation_OpenBotLinkLogin(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3904]!, self._r[3904]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3907]!, self._r[3907]!, [_1, _2]) } - public var Notification_CallIncomingShort: String { return self._s[3905]! } - public var UserInfo_BotPrivacy: String { return self._s[3908]! } - public var Appearance_BubbleCorners_Apply: String { return self._s[3909]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[3910]! } - public var Conversation_ContextMenuLookUp: String { return self._s[3912]! } - public var Calls_RatingTitle: String { return self._s[3913]! } - public var SecretImage_Title: String { return self._s[3914]! } - public var Weekday_Monday: String { return self._s[3915]! } + public var Notification_CallIncomingShort: String { return self._s[3908]! } + public var UserInfo_BotPrivacy: String { return self._s[3911]! } + public var Appearance_BubbleCorners_Apply: String { return self._s[3912]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[3913]! } + public var Conversation_ContextMenuLookUp: String { return self._s[3915]! } + public var Calls_RatingTitle: String { return self._s[3916]! } + public var SecretImage_Title: String { return self._s[3917]! } + public var Weekday_Monday: String { return self._s[3918]! } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3916]!, self._r[3916]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3919]!, self._r[3919]!, [_1, _2]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3917]! } - public var VoiceChat_InviteLink_CopySpeakerLink: String { return self._s[3918]! } - public var Invitation_JoinVoiceChatAsListener: String { return self._s[3919]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3920]! } + public var VoiceChat_InviteLink_CopySpeakerLink: String { return self._s[3921]! } + public var Invitation_JoinVoiceChatAsListener: String { return self._s[3922]! } public func DialogList_SearchSubtitleFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3920]!, self._r[3920]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3923]!, self._r[3923]!, [_1, _2]) } - public var Stats_GroupMembers: String { return self._s[3921]! } - public var Camera_Retake: String { return self._s[3922]! } - public var Conversation_SearchPlaceholder: String { return self._s[3924]! } + public var Stats_GroupMembers: String { return self._s[3924]! } + public var Camera_Retake: String { return self._s[3925]! } + public var Conversation_SearchPlaceholder: String { return self._s[3927]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3925]!, self._r[3925]!, [_0]) + return formatWithArgumentRanges(self._s[3928]!, self._r[3928]!, [_0]) } - public var Channel_DiscussionGroup_Info: String { return self._s[3926]! } - public var SocksProxySetup_Hostname: String { return self._s[3927]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3928]! } - public var Privacy_DeleteDrafts: String { return self._s[3930]! } + public var Channel_DiscussionGroup_Info: String { return self._s[3929]! } + public var SocksProxySetup_Hostname: String { return self._s[3930]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3931]! } + public var Privacy_DeleteDrafts: String { return self._s[3933]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3931]!, self._r[3931]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[3934]!, self._r[3934]!, [_1, _1, _1, _2]) } - public var Login_CancelPhoneVerification: String { return self._s[3933]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[3934]! } - public var VoiceOver_Chat_Profile: String { return self._s[3935]! } + public var Login_CancelPhoneVerification: String { return self._s[3936]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[3937]! } + public var VoiceOver_Chat_Profile: String { return self._s[3938]! } public func SocksProxySetup_ProxyStatusPing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3936]!, self._r[3936]!, [_0]) + return formatWithArgumentRanges(self._s[3939]!, self._r[3939]!, [_0]) } - public var TwoStepAuth_EmailSent: String { return self._s[3937]! } - public var Cache_Indexing: String { return self._s[3938]! } - public var Notifications_ExceptionsNone: String { return self._s[3939]! } - public var MessagePoll_LabelQuiz: String { return self._s[3940]! } - public var Call_EncryptionKey_Title: String { return self._s[3941]! } - public var Common_Yes: String { return self._s[3942]! } - public var Channel_ErrorAddBlocked: String { return self._s[3943]! } - public var Month_GenJanuary: String { return self._s[3944]! } - public var Checkout_NewCard_Title: String { return self._s[3945]! } + public var TwoStepAuth_EmailSent: String { return self._s[3940]! } + public var Cache_Indexing: String { return self._s[3941]! } + public var Notifications_ExceptionsNone: String { return self._s[3942]! } + public var MessagePoll_LabelQuiz: String { return self._s[3943]! } + public var Call_EncryptionKey_Title: String { return self._s[3944]! } + public var Common_Yes: String { return self._s[3945]! } + public var Channel_ErrorAddBlocked: String { return self._s[3946]! } + public var Month_GenJanuary: String { return self._s[3947]! } + public var Checkout_NewCard_Title: String { return self._s[3948]! } public func TwoStepAuth_EnterPasswordHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3946]!, self._r[3946]!, [_0]) + return formatWithArgumentRanges(self._s[3949]!, self._r[3949]!, [_0]) } - public var Conversation_InputTextPlaceholderReply: String { return self._s[3948]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3949]! } - public var Conversation_SendDice: String { return self._s[3950]! } + public var Conversation_InputTextPlaceholderReply: String { return self._s[3951]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3952]! } + public var Conversation_SendDice: String { return self._s[3953]! } public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3951]!, self._r[3951]!, [_0]) + return formatWithArgumentRanges(self._s[3954]!, self._r[3954]!, [_0]) } public func VoiceOver_Chat_VideoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3952]!, self._r[3952]!, [_0]) + return formatWithArgumentRanges(self._s[3955]!, self._r[3955]!, [_0]) } - public var Weekday_Wednesday: String { return self._s[3953]! } - public var ReportPeer_ReasonOther_Send: String { return self._s[3954]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[3955]! } - public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[3956]! } - public var OldChannels_NoticeTitle: String { return self._s[3957]! } - public var TwoStepAuth_ChangeEmail: String { return self._s[3958]! } - public var PasscodeSettings_PasscodeOptions: String { return self._s[3959]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[3960]! } - public var Passport_Address_AddUtilityBill: String { return self._s[3961]! } + public var Weekday_Wednesday: String { return self._s[3956]! } + public var ReportPeer_ReasonOther_Send: String { return self._s[3957]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[3958]! } + public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[3959]! } + public var OldChannels_NoticeTitle: String { return self._s[3960]! } + public var TwoStepAuth_ChangeEmail: String { return self._s[3961]! } + public var PasscodeSettings_PasscodeOptions: String { return self._s[3962]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[3963]! } + public var Passport_Address_AddUtilityBill: String { return self._s[3964]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3963]!, self._r[3963]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3966]!, self._r[3966]!, [_1, _2, _3]) } - public var TwoFactorSetup_EmailVerification_ResendAction: String { return self._s[3965]! } - public var Stats_GroupTopAdminsTitle: String { return self._s[3966]! } - public var Paint_Regular: String { return self._s[3967]! } - public var Message_Contact: String { return self._s[3968]! } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[3969]! } - public var VoiceOver_Chat_YourPhoto: String { return self._s[3970]! } - public var Notification_Mute1hMin: String { return self._s[3971]! } + public var TwoFactorSetup_EmailVerification_ResendAction: String { return self._s[3968]! } + public var Stats_GroupTopAdminsTitle: String { return self._s[3969]! } + public var Paint_Regular: String { return self._s[3970]! } + public var Message_Contact: String { return self._s[3971]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[3972]! } + public var VoiceOver_Chat_YourPhoto: String { return self._s[3973]! } + public var Notification_Mute1hMin: String { return self._s[3974]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3972]!, self._r[3972]!, [_0]) + return formatWithArgumentRanges(self._s[3975]!, self._r[3975]!, [_0]) } - public var Profile_MessageLifetime1h: String { return self._s[3973]! } - public var TwoStepAuth_GenericHelp: String { return self._s[3974]! } - public var TextFormat_Monospace: String { return self._s[3975]! } - public var VoiceOver_Media_PlaybackRateChange: String { return self._s[3977]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[3978]! } - public var ChatList_DeleteChat: String { return self._s[3979]! } - public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[3982]! } + public var Profile_MessageLifetime1h: String { return self._s[3976]! } + public var TwoStepAuth_GenericHelp: String { return self._s[3977]! } + public var TextFormat_Monospace: String { return self._s[3978]! } + public var VoiceOver_Media_PlaybackRateChange: String { return self._s[3980]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[3981]! } + public var ChatList_DeleteChat: String { return self._s[3982]! } + public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[3985]! } public func Settings_ApplyProxyAlertCredentials(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3983]!, self._r[3983]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[3986]!, self._r[3986]!, [_1, _2, _3, _4]) } - public var Login_CancelPhoneVerificationStop: String { return self._s[3984]! } - public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[3985]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[3986]! } + public var Login_CancelPhoneVerificationStop: String { return self._s[3987]! } + public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[3988]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[3989]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3987]!, self._r[3987]!, [_0]) + return formatWithArgumentRanges(self._s[3990]!, self._r[3990]!, [_0]) } - public var Notifications_Badge_IncludeChannels: String { return self._s[3988]! } - public var InviteLink_CreatePrivateLinkHelpChannel: String { return self._s[3989]! } - public var StickerPack_ViewPack: String { return self._s[3992]! } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[3994]! } - public var EditTheme_Expand_Preview_IncomingText: String { return self._s[3995]! } - public var Notifications_Title: String { return self._s[3996]! } - public var Conversation_InputTextPlaceholderComment: String { return self._s[3997]! } - public var GroupInfo_PublicLink: String { return self._s[3998]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[3991]! } + public var InviteLink_CreatePrivateLinkHelpChannel: String { return self._s[3992]! } + public var StickerPack_ViewPack: String { return self._s[3995]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[3997]! } + public var EditTheme_Expand_Preview_IncomingText: String { return self._s[3998]! } + public var Notifications_Title: String { return self._s[3999]! } + public var Conversation_InputTextPlaceholderComment: String { return self._s[4000]! } + public var GroupInfo_PublicLink: String { return self._s[4001]! } public func ScheduleVoiceChat_GroupText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3999]!, self._r[3999]!, [_0]) + return formatWithArgumentRanges(self._s[4002]!, self._r[4002]!, [_0]) } - public var VoiceOver_DiscardPreparedContent: String { return self._s[4000]! } - public var Conversation_Moderate_Ban: String { return self._s[4004]! } - public var InviteLink_Manage: String { return self._s[4005]! } - public var InstantPage_FontNewYork: String { return self._s[4006]! } + public var VoiceOver_DiscardPreparedContent: String { return self._s[4003]! } + public var Conversation_Moderate_Ban: String { return self._s[4007]! } + public var InviteLink_Manage: String { return self._s[4008]! } + public var InstantPage_FontNewYork: String { return self._s[4009]! } public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4007]!, self._r[4007]!, [_0]) + return formatWithArgumentRanges(self._s[4010]!, self._r[4010]!, [_0]) } - public var TextFormat_Underline: String { return self._s[4008]! } + public var TextFormat_Underline: String { return self._s[4011]! } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4009]!, self._r[4009]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4012]!, self._r[4012]!, [_0, _1]) } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4010]!, self._r[4010]!, [_1]) + return formatWithArgumentRanges(self._s[4013]!, self._r[4013]!, [_1]) } - public var PollResults_Collapse: String { return self._s[4012]! } - public var Contacts_GlobalSearch: String { return self._s[4013]! } + public var PollResults_Collapse: String { return self._s[4015]! } + public var Contacts_GlobalSearch: String { return self._s[4016]! } public func Conversation_EncryptionWaiting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4015]!, self._r[4015]!, [_0]) + return formatWithArgumentRanges(self._s[4018]!, self._r[4018]!, [_0]) } - public var Channel_Management_LabelEditor: String { return self._s[4016]! } - public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[4018]! } - public var Conversation_Theme: String { return self._s[4019]! } + public var Channel_Management_LabelEditor: String { return self._s[4019]! } + public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[4021]! } + public var Conversation_Theme: String { return self._s[4022]! } public func PUSH_CHANNEL_MESSAGE_DOCS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4020]!, self._r[4020]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4023]!, self._r[4023]!, [_1, "\(_2)"]) } - public var Conversation_LinkDialogSave: String { return self._s[4021]! } - public var EnterPasscode_TouchId: String { return self._s[4022]! } - public var Conversation_VoiceChatMediaRecordingRestricted: String { return self._s[4023]! } - public var Group_ErrorAdminsTooMuch: String { return self._s[4024]! } - public var Stats_MessageOverview: String { return self._s[4025]! } - public var Privacy_Calls_P2PAlways: String { return self._s[4027]! } - public var Message_Sticker: String { return self._s[4028]! } - public var Conversation_Mute: String { return self._s[4031]! } - public var VoiceChat_AnonymousDisabledAlertText: String { return self._s[4032]! } - public var ContactInfo_Title: String { return self._s[4033]! } + public var Conversation_LinkDialogSave: String { return self._s[4024]! } + public var EnterPasscode_TouchId: String { return self._s[4025]! } + public var Conversation_VoiceChatMediaRecordingRestricted: String { return self._s[4026]! } + public var Group_ErrorAdminsTooMuch: String { return self._s[4027]! } + public var Stats_MessageOverview: String { return self._s[4028]! } + public var Privacy_Calls_P2PAlways: String { return self._s[4030]! } + public var Message_Sticker: String { return self._s[4031]! } + public var Conversation_Mute: String { return self._s[4034]! } + public var VoiceChat_AnonymousDisabledAlertText: String { return self._s[4035]! } + public var ContactInfo_Title: String { return self._s[4036]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4034]!, self._r[4034]!, [_1]) + return formatWithArgumentRanges(self._s[4037]!, self._r[4037]!, [_1]) } - public var Channel_Setup_TypeHeader: String { return self._s[4035]! } - public var AuthSessions_LogOut: String { return self._s[4036]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[4037]! } - public var VoiceChat_PinVideo: String { return self._s[4038]! } - public var Group_Info_Members: String { return self._s[4040]! } - public var ChatListFolderSettings_NewFolder: String { return self._s[4041]! } - public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[4042]! } - public var CreatePoll_Title: String { return self._s[4043]! } - public var EditTheme_EditTitle: String { return self._s[4044]! } - public var ChatListFolderSettings_RecommendedFoldersSection: String { return self._s[4045]! } - public var TwoStepAuth_SetPassword: String { return self._s[4046]! } + public var Channel_Setup_TypeHeader: String { return self._s[4038]! } + public var AuthSessions_LogOut: String { return self._s[4039]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[4040]! } + public var VoiceChat_PinVideo: String { return self._s[4041]! } + public var Group_Info_Members: String { return self._s[4043]! } + public var ChatListFolderSettings_NewFolder: String { return self._s[4044]! } + public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[4045]! } + public var CreatePoll_Title: String { return self._s[4046]! } + public var EditTheme_EditTitle: String { return self._s[4047]! } + public var ChatListFolderSettings_RecommendedFoldersSection: String { return self._s[4048]! } + public var TwoStepAuth_SetPassword: String { return self._s[4049]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4047]!, self._r[4047]!, [_0]) + return formatWithArgumentRanges(self._s[4050]!, self._r[4050]!, [_0]) } - public var BlockedUsers_Info: String { return self._s[4048]! } - public var AuthSessions_Sessions: String { return self._s[4049]! } - public var Group_EditAdmin_RankTitle: String { return self._s[4050]! } - public var Common_ActionNotAllowedError: String { return self._s[4051]! } - public var WebPreview_GettingLinkInfo: String { return self._s[4052]! } - public var Appearance_AppIconFilledX: String { return self._s[4053]! } - public var Passport_Email_EmailPlaceholder: String { return self._s[4054]! } - public var FeaturedStickers_OtherSection: String { return self._s[4055]! } - public var VoiceChat_RecordingStarted: String { return self._s[4056]! } - public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[4057]! } - public var Profile_Username: String { return self._s[4058]! } - public var Appearance_RemoveTheme: String { return self._s[4059]! } - public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[4060]! } - public var Message_PinnedStickerMessage: String { return self._s[4061]! } - public var AccessDenied_VideoMicrophone: String { return self._s[4062]! } - public var WallpaperPreview_CustomColorBottomText: String { return self._s[4063]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[4064]! } - public var Conversation_VoiceChat: String { return self._s[4065]! } - public var VoiceChat_EditBioSuccess: String { return self._s[4066]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[4067]! } - public var TwoStepAuth_Title: String { return self._s[4068]! } - public var VoiceOver_Chat_YourAnimatedSticker: String { return self._s[4069]! } - public var Checkout_WebConfirmation_Title: String { return self._s[4070]! } - public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[4071]! } - public var ChatListFolder_CategoryGroups: String { return self._s[4073]! } - public var Stats_GroupTopInviter_Promote: String { return self._s[4074]! } - public var Conversation_EditingPhotoPanelTitle: String { return self._s[4075]! } - public var Month_GenJuly: String { return self._s[4076]! } - public var Passport_Identity_Gender: String { return self._s[4077]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[4078]! } - public var Notification_Exceptions_DeleteAll: String { return self._s[4079]! } - public var VoiceChat_StopRecording: String { return self._s[4080]! } + public var BlockedUsers_Info: String { return self._s[4051]! } + public var AuthSessions_Sessions: String { return self._s[4052]! } + public var Group_EditAdmin_RankTitle: String { return self._s[4053]! } + public var Common_ActionNotAllowedError: String { return self._s[4054]! } + public var WebPreview_GettingLinkInfo: String { return self._s[4055]! } + public var Appearance_AppIconFilledX: String { return self._s[4056]! } + public var Passport_Email_EmailPlaceholder: String { return self._s[4057]! } + public var FeaturedStickers_OtherSection: String { return self._s[4058]! } + public var VoiceChat_RecordingStarted: String { return self._s[4059]! } + public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[4060]! } + public var Profile_Username: String { return self._s[4061]! } + public var Appearance_RemoveTheme: String { return self._s[4062]! } + public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[4063]! } + public var Message_PinnedStickerMessage: String { return self._s[4064]! } + public var AccessDenied_VideoMicrophone: String { return self._s[4065]! } + public var WallpaperPreview_CustomColorBottomText: String { return self._s[4066]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[4067]! } + public var Conversation_VoiceChat: String { return self._s[4068]! } + public var VoiceChat_EditBioSuccess: String { return self._s[4069]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[4070]! } + public var TwoStepAuth_Title: String { return self._s[4071]! } + public var VoiceOver_Chat_YourAnimatedSticker: String { return self._s[4072]! } + public var Checkout_WebConfirmation_Title: String { return self._s[4073]! } + public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[4074]! } + public var ChatListFolder_CategoryGroups: String { return self._s[4076]! } + public var Stats_GroupTopInviter_Promote: String { return self._s[4077]! } + public var Conversation_EditingPhotoPanelTitle: String { return self._s[4078]! } + public var Month_GenJuly: String { return self._s[4079]! } + public var Passport_Identity_Gender: String { return self._s[4080]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[4081]! } + public var Notification_Exceptions_DeleteAll: String { return self._s[4082]! } + public var VoiceChat_StopRecording: String { return self._s[4083]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4081]!, self._r[4081]!, [_0]) - } - public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4082]!, self._r[4082]!, [_0, _1, _2]) - } - public var Login_CodeSentSms: String { return self._s[4083]! } - public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4084]!, self._r[4084]!, [_0]) } - public var Login_CallRequestState2: String { return self._s[4085]! } - public var Channel_DiscussionGroup_Header: String { return self._s[4086]! } - public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { + public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4085]!, self._r[4085]!, [_0, _1, _2]) + } + public var Login_CodeSentSms: String { return self._s[4086]! } + public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4087]!, self._r[4087]!, [_0]) } - public var Passport_Language_ms: String { return self._s[4088]! } - public var PeopleNearby_MakeInvisible: String { return self._s[4090]! } - public var ChatList_Search_FilterVoice: String { return self._s[4092]! } - public var Camera_TapAndHoldForVideo: String { return self._s[4094]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[4095]! } + public var Login_CallRequestState2: String { return self._s[4088]! } + public var Channel_DiscussionGroup_Header: String { return self._s[4089]! } + public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4090]!, self._r[4090]!, [_0]) + } + public var Passport_Language_ms: String { return self._s[4091]! } + public var PeopleNearby_MakeInvisible: String { return self._s[4093]! } + public var ChatList_Search_FilterVoice: String { return self._s[4095]! } + public var Camera_TapAndHoldForVideo: String { return self._s[4097]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[4098]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4096]!, self._r[4096]!, [_0]) + return formatWithArgumentRanges(self._s[4099]!, self._r[4099]!, [_0]) } public func Call_VoiceChatInProgressMessageCall(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4097]!, self._r[4097]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4100]!, self._r[4100]!, [_1, _2]) } - public var Map_Locating: String { return self._s[4098]! } + public var Map_Locating: String { return self._s[4101]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4100]!, self._r[4100]!, [_0]) + return formatWithArgumentRanges(self._s[4103]!, self._r[4103]!, [_0]) } - public var Passport_Identity_TypeInternalPassport: String { return self._s[4102]! } - public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[4103]! } - public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[4104]! } - public var Stickers_Installed: String { return self._s[4105]! } - public var Notifications_PermissionsAllowInSettings: String { return self._s[4106]! } - public var StickerPackActionInfo_RemovedTitle: String { return self._s[4107]! } - public var CallSettings_Never: String { return self._s[4109]! } - public var Channel_Setup_TypePublicHelp: String { return self._s[4110]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[4105]! } + public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[4106]! } + public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[4107]! } + public var Stickers_Installed: String { return self._s[4108]! } + public var Notifications_PermissionsAllowInSettings: String { return self._s[4109]! } + public var StickerPackActionInfo_RemovedTitle: String { return self._s[4110]! } + public var CallSettings_Never: String { return self._s[4112]! } + public var Channel_Setup_TypePublicHelp: String { return self._s[4113]! } public func ChatList_DeleteForEveryone(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4112]!, self._r[4112]!, [_0]) + return formatWithArgumentRanges(self._s[4115]!, self._r[4115]!, [_0]) } - public var Message_Game: String { return self._s[4113]! } - public var Call_Message: String { return self._s[4114]! } + public var Message_Game: String { return self._s[4116]! } + public var Call_Message: String { return self._s[4117]! } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4115]!, self._r[4115]!, [_1]) + return formatWithArgumentRanges(self._s[4118]!, self._r[4118]!, [_1]) } - public var ChannelIntro_Text: String { return self._s[4116]! } - public var StickerPack_Send: String { return self._s[4117]! } - public var Share_AuthDescription: String { return self._s[4118]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[4119]! } - public var CallFeedback_WhatWentWrong: String { return self._s[4120]! } - public var Common_Create: String { return self._s[4123]! } - public var Passport_Language_hy: String { return self._s[4124]! } - public var CreatePoll_Explanation: String { return self._s[4125]! } - public var GroupPermission_AddMembersNotAvailable: String { return self._s[4126]! } - public var ChatImport_CreateGroupAlertImportAction: String { return self._s[4127]! } - public var PeerInfo_ButtonVoiceChat: String { return self._s[4128]! } - public var Undo_ChatClearedForBothSides: String { return self._s[4129]! } - public var DialogList_NoMessagesTitle: String { return self._s[4130]! } - public var GroupInfo_Title: String { return self._s[4132]! } + public var ChannelIntro_Text: String { return self._s[4119]! } + public var StickerPack_Send: String { return self._s[4120]! } + public var Share_AuthDescription: String { return self._s[4121]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[4122]! } + public var CallFeedback_WhatWentWrong: String { return self._s[4123]! } + public var Common_Create: String { return self._s[4126]! } + public var Passport_Language_hy: String { return self._s[4127]! } + public var CreatePoll_Explanation: String { return self._s[4128]! } + public var GroupPermission_AddMembersNotAvailable: String { return self._s[4129]! } + public var ChatImport_CreateGroupAlertImportAction: String { return self._s[4130]! } + public var PeerInfo_ButtonVoiceChat: String { return self._s[4131]! } + public var Undo_ChatClearedForBothSides: String { return self._s[4132]! } + public var DialogList_NoMessagesTitle: String { return self._s[4133]! } + public var GroupInfo_Title: String { return self._s[4135]! } public func ScheduleVoiceChat_ScheduleToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4133]!, self._r[4133]!, [_0]) + return formatWithArgumentRanges(self._s[4136]!, self._r[4136]!, [_0]) } - public var UserInfo_ContactForwardTooltip_SavedMessages_One: String { return self._s[4134]! } - public var Channel_AdminLog_CanBanUsers: String { return self._s[4135]! } - public var PhoneNumberHelp_Help: String { return self._s[4136]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[4137]! } - public var Settings_Logout: String { return self._s[4138]! } - public var Privacy_PaymentsTitle: String { return self._s[4139]! } - public var StickerPacksSettings_StickerPacksSection: String { return self._s[4140]! } - public var Tour_Text6: String { return self._s[4141]! } - public var ChatImportActivity_Title: String { return self._s[4143]! } - public var Channel_Username_Help: String { return self._s[4144]! } - public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[4145]! } - public var AttachmentMenu_Poll: String { return self._s[4146]! } - public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[4147]! } - public var Conversation_ReportSpamChannelConfirmation: String { return self._s[4148]! } - public var Passport_DeletePassport: String { return self._s[4149]! } - public var Login_Code: String { return self._s[4150]! } - public var Notification_SecretChatScreenshot: String { return self._s[4151]! } - public var VoiceChat_AddBio: String { return self._s[4152]! } - public var Login_CodeFloodError: String { return self._s[4153]! } + public var UserInfo_ContactForwardTooltip_SavedMessages_One: String { return self._s[4137]! } + public var Channel_AdminLog_CanBanUsers: String { return self._s[4138]! } + public var PhoneNumberHelp_Help: String { return self._s[4139]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[4140]! } + public var Settings_Logout: String { return self._s[4141]! } + public var Privacy_PaymentsTitle: String { return self._s[4142]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[4143]! } + public var Tour_Text6: String { return self._s[4144]! } + public var ChatImportActivity_Title: String { return self._s[4146]! } + public var Channel_Username_Help: String { return self._s[4147]! } + public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[4148]! } + public var AttachmentMenu_Poll: String { return self._s[4149]! } + public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[4150]! } + public var Conversation_ReportSpamChannelConfirmation: String { return self._s[4151]! } + public var Passport_DeletePassport: String { return self._s[4152]! } + public var Login_Code: String { return self._s[4153]! } + public var Notification_SecretChatScreenshot: String { return self._s[4154]! } + public var VoiceChat_AddBio: String { return self._s[4155]! } + public var Login_CodeFloodError: String { return self._s[4156]! } public func Notification_PinnedAnimationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4154]!, self._r[4154]!, [_0]) + return formatWithArgumentRanges(self._s[4157]!, self._r[4157]!, [_0]) } public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4155]!, self._r[4155]!, [_0]) - } - public var Watch_Stickers_Recents: String { return self._s[4156]! } - public var Generic_ErrorMoreInfo: String { return self._s[4157]! } - public func Call_AccountIsLoggedOnCurrentDevice(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4158]!, self._r[4158]!, [_0]) } - public var AutoDownloadSettings_DataUsage: String { return self._s[4159]! } - public var Conversation_ViewTheme: String { return self._s[4160]! } - public var Contacts_InviteSearchLabel: String { return self._s[4161]! } - public var Settings_CancelUpload: String { return self._s[4163]! } - public var Settings_AppLanguage_Unofficial: String { return self._s[4164]! } + public var Watch_Stickers_Recents: String { return self._s[4159]! } + public var Generic_ErrorMoreInfo: String { return self._s[4160]! } + public func Call_AccountIsLoggedOnCurrentDevice(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4161]!, self._r[4161]!, [_0]) + } + public var AutoDownloadSettings_DataUsage: String { return self._s[4162]! } + public var Conversation_ViewTheme: String { return self._s[4163]! } + public var Contacts_InviteSearchLabel: String { return self._s[4164]! } + public var Settings_CancelUpload: String { return self._s[4166]! } + public var Settings_AppLanguage_Unofficial: String { return self._s[4167]! } public func ChatList_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4165]!, self._r[4165]!, [_0]) + return formatWithArgumentRanges(self._s[4168]!, self._r[4168]!, [_0]) } - public var ChatList_AddFolder: String { return self._s[4166]! } - public var Conversation_Location: String { return self._s[4168]! } - public var Appearance_BubbleCorners_AdjustAdjacent: String { return self._s[4169]! } - public var DialogList_AdLabel: String { return self._s[4170]! } + public var ChatList_AddFolder: String { return self._s[4169]! } + public var Conversation_Location: String { return self._s[4171]! } + public var Appearance_BubbleCorners_AdjustAdjacent: String { return self._s[4172]! } + public var DialogList_AdLabel: String { return self._s[4173]! } public func Time_TomorrowAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4172]!, self._r[4172]!, [_0]) + return formatWithArgumentRanges(self._s[4175]!, self._r[4175]!, [_0]) } - public var Message_InvoiceLabel: String { return self._s[4173]! } - public var Channel_TooMuchBots: String { return self._s[4174]! } + public var Message_InvoiceLabel: String { return self._s[4176]! } + public var Channel_TooMuchBots: String { return self._s[4177]! } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4176]!, self._r[4176]!, [_0]) + return formatWithArgumentRanges(self._s[4179]!, self._r[4179]!, [_0]) } - public var Call_IncomingVideoCall: String { return self._s[4177]! } - public var Conversation_LiveLocation: String { return self._s[4178]! } - public var VoiceChat_AskedToSpeakHelp: String { return self._s[4179]! } - public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[4180]! } - public var Passport_Identity_EditPassport: String { return self._s[4181]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[4183]! } - public var ChatList_Search_NoResultsFitlerVoice: String { return self._s[4184]! } - public var GroupInfo_Permissions_AddException: String { return self._s[4185]! } + public var Call_IncomingVideoCall: String { return self._s[4180]! } + public var Conversation_LiveLocation: String { return self._s[4181]! } + public var VoiceChat_AskedToSpeakHelp: String { return self._s[4182]! } + public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[4183]! } + public var Passport_Identity_EditPassport: String { return self._s[4184]! } + public var Permissions_CellularDataTitle_v0: String { return self._s[4186]! } + public var ChatList_Search_NoResultsFitlerVoice: String { return self._s[4187]! } + public var GroupInfo_Permissions_AddException: String { return self._s[4188]! } public func VoiceChat_RemovePeerConfirmationChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4187]!, self._r[4187]!, [_0]) + return formatWithArgumentRanges(self._s[4190]!, self._r[4190]!, [_0]) } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[4188]! } - public var Channel_MessageVideoUpdated: String { return self._s[4189]! } - public var GroupInfo_Permissions_EditingDisabled: String { return self._s[4190]! } - public var AutoremoveSetup_TimeSectionHeader: String { return self._s[4193]! } - public var AccessDenied_Camera: String { return self._s[4194]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[4191]! } + public var Channel_MessageVideoUpdated: String { return self._s[4192]! } + public var GroupInfo_Permissions_EditingDisabled: String { return self._s[4193]! } + public var AutoremoveSetup_TimeSectionHeader: String { return self._s[4196]! } + public var AccessDenied_Camera: String { return self._s[4197]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4195]!, self._r[4195]!, [_0]) + return formatWithArgumentRanges(self._s[4198]!, self._r[4198]!, [_0]) } - public var Theme_Context_ChangeColors: String { return self._s[4196]! } - public var PrivacySettings_TwoStepAuth: String { return self._s[4197]! } - public var Privacy_Forwards_PreviewMessageText: String { return self._s[4198]! } - public var Login_CodeExpiredError: String { return self._s[4199]! } - public var State_ConnectingToProxy: String { return self._s[4200]! } - public var TextFormat_Link: String { return self._s[4201]! } - public var Passport_Language_lv: String { return self._s[4203]! } - public var Conversation_AutoremoveTimerRemovedGroup: String { return self._s[4204]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[4205]! } - public var WallpaperPreview_SwipeBottomText: String { return self._s[4206]! } - public var ProfilePhoto_SetMainVideo: String { return self._s[4207]! } - public var AutoDownloadSettings_Cellular: String { return self._s[4209]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[4210]! } + public var Theme_Context_ChangeColors: String { return self._s[4199]! } + public var PrivacySettings_TwoStepAuth: String { return self._s[4200]! } + public var Privacy_Forwards_PreviewMessageText: String { return self._s[4201]! } + public var Login_CodeExpiredError: String { return self._s[4202]! } + public var State_ConnectingToProxy: String { return self._s[4203]! } + public var TextFormat_Link: String { return self._s[4204]! } + public var Passport_Language_lv: String { return self._s[4206]! } + public var Conversation_AutoremoveTimerRemovedGroup: String { return self._s[4207]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[4208]! } + public var WallpaperPreview_SwipeBottomText: String { return self._s[4209]! } + public var ProfilePhoto_SetMainVideo: String { return self._s[4210]! } + public var AutoDownloadSettings_Cellular: String { return self._s[4212]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[4213]! } public func Channel_AdminLog_MessageKickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4211]!, self._r[4211]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4214]!, self._r[4214]!, [_1, _2]) } - public var ChatList_EmptyChatListFilterTitle: String { return self._s[4212]! } - public var Checkout_PayNone: String { return self._s[4213]! } - public var NotificationsSound_Complete: String { return self._s[4215]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[4216]! } - public var InviteLink_CreateInfo: String { return self._s[4217]! } - public var AuthSessions_DevicesTitle: String { return self._s[4218]! } + public var ChatList_EmptyChatListFilterTitle: String { return self._s[4215]! } + public var Checkout_PayNone: String { return self._s[4216]! } + public var NotificationsSound_Complete: String { return self._s[4218]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[4219]! } + public var InviteLink_CreateInfo: String { return self._s[4220]! } + public var AuthSessions_DevicesTitle: String { return self._s[4221]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4219]!, self._r[4219]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4222]!, self._r[4222]!, [_0, _1]) } - public var Message_LiveLocation: String { return self._s[4220]! } - public var Watch_Suggestion_BRB: String { return self._s[4221]! } - public var Channel_BanUser_Title: String { return self._s[4222]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4223]! } - public var Conversation_Dice_u1F3C0: String { return self._s[4224]! } - public var Conversation_ClearSelfHistory: String { return self._s[4225]! } - public var ProfilePhoto_OpenGallery: String { return self._s[4226]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[4227]! } - public var Weekday_Thursday: String { return self._s[4228]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[4229]! } - public var Privacy_ProfilePhoto: String { return self._s[4231]! } - public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[4232]! } + public var Message_LiveLocation: String { return self._s[4223]! } + public var Watch_Suggestion_BRB: String { return self._s[4224]! } + public var Channel_BanUser_Title: String { return self._s[4225]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4226]! } + public var Conversation_Dice_u1F3C0: String { return self._s[4227]! } + public var Conversation_ClearSelfHistory: String { return self._s[4228]! } + public var ProfilePhoto_OpenGallery: String { return self._s[4229]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[4230]! } + public var Weekday_Thursday: String { return self._s[4231]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[4232]! } + public var Privacy_ProfilePhoto: String { return self._s[4234]! } + public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[4235]! } public func Channel_AdminLog_MessageChangedUnlinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4233]!, self._r[4233]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4236]!, self._r[4236]!, [_1, _2]) } - public var Message_Audio: String { return self._s[4234]! } - public var Conversation_Info: String { return self._s[4235]! } - public var Cache_Videos: String { return self._s[4236]! } - public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[4237]! } - public var Channel_ErrorAddTooMuch: String { return self._s[4238]! } + public var Message_Audio: String { return self._s[4237]! } + public var Conversation_Info: String { return self._s[4238]! } + public var Cache_Videos: String { return self._s[4239]! } + public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[4240]! } + public var Channel_ErrorAddTooMuch: String { return self._s[4241]! } public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4239]!, self._r[4239]!, [_0]) + return formatWithArgumentRanges(self._s[4242]!, self._r[4242]!, [_0]) } - public var VoiceChat_EditBio: String { return self._s[4240]! } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[4242]! } - public var ScheduledMessages_Title: String { return self._s[4244]! } - public var ShareFileTip_Title: String { return self._s[4247]! } - public var Chat_Gifs_TrendingSectionHeader: String { return self._s[4248]! } - public var ChatList_RemoveFolderConfirmation: String { return self._s[4249]! } + public var VoiceChat_EditBio: String { return self._s[4243]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[4245]! } + public var ScheduledMessages_Title: String { return self._s[4247]! } + public var ShareFileTip_Title: String { return self._s[4250]! } + public var Chat_Gifs_TrendingSectionHeader: String { return self._s[4251]! } + public var ChatList_RemoveFolderConfirmation: String { return self._s[4252]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4250]!, self._r[4250]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4253]!, self._r[4253]!, [_1, _2]) } - public var Conversation_ContextViewStats: String { return self._s[4252]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[4253]! } - public var PasscodeSettings_Title: String { return self._s[4254]! } - public var Channel_AdminLog_SendPolls: String { return self._s[4255]! } - public var LastSeen_ALongTimeAgo: String { return self._s[4256]! } + public var Conversation_ContextViewStats: String { return self._s[4255]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[4256]! } + public var PasscodeSettings_Title: String { return self._s[4257]! } + public var Channel_AdminLog_SendPolls: String { return self._s[4258]! } + public var LastSeen_ALongTimeAgo: String { return self._s[4259]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4257]!, self._r[4257]!, [_1]) + return formatWithArgumentRanges(self._s[4260]!, self._r[4260]!, [_1]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4258]! } - public var ChannelInfo_FakeChannelWarning: String { return self._s[4259]! } - public var CallFeedback_VideoReasonLowQuality: String { return self._s[4260]! } - public var Conversation_PinnedPreviousMessage: String { return self._s[4261]! } - public var SocksProxySetup_AddProxyTitle: String { return self._s[4262]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[4263]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4261]! } + public var ChannelInfo_FakeChannelWarning: String { return self._s[4262]! } + public var CallFeedback_VideoReasonLowQuality: String { return self._s[4263]! } + public var Conversation_PinnedPreviousMessage: String { return self._s[4264]! } + public var SocksProxySetup_AddProxyTitle: String { return self._s[4265]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[4266]! } public func ChatList_RemovedFromFolderTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4264]!, self._r[4264]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4267]!, self._r[4267]!, [_1, _2]) } public func Conversation_SetReminder_RemindToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4265]!, self._r[4265]!, [_0]) + return formatWithArgumentRanges(self._s[4268]!, self._r[4268]!, [_0]) } - public var Passport_Identity_GenderFemale: String { return self._s[4266]! } - public var Location_ProximityNotification_DistanceKM: String { return self._s[4269]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[4270]! } + public var Passport_Identity_GenderFemale: String { return self._s[4269]! } + public var Location_ProximityNotification_DistanceKM: String { return self._s[4272]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[4273]! } public func Message_ImportedDateFormat(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4271]!, self._r[4271]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4274]!, self._r[4274]!, [_1, _2, _3]) } - public var VoiceChat_Audio: String { return self._s[4272]! } - public var SharedMedia_TitleAll: String { return self._s[4273]! } - public var Settings_Context_Logout: String { return self._s[4274]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[4277]! } - public var Settings_About_Title: String { return self._s[4278]! } - public var StickerSettings_ContextHide: String { return self._s[4279]! } + public var VoiceChat_Audio: String { return self._s[4275]! } + public var SharedMedia_TitleAll: String { return self._s[4276]! } + public var Settings_Context_Logout: String { return self._s[4277]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[4280]! } + public var Settings_About_Title: String { return self._s[4281]! } + public var StickerSettings_ContextHide: String { return self._s[4282]! } public func AutoDownloadSettings_UpTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4280]!, self._r[4280]!, [_0]) + return formatWithArgumentRanges(self._s[4283]!, self._r[4283]!, [_0]) } public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4281]!, self._r[4281]!, [_0]) + return formatWithArgumentRanges(self._s[4284]!, self._r[4284]!, [_0]) } - public var ChatImport_SelectionConfirmationAlertImportAction: String { return self._s[4283]! } - public var Common_Cancel: String { return self._s[4284]! } - public var CallFeedback_Title: String { return self._s[4286]! } + public var ChatImport_SelectionConfirmationAlertImportAction: String { return self._s[4286]! } + public var Common_Cancel: String { return self._s[4287]! } + public var CallFeedback_Title: String { return self._s[4289]! } public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4287]!, self._r[4287]!, [_0]) + return formatWithArgumentRanges(self._s[4290]!, self._r[4290]!, [_0]) } - public var Conversation_StickerAddedToFavorites: String { return self._s[4288]! } - public var Activity_UploadingVideoMessage: String { return self._s[4290]! } - public var MediaPicker_Send: String { return self._s[4291]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[4292]! } - public var Conversation_LiveLocationYou: String { return self._s[4293]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[4294]! } + public var Conversation_StickerAddedToFavorites: String { return self._s[4291]! } + public var Activity_UploadingVideoMessage: String { return self._s[4293]! } + public var MediaPicker_Send: String { return self._s[4294]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[4295]! } + public var Conversation_LiveLocationYou: String { return self._s[4296]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[4297]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4296]!, self._r[4296]!, [_0]) + return formatWithArgumentRanges(self._s[4299]!, self._r[4299]!, [_0]) } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4297]!, self._r[4297]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4300]!, self._r[4300]!, [_1, _2]) } - public var Conversation_ViewBackground: String { return self._s[4298]! } - public var ChatSettings_PrivateChats: String { return self._s[4301]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[4302]! } - public var BroadcastGroups_LimitAlert_LearnMore: String { return self._s[4303]! } - public var Appearance_ThemeNight: String { return self._s[4304]! } - public var Common_Search: String { return self._s[4305]! } - public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[4306]! } - public var ChangePhoneNumberNumber_Help: String { return self._s[4308]! } - public var InviteLink_QRCode_Share: String { return self._s[4309]! } - public var Stickers_SuggestAdded: String { return self._s[4311]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[4314]! } - public var Widget_UpdatedTodayAt: String { return self._s[4315]! } - public var NetworkUsageSettings_Cellular: String { return self._s[4316]! } - public var CheckoutInfo_Title: String { return self._s[4317]! } - public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[4318]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[4319]! } + public var Conversation_ViewBackground: String { return self._s[4301]! } + public var ChatSettings_PrivateChats: String { return self._s[4304]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[4305]! } + public var BroadcastGroups_LimitAlert_LearnMore: String { return self._s[4306]! } + public var Appearance_ThemeNight: String { return self._s[4307]! } + public var Common_Search: String { return self._s[4308]! } + public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[4309]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[4311]! } + public var InviteLink_QRCode_Share: String { return self._s[4312]! } + public var Stickers_SuggestAdded: String { return self._s[4314]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[4317]! } + public var Widget_UpdatedTodayAt: String { return self._s[4318]! } + public var NetworkUsageSettings_Cellular: String { return self._s[4319]! } + public var CheckoutInfo_Title: String { return self._s[4320]! } + public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[4321]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[4322]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4320]!, self._r[4320]!, [_0]) + return formatWithArgumentRanges(self._s[4323]!, self._r[4323]!, [_0]) } - public var MaskStickerSettings_Info: String { return self._s[4322]! } - public var GroupRemoved_DeleteUser: String { return self._s[4324]! } - public var Contacts_ShareTelegram: String { return self._s[4325]! } - public var Group_UpgradeNoticeText1: String { return self._s[4326]! } + public var MaskStickerSettings_Info: String { return self._s[4325]! } + public var GroupRemoved_DeleteUser: String { return self._s[4327]! } + public var Contacts_ShareTelegram: String { return self._s[4328]! } + public var Group_UpgradeNoticeText1: String { return self._s[4329]! } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4327]!, self._r[4327]!, [_1]) + return formatWithArgumentRanges(self._s[4330]!, self._r[4330]!, [_1]) } - public var PrivacyLastSeenSettings_Title: String { return self._s[4328]! } - public var SettingsSearch_Synonyms_Support: String { return self._s[4332]! } - public var PhotoEditor_TintTool: String { return self._s[4333]! } - public var ChatImportActivity_OpenApp: String { return self._s[4335]! } - public var GroupPermission_NoSendPolls: String { return self._s[4336]! } - public var NotificationsSound_None: String { return self._s[4337]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[4331]! } + public var SettingsSearch_Synonyms_Support: String { return self._s[4335]! } + public var PhotoEditor_TintTool: String { return self._s[4336]! } + public var ChatImportActivity_OpenApp: String { return self._s[4338]! } + public var GroupPermission_NoSendPolls: String { return self._s[4339]! } + public var NotificationsSound_None: String { return self._s[4340]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4338]!, self._r[4338]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4341]!, self._r[4341]!, [_1, "\(_2)"]) } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4341]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4344]! } public func Conversation_AutoremoveTimerSetChannel(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4343]!, self._r[4343]!, [_1]) + return formatWithArgumentRanges(self._s[4346]!, self._r[4346]!, [_1]) } - public var ExplicitContent_AlertChannel: String { return self._s[4344]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[4345]! } - public var Contacts_SortedByPresence: String { return self._s[4346]! } - public var WallpaperSearch_ColorGray: String { return self._s[4347]! } - public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4348]! } - public var Conversation_ReportSpam: String { return self._s[4349]! } - public var ChatList_Search_NoResultsFilter: String { return self._s[4352]! } - public var WallpaperSearch_ColorBlack: String { return self._s[4353]! } - public var ArchivedChats_IntroTitle3: String { return self._s[4354]! } - public var InviteLink_DeleteAllRevokedLinksAlert_Action: String { return self._s[4355]! } + public var ExplicitContent_AlertChannel: String { return self._s[4347]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[4348]! } + public var Contacts_SortedByPresence: String { return self._s[4349]! } + public var WallpaperSearch_ColorGray: String { return self._s[4350]! } + public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4351]! } + public var Conversation_ReportSpam: String { return self._s[4352]! } + public var ChatList_Search_NoResultsFilter: String { return self._s[4355]! } + public var WallpaperSearch_ColorBlack: String { return self._s[4356]! } + public var ArchivedChats_IntroTitle3: String { return self._s[4357]! } + public var InviteLink_DeleteAllRevokedLinksAlert_Action: String { return self._s[4358]! } public func VoiceChat_PeerJoinedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4356]!, self._r[4356]!, [_0]) + return formatWithArgumentRanges(self._s[4359]!, self._r[4359]!, [_0]) } - public var Conversation_DefaultRestrictedText: String { return self._s[4357]! } - public var Settings_Devices: String { return self._s[4358]! } - public var Call_AudioRouteSpeaker: String { return self._s[4359]! } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[4360]! } - public var VoiceChat_StartsIn: String { return self._s[4361]! } - public var Passport_Address_Country: String { return self._s[4363]! } - public var Cache_MaximumCacheSize: String { return self._s[4364]! } - public var Chat_PanelHidePinnedMessages: String { return self._s[4365]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[4366]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4368]! } - public var Login_TermsOfServiceLabel: String { return self._s[4369]! } - public var Calls_NoMissedCallsPlacehoder: String { return self._s[4370]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4371]! } - public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4372]! } - public var AutoNightTheme_ScheduledFrom: String { return self._s[4373]! } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[4374]! } - public var ConvertToSupergroup_Note: String { return self._s[4376]! } - public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4377]! } - public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4378]! } - public var Common_More: String { return self._s[4379]! } - public var ShareMenu_SelectChats: String { return self._s[4381]! } + public var Conversation_DefaultRestrictedText: String { return self._s[4360]! } + public var Settings_Devices: String { return self._s[4361]! } + public var Call_AudioRouteSpeaker: String { return self._s[4362]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[4363]! } + public var VoiceChat_StartsIn: String { return self._s[4364]! } + public var Passport_Address_Country: String { return self._s[4366]! } + public var Cache_MaximumCacheSize: String { return self._s[4367]! } + public var Chat_PanelHidePinnedMessages: String { return self._s[4368]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[4369]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4371]! } + public var Login_TermsOfServiceLabel: String { return self._s[4372]! } + public var Calls_NoMissedCallsPlacehoder: String { return self._s[4373]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4374]! } + public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4375]! } + public var AutoNightTheme_ScheduledFrom: String { return self._s[4376]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[4377]! } + public var ConvertToSupergroup_Note: String { return self._s[4379]! } + public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4380]! } + public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4381]! } + public var Common_More: String { return self._s[4382]! } + public var ShareMenu_SelectChats: String { return self._s[4384]! } + public var VoiceChat_ScheduledTitle: String { return self._s[4385]! } public func Conversation_ScheduleMessage_SendToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4382]!, self._r[4382]!, [_0]) + return formatWithArgumentRanges(self._s[4386]!, self._r[4386]!, [_0]) } public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4383]!, self._r[4383]!, [_0]) - } - public var Contacts_PermissionsKeepDisabled: String { return self._s[4385]! } - public var VoiceChat_EditBioText: String { return self._s[4386]! } - public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4387]!, self._r[4387]!, [_0]) } - public var WatchRemote_AlertOpen: String { return self._s[4388]! } + public var Contacts_PermissionsKeepDisabled: String { return self._s[4389]! } + public var VoiceChat_EditBioText: String { return self._s[4390]! } + public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4391]!, self._r[4391]!, [_0]) + } + public var WatchRemote_AlertOpen: String { return self._s[4392]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4389]!, self._r[4389]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4393]!, self._r[4393]!, [_1, _2, _3]) } - public var Channel_Members_AddMembersHelp: String { return self._s[4390]! } - public var Shortcut_SwitchAccount: String { return self._s[4391]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4392]! } + public var Channel_Members_AddMembersHelp: String { return self._s[4394]! } + public var Shortcut_SwitchAccount: String { return self._s[4395]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4396]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4393]!, self._r[4393]!, [_0]) + return formatWithArgumentRanges(self._s[4397]!, self._r[4397]!, [_0]) } - public var Compose_NewGroupTitle: String { return self._s[4394]! } - public var DialogList_You: String { return self._s[4395]! } - public var Call_VoiceOver_VoiceCallOutgoing: String { return self._s[4396]! } - public var ReportPeer_ReasonViolence: String { return self._s[4397]! } + public var Compose_NewGroupTitle: String { return self._s[4398]! } + public var DialogList_You: String { return self._s[4399]! } + public var Call_VoiceOver_VoiceCallOutgoing: String { return self._s[4400]! } + public var ReportPeer_ReasonViolence: String { return self._s[4401]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4398]!, self._r[4398]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4402]!, self._r[4402]!, [_1, _2]) } - public var VoiceChat_Reconnecting: String { return self._s[4400]! } - public var KeyCommand_ScrollDown: String { return self._s[4403]! } - public var ChatSettings_DownloadInBackground: String { return self._s[4404]! } - public var Wallpaper_ResetWallpapers: String { return self._s[4405]! } - public var Channel_BanList_RestrictedTitle: String { return self._s[4406]! } - public var ArchivedChats_IntroText3: String { return self._s[4407]! } - public var HashtagSearch_AllChats: String { return self._s[4409]! } - public var VoiceChat_EndVoiceChat: String { return self._s[4410]! } - public var Conversation_MessageCopied: String { return self._s[4412]! } - public var Channel_Info_BlackList: String { return self._s[4413]! } - public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4414]! } - public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4415]! } - public var Paint_Neon: String { return self._s[4417]! } - public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4418]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[4419]! } + public var VoiceChat_Reconnecting: String { return self._s[4404]! } + public var KeyCommand_ScrollDown: String { return self._s[4407]! } + public var ChatSettings_DownloadInBackground: String { return self._s[4408]! } + public var Wallpaper_ResetWallpapers: String { return self._s[4409]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[4410]! } + public var ArchivedChats_IntroText3: String { return self._s[4411]! } + public var HashtagSearch_AllChats: String { return self._s[4413]! } + public var VoiceChat_EndVoiceChat: String { return self._s[4414]! } + public var Conversation_MessageCopied: String { return self._s[4416]! } + public var Channel_Info_BlackList: String { return self._s[4417]! } + public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4418]! } + public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4419]! } + public var Paint_Neon: String { return self._s[4421]! } + public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4422]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[4423]! } public func Notification_PinnedVideoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4421]!, self._r[4421]!, [_0]) + return formatWithArgumentRanges(self._s[4425]!, self._r[4425]!, [_0]) } - public var Map_StopLiveLocation: String { return self._s[4422]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4423]! } - public var Channel_Username_InvalidCharacters: String { return self._s[4424]! } - public var InstantPage_Reference: String { return self._s[4426]! } - public var Group_Members_AddMembers: String { return self._s[4428]! } - public var ChatList_HideAction: String { return self._s[4429]! } - public var Conversation_FileICloudDrive: String { return self._s[4431]! } + public var Map_StopLiveLocation: String { return self._s[4426]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4427]! } + public var Channel_Username_InvalidCharacters: String { return self._s[4428]! } + public var InstantPage_Reference: String { return self._s[4430]! } + public var Group_Members_AddMembers: String { return self._s[4432]! } + public func Conversation_ScheduledVoiceChatStartsOn(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4433]!, self._r[4433]!, [_0]) + } + public var ChatList_HideAction: String { return self._s[4434]! } + public var Conversation_FileICloudDrive: String { return self._s[4436]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4432]!, self._r[4432]!, [_1]) + return formatWithArgumentRanges(self._s[4437]!, self._r[4437]!, [_1]) } - public var Passport_PasswordReset: String { return self._s[4434]! } - public var ChatList_Context_UnhideArchive: String { return self._s[4436]! } - public var ConvertToSupergroup_HelpText: String { return self._s[4437]! } - public var Calls_AddTab: String { return self._s[4438]! } - public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4439]! } - public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4440]! } - public var Privacy_GroupsAndChannels: String { return self._s[4443]! } - public var Conversation_UsernameCopied: String { return self._s[4444]! } - public var AutoNightTheme_Disabled: String { return self._s[4445]! } - public var CreatePoll_MultipleChoice: String { return self._s[4446]! } + public var Passport_PasswordReset: String { return self._s[4439]! } + public var ChatList_Context_UnhideArchive: String { return self._s[4441]! } + public var ConvertToSupergroup_HelpText: String { return self._s[4442]! } + public var Calls_AddTab: String { return self._s[4443]! } + public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4444]! } + public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4445]! } + public var Privacy_GroupsAndChannels: String { return self._s[4448]! } + public var Conversation_UsernameCopied: String { return self._s[4449]! } + public var AutoNightTheme_Disabled: String { return self._s[4450]! } + public var CreatePoll_MultipleChoice: String { return self._s[4451]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4447]!, self._r[4447]!, [_1]) + return formatWithArgumentRanges(self._s[4452]!, self._r[4452]!, [_1]) } - public var Watch_Bot_Restart: String { return self._s[4449]! } + public var Watch_Bot_Restart: String { return self._s[4454]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4450]!, self._r[4450]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[4455]!, self._r[4455]!, ["\(_0)"]) } - public var GroupInfo_ScamGroupWarning: String { return self._s[4452]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[4453]! } - public var Appearance_PreviewIncomingText: String { return self._s[4454]! } - public var ChatSettings_WidgetSettings: String { return self._s[4455]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4456]! } - public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4458]! } - public var Stats_GroupOverview: String { return self._s[4460]! } - public var ScheduledMessages_EditTime: String { return self._s[4463]! } - public var Month_GenFebruary: String { return self._s[4464]! } - public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4465]! } - public var Stickers_ClearRecent: String { return self._s[4466]! } - public var InviteLink_Create_UsersLimitNumberOfUsersUnlimited: String { return self._s[4467]! } - public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4468]! } - public var Stats_Message_PublicShares: String { return self._s[4469]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[4457]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[4458]! } + public var Appearance_PreviewIncomingText: String { return self._s[4459]! } + public var ChatSettings_WidgetSettings: String { return self._s[4460]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4461]! } + public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4463]! } + public var Stats_GroupOverview: String { return self._s[4465]! } + public var ScheduledMessages_EditTime: String { return self._s[4468]! } + public var Month_GenFebruary: String { return self._s[4469]! } + public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4470]! } + public var Stickers_ClearRecent: String { return self._s[4471]! } + public var InviteLink_Create_UsersLimitNumberOfUsersUnlimited: String { return self._s[4472]! } + public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4473]! } + public var Stats_Message_PublicShares: String { return self._s[4474]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4470]!, self._r[4470]!, [_0]) + return formatWithArgumentRanges(self._s[4475]!, self._r[4475]!, [_0]) } - public var Login_TermsOfServiceSignupDecline: String { return self._s[4471]! } - public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4472]! } - public var VoiceOver_Chat_PlayHint: String { return self._s[4473]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4474]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4476]! } - public var CreatePoll_Create: String { return self._s[4477]! } - public var ChatList_Search_FilterLinks: String { return self._s[4478]! } - public var Your_cards_number_is_invalid: String { return self._s[4479]! } - public var Month_ShortApril: String { return self._s[4480]! } - public var SocksProxySetup_UseForCalls: String { return self._s[4481]! } - public var Conversation_EditingCaptionPanelTitle: String { return self._s[4482]! } - public var SocksProxySetup_Status: String { return self._s[4483]! } - public var VoiceChat_UnmuteForMe: String { return self._s[4484]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4485]! } - public var ChatListFolder_CategoryBots: String { return self._s[4486]! } - public var Passport_FieldIdentitySelfieHelp: String { return self._s[4488]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4489]! } - public var Chat_PinnedListPreview_UnpinAllMessages: String { return self._s[4490]! } - public var Wallpaper_ResetWallpapersInfo: String { return self._s[4491]! } - public var Conversation_TitleUnmute: String { return self._s[4492]! } - public var Group_Setup_TypeHeader: String { return self._s[4493]! } + public var Login_TermsOfServiceSignupDecline: String { return self._s[4476]! } + public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4477]! } + public var VoiceOver_Chat_PlayHint: String { return self._s[4478]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4479]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4481]! } + public var CreatePoll_Create: String { return self._s[4482]! } + public var ChatList_Search_FilterLinks: String { return self._s[4483]! } + public var Your_cards_number_is_invalid: String { return self._s[4484]! } + public var Month_ShortApril: String { return self._s[4485]! } + public var SocksProxySetup_UseForCalls: String { return self._s[4486]! } + public var Conversation_EditingCaptionPanelTitle: String { return self._s[4487]! } + public var SocksProxySetup_Status: String { return self._s[4488]! } + public var VoiceChat_UnmuteForMe: String { return self._s[4489]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4490]! } + public var ChatListFolder_CategoryBots: String { return self._s[4491]! } + public var Passport_FieldIdentitySelfieHelp: String { return self._s[4493]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4494]! } + public var Chat_PinnedListPreview_UnpinAllMessages: String { return self._s[4495]! } + public var Wallpaper_ResetWallpapersInfo: String { return self._s[4496]! } + public var Conversation_TitleUnmute: String { return self._s[4497]! } + public var Group_Setup_TypeHeader: String { return self._s[4498]! } public func Conversation_ForwardTooltip_ManyChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4494]!, self._r[4494]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4499]!, self._r[4499]!, [_0, _1]) } - public var Stats_ViewsPerPost: String { return self._s[4495]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4496]! } - public var Passport_Identity_TranslationHelp: String { return self._s[4497]! } + public var Stats_ViewsPerPost: String { return self._s[4500]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4501]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4502]! } public func PUSH_CHANNEL_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4498]!, self._r[4498]!, [_1]) + return formatWithArgumentRanges(self._s[4503]!, self._r[4503]!, [_1]) } - public var GroupInfo_Administrators_Title: String { return self._s[4499]! } + public var GroupInfo_Administrators_Title: String { return self._s[4504]! } public func Channel_AdminLog_MessageRankName(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4500]!, self._r[4500]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4505]!, self._r[4505]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4501]!, self._r[4501]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4506]!, self._r[4506]!, [_1, _2, _3]) } - public var CheckoutInfo_ShippingInfoState: String { return self._s[4502]! } - public var Passport_Language_my: String { return self._s[4504]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4505]! } - public var Map_PlacesNearby: String { return self._s[4506]! } - public var Channel_About_Help: String { return self._s[4507]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[4508]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[4509]! } - public var Channel_Username_Title: String { return self._s[4510]! } - public var Activity_RecordingVideoMessage: String { return self._s[4511]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[4507]! } + public var Passport_Language_my: String { return self._s[4509]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4510]! } + public var Map_PlacesNearby: String { return self._s[4511]! } + public var Channel_About_Help: String { return self._s[4512]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[4513]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[4514]! } + public var Channel_Username_Title: String { return self._s[4515]! } + public var Activity_RecordingVideoMessage: String { return self._s[4516]! } public func StickerPackActionInfo_RemovedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4512]!, self._r[4512]!, [_0]) - } - public var CheckoutInfo_ShippingInfoCity: String { return self._s[4513]! } - public var Passport_DiscardMessageDescription: String { return self._s[4514]! } - public var Conversation_LinkDialogOpen: String { return self._s[4515]! } - public var ChatList_Context_HideArchive: String { return self._s[4516]! } - public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4517]!, self._r[4517]!, [_0]) } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4518]! } - public var Conversation_Admin: String { return self._s[4519]! } - public var DialogList_TabTitle: String { return self._s[4520]! } + public var CheckoutInfo_ShippingInfoCity: String { return self._s[4518]! } + public var Passport_DiscardMessageDescription: String { return self._s[4519]! } + public var Conversation_LinkDialogOpen: String { return self._s[4520]! } + public var ChatList_Context_HideArchive: String { return self._s[4521]! } + public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4522]!, self._r[4522]!, [_0]) + } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4523]! } + public var Conversation_Admin: String { return self._s[4524]! } + public var DialogList_TabTitle: String { return self._s[4525]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4521]!, self._r[4521]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4526]!, self._r[4526]!, [_1, _2]) } - public var Notifications_PermissionsUnreachableText: String { return self._s[4522]! } - public var Passport_Identity_GenderMale: String { return self._s[4524]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[4527]! } + public var Passport_Identity_GenderMale: String { return self._s[4529]! } public func VoiceChat_EditTitleSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4526]!, self._r[4526]!, [_0]) - } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4527]! } - public var PhoneNumberHelp_Alert: String { return self._s[4528]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4529]! } - public var Notifications_InAppNotifications: String { return self._s[4530]! } - public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4531]!, self._r[4531]!, [_0]) } - public var Notification_VideoCallOutgoing: String { return self._s[4532]! } - public var Login_InvalidCodeError: String { return self._s[4533]! } - public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4534]! } - public func LastSeen_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4532]! } + public var PhoneNumberHelp_Alert: String { return self._s[4533]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4534]! } + public var Notifications_InAppNotifications: String { return self._s[4535]! } + public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4536]!, self._r[4536]!, [_0]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4537]! } - public var ReportPeer_Report: String { return self._s[4538]! } - public var Camera_FlashOff: String { return self._s[4541]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4544]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[4547]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4548]! } - public var Passport_FieldEmail: String { return self._s[4549]! } + public var Notification_VideoCallOutgoing: String { return self._s[4537]! } + public var Login_InvalidCodeError: String { return self._s[4538]! } + public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4539]! } + public func LastSeen_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4541]!, self._r[4541]!, [_0]) + } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4542]! } + public var ReportPeer_Report: String { return self._s[4543]! } + public var Camera_FlashOff: String { return self._s[4546]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4549]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[4552]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4553]! } + public var Passport_FieldEmail: String { return self._s[4554]! } public func Channel_AdminLog_MessageKickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4550]!, self._r[4550]!, [_1]) + return formatWithArgumentRanges(self._s[4555]!, self._r[4555]!, [_1]) } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[4551]! } - public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4552]! } - public var Group_OwnershipTransfer_Title: String { return self._s[4553]! } - public var Conversation_DefaultRestrictedInline: String { return self._s[4554]! } - public var Login_PhoneNumberHelp: String { return self._s[4556]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4557]! } - public var Conversation_PinnedQuiz: String { return self._s[4558]! } - public var CreateGroup_SoftUserLimitAlert: String { return self._s[4559]! } - public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4560]! } - public var Group_MessagePhotoUpdated: String { return self._s[4561]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[4562]! } - public var BroadcastGroups_ConfirmationAlert_Text: String { return self._s[4563]! } - public var Passport_Identity_Translations: String { return self._s[4565]! } - public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4566]! } - public var ChannelInfo_DeleteChannel: String { return self._s[4568]! } - public var PasscodeSettings_HelpBottom: String { return self._s[4569]! } - public var Channel_Members_AddMembers: String { return self._s[4570]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[4571]! } - public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4573]! } - public var Conversation_HoldForAudio: String { return self._s[4574]! } - public var Media_LimitedAccessChangeSettings: String { return self._s[4576]! } - public var Watch_LastSeen_Lately: String { return self._s[4577]! } - public var ChatList_Context_MarkAsRead: String { return self._s[4578]! } - public var Conversation_PinnedMessage: String { return self._s[4579]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4580]! } - public var VoiceChat_StopRecordingStop: String { return self._s[4582]! } - public var Passport_UpdateRequiredError: String { return self._s[4583]! } - public var PrivacySettings_Passcode: String { return self._s[4584]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[4556]! } + public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4557]! } + public var Group_OwnershipTransfer_Title: String { return self._s[4558]! } + public var Conversation_DefaultRestrictedInline: String { return self._s[4559]! } + public var Login_PhoneNumberHelp: String { return self._s[4561]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4562]! } + public var Conversation_PinnedQuiz: String { return self._s[4563]! } + public var CreateGroup_SoftUserLimitAlert: String { return self._s[4564]! } + public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4565]! } + public var Group_MessagePhotoUpdated: String { return self._s[4566]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[4567]! } + public var BroadcastGroups_ConfirmationAlert_Text: String { return self._s[4568]! } + public var Passport_Identity_Translations: String { return self._s[4570]! } + public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4571]! } + public var ChannelInfo_DeleteChannel: String { return self._s[4573]! } + public var PasscodeSettings_HelpBottom: String { return self._s[4574]! } + public var Channel_Members_AddMembers: String { return self._s[4575]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[4576]! } + public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4578]! } + public var Conversation_HoldForAudio: String { return self._s[4579]! } + public var Media_LimitedAccessChangeSettings: String { return self._s[4581]! } + public var Watch_LastSeen_Lately: String { return self._s[4582]! } + public var ChatList_Context_MarkAsRead: String { return self._s[4583]! } + public var Conversation_PinnedMessage: String { return self._s[4584]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4585]! } + public var VoiceChat_StopRecordingStop: String { return self._s[4587]! } + public var Passport_UpdateRequiredError: String { return self._s[4588]! } + public var PrivacySettings_Passcode: String { return self._s[4589]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4585]!, self._r[4585]!, [_0]) + return formatWithArgumentRanges(self._s[4590]!, self._r[4590]!, [_0]) } - public var AutoNightTheme_NotAvailable: String { return self._s[4586]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[4587]! } - public var VoiceOver_Common_On: String { return self._s[4588]! } - public var LoginPassword_InvalidPasswordError: String { return self._s[4589]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4590]! } - public var Channel_SignMessages_Help: String { return self._s[4591]! } - public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4592]! } - public var Conversation_TitleNoComments: String { return self._s[4593]! } - public var MediaPicker_LivePhotoDescription: String { return self._s[4594]! } - public var GroupInfo_Permissions: String { return self._s[4595]! } - public var GroupPermission_NoSendLinks: String { return self._s[4598]! } - public var Passport_Identity_ResidenceCountry: String { return self._s[4599]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[4601]! } - public var ChatList_ArchiveAction: String { return self._s[4602]! } + public var AutoNightTheme_NotAvailable: String { return self._s[4591]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[4592]! } + public var VoiceOver_Common_On: String { return self._s[4593]! } + public var LoginPassword_InvalidPasswordError: String { return self._s[4594]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4595]! } + public var Channel_SignMessages_Help: String { return self._s[4596]! } + public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4597]! } + public var Conversation_TitleNoComments: String { return self._s[4598]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[4599]! } + public var GroupInfo_Permissions: String { return self._s[4600]! } + public var GroupPermission_NoSendLinks: String { return self._s[4603]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[4604]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[4606]! } + public var ChatList_ArchiveAction: String { return self._s[4607]! } public func Channel_AdminLog_DisabledSlowmode(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4603]!, self._r[4603]!, [_0]) + return formatWithArgumentRanges(self._s[4608]!, self._r[4608]!, [_0]) } - public var GroupInfo_GroupHistory: String { return self._s[4604]! } + public var GroupInfo_GroupHistory: String { return self._s[4609]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4606]!, self._r[4606]!, [_0]) + return formatWithArgumentRanges(self._s[4611]!, self._r[4611]!, [_0]) } - public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4608]! } - public var Channel_Info_Banned: String { return self._s[4609]! } - public var Paint_RecentStickers: String { return self._s[4610]! } - public var VoiceOver_MessageContextSend: String { return self._s[4611]! } - public var Group_ErrorNotMutualContact: String { return self._s[4612]! } - public var ReportPeer_ReasonOther: String { return self._s[4614]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4615]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4617]! } - public var KeyCommand_Find: String { return self._s[4618]! } + public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4613]! } + public var Channel_Info_Banned: String { return self._s[4614]! } + public var Paint_RecentStickers: String { return self._s[4615]! } + public var VoiceOver_MessageContextSend: String { return self._s[4616]! } + public var Group_ErrorNotMutualContact: String { return self._s[4617]! } + public var ReportPeer_ReasonOther: String { return self._s[4619]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4620]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4622]! } + public var KeyCommand_Find: String { return self._s[4623]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4619]!, self._r[4619]!, [_0]) + return formatWithArgumentRanges(self._s[4624]!, self._r[4624]!, [_0]) } - public var ChatList_Context_Unmute: String { return self._s[4620]! } - public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4621]! } - public var Stickers_GroupStickersHelp: String { return self._s[4622]! } - public var Checkout_Title: String { return self._s[4623]! } - public var Activity_RecordingAudio: String { return self._s[4624]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4625]! } - public var BlockedUsers_BlockTitle: String { return self._s[4626]! } - public var DialogList_SavedMessagesHelp: String { return self._s[4628]! } - public var Calls_All: String { return self._s[4629]! } - public var Settings_FAQ_Button: String { return self._s[4631]! } - public var Conversation_Dice_u1F3B0: String { return self._s[4633]! } + public var ChatList_Context_Unmute: String { return self._s[4625]! } + public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4626]! } + public var Stickers_GroupStickersHelp: String { return self._s[4627]! } + public var Checkout_Title: String { return self._s[4628]! } + public var Activity_RecordingAudio: String { return self._s[4629]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4630]! } + public var BlockedUsers_BlockTitle: String { return self._s[4631]! } + public var DialogList_SavedMessagesHelp: String { return self._s[4633]! } + public var Calls_All: String { return self._s[4634]! } + public var Settings_FAQ_Button: String { return self._s[4636]! } + public var Conversation_Dice_u1F3B0: String { return self._s[4638]! } public func Time_MonthOfYear_m5(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4634]!, self._r[4634]!, [_0]) + return formatWithArgumentRanges(self._s[4639]!, self._r[4639]!, [_0]) } - public var Conversation_ReportGroupLocation: String { return self._s[4635]! } - public var Passport_Scans_Upload: String { return self._s[4636]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4638]! } - public var ChatList_UnarchiveAction: String { return self._s[4639]! } - public var Stats_GroupTopInviter_History: String { return self._s[4640]! } - public var GroupInfo_Permissions_Title: String { return self._s[4641]! } - public var VoiceChat_CreateNewVoiceChatStart: String { return self._s[4642]! } - public var Passport_Language_el: String { return self._s[4643]! } - public var Channel_DiscussionMessageUnavailable: String { return self._s[4644]! } + public var Conversation_ReportGroupLocation: String { return self._s[4640]! } + public var Passport_Scans_Upload: String { return self._s[4641]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4643]! } + public var ChatList_UnarchiveAction: String { return self._s[4644]! } + public var Stats_GroupTopInviter_History: String { return self._s[4645]! } + public var GroupInfo_Permissions_Title: String { return self._s[4646]! } + public var VoiceChat_CreateNewVoiceChatStart: String { return self._s[4647]! } + public var Passport_Language_el: String { return self._s[4648]! } + public var Channel_DiscussionMessageUnavailable: String { return self._s[4649]! } public func UserInfo_ContactForwardTooltip_TwoChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4645]!, self._r[4645]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4650]!, self._r[4650]!, [_0, _1]) } - public var GroupInfo_ActionPromote: String { return self._s[4646]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4647]! } - public var Media_LimitedAccessSelectMore: String { return self._s[4648]! } + public var GroupInfo_ActionPromote: String { return self._s[4651]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4652]! } + public var Media_LimitedAccessSelectMore: String { return self._s[4653]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4649]!, self._r[4649]!, [_0]) + return formatWithArgumentRanges(self._s[4654]!, self._r[4654]!, [_0]) } - public var VoiceOver_Chat_Reply: String { return self._s[4650]! } - public var Month_GenMay: String { return self._s[4651]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4652]! } - public var Chat_PsaTooltip_covid: String { return self._s[4653]! } - public var Watch_Suggestion_CantTalk: String { return self._s[4654]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4655]! } - public var AppUpgrade_Running: String { return self._s[4656]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4659]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4660]! } - public var SharedMedia_EmptyText: String { return self._s[4661]! } - public var Passport_Address_EditResidentialAddress: String { return self._s[4662]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4663]! } - public var Message_PinnedGame: String { return self._s[4664]! } - public var KeyCommand_SearchInChat: String { return self._s[4665]! } - public var Appearance_ThemeCarouselNewNight: String { return self._s[4666]! } - public var ChatList_Search_FilterMedia: String { return self._s[4667]! } - public var Message_PinnedAudioMessage: String { return self._s[4668]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[4670]! } + public var VoiceOver_Chat_Reply: String { return self._s[4655]! } + public var Month_GenMay: String { return self._s[4656]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4657]! } + public var Chat_PsaTooltip_covid: String { return self._s[4658]! } + public var Watch_Suggestion_CantTalk: String { return self._s[4659]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4660]! } + public var AppUpgrade_Running: String { return self._s[4661]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4664]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4665]! } + public var SharedMedia_EmptyText: String { return self._s[4666]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[4667]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4668]! } + public var Message_PinnedGame: String { return self._s[4669]! } + public var KeyCommand_SearchInChat: String { return self._s[4670]! } + public var Appearance_ThemeCarouselNewNight: String { return self._s[4671]! } + public var ChatList_Search_FilterMedia: String { return self._s[4672]! } + public var Message_PinnedAudioMessage: String { return self._s[4673]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[4675]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4671]!, self._r[4671]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4676]!, self._r[4676]!, [_1, _2]) } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4672]! } - public var InviteLink_Create: String { return self._s[4673]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4677]! } + public var InviteLink_Create: String { return self._s[4678]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4674]!, self._r[4674]!, [_0]) + return formatWithArgumentRanges(self._s[4679]!, self._r[4679]!, [_0]) } public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4675]!, self._r[4675]!, [_0]) + return formatWithArgumentRanges(self._s[4680]!, self._r[4680]!, [_0]) } - public var Settings_AddAccount: String { return self._s[4676]! } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4677]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4678]! } - public var Channel_JoinChannel: String { return self._s[4679]! } - public var Watch_UserInfo_Unblock: String { return self._s[4680]! } - public var PhoneLabel_Title: String { return self._s[4681]! } - public var VoiceChat_EditPermissions: String { return self._s[4683]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[4684]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4685]! } + public var Settings_AddAccount: String { return self._s[4681]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4682]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4683]! } + public var Channel_JoinChannel: String { return self._s[4684]! } + public var Watch_UserInfo_Unblock: String { return self._s[4685]! } + public var PhoneLabel_Title: String { return self._s[4686]! } + public var VoiceChat_EditPermissions: String { return self._s[4688]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[4689]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4690]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4686]!, self._r[4686]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[4691]!, self._r[4691]!, [_1, _2, _3, _4, _5, _6]) } - public var Channel_AddBotErrorHaveRights: String { return self._s[4687]! } - public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4688]! } - public var DialogList_EncryptionProcessing: String { return self._s[4689]! } - public var ChatList_Search_FilterChats: String { return self._s[4690]! } - public var WatchRemote_NotificationText: String { return self._s[4691]! } - public var EditTheme_ChangeColors: String { return self._s[4692]! } - public var GroupRemoved_ViewUserInfo: String { return self._s[4693]! } - public var CallSettings_OnMobile: String { return self._s[4695]! } - public var Month_ShortFebruary: String { return self._s[4697]! } - public var VoiceOver_MessageContextReply: String { return self._s[4698]! } - public var AutoremoveSetup_TimerValueNever: String { return self._s[4699]! } - public var Group_Location_ChangeLocation: String { return self._s[4701]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[4692]! } + public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4693]! } + public var DialogList_EncryptionProcessing: String { return self._s[4694]! } + public var ChatList_Search_FilterChats: String { return self._s[4695]! } + public var WatchRemote_NotificationText: String { return self._s[4696]! } + public var EditTheme_ChangeColors: String { return self._s[4697]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[4698]! } + public var CallSettings_OnMobile: String { return self._s[4700]! } + public var Month_ShortFebruary: String { return self._s[4702]! } + public var VoiceOver_MessageContextReply: String { return self._s[4703]! } + public var AutoremoveSetup_TimerValueNever: String { return self._s[4704]! } + public var Group_Location_ChangeLocation: String { return self._s[4706]! } public func PUSH_VIDEO_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4702]!, self._r[4702]!, [_1]) + return formatWithArgumentRanges(self._s[4707]!, self._r[4707]!, [_1]) } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4703]! } - public var VoiceOver_Media_PlaybackStop: String { return self._s[4704]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4705]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4708]! } + public var VoiceOver_Media_PlaybackStop: String { return self._s[4709]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4710]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4707]!, self._r[4707]!, [_0]) + return formatWithArgumentRanges(self._s[4712]!, self._r[4712]!, [_0]) } - public var PhotoEditor_WarmthTool: String { return self._s[4708]! } - public var Login_InfoAvatarPhoto: String { return self._s[4709]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4710]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4711]! } - public var Map_PlacesInThisArea: String { return self._s[4712]! } - public var VoiceOver_Chat_ContactEmail: String { return self._s[4713]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[4714]! } + public var PhotoEditor_WarmthTool: String { return self._s[4713]! } + public var Login_InfoAvatarPhoto: String { return self._s[4714]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4715]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4716]! } + public var Map_PlacesInThisArea: String { return self._s[4717]! } + public var VoiceOver_Chat_ContactEmail: String { return self._s[4718]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[4719]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4715]!, self._r[4715]!, [_1]) + return formatWithArgumentRanges(self._s[4720]!, self._r[4720]!, [_1]) } - public var PeerInfo_ReportProfileVideo: String { return self._s[4716]! } - public var ShareMenu_Send: String { return self._s[4717]! } - public var Username_InvalidStartsWithNumber: String { return self._s[4718]! } + public var PeerInfo_ReportProfileVideo: String { return self._s[4721]! } + public var ShareMenu_Send: String { return self._s[4722]! } + public var Username_InvalidStartsWithNumber: String { return self._s[4723]! } public func Channel_AdminLog_StartedVoiceChat(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4719]!, self._r[4719]!, [_1]) + return formatWithArgumentRanges(self._s[4724]!, self._r[4724]!, [_1]) } - public var Appearance_AppIconClassicX: String { return self._s[4720]! } - public var Report_Report: String { return self._s[4721]! } + public var Appearance_AppIconClassicX: String { return self._s[4725]! } + public var Report_Report: String { return self._s[4726]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4722]!, self._r[4722]!, [_1]) + return formatWithArgumentRanges(self._s[4727]!, self._r[4727]!, [_1]) } - public var Conversation_StopPoll: String { return self._s[4723]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4725]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[4726]! } - public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4727]! } - public var Conversation_Timer_Title: String { return self._s[4728]! } - public var Common_Next: String { return self._s[4729]! } - public var Notification_Exceptions_NewException: String { return self._s[4730]! } + public var Conversation_StopPoll: String { return self._s[4728]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4730]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[4731]! } + public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4732]! } + public var Conversation_Timer_Title: String { return self._s[4733]! } + public var Common_Next: String { return self._s[4734]! } + public var Notification_Exceptions_NewException: String { return self._s[4735]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4731]!, self._r[4731]!, [_0]) + return formatWithArgumentRanges(self._s[4736]!, self._r[4736]!, [_0]) } - public var AccessDenied_CallMicrophone: String { return self._s[4732]! } - public var VoiceChat_UnmutePeer: String { return self._s[4733]! } - public var ChatImportActivity_Retry: String { return self._s[4734]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4735]! } - public var ChangePhoneNumberCode_Help: String { return self._s[4736]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4737]! } - public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4738]! } - public var BlockedUsers_LeavePrefix: String { return self._s[4739]! } + public var AccessDenied_CallMicrophone: String { return self._s[4737]! } + public var VoiceChat_UnmutePeer: String { return self._s[4738]! } + public var ChatImportActivity_Retry: String { return self._s[4739]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4740]! } + public var ChangePhoneNumberCode_Help: String { return self._s[4741]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4742]! } + public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4743]! } + public var BlockedUsers_LeavePrefix: String { return self._s[4744]! } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4740]!, self._r[4740]!, [_0]) + return formatWithArgumentRanges(self._s[4745]!, self._r[4745]!, [_0]) } - public var Group_About_Help: String { return self._s[4741]! } - public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4742]! } - public var Tour_Title3: String { return self._s[4743]! } - public var Watch_Conversation_Unblock: String { return self._s[4744]! } - public var Watch_UserInfo_Block: String { return self._s[4745]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[4746]! } - public var TwoFactorSetup_Hint_Action: String { return self._s[4747]! } - public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4748]! } - public var TextFormat_AddLinkTitle: String { return self._s[4749]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4750]! } - public var Notification_VoiceChatScheduled: String { return self._s[4751]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4752]! } - public var FastTwoStepSetup_PasswordSection: String { return self._s[4754]! } - public var Compose_ChannelMembers: String { return self._s[4755]! } - public var Conversation_ForwardTitle: String { return self._s[4756]! } - public var Conversation_PinnedPoll: String { return self._s[4759]! } + public var Group_About_Help: String { return self._s[4746]! } + public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4747]! } + public var Tour_Title3: String { return self._s[4748]! } + public var Watch_Conversation_Unblock: String { return self._s[4749]! } + public var Watch_UserInfo_Block: String { return self._s[4750]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[4751]! } + public var TwoFactorSetup_Hint_Action: String { return self._s[4752]! } + public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4753]! } + public var TextFormat_AddLinkTitle: String { return self._s[4754]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4755]! } + public func Notification_VoiceChatScheduled(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4756]!, self._r[4756]!, [_0]) + } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4757]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[4759]! } + public var Compose_ChannelMembers: String { return self._s[4760]! } + public var Conversation_ForwardTitle: String { return self._s[4761]! } + public var Conversation_PinnedPoll: String { return self._s[4764]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4760]!, self._r[4760]!, [_0]) + return formatWithArgumentRanges(self._s[4765]!, self._r[4765]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4761]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4762]! } - public var Stats_Overview: String { return self._s[4763]! } - public var Map_HomeAndWorkTitle: String { return self._s[4764]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4766]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4767]! } + public var Stats_Overview: String { return self._s[4768]! } + public var Map_HomeAndWorkTitle: String { return self._s[4769]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4765]!, self._r[4765]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4770]!, self._r[4770]!, [_1, _2, _3]) } - public var Passport_Address_CityPlaceholder: String { return self._s[4766]! } - public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4767]! } - public var Privacy_PhoneNumber: String { return self._s[4768]! } - public var ChatList_Search_FilterFiles: String { return self._s[4769]! } - public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4770]! } - public var ChannelIntro_CreateChannel: String { return self._s[4771]! } - public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4772]! } + public var Passport_Address_CityPlaceholder: String { return self._s[4771]! } + public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4772]! } + public var Privacy_PhoneNumber: String { return self._s[4773]! } + public var ChatList_Search_FilterFiles: String { return self._s[4774]! } + public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4775]! } + public var ChannelIntro_CreateChannel: String { return self._s[4776]! } + public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4777]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4773]!, self._r[4773]!, [_0]) + return formatWithArgumentRanges(self._s[4778]!, self._r[4778]!, [_0]) } - public var Weekday_ShortMonday: String { return self._s[4774]! } - public var Passport_Language_ar: String { return self._s[4776]! } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4777]! } - public var TwoFactorSetup_Done_Title: String { return self._s[4778]! } - public var Calls_RatingFeedback: String { return self._s[4779]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4780]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[4783]! } + public var Weekday_ShortMonday: String { return self._s[4779]! } + public var Passport_Language_ar: String { return self._s[4781]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4782]! } + public var TwoFactorSetup_Done_Title: String { return self._s[4783]! } + public var Calls_RatingFeedback: String { return self._s[4784]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4785]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[4788]! } public func VoiceOver_SelfDestructTimerOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4784]!, self._r[4784]!, [_0]) + return formatWithArgumentRanges(self._s[4789]!, self._r[4789]!, [_0]) } - public var Watch_Compose_Send: String { return self._s[4785]! } - public var PasscodeSettings_ChangePasscode: String { return self._s[4786]! } - public var WebSearch_RecentSectionClear: String { return self._s[4787]! } + public var Watch_Compose_Send: String { return self._s[4790]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[4791]! } + public var WebSearch_RecentSectionClear: String { return self._s[4792]! } public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4788]!, self._r[4788]!, [_0]) + return formatWithArgumentRanges(self._s[4793]!, self._r[4793]!, [_0]) } - public var WallpaperSearch_ColorTeal: String { return self._s[4789]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4790]! } - public var Permissions_ContactsTitle_v0: String { return self._s[4791]! } - public var Checkout_PasswordEntry_Pay: String { return self._s[4793]! } - public var Settings_SavedMessages: String { return self._s[4794]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4795]! } - public var Month_ShortMarch: String { return self._s[4796]! } - public var Message_Location: String { return self._s[4797]! } + public var WallpaperSearch_ColorTeal: String { return self._s[4794]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4795]! } + public var Permissions_ContactsTitle_v0: String { return self._s[4796]! } + public var Checkout_PasswordEntry_Pay: String { return self._s[4798]! } + public var Settings_SavedMessages: String { return self._s[4799]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4800]! } + public var Month_ShortMarch: String { return self._s[4801]! } + public var Message_Location: String { return self._s[4802]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4798]!, self._r[4798]!, [_1]) + return formatWithArgumentRanges(self._s[4803]!, self._r[4803]!, [_1]) } public func Channel_AdminLog_MessageRemovedAdminName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4799]!, self._r[4799]!, [_1]) + return formatWithArgumentRanges(self._s[4804]!, self._r[4804]!, [_1]) } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4800]!, self._r[4800]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4805]!, self._r[4805]!, [_1, _2]) } - public var VoiceOver_Chat_VoiceMessage: String { return self._s[4802]! } + public var VoiceOver_Chat_VoiceMessage: String { return self._s[4807]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4803]!, self._r[4803]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4808]!, self._r[4808]!, [_1, _2]) } - public var GroupPermission_NoSendMedia: String { return self._s[4804]! } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[4805]! } - public var SharedMedia_CategoryDocs: String { return self._s[4806]! } - public var Appearance_RemoveThemeConfirmation: String { return self._s[4807]! } - public var Paint_Framed: String { return self._s[4808]! } - public var Channel_Setup_LinkTypePublic: String { return self._s[4809]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4810]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[4811]! } + public var GroupPermission_NoSendMedia: String { return self._s[4809]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[4810]! } + public var SharedMedia_CategoryDocs: String { return self._s[4811]! } + public var Appearance_RemoveThemeConfirmation: String { return self._s[4812]! } + public var Paint_Framed: String { return self._s[4813]! } + public var Channel_Setup_LinkTypePublic: String { return self._s[4814]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4815]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[4816]! } public func ChatImport_SelectionConfirmationUserWithTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4812]!, self._r[4812]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4817]!, self._r[4817]!, [_1, _2]) } - public var Channel_SignMessages: String { return self._s[4813]! } - public var Contacts_AccessDeniedHelpON: String { return self._s[4814]! } - public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4815]! } + public var Channel_SignMessages: String { return self._s[4818]! } + public var Contacts_AccessDeniedHelpON: String { return self._s[4819]! } + public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4820]! } public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4816]!, self._r[4816]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4821]!, self._r[4821]!, [_1, _2]) } - public var InviteLink_Create_TimeLimitNoLimit: String { return self._s[4817]! } - public var GroupInfo_UpgradeButton: String { return self._s[4818]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4819]! } - public var AutoDownloadSettings_Files: String { return self._s[4820]! } + public var InviteLink_Create_TimeLimitNoLimit: String { return self._s[4822]! } + public var GroupInfo_UpgradeButton: String { return self._s[4823]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4824]! } + public var AutoDownloadSettings_Files: String { return self._s[4825]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4821]!, self._r[4821]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4826]!, self._r[4826]!, [_0, _1]) } - public var Login_SendCodeViaSms: String { return self._s[4823]! } - public var Update_UpdateApp: String { return self._s[4824]! } - public var Channel_Setup_TypePublic: String { return self._s[4825]! } - public var Watch_Compose_CreateMessage: String { return self._s[4826]! } + public var Login_SendCodeViaSms: String { return self._s[4828]! } + public var Update_UpdateApp: String { return self._s[4829]! } + public var Channel_Setup_TypePublic: String { return self._s[4830]! } + public var Watch_Compose_CreateMessage: String { return self._s[4831]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4827]!, self._r[4827]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4832]!, self._r[4832]!, [_1, _2, _3]) } - public var StickerPacksSettings_ManagingHelp: String { return self._s[4828]! } - public var VoiceOver_Chat_Video: String { return self._s[4829]! } - public var Forward_ChannelReadOnly: String { return self._s[4830]! } - public var StickerPack_HideStickers: String { return self._s[4831]! } - public var ChatListFolder_NameContacts: String { return self._s[4832]! } - public var Profile_BotInfo: String { return self._s[4833]! } - public var Document_TargetConfirmationFormat: String { return self._s[4834]! } - public var GroupInfo_InviteByLink: String { return self._s[4835]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4836]! } - public var Watch_Stickers_RecentPlaceholder: String { return self._s[4837]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[4838]! } - public var Passport_NotLoggedInMessage: String { return self._s[4839]! } - public var Conversation_StopQuizConfirmation: String { return self._s[4840]! } - public var Checkout_PaymentMethod: String { return self._s[4841]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[4845]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4846]! } - public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4847]! } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4848]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4849]! } - public var Conversation_GigagroupDescription: String { return self._s[4850]! } - public var Camera_Title: String { return self._s[4851]! } - public var Map_Directions: String { return self._s[4852]! } - public var Stats_MessagePublicForwardsTitle: String { return self._s[4854]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4855]! } - public var Profile_EncryptionKey: String { return self._s[4856]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[4833]! } + public var VoiceOver_Chat_Video: String { return self._s[4834]! } + public var Forward_ChannelReadOnly: String { return self._s[4835]! } + public var StickerPack_HideStickers: String { return self._s[4836]! } + public var ChatListFolder_NameContacts: String { return self._s[4837]! } + public var Profile_BotInfo: String { return self._s[4838]! } + public var Document_TargetConfirmationFormat: String { return self._s[4839]! } + public var GroupInfo_InviteByLink: String { return self._s[4840]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4841]! } + public var Watch_Stickers_RecentPlaceholder: String { return self._s[4842]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[4843]! } + public var Passport_NotLoggedInMessage: String { return self._s[4844]! } + public var Conversation_StopQuizConfirmation: String { return self._s[4845]! } + public var Checkout_PaymentMethod: String { return self._s[4846]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[4850]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4851]! } + public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4852]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4853]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4854]! } + public var Conversation_GigagroupDescription: String { return self._s[4855]! } + public var Camera_Title: String { return self._s[4856]! } + public var Map_Directions: String { return self._s[4857]! } + public var Stats_MessagePublicForwardsTitle: String { return self._s[4859]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4860]! } + public var Profile_EncryptionKey: String { return self._s[4861]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4857]!, self._r[4857]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4862]!, self._r[4862]!, [_1, "\(_2)"]) } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4858]!, self._r[4858]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4863]!, self._r[4863]!, [_0, _1]) } - public var Passport_Identity_TypePassport: String { return self._s[4859]! } - public var CreatePoll_QuizOptionsHeader: String { return self._s[4861]! } - public var Common_No: String { return self._s[4862]! } - public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4863]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4864]! } - public var Settings_AboutEmpty: String { return self._s[4865]! } - public var TwoStepAuth_FloodError: String { return self._s[4867]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4868]! } + public var Passport_Identity_TypePassport: String { return self._s[4864]! } + public var CreatePoll_QuizOptionsHeader: String { return self._s[4866]! } + public var Common_No: String { return self._s[4867]! } + public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4868]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4869]! } + public var Settings_AboutEmpty: String { return self._s[4870]! } + public var TwoStepAuth_FloodError: String { return self._s[4872]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4873]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4870]!, self._r[4870]!, [_1]) + return formatWithArgumentRanges(self._s[4875]!, self._r[4875]!, [_1]) } - public var Notification_Exceptions_MessagePreviewAlwaysOn: String { return self._s[4873]! } - public var Conversation_Edit: String { return self._s[4874]! } - public var CheckoutInfo_SaveInfo: String { return self._s[4876]! } - public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4877]! } - public var Call_CameraTooltip: String { return self._s[4879]! } - public var InstantPage_FeedbackButtonShort: String { return self._s[4880]! } - public var Contacts_InviteToTelegram: String { return self._s[4881]! } - public var Notifications_ResetAllNotifications: String { return self._s[4882]! } - public var Calls_NewCall: String { return self._s[4883]! } - public var VoiceOver_Chat_Music: String { return self._s[4886]! } - public var Channel_AdminLogFilter_EventsInviteLinks: String { return self._s[4887]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4888]! } - public var Channel_Edit_AboutItem: String { return self._s[4889]! } - public var Message_VideoExpired: String { return self._s[4890]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4891]! } + public var Notification_Exceptions_MessagePreviewAlwaysOn: String { return self._s[4878]! } + public var Conversation_Edit: String { return self._s[4879]! } + public var CheckoutInfo_SaveInfo: String { return self._s[4881]! } + public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4882]! } + public var Call_CameraTooltip: String { return self._s[4884]! } + public var InstantPage_FeedbackButtonShort: String { return self._s[4885]! } + public var Contacts_InviteToTelegram: String { return self._s[4886]! } + public var Notifications_ResetAllNotifications: String { return self._s[4887]! } + public var Calls_NewCall: String { return self._s[4888]! } + public var VoiceOver_Chat_Music: String { return self._s[4891]! } + public var Channel_AdminLogFilter_EventsInviteLinks: String { return self._s[4892]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4893]! } + public var Channel_Edit_AboutItem: String { return self._s[4894]! } + public var Message_VideoExpired: String { return self._s[4895]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4896]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4892]!, self._r[4892]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4897]!, self._r[4897]!, [_1, _2]) } - public var NotificationsSound_Input: String { return self._s[4894]! } - public var Notifications_ClassicTones: String { return self._s[4895]! } - public var Conversation_StatusTyping: String { return self._s[4896]! } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4897]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4898]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4899]! } - public var Conversation_MessageLeaveComment: String { return self._s[4900]! } - public var UserInfo_TapToCall: String { return self._s[4901]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4902]! } + public var NotificationsSound_Input: String { return self._s[4899]! } + public var Notifications_ClassicTones: String { return self._s[4900]! } + public var Conversation_StatusTyping: String { return self._s[4901]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4902]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4903]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4904]! } + public var Conversation_MessageLeaveComment: String { return self._s[4905]! } + public var UserInfo_TapToCall: String { return self._s[4906]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4907]! } public func ScheduleVoiceChat_ScheduleOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4903]!, self._r[4903]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4908]!, self._r[4908]!, [_0, _1]) } - public var Conversation_ClearAll: String { return self._s[4905]! } - public var UserInfo_NotificationsDefault: String { return self._s[4906]! } - public var Location_ProximityGroupTip: String { return self._s[4907]! } - public var Map_ChooseAPlace: String { return self._s[4908]! } - public var GroupInfo_AddParticipantTitle: String { return self._s[4910]! } - public var ChatList_PeerTypeNonContact: String { return self._s[4911]! } - public var Conversation_SlideToCancel: String { return self._s[4912]! } - public var Month_ShortJuly: String { return self._s[4913]! } - public var SocksProxySetup_ProxyType: String { return self._s[4914]! } + public var Conversation_ClearAll: String { return self._s[4910]! } + public var UserInfo_NotificationsDefault: String { return self._s[4911]! } + public var Location_ProximityGroupTip: String { return self._s[4912]! } + public var Map_ChooseAPlace: String { return self._s[4913]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[4915]! } + public var ChatList_PeerTypeNonContact: String { return self._s[4916]! } + public var Conversation_SlideToCancel: String { return self._s[4917]! } + public var Month_ShortJuly: String { return self._s[4918]! } + public var SocksProxySetup_ProxyType: String { return self._s[4919]! } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4915]!, self._r[4915]!, [_0]) + return formatWithArgumentRanges(self._s[4920]!, self._r[4920]!, [_0]) } - public var StickerPacks_ActionArchive: String { return self._s[4916]! } - public var ChatList_EditFolders: String { return self._s[4917]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[4918]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[4920]! } + public var StickerPacks_ActionArchive: String { return self._s[4921]! } + public var ChatList_EditFolders: String { return self._s[4922]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[4923]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[4925]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4921]!, self._r[4921]!, [_0]) + return formatWithArgumentRanges(self._s[4926]!, self._r[4926]!, [_0]) } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4922]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[4923]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[4925]! } - public var Passport_DeleteAddress: String { return self._s[4927]! } - public var Passport_DeletePassportConfirmation: String { return self._s[4928]! } - public var Passport_Identity_ReverseSide: String { return self._s[4929]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4930]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[4931]! } - public var InviteLink_CreatedBy: String { return self._s[4932]! } - public var Passport_FieldAddress: String { return self._s[4933]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4934]! } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4937]! } - public var VoiceChat_Panel_TapToJoin: String { return self._s[4938]! } - public var Map_Home: String { return self._s[4939]! } - public var PollResults_Title: String { return self._s[4942]! } + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4927]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[4928]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[4930]! } + public func Conversation_ScheduledVoiceChatStartsOnShort(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4932]!, self._r[4932]!, [_0]) + } + public var Passport_DeleteAddress: String { return self._s[4933]! } + public var Passport_DeletePassportConfirmation: String { return self._s[4934]! } + public var Passport_Identity_ReverseSide: String { return self._s[4935]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4936]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[4937]! } + public var InviteLink_CreatedBy: String { return self._s[4938]! } + public var Passport_FieldAddress: String { return self._s[4939]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4940]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4943]! } + public var VoiceChat_Panel_TapToJoin: String { return self._s[4944]! } + public var Map_Home: String { return self._s[4945]! } + public var PollResults_Title: String { return self._s[4948]! } public func InviteLink_OtherPermanentLinkInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4943]!, self._r[4943]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4949]!, self._r[4949]!, [_1, _2]) } - public var ArchivedChats_IntroText2: String { return self._s[4945]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4946]! } - public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4947]! } - public var VoiceChat_Muted: String { return self._s[4949]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[4950]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[4951]! } - public var Conversation_AutoremoveActionEnable: String { return self._s[4953]! } - public var Group_Info_AdminLog: String { return self._s[4954]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[4955]! } - public var Appearance_Animations: String { return self._s[4956]! } - public var Appearance_TextSizeSetting: String { return self._s[4957]! } - public func SharedMedia_Link(_ value: Int32) -> String { + public var ArchivedChats_IntroText2: String { return self._s[4951]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4952]! } + public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4953]! } + public var VoiceChat_Muted: String { return self._s[4955]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[4956]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[4957]! } + public var Conversation_AutoremoveActionEnable: String { return self._s[4959]! } + public var Group_Info_AdminLog: String { return self._s[4960]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[4961]! } + public var Appearance_Animations: String { return self._s[4962]! } + public var Appearance_TextSizeSetting: String { return self._s[4963]! } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortHours(_ value: Int32) -> String { + public func OldChannels_Leave(_ 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 PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Conversation_ContextViewReplies(_ 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 ChatList_DeletedChats(_ 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 MessageTimer_Seconds(_ 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 Stats_GroupTopPosterChars(_ 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 Contacts_InviteContacts(_ 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 Notifications_ExceptionMuteExpires_Minutes(_ 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 MuteExpires_Days(_ 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 MessageTimer_Minutes(_ 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 GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 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[12 * 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[13 * 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[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ 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 Call_ShortSeconds(_ 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 MuteFor_Days(_ 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 ServiceMessage_GameScoreSimple(_ 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 InviteText_ContactsCountText(_ 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 AttachmentMenu_SendGif(_ 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_CHANNEL_MESSAGES(_ 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 MuteFor_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[22 * 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[23 * 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[24 * 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[25 * 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[26 * 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[27 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func VoiceChat_InviteLink_InviteSpeakers(_ 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 ChatList_MessageMusic(_ 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 PUSH_CHAT_MESSAGE_DOCS_FIX1(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Stats_GroupShowMoreTopPosters(_ 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 MessageTimer_Days(_ 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 Call_Hours(_ 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 VoiceOver_Chat_UnreadMessages(_ 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 ChatList_MessageFiles(_ 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 Conversation_MessageViewComments(_ 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 Theme_UsersCount(_ 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 MessageTimer_ShortWeeks(_ 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 SharedMedia_DeleteItemsConfirmation(_ 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 Conversation_AutoremoveRemainingDays(_ 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 ForwardedFiles(_ 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 SharedMedia_Video(_ 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 LiveLocation_MenuChatsCount(_ 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 PUSH_CHANNEL_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func VoiceChat_Panel_Members(_ 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 Conversation_ContextMenuSelectAll(_ 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 ForwardedVideoMessages(_ 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 Map_ETAHours(_ 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 Media_SharePhoto(_ 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 Stats_MessageForwards(_ 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 ForwardedAudios(_ 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) + return String(format: self._ps[2 * 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[53 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSelfSimple(_ 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[54 * 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[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessagePhotos(_ 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 ForwardedLocations(_ 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 Notifications_Exceptions(_ 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 SharedMedia_Generic(_ 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 Conversation_StatusSubscribers(_ 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 ForwardedPhotos(_ 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 PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Forward_ConfirmMultipleFiles(_ 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 Stats_MessageViews(_ 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 VoiceChat_Status_Members(_ 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 GroupInfo_ShowMoreMembers(_ 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 Conversation_StatusMembers(_ 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 InviteLink_InviteLinks(_ 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 VoiceChat_InviteLink_InviteListeners(_ 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 Stats_GroupShowMoreTopAdmins(_ 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 Chat_DeleteMessagesConfirmation(_ 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 Stats_GroupTopAdminBans(_ 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 Conversation_LiveLocationMembersCount(_ 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 QuickSend_Photos(_ 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 Stats_GroupTopInviterInvites(_ 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 Contacts_ImportersCount(_ 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 StickerPacks_ArchiveStickerPacksConfirmation(_ 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 ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func ServiceMessage_GameScoreExtended(_ 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 StickerPack_StickerCount(_ 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 ForwardedContacts(_ 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 VoiceOver_Chat_ContactPhoneNumberCount(_ 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 StickerPack_AddStickerCount(_ 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 MuteExpires_Minutes(_ 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 Notification_GameScoreSelfExtended(_ 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 PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func AttachmentMenu_SendVideo(_ 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 OldChannels_GroupFormat(_ 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 ServiceMessage_GameScoreSelfExtended(_ 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 MessageTimer_ShortDays(_ 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 AttachmentMenu_SendItem(_ 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) - } - public func Chat_MessagesUnpinned(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ 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 PollResults_ShowMore(_ 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 VoiceOver_Chat_PollVotes(_ 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 Chat_TitlePinnedMessages(_ 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_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func OldChannels_InactiveMonth(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 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[99 * 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[100 * 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[101 * 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[102 * 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[103 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopInviters(_ 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 Conversation_TitleReplies(_ 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 PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func AttachmentMenu_SendPhoto(_ 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 Watch_LastSeen_MinutesAgo(_ 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 UserCount(_ 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 Call_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[110 * 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[111 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notification_GameScoreSimple(_ 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 InviteLink_PeopleJoined(_ 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 InviteLink_PeopleJoinedShort(_ 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 Stats_GroupTopPosterMessages(_ 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 MessagePoll_QuizCount(_ 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 InviteLink_PeopleCanJoin(_ 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 PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func OldChannels_Leave(_ 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) - } - public func MessageTimer_Hours(_ 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) - } - public func SharedMedia_File(_ 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 Conversation_StatusOnline(_ 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) - } - public func MessageTimer_ShortMinutes(_ 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 ForwardedGifs(_ 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 MessageTimer_Months(_ 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 Notifications_ExceptionMuteExpires_Hours(_ 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 Stats_GroupTopAdminDeletions(_ 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 PrivacyLastSeenSettings_AddUsers(_ 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 PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func SharedMedia_Photo(_ 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) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[131 * 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[132 * 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[133 * 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[134 * 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[135 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[136 * 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[137 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_Search_Messages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[138 * 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[139 * 6 + Int(form.rawValue)]!, stringValue) - } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteLink_PeopleRemaining(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[141 * 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[142 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[143 * 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[144 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[145 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[146 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[147 * 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[148 * 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[149 * 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[150 * 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[151 * 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[152 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[153 * 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[154 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[155 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[4 * 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[156 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[157 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[158 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { + public func ChatList_SelectedChats(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[159 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } - public func Invitation_Members(_ value: Int32) -> String { + 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[9 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func OldChannels_InactiveWeek(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[160 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_MessagesSelected(_ value: Int32) -> String { + public func Call_ShortMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[161 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPacks_DeleteStickerPacksConfirmation(_ value: Int32) -> String { + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[162 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedStickers(_ value: Int32) -> String { + 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[163 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[13 * 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[14 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Forward_ConfirmMultipleFiles(_ 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_Minutes(_ 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 VoiceOver_Chat_PollVotes(_ 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 PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func OldChannels_InactiveMonth(_ 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 Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminBans(_ 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 MessageTimer_Hours(_ 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_SendPhoto(_ 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 PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Contacts_InviteContacts(_ 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 PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func LastSeen_HoursAgo(_ 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 PollResults_ShowMore(_ 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 PrivacyLastSeenSettings_AddUsers(_ 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 ServiceMessage_GameScoreExtended(_ 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 MessageTimer_Years(_ 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 ChatList_MessageVideos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[164 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteLink_InviteLinks(_ 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 PUSH_CHANNEL_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_ShortSeconds(_ 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 ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func ForwardedVideoMessages(_ 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 PasscodeSettings_FailedAttempts(_ 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_Days(_ 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 Theme_UsersCount(_ 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 VoiceChat_Panel_Members(_ 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 Watch_LastSeen_HoursAgo(_ 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 ForwardedAudios(_ 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 VoiceOver_Chat_ContactEmailCount(_ 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 Notification_GameScoreExtended(_ 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 MessageTimer_Seconds(_ 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 PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Map_ETAHours(_ 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 Watch_LastSeen_MinutesAgo(_ 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 ForwardedPolls(_ 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 Media_ShareVideo(_ 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 Media_SharePhoto(_ 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 PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedVideos(_ 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 Notification_GameScoreSimple(_ 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 AttachmentMenu_SendGif(_ 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 Stats_GroupTopInviterInvites(_ 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 AttachmentMenu_SendItem(_ 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 MuteExpires_Hours(_ 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 LiveLocationUpdated_MinutesAgo(_ 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 StickerPacks_ArchiveStickerPacksConfirmation(_ 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 Call_ShortSeconds(_ 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 Stats_GroupTopAdminDeletions(_ 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 Call_Minutes(_ 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 PeopleNearby_ShowMorePeople(_ 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_CHANNEL_MESSAGES(_ 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 PUSH_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Chat_TitlePinnedMessages(_ 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 ForwardedGifs(_ 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 ForwardedFiles(_ 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 Conversation_StatusMembers(_ 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 InviteLink_PeopleJoined(_ 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 ChatList_DeletedChats(_ 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 CreatePoll_AddMoreOptions(_ 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 UserCount(_ 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 Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 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[79 * 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[165 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + 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[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Days(_ 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 Stats_GroupShowMoreTopAdmins(_ 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 VoiceOver_Chat_MessagesSelected(_ 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 Stats_MessageViews(_ 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 SharedMedia_File(_ 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 MessagePoll_VotedCount(_ 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 MuteExpires_Days(_ 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 Stats_GroupShowMoreTopPosters(_ 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 Chat_DeleteMessagesConfirmation(_ 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 MessageTimer_ShortMinutes(_ 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) + } + public func MessagePoll_QuizCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopPosterMessages(_ 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 InviteLink_PeopleRemaining(_ 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 Media_ShareItem(_ 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 ServiceMessage_GameScoreSelfExtended(_ 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 ChatList_MessageMusic(_ 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 Conversation_TitleComments(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[166 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_ContextViewReplies(_ 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 MessageTimer_ShortWeeks(_ 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 InviteLink_PeopleJoinedShort(_ 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 ForwardedMessages(_ 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 MuteExpires_Minutes(_ 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) + } + 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[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ 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 Call_Seconds(_ 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 ChatList_MessageFiles(_ 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 Watch_UserInfo_Mute(_ 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 MessageTimer_ShortDays(_ 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 ChatList_Search_Messages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[110 * 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[111 * 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[112 * 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[113 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Hours(_ 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 Conversation_ContextMenuSelectAll(_ 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 StickerPacks_DeleteStickerPacksConfirmation(_ 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 PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func InviteLink_PeopleCanJoin(_ 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 ChatListFilter_ShowMoreChats(_ 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) + } + public func VoiceOver_Chat_UnreadMessages(_ 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) + } + public func StickerPack_RemoveStickerCount(_ 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_CHANNEL_MESSAGE_PHOTOS(_ 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 Conversation_StatusOnline(_ 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 Map_ETAMinutes(_ 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 LastSeen_MinutesAgo(_ 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 Conversation_AutoremoveRemainingDays(_ 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 ForwardedStickers(_ 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 Chat_MessagesUnpinned(_ 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 SharedMedia_Generic(_ 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 Passport_Scans(_ 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) + } + public func VoiceChat_InviteLink_InviteListeners(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[131 * 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[132 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_DOCS_FIX1(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[134 * 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[135 * 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[136 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPhotos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[137 * 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[138 * 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[139 * 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[140 * 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[141 * 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[142 * 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[143 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_TitleReplies(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[145 * 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[167 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[146 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { + public func QuickSend_Photos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[147 * 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[148 * 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[149 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceChat_Status_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[150 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[151 * 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[152 * 6 + Int(form.rawValue)]!, stringValue) + } + 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[153 * 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[154 * 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[155 * 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[156 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceChat_InviteLink_InviteSpeakers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[157 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopPosterChars(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[158 * 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[159 * 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[160 * 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[161 * 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[162 * 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[163 * 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[164 * 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[165 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[166 * 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[167 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessagePhotos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[168 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramStringFormatting/Sources/MessageContentKind.swift b/submodules/TelegramStringFormatting/Sources/MessageContentKind.swift index 6b0549106e..204d2c64cf 100644 --- a/submodules/TelegramStringFormatting/Sources/MessageContentKind.swift +++ b/submodules/TelegramStringFormatting/Sources/MessageContentKind.swift @@ -85,7 +85,7 @@ public enum MessageContentKind: Equatable { } } -public func messageContentKind(contentSettings: ContentSettings, message: Message, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, accountPeerId: PeerId) -> MessageContentKind { +public func messageContentKind(contentSettings: ContentSettings, message: Message, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, dateTimeFormat: PresentationDateTimeFormat, accountPeerId: PeerId) -> MessageContentKind { for attribute in message.attributes { if let attribute = attribute as? RestrictedContentMessageAttribute { if let text = attribute.platformText(platform: "ios", contentSettings: contentSettings) { @@ -95,14 +95,14 @@ public func messageContentKind(contentSettings: ContentSettings, message: Messag } } for media in message.media { - if let kind = mediaContentKind(media, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, accountPeerId: accountPeerId) { + if let kind = mediaContentKind(media, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat, accountPeerId: accountPeerId) { return kind } } return .text(message.text) } -public func mediaContentKind(_ media: Media, message: Message? = nil, strings: PresentationStrings? = nil, nameDisplayOrder: PresentationPersonNameOrder? = nil, accountPeerId: PeerId? = nil) -> MessageContentKind? { +public func mediaContentKind(_ media: Media, message: Message? = nil, strings: PresentationStrings? = nil, nameDisplayOrder: PresentationPersonNameOrder? = nil, dateTimeFormat: PresentationDateTimeFormat? = nil, accountPeerId: PeerId? = nil) -> MessageContentKind? { switch media { case let expiredMedia as TelegramMediaExpiredContent: switch expiredMedia.data { @@ -163,7 +163,7 @@ public func mediaContentKind(_ media: Media, message: Message? = nil, strings: P } case _ as TelegramMediaAction: if let message = message, let strings = strings, let nameDisplayOrder = nameDisplayOrder, let accountPeerId = accountPeerId { - return .text(plainServiceMessageString(strings: strings, nameDisplayOrder: nameDisplayOrder, message: message, accountPeerId: accountPeerId, forChatList: false) ?? "") + return .text(plainServiceMessageString(strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat ?? PresentationDateTimeFormat(timeFormat: .military, dateFormat: .dayFirst, dateSeparator: ".", dateSuffix: "", requiresFullYear: false, decimalSeparator: ".", groupingSeparator: ""), message: message, accountPeerId: accountPeerId, forChatList: false) ?? "") } else { return nil } @@ -223,8 +223,8 @@ public func stringForMediaKind(_ kind: MessageContentKind, strings: Presentation } } -public func descriptionStringForMessage(contentSettings: ContentSettings, message: Message, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, accountPeerId: PeerId) -> (String, Bool) { - let contentKind = messageContentKind(contentSettings: contentSettings, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, accountPeerId: accountPeerId) +public func descriptionStringForMessage(contentSettings: ContentSettings, message: Message, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, dateTimeFormat: PresentationDateTimeFormat, accountPeerId: PeerId) -> (String, Bool) { + let contentKind = messageContentKind(contentSettings: contentSettings, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat, accountPeerId: accountPeerId) if !message.text.isEmpty && ![.expiredImage, .expiredVideo].contains(contentKind.key) { return (foldLineBreaks(message.text), false) } diff --git a/submodules/TelegramStringFormatting/Sources/ServiceMessageStrings.swift b/submodules/TelegramStringFormatting/Sources/ServiceMessageStrings.swift index 149d269a65..9ddceb5bb4 100644 --- a/submodules/TelegramStringFormatting/Sources/ServiceMessageStrings.swift +++ b/submodules/TelegramStringFormatting/Sources/ServiceMessageStrings.swift @@ -27,11 +27,11 @@ private func peerMentionsAttributes(primaryTextColor: UIColor, peerIds: [(Int, P return result } -public func plainServiceMessageString(strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, message: Message, accountPeerId: PeerId, forChatList: Bool) -> String? { - return universalServiceMessageString(presentationData: nil, strings: strings, nameDisplayOrder: nameDisplayOrder, message: message, accountPeerId: accountPeerId, forChatList: forChatList)?.string +public func plainServiceMessageString(strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, dateTimeFormat: PresentationDateTimeFormat, message: Message, accountPeerId: PeerId, forChatList: Bool) -> String? { + return universalServiceMessageString(presentationData: nil, strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat, message: message, accountPeerId: accountPeerId, forChatList: forChatList)?.string } -public func universalServiceMessageString(presentationData: (PresentationTheme, TelegramWallpaper)?, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, message: Message, accountPeerId: PeerId, forChatList: Bool) -> NSAttributedString? { +public func universalServiceMessageString(presentationData: (PresentationTheme, TelegramWallpaper)?, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, dateTimeFormat: PresentationDateTimeFormat, message: Message, accountPeerId: PeerId, forChatList: Bool) -> NSAttributedString? { var attributedString: NSAttributedString? let primaryTextColor: UIColor @@ -448,7 +448,8 @@ public func universalServiceMessageString(presentationData: (PresentationTheme, attributedString = NSAttributedString(string: titleString, font: titleFont, textColor: primaryTextColor) case let .groupPhoneCall(_, _, scheduleDate, duration): if let scheduleDate = scheduleDate { - let titleString = strings.Notification_VoiceChatScheduled + let timeString = humanReadableStringForTimestamp(strings: strings, dateTimeFormat: dateTimeFormat, timestamp: scheduleDate) + let titleString = strings.Notification_VoiceChatScheduled(timeString).0 attributedString = NSAttributedString(string: titleString, font: titleFont, textColor: primaryTextColor) } else if let duration = duration { let titleString = strings.Notification_VoiceChatEnded(callDurationString(strings: strings, value: duration)).0 diff --git a/submodules/TelegramUI/Images.xcassets/Call/CallShareButton.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Call/CallShareButton.imageset/Contents.json new file mode 100644 index 0000000000..7a8982f200 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Call/CallShareButton.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "callshare (1).pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/submodules/TelegramUI/Images.xcassets/Call/CallShareButton.imageset/callshare (1).pdf b/submodules/TelegramUI/Images.xcassets/Call/CallShareButton.imageset/callshare (1).pdf new file mode 100644 index 0000000000000000000000000000000000000000..03f94787bb429fab9d0da52204e3358966a196ec GIT binary patch literal 4013 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 literal 0 HcmV?d00001 diff --git a/submodules/TelegramUI/Resources/Animations/anim_profilemute.json b/submodules/TelegramUI/Resources/Animations/anim_profilemute.json index d5af447715..dd68bee0b7 100644 --- a/submodules/TelegramUI/Resources/Animations/anim_profilemute.json +++ b/submodules/TelegramUI/Resources/Animations/anim_profilemute.json @@ -1 +1 @@ -{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":37,"w":512,"h":512,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Line","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":3,"s":[-14.236,-12.181,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":17,"s":[18.2,19.9,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25,"s":[6.2,8.4,0]}],"ix":2},"a":{"a":0,"k":[6.2,8.4,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-102.6,-100.5],[115,117.3]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":3,"s":[0]},{"t":17,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":18,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Middle","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-34.15,23.2,0],"ix":2},"a":{"a":0,"k":[-34.15,23.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-78.2,-54.55],[50.226,64.601],[52.497,66.708],[74.8,87.4],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[0,0],[-3.653,-3.294],[-5.525,13.962],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[3.653,3.294],[4.195,2.447],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.034,-46.903],[-53.116,-21.384],[-29.754,-30.355],[79.924,87.426],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[-0.456,-0.411],[-8.27,20.578],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0.456,0.411],[7.125,4.156],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.617,-41.562],[-16.001,19.968],[12.155,10.038],[81.126,87.722],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[0,0],[0,0],[-11.064,22.792],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[7.543,4.4],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[13.701,50.721],[44.112,42.695],[81.297,87.764],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[0,0],[-2.767,-2.505],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[6.956,6.247],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[27.323,65.744],[35.335,71.99],[53.148,87.283],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[27.741,66.641],[29.641,68.541],[48.3,87.2],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Top","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":2,"s":[0]},{"i":{"x":[0.302],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":8,"s":[-3]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":19,"s":[5]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":28,"s":[-3]},{"t":36,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[255.082,261,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":6,"s":[255.082,241,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":17,"s":[255.082,281,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":26,"s":[255.082,247,0],"to":[0,0,0],"ti":[0,0,0]},{"t":34,"s":[255.082,261,0]}],"ix":2},"a":{"a":0,"k":[-0.918,5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[0,0],[0,0],[0,0],[-8.591,5.791],[-2.025,0.763],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[0,0],[0,0],[2.614,-16.107],[3.57,-2.406],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[74.05,87.3],[58.993,73.332],[56.28,70.816],[-77.95,-53.7],[-55.871,-86.266],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[2.996,5.408],[2.697,3.901],[0,0],[1.169,3.154],[-2.365,0.891],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[9.243,-9.472],[-1.489,-2.155],[0,0],[2.903,-1.871],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[77.248,87.333],[-26.556,-26.717],[-20.783,-50.138],[-48.601,-78.89],[-55.265,-86.894],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[5.088,9.185],[0,0],[0,0],[0.495,1.383],[-2.025,0.763],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[13.299,-14.381],[0,0],[0,0],[2.415,-1.46],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[79.481,87.357],[13.203,11.744],[15.1,-16.693],[-50.846,-83.329],[-53.923,-87.557],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[5.386,9.724],[0,0],[0,0],[1.412,2.634],[-2.025,0.763],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[18.116,-11.123],[0,0],[0,0],[2.406,-1.458],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[79.8,87.36],[42.716,46.351],[50.914,18.408],[-48.925,-81.098],[-53.91,-87.541],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.33,-4.16],[0,0],[0,0],[0,0],[0,0],[0,0],[1.412,2.634],[-2.025,0.763],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-1.6,-0.785],[0,0],[0,0],[0,0],[0,0],[0,0],[2.406,-1.458],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113.604,82.187],[108.027,77.93],[99.8,69.311],[66.73,34.844],[50.914,18.408],[-48.925,-81.098],[-53.91,-87.541],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"t":13,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.33,-4.16],[0,0],[0,0],[0,0],[0,0],[0,0],[1.412,2.634],[-2.025,0.763],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-1.6,-0.785],[0,0],[0,0],[0,0],[0,0],[0,0],[2.406,-1.458],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113.952,81.547],[108.63,77.404],[100.024,68.676],[66.73,34.844],[50.914,18.408],[-48.925,-81.098],[-53.91,-87.541],[-47.1,-91],[-34.2,-96.2]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Bottom","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-0.2,117.55,0],"ix":2},"a":{"a":0,"k":[-0.2,117.55,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[17.8,0],[6.4,15.6]],"o":[[-6.4,15.5],[-17.8,0],[0,0]],"v":[[39.3,104.3],[-0.2,130.8],[-39.7,104.3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0}],"markers":[]} \ No newline at end of file +{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":37,"w":512,"h":512,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Line","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":3,"s":[-14.236,-12.181,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":17,"s":[18.2,19.9,0],"to":[0,0,0],"ti":[0,0,0]},{"t":25,"s":[6.2,8.4,0]}],"ix":2},"a":{"a":0,"k":[6.2,8.4,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-102.6,-100.5],[115,117.3]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":3,"s":[0]},{"t":17,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":18,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Middle","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-34.15,23.2,0],"ix":2},"a":{"a":0,"k":[-34.15,23.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-78.2,-54.55],[50.226,64.601],[52.497,66.708],[74.8,87.4],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[0,0],[-3.653,-3.294],[-5.525,13.962],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[3.653,3.294],[4.195,2.447],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.034,-46.903],[-53.116,-21.384],[-29.754,-30.355],[79.924,87.426],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[-0.456,-0.411],[-8.27,20.578],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0.456,0.411],[7.125,4.156],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.617,-41.562],[-16.001,19.968],[12.155,10.038],[81.126,87.722],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[0,0],[0,0],[-11.064,22.792],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[7.543,4.4],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[13.701,50.721],[44.112,42.695],[81.297,87.764],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[0,0],[-2.767,-2.505],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[6.956,6.247],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[27.323,65.744],[35.335,71.99],[53.148,87.283],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[27.741,66.641],[29.641,68.541],[48.3,87.2],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":180,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Top","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":2,"s":[0]},{"i":{"x":[0.302],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":8,"s":[-3]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":19,"s":[5]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":28,"s":[-3]},{"t":36,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[255.082,261,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":6,"s":[255.082,241,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":17,"s":[255.082,281,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":26,"s":[255.082,247,0],"to":[0,0,0],"ti":[0,0,0]},{"t":34,"s":[255.082,261,0]}],"ix":2},"a":{"a":0,"k":[-0.918,5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[0,0],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[0,0],[0,0],[3.7,-22.8],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[71.672,87.301],[50.558,76.645],[47.845,74.129],[-77.95,-53.7],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[2.996,5.407],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[-3.828,-2.942],[0,0],[2.866,-12.122],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[77.248,87.333],[-20.395,-19.416],[-32.09,-33.406],[-68.304,-69.815],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[5.088,9.185],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[1.015,-4.019],[0,0],[2.283,-4.664],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[79.481,87.357],[13.203,11.744],[6.417,-2.958],[-67.338,-75.841],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[5.386,9.724],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[4.232,-6.783],[0,0],[2.2,-3.6],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[79.8,87.36],[42.716,46.351],[40.339,31.849],[-67.2,-76.7],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[0,0],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[0,0],[0,0],[2.2,-3.6],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[93.023,87.394],[76.068,68.529],[72.041,63.833],[-67.2,-76.7],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"t":13,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[0,0],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[0,0],[0,0],[2.2,-3.6],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[95.3,87.4],[79.202,71.144],[76.303,68.216],[-67.2,-76.7],[-47.1,-91],[-34.2,-96.2]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":180,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Bottom","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-0.2,117.55,0],"ix":2},"a":{"a":0,"k":[-0.2,117.55,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[17.8,0],[6.4,15.6]],"o":[[-6.4,15.5],[-17.8,0],[0,0]],"v":[[39.3,104.3],[-0.2,130.8],[-39.7,104.3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"EXAMPLE","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.232,0.2,0],"ix":2},"a":{"a":0,"k":[0.232,0.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-18.9,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3],[0,0],[-18.3,7.3],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0],[1.4,-19.6],[0,0],[-0.1,-19]],"v":[[0.2,-130.4],[34.3,-98.4],[34.4,-96.2],[47.3,-91],[79.4,-47.1],[83.8,15],[104.4,57.6],[112.6,65.1],[113.4,83.2],[104,87.4],[-103.5,87.4],[-116.3,74.6],[-112.1,65.2],[-103.9,57.7],[-83.3,15.1],[-78.9,-47],[-46.8,-90.9],[-33.9,-96.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":7,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/submodules/TelegramUI/Resources/Animations/anim_profileunmute.json b/submodules/TelegramUI/Resources/Animations/anim_profileunmute.json index 2e2197da17..ebfea4f952 100644 --- a/submodules/TelegramUI/Resources/Animations/anim_profileunmute.json +++ b/submodules/TelegramUI/Resources/Animations/anim_profileunmute.json @@ -1 +1 @@ -{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":37,"w":512,"h":512,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Line","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":1,"s":[6.2,8.4,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.3,"y":0},"t":7,"s":[17.813,19.808,0],"to":[0,0,0],"ti":[0,0,0]},{"t":18,"s":[-8.985,-6.628,0]}],"ix":2},"a":{"a":0,"k":[6.2,8.4,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-102.6,-100.5],[115,117.3]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":7,"s":[100]},{"t":18,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":18,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":136,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Middle","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-34.15,23.2,0],"ix":2},"a":{"a":0,"k":[-34.15,23.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[27.741,66.641],[29.641,68.541],[48.3,87.2],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[0,0],[-11.064,22.792],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[7.543,4.4],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[13.701,50.721],[44.112,42.695],[81.297,87.764],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[0,0],[-0.456,-0.411],[-7.14,22.508],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0.456,0.411],[7.125,4.156],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.617,-41.562],[-36.617,-1.022],[-8.461,-10.952],[81.126,87.722],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[-0.304,-0.274],[-3.842,19.542],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0.304,0.274],[4.75,2.771],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.145,-45.891],[-67.552,-34.675],[-46.665,-45.462],[79.017,87.614],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-78.2,-54.55],[50.226,64.601],[52.497,66.708],[74.8,87.4],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Top","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":1,"s":[0]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":7,"s":[3]},{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":20,"s":[-5]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":29,"s":[3]},{"t":36,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[255.082,261,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.3,"y":0},"t":5,"s":[255.082,281,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":18,"s":[255.082,237,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":27,"s":[255.082,283,0],"to":[0,0,0],"ti":[0,0,0]},{"t":34,"s":[255.082,261,0]}],"ix":2},"a":{"a":0,"k":[-0.918,5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.33,-4.16],[0,0],[0,0],[0,0],[0,0],[0,0],[1.412,2.634],[-2.025,0.763],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-1.6,-0.785],[0,0],[0,0],[0,0],[0,0],[0,0],[2.406,-1.458],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113.952,81.547],[108.63,77.404],[100.024,68.676],[66.73,34.844],[50.914,18.408],[-48.925,-81.098],[-53.91,-87.541],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[5.386,9.724],[0,0],[0,0],[1.412,2.634],[-2.025,0.763],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[18.116,-11.123],[0,0],[0,0],[2.406,-1.458],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[79.8,87.36],[42.716,46.351],[50.914,18.408],[-48.925,-81.098],[-53.91,-87.541],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[5.088,9.185],[0,0],[0,0],[0.495,1.383],[-2.025,0.763],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[13.299,-14.381],[0,0],[0,0],[2.415,-1.46],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[79.481,87.357],[-3.46,-5.093],[-1.563,-33.53],[-50.846,-83.329],[-53.923,-87.557],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[2.996,5.408],[2.697,3.901],[0,0],[1.169,3.154],[-2.365,0.891],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[9.243,-9.472],[-1.489,-2.155],[0,0],[2.903,-1.871],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[77.248,87.333],[-41.459,-39.87],[-34.93,-63.521],[-48.601,-78.89],[-55.265,-86.894],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"t":13,"s":[{"i":[[-18.8,0],[-6.125,-5.762],[-0.55,-8.95],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[0,0],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[9.05,0],[6.125,5.763],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[0,0],[0,0],[3.7,-22.8],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[23.225,-121.113],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[74.05,87.3],[58.993,73.332],[56.28,70.816],[-77.95,-53.7],[-47.1,-91],[-34.2,-96.2]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Bottom","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-0.2,117.55,0],"ix":2},"a":{"a":0,"k":[-0.2,117.55,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[17.8,0],[6.4,15.6]],"o":[[-6.4,15.5],[-17.8,0],[0,0]],"v":[[39.3,104.3],[-0.2,130.8],[-39.7,104.3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0}],"markers":[]} \ No newline at end of file +{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":37,"w":512,"h":512,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Line","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":1,"s":[6.2,8.4,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.3,"y":0},"t":7,"s":[17.813,19.808,0],"to":[0,0,0],"ti":[0,0,0]},{"t":18,"s":[-8.985,-6.628,0]}],"ix":2},"a":{"a":0,"k":[6.2,8.4,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-102.6,-100.5],[115,117.3]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":7,"s":[100]},{"t":18,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":18,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":136,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Middle","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-34.15,23.2,0],"ix":2},"a":{"a":0,"k":[-34.15,23.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[27.741,66.641],[29.641,68.541],[48.3,87.2],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[0,0],[-11.064,22.792],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[7.543,4.4],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.7,-40.8],[13.701,50.721],[44.112,42.695],[81.297,87.764],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[0,0],[-0.456,-0.411],[-7.14,22.508],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0.456,0.411],[7.125,4.156],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.617,-41.562],[-36.617,-1.022],[-8.461,-10.952],[81.126,87.722],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[-0.304,-0.274],[-3.842,19.542],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0.304,0.274],[4.75,2.771],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-79.145,-45.891],[-67.552,-34.675],[-46.665,-45.462],[79.017,87.614],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]},{"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3]],"o":[[0,0],[0,0],[0,0],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0]],"v":[[-78.2,-54.55],[50.226,64.601],[52.497,66.708],[74.8,87.4],[-103.8,87.2],[-116.6,74.4],[-112.4,65],[-104.2,57.5],[-83.6,14.9]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":13,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Top","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":1,"s":[0]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":7,"s":[3]},{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":20,"s":[-5]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":29,"s":[3]},{"t":36,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[255.082,261,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.3,"y":1},"o":{"x":0.3,"y":0},"t":5,"s":[255.082,281,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.4,"y":1},"o":{"x":0.3,"y":0},"t":18,"s":[255.082,237,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":27,"s":[255.082,283,0],"to":[0,0,0],"ti":[0,0,0]},{"t":34,"s":[255.082,261,0]}],"ix":2},"a":{"a":0,"k":[-0.918,5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[0,0],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[0,0],[0,0],[2.2,-3.6],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[95.3,87.4],[79.202,71.144],[76.303,68.216],[-67.2,-76.7],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[5.386,9.724],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[4.232,-6.783],[0,0],[2.2,-3.6],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[79.8,87.36],[42.716,46.351],[40.339,31.849],[-67.2,-76.7],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[5.088,9.185],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[1.015,-4.019],[0,0],[2.283,-4.664],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[79.481,87.357],[-8.726,-11.611],[-10.415,-21.132],[-67.338,-75.841],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[3.392,6.123],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[0.676,-2.679],[0,0],[2.755,-10.709],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[77.671,87.338],[10.934,17.854],[2.793,9.156],[-70.875,-68.461],[-47.1,-91],[-34.2,-96.2]],"c":true}]},{"t":13,"s":[{"i":[[-18.8,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[0,0],[0,0],[0,0],[-6.9,2.6],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[0,0],[0,0],[0,0],[3.7,-22.8],[0,0],[-0.1,-18.9]],"v":[[-0.2,-130.4],[33.9,-98.4],[34,-96.2],[46.9,-91],[79,-47.1],[83.4,15],[104,57.6],[112.2,65.1],[113,83.2],[103.6,87.4],[74.05,87.3],[58.993,73.332],[56.28,70.816],[-77.95,-53.7],[-47.1,-91],[-34.2,-96.2]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":13,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Bottom","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-0.2,117.55,0],"ix":2},"a":{"a":0,"k":[-0.2,117.55,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[17.8,0],[6.4,15.6]],"o":[[-6.4,15.5],[-17.8,0],[0,0]],"v":[[39.3,104.3],[-0.2,130.8],[-39.7,104.3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"EXAMPLE","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.232,0.2,0],"ix":2},"a":{"a":0,"k":[0.232,0.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-18.9,0],[-1.1,-17.9],[0,0],[0,0],[-1.4,-19.6],[0,0],[-12.1,-11],[0,0],[4.8,-5.2],[3.6,0],[0,0],[0,7.1],[-2.7,2.4],[0,0],[-1.2,16.3],[0,0],[-18.3,7.3],[0,0]],"o":[[18.1,0],[0,0],[0,0],[18.2,7.3],[0,0],[1.2,16.3],[0,0],[5.2,4.8],[-2.4,2.6],[0,0],[-7.1,0],[0,-3.6],[0,0],[12.1,-11.1],[0,0],[1.4,-19.6],[0,0],[-0.1,-19]],"v":[[0.2,-130.4],[34.3,-98.4],[34.4,-96.2],[47.3,-91],[79.4,-47.1],[83.8,15],[104.4,57.6],[112.6,65.1],[113.4,83.2],[104,87.4],[-103.5,87.4],[-116.3,74.6],[-112.1,65.2],[-103.9,57.7],[-83.3,15.1],[-78.9,-47],[-46.8,-90.9],[-33.9,-96.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":13,"op":180,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index dee5cef82b8621c9712b84697087e557e08c7348..26bcf7bdd3cab21a95947cfbf422c23653f21ec8 100644 GIT binary patch delta 47124 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 XgnaI0e3{KR++dFrqoYQPRMP(gu^4z% delta 48247 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 I58=@NKPC30pa1{> diff --git a/submodules/TelegramUI/Sources/AccountContext.swift b/submodules/TelegramUI/Sources/AccountContext.swift index 26c6641465..95fe8149b6 100644 --- a/submodules/TelegramUI/Sources/AccountContext.swift +++ b/submodules/TelegramUI/Sources/AccountContext.swift @@ -302,6 +302,10 @@ public final class AccountContextImpl: AccountContext { } } + public func scheduleGroupCall(peerId: PeerId) { + let _ = self.sharedContext.callManager?.scheduleGroupCall(context: self, peerId: peerId, endCurrentIfAny: true) + } + public func joinGroupCall(peerId: PeerId, invite: String?, requestJoinAsPeerId: ((@escaping (PeerId?) -> Void) -> Void)?, activeCall: CachedChannelData.ActiveCall) { let callResult = self.sharedContext.callManager?.joinGroupCall(context: self, peerId: peerId, invite: invite, requestJoinAsPeerId: requestJoinAsPeerId, initialCall: activeCall, endCurrentIfAny: false) if let callResult = callResult, case let .alreadyInProgress(currentPeerId) = callResult { diff --git a/submodules/TelegramUI/Sources/ApplicationContext.swift b/submodules/TelegramUI/Sources/ApplicationContext.swift index a1f8433069..4e4c9df927 100644 --- a/submodules/TelegramUI/Sources/ApplicationContext.swift +++ b/submodules/TelegramUI/Sources/ApplicationContext.swift @@ -356,7 +356,7 @@ final class AuthorizedApplicationContext { if inAppNotificationSettings.displayPreviews { let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 } - strongSelf.notificationController.enqueue(ChatMessageNotificationItem(context: strongSelf.context, strings: presentationData.strings, nameDisplayOrder: presentationData.nameDisplayOrder, messages: messages, tapAction: { + strongSelf.notificationController.enqueue(ChatMessageNotificationItem(context: strongSelf.context, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat, nameDisplayOrder: presentationData.nameDisplayOrder, messages: messages, tapAction: { if let strongSelf = self { var foundOverlay = false strongSelf.mainWindow.forEachViewController({ controller in diff --git a/submodules/TelegramUI/Sources/AuthorizationSequenceController.swift b/submodules/TelegramUI/Sources/AuthorizationSequenceController.swift index 99808d4147..6ae6070ef1 100644 --- a/submodules/TelegramUI/Sources/AuthorizationSequenceController.swift +++ b/submodules/TelegramUI/Sources/AuthorizationSequenceController.swift @@ -177,14 +177,14 @@ public final class AuthorizationSequenceController: NavigationController, MFMail controller.inProgress = false let text: String - var actions: [TextAlertAction] = [ - TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {}) - ] + var actions: [TextAlertAction] = [] switch error { case .limitExceeded: text = strongSelf.presentationData.strings.Login_CodeFloodError + actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) case .invalidPhoneNumber: text = strongSelf.presentationData.strings.Login_InvalidPhoneError + actions.append(TextAlertAction(type: .genericAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Login_PhoneNumberHelp, action: { [weak controller] in guard let strongSelf = self, let controller = controller else { return @@ -200,8 +200,10 @@ public final class AuthorizationSequenceController: NavigationController, MFMail })) case .phoneLimitExceeded: text = strongSelf.presentationData.strings.Login_PhoneFloodError + actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) case .phoneBanned: text = strongSelf.presentationData.strings.Login_PhoneBannedError + actions.append(TextAlertAction(type: .genericAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Login_PhoneNumberHelp, action: { [weak controller] in guard let strongSelf = self, let controller = controller else { return @@ -217,6 +219,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail })) case let .generic(info): text = strongSelf.presentationData.strings.Login_UnknownError + actions.append(TextAlertAction(type: .genericAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Login_PhoneNumberHelp, action: { [weak controller] in guard let strongSelf = self, let controller = controller else { return @@ -238,6 +241,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail })) case .timeout: text = strongSelf.presentationData.strings.Login_NetworkError + actions.append(TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})) actions.append(TextAlertAction(type: .genericAction, title: strongSelf.presentationData.strings.ChatSettings_ConnectionType_UseProxy, action: { [weak controller] in guard let strongSelf = self, let controller = controller else { return diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 6edc11f355..838790e1cb 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -535,7 +535,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } case .groupPhoneCall, .inviteToGroupPhoneCall: if let activeCall = strongSelf.presentationInterfaceState.activeGroupCallInfo?.activeCall { - strongSelf.joinGroupCall(peerId: message.id.peerId, invite: nil, activeCall: CachedChannelData.ActiveCall(id: activeCall.id, accessHash: activeCall.accessHash, title: activeCall.title)) + strongSelf.joinGroupCall(peerId: message.id.peerId, invite: nil, activeCall: CachedChannelData.ActiveCall(id: activeCall.id, accessHash: activeCall.accessHash, title: activeCall.title, scheduleTimestamp: activeCall.scheduleTimestamp, subscribed: activeCall.subscribed)) } else { var canManageGroupCalls = false if let channel = strongSelf.presentationInterfaceState.renderedPeer?.chatMainPeer as? TelegramChannel { @@ -564,12 +564,12 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G statusController?.dismiss() } strongSelf.present(statusController, in: .window(.root)) - strongSelf.createVoiceChatDisposable.set((createGroupCall(account: strongSelf.context.account, peerId: message.id.peerId) + strongSelf.createVoiceChatDisposable.set((createGroupCall(account: strongSelf.context.account, peerId: message.id.peerId, title: nil, scheduleDate: nil) |> deliverOnMainQueue).start(next: { [weak self] info in guard let strongSelf = self else { return } - strongSelf.joinGroupCall(peerId: message.id.peerId, invite: nil, activeCall: CachedChannelData.ActiveCall(id: info.id, accessHash: info.accessHash, title: info.title)) + strongSelf.joinGroupCall(peerId: message.id.peerId, invite: nil, activeCall: CachedChannelData.ActiveCall(id: info.id, accessHash: info.accessHash, title: info.title, scheduleTimestamp: info.scheduleTimestamp, subscribed: false)) }, error: { [weak self] error in dismissStatus?() diff --git a/submodules/TelegramUI/Sources/ChatInterfaceStateAccessoryPanels.swift b/submodules/TelegramUI/Sources/ChatInterfaceStateAccessoryPanels.swift index 38957c8645..85c468508d 100644 --- a/submodules/TelegramUI/Sources/ChatInterfaceStateAccessoryPanels.swift +++ b/submodules/TelegramUI/Sources/ChatInterfaceStateAccessoryPanels.swift @@ -32,7 +32,7 @@ func accessoryPanelForChatPresentationIntefaceState(_ chatPresentationInterfaceS editPanelNode.updateThemeAndStrings(theme: chatPresentationInterfaceState.theme, strings: chatPresentationInterfaceState.strings) return editPanelNode } else { - let panelNode = EditAccessoryPanelNode(context: context, messageId: editMessage.messageId, theme: chatPresentationInterfaceState.theme, strings: chatPresentationInterfaceState.strings, nameDisplayOrder: chatPresentationInterfaceState.nameDisplayOrder) + let panelNode = EditAccessoryPanelNode(context: context, messageId: editMessage.messageId, theme: chatPresentationInterfaceState.theme, strings: chatPresentationInterfaceState.strings, nameDisplayOrder: chatPresentationInterfaceState.nameDisplayOrder, dateTimeFormat: chatPresentationInterfaceState.dateTimeFormat) panelNode.interfaceInteraction = interfaceInteraction return panelNode } @@ -63,7 +63,7 @@ func accessoryPanelForChatPresentationIntefaceState(_ chatPresentationInterfaceS replyPanelNode.updateThemeAndStrings(theme: chatPresentationInterfaceState.theme, strings: chatPresentationInterfaceState.strings) return replyPanelNode } else { - let panelNode = ReplyAccessoryPanelNode(context: context, messageId: replyMessageId, theme: chatPresentationInterfaceState.theme, strings: chatPresentationInterfaceState.strings, nameDisplayOrder: chatPresentationInterfaceState.nameDisplayOrder) + let panelNode = ReplyAccessoryPanelNode(context: context, messageId: replyMessageId, theme: chatPresentationInterfaceState.theme, strings: chatPresentationInterfaceState.strings, nameDisplayOrder: chatPresentationInterfaceState.nameDisplayOrder, dateTimeFormat: chatPresentationInterfaceState.dateTimeFormat) panelNode.interfaceInteraction = interfaceInteraction return panelNode } diff --git a/submodules/TelegramUI/Sources/ChatMessageActionItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageActionItemNode.swift index 4eb1e5df7a..bd21d88018 100644 --- a/submodules/TelegramUI/Sources/ChatMessageActionItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageActionItemNode.swift @@ -18,8 +18,8 @@ import UniversalMediaPlayer import TelegramUniversalVideoContent import GalleryUI -private func attributedServiceMessageString(theme: ChatPresentationThemeData, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, message: Message, accountPeerId: PeerId) -> NSAttributedString? { - return universalServiceMessageString(presentationData: (theme.theme, theme.wallpaper), strings: strings, nameDisplayOrder: nameDisplayOrder, message: message, accountPeerId: accountPeerId, forChatList: false) +private func attributedServiceMessageString(theme: ChatPresentationThemeData, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, dateTimeFormat: PresentationDateTimeFormat, message: Message, accountPeerId: PeerId) -> NSAttributedString? { + return universalServiceMessageString(presentationData: (theme.theme, theme.wallpaper), strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat, message: message, accountPeerId: accountPeerId, forChatList: false) } class ChatMessageActionBubbleContentNode: ChatMessageBubbleContentNode { @@ -132,7 +132,7 @@ class ChatMessageActionBubbleContentNode: ChatMessageBubbleContentNode { let backgroundImage = PresentationResourcesChat.chatActionPhotoBackgroundImage(item.presentationData.theme.theme, wallpaper: !item.presentationData.theme.wallpaper.isEmpty) return (contentProperties, nil, CGFloat.greatestFiniteMagnitude, { constrainedSize, position in - let attributedString = attributedServiceMessageString(theme: item.presentationData.theme, strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, message: item.message, accountPeerId: item.context.account.peerId) + let attributedString = attributedServiceMessageString(theme: item.presentationData.theme, strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, dateTimeFormat: item.presentationData.dateTimeFormat, message: item.message, accountPeerId: item.context.account.peerId) var image: TelegramMediaImage? for media in item.message.media { diff --git a/submodules/TelegramUI/Sources/ChatMessageItemView.swift b/submodules/TelegramUI/Sources/ChatMessageItemView.swift index d4a3177ae2..02594b2cd2 100644 --- a/submodules/TelegramUI/Sources/ChatMessageItemView.swift +++ b/submodules/TelegramUI/Sources/ChatMessageItemView.swift @@ -207,7 +207,7 @@ final class ChatMessageAccessibilityData { if let chatPeer = message.peers[item.message.id.peerId] { let authorName = message.author?.displayTitle(strings: item.presentationData.strings, displayOrder: item.presentationData.nameDisplayOrder) - let (_, _, messageText) = chatListItemStrings(strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, messages: [message], chatPeer: RenderedPeer(peer: chatPeer), accountPeerId: item.context.account.peerId) + let (_, _, messageText) = chatListItemStrings(strings: item.presentationData.strings, nameDisplayOrder: item.presentationData.nameDisplayOrder, dateTimeFormat: item.presentationData.dateTimeFormat, messages: [message], chatPeer: RenderedPeer(peer: chatPeer), accountPeerId: item.context.account.peerId) var text = messageText diff --git a/submodules/TelegramUI/Sources/ChatMessageNotificationItem.swift b/submodules/TelegramUI/Sources/ChatMessageNotificationItem.swift index 97ceb3beed..0791b4cb9c 100644 --- a/submodules/TelegramUI/Sources/ChatMessageNotificationItem.swift +++ b/submodules/TelegramUI/Sources/ChatMessageNotificationItem.swift @@ -18,6 +18,7 @@ import TelegramStringFormatting public final class ChatMessageNotificationItem: NotificationItem { let context: AccountContext let strings: PresentationStrings + let dateTimeFormat: PresentationDateTimeFormat let nameDisplayOrder: PresentationPersonNameOrder let messages: [Message] let tapAction: () -> Bool @@ -27,9 +28,10 @@ public final class ChatMessageNotificationItem: NotificationItem { return messages.first?.id.peerId } - public init(context: AccountContext, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, messages: [Message], tapAction: @escaping () -> Bool, expandAction: @escaping (() -> (ASDisplayNode?, () -> Void)) -> Void) { + public init(context: AccountContext, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameDisplayOrder: PresentationPersonNameOrder, messages: [Message], tapAction: @escaping () -> Bool, expandAction: @escaping (() -> (ASDisplayNode?, () -> Void)) -> Void) { self.context = context self.strings = strings + self.dateTimeFormat = dateTimeFormat self.nameDisplayOrder = nameDisplayOrder self.messages = messages self.tapAction = tapAction @@ -181,7 +183,7 @@ final class ChatMessageNotificationItemNode: NotificationItemNode { if message.containsSecretMedia { imageDimensions = nil } - messageText = descriptionStringForMessage(contentSettings: item.context.currentContentSettings.with { $0 }, message: message, strings: item.strings, nameDisplayOrder: item.nameDisplayOrder, accountPeerId: item.context.account.peerId).0 + messageText = descriptionStringForMessage(contentSettings: item.context.currentContentSettings.with { $0 }, message: message, strings: item.strings, nameDisplayOrder: item.nameDisplayOrder, dateTimeFormat: item.dateTimeFormat, accountPeerId: item.context.account.peerId).0 } else if item.messages.count > 1, let peer = item.messages[0].peers[item.messages[0].id.peerId] { var displayAuthor = true if let channel = peer as? TelegramChannel { @@ -218,9 +220,9 @@ final class ChatMessageNotificationItemNode: NotificationItemNode { } } } else if item.messages[0].groupingKey != nil { - var kind = messageContentKind(contentSettings: item.context.currentContentSettings.with { $0 }, message: item.messages[0], strings: presentationData.strings, nameDisplayOrder: presentationData.nameDisplayOrder, accountPeerId: item.context.account.peerId).key + var kind = messageContentKind(contentSettings: item.context.currentContentSettings.with { $0 }, message: item.messages[0], strings: presentationData.strings, nameDisplayOrder: presentationData.nameDisplayOrder, dateTimeFormat: presentationData.dateTimeFormat, accountPeerId: item.context.account.peerId).key for i in 1 ..< item.messages.count { - let nextKind = messageContentKind(contentSettings: item.context.currentContentSettings.with { $0 }, message: item.messages[i], strings: presentationData.strings, nameDisplayOrder: presentationData.nameDisplayOrder, accountPeerId: item.context.account.peerId) + let nextKind = messageContentKind(contentSettings: item.context.currentContentSettings.with { $0 }, message: item.messages[i], strings: presentationData.strings, nameDisplayOrder: presentationData.nameDisplayOrder, dateTimeFormat: presentationData.dateTimeFormat, accountPeerId: item.context.account.peerId) if kind != nextKind.key { kind = .text break diff --git a/submodules/TelegramUI/Sources/ChatMessageReplyInfoNode.swift b/submodules/TelegramUI/Sources/ChatMessageReplyInfoNode.swift index af0467d891..91fd6ee3a6 100644 --- a/submodules/TelegramUI/Sources/ChatMessageReplyInfoNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageReplyInfoNode.swift @@ -65,7 +65,7 @@ class ChatMessageReplyInfoNode: ASDisplayNode { } } - let (textString, isMedia) = descriptionStringForMessage(contentSettings: context.currentContentSettings.with { $0 }, message: message, strings: strings, nameDisplayOrder: presentationData.nameDisplayOrder, accountPeerId: context.account.peerId) + let (textString, isMedia) = descriptionStringForMessage(contentSettings: context.currentContentSettings.with { $0 }, message: message, strings: strings, nameDisplayOrder: presentationData.nameDisplayOrder, dateTimeFormat: presentationData.dateTimeFormat, accountPeerId: context.account.peerId) let placeholderColor: UIColor = message.effectivelyIncoming(context.account.peerId) ? presentationData.theme.theme.chat.message.incoming.mediaPlaceholderColor : presentationData.theme.theme.chat.message.outgoing.mediaPlaceholderColor let titleColor: UIColor diff --git a/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift b/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift index ac47ca0360..681b4045dc 100644 --- a/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift @@ -269,7 +269,7 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { self.currentMessage = interfaceState.pinnedMessage if let currentMessage = self.currentMessage, let currentLayout = self.currentLayout { - self.enqueueTransition(width: currentLayout.0, panelHeight: panelHeight, leftInset: currentLayout.1, rightInset: currentLayout.2, transition: .immediate, animation: messageUpdatedAnimation, pinnedMessage: currentMessage, theme: interfaceState.theme, strings: interfaceState.strings, nameDisplayOrder: interfaceState.nameDisplayOrder, accountPeerId: self.context.account.peerId, firstTime: previousMessageWasNil, isReplyThread: isReplyThread) + self.enqueueTransition(width: currentLayout.0, panelHeight: panelHeight, leftInset: currentLayout.1, rightInset: currentLayout.2, transition: .immediate, animation: messageUpdatedAnimation, pinnedMessage: currentMessage, theme: interfaceState.theme, strings: interfaceState.strings, nameDisplayOrder: interfaceState.nameDisplayOrder, dateTimeFormat: interfaceState.dateTimeFormat, accountPeerId: self.context.account.peerId, firstTime: previousMessageWasNil, isReplyThread: isReplyThread) } } @@ -314,14 +314,14 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { self.currentLayout = (width, leftInset, rightInset) if let currentMessage = self.currentMessage { - self.enqueueTransition(width: width, panelHeight: panelHeight, leftInset: leftInset, rightInset: rightInset, transition: .immediate, animation: .none, pinnedMessage: currentMessage, theme: interfaceState.theme, strings: interfaceState.strings, nameDisplayOrder: interfaceState.nameDisplayOrder, accountPeerId: interfaceState.accountPeerId, firstTime: true, isReplyThread: isReplyThread) + self.enqueueTransition(width: width, panelHeight: panelHeight, leftInset: leftInset, rightInset: rightInset, transition: .immediate, animation: .none, pinnedMessage: currentMessage, theme: interfaceState.theme, strings: interfaceState.strings, nameDisplayOrder: interfaceState.nameDisplayOrder, dateTimeFormat: interfaceState.dateTimeFormat, accountPeerId: interfaceState.accountPeerId, firstTime: true, isReplyThread: isReplyThread) } } return panelHeight } - private func enqueueTransition(width: CGFloat, panelHeight: CGFloat, leftInset: CGFloat, rightInset: CGFloat, transition: ContainedViewLayoutTransition, animation: PinnedMessageAnimation?, pinnedMessage: ChatPinnedMessage, theme: PresentationTheme, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, accountPeerId: PeerId, firstTime: Bool, isReplyThread: Bool) { + private func enqueueTransition(width: CGFloat, panelHeight: CGFloat, leftInset: CGFloat, rightInset: CGFloat, transition: ContainedViewLayoutTransition, animation: PinnedMessageAnimation?, pinnedMessage: ChatPinnedMessage, theme: PresentationTheme, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, dateTimeFormat: PresentationDateTimeFormat, accountPeerId: PeerId, firstTime: Bool, isReplyThread: Bool) { let message = pinnedMessage.message var animationTransition: ContainedViewLayoutTransition = .immediate @@ -470,7 +470,7 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { } let (titleLayout, titleApply) = makeTitleLayout(CGSize(width: width - textLineInset - contentLeftInset - rightInset - textRightInset, height: CGFloat.greatestFiniteMagnitude), titleStrings) - let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: foldLineBreaks(descriptionStringForMessage(contentSettings: context.currentContentSettings.with { $0 }, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, accountPeerId: accountPeerId).0), font: Font.regular(15.0), textColor: message.media.isEmpty || message.media.first is TelegramMediaWebpage ? theme.chat.inputPanel.primaryTextColor : theme.chat.inputPanel.secondaryTextColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: width - textLineInset - contentLeftInset - rightInset - textRightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets(top: 2.0, left: 0.0, bottom: 2.0, right: 0.0))) + let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: foldLineBreaks(descriptionStringForMessage(contentSettings: context.currentContentSettings.with { $0 }, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat, accountPeerId: accountPeerId).0), font: Font.regular(15.0), textColor: message.media.isEmpty || message.media.first is TelegramMediaWebpage ? theme.chat.inputPanel.primaryTextColor : theme.chat.inputPanel.secondaryTextColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: width - textLineInset - contentLeftInset - rightInset - textRightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets(top: 2.0, left: 0.0, bottom: 2.0, right: 0.0))) Queue.mainQueue().async { if let strongSelf = self { diff --git a/submodules/TelegramUI/Sources/ChatScheduleTimeControllerNode.swift b/submodules/TelegramUI/Sources/ChatScheduleTimeControllerNode.swift index 7324f017ea..0233a7eafc 100644 --- a/submodules/TelegramUI/Sources/ChatScheduleTimeControllerNode.swift +++ b/submodules/TelegramUI/Sources/ChatScheduleTimeControllerNode.swift @@ -262,12 +262,12 @@ class ChatScheduleTimeControllerNode: ViewControllerTracingNode, UIScrollViewDel } } + private let calendar = Calendar(identifier: .gregorian) private func updateButtonTitle() { guard let date = self.pickerView?.date else { return } - let calendar = Calendar(identifier: .gregorian) let time = stringForMessageTimestamp(timestamp: Int32(date.timeIntervalSince1970), dateTimeFormat: self.presentationData.dateTimeFormat) switch mode { case .scheduledMessages: diff --git a/submodules/TelegramUI/Sources/EditAccessoryPanelNode.swift b/submodules/TelegramUI/Sources/EditAccessoryPanelNode.swift index e13b940f39..50eab52af5 100644 --- a/submodules/TelegramUI/Sources/EditAccessoryPanelNode.swift +++ b/submodules/TelegramUI/Sources/EditAccessoryPanelNode.swift @@ -15,6 +15,7 @@ import PhotoResources import TelegramStringFormatting final class EditAccessoryPanelNode: AccessoryPanelNode { + let dateTimeFormat: PresentationDateTimeFormat let messageId: MessageId let closeButton: ASButtonNode @@ -67,12 +68,13 @@ final class EditAccessoryPanelNode: AccessoryPanelNode { var strings: PresentationStrings var nameDisplayOrder: PresentationPersonNameOrder - init(context: AccountContext, messageId: MessageId, theme: PresentationTheme, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder) { + init(context: AccountContext, messageId: MessageId, theme: PresentationTheme, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, dateTimeFormat: PresentationDateTimeFormat) { self.context = context self.messageId = messageId self.theme = theme self.strings = strings self.nameDisplayOrder = nameDisplayOrder + self.dateTimeFormat = dateTimeFormat self.closeButton = ASButtonNode() self.closeButton.accessibilityLabel = strings.VoiceOver_DiscardPreparedContent @@ -159,7 +161,7 @@ final class EditAccessoryPanelNode: AccessoryPanelNode { if let currentEditMediaReference = self.currentEditMediaReference { effectiveMessage = effectiveMessage.withUpdatedMedia([currentEditMediaReference.media]) } - (text, _) = descriptionStringForMessage(contentSettings: context.currentContentSettings.with { $0 }, message: effectiveMessage, strings: self.strings, nameDisplayOrder: self.nameDisplayOrder, accountPeerId: self.context.account.peerId) + (text, _) = descriptionStringForMessage(contentSettings: context.currentContentSettings.with { $0 }, message: effectiveMessage, strings: self.strings, nameDisplayOrder: self.nameDisplayOrder, dateTimeFormat: self.dateTimeFormat, accountPeerId: self.context.account.peerId) } var updatedMediaReference: AnyMediaReference? @@ -231,7 +233,8 @@ final class EditAccessoryPanelNode: AccessoryPanelNode { if let currentEditMediaReference = self.currentEditMediaReference { effectiveMessage = effectiveMessage.withUpdatedMedia([currentEditMediaReference.media]) } - switch messageContentKind(contentSettings: self.context.currentContentSettings.with { $0 }, message: effectiveMessage, strings: strings, nameDisplayOrder: nameDisplayOrder, accountPeerId: self.context.account.peerId) { + let presentationData = self.context.sharedContext.currentPresentationData.with { $0 } + switch messageContentKind(contentSettings: self.context.currentContentSettings.with { $0 }, message: effectiveMessage, strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: presentationData.dateTimeFormat, accountPeerId: self.context.account.peerId) { case .text: isMedia = false default: diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoData.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoData.swift index 7a856a3938..b9ff945628 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoData.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoData.swift @@ -1019,7 +1019,7 @@ func peerInfoHeaderButtons(peer: Peer?, cachedData: CachedPeerData?, isOpenedFro displayLeave = false } result.append(.mute) - if hasVoiceChat { + if hasVoiceChat || canStartVoiceChat { result.append(.voiceChat) } if hasDiscussion { @@ -1038,7 +1038,7 @@ func peerInfoHeaderButtons(peer: Peer?, cachedData: CachedPeerData?, isOpenedFro if channel.isVerified || channel.adminRights != nil || channel.flags.contains(.isCreator) { canReport = false } - if !canReport && !canViewStats && !canStartVoiceChat { + if !canReport && !canViewStats { displayMore = false } if displayMore { @@ -1051,10 +1051,18 @@ func peerInfoHeaderButtons(peer: Peer?, cachedData: CachedPeerData?, isOpenedFro var isPublic = false var isCreator = false var hasVoiceChat = false + var canStartVoiceChat = false if group.flags.contains(.hasVoiceChat) { hasVoiceChat = true } + if !hasVoiceChat { + if case .creator = group.role { + canStartVoiceChat = true + } else if case let .admin(rights, _) = group.role, rights.rights.contains(.canManageCalls) { + canStartVoiceChat = true + } + } if case .creator = group.role { isCreator = true @@ -1073,13 +1081,11 @@ func peerInfoHeaderButtons(peer: Peer?, cachedData: CachedPeerData?, isOpenedFro if !group.hasBannedPermission(.banAddMembers) { canAddMembers = true } - if canAddMembers { result.append(.addMember) } - result.append(.mute) - if hasVoiceChat { + if hasVoiceChat || canStartVoiceChat { result.append(.voiceChat) } result.append(.search) diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift index f745142c54..fdd453ac39 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift @@ -153,6 +153,7 @@ final class PeerInfoHeaderButtonNode: HighlightableButtonNode { colors = ["Middle.Group 1.Fill 1": iconColor, "Top.Group 1.Fill 1": iconColor, "Bottom.Group 1.Fill 1": iconColor, + "EXAMPLE.Group 1.Fill 1": iconColor, "Line.Group 1.Stroke 1": iconColor] if previousIcon == .unmute { playOnce = true @@ -164,6 +165,7 @@ final class PeerInfoHeaderButtonNode: HighlightableButtonNode { colors = ["Middle.Group 1.Fill 1": iconColor, "Top.Group 1.Fill 1": iconColor, "Bottom.Group 1.Fill 1": iconColor, + "EXAMPLE.Group 1.Fill 1": iconColor, "Line.Group 1.Stroke 1": iconColor] if previousIcon == .mute { playOnce = true @@ -248,7 +250,9 @@ final class PeerInfoHeaderButtonNode: HighlightableButtonNode { if isActiveUpdated, !self.containerNode.alpha.isZero { let alphaTransition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut) alphaTransition.updateAlpha(node: self.backgroundNode, alpha: isActive ? 1.0 : 0.3) - alphaTransition.updateAlpha(node: self.textNode, alpha: isActive ? 1.0 : 0.3) + if !isExpanded { + alphaTransition.updateAlpha(node: self.textNode, alpha: isActive ? 1.0 : 0.3) + } } self.textNode.attributedText = NSAttributedString(string: text, font: Font.regular(12.0), textColor: presentationData.theme.list.itemAccentColor) diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index c2b7d1dc83..5e6c886044 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -3371,7 +3371,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD case .videoCall: self.requestCall(isVideo: true) case .voiceChat: - self.requestCall(isVideo: false) + self.requestCall(isVideo: false, gesture: gesture) case .mute: if let notificationSettings = self.data?.notificationSettings, case .muted = notificationSettings.muteState { let _ = updatePeerMuteSetting(account: self.context.account, peerId: self.peerId, muteInterval: nil).start() @@ -3627,20 +3627,6 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD } } } else if let channel = peer as? TelegramChannel { - if !channel.flags.contains(.hasVoiceChat) { - if channel.flags.contains(.isCreator) || channel.hasPermission(.manageCalls) { - items.append(.action(ContextMenuActionItem(text: presentationData.strings.ChannelInfo_CreateVoiceChat, icon: { theme in - generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/VoiceChat"), color: theme.contextMenu.primaryColor) - }, action: { [weak self] c, f in - self?.requestCall(isVideo: false, contextController: c, result: f, backAction: { c in - if let mainItemsImpl = mainItemsImpl { - c.setItems(mainItemsImpl()) - } - }) - }))) - } - } - if let cachedData = self.data?.cachedData as? CachedChannelData, cachedData.flags.contains(.canViewStats) { items.append(.action(ContextMenuActionItem(text: presentationData.strings.ChannelInfo_Stats, icon: { theme in generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Statistics"), color: theme.contextMenu.primaryColor) @@ -3730,22 +3716,6 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD } } } else if let group = peer as? TelegramGroup { - var canManageGroupCalls = false - if case .creator = group.role { - canManageGroupCalls = true - } else if case let .admin(rights, _) = group.role { - if rights.rights.contains(.canManageCalls) { - canManageGroupCalls = true - } - } - if canManageGroupCalls, !group.flags.contains(.hasVoiceChat) { - items.append(.action(ContextMenuActionItem(text: presentationData.strings.ChannelInfo_CreateVoiceChat, icon: { theme in - generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/VoiceChat"), color: theme.contextMenu.primaryColor) - }, action: { [weak self] c, f in - self?.requestCall(isVideo: false, contextController: c, result: f) - }))) - } - if case .Member = group.membership { if !items.isEmpty { items.append(.separator) @@ -3976,14 +3946,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD } }, activeCall: activeCall) } else { - if let defaultJoinAsPeerId = defaultJoinAsPeerId { - result?(.dismissWithoutContent) - self?.createAndJoinGroupCall(peerId: peerId, joinAsPeerId: defaultJoinAsPeerId) - } else { - self?.openVoiceChatDisplayAsPeerSelection(completion: { joinAsPeerId in - self?.createAndJoinGroupCall(peerId: peerId, joinAsPeerId: joinAsPeerId) - }, gesture: gesture, contextController: contextController, result: result, backAction: backAction) - } + self?.openVoiceChatOptions(defaultJoinAsPeerId: defaultJoinAsPeerId, gesture: gesture, contextController: contextController) } } @@ -4006,6 +3969,17 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD self.context.requestCall(peerId: peer.id, isVideo: isVideo, completion: {}) } + private func scheduleGroupCall() { + self.context.scheduleGroupCall(peerId: self.peerId) +// +// +// let time = Int32(Date().timeIntervalSince1970 + 86400) +// self.activeActionDisposable.set((createGroupCall(account: self.context.account, peerId: self.peerId, title: nil, scheduleDate: time) +// |> deliverOnMainQueue).start(next: { [weak self] info in +// +// })) + } + private func createAndJoinGroupCall(peerId: PeerId, joinAsPeerId: PeerId?) { if let _ = self.context.sharedContext.callManager { let startCall: (Bool) -> Void = { [weak self] endCurrentIfAny in @@ -4013,26 +3987,41 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD return } - var dismissStatus: (() -> Void)? - let statusController = OverlayStatusController(theme: strongSelf.presentationData.theme, type: .loading(cancelled: { - dismissStatus?() - })) - dismissStatus = { [weak self, weak statusController] in - self?.activeActionDisposable.set(nil) - statusController?.dismiss() + var cancelImpl: (() -> Void)? + let presentationData = strongSelf.presentationData + let progressSignal = Signal { [weak self] subscriber in + let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: { + cancelImpl?() + })) + self?.controller?.present(controller, in: .window(.root)) + return ActionDisposable { [weak controller] in + Queue.mainQueue().async() { + controller?.dismiss() + } + } } - strongSelf.controller?.present(statusController, in: .window(.root)) - strongSelf.activeActionDisposable.set((createGroupCall(account: strongSelf.context.account, peerId: peerId) + |> runOn(Queue.mainQueue()) + |> delay(0.15, queue: Queue.mainQueue()) + let progressDisposable = progressSignal.start() + let createSignal = createGroupCall(account: strongSelf.context.account, peerId: peerId, title: nil, scheduleDate: nil) + |> afterDisposed { + Queue.mainQueue().async { + progressDisposable.dispose() + } + } + cancelImpl = { [weak self] in + self?.activeActionDisposable.set(nil) + } + + strongSelf.activeActionDisposable.set((createSignal |> deliverOnMainQueue).start(next: { [weak self] info in guard let strongSelf = self else { return } strongSelf.context.joinGroupCall(peerId: peerId, invite: nil, requestJoinAsPeerId: { result in result(joinAsPeerId) - }, activeCall: CachedChannelData.ActiveCall(id: info.id, accessHash: info.accessHash, title: info.title)) + }, activeCall: CachedChannelData.ActiveCall(id: info.id, accessHash: info.accessHash, title: info.title, scheduleTimestamp: info.scheduleTimestamp, subscribed: false)) }, error: { [weak self] error in - dismissStatus?() - guard let strongSelf = self else { return } @@ -4046,8 +4035,6 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD text = strongSelf.presentationData.strings.VoiceChat_AnonymousDisabledAlertText } strongSelf.controller?.present(textAlertController(context: strongSelf.context, title: nil, text: text, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root)) - }, completed: { [weak self] in - dismissStatus?() })) } @@ -4348,7 +4335,90 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD controller.push(statsController) } + private func openVoiceChatOptions(defaultJoinAsPeerId: PeerId?, gesture: ContextGesture? = nil, contextController: ContextController? = nil) { + let context = self.context + let peerId = self.peerId + let defaultJoinAsPeerId = defaultJoinAsPeerId ?? self.context.account.peerId + let currentAccountPeer = self.context.account.postbox.loadedPeerWithId(self.context.account.peerId) + |> map { peer in + return [FoundPeer(peer: peer, subscribers: nil)] + } + let _ = (combineLatest(queue: Queue.mainQueue(), currentAccountPeer, self.displayAsPeersPromise.get() |> take(1)) + |> map { currentAccountPeer, availablePeers -> [FoundPeer] in + var result = currentAccountPeer + result.append(contentsOf: availablePeers) + return result + }).start(next: { [weak self] peers in + guard let strongSelf = self else { + return + } + + var items: [ContextMenuItem] = [] + + if peers.count > 1 { + var selectedPeer: FoundPeer? + for peer in peers { + if peer.peer.id == defaultJoinAsPeerId { + selectedPeer = peer + } + } + if let peer = selectedPeer { + let avatarSize = CGSize(width: 28.0, height: 28.0) + items.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.VoiceChat_DisplayAs, textLayout: .secondLineWithValue(peer.peer.displayTitle(strings: strongSelf.presentationData.strings, displayOrder: strongSelf.presentationData.nameDisplayOrder)), icon: { _ in nil }, iconSource: ContextMenuActionItemIconSource(size: avatarSize, signal: peerAvatarCompleteImage(account: strongSelf.context.account, peer: peer.peer, size: avatarSize)), action: { c, f in + guard let strongSelf = self else { + return + } + + strongSelf.openVoiceChatDisplayAsPeerSelection(completion: { joinAsPeerId in + let _ = updateGroupCallJoinAsPeer(account: context.account, peerId: peerId, joinAs: joinAsPeerId).start() + self?.openVoiceChatOptions(defaultJoinAsPeerId: joinAsPeerId, gesture: nil, contextController: c) + }, gesture: gesture, contextController: c, result: f, backAction: { [weak self] c in + self?.openVoiceChatOptions(defaultJoinAsPeerId: defaultJoinAsPeerId, gesture: nil, contextController: c) + }) + + }))) + items.append(.separator) + } + } + + items.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.ChannelInfo_CreateVoiceChat, icon: { theme in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/VoiceChat"), color: theme.contextMenu.primaryColor) }, action: { _, f in + f(.dismissWithoutContent) + + self?.createAndJoinGroupCall(peerId: peerId, joinAsPeerId: defaultJoinAsPeerId) + }))) + + items.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.ChannelInfo_ScheduleVoiceChat, icon: { theme in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Schedule"), color: theme.contextMenu.primaryColor) }, action: { _, f in + f(.dismissWithoutContent) + + self?.scheduleGroupCall() + }))) + + if let contextController = contextController { + contextController.setItems(.single(items)) + } else { + strongSelf.state = strongSelf.state.withHighlightedButton(.voiceChat) + if let (layout, navigationHeight) = strongSelf.validLayout { + strongSelf.containerLayoutUpdated(layout: layout, navigationHeight: navigationHeight, transition: .immediate, additive: false) + } + + if let sourceNode = strongSelf.headerNode.buttonNodes[.voiceChat]?.referenceNode, let controller = strongSelf.controller { + let contextController = ContextController(account: strongSelf.context.account, presentationData: strongSelf.presentationData, source: .reference(PeerInfoContextReferenceContentSource(controller: controller, sourceNode: sourceNode)), items: .single(items), reactionItems: [], gesture: gesture) + contextController.dismissed = { [weak self] in + if let strongSelf = self { + strongSelf.state = strongSelf.state.withHighlightedButton(nil) + if let (layout, navigationHeight) = strongSelf.validLayout { + strongSelf.containerLayoutUpdated(layout: layout, navigationHeight: navigationHeight, transition: .immediate, additive: false) + } + } + } + controller.presentInGlobalOverlay(contextController) + } + } + }) + } + private func openVoiceChatDisplayAsPeerSelection(completion: @escaping (PeerId) -> Void, gesture: ContextGesture? = nil, contextController: ContextController? = nil, result: ((ContextMenuActionResult) -> Void)? = nil, backAction: ((ContextController) -> Void)? = nil) { + let dismissOnSelection = contextController == nil let currentAccountPeer = self.context.account.postbox.loadedPeerWithId(context.account.peerId) |> map { peer in return [FoundPeer(peer: peer, subscribers: nil)] @@ -4398,8 +4468,9 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD let avatarSize = CGSize(width: 28.0, height: 28.0) let avatarSignal = peerAvatarCompleteImage(account: strongSelf.context.account, peer: peer.peer, size: avatarSize) items.append(.action(ContextMenuActionItem(text: peer.peer.displayTitle(strings: strongSelf.presentationData.strings, displayOrder: strongSelf.presentationData.nameDisplayOrder), textLayout: subtitle.flatMap { .secondLineWithValue($0) } ?? .singleLine, icon: { _ in nil }, iconSource: ContextMenuActionItemIconSource(size: avatarSize, signal: avatarSignal), action: { _, f in - f(.dismissWithoutContent) - + if dismissOnSelection { + f(.dismissWithoutContent) + } completion(peer.peer.id) }))) @@ -7168,7 +7239,7 @@ func presentAddMembers(context: AccountContext, parentController: ViewController } contactsController?.dismiss() - },completed: { + }, completed: { contactsController?.dismiss() })) })) diff --git a/submodules/TelegramUI/Sources/ReplyAccessoryPanelNode.swift b/submodules/TelegramUI/Sources/ReplyAccessoryPanelNode.swift index 59fbe8fffb..c07f07f6c1 100644 --- a/submodules/TelegramUI/Sources/ReplyAccessoryPanelNode.swift +++ b/submodules/TelegramUI/Sources/ReplyAccessoryPanelNode.swift @@ -29,7 +29,7 @@ final class ReplyAccessoryPanelNode: AccessoryPanelNode { var theme: PresentationTheme - init(context: AccountContext, messageId: MessageId, theme: PresentationTheme, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder) { + init(context: AccountContext, messageId: MessageId, theme: PresentationTheme, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, dateTimeFormat: PresentationDateTimeFormat) { self.messageId = messageId self.theme = theme @@ -86,7 +86,7 @@ final class ReplyAccessoryPanelNode: AccessoryPanelNode { authorName = author.displayTitle(strings: strings, displayOrder: nameDisplayOrder) } if let message = message { - (text, _) = descriptionStringForMessage(contentSettings: context.currentContentSettings.with { $0 }, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, accountPeerId: context.account.peerId) + (text, _) = descriptionStringForMessage(contentSettings: context.currentContentSettings.with { $0 }, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat, accountPeerId: context.account.peerId) } var updatedMediaReference: AnyMediaReference? @@ -152,7 +152,7 @@ final class ReplyAccessoryPanelNode: AccessoryPanelNode { let isMedia: Bool if let message = message { - switch messageContentKind(contentSettings: context.currentContentSettings.with { $0 }, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, accountPeerId: context.account.peerId) { + switch messageContentKind(contentSettings: context.currentContentSettings.with { $0 }, message: message, strings: strings, nameDisplayOrder: nameDisplayOrder, dateTimeFormat: dateTimeFormat, accountPeerId: context.account.peerId) { case .text: isMedia = false default: