From c2fb0c80618626121beaaedcca9487b18750b595 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Fri, 28 May 2021 18:30:05 +0400 Subject: [PATCH] Video Chat Improvements --- .../Telegram-iOS/en.lproj/Localizable.strings | 2 + .../Display/Source/CAAnimationUtils.swift | 34 +- .../ContainedViewLayoutTransition.swift | 9 + submodules/Display/Source/ListView.swift | 2 +- .../Display/Source/ListViewAnimation.swift | 2 +- .../Sources/VoiceChatController.swift | 430 +- .../Sources/VoiceChatMainStageNode.swift | 32 +- .../Sources/VoiceChatPeerProfileNode.swift | 15 +- .../Sources/VoiceChatTileGridNode.swift | 8 +- .../Sources/VoiceChatTileItemNode.swift | 64 +- .../Sources/PresentationStrings.swift | 3507 +++++++++-------- .../Context Menu/Audio.imageset/Contents.json | 12 + .../Audio.imageset/ic_menuaudio.pdf | Bin 0 -> 4661 bytes .../Resources/PresentationStrings.mapping | Bin 172436 -> 172470 bytes .../Sources/OngoingCallThreadLocalContext.mm | 4 +- 15 files changed, 2157 insertions(+), 1964 deletions(-) create mode 100644 submodules/TelegramUI/Images.xcassets/Call/Context Menu/Audio.imageset/Contents.json create mode 100644 submodules/TelegramUI/Images.xcassets/Call/Context Menu/Audio.imageset/ic_menuaudio.pdf diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index f46bd997e1..d52022bc2b 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -6477,3 +6477,5 @@ Sorry for the inconvenience."; "WallpaperPreview.WallpaperColors" = "Colors"; "VoiceChat.UnmuteSuggestion" = "You are on mute. Tap here to speak."; + +"VoiceChat.ContextAudio" = "Audio"; diff --git a/submodules/Display/Source/CAAnimationUtils.swift b/submodules/Display/Source/CAAnimationUtils.swift index 048ad67789..9c51d016d1 100644 --- a/submodules/Display/Source/CAAnimationUtils.swift +++ b/submodules/Display/Source/CAAnimationUtils.swift @@ -31,6 +31,7 @@ import UIKitRuntimeUtils private let completionKey = "CAAnimationUtils_completion" public let kCAMediaTimingFunctionSpring = "CAAnimationUtilsSpringCurve" +public let kCAMediaTimingFunctionCustomSpringPrefix = "CAAnimationUtilsSpringCustomCurve" public extension CAAnimation { var completion: ((Bool) -> Void)? { @@ -52,7 +53,38 @@ public extension CAAnimation { public extension CALayer { func makeAnimation(from: AnyObject, to: AnyObject, keyPath: String, timingFunction: String, duration: Double, delay: Double = 0.0, mediaTimingFunction: CAMediaTimingFunction? = nil, removeOnCompletion: Bool = true, additive: Bool = false, completion: ((Bool) -> Void)? = nil) -> CAAnimation { - if timingFunction == kCAMediaTimingFunctionSpring { + if timingFunction.hasPrefix(kCAMediaTimingFunctionCustomSpringPrefix) { + let components = timingFunction.components(separatedBy: "_") + let damping = Float(components[1]) ?? 100.0 + let initialVelocity = Float(components[2]) ?? 0.0 + + let animation = CASpringAnimation(keyPath: keyPath) + animation.fromValue = from + animation.toValue = to + animation.isRemovedOnCompletion = removeOnCompletion + animation.fillMode = .forwards + if let completion = completion { + animation.delegate = CALayerAnimationDelegate(animation: animation, completion: completion) + } + animation.damping = CGFloat(damping) + animation.initialVelocity = CGFloat(initialVelocity) + animation.mass = 5.0 + animation.stiffness = 900.0 + animation.duration = animation.settlingDuration + animation.timingFunction = CAMediaTimingFunction.init(name: .linear) + let k = Float(UIView.animationDurationFactor()) + var speed: Float = 1.0 + if k != 0 && k != 1 { + speed = Float(1.0) / k + } + animation.speed = speed * Float(animation.duration / duration) + animation.isAdditive = additive + if !delay.isZero { + animation.beginTime = self.convertTime(CACurrentMediaTime(), from: nil) + delay * UIView.animationDurationFactor() + animation.fillMode = .both + } + return animation + } else if timingFunction == kCAMediaTimingFunctionSpring { let animation = makeSpringAnimation(keyPath) animation.fromValue = from animation.toValue = to diff --git a/submodules/Display/Source/ContainedViewLayoutTransition.swift b/submodules/Display/Source/ContainedViewLayoutTransition.swift index 8cced35d9e..83886fffc5 100644 --- a/submodules/Display/Source/ContainedViewLayoutTransition.swift +++ b/submodules/Display/Source/ContainedViewLayoutTransition.swift @@ -6,6 +6,7 @@ public enum ContainedViewLayoutTransitionCurve: Equatable, Hashable { case linear case easeInOut case spring + case customSpring(damping: CGFloat, initialVelocity: CGFloat) case custom(Float, Float, Float, Float) public static var slide: ContainedViewLayoutTransitionCurve { @@ -22,6 +23,8 @@ public extension ContainedViewLayoutTransitionCurve { return listViewAnimationCurveEaseInOut(offset) case .spring: return listViewAnimationCurveSystem(offset) + case .customSpring: + return listViewAnimationCurveSystem(offset) case let .custom(c1x, c1y, c2x, c2y): return bezierPoint(CGFloat(c1x), CGFloat(c1y), CGFloat(c2x), CGFloat(c2y), offset) } @@ -37,6 +40,8 @@ public extension ContainedViewLayoutTransitionCurve { return CAMediaTimingFunctionName.easeInEaseOut.rawValue case .spring: return kCAMediaTimingFunctionSpring + case let .customSpring(damping, initialVelocity): + return "\(kCAMediaTimingFunctionCustomSpringPrefix)_\(damping)_\(initialVelocity)" case .custom: return CAMediaTimingFunctionName.easeInEaseOut.rawValue } @@ -50,6 +55,8 @@ public extension ContainedViewLayoutTransitionCurve { return nil case .spring: return nil + case .customSpring: + return nil case let .custom(p1, p2, p3, p4): return CAMediaTimingFunction(controlPoints: p1, p2, p3, p4) } @@ -64,6 +71,8 @@ public extension ContainedViewLayoutTransitionCurve { return [.curveEaseInOut] case .spring: return UIView.AnimationOptions(rawValue: 7 << 16) + case .customSpring: + return UIView.AnimationOptions(rawValue: 7 << 16) case .custom: return [] } diff --git a/submodules/Display/Source/ListView.swift b/submodules/Display/Source/ListView.swift index cc1525dffe..9599f748a4 100644 --- a/submodules/Display/Source/ListView.swift +++ b/submodules/Display/Source/ListView.swift @@ -3307,7 +3307,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture switch curve { case .linear: headerNode.layer.animateBoundsOriginYAdditive(from: offset, to: 0.0, duration: duration, mediaTimingFunction: CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)) - case .spring: + case .spring, .customSpring: transition.0.animateOffsetAdditive(node: headerNode, offset: offset) case let .custom(p1, p2, p3, p4): headerNode.layer.animateBoundsOriginYAdditive(from: offset, to: 0.0, duration: duration, mediaTimingFunction: CAMediaTimingFunction(controlPoints: p1, p2, p3, p4)) diff --git a/submodules/Display/Source/ListViewAnimation.swift b/submodules/Display/Source/ListViewAnimation.swift index eb936f51a4..482f466d3d 100644 --- a/submodules/Display/Source/ListViewAnimation.swift +++ b/submodules/Display/Source/ListViewAnimation.swift @@ -192,7 +192,7 @@ public func listViewAnimationDurationAndCurve(transition: ContainedViewLayoutTra return (animationDuration, .Default(duration: animationDuration)) case .easeInOut: return (animationDuration, .Default(duration: animationDuration)) - case .spring: + case .spring, .customSpring: return (animationDuration, .Spring(duration: animationDuration)) case let .custom(c1x, c1y, c2x, c2y): return (animationDuration, .Custom(duration: animationDuration, c1x, c1y, c2x, c2y)) diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift index 0fedd9de3e..584cd52c68 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift @@ -69,6 +69,42 @@ func decorationCornersImage(top: Bool, bottom: Bool, dark: Bool) -> UIImage? { })?.stretchableImage(withLeftCapWidth: 25, topCapHeight: 25) } +func decorationTopCornersImage(dark: Bool) -> UIImage? { + return generateImage(CGSize(width: 50.0, height: 110.0), rotatedContext: { (size, context) in + let bounds = CGRect(origin: CGPoint(), size: size) + context.setFillColor((dark ? fullscreenBackgroundColor : panelBackgroundColor).cgColor) + context.fill(bounds) + + context.setBlendMode(.clear) + + var corners: UIRectCorner = [] + corners.insert(.topLeft) + corners.insert(.topRight) + + let path = UIBezierPath(roundedRect: CGRect(x: 0.0, y: 60.0, width: 50.0, height: 50.0), byRoundingCorners: corners, cornerRadii: CGSize(width: 11.0, height: 11.0)) + context.addPath(path.cgPath) + context.fillPath() + })?.stretchableImage(withLeftCapWidth: 25, topCapHeight: 32) +} + +func decorationBottomCornersImage(dark: Bool) -> UIImage? { + return generateImage(CGSize(width: 50.0, height: 110.0), rotatedContext: { (size, context) in + let bounds = CGRect(origin: CGPoint(), size: size) + context.setFillColor((dark ? fullscreenBackgroundColor : panelBackgroundColor).cgColor) + context.fill(bounds) + + context.setBlendMode(.clear) + + var corners: UIRectCorner = [] + corners.insert(.bottomLeft) + corners.insert(.bottomRight) + + let path = UIBezierPath(roundedRect: CGRect(x: 0.0, y: 0.0, width: 50.0, height: 50.0), byRoundingCorners: corners, cornerRadii: CGSize(width: 11.0, height: 11.0)) + context.addPath(path.cgPath) + context.fillPath() + })?.resizableImage(withCapInsets: UIEdgeInsets(top: 25.0, left: 25.0, bottom: 0.0, right: 25.0), resizingMode: .stretch) +} + private func decorationBottomGradientImage(dark: Bool) -> UIImage? { return generateImage(CGSize(width: 24.0, height: bottomGradientHeight), rotatedContext: { size, context in let bounds = CGRect(origin: CGPoint(), size: size) @@ -79,9 +115,6 @@ private func decorationBottomGradientImage(dark: Bool) -> UIImage? { var locations: [CGFloat] = [1.0, 0.0] let gradient = CGGradient(colorsSpace: deviceColorSpace, colors: colorsArray, locations: &locations)! context.drawLinearGradient(gradient, start: CGPoint(), end: CGPoint(x: 0.0, y: size.height), options: CGGradientDrawingOptions()) -// -// context.setFillColor(UIColor.red.cgColor) -// context.fill(bounds) }) } @@ -697,7 +730,9 @@ public final class VoiceChatController: ViewController { private let dimNode: ASDisplayNode private let contentContainer: ASDisplayNode private let backgroundNode: ASDisplayNode + private let listContainer: ASDisplayNode private let listNode: ListView + private let fullscreenListContainer: ASDisplayNode private let fullscreenListNode: ListView private let topPanelNode: ASDisplayNode private let topPanelEdgeNode: ASDisplayNode @@ -705,7 +740,6 @@ public final class VoiceChatController: ViewController { private let optionsButton: VoiceChatHeaderButton private let closeButton: VoiceChatHeaderButton private let topCornersNode: ASImageNode - private let videoBottomCornersNode: ASImageNode fileprivate let bottomPanelNode: ASDisplayNode private let bottomGradientNode: ASDisplayNode private let bottomPanelBackgroundNode: ASDisplayNode @@ -827,7 +861,8 @@ public final class VoiceChatController: ViewController { private var videoNodes: [String: GroupVideoNode] = [:] private var wideVideoNodes = Set() private var videoOrder: [String] = [] - private var readyVideoNodes = Set() + private var readyVideoEndpointIds = Set() + private var timeoutedEndpointIds = Set() private var readyVideoDisposables = DisposableDict() private var endpointToPeerId: [String: PeerId] = [:] @@ -892,6 +927,8 @@ public final class VoiceChatController: ViewController { self.backgroundNode.backgroundColor = self.isScheduling ? panelBackgroundColor : secondaryPanelBackgroundColor self.backgroundNode.clipsToBounds = false + self.listContainer = ASDisplayNode() + self.listNode = ListView() self.listNode.alpha = self.isScheduling ? 0.0 : 1.0 self.listNode.isUserInteractionEnabled = !self.isScheduling @@ -902,10 +939,12 @@ public final class VoiceChatController: ViewController { return presentationData.strings.VoiceOver_ScrollStatus(row, count).0 } + self.fullscreenListContainer = ASDisplayNode() + self.fullscreenListContainer.isHidden = true + self.fullscreenListNode = ListView() self.fullscreenListNode.transform = CATransform3DMakeRotation(-CGFloat(CGFloat.pi / 2.0), 0.0, 0.0, 1.0) self.fullscreenListNode.clipsToBounds = true - self.fullscreenListNode.isHidden = true self.fullscreenListNode.accessibilityPageScrolledString = { row, count in return presentationData.strings.VoiceOver_ScrollStatus(row, count).0 } @@ -935,7 +974,8 @@ public final class VoiceChatController: ViewController { self.topCornersNode = ASImageNode() self.topCornersNode.displaysAsynchronously = false self.topCornersNode.displayWithoutProcessing = true - self.topCornersNode.image = decorationCornersImage(top: true, bottom: false, dark: false) + self.topCornersNode.image = decorationTopCornersImage(dark: false) + self.topCornersNode.isUserInteractionEnabled = false self.bottomPanelNode = ASDisplayNode() self.bottomPanelNode.clipsToBounds = false @@ -951,15 +991,9 @@ public final class VoiceChatController: ViewController { self.bottomCornersNode = ASImageNode() self.bottomCornersNode.displaysAsynchronously = false self.bottomCornersNode.displayWithoutProcessing = true - self.bottomCornersNode.image = decorationCornersImage(top: false, bottom: true, dark: false) + self.bottomCornersNode.image = decorationBottomCornersImage(dark: false) self.bottomCornersNode.isUserInteractionEnabled = false - self.videoBottomCornersNode = ASImageNode() - self.videoBottomCornersNode.displaysAsynchronously = false - self.videoBottomCornersNode.displayWithoutProcessing = true - self.videoBottomCornersNode.image = decorationCornersImage(top: false, bottom: true, dark: false) - self.videoBottomCornersNode.isUserInteractionEnabled = false - self.audioButton = CallControllerButtonItemNode() self.cameraButton = CallControllerButtonItemNode(largeButtonSize: sideButtonSize.width) self.switchCameraButton = CallControllerButtonItemNode() @@ -1655,7 +1689,7 @@ public final class VoiceChatController: ViewController { if ignore { return nil } - if !strongSelf.readyVideoNodes.contains(endpointId) { + if !strongSelf.readyVideoEndpointIds.contains(endpointId) { return nil } for (listEndpointId, videoNode) in strongSelf.videoNodes { @@ -1672,7 +1706,6 @@ public final class VoiceChatController: ViewController { self.topPanelNode.addSubnode(self.titleNode) self.topPanelNode.addSubnode(self.optionsButton) self.topPanelNode.addSubnode(self.closeButton) - self.topPanelNode.addSubnode(self.topCornersNode) self.bottomPanelNode.addSubnode(self.cameraButton) self.bottomPanelNode.addSubnode(self.audioButton) @@ -1685,11 +1718,13 @@ public final class VoiceChatController: ViewController { self.addSubnode(self.contentContainer) self.contentContainer.addSubnode(self.backgroundNode) - self.contentContainer.addSubnode(self.listNode) + self.contentContainer.addSubnode(self.listContainer) self.contentContainer.addSubnode(self.topPanelNode) - self.contentContainer.addSubnode(self.leftBorderNode) - self.contentContainer.addSubnode(self.rightBorderNode) - self.contentContainer.addSubnode(self.bottomCornersNode) + self.listContainer.addSubnode(self.listNode) + self.listContainer.addSubnode(self.leftBorderNode) + self.listContainer.addSubnode(self.rightBorderNode) + self.listContainer.addSubnode(self.bottomCornersNode) + self.listContainer.addSubnode(self.topCornersNode) self.contentContainer.addSubnode(self.bottomGradientNode) self.contentContainer.addSubnode(self.bottomPanelBackgroundNode) self.contentContainer.addSubnode(self.mainStageContainerNode) @@ -1697,7 +1732,8 @@ public final class VoiceChatController: ViewController { self.contentContainer.addSubnode(self.bottomPanelNode) self.contentContainer.addSubnode(self.timerNode) self.contentContainer.addSubnode(self.scheduleTextNode) - self.contentContainer.addSubnode(self.fullscreenListNode) + self.contentContainer.addSubnode(self.fullscreenListContainer) + self.fullscreenListContainer.addSubnode(self.fullscreenListNode) self.mainStageContainerNode.addSubnode(self.mainStageBackgroundNode) self.mainStageContainerNode.addSubnode(self.mainStageNode) @@ -1874,7 +1910,7 @@ public final class VoiceChatController: ViewController { } } - if case .fullscreen = strongSelf.displayMode, !strongSelf.mainStageNode.animating { + if case .fullscreen = strongSelf.displayMode, !strongSelf.mainStageNode.animating && !strongSelf.animatingExpansion { if let (peerId, _) = maxLevelWithVideo { if let (currentPeerId, _, timestamp) = strongSelf.currentDominantSpeaker { if CACurrentMediaTime() - timestamp > 2.5 && peerId != currentPeerId { @@ -2077,7 +2113,7 @@ public final class VoiceChatController: ViewController { self.mainStageNode.back = { [weak self] in if let strongSelf = self { strongSelf.currentForcedSpeaker = nil - strongSelf.updateDisplayMode(.modal(isExpanded: true, isFilled: true)) + strongSelf.updateDisplayMode(.modal(isExpanded: true, isFilled: true), fromPan: true) strongSelf.effectiveSpeaker = nil } } @@ -2168,6 +2204,35 @@ public final class VoiceChatController: ViewController { } } } + + if let (availableOutputs, currentOutput) = strongSelf.audioOutputState { + var currentOutputTitle = "" + for output in availableOutputs { + if output == currentOutput { + let title: String + switch output { + case .builtin: + title = UIDevice.current.model + case .speaker: + title = strongSelf.presentationData.strings.Call_AudioRouteSpeaker + case .headphones: + title = strongSelf.presentationData.strings.Call_AudioRouteHeadphones + case let .port(port): + title = port.name + } + currentOutputTitle = title + break + } + } + items.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.VoiceChat_ContextAudio, textLayout: .secondLineWithValue(currentOutputTitle), icon: { theme in + return generateTintedImage(image: UIImage(bundleImageName: "Call/Context Menu/Audio"), color: theme.actionSheet.primaryTextColor) + }, action: { c, _ in + guard let strongSelf = self else { + return + } + c.setItems(strongSelf.contextMenuAudioItems()) + }))) + } if canManageCall { items.append(.action(ContextMenuActionItem(text: strongSelf.presentationData.strings.VoiceChat_EditTitle, icon: { theme -> UIImage? in @@ -2347,6 +2412,47 @@ public final class VoiceChatController: ViewController { } } + private func contextMenuAudioItems() -> Signal<[ContextMenuItem], NoError> { + guard let (availableOutputs, currentOutput) = self.audioOutputState else { + return .single([]) + } + + var items: [ContextMenuItem] = [] + for output in availableOutputs { + let title: String + switch output { + case .builtin: + title = UIDevice.current.model + case .speaker: + title = self.presentationData.strings.Call_AudioRouteSpeaker + case .headphones: + title = self.presentationData.strings.Call_AudioRouteHeadphones + case let .port(port): + title = port.name + } + items.append(.action(ContextMenuActionItem(text: title, icon: { theme in + if output == currentOutput { + return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.actionSheet.primaryTextColor) + } else { + return nil + } + }, action: { [weak self] _, f in + f(.default) + self?.call.setCurrentAudioOutput(output) + }))) + } + items.append(.separator) + items.append(.action(ContextMenuActionItem(text: self.presentationData.strings.Common_Back, icon: { theme in + return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Back"), color: theme.actionSheet.primaryTextColor) + }, action: { [weak self] (c, _) in + guard let strongSelf = self else { + return + } + c.setItems(strongSelf.contextMenuMainItems()) + }))) + return .single(items) + } + private func contextMenuDisplayAsItems() -> Signal<[ContextMenuItem], NoError> { guard let myPeerId = self.callState?.myPeerId else { return .single([]) @@ -3221,7 +3327,6 @@ public final class VoiceChatController: ViewController { } } - private var bringVideoToBackOnCompletion = false private func updateDecorationsLayout(transition: ContainedViewLayoutTransition, completion: (() -> Void)? = nil) { guard let (layout, _) = self.validLayout else { return @@ -3341,14 +3446,17 @@ public final class VoiceChatController: ViewController { let leftBorderFrame: CGRect let rightBorderFrame: CGRect + let additionalInset: CGFloat = 60.0 if isLandscape { - leftBorderFrame = CGRect(origin: CGPoint(x: 0.0, y: topPanelFrame.maxY - 16.0), size: CGSize(width: (size.width - contentWidth) / 2.0 + sideInset, height: layout.size.height)) - rightBorderFrame = CGRect(origin: CGPoint(x: size.width - (size.width - contentWidth) / 2.0 - sideInset, y: topPanelFrame.maxY - 16.0), size: CGSize(width: layout.safeInsets.right + (size.width - contentWidth) / 2.0 + sideInset, height: layout.size.height)) + leftBorderFrame = CGRect(origin: CGPoint(x: 0.0, y: topPanelFrame.maxY - additionalInset), size: CGSize(width: (size.width - contentWidth) / 2.0 + sideInset, height: layout.size.height)) + rightBorderFrame = CGRect(origin: CGPoint(x: size.width - (size.width - contentWidth) / 2.0 - sideInset, y: topPanelFrame.maxY - additionalInset), size: CGSize(width: layout.safeInsets.right + (size.width - contentWidth) / 2.0 + sideInset, height: layout.size.height)) } else { - leftBorderFrame = CGRect(origin: CGPoint(x: 0.0, y: topPanelFrame.maxY - 16.0), size: CGSize(width: sideInset, height: layout.size.height)) - rightBorderFrame = CGRect(origin: CGPoint(x: size.width - sideInset, y: topPanelFrame.maxY - 16.0), size: CGSize(width: sideInset, height: layout.size.height)) + leftBorderFrame = CGRect(origin: CGPoint(x: -additionalInset, y: topPanelFrame.maxY - additionalInset), size: CGSize(width: sideInset + additionalInset, height: layout.size.height)) + rightBorderFrame = CGRect(origin: CGPoint(x: size.width - sideInset, y: topPanelFrame.maxY - additionalInset), size: CGSize(width: sideInset + additionalInset, height: layout.size.height)) } + let topCornersFrame = CGRect(x: sideInset + floorToScreenPixels((size.width - contentWidth) / 2.0), y: topPanelFrame.maxY - 60.0, width: contentWidth - sideInset * 2.0, height: 50.0 + 60.0) + let previousTopPanelFrame = self.topPanelNode.frame let previousBackgroundFrame = self.backgroundNode.frame let previousLeftBorderFrame = self.leftBorderNode.frame @@ -3359,6 +3467,8 @@ public final class VoiceChatController: ViewController { let positionDelta = CGPoint(x: 0.0, y: topPanelFrame.minY - previousTopPanelFrame.minY) transition.animateOffsetAdditive(layer: self.topPanelNode.layer, offset: positionDelta.y, completion: completion) + transition.updateFrame(node: self.topCornersNode, frame: topCornersFrame) + self.backgroundNode.frame = backgroundFrame let backgroundPositionDelta = CGPoint(x: 0.0, y: previousBackgroundFrame.minY - backgroundFrame.minY) transition.animatePositionAdditive(node: self.backgroundNode, offset: backgroundPositionDelta) @@ -3379,7 +3489,7 @@ public final class VoiceChatController: ViewController { let listMaxY = listTopInset + listSize.height let bottomOffset = min(0.0, bottomEdge - listMaxY) + layout.size.height - bottomPanelHeight - let bottomCornersFrame = CGRect(origin: CGPoint(x: sideInset + floorToScreenPixels((size.width - contentWidth) / 2.0), y: -50.0 + bottomOffset + bottomGradientHeight), size: CGSize(width: contentWidth - sideInset * 2.0, height: 50.0)) + let bottomCornersFrame = CGRect(origin: CGPoint(x: sideInset + floorToScreenPixels((size.width - contentWidth) / 2.0), y: -50.0 + bottomOffset + bottomGradientHeight), size: CGSize(width: contentWidth - sideInset * 2.0, height: 50.0 + 40.0)) let previousBottomCornersFrame = self.bottomCornersNode.frame if !bottomCornersFrame.equalTo(previousBottomCornersFrame) { self.bottomCornersNode.frame = bottomCornersFrame @@ -3453,14 +3563,14 @@ public final class VoiceChatController: ViewController { self.decorationsAreDark = isFullscreen if previousDark != self.decorationsAreDark { if let snapshotView = self.topCornersNode.view.snapshotContentTree() { - snapshotView.frame = self.topCornersNode.frame - self.topPanelNode.view.addSubview(snapshotView) + snapshotView.frame = self.topCornersNode.bounds + self.topCornersNode.view.addSubview(snapshotView) snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, timingFunction: CAMediaTimingFunctionName.linear.rawValue, removeOnCompletion: false, completion: { [weak snapshotView] _ in snapshotView?.removeFromSuperview() }) } - self.topCornersNode.image = decorationCornersImage(top: true, bottom: false, dark: isFullscreen) + self.topCornersNode.image = decorationTopCornersImage(dark: isFullscreen) if let snapshotView = self.bottomCornersNode.view.snapshotContentTree() { snapshotView.frame = self.bottomCornersNode.bounds @@ -3470,8 +3580,7 @@ public final class VoiceChatController: ViewController { snapshotView?.removeFromSuperview() }) } - self.bottomCornersNode.image = decorationCornersImage(top: false, bottom: true, dark: isFullscreen) - + self.bottomCornersNode.image = decorationBottomCornersImage(dark: isFullscreen) if let gridNode = gridNode { if let snapshotView = gridNode.cornersNode.view.snapshotContentTree() { @@ -3492,10 +3601,9 @@ public final class VoiceChatController: ViewController { } self.closeButton.setContent(.image(closeButtonImage(dark: isFullscreen)), animated: transition.isAnimated) + self.optionsButton.setContent(.more(optionsCircleImage(dark: isFullscreen)), animated: transition.isAnimated) } - - self.optionsButton.setContent(.more(optionsCircleImage(dark: isFullscreen)), animated: transition.isAnimated) - + self.updateTitle(transition: transition) } @@ -3638,21 +3746,17 @@ public final class VoiceChatController: ViewController { transition.updateTransformScale(node: self.cameraButton, scale: hasCameraButton ? 1.0 : 0.0) - transition.updateAlpha(node: self.audioButton, alpha: hasVideo ? 0.0 : 1.0) - transition.updateTransformScale(node: self.audioButton, scale: hasVideo ? 0.0 : 1.0) + transition.updateAlpha(node: self.audioButton, alpha: hasCameraButton ? 0.0 : 1.0) + transition.updateTransformScale(node: self.audioButton, scale: hasCameraButton ? 0.0 : 1.0) self.audioButton.update(size: audioButtonSize, content: CallControllerButtonItemNode.Content(appearance: soundAppearance, image: soundImage, isEnabled: isSoundEnabled), text: soundTitle, transition: transition) self.audioButton.isUserInteractionEnabled = isSoundEnabled self.leaveButton.update(size: sideButtonSize, content: CallControllerButtonItemNode.Content(appearance: .color(.custom(0xff3b30, 0.3)), image: .cancel), text: self.presentationData.strings.VoiceChat_Leave, transition: .immediate) - transition.updateAlpha(node: self.cameraButton.textNode, alpha: hasCameraButton ? buttonsTitleAlpha : 0.0) + transition.updateAlpha(node: self.cameraButton.textNode, alpha: buttonsTitleAlpha) transition.updateAlpha(node: self.switchCameraButton.textNode, alpha: buttonsTitleAlpha) - var audioButtonTransition = transition - if hasCameraButton, transition.isAnimated { - audioButtonTransition = .animated(duration: 0.15, curve: .easeInOut) - } - transition.updateAlpha(node: self.audioButton.textNode, alpha: hasCameraButton ? 0.0 : buttonsTitleAlpha) + transition.updateAlpha(node: self.audioButton.textNode, alpha: buttonsTitleAlpha) transition.updateAlpha(node: self.leaveButton.textNode, alpha: buttonsTitleAlpha) } @@ -3727,7 +3831,6 @@ public final class VoiceChatController: ViewController { let bottomPanelHeight = self.effectiveBottomAreaHeight + layout.intrinsicInsets.bottom var listTopInset = layoutTopInset + topPanelHeight - let topCornersY = topPanelHeight if isLandscape { listTopInset = topPanelHeight } @@ -3746,6 +3849,7 @@ public final class VoiceChatController: ViewController { topInset = listSize.height - 46.0 - floor(56.0 * 3.5) - bottomGradientHeight } + transition.updateFrameAsPositionAndBounds(node: self.listContainer, frame: CGRect(origin: CGPoint(), size: size)) transition.updateFrame(node: self.listNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - contentWidth) / 2.0), y: listTopInset + topInset), size: listSize)) listInsets.bottom = bottomGradientHeight @@ -3759,6 +3863,7 @@ public final class VoiceChatController: ViewController { let fullscreenListTransform: CATransform3D let fullscreenListInset: CGFloat = 14.0 let fullscreenListUpdateSizeAndInsets: ListViewUpdateSizeAndInsets + let fullscreenListContainerFrame: CGRect if isLandscape { fullscreenListWidth = layout.size.height fullscreenListPosition = CGPoint( @@ -3767,17 +3872,23 @@ public final class VoiceChatController: ViewController { ) fullscreenListTransform = CATransform3DIdentity fullscreenListUpdateSizeAndInsets = ListViewUpdateSizeAndInsets(size: CGSize(width: fullscreenListHeight, height: layout.size.height), insets: UIEdgeInsets(top: fullscreenListInset, left: 0.0, bottom: fullscreenListInset, right: 0.0), duration: duration, curve: curve) + fullscreenListContainerFrame = CGRect(x: layout.size.width - min(self.effectiveBottomAreaHeight, fullscreenBottomAreaHeight) - layout.safeInsets.right - fullscreenListHeight, y: layout.size.height / 2.0, width: layout.size.width, height: fullscreenListHeight) } else { fullscreenListWidth = layout.size.width fullscreenListPosition = CGPoint( - x: layout.safeInsets.left + layout.size.width / 2.0, + x: layout.size.width / 2.0, y: layout.size.height - min(bottomPanelHeight, fullscreenBottomAreaHeight + layout.intrinsicInsets.bottom) - fullscreenListHeight / 2.0 + 4.0 ) fullscreenListTransform = CATransform3DMakeRotation(-CGFloat(CGFloat.pi / 2.0), 0.0, 0.0, 1.0) fullscreenListUpdateSizeAndInsets = ListViewUpdateSizeAndInsets(size: CGSize(width: fullscreenListHeight, height: layout.size.width), insets: UIEdgeInsets(top: fullscreenListInset + layout.safeInsets.left, left: 0.0, bottom: fullscreenListInset + layout.safeInsets.left, right: 0.0), duration: duration, curve: curve) + fullscreenListContainerFrame = CGRect(x: 0.0, y: layout.size.height - min(bottomPanelHeight, fullscreenBottomAreaHeight + layout.intrinsicInsets.bottom) - fullscreenListHeight + 4.0, width: layout.size.width, height: fullscreenListHeight) } + + transition.updateFrame(node: self.fullscreenListContainer, frame: fullscreenListContainerFrame) + self.fullscreenListNode.bounds = CGRect(x: 0.0, y: 0.0, width: fullscreenListHeight, height: fullscreenListWidth) - transition.updatePosition(node: self.fullscreenListNode, position: fullscreenListPosition) + transition.updatePosition(node: self.fullscreenListNode, position: CGPoint(x: fullscreenListContainerFrame.width / 2.0, y: fullscreenListContainerFrame.height / 2.0)) + self.fullscreenListNode.transform = fullscreenListTransform self.fullscreenListNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: nil, updateSizeAndInsets: fullscreenListUpdateSizeAndInsets, stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in }) @@ -3789,9 +3900,7 @@ public final class VoiceChatController: ViewController { } childrenLayout.intrinsicInsets = childrenInsets self.controller?.presentationContext.containerLayoutUpdated(childrenLayout, transition: transition) - - transition.updateFrame(node: self.topCornersNode, frame: CGRect(origin: CGPoint(x: sideInset + floorToScreenPixels((size.width - contentWidth) / 2.0), y: topCornersY), size: CGSize(width: contentWidth - sideInset * 2.0, height: 50.0))) - + var bottomPanelFrame = CGRect(origin: CGPoint(x: 0.0, y: layout.size.height - bottomPanelHeight), size: CGSize(width: size.width, height: bottomPanelHeight)) let bottomPanelCoverHeight = bottomAreaHeight + layout.intrinsicInsets.bottom if isLandscape { @@ -3926,7 +4035,6 @@ public final class VoiceChatController: ViewController { 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) var hasCameraButton = self.callState?.isVideoEnabled ?? false - switch actionButtonState { case let .active(state): switch state { @@ -3942,6 +4050,7 @@ public final class VoiceChatController: ViewController { case .scheduled, .button: hasCameraButton = false } + let hasVideo = hasCameraButton && self.call.hasVideo let upperButtonDistance: CGFloat = 12.0 let firstButtonFrame: CGRect @@ -3950,7 +4059,7 @@ public final class VoiceChatController: ViewController { let forthButtonFrame: CGRect let leftButtonFrame: CGRect - if self.isScheduled || !hasCameraButton { + if self.isScheduled || !hasVideo { leftButtonFrame = CGRect(origin: CGPoint(x: sideButtonOrigin, y: floor((self.effectiveBottomAreaHeight - sideButtonSize.height) / 2.0)), size: sideButtonSize) } else { leftButtonFrame = CGRect(origin: CGPoint(x: sideButtonOrigin, y: floor((self.effectiveBottomAreaHeight - sideButtonSize.height - upperButtonDistance - cameraButtonSize.height) / 2.0) + upperButtonDistance + cameraButtonSize.height), size: sideButtonSize) @@ -3962,7 +4071,7 @@ public final class VoiceChatController: ViewController { if isLandscape { let sideInset: CGFloat let buttonsCount: Int - if hasCameraButton { + if hasVideo { sideInset = 26.0 buttonsCount = 4 } else { @@ -3994,7 +4103,7 @@ public final class VoiceChatController: ViewController { if isLandscape { let sideInset: CGFloat let buttonsCount: Int - if hasCameraButton { + if hasVideo { sideInset = 26.0 buttonsCount = 4 } else { @@ -4007,7 +4116,7 @@ public final class VoiceChatController: ViewController { let thirdButtonPreFrame = CGRect(origin: CGPoint(x: x, y: sideInset + sideButtonSize.height + spacing), size: sideButtonSize) thirdButtonFrame = CGRect(origin: CGPoint(x: floor(thirdButtonPreFrame.midX - centralButtonSize.width / 2.0), y: floor(thirdButtonPreFrame.midY - centralButtonSize.height / 2.0)), size: centralButtonSize) secondButtonFrame = CGRect(origin: CGPoint(x: x, y: thirdButtonPreFrame.maxY + spacing), size: sideButtonSize) - if hasCameraButton { + if hasVideo { firstButtonFrame = CGRect(origin: CGPoint(x: x, y: layout.size.height - sideInset - sideButtonSize.height), size: sideButtonSize) } else { firstButtonFrame = secondButtonFrame @@ -4015,7 +4124,7 @@ public final class VoiceChatController: ViewController { } else { let sideInset: CGFloat let buttonsCount: Int - if hasCameraButton { + if hasVideo { sideInset = 26.0 buttonsCount = 4 } else { @@ -4024,7 +4133,7 @@ public final class VoiceChatController: ViewController { } let spacing = floor((layout.size.width - sideInset * 2.0 - sideButtonSize.width * CGFloat(buttonsCount)) / (CGFloat(buttonsCount - 1))) let y = controlsHidden ? self.effectiveBottomAreaHeight + layout.intrinsicInsets.bottom + 30.0: floor((self.effectiveBottomAreaHeight - sideButtonSize.height) / 2.0) - if hasCameraButton { + if hasVideo { firstButtonFrame = CGRect(origin: CGPoint(x: sideInset, y: y), size: sideButtonSize) secondButtonFrame = CGRect(origin: CGPoint(x: firstButtonFrame.maxX + spacing, y: y), size: sideButtonSize) } else { @@ -4063,15 +4172,9 @@ public final class VoiceChatController: ViewController { transition.updateFrameAsPositionAndBounds(node: self.switchCameraButton, frame: firstButtonFrame) if !self.animatingButtonsSwap || transition.isAnimated { - if hasCameraButton { - transition.updateFrameAsPositionAndBounds(node: self.audioButton, frame: firstButtonFrame, completion: { [weak self] _ in - self?.animatingButtonsSwap = false - }) - } else { - transition.updateFrameAsPositionAndBounds(node: self.audioButton, frame: secondButtonFrame, completion: { [weak self] _ in - self?.animatingButtonsSwap = false - }) - } + transition.updateFrameAsPositionAndBounds(node: self.audioButton, frame: secondButtonFrame, completion: { [weak self] _ in + self?.animatingButtonsSwap = false + }) transition.updateFrameAsPositionAndBounds(node: self.cameraButton, frame: secondButtonFrame) } transition.updateFrameAsPositionAndBounds(node: self.leaveButton, frame: forthButtonFrame) @@ -4374,11 +4477,15 @@ public final class VoiceChatController: ViewController { var isTile = false if let interaction = self.itemInteraction { - if let videoEndpointId = member.presentationEndpointId { + if let videoEndpointId = member.presentationEndpointId, !self.timeoutedEndpointIds.contains(videoEndpointId) { if !self.videoOrder.contains(videoEndpointId) { - self.videoOrder.append(videoEndpointId) + if peerEntry.isMyPeer { + self.videoOrder.insert(videoEndpointId, at: 0) + } else { + self.videoOrder.append(videoEndpointId) + } } - if let tileItem = ListEntry.peer(peerEntry, 0).tileItem(context: self.context, presentationData: self.presentationData, interaction: interaction, videoEndpointId: videoEndpointId, videoReady: self.readyVideoNodes.contains(videoEndpointId)) { + if let tileItem = ListEntry.peer(peerEntry, 0).tileItem(context: self.context, presentationData: self.presentationData, interaction: interaction, videoEndpointId: videoEndpointId, videoReady: self.readyVideoEndpointIds.contains(videoEndpointId)) { isTile = true tileByVideoEndpoint[videoEndpointId] = tileItem } @@ -4386,11 +4493,15 @@ public final class VoiceChatController: ViewController { latestWideVideo = videoEndpointId } } - if let videoEndpointId = member.videoEndpointId { + if let videoEndpointId = member.videoEndpointId, !self.timeoutedEndpointIds.contains(videoEndpointId) { if !self.videoOrder.contains(videoEndpointId) { - self.videoOrder.append(videoEndpointId) + if peerEntry.isMyPeer { + self.videoOrder.insert(videoEndpointId, at: 0) + } else { + self.videoOrder.append(videoEndpointId) + } } - if let tileItem = ListEntry.peer(peerEntry, 0).tileItem(context: self.context, presentationData: self.presentationData, interaction: interaction, videoEndpointId: videoEndpointId, videoReady: self.readyVideoNodes.contains(videoEndpointId)) { + if let tileItem = ListEntry.peer(peerEntry, 0).tileItem(context: self.context, presentationData: self.presentationData, interaction: interaction, videoEndpointId: videoEndpointId, videoReady: self.readyVideoEndpointIds.contains(videoEndpointId)) { isTile = true tileByVideoEndpoint[videoEndpointId] = tileItem } @@ -4486,7 +4597,7 @@ public final class VoiceChatController: ViewController { self.requestedVideoChannels = requestedVideoChannels - guard self.didSetDataReady && !self.isPanning else { + guard self.didSetDataReady && !self.isPanning && !self.animatingExpansion else { return } @@ -4598,6 +4709,7 @@ public final class VoiceChatController: ViewController { for channel in channels { validSources.insert(channel.endpointId) + if !self.requestedVideoSources.contains(channel.endpointId) { self.requestedVideoSources.insert(channel.endpointId) self.call.makeIncomingVideoView(endpointId: channel.endpointId, requestClone: true, completion: { [weak self] videoView, backdropVideoView in @@ -4610,31 +4722,42 @@ public final class VoiceChatController: ViewController { strongSelf.readyVideoDisposables.set((videoNode.ready |> filter { $0 } |> take(1) + |> timeout(10.0, queue: Queue.mainQueue(), alternate: .single(false)) |> deliverOnMainQueue - ).start(next: { [weak self, weak videoNode] _ in + ).start(next: { [weak self, weak videoNode] ready in if let strongSelf = self, let videoNode = videoNode { - print("video ready \(channel.endpointId)") Queue.mainQueue().after(0.1) { - strongSelf.readyVideoNodes.insert(channel.endpointId) - if videoNode.aspectRatio <= 0.77 { - strongSelf.wideVideoNodes.insert(channel.endpointId) - } - strongSelf.updateMembers() + if ready { + strongSelf.readyVideoEndpointIds.insert(channel.endpointId) + strongSelf.timeoutedEndpointIds.remove(channel.endpointId) + if videoNode.aspectRatio <= 0.77 { + strongSelf.wideVideoNodes.insert(channel.endpointId) + } else { + strongSelf.wideVideoNodes.remove(channel.endpointId) + } + strongSelf.updateMembers() - if let interaction = strongSelf.itemInteraction { - loop: for i in 0 ..< strongSelf.currentFullscreenEntries.count { - let entry = strongSelf.currentFullscreenEntries[i] - switch entry { - case let .peer(peerEntry, _): - if peerEntry.effectiveVideoEndpointId == channel.endpointId { - let presentationData = strongSelf.presentationData.withUpdated(theme: strongSelf.darkTheme) - strongSelf.fullscreenListNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [ListViewUpdateItem(index: i, previousIndex: i, item: entry.fullscreenItem(context: strongSelf.context, presentationData: presentationData, interaction: interaction), directionHint: nil)], options: [.Synchronous], updateOpaqueState: nil) - break loop + if let interaction = strongSelf.itemInteraction { + loop: for i in 0 ..< strongSelf.currentFullscreenEntries.count { + let entry = strongSelf.currentFullscreenEntries[i] + switch entry { + case let .peer(peerEntry, _): + if peerEntry.effectiveVideoEndpointId == channel.endpointId { + let presentationData = strongSelf.presentationData.withUpdated(theme: strongSelf.darkTheme) + strongSelf.fullscreenListNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [ListViewUpdateItem(index: i, previousIndex: i, item: entry.fullscreenItem(context: strongSelf.context, presentationData: presentationData, interaction: interaction), directionHint: nil)], options: [.Synchronous], updateOpaqueState: nil) + break loop + } + default: + break } - default: - break } } + } else { + strongSelf.timeoutedEndpointIds.insert(channel.endpointId) + strongSelf.readyVideoEndpointIds.remove(channel.endpointId) + strongSelf.wideVideoNodes.remove(channel.endpointId) + + strongSelf.updateMembers() } } } @@ -4663,7 +4786,7 @@ public final class VoiceChatController: ViewController { if !validSources.contains(videoEndpointId) { self.videoNodes[videoEndpointId] = nil self.videoOrder.removeAll(where: { $0 == videoEndpointId }) - self.readyVideoNodes.remove(videoEndpointId) + self.readyVideoEndpointIds.remove(videoEndpointId) self.readyVideoDisposables.set(nil, forKey: videoEndpointId) } } @@ -4730,10 +4853,7 @@ public final class VoiceChatController: ViewController { if gestureRecognizer is UILongPressGestureRecognizer { return !self.isScheduling } else if gestureRecognizer is DirectionalPanGestureRecognizer { - if let (layout, _) = self.validLayout, layout.size.width > layout.size.height, case .compact = layout.metrics.widthClass { - return false - } - if self.isLandscape { + if self.mainStageNode.animating { return false } @@ -4779,8 +4899,12 @@ public final class VoiceChatController: ViewController { self.fullscreenListNode.alpha = 0.0 self.fullscreenListNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.1, completion: { [weak self] finished in self?.attachTileVideos() + + self?.fullscreenListContainer.subnodeTransform = CATransform3DIdentity }) + self.listContainer.transform = CATransform3DMakeScale(0.86, 0.86, 1.0) + self.contentContainer.insertSubnode(self.mainStageContainerNode, aboveSubnode: self.bottomPanelNode) } case .changed: @@ -4838,6 +4962,8 @@ public final class VoiceChatController: ViewController { var backgroundFrame = self.mainStageNode.frame backgroundFrame.origin.y += -translation self.mainStageBackgroundNode.frame = backgroundFrame + + self.fullscreenListContainer.subnodeTransform = CATransform3DMakeTranslation(0.0, translation, 0.0) } if let (layout, navigationHeight) = self.validLayout { @@ -4882,6 +5008,7 @@ public final class VoiceChatController: ViewController { if case .fullscreen = self.displayMode { self.panGestureArguments = nil + self.fullscreenListContainer.subnodeTransform = CATransform3DIdentity if abs(translation.y) > 100.0 || abs(velocity.y) > 300.0 { self.currentForcedSpeaker = nil self.updateDisplayMode(.modal(isExpanded: true, isFilled: true), fromPan: true) @@ -4892,7 +5019,7 @@ public final class VoiceChatController: ViewController { self.mainStageBackgroundNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.15, completion: { [weak self] _ in self?.attachFullscreenVideos() }) - self.mainStageNode.setControlsHidden(false, animated: true) + self.mainStageNode.setControlsHidden(false, animated: true, delay: 0.15) self.fullscreenListNode.alpha = 1.0 self.fullscreenListNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2, delay: 0.15) @@ -4903,6 +5030,7 @@ public final class VoiceChatController: ViewController { self.mainStageContainerNode.bounds = bounds self.mainStageContainerNode.layer.animateBounds(from: previousBounds, to: self.mainStageContainerNode.bounds, duration: 0.2, timingFunction: kCAMediaTimingFunctionSpring, completion: { [weak self] _ in if let strongSelf = self { + strongSelf.listContainer.transform = CATransform3DIdentity strongSelf.contentContainer.insertSubnode(strongSelf.mainStageContainerNode, belowSubnode: strongSelf.transitionContainerNode) strongSelf.updateMembers() } @@ -5003,12 +5131,13 @@ public final class VoiceChatController: ViewController { }) if case .fullscreen = self.displayMode { + self.fullscreenListContainer.subnodeTransform = CATransform3DIdentity self.isPanning = false self.mainStageBackgroundNode.alpha = 1.0 self.mainStageBackgroundNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.15, completion: { [weak self] _ in self?.attachFullscreenVideos() }) - self.mainStageNode.setControlsHidden(false, animated: true) + self.mainStageNode.setControlsHidden(false, animated: true, delay: 0.15) self.fullscreenListNode.alpha = 1.0 self.fullscreenListNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2, delay: 0.15) @@ -5021,6 +5150,8 @@ public final class VoiceChatController: ViewController { if let strongSelf = self { strongSelf.contentContainer.insertSubnode(strongSelf.mainStageContainerNode, belowSubnode: strongSelf.transitionContainerNode) strongSelf.updateMembers() + + strongSelf.listContainer.transform = CATransform3DIdentity } }) } @@ -5420,7 +5551,7 @@ public final class VoiceChatController: ViewController { } private func updateDisplayMode(_ displayMode: DisplayMode, fromPan: Bool = false) { - guard !self.animatingExpansion else { + guard !self.animatingExpansion && !self.mainStageNode.animating else { return } self.updateMembers() @@ -5441,42 +5572,16 @@ public final class VoiceChatController: ViewController { let transition: ContainedViewLayoutTransition = .animated(duration: 0.55, curve: .spring) if case .modal = previousDisplayMode, case .fullscreen = self.displayMode { - self.fullscreenListNode.isHidden = false - self.fullscreenListNode.alpha = 1.0 - self.updateDecorationsLayout(transition: .immediate) - var minimalVisiblePeerid: (PeerId, CGPoint)? var verticalItemNodes: [String: ASDisplayNode] = [:] self.listNode.forEachItemNode { itemNode in if let itemNode = itemNode as? VoiceChatTilesGridItemNode { for tileNode in itemNode.tileNodes { - let convertedFrame = tileNode.view.convert(tileNode.bounds, to: self.transitionContainerNode.view) if let item = tileNode.item { - if let (_, point) = minimalVisiblePeerid { - if convertedFrame.minY >= 0.0 && (convertedFrame.minY < point.y || (convertedFrame.minY == point.y && convertedFrame.minX < point.x)) { - minimalVisiblePeerid = (item.peer.id, convertedFrame.origin) - } - } else { - if convertedFrame.minY >= 0.0 { - minimalVisiblePeerid = (item.peer.id, convertedFrame.origin) - } - } verticalItemNodes[String(item.peer.id.toInt64()) + "_" + item.videoEndpointId] = tileNode } } - } else if let itemNode = itemNode as? VoiceChatParticipantItemNode, let item = itemNode.item { - let convertedFrame = itemNode.view.convert(itemNode.bounds, to: self.transitionContainerNode.view) - if let (_, point) = minimalVisiblePeerid { - if convertedFrame.minY >= 0.0 && convertedFrame.minY < point.y { - minimalVisiblePeerid = (item.peer.id, convertedFrame.origin) - } - } else { - if convertedFrame.minY >= 0.0 { - minimalVisiblePeerid = (item.peer.id, convertedFrame.origin) - } - } - verticalItemNodes[String(item.peer.id.toInt64()) + "_"] = itemNode } } @@ -5484,26 +5589,35 @@ public final class VoiceChatController: ViewController { let completion = { let effectiveSpeakerPeerId = self.effectiveSpeaker?.0 + + self.fullscreenListContainer.isHidden = false + self.fullscreenListNode.alpha = 0.0 + + let completion = { + self.attachFullscreenVideos() + + self.fullscreenListNode.alpha = 1.0 + self.fullscreenListNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.15) + } if let effectiveSpeakerPeerId = effectiveSpeakerPeerId, let otherItemNode = verticalItemNodes[String(effectiveSpeakerPeerId.toInt64()) + "_" + (self.effectiveSpeaker?.1 ?? "")] { self.mainStageNode.alpha = 0.0 - Queue.mainQueue().after(0.05) { - self.mainStageNode.animateTransitionIn(from: otherItemNode, transition: transition) - self.mainStageNode.alpha = 1.0 - - self.mainStageBackgroundNode.alpha = 1.0 - self.mainStageBackgroundNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) - } + let transitionStartPosition = otherItemNode.view.convert(CGPoint(x: otherItemNode.frame.width / 2.0, y: otherItemNode.frame.height), to: self.fullscreenListContainer.view.superview) + self.fullscreenListContainer.layer.animatePosition(from: transitionStartPosition, to: self.fullscreenListContainer.position, duration: 0.55, timingFunction: kCAMediaTimingFunctionSpring) + + self.mainStageNode.animateTransitionIn(from: otherItemNode, transition: transition) + self.mainStageNode.alpha = 1.0 + + self.mainStageBackgroundNode.alpha = 1.0 + self.mainStageBackgroundNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.13, completion: { _ in + completion() + }) + } else { + completion() } - Queue.mainQueue().after(0.1) { - self.fullscreenListNode.forEachItemNode { itemNode in - if let itemNode = itemNode as? VoiceChatFullscreenParticipantItemNode, let item = itemNode.item { - itemNode.animateTransitionIn(from: verticalItemNodes[String(item.peer.id.toInt64()) + "_" + (item.videoEndpointId ?? "")], containerNode: self.transitionContainerNode, transition: transition, animate: item.peer.id != effectiveSpeakerPeerId) - } - } - } + self.listContainer.layer.animateScale(from: 1.0, to: 0.86, duration: 0.55, timingFunction: kCAMediaTimingFunctionSpring) if self.isLandscape { self.transitionMaskTopFillLayer.opacity = 1.0 @@ -5564,32 +5678,36 @@ public final class VoiceChatController: ViewController { self.transitionContainerNode.addSubnode(self.mainStageNode) + self.listContainer.transform = CATransform3DIdentity + self.listNode.forEachItemNode { itemNode in if let itemNode = itemNode as? VoiceChatTilesGridItemNode { for tileNode in itemNode.tileNodes { if let item = tileNode.item { - if let otherItemNode = fullscreenItemNodes[String(item.peer.id.toInt64()) + "_" + item.videoEndpointId] { - if !fromPan || item.peer.id == effectiveSpeakerPeerId { - tileNode.animateTransitionIn(from: otherItemNode, containerNode: self.transitionContainerNode, transition: transition, animate: item.peer.id != effectiveSpeakerPeerId) - } - } - if item.peer.id == effectiveSpeakerPeerId, item.videoEndpointId == self.effectiveSpeaker?.1 { targetTileNode = tileNode } } } - } else if let itemNode = itemNode as? VoiceChatParticipantItemNode, let item = itemNode.item, let otherItemNode = fullscreenItemNodes[String(item.peer.id.toInt64()) + "_"] { - if !fromPan { - itemNode.animateTransitionIn(from: otherItemNode, containerNode: self.transitionContainerNode, transition: transition) - } } } - + let transitionOffset = -self.mainStageContainerNode.bounds.minY if transitionOffset.isZero { - self.mainStageBackgroundNode.alpha = 0.0 - self.mainStageBackgroundNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2) + if let targetTileNode = targetTileNode { + let transitionTargetPosition = targetTileNode.view.convert(CGPoint(x: targetTileNode.frame.width / 2.0, y: targetTileNode.frame.height), to: self.fullscreenListContainer.view.superview) + self.fullscreenListContainer.layer.animatePosition(from: self.fullscreenListContainer.position, to: transitionTargetPosition, duration: 0.55, timingFunction: kCAMediaTimingFunctionSpring) + } + + self.fullscreenListNode.alpha = 0.0 + self.fullscreenListNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.1, completion: { [weak self] _ in + self?.fullscreenListContainer.isHidden = true + self?.fullscreenListNode.alpha = 1.0 + self?.attachTileVideos() + + self?.mainStageBackgroundNode.alpha = 0.0 + self?.mainStageBackgroundNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.25) + }) } self.mainStageNode.animateTransitionOut(to: targetTileNode, offset: transitionOffset, transition: transition, completion: { [weak self] in guard let strongSelf = self else { @@ -5598,7 +5716,7 @@ public final class VoiceChatController: ViewController { strongSelf.effectiveSpeaker = nil strongSelf.mainStageNode.update(peer: nil, waitForFullSize: false) strongSelf.mainStageNode.setControlsHidden(false, animated: false) - strongSelf.fullscreenListNode.isHidden = true + strongSelf.fullscreenListContainer.isHidden = true strongSelf.mainStageContainerNode.isHidden = true strongSelf.mainStageContainerNode.addSubnode(strongSelf.mainStageNode) @@ -5610,7 +5728,9 @@ public final class VoiceChatController: ViewController { strongSelf.isPanning = false }) - + + self.listContainer.layer.animateScale(from: 0.86, to: 1.0, duration: 0.55, timingFunction: kCAMediaTimingFunctionSpring) + self.transitionMaskTopFillLayer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15) if !transitionOffset.isZero { self.transitionMaskBottomFillLayer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3) diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift index a2a0c46e3e..8acabbefd4 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatMainStageNode.swift @@ -154,8 +154,6 @@ final class VoiceChatMainStageNode: ASDisplayNode { self.speakingContainerNode = ASDisplayNode() self.speakingContainerNode.alpha = 0.0 - self.speakingContainerNode.cornerRadius = 19.0 - self.speakingContainerNode.clipsToBounds = true self.speakingAvatarNode = AvatarNode(font: avatarPlaceholderFont(size: 14.0)) self.speakingTitleNode = ImmediateTextNode() @@ -242,6 +240,11 @@ final class VoiceChatMainStageNode: ASDisplayNode { } let speakingEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) + speakingEffectView.layer.cornerRadius = 19.0 + speakingEffectView.clipsToBounds = true + if #available(iOS 13.0, *) { + speakingEffectView.layer.cornerCurve = .continuous + } self.speakingContainerNode.view.insertSubview(speakingEffectView, at: 0) self.speakingEffectView = speakingEffectView @@ -292,8 +295,13 @@ final class VoiceChatMainStageNode: ASDisplayNode { return } self.appeared = true + + self.topFadeNode.alpha = 0.0 + self.titleNode.alpha = 0.0 + self.microphoneNode.alpha = 0.0 + self.headerNode.alpha = 0.0 - let alphaTransition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut) + let alphaTransition = ContainedViewLayoutTransition.animated(duration: 0.3, curve: .easeInOut) alphaTransition.updateAlpha(node: self.backgroundNode, alpha: 1.0) alphaTransition.updateAlpha(node: self.topFadeNode, alpha: 1.0) alphaTransition.updateAlpha(node: self.titleNode, alpha: 1.0) @@ -333,7 +341,7 @@ final class VoiceChatMainStageNode: ASDisplayNode { self.appeared = false - let alphaTransition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut) + let alphaTransition = ContainedViewLayoutTransition.animated(duration: 0.3, curve: .easeInOut) if offset.isZero { alphaTransition.updateAlpha(node: self.backgroundNode, alpha: 0.0) } else { @@ -434,7 +442,7 @@ final class VoiceChatMainStageNode: ASDisplayNode { strongSelf.speakingContainerNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.3) strongSelf.speakingContainerNode.layer.animateScale(from: 0.01, to: 1.0, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring) - let blobFrame = strongSelf.speakingAvatarNode.frame.insetBy(dx: -14.0, dy: -14.0) + let blobFrame = strongSelf.speakingAvatarNode.frame.insetBy(dx: -12.0, dy: -12.0) strongSelf.speakingAudioLevelDisposable.set((getAudioLevel(peerId) |> deliverOnMainQueue).start(next: { [weak self] value in guard let strongSelf = self else { @@ -751,15 +759,15 @@ final class VoiceChatMainStageNode: ASDisplayNode { } } - func setControlsHidden(_ hidden: Bool, animated: Bool) { + func setControlsHidden(_ hidden: Bool, animated: Bool, delay: Double = 0.0) { let transition: ContainedViewLayoutTransition = animated ? .animated(duration: 0.2, curve: .easeInOut) : .immediate - transition.updateAlpha(node: self.headerNode, alpha: hidden ? 0.0 : 1.0) - transition.updateAlpha(node: self.topFadeNode, alpha: hidden ? 0.0 : 1.0) + transition.updateAlpha(node: self.headerNode, alpha: hidden ? 0.0 : 1.0, delay: delay) + transition.updateAlpha(node: self.topFadeNode, alpha: hidden ? 0.0 : 1.0, delay: delay) - transition.updateAlpha(node: self.titleNode, alpha: hidden ? 0.0 : 1.0) - transition.updateAlpha(node: self.microphoneNode, alpha: hidden ? 0.0 : 1.0) - transition.updateAlpha(node: self.bottomFadeNode, alpha: hidden ? 0.0 : 1.0) - transition.updateAlpha(node: self.bottomFillNode, alpha: hidden ? 0.0 : 1.0) + transition.updateAlpha(node: self.titleNode, alpha: hidden ? 0.0 : 1.0, delay: delay) + transition.updateAlpha(node: self.microphoneNode, alpha: hidden ? 0.0 : 1.0, delay: delay) + transition.updateAlpha(node: self.bottomFadeNode, alpha: hidden ? 0.0 : 1.0, delay: delay) + transition.updateAlpha(node: self.bottomFillNode, alpha: hidden ? 0.0 : 1.0, delay: delay) } func update(size: CGSize, sideInset: CGFloat, bottomInset: CGFloat, isLandscape: Bool, force: Bool = false, transition: ContainedViewLayoutTransition) { diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatPeerProfileNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatPeerProfileNode.swift index 458401d050..97f2a2ff05 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatPeerProfileNode.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatPeerProfileNode.swift @@ -221,10 +221,15 @@ final class VoiceChatPeerProfileNode: ASDisplayNode { self.avatarListContainerNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) self.avatarListContainerNode.cornerRadius = targetRect.width / 2.0 + var appearenceTransition = transition + if transition.isAnimated { + appearenceTransition = .animated(duration: springDuration, curve: .customSpring(damping: springDamping, initialVelocity: 0.0)) + } + if let videoNode = sourceNode.videoNode { - videoNode.updateLayout(size: targetSize, layoutMode: .fillOrFitToSquare, transition: transition) - transition.updateFrame(node: videoNode, frame: CGRect(origin: CGPoint(), size: targetSize)) - transition.updateFrame(node: sourceNode.videoContainerNode, frame: CGRect(origin: CGPoint(), size: CGSize(width: targetSize.width, height: targetSize.height + backgroundCornerRadius))) + videoNode.updateLayout(size: targetSize, layoutMode: .fillOrFitToSquare, transition: appearenceTransition) + appearenceTransition.updateFrame(node: videoNode, frame: CGRect(origin: CGPoint(), size: targetSize)) + appearenceTransition.updateFrame(node: sourceNode.videoContainerNode, frame: CGRect(origin: CGPoint(), size: CGSize(width: targetSize.width, height: targetSize.height + backgroundCornerRadius))) sourceNode.videoContainerNode.cornerRadius = backgroundCornerRadius } self.insertSubnode(sourceNode.videoContainerNode, belowSubnode: self.avatarListWrapperNode) @@ -237,11 +242,11 @@ final class VoiceChatPeerProfileNode: ASDisplayNode { self.insertSubnode(self.videoFadeNode, aboveSubnode: sourceNode.videoContainerNode) self.view.insertSubview(snapshotView, aboveSubview: sourceNode.videoContainerNode.view) snapshotView.frame = sourceRect - transition.updateFrame(view: snapshotView, frame: CGRect(origin: CGPoint(x: 0.0, y: targetSize.height - snapshotView.frame.size.height), size: snapshotView.frame.size)) + appearenceTransition.updateFrame(view: snapshotView, frame: CGRect(origin: CGPoint(x: 0.0, y: targetSize.height - snapshotView.frame.size.height), size: snapshotView.frame.size)) snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { _ in snapshotView.removeFromSuperview() }) - transition.updateFrame(node: self.videoFadeNode, frame: CGRect(origin: CGPoint(x: 0.0, y: targetSize.height - self.videoFadeNode.frame.size.height), size: CGSize(width: targetSize.width, height: self.videoFadeNode.frame.height))) + appearenceTransition.updateFrame(node: self.videoFadeNode, frame: CGRect(origin: CGPoint(x: 0.0, y: targetSize.height - self.videoFadeNode.frame.size.height), size: CGSize(width: targetSize.width, height: self.videoFadeNode.frame.height))) self.videoFadeNode.alpha = 0.0 self.videoFadeNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2) } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatTileGridNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatTileGridNode.swift index 6ed552b17a..f0124a1d30 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatTileGridNode.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatTileGridNode.swift @@ -48,6 +48,8 @@ final class VoiceChatTileGridNode: ASDisplayNode { self.isFirstTime = false } + let availableWidth = min(size.width, size.height) + for i in 0 ..< self.items.count { let item = self.items[i] let isLast = i == self.items.count - 1 @@ -65,12 +67,12 @@ final class VoiceChatTileGridNode: ASDisplayNode { var wasAdded = false if let current = self.itemNodes[item.id] { itemNode = current - current.update(size: itemSize, availableWidth: size.width, item: item, transition: transition) + current.update(size: itemSize, availableWidth: availableWidth, item: item, transition: transition) } else { wasAdded = true let addedItemNode = VoiceChatTileItemNode(context: self.context) itemNode = addedItemNode - addedItemNode.update(size: itemSize, availableWidth: size.width, item: item, transition: .immediate) + addedItemNode.update(size: itemSize, availableWidth: availableWidth, item: item, transition: .immediate) self.itemNodes[self.items[i].id] = addedItemNode self.addSubnode(addedItemNode) } @@ -235,7 +237,7 @@ final class VoiceChatTilesGridItemNode: ListViewItemNode { } let transition: ContainedViewLayoutTransition = currentItem == nil ? .immediate : .animated(duration: 0.3, curve: .easeInOut) - let tileGridSize = tileGridNode.update(size: CGSize(width: params.width - params.leftInset - params.rightInset, height: CGFloat.greatestFiniteMagnitude), items: item.tiles, transition: transition) + let tileGridSize = tileGridNode.update(size: CGSize(width: params.width - params.leftInset - params.rightInset, height: params.availableHeight), items: item.tiles, transition: transition) if currentItem == nil { tileGridNode.frame = CGRect(x: params.leftInset, y: 0.0, width: tileGridSize.width, height: tileGridSize.height) strongSelf.backgroundNode.frame = tileGridNode.frame diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatTileItemNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatTileItemNode.swift index a8462820c8..c6ae25add3 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatTileItemNode.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatTileItemNode.swift @@ -153,6 +153,8 @@ final class VoiceChatTileItemNode: ASDisplayNode { } self.titleNode = ImmediateTextNode() + self.titleNode.displaysAsynchronously = false + self.statusNode = VoiceChatParticipantStatusNode() self.iconNode = ASImageNode() @@ -270,33 +272,33 @@ final class VoiceChatTileItemNode: ASDisplayNode { self.validLayout = (size, availableWidth) + if !item.videoReady { + let shimmerNode: VoiceChatTileShimmeringNode + if let current = self.shimmerNode { + shimmerNode = current + } else { + shimmerNode = VoiceChatTileShimmeringNode(account: item.account, peer: item.peer) + self.contentNode.insertSubnode(shimmerNode, aboveSubnode: self.fadeNode) + self.shimmerNode = shimmerNode + + if let (rect, containerSize) = self.absoluteLocation { + shimmerNode.updateAbsoluteRect(rect, within: containerSize) + } + } + transition.updateFrame(node: shimmerNode, frame: CGRect(origin: CGPoint(), size: size)) + shimmerNode.update(shimmeringColor: UIColor.white, size: size, transition: transition) + } else if let shimmerNode = self.shimmerNode { + self.shimmerNode = nil + shimmerNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, removeOnCompletion: false, completion: { [weak shimmerNode] _ in + shimmerNode?.removeFromSupernode() + }) + } + var itemTransition = transition if self.item != item { let previousItem = self.item self.item = item - - if !item.videoReady { - let shimmerNode: VoiceChatTileShimmeringNode - if let current = self.shimmerNode { - shimmerNode = current - } else { - shimmerNode = VoiceChatTileShimmeringNode(account: item.account, peer: item.peer) - self.contentNode.insertSubnode(shimmerNode, aboveSubnode: self.fadeNode) - self.shimmerNode = shimmerNode - - if let (rect, containerSize) = self.absoluteLocation { - shimmerNode.updateAbsoluteRect(rect, within: containerSize) - } - } - transition.updateFrame(node: shimmerNode, frame: CGRect(origin: CGPoint(), size: size)) - shimmerNode.update(shimmeringColor: UIColor.white, size: size, transition: transition) - } else if let shimmerNode = self.shimmerNode { - self.shimmerNode = nil - shimmerNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, removeOnCompletion: false, completion: { [weak shimmerNode] _ in - shimmerNode?.removeFromSupernode() - }) - } - + if let getAudioLevel = item.getAudioLevel { self.audioLevelDisposable.set((getAudioLevel() |> deliverOnMainQueue).start(next: { [weak self] value in @@ -354,7 +356,7 @@ final class VoiceChatTileItemNode: ASDisplayNode { } var microphoneColor = UIColor.white - if let additionalText = item.additionalText, case let .text(text, _, color) = additionalText { + if let additionalText = item.additionalText, case let .text(_, _, color) = additionalText { if case .destructive = color { microphoneColor = destructiveColor } @@ -644,7 +646,7 @@ class VoiceChatTileHighlightNode: ASDisplayNode { final class ShimmerEffectForegroundNode: ASDisplayNode { private var currentForegroundColor: UIColor? private let imageNodeContainer: ASDisplayNode - private let imageNode: ASImageNode + private let imageNode: ASDisplayNode private var absoluteLocation: (CGRect, CGSize)? private var isCurrentlyInHierarchy = false @@ -658,11 +660,9 @@ final class ShimmerEffectForegroundNode: ASDisplayNode { self.imageNodeContainer = ASDisplayNode() self.imageNodeContainer.isLayerBacked = true - self.imageNode = ASImageNode() + self.imageNode = ASDisplayNode() self.imageNode.isLayerBacked = true self.imageNode.displaysAsynchronously = false - self.imageNode.displayWithoutProcessing = true - self.imageNode.contentMode = .scaleToFill super.init() @@ -709,7 +709,9 @@ final class ShimmerEffectForegroundNode: ASDisplayNode { context.drawLinearGradient(gradient, start: CGPoint(x: 0.0, y: 0.0), end: CGPoint(x: size.width, y: 0.0), options: CGGradientDrawingOptions()) }) - self.imageNode.image = image + if let image = image { + self.imageNode.backgroundColor = UIColor(patternImage: image) + } } func updateAbsoluteRect(_ rect: CGRect, within containerSize: CGSize) { @@ -775,7 +777,7 @@ private class VoiceChatTileShimmeringNode: ASDisplayNode { self.backgroundNode.displaysAsynchronously = false self.backgroundNode.contentMode = .scaleAspectFill - self.effectNode = ShimmerEffectForegroundNode(size: 220.0) + self.effectNode = ShimmerEffectForegroundNode(size: 240.0) self.borderNode = ASDisplayNode() self.borderEffectNode = ShimmerEffectForegroundNode(size: 320.0) @@ -835,7 +837,7 @@ private class VoiceChatTileShimmeringNode: ASDisplayNode { self.effectNode.update(foregroundColor: shimmeringColor.withAlphaComponent(0.3)) self.effectNode.frame = bounds - self.borderEffectNode.update(foregroundColor: shimmeringColor.withAlphaComponent(0.5)) + self.borderEffectNode.update(foregroundColor: shimmeringColor.withAlphaComponent(0.45)) self.borderEffectNode.frame = bounds transition.updateFrame(node: self.backgroundNode, frame: bounds) diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 7043739e14..f0f376cdb2 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -4395,2070 +4395,2071 @@ public final class PresentationStrings: Equatable { public var UserInfo_AddToExisting: String { return self._s[3908]! } public var Call_PhoneCallInProgressMessage: String { return self._s[3910]! } public var Map_HomeAndWorkInfo: String { return self._s[3911]! } - public var InstantPage_VoiceOver_ResetFontSize: String { return self._s[3912]! } - public var Paint_Arrow: String { return self._s[3913]! } - public var InviteLink_CreatePrivateLinkHelp: String { return self._s[3914]! } + public var VoiceChat_ContextAudio: String { return self._s[3912]! } + public var InstantPage_VoiceOver_ResetFontSize: String { return self._s[3913]! } + public var Paint_Arrow: String { return self._s[3914]! } + public var InviteLink_CreatePrivateLinkHelp: String { return self._s[3915]! } public func DialogList_MultipleTypingPair(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3915]!, self._r[3915]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3916]!, self._r[3916]!, [_0, _1]) } - public var CancelResetAccount_Title: String { return self._s[3916]! } - public var NotificationsSound_Circles: String { return self._s[3917]! } - public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[3918]! } - public var ChatState_Connecting: String { return self._s[3920]! } - public var Profile_MessageLifetime5s: String { return self._s[3921]! } + public var CancelResetAccount_Title: String { return self._s[3917]! } + public var NotificationsSound_Circles: String { return self._s[3918]! } + public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[3919]! } + public var ChatState_Connecting: String { return self._s[3921]! } + public var Profile_MessageLifetime5s: String { return self._s[3922]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3922]!, self._r[3922]!, [_0]) + return formatWithArgumentRanges(self._s[3923]!, self._r[3923]!, [_0]) } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[3923]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[3924]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[3925]! } - public var Conversation_DefaultRestrictedStickers: String { return self._s[3927]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[3928]! } + public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[3924]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[3925]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[3926]! } + public var Conversation_DefaultRestrictedStickers: String { return self._s[3928]! } + public var TwoStepAuth_ConfirmationTitle: String { return self._s[3929]! } public func Chat_UnsendMyMessagesAlertTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3929]!, self._r[3929]!, [_0]) + return formatWithArgumentRanges(self._s[3930]!, self._r[3930]!, [_0]) } - public var Passport_Phone_Help: String { return self._s[3930]! } - public var Privacy_ContactsSync: String { return self._s[3931]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3932]! } - public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[3934]! } - public var Map_SendMyCurrentLocation: String { return self._s[3935]! } - public var Map_AddressOnMap: String { return self._s[3936]! } - public var BroadcastGroups_ConfirmationAlert_Convert: String { return self._s[3938]! } - public var DialogList_SearchLabel: String { return self._s[3939]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3940]! } - public var GroupInfo_FakeGroupWarning: String { return self._s[3941]! } - public var Conversation_ChecksTooltip_Read: String { return self._s[3943]! } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[3945]! } - public var ChatList_Search_ShowMore: String { return self._s[3946]! } - public var DialogList_EncryptionRejected: String { return self._s[3947]! } - public var VoiceChat_InviteLinkCopiedText: String { return self._s[3948]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[3949]! } - public var VoiceChat_StartRecordingText: String { return self._s[3950]! } - public var Privacy_TopPeersDelete: String { return self._s[3951]! } - public var AttachmentMenu_SendAsFile: String { return self._s[3953]! } - public var ChatList_GenericPsaAlert: String { return self._s[3955]! } - public var SecretTimer_ImageDescription: String { return self._s[3957]! } + public var Passport_Phone_Help: String { return self._s[3931]! } + public var Privacy_ContactsSync: String { return self._s[3932]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3933]! } + public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[3935]! } + public var Map_SendMyCurrentLocation: String { return self._s[3936]! } + public var Map_AddressOnMap: String { return self._s[3937]! } + public var BroadcastGroups_ConfirmationAlert_Convert: String { return self._s[3939]! } + public var DialogList_SearchLabel: String { return self._s[3940]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3941]! } + public var GroupInfo_FakeGroupWarning: String { return self._s[3942]! } + public var Conversation_ChecksTooltip_Read: String { return self._s[3944]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[3946]! } + public var ChatList_Search_ShowMore: String { return self._s[3947]! } + public var DialogList_EncryptionRejected: String { return self._s[3948]! } + public var VoiceChat_InviteLinkCopiedText: String { return self._s[3949]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[3950]! } + public var VoiceChat_StartRecordingText: String { return self._s[3951]! } + public var Privacy_TopPeersDelete: String { return self._s[3952]! } + public var AttachmentMenu_SendAsFile: String { return self._s[3954]! } + public var ChatList_GenericPsaAlert: String { return self._s[3956]! } + public var SecretTimer_ImageDescription: String { return self._s[3958]! } public func Conversation_SetReminder_RemindOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3958]!, self._r[3958]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3959]!, self._r[3959]!, [_0, _1]) } - public var VoiceChat_EditNameSuccess: String { return self._s[3959]! } - public var ChatSettings_TextSizeUnits: String { return self._s[3960]! } - public var Notification_RenamedGroup: String { return self._s[3962]! } - public var Tour_Title2: String { return self._s[3963]! } - public var Settings_CopyUsername: String { return self._s[3964]! } - public var Compose_NewEncryptedChat: String { return self._s[3965]! } - public var Conversation_CloudStorageInfo_Title: String { return self._s[3966]! } - public var VoiceChat_SetReminder: String { return self._s[3967]! } - public var Month_ShortSeptember: String { return self._s[3968]! } - public var AutoDownloadSettings_OnForAll: String { return self._s[3969]! } - public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[3970]! } - public var VoiceChat_StartNow: String { return self._s[3971]! } - public var Call_StatusConnecting: String { return self._s[3973]! } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[3974]! } - public var Map_ShareLiveLocationHelp: String { return self._s[3975]! } - public var Cache_Files: String { return self._s[3976]! } - public var Notifications_Reset: String { return self._s[3977]! } + public var VoiceChat_EditNameSuccess: String { return self._s[3960]! } + public var ChatSettings_TextSizeUnits: String { return self._s[3961]! } + public var Notification_RenamedGroup: String { return self._s[3963]! } + public var Tour_Title2: String { return self._s[3964]! } + public var Settings_CopyUsername: String { return self._s[3965]! } + public var Compose_NewEncryptedChat: String { return self._s[3966]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[3967]! } + public var VoiceChat_SetReminder: String { return self._s[3968]! } + public var Month_ShortSeptember: String { return self._s[3969]! } + public var AutoDownloadSettings_OnForAll: String { return self._s[3970]! } + public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[3971]! } + public var VoiceChat_StartNow: String { return self._s[3972]! } + public var Call_StatusConnecting: String { return self._s[3974]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[3975]! } + public var Map_ShareLiveLocationHelp: String { return self._s[3976]! } + public var Cache_Files: String { return self._s[3977]! } + public var Notifications_Reset: String { return self._s[3978]! } public func Settings_KeepPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3978]!, self._r[3978]!, [_0]) + return formatWithArgumentRanges(self._s[3979]!, self._r[3979]!, [_0]) } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[3979]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[3980]! } public func Conversation_OpenBotLinkLogin(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3980]!, self._r[3980]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3981]!, self._r[3981]!, [_1, _2]) } - public var Notification_CallIncomingShort: String { return self._s[3981]! } - public var UserInfo_BotPrivacy: String { return self._s[3984]! } - public var Appearance_BubbleCorners_Apply: String { return self._s[3985]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[3986]! } - public var Conversation_ContextMenuLookUp: String { return self._s[3988]! } - public var Calls_RatingTitle: String { return self._s[3989]! } - public var SecretImage_Title: String { return self._s[3990]! } - public var Weekday_Monday: String { return self._s[3991]! } + public var Notification_CallIncomingShort: String { return self._s[3982]! } + public var UserInfo_BotPrivacy: String { return self._s[3985]! } + public var Appearance_BubbleCorners_Apply: String { return self._s[3986]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[3987]! } + public var Conversation_ContextMenuLookUp: String { return self._s[3989]! } + public var Calls_RatingTitle: String { return self._s[3990]! } + public var SecretImage_Title: String { return self._s[3991]! } + public var Weekday_Monday: String { return self._s[3992]! } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3992]!, self._r[3992]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3993]!, self._r[3993]!, [_1, _2]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3993]! } - public var VoiceChat_InviteLink_CopySpeakerLink: String { return self._s[3994]! } - public var Invitation_JoinVoiceChatAsListener: String { return self._s[3995]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3994]! } + public var VoiceChat_InviteLink_CopySpeakerLink: String { return self._s[3995]! } + public var Invitation_JoinVoiceChatAsListener: String { return self._s[3996]! } public func DialogList_SearchSubtitleFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3996]!, self._r[3996]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3997]!, self._r[3997]!, [_1, _2]) } - public var Stats_GroupMembers: String { return self._s[3997]! } - public var Camera_Retake: String { return self._s[3998]! } - public var Conversation_SearchPlaceholder: String { return self._s[4000]! } + public var Stats_GroupMembers: String { return self._s[3998]! } + public var Camera_Retake: String { return self._s[3999]! } + public var Conversation_SearchPlaceholder: String { return self._s[4001]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4001]!, self._r[4001]!, [_0]) + return formatWithArgumentRanges(self._s[4002]!, self._r[4002]!, [_0]) } - public var Channel_DiscussionGroup_Info: String { return self._s[4002]! } - public var SocksProxySetup_Hostname: String { return self._s[4003]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[4004]! } - public var Privacy_DeleteDrafts: String { return self._s[4006]! } - public var Login_CancelPhoneVerification: String { return self._s[4008]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[4009]! } - public var VoiceOver_Chat_Profile: String { return self._s[4010]! } + public var Channel_DiscussionGroup_Info: String { return self._s[4003]! } + public var SocksProxySetup_Hostname: String { return self._s[4004]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[4005]! } + public var Privacy_DeleteDrafts: String { return self._s[4007]! } + public var Login_CancelPhoneVerification: String { return self._s[4009]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[4010]! } + public var VoiceOver_Chat_Profile: String { return self._s[4011]! } public func SocksProxySetup_ProxyStatusPing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4011]!, self._r[4011]!, [_0]) + return formatWithArgumentRanges(self._s[4012]!, self._r[4012]!, [_0]) } - public var TwoStepAuth_EmailSent: String { return self._s[4012]! } - public var Cache_Indexing: String { return self._s[4013]! } - public var Notifications_ExceptionsNone: String { return self._s[4014]! } - public var MessagePoll_LabelQuiz: String { return self._s[4015]! } - public var Call_EncryptionKey_Title: String { return self._s[4016]! } - public var Common_Yes: String { return self._s[4017]! } - public var Channel_ErrorAddBlocked: String { return self._s[4018]! } - public var Month_GenJanuary: String { return self._s[4019]! } - public var Checkout_NewCard_Title: String { return self._s[4020]! } + public var TwoStepAuth_EmailSent: String { return self._s[4013]! } + public var Cache_Indexing: String { return self._s[4014]! } + public var Notifications_ExceptionsNone: String { return self._s[4015]! } + public var MessagePoll_LabelQuiz: String { return self._s[4016]! } + public var Call_EncryptionKey_Title: String { return self._s[4017]! } + public var Common_Yes: String { return self._s[4018]! } + public var Channel_ErrorAddBlocked: String { return self._s[4019]! } + public var Month_GenJanuary: String { return self._s[4020]! } + public var Checkout_NewCard_Title: String { return self._s[4021]! } public func TwoStepAuth_EnterPasswordHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4021]!, self._r[4021]!, [_0]) + return formatWithArgumentRanges(self._s[4022]!, self._r[4022]!, [_0]) } - public var Conversation_InputTextPlaceholderReply: String { return self._s[4023]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[4024]! } - public var Conversation_SendDice: String { return self._s[4025]! } + public var Conversation_InputTextPlaceholderReply: String { return self._s[4024]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[4025]! } + public var Conversation_SendDice: String { return self._s[4026]! } public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4026]!, self._r[4026]!, [_0]) - } - public func VoiceOver_Chat_VideoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4027]!, self._r[4027]!, [_0]) } - public var Weekday_Wednesday: String { return self._s[4028]! } - public var ReportPeer_ReasonOther_Send: String { return self._s[4029]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[4030]! } - public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[4031]! } - public var OldChannels_NoticeTitle: String { return self._s[4032]! } - public var TwoStepAuth_ChangeEmail: String { return self._s[4033]! } - public var PasscodeSettings_PasscodeOptions: String { return self._s[4034]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[4035]! } - public var Passport_Address_AddUtilityBill: String { return self._s[4036]! } + public func VoiceOver_Chat_VideoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4028]!, self._r[4028]!, [_0]) + } + public var Weekday_Wednesday: String { return self._s[4029]! } + public var ReportPeer_ReasonOther_Send: String { return self._s[4030]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[4031]! } + public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[4032]! } + public var OldChannels_NoticeTitle: String { return self._s[4033]! } + public var TwoStepAuth_ChangeEmail: String { return self._s[4034]! } + public var PasscodeSettings_PasscodeOptions: String { return self._s[4035]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[4036]! } + public var Passport_Address_AddUtilityBill: String { return self._s[4037]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4038]!, self._r[4038]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4039]!, self._r[4039]!, [_1, _2, _3]) } - public var TwoFactorSetup_EmailVerification_ResendAction: String { return self._s[4040]! } - public var Stats_GroupTopAdminsTitle: String { return self._s[4041]! } - public var Paint_Regular: String { return self._s[4043]! } - public var Message_Contact: String { return self._s[4044]! } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[4045]! } - public var VoiceOver_Chat_YourPhoto: String { return self._s[4046]! } - public var Notification_Mute1hMin: String { return self._s[4047]! } + public var TwoFactorSetup_EmailVerification_ResendAction: String { return self._s[4041]! } + public var Stats_GroupTopAdminsTitle: String { return self._s[4042]! } + public var Paint_Regular: String { return self._s[4044]! } + public var Message_Contact: String { return self._s[4045]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[4046]! } + public var VoiceOver_Chat_YourPhoto: String { return self._s[4047]! } + public var Notification_Mute1hMin: String { return self._s[4048]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4048]!, self._r[4048]!, [_0]) + return formatWithArgumentRanges(self._s[4049]!, self._r[4049]!, [_0]) } - public var Profile_MessageLifetime1h: String { return self._s[4049]! } - public var TwoStepAuth_GenericHelp: String { return self._s[4050]! } - public var TextFormat_Monospace: String { return self._s[4051]! } - public var VoiceOver_Media_PlaybackRateChange: String { return self._s[4053]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[4054]! } - public var ChatList_DeleteChat: String { return self._s[4055]! } - public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[4058]! } + public var Profile_MessageLifetime1h: String { return self._s[4050]! } + public var TwoStepAuth_GenericHelp: String { return self._s[4051]! } + public var TextFormat_Monospace: String { return self._s[4052]! } + public var VoiceOver_Media_PlaybackRateChange: String { return self._s[4054]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[4055]! } + public var ChatList_DeleteChat: String { return self._s[4056]! } + public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[4059]! } public func Settings_ApplyProxyAlertCredentials(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4059]!, self._r[4059]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[4060]!, self._r[4060]!, [_1, _2, _3, _4]) } - public var Login_CancelPhoneVerificationStop: String { return self._s[4060]! } - public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[4061]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[4062]! } + public var Login_CancelPhoneVerificationStop: String { return self._s[4061]! } + public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[4062]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[4063]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4063]!, self._r[4063]!, [_0]) + return formatWithArgumentRanges(self._s[4064]!, self._r[4064]!, [_0]) } - public var Notifications_Badge_IncludeChannels: String { return self._s[4064]! } - public var InviteLink_CreatePrivateLinkHelpChannel: String { return self._s[4065]! } - public var StickerPack_ViewPack: String { return self._s[4068]! } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[4070]! } - public var EditTheme_Expand_Preview_IncomingText: String { return self._s[4071]! } - public var Notifications_Title: String { return self._s[4072]! } - public var Conversation_InputTextPlaceholderComment: String { return self._s[4073]! } - public var GroupInfo_PublicLink: String { return self._s[4074]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[4065]! } + public var InviteLink_CreatePrivateLinkHelpChannel: String { return self._s[4066]! } + public var StickerPack_ViewPack: String { return self._s[4069]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[4071]! } + public var EditTheme_Expand_Preview_IncomingText: String { return self._s[4072]! } + public var Notifications_Title: String { return self._s[4073]! } + public var Conversation_InputTextPlaceholderComment: String { return self._s[4074]! } + public var GroupInfo_PublicLink: String { return self._s[4075]! } public func ScheduleVoiceChat_GroupText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4075]!, self._r[4075]!, [_0]) + return formatWithArgumentRanges(self._s[4076]!, self._r[4076]!, [_0]) } - public var VoiceOver_DiscardPreparedContent: String { return self._s[4076]! } - public var Conversation_Moderate_Ban: String { return self._s[4080]! } - public var InviteLink_Manage: String { return self._s[4081]! } - public var InstantPage_FontNewYork: String { return self._s[4082]! } + public var VoiceOver_DiscardPreparedContent: String { return self._s[4077]! } + public var Conversation_Moderate_Ban: String { return self._s[4081]! } + public var InviteLink_Manage: String { return self._s[4082]! } + public var InstantPage_FontNewYork: String { return self._s[4083]! } public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4083]!, self._r[4083]!, [_0]) + return formatWithArgumentRanges(self._s[4084]!, self._r[4084]!, [_0]) } - public var TextFormat_Underline: String { return self._s[4084]! } + public var TextFormat_Underline: String { return self._s[4085]! } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4085]!, self._r[4085]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4086]!, self._r[4086]!, [_0, _1]) } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4086]!, self._r[4086]!, [_1]) + return formatWithArgumentRanges(self._s[4087]!, self._r[4087]!, [_1]) } - public var PollResults_Collapse: String { return self._s[4088]! } - public var Contacts_GlobalSearch: String { return self._s[4089]! } + public var PollResults_Collapse: String { return self._s[4089]! } + public var Contacts_GlobalSearch: String { return self._s[4090]! } public func Conversation_EncryptionWaiting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4091]!, self._r[4091]!, [_0]) + return formatWithArgumentRanges(self._s[4092]!, self._r[4092]!, [_0]) } - public var Channel_Management_LabelEditor: String { return self._s[4092]! } - public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[4094]! } - public var Conversation_Theme: String { return self._s[4095]! } + public var Channel_Management_LabelEditor: String { return self._s[4093]! } + public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[4095]! } + public var Conversation_Theme: String { return self._s[4096]! } public func PUSH_CHANNEL_MESSAGE_DOCS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4096]!, self._r[4096]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4097]!, self._r[4097]!, [_1, "\(_2)"]) } - public var Conversation_LinkDialogSave: String { return self._s[4097]! } - public var EnterPasscode_TouchId: String { return self._s[4098]! } - public var Conversation_VoiceChatMediaRecordingRestricted: String { return self._s[4099]! } - public var Group_ErrorAdminsTooMuch: String { return self._s[4100]! } - public var Stats_MessageOverview: String { return self._s[4101]! } - public var Privacy_Calls_P2PAlways: String { return self._s[4103]! } - public var Message_Sticker: String { return self._s[4104]! } - public var Conversation_Mute: String { return self._s[4107]! } - public var VoiceChat_AnonymousDisabledAlertText: String { return self._s[4108]! } - public var ContactInfo_Title: String { return self._s[4109]! } + public var Conversation_LinkDialogSave: String { return self._s[4098]! } + public var EnterPasscode_TouchId: String { return self._s[4099]! } + public var Conversation_VoiceChatMediaRecordingRestricted: String { return self._s[4100]! } + public var Group_ErrorAdminsTooMuch: String { return self._s[4101]! } + public var Stats_MessageOverview: String { return self._s[4102]! } + public var Privacy_Calls_P2PAlways: String { return self._s[4104]! } + public var Message_Sticker: String { return self._s[4105]! } + public var Conversation_Mute: String { return self._s[4108]! } + public var VoiceChat_AnonymousDisabledAlertText: String { return self._s[4109]! } + public var ContactInfo_Title: String { return self._s[4110]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4110]!, self._r[4110]!, [_1]) + return formatWithArgumentRanges(self._s[4111]!, self._r[4111]!, [_1]) } - public var Channel_Setup_TypeHeader: String { return self._s[4111]! } - public var AuthSessions_LogOut: String { return self._s[4112]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[4113]! } - public var VoiceChat_PinVideo: String { return self._s[4114]! } - public var Group_Info_Members: String { return self._s[4116]! } - public var ChatListFolderSettings_NewFolder: String { return self._s[4117]! } - public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[4118]! } - public var CreatePoll_Title: String { return self._s[4119]! } - public var EditTheme_EditTitle: String { return self._s[4120]! } - public var ChatListFolderSettings_RecommendedFoldersSection: String { return self._s[4121]! } - public var TwoStepAuth_SetPassword: String { return self._s[4122]! } + public var Channel_Setup_TypeHeader: String { return self._s[4112]! } + public var AuthSessions_LogOut: String { return self._s[4113]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[4114]! } + public var VoiceChat_PinVideo: String { return self._s[4115]! } + public var Group_Info_Members: String { return self._s[4117]! } + public var ChatListFolderSettings_NewFolder: String { return self._s[4118]! } + public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[4119]! } + public var CreatePoll_Title: String { return self._s[4120]! } + public var EditTheme_EditTitle: String { return self._s[4121]! } + public var ChatListFolderSettings_RecommendedFoldersSection: String { return self._s[4122]! } + public var TwoStepAuth_SetPassword: String { return self._s[4123]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4123]!, self._r[4123]!, [_0]) + return formatWithArgumentRanges(self._s[4124]!, self._r[4124]!, [_0]) } - public var BlockedUsers_Info: String { return self._s[4124]! } - public var AuthSessions_Sessions: String { return self._s[4125]! } - public var Group_EditAdmin_RankTitle: String { return self._s[4126]! } - public var Common_ActionNotAllowedError: String { return self._s[4127]! } - public var WebPreview_GettingLinkInfo: String { return self._s[4128]! } - public var Appearance_AppIconFilledX: String { return self._s[4129]! } - public var Passport_Email_EmailPlaceholder: String { return self._s[4130]! } - public var FeaturedStickers_OtherSection: String { return self._s[4131]! } - public var VoiceChat_RecordingStarted: String { return self._s[4132]! } - public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[4133]! } - public var Profile_Username: String { return self._s[4134]! } - public var Settings_TipsUsername: String { return self._s[4135]! } - public var Appearance_RemoveTheme: String { return self._s[4136]! } - public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[4137]! } - public var Message_PinnedStickerMessage: String { return self._s[4138]! } - public var AccessDenied_VideoMicrophone: String { return self._s[4139]! } - public var WallpaperPreview_CustomColorBottomText: String { return self._s[4140]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[4141]! } - public var Conversation_VoiceChat: String { return self._s[4142]! } - public var VoiceChat_EditBioSuccess: String { return self._s[4143]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[4144]! } - public var TwoStepAuth_Title: String { return self._s[4145]! } - public var VoiceOver_Chat_YourAnimatedSticker: String { return self._s[4146]! } - public var Checkout_WebConfirmation_Title: String { return self._s[4147]! } - public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[4148]! } - public var ChatListFolder_CategoryGroups: String { return self._s[4150]! } - public var Stats_GroupTopInviter_Promote: String { return self._s[4151]! } - public var Conversation_EditingPhotoPanelTitle: String { return self._s[4152]! } - public var Month_GenJuly: String { return self._s[4153]! } - public var Passport_Identity_Gender: String { return self._s[4154]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[4155]! } - public var Notification_Exceptions_DeleteAll: String { return self._s[4156]! } - public var VoiceChat_StopRecording: String { return self._s[4157]! } + public var BlockedUsers_Info: String { return self._s[4125]! } + public var AuthSessions_Sessions: String { return self._s[4126]! } + public var Group_EditAdmin_RankTitle: String { return self._s[4127]! } + public var Common_ActionNotAllowedError: String { return self._s[4128]! } + public var WebPreview_GettingLinkInfo: String { return self._s[4129]! } + public var Appearance_AppIconFilledX: String { return self._s[4130]! } + public var Passport_Email_EmailPlaceholder: String { return self._s[4131]! } + public var FeaturedStickers_OtherSection: String { return self._s[4132]! } + public var VoiceChat_RecordingStarted: String { return self._s[4133]! } + public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[4134]! } + public var Profile_Username: String { return self._s[4135]! } + public var Settings_TipsUsername: String { return self._s[4136]! } + public var Appearance_RemoveTheme: String { return self._s[4137]! } + public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[4138]! } + public var Message_PinnedStickerMessage: String { return self._s[4139]! } + public var AccessDenied_VideoMicrophone: String { return self._s[4140]! } + public var WallpaperPreview_CustomColorBottomText: String { return self._s[4141]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[4142]! } + public var Conversation_VoiceChat: String { return self._s[4143]! } + public var VoiceChat_EditBioSuccess: String { return self._s[4144]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[4145]! } + public var TwoStepAuth_Title: String { return self._s[4146]! } + public var VoiceOver_Chat_YourAnimatedSticker: String { return self._s[4147]! } + public var Checkout_WebConfirmation_Title: String { return self._s[4148]! } + public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[4149]! } + public var ChatListFolder_CategoryGroups: String { return self._s[4151]! } + public var Stats_GroupTopInviter_Promote: String { return self._s[4152]! } + public var Conversation_EditingPhotoPanelTitle: String { return self._s[4153]! } + public var Month_GenJuly: String { return self._s[4154]! } + public var Passport_Identity_Gender: String { return self._s[4155]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[4156]! } + public var Notification_Exceptions_DeleteAll: String { return self._s[4157]! } + public var VoiceChat_StopRecording: String { return self._s[4158]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4158]!, self._r[4158]!, [_0]) + return formatWithArgumentRanges(self._s[4159]!, self._r[4159]!, [_0]) } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4159]!, self._r[4159]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[4160]!, self._r[4160]!, [_0, _1, _2]) } - public var Login_CodeSentSms: String { return self._s[4160]! } + public var Login_CodeSentSms: String { return self._s[4161]! } public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4161]!, self._r[4161]!, [_0]) + return formatWithArgumentRanges(self._s[4162]!, self._r[4162]!, [_0]) } - public var Login_CallRequestState2: String { return self._s[4162]! } - public var Channel_DiscussionGroup_Header: String { return self._s[4163]! } + public var Login_CallRequestState2: String { return self._s[4163]! } + public var Channel_DiscussionGroup_Header: String { return self._s[4164]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4164]!, self._r[4164]!, [_0]) + return formatWithArgumentRanges(self._s[4165]!, self._r[4165]!, [_0]) } - public var Passport_Language_ms: String { return self._s[4165]! } - public var PeopleNearby_MakeInvisible: String { return self._s[4167]! } - public var ChatList_Search_FilterVoice: String { return self._s[4169]! } - public var Camera_TapAndHoldForVideo: String { return self._s[4171]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[4172]! } + public var Passport_Language_ms: String { return self._s[4166]! } + public var PeopleNearby_MakeInvisible: String { return self._s[4168]! } + public var ChatList_Search_FilterVoice: String { return self._s[4170]! } + public var Camera_TapAndHoldForVideo: String { return self._s[4172]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[4173]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4173]!, self._r[4173]!, [_0]) + return formatWithArgumentRanges(self._s[4174]!, self._r[4174]!, [_0]) } public func Call_VoiceChatInProgressMessageCall(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4174]!, self._r[4174]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4175]!, self._r[4175]!, [_1, _2]) } - public var Map_Locating: String { return self._s[4175]! } + public var Map_Locating: String { return self._s[4176]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4177]!, self._r[4177]!, [_0]) + return formatWithArgumentRanges(self._s[4178]!, self._r[4178]!, [_0]) } - public var Passport_Identity_TypeInternalPassport: String { return self._s[4179]! } - public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[4180]! } - public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[4181]! } - public var Stickers_Installed: String { return self._s[4182]! } - public var Notifications_PermissionsAllowInSettings: String { return self._s[4183]! } - public var StickerPackActionInfo_RemovedTitle: String { return self._s[4184]! } - public var CallSettings_Never: String { return self._s[4186]! } - public var Channel_Setup_TypePublicHelp: String { return self._s[4187]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[4180]! } + public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[4181]! } + public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[4182]! } + public var Stickers_Installed: String { return self._s[4183]! } + public var Notifications_PermissionsAllowInSettings: String { return self._s[4184]! } + public var StickerPackActionInfo_RemovedTitle: String { return self._s[4185]! } + public var CallSettings_Never: String { return self._s[4187]! } + public var Channel_Setup_TypePublicHelp: String { return self._s[4188]! } public func ChatList_DeleteForEveryone(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4189]!, self._r[4189]!, [_0]) + return formatWithArgumentRanges(self._s[4190]!, self._r[4190]!, [_0]) } - public var Message_Game: String { return self._s[4190]! } - public var Call_Message: String { return self._s[4191]! } + public var Message_Game: String { return self._s[4191]! } + public var Call_Message: String { return self._s[4192]! } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4192]!, self._r[4192]!, [_1]) + return formatWithArgumentRanges(self._s[4193]!, self._r[4193]!, [_1]) } - public var ChannelIntro_Text: String { return self._s[4193]! } - public var StickerPack_Send: String { return self._s[4194]! } - public var Share_AuthDescription: String { return self._s[4195]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[4196]! } - public var CallFeedback_WhatWentWrong: String { return self._s[4197]! } - public var Common_Create: String { return self._s[4200]! } - public var Passport_Language_hy: String { return self._s[4201]! } - public var CreatePoll_Explanation: String { return self._s[4202]! } - public var GroupPermission_AddMembersNotAvailable: String { return self._s[4203]! } - public var ChatImport_CreateGroupAlertImportAction: String { return self._s[4204]! } - public var PeerInfo_ButtonVoiceChat: String { return self._s[4205]! } - public var Undo_ChatClearedForBothSides: String { return self._s[4206]! } - public var DialogList_NoMessagesTitle: String { return self._s[4207]! } - public var GroupInfo_Title: String { return self._s[4209]! } + public var ChannelIntro_Text: String { return self._s[4194]! } + public var StickerPack_Send: String { return self._s[4195]! } + public var Share_AuthDescription: String { return self._s[4196]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[4197]! } + public var CallFeedback_WhatWentWrong: String { return self._s[4198]! } + public var Common_Create: String { return self._s[4201]! } + public var Passport_Language_hy: String { return self._s[4202]! } + public var CreatePoll_Explanation: String { return self._s[4203]! } + public var GroupPermission_AddMembersNotAvailable: String { return self._s[4204]! } + public var ChatImport_CreateGroupAlertImportAction: String { return self._s[4205]! } + public var PeerInfo_ButtonVoiceChat: String { return self._s[4206]! } + public var Undo_ChatClearedForBothSides: String { return self._s[4207]! } + public var DialogList_NoMessagesTitle: String { return self._s[4208]! } + public var GroupInfo_Title: String { return self._s[4210]! } public func ScheduleVoiceChat_ScheduleToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4210]!, self._r[4210]!, [_0]) + return formatWithArgumentRanges(self._s[4211]!, self._r[4211]!, [_0]) } - public var UserInfo_ContactForwardTooltip_SavedMessages_One: String { return self._s[4211]! } - public var Channel_AdminLog_CanBanUsers: String { return self._s[4212]! } - public var PhoneNumberHelp_Help: String { return self._s[4213]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[4214]! } - public var Settings_Logout: String { return self._s[4215]! } - public var Privacy_PaymentsTitle: String { return self._s[4216]! } - public var StickerPacksSettings_StickerPacksSection: String { return self._s[4217]! } - public var Tour_Text6: String { return self._s[4218]! } - public var ChatImportActivity_Title: String { return self._s[4220]! } - public var Channel_Username_Help: String { return self._s[4221]! } - public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[4222]! } - public var AttachmentMenu_Poll: String { return self._s[4223]! } - public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[4224]! } - public var Conversation_ReportSpamChannelConfirmation: String { return self._s[4225]! } - public var Passport_DeletePassport: String { return self._s[4226]! } - public var Login_Code: String { return self._s[4227]! } - public var Notification_SecretChatScreenshot: String { return self._s[4228]! } - public var VoiceChat_AddBio: String { return self._s[4229]! } - public var Login_CodeFloodError: String { return self._s[4230]! } + public var UserInfo_ContactForwardTooltip_SavedMessages_One: String { return self._s[4212]! } + public var Channel_AdminLog_CanBanUsers: String { return self._s[4213]! } + public var PhoneNumberHelp_Help: String { return self._s[4214]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[4215]! } + public var Settings_Logout: String { return self._s[4216]! } + public var Privacy_PaymentsTitle: String { return self._s[4217]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[4218]! } + public var Tour_Text6: String { return self._s[4219]! } + public var ChatImportActivity_Title: String { return self._s[4221]! } + public var Channel_Username_Help: String { return self._s[4222]! } + public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[4223]! } + public var AttachmentMenu_Poll: String { return self._s[4224]! } + public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[4225]! } + public var Conversation_ReportSpamChannelConfirmation: String { return self._s[4226]! } + public var Passport_DeletePassport: String { return self._s[4227]! } + public var Login_Code: String { return self._s[4228]! } + public var Notification_SecretChatScreenshot: String { return self._s[4229]! } + public var VoiceChat_AddBio: String { return self._s[4230]! } + public var Login_CodeFloodError: String { return self._s[4231]! } public func Notification_PinnedAnimationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4231]!, self._r[4231]!, [_0]) - } - public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4232]!, self._r[4232]!, [_0]) } - public var Watch_Stickers_Recents: String { return self._s[4233]! } - public var Generic_ErrorMoreInfo: String { return self._s[4234]! } + public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4233]!, self._r[4233]!, [_0]) + } + public var Watch_Stickers_Recents: String { return self._s[4234]! } + public var Generic_ErrorMoreInfo: String { return self._s[4235]! } public func Call_AccountIsLoggedOnCurrentDevice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4235]!, self._r[4235]!, [_0]) + return formatWithArgumentRanges(self._s[4236]!, self._r[4236]!, [_0]) } - public var AutoDownloadSettings_DataUsage: String { return self._s[4236]! } - public var Conversation_ViewTheme: String { return self._s[4237]! } - public var Contacts_InviteSearchLabel: String { return self._s[4238]! } - public var Settings_CancelUpload: String { return self._s[4240]! } - public var Settings_AppLanguage_Unofficial: String { return self._s[4241]! } + public var AutoDownloadSettings_DataUsage: String { return self._s[4237]! } + public var Conversation_ViewTheme: String { return self._s[4238]! } + public var Contacts_InviteSearchLabel: String { return self._s[4239]! } + public var Settings_CancelUpload: String { return self._s[4241]! } + public var Settings_AppLanguage_Unofficial: String { return self._s[4242]! } public func ChatList_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4242]!, self._r[4242]!, [_0]) + return formatWithArgumentRanges(self._s[4243]!, self._r[4243]!, [_0]) } - public var ChatList_AddFolder: String { return self._s[4243]! } - public var Conversation_Location: String { return self._s[4245]! } - public var Appearance_BubbleCorners_AdjustAdjacent: String { return self._s[4246]! } - public var DialogList_AdLabel: String { return self._s[4247]! } + public var ChatList_AddFolder: String { return self._s[4244]! } + public var Conversation_Location: String { return self._s[4246]! } + public var Appearance_BubbleCorners_AdjustAdjacent: String { return self._s[4247]! } + public var DialogList_AdLabel: String { return self._s[4248]! } public func Time_TomorrowAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4249]!, self._r[4249]!, [_0]) + return formatWithArgumentRanges(self._s[4250]!, self._r[4250]!, [_0]) } - public var Message_InvoiceLabel: String { return self._s[4250]! } - public var Channel_TooMuchBots: String { return self._s[4251]! } + public var Message_InvoiceLabel: String { return self._s[4251]! } + public var Channel_TooMuchBots: String { return self._s[4252]! } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4253]!, self._r[4253]!, [_0]) + return formatWithArgumentRanges(self._s[4254]!, self._r[4254]!, [_0]) } - public var Call_IncomingVideoCall: String { return self._s[4254]! } - public var Conversation_LiveLocation: String { return self._s[4255]! } - public var VoiceChat_AskedToSpeakHelp: String { return self._s[4256]! } - public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[4257]! } - public var Passport_Identity_EditPassport: String { return self._s[4258]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[4260]! } - public var ChatList_Search_NoResultsFitlerVoice: String { return self._s[4261]! } - public var GroupInfo_Permissions_AddException: String { return self._s[4262]! } + public var Call_IncomingVideoCall: String { return self._s[4255]! } + public var Conversation_LiveLocation: String { return self._s[4256]! } + public var VoiceChat_AskedToSpeakHelp: String { return self._s[4257]! } + public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[4258]! } + public var Passport_Identity_EditPassport: String { return self._s[4259]! } + public var Permissions_CellularDataTitle_v0: String { return self._s[4261]! } + public var ChatList_Search_NoResultsFitlerVoice: String { return self._s[4262]! } + public var GroupInfo_Permissions_AddException: String { return self._s[4263]! } public func VoiceChat_RemovePeerConfirmationChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4264]!, self._r[4264]!, [_0]) + return formatWithArgumentRanges(self._s[4265]!, self._r[4265]!, [_0]) } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[4265]! } - public var Channel_MessageVideoUpdated: String { return self._s[4266]! } - public var GroupInfo_Permissions_EditingDisabled: String { return self._s[4267]! } - public var AutoremoveSetup_TimeSectionHeader: String { return self._s[4270]! } - public var AccessDenied_Camera: String { return self._s[4271]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[4266]! } + public var Channel_MessageVideoUpdated: String { return self._s[4267]! } + public var GroupInfo_Permissions_EditingDisabled: String { return self._s[4268]! } + public var AutoremoveSetup_TimeSectionHeader: String { return self._s[4271]! } + public var AccessDenied_Camera: String { return self._s[4272]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4272]!, self._r[4272]!, [_0]) + return formatWithArgumentRanges(self._s[4273]!, self._r[4273]!, [_0]) } - public var Theme_Context_ChangeColors: String { return self._s[4273]! } - public var PrivacySettings_TwoStepAuth: String { return self._s[4274]! } - public var Privacy_Forwards_PreviewMessageText: String { return self._s[4275]! } - public var Login_CodeExpiredError: String { return self._s[4276]! } - public var State_ConnectingToProxy: String { return self._s[4277]! } - public var TextFormat_Link: String { return self._s[4278]! } - public var Passport_Language_lv: String { return self._s[4280]! } - public var Conversation_AutoremoveTimerRemovedGroup: String { return self._s[4281]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[4282]! } - public var WallpaperPreview_SwipeBottomText: String { return self._s[4283]! } - public var ProfilePhoto_SetMainVideo: String { return self._s[4284]! } - public var AutoDownloadSettings_Cellular: String { return self._s[4286]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[4287]! } - public var Calls_NoVoiceAndVideoCallsPlaceholder: String { return self._s[4288]! } + public var Theme_Context_ChangeColors: String { return self._s[4274]! } + public var PrivacySettings_TwoStepAuth: String { return self._s[4275]! } + public var Privacy_Forwards_PreviewMessageText: String { return self._s[4276]! } + public var Login_CodeExpiredError: String { return self._s[4277]! } + public var State_ConnectingToProxy: String { return self._s[4278]! } + public var TextFormat_Link: String { return self._s[4279]! } + public var Passport_Language_lv: String { return self._s[4281]! } + public var Conversation_AutoremoveTimerRemovedGroup: String { return self._s[4282]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[4283]! } + public var WallpaperPreview_SwipeBottomText: String { return self._s[4284]! } + public var ProfilePhoto_SetMainVideo: String { return self._s[4285]! } + public var AutoDownloadSettings_Cellular: String { return self._s[4287]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[4288]! } + public var Calls_NoVoiceAndVideoCallsPlaceholder: String { return self._s[4289]! } public func Channel_AdminLog_MessageKickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4289]!, self._r[4289]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4290]!, self._r[4290]!, [_1, _2]) } - public var ChatList_EmptyChatListFilterTitle: String { return self._s[4290]! } - public var Checkout_PayNone: String { return self._s[4291]! } - public var NotificationsSound_Complete: String { return self._s[4293]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[4294]! } - public var InviteLink_CreateInfo: String { return self._s[4295]! } - public var AuthSessions_DevicesTitle: String { return self._s[4296]! } + public var ChatList_EmptyChatListFilterTitle: String { return self._s[4291]! } + public var Checkout_PayNone: String { return self._s[4292]! } + public var NotificationsSound_Complete: String { return self._s[4294]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[4295]! } + public var InviteLink_CreateInfo: String { return self._s[4296]! } + public var AuthSessions_DevicesTitle: String { return self._s[4297]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4297]!, self._r[4297]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4298]!, self._r[4298]!, [_0, _1]) } - public var Message_LiveLocation: String { return self._s[4298]! } - public var Watch_Suggestion_BRB: String { return self._s[4299]! } - public var Channel_BanUser_Title: String { return self._s[4300]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4301]! } - public var Conversation_Dice_u1F3C0: String { return self._s[4302]! } - public var Conversation_ClearSelfHistory: String { return self._s[4303]! } - public var ProfilePhoto_OpenGallery: String { return self._s[4304]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[4305]! } - public var Weekday_Thursday: String { return self._s[4306]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[4307]! } - public var Privacy_ProfilePhoto: String { return self._s[4309]! } - public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[4310]! } + public var Message_LiveLocation: String { return self._s[4299]! } + public var Watch_Suggestion_BRB: String { return self._s[4300]! } + public var Channel_BanUser_Title: String { return self._s[4301]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4302]! } + public var Conversation_Dice_u1F3C0: String { return self._s[4303]! } + public var Conversation_ClearSelfHistory: String { return self._s[4304]! } + public var ProfilePhoto_OpenGallery: String { return self._s[4305]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[4306]! } + public var Weekday_Thursday: String { return self._s[4307]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[4308]! } + public var Privacy_ProfilePhoto: String { return self._s[4310]! } + public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[4311]! } public func Channel_AdminLog_MessageChangedUnlinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4311]!, self._r[4311]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4312]!, self._r[4312]!, [_1, _2]) } - public var Message_Audio: String { return self._s[4312]! } - public var Conversation_Info: String { return self._s[4313]! } - public var Cache_Videos: String { return self._s[4314]! } - public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[4315]! } - public var Channel_ErrorAddTooMuch: String { return self._s[4316]! } + public var Message_Audio: String { return self._s[4313]! } + public var Conversation_Info: String { return self._s[4314]! } + public var Cache_Videos: String { return self._s[4315]! } + public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[4316]! } + public var Channel_ErrorAddTooMuch: String { return self._s[4317]! } public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4317]!, self._r[4317]!, [_0]) + return formatWithArgumentRanges(self._s[4318]!, self._r[4318]!, [_0]) } - public var VoiceChat_EditBio: String { return self._s[4318]! } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[4320]! } - public var VoiceChat_ShareScreen: String { return self._s[4323]! } - public var ScheduledMessages_Title: String { return self._s[4324]! } - public var ShareFileTip_Title: String { return self._s[4327]! } - public var Chat_Gifs_TrendingSectionHeader: String { return self._s[4328]! } - public var ChatList_RemoveFolderConfirmation: String { return self._s[4329]! } + public var VoiceChat_EditBio: String { return self._s[4319]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[4321]! } + public var VoiceChat_ShareScreen: String { return self._s[4324]! } + public var ScheduledMessages_Title: String { return self._s[4325]! } + public var ShareFileTip_Title: String { return self._s[4328]! } + public var Chat_Gifs_TrendingSectionHeader: String { return self._s[4329]! } + public var ChatList_RemoveFolderConfirmation: String { return self._s[4330]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4330]!, self._r[4330]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4331]!, self._r[4331]!, [_1, _2]) } - public var Conversation_ContextViewStats: String { return self._s[4332]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[4333]! } - public var PasscodeSettings_Title: String { return self._s[4334]! } - public var Channel_AdminLog_SendPolls: String { return self._s[4335]! } - public var LastSeen_ALongTimeAgo: String { return self._s[4336]! } + public var Conversation_ContextViewStats: String { return self._s[4333]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[4334]! } + public var PasscodeSettings_Title: String { return self._s[4335]! } + public var Channel_AdminLog_SendPolls: String { return self._s[4336]! } + public var LastSeen_ALongTimeAgo: String { return self._s[4337]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4337]!, self._r[4337]!, [_1]) + return formatWithArgumentRanges(self._s[4338]!, self._r[4338]!, [_1]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4338]! } - public var ChannelInfo_FakeChannelWarning: String { return self._s[4339]! } - public var CallFeedback_VideoReasonLowQuality: String { return self._s[4340]! } - public var Conversation_PinnedPreviousMessage: String { return self._s[4341]! } - public var SocksProxySetup_AddProxyTitle: String { return self._s[4342]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[4343]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4339]! } + public var ChannelInfo_FakeChannelWarning: String { return self._s[4340]! } + public var CallFeedback_VideoReasonLowQuality: String { return self._s[4341]! } + public var Conversation_PinnedPreviousMessage: String { return self._s[4342]! } + public var SocksProxySetup_AddProxyTitle: String { return self._s[4343]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[4344]! } public func ChatList_RemovedFromFolderTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4344]!, self._r[4344]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4345]!, self._r[4345]!, [_1, _2]) } public func Conversation_SetReminder_RemindToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4345]!, self._r[4345]!, [_0]) + return formatWithArgumentRanges(self._s[4346]!, self._r[4346]!, [_0]) } - public var Passport_Identity_GenderFemale: String { return self._s[4346]! } - public var Location_ProximityNotification_DistanceKM: String { return self._s[4349]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[4350]! } + public var Passport_Identity_GenderFemale: String { return self._s[4347]! } + public var Location_ProximityNotification_DistanceKM: String { return self._s[4350]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[4351]! } public func Message_ImportedDateFormat(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4351]!, self._r[4351]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4352]!, self._r[4352]!, [_1, _2, _3]) } - public var VoiceChat_Audio: String { return self._s[4352]! } - public var SharedMedia_TitleAll: String { return self._s[4353]! } - public var Settings_Context_Logout: String { return self._s[4354]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[4357]! } - public var Settings_About_Title: String { return self._s[4358]! } - public var StickerSettings_ContextHide: String { return self._s[4359]! } + public var VoiceChat_Audio: String { return self._s[4353]! } + public var SharedMedia_TitleAll: String { return self._s[4354]! } + public var Settings_Context_Logout: String { return self._s[4355]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[4358]! } + public var Settings_About_Title: String { return self._s[4359]! } + public var StickerSettings_ContextHide: String { return self._s[4360]! } public func AutoDownloadSettings_UpTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4360]!, self._r[4360]!, [_0]) - } - public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4361]!, self._r[4361]!, [_0]) } - public var ChatImport_SelectionConfirmationAlertImportAction: String { return self._s[4363]! } - public var Common_Cancel: String { return self._s[4364]! } - public var CallFeedback_Title: String { return self._s[4366]! } - public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4367]!, self._r[4367]!, [_0]) + public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4362]!, self._r[4362]!, [_0]) } - public var Conversation_StickerAddedToFavorites: String { return self._s[4368]! } - public var Activity_UploadingVideoMessage: String { return self._s[4370]! } - public var MediaPicker_Send: String { return self._s[4371]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[4372]! } - public var Conversation_LiveLocationYou: String { return self._s[4373]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[4374]! } + public var ChatImport_SelectionConfirmationAlertImportAction: String { return self._s[4364]! } + public var Common_Cancel: String { return self._s[4365]! } + public var CallFeedback_Title: String { return self._s[4367]! } + public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4368]!, self._r[4368]!, [_0]) + } + public var Conversation_StickerAddedToFavorites: String { return self._s[4369]! } + public var Activity_UploadingVideoMessage: String { return self._s[4371]! } + public var MediaPicker_Send: String { return self._s[4372]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[4373]! } + public var Conversation_LiveLocationYou: String { return self._s[4374]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[4375]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4376]!, self._r[4376]!, [_0]) + return formatWithArgumentRanges(self._s[4377]!, self._r[4377]!, [_0]) } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4377]!, self._r[4377]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4378]!, self._r[4378]!, [_1, _2]) } - public var Checkout_PaymentLiabilityAlert: String { return self._s[4378]! } - public var Conversation_ViewBackground: String { return self._s[4379]! } - public var ChatSettings_PrivateChats: String { return self._s[4382]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[4383]! } - public var BroadcastGroups_LimitAlert_LearnMore: String { return self._s[4384]! } - public var Appearance_ThemeNight: String { return self._s[4385]! } - public var Common_Search: String { return self._s[4386]! } - public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[4387]! } - public var ChangePhoneNumberNumber_Help: String { return self._s[4389]! } - public var InviteLink_QRCode_Share: String { return self._s[4390]! } - public var Stickers_SuggestAdded: String { return self._s[4392]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[4395]! } - public var Widget_UpdatedTodayAt: String { return self._s[4396]! } - public var NetworkUsageSettings_Cellular: String { return self._s[4397]! } - public var CheckoutInfo_Title: String { return self._s[4398]! } - public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[4399]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[4400]! } + public var Checkout_PaymentLiabilityAlert: String { return self._s[4379]! } + public var Conversation_ViewBackground: String { return self._s[4380]! } + public var ChatSettings_PrivateChats: String { return self._s[4383]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[4384]! } + public var BroadcastGroups_LimitAlert_LearnMore: String { return self._s[4385]! } + public var Appearance_ThemeNight: String { return self._s[4386]! } + public var Common_Search: String { return self._s[4387]! } + public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[4388]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[4390]! } + public var InviteLink_QRCode_Share: String { return self._s[4391]! } + public var Stickers_SuggestAdded: String { return self._s[4393]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[4396]! } + public var Widget_UpdatedTodayAt: String { return self._s[4397]! } + public var NetworkUsageSettings_Cellular: String { return self._s[4398]! } + public var CheckoutInfo_Title: String { return self._s[4399]! } + public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[4400]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[4401]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4401]!, self._r[4401]!, [_0]) + return formatWithArgumentRanges(self._s[4402]!, self._r[4402]!, [_0]) } - public var MaskStickerSettings_Info: String { return self._s[4403]! } - public var GroupRemoved_DeleteUser: String { return self._s[4405]! } - public var Contacts_ShareTelegram: String { return self._s[4406]! } - public var Group_UpgradeNoticeText1: String { return self._s[4407]! } + public var MaskStickerSettings_Info: String { return self._s[4404]! } + public var GroupRemoved_DeleteUser: String { return self._s[4406]! } + public var Contacts_ShareTelegram: String { return self._s[4407]! } + public var Group_UpgradeNoticeText1: String { return self._s[4408]! } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4408]!, self._r[4408]!, [_1]) + return formatWithArgumentRanges(self._s[4409]!, self._r[4409]!, [_1]) } - public var PrivacyLastSeenSettings_Title: String { return self._s[4409]! } - public var SettingsSearch_Synonyms_Support: String { return self._s[4413]! } - public var PhotoEditor_TintTool: String { return self._s[4414]! } - public var ChatImportActivity_OpenApp: String { return self._s[4416]! } - public var GroupPermission_NoSendPolls: String { return self._s[4417]! } - public var NotificationsSound_None: String { return self._s[4418]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[4410]! } + public var SettingsSearch_Synonyms_Support: String { return self._s[4414]! } + public var PhotoEditor_TintTool: String { return self._s[4415]! } + public var ChatImportActivity_OpenApp: String { return self._s[4417]! } + public var GroupPermission_NoSendPolls: String { return self._s[4418]! } + public var NotificationsSound_None: String { return self._s[4419]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4419]!, self._r[4419]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4420]!, self._r[4420]!, [_1, "\(_2)"]) } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4422]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4423]! } public func Conversation_AutoremoveTimerSetChannel(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4424]!, self._r[4424]!, [_1]) + return formatWithArgumentRanges(self._s[4425]!, self._r[4425]!, [_1]) } - public var ExplicitContent_AlertChannel: String { return self._s[4425]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[4426]! } - public var Contacts_SortedByPresence: String { return self._s[4427]! } - public var WallpaperSearch_ColorGray: String { return self._s[4428]! } - public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4429]! } - public var Conversation_ReportSpam: String { return self._s[4430]! } - public var ChatList_Search_NoResultsFilter: String { return self._s[4433]! } - public var WallpaperSearch_ColorBlack: String { return self._s[4434]! } - public var ArchivedChats_IntroTitle3: String { return self._s[4435]! } - public var InviteLink_DeleteAllRevokedLinksAlert_Action: String { return self._s[4436]! } + public var ExplicitContent_AlertChannel: String { return self._s[4426]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[4427]! } + public var Contacts_SortedByPresence: String { return self._s[4428]! } + public var WallpaperSearch_ColorGray: String { return self._s[4429]! } + public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4430]! } + public var Conversation_ReportSpam: String { return self._s[4431]! } + public var ChatList_Search_NoResultsFilter: String { return self._s[4434]! } + public var WallpaperSearch_ColorBlack: String { return self._s[4435]! } + public var ArchivedChats_IntroTitle3: String { return self._s[4436]! } + public var InviteLink_DeleteAllRevokedLinksAlert_Action: String { return self._s[4437]! } public func VoiceChat_PeerJoinedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4437]!, self._r[4437]!, [_0]) + return formatWithArgumentRanges(self._s[4438]!, self._r[4438]!, [_0]) } - public var Conversation_DefaultRestrictedText: String { return self._s[4438]! } - public var Settings_Devices: String { return self._s[4439]! } - public var Call_AudioRouteSpeaker: String { return self._s[4440]! } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[4441]! } - public var VoiceChat_StartsIn: String { return self._s[4442]! } - public var VoiceChat_CreateNewVoiceChatSchedule: String { return self._s[4443]! } - public var VoiceChat_EditDescriptionTitle: String { return self._s[4445]! } - public var Passport_Address_Country: String { return self._s[4446]! } - public var Cache_MaximumCacheSize: String { return self._s[4447]! } - public var Chat_PanelHidePinnedMessages: String { return self._s[4448]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[4449]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4451]! } - public var Login_TermsOfServiceLabel: String { return self._s[4452]! } - public var Calls_NoMissedCallsPlacehoder: String { return self._s[4453]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4454]! } - public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4455]! } - public var AutoNightTheme_ScheduledFrom: String { return self._s[4456]! } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[4457]! } - public var ConvertToSupergroup_Note: String { return self._s[4459]! } - public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4460]! } - public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4461]! } - public var Common_More: String { return self._s[4462]! } - public var ShareMenu_SelectChats: String { return self._s[4464]! } + public var Conversation_DefaultRestrictedText: String { return self._s[4439]! } + public var Settings_Devices: String { return self._s[4440]! } + public var Call_AudioRouteSpeaker: String { return self._s[4441]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[4442]! } + public var VoiceChat_StartsIn: String { return self._s[4443]! } + public var VoiceChat_CreateNewVoiceChatSchedule: String { return self._s[4444]! } + public var VoiceChat_EditDescriptionTitle: String { return self._s[4446]! } + public var Passport_Address_Country: String { return self._s[4447]! } + public var Cache_MaximumCacheSize: String { return self._s[4448]! } + public var Chat_PanelHidePinnedMessages: String { return self._s[4449]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[4450]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4452]! } + public var Login_TermsOfServiceLabel: String { return self._s[4453]! } + public var Calls_NoMissedCallsPlacehoder: String { return self._s[4454]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4455]! } + public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4456]! } + public var AutoNightTheme_ScheduledFrom: String { return self._s[4457]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[4458]! } + public var ConvertToSupergroup_Note: String { return self._s[4460]! } + public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4461]! } + public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4462]! } + public var Common_More: String { return self._s[4463]! } + public var ShareMenu_SelectChats: String { return self._s[4465]! } public func Conversation_ScheduleMessage_SendToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4465]!, self._r[4465]!, [_0]) - } - public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4466]!, self._r[4466]!, [_0]) } - public var Contacts_PermissionsKeepDisabled: String { return self._s[4468]! } - public var VoiceChat_EditBioText: String { return self._s[4469]! } + public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4467]!, self._r[4467]!, [_0]) + } + public var Contacts_PermissionsKeepDisabled: String { return self._s[4469]! } + public var VoiceChat_EditBioText: String { return self._s[4470]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4470]!, self._r[4470]!, [_0]) + return formatWithArgumentRanges(self._s[4471]!, self._r[4471]!, [_0]) } - public var WatchRemote_AlertOpen: String { return self._s[4471]! } + public var WatchRemote_AlertOpen: String { return self._s[4472]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4472]!, self._r[4472]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4473]!, self._r[4473]!, [_1, _2, _3]) } - public var Channel_Members_AddMembersHelp: String { return self._s[4473]! } - public var Shortcut_SwitchAccount: String { return self._s[4474]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4475]! } + public var Channel_Members_AddMembersHelp: String { return self._s[4474]! } + public var Shortcut_SwitchAccount: String { return self._s[4475]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4476]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4476]!, self._r[4476]!, [_0]) + return formatWithArgumentRanges(self._s[4477]!, self._r[4477]!, [_0]) } - public var Compose_NewGroupTitle: String { return self._s[4477]! } - public var DialogList_You: String { return self._s[4478]! } - public var Call_VoiceOver_VoiceCallOutgoing: String { return self._s[4479]! } - public var ReportPeer_ReasonViolence: String { return self._s[4480]! } + public var Compose_NewGroupTitle: String { return self._s[4478]! } + public var DialogList_You: String { return self._s[4479]! } + public var Call_VoiceOver_VoiceCallOutgoing: String { return self._s[4480]! } + public var ReportPeer_ReasonViolence: String { return self._s[4481]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4481]!, self._r[4481]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4482]!, self._r[4482]!, [_1, _2]) } - public var VoiceChat_Reconnecting: String { return self._s[4483]! } - public var KeyCommand_ScrollDown: String { return self._s[4486]! } - public var ChatSettings_DownloadInBackground: String { return self._s[4487]! } - public var Wallpaper_ResetWallpapers: String { return self._s[4488]! } - public var Channel_BanList_RestrictedTitle: String { return self._s[4489]! } - public var ArchivedChats_IntroText3: String { return self._s[4490]! } - public var HashtagSearch_AllChats: String { return self._s[4492]! } - public var VoiceChat_EndVoiceChat: String { return self._s[4493]! } - public var Conversation_MessageCopied: String { return self._s[4495]! } - public var Channel_Info_BlackList: String { return self._s[4496]! } - public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4497]! } - public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4498]! } - public var Paint_Neon: String { return self._s[4500]! } - public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4501]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[4502]! } + public var VoiceChat_Reconnecting: String { return self._s[4484]! } + public var KeyCommand_ScrollDown: String { return self._s[4487]! } + public var ChatSettings_DownloadInBackground: String { return self._s[4488]! } + public var Wallpaper_ResetWallpapers: String { return self._s[4489]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[4490]! } + public var ArchivedChats_IntroText3: String { return self._s[4491]! } + public var HashtagSearch_AllChats: String { return self._s[4493]! } + public var VoiceChat_EndVoiceChat: String { return self._s[4494]! } + public var Conversation_MessageCopied: String { return self._s[4496]! } + public var Channel_Info_BlackList: String { return self._s[4497]! } + public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4498]! } + public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4499]! } + public var Paint_Neon: String { return self._s[4501]! } + public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4502]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[4503]! } public func Notification_PinnedVideoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4504]!, self._r[4504]!, [_0]) + return formatWithArgumentRanges(self._s[4505]!, self._r[4505]!, [_0]) } - public var Map_StopLiveLocation: String { return self._s[4505]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4506]! } - public var Channel_Username_InvalidCharacters: String { return self._s[4507]! } - public var InstantPage_Reference: String { return self._s[4509]! } - public var Group_Members_AddMembers: String { return self._s[4511]! } + public var Map_StopLiveLocation: String { return self._s[4506]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4507]! } + public var Channel_Username_InvalidCharacters: String { return self._s[4508]! } + public var InstantPage_Reference: String { return self._s[4510]! } + public var Group_Members_AddMembers: String { return self._s[4512]! } public func Conversation_ScheduledVoiceChatStartsOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4512]!, self._r[4512]!, [_0]) + return formatWithArgumentRanges(self._s[4513]!, self._r[4513]!, [_0]) } - public var ChatList_HideAction: String { return self._s[4513]! } - public var Conversation_FileICloudDrive: String { return self._s[4515]! } + public var ChatList_HideAction: String { return self._s[4514]! } + public var Conversation_FileICloudDrive: String { return self._s[4516]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4516]!, self._r[4516]!, [_1]) + return formatWithArgumentRanges(self._s[4517]!, self._r[4517]!, [_1]) } - public var Passport_PasswordReset: String { return self._s[4518]! } - public var ChatList_Context_UnhideArchive: String { return self._s[4520]! } - public var ConvertToSupergroup_HelpText: String { return self._s[4521]! } - public var Calls_AddTab: String { return self._s[4522]! } - public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4524]! } - public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4525]! } - public var Privacy_GroupsAndChannels: String { return self._s[4528]! } - public var Conversation_UsernameCopied: String { return self._s[4529]! } - public var AutoNightTheme_Disabled: String { return self._s[4530]! } - public var CreatePoll_MultipleChoice: String { return self._s[4531]! } + public var Passport_PasswordReset: String { return self._s[4519]! } + public var ChatList_Context_UnhideArchive: String { return self._s[4521]! } + public var ConvertToSupergroup_HelpText: String { return self._s[4522]! } + public var Calls_AddTab: String { return self._s[4523]! } + public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4525]! } + public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4526]! } + public var Privacy_GroupsAndChannels: String { return self._s[4529]! } + public var Conversation_UsernameCopied: String { return self._s[4530]! } + public var AutoNightTheme_Disabled: String { return self._s[4531]! } + public var CreatePoll_MultipleChoice: String { return self._s[4532]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4532]!, self._r[4532]!, [_1]) + return formatWithArgumentRanges(self._s[4533]!, self._r[4533]!, [_1]) } - public var Watch_Bot_Restart: String { return self._s[4534]! } + public var Watch_Bot_Restart: String { return self._s[4535]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4535]!, self._r[4535]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[4536]!, self._r[4536]!, ["\(_0)"]) } - public var GroupInfo_ScamGroupWarning: String { return self._s[4537]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[4538]! } - public var Appearance_PreviewIncomingText: String { return self._s[4539]! } - public var ChatSettings_WidgetSettings: String { return self._s[4540]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4541]! } - public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4543]! } - public var Stats_GroupOverview: String { return self._s[4545]! } - public var ScheduledMessages_EditTime: String { return self._s[4548]! } - public var Month_GenFebruary: String { return self._s[4549]! } - public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4550]! } - public var Stickers_ClearRecent: String { return self._s[4551]! } - public var InviteLink_Create_UsersLimitNumberOfUsersUnlimited: String { return self._s[4552]! } - public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4553]! } - public var Stats_Message_PublicShares: String { return self._s[4554]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[4538]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[4539]! } + public var Appearance_PreviewIncomingText: String { return self._s[4540]! } + public var ChatSettings_WidgetSettings: String { return self._s[4541]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4542]! } + public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4544]! } + public var Stats_GroupOverview: String { return self._s[4546]! } + public var ScheduledMessages_EditTime: String { return self._s[4549]! } + public var Month_GenFebruary: String { return self._s[4550]! } + public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4551]! } + public var Stickers_ClearRecent: String { return self._s[4552]! } + public var InviteLink_Create_UsersLimitNumberOfUsersUnlimited: String { return self._s[4553]! } + public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4554]! } + public var Stats_Message_PublicShares: String { return self._s[4555]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4555]!, self._r[4555]!, [_0]) + return formatWithArgumentRanges(self._s[4556]!, self._r[4556]!, [_0]) } - public var Login_TermsOfServiceSignupDecline: String { return self._s[4556]! } - public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4557]! } - public var VoiceOver_Chat_PlayHint: String { return self._s[4558]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4559]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4561]! } - public var CreatePoll_Create: String { return self._s[4562]! } - public var ChatList_Search_FilterLinks: String { return self._s[4563]! } - public var Your_cards_number_is_invalid: String { return self._s[4564]! } - public var Month_ShortApril: String { return self._s[4565]! } - public var SocksProxySetup_UseForCalls: String { return self._s[4566]! } - public var Conversation_EditingCaptionPanelTitle: String { return self._s[4567]! } - public var SocksProxySetup_Status: String { return self._s[4568]! } - public var VoiceChat_UnmuteForMe: String { return self._s[4569]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4570]! } - public var ChatListFolder_CategoryBots: String { return self._s[4571]! } - public var Passport_FieldIdentitySelfieHelp: String { return self._s[4573]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4574]! } - public var Chat_PinnedListPreview_UnpinAllMessages: String { return self._s[4575]! } - public var Wallpaper_ResetWallpapersInfo: String { return self._s[4576]! } - public var Conversation_TitleUnmute: String { return self._s[4577]! } - public var Group_Setup_TypeHeader: String { return self._s[4578]! } + public var Login_TermsOfServiceSignupDecline: String { return self._s[4557]! } + public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4558]! } + public var VoiceOver_Chat_PlayHint: String { return self._s[4559]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4560]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4562]! } + public var CreatePoll_Create: String { return self._s[4563]! } + public var ChatList_Search_FilterLinks: String { return self._s[4564]! } + public var Your_cards_number_is_invalid: String { return self._s[4565]! } + public var Month_ShortApril: String { return self._s[4566]! } + public var SocksProxySetup_UseForCalls: String { return self._s[4567]! } + public var Conversation_EditingCaptionPanelTitle: String { return self._s[4568]! } + public var SocksProxySetup_Status: String { return self._s[4569]! } + public var VoiceChat_UnmuteForMe: String { return self._s[4570]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4571]! } + public var ChatListFolder_CategoryBots: String { return self._s[4572]! } + public var Passport_FieldIdentitySelfieHelp: String { return self._s[4574]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4575]! } + public var Chat_PinnedListPreview_UnpinAllMessages: String { return self._s[4576]! } + public var Wallpaper_ResetWallpapersInfo: String { return self._s[4577]! } + public var Conversation_TitleUnmute: String { return self._s[4578]! } + public var Group_Setup_TypeHeader: String { return self._s[4579]! } public func Conversation_ForwardTooltip_ManyChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4579]!, self._r[4579]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4580]!, self._r[4580]!, [_0, _1]) } - public var Stats_ViewsPerPost: String { return self._s[4580]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4581]! } - public var Passport_Identity_TranslationHelp: String { return self._s[4582]! } + public var Stats_ViewsPerPost: String { return self._s[4581]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4582]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4583]! } public func PUSH_CHANNEL_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4583]!, self._r[4583]!, [_1]) + return formatWithArgumentRanges(self._s[4584]!, self._r[4584]!, [_1]) } - public var GroupInfo_Administrators_Title: String { return self._s[4584]! } + public var GroupInfo_Administrators_Title: String { return self._s[4585]! } public func Channel_AdminLog_MessageRankName(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4585]!, self._r[4585]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4586]!, self._r[4586]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4586]!, self._r[4586]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4587]!, self._r[4587]!, [_1, _2, _3]) } - public var CheckoutInfo_ShippingInfoState: String { return self._s[4587]! } - public var Passport_Language_my: String { return self._s[4589]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4590]! } - public var Map_PlacesNearby: String { return self._s[4591]! } - public var Channel_About_Help: String { return self._s[4592]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[4593]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[4594]! } - public var Channel_Username_Title: String { return self._s[4595]! } - public var Activity_RecordingVideoMessage: String { return self._s[4596]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[4588]! } + public var Passport_Language_my: String { return self._s[4590]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4591]! } + public var Map_PlacesNearby: String { return self._s[4592]! } + public var Channel_About_Help: String { return self._s[4593]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[4594]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[4595]! } + public var Channel_Username_Title: String { return self._s[4596]! } + public var Activity_RecordingVideoMessage: String { return self._s[4597]! } public func StickerPackActionInfo_RemovedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4597]!, self._r[4597]!, [_0]) + return formatWithArgumentRanges(self._s[4598]!, self._r[4598]!, [_0]) } - public var CheckoutInfo_ShippingInfoCity: String { return self._s[4598]! } - public var Passport_DiscardMessageDescription: String { return self._s[4599]! } - public var Conversation_LinkDialogOpen: String { return self._s[4600]! } - public var ChatList_Context_HideArchive: String { return self._s[4601]! } + public var CheckoutInfo_ShippingInfoCity: String { return self._s[4599]! } + public var Passport_DiscardMessageDescription: String { return self._s[4600]! } + public var Conversation_LinkDialogOpen: String { return self._s[4601]! } + public var ChatList_Context_HideArchive: String { return self._s[4602]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4602]!, self._r[4602]!, [_0]) + return formatWithArgumentRanges(self._s[4603]!, self._r[4603]!, [_0]) } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4603]! } - public var Conversation_Admin: String { return self._s[4604]! } - public var DialogList_TabTitle: String { return self._s[4605]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4604]! } + public var Conversation_Admin: String { return self._s[4605]! } + public var DialogList_TabTitle: String { return self._s[4606]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4606]!, self._r[4606]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4607]!, self._r[4607]!, [_1, _2]) } - public var Notifications_PermissionsUnreachableText: String { return self._s[4607]! } - public var Passport_Identity_GenderMale: String { return self._s[4609]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[4608]! } + public var Passport_Identity_GenderMale: String { return self._s[4610]! } public func VoiceChat_EditTitleSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4611]!, self._r[4611]!, [_0]) + return formatWithArgumentRanges(self._s[4612]!, self._r[4612]!, [_0]) } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4612]! } - public var PhoneNumberHelp_Alert: String { return self._s[4613]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4614]! } - public var Notifications_InAppNotifications: String { return self._s[4615]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4613]! } + public var PhoneNumberHelp_Alert: String { return self._s[4614]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4615]! } + public var Notifications_InAppNotifications: String { return self._s[4616]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4616]!, self._r[4616]!, [_0]) + return formatWithArgumentRanges(self._s[4617]!, self._r[4617]!, [_0]) } - public var Notification_VideoCallOutgoing: String { return self._s[4617]! } - public var Login_InvalidCodeError: String { return self._s[4618]! } - public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4619]! } + public var Notification_VideoCallOutgoing: String { return self._s[4618]! } + public var Login_InvalidCodeError: String { return self._s[4619]! } + public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4620]! } public func LastSeen_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4621]!, self._r[4621]!, [_0]) + return formatWithArgumentRanges(self._s[4622]!, self._r[4622]!, [_0]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4622]! } - public var ReportPeer_Report: String { return self._s[4623]! } - public var Camera_FlashOff: String { return self._s[4626]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4629]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4623]! } + public var ReportPeer_Report: String { return self._s[4624]! } + public var Camera_FlashOff: String { return self._s[4627]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4630]! } public func Notification_VoiceChatScheduledTomorrow(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4630]!, self._r[4630]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4631]!, self._r[4631]!, [_1, _2]) } - public var PrivacyPolicy_DeclineTitle: String { return self._s[4633]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4634]! } - public var Passport_FieldEmail: String { return self._s[4635]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[4634]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4635]! } + public var Passport_FieldEmail: String { return self._s[4636]! } public func Channel_AdminLog_MessageKickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4636]!, self._r[4636]!, [_1]) + return formatWithArgumentRanges(self._s[4637]!, self._r[4637]!, [_1]) } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[4637]! } - public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4638]! } - public var Group_OwnershipTransfer_Title: String { return self._s[4639]! } - public var Conversation_DefaultRestrictedInline: String { return self._s[4640]! } - public var Login_PhoneNumberHelp: String { return self._s[4642]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4643]! } - public var Conversation_PinnedQuiz: String { return self._s[4644]! } - public var CreateGroup_SoftUserLimitAlert: String { return self._s[4645]! } - public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4646]! } - public var Group_MessagePhotoUpdated: String { return self._s[4647]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[4648]! } - public var BroadcastGroups_ConfirmationAlert_Text: String { return self._s[4649]! } - public var Passport_Identity_Translations: String { return self._s[4651]! } - public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4652]! } - public var ChannelInfo_DeleteChannel: String { return self._s[4654]! } - public var PasscodeSettings_HelpBottom: String { return self._s[4655]! } - public var Channel_Members_AddMembers: String { return self._s[4656]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[4657]! } - public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4659]! } - public var Conversation_HoldForAudio: String { return self._s[4660]! } - public var Media_LimitedAccessChangeSettings: String { return self._s[4662]! } - public var Watch_LastSeen_Lately: String { return self._s[4663]! } - public var ChatList_Context_MarkAsRead: String { return self._s[4664]! } - public var Conversation_PinnedMessage: String { return self._s[4665]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4666]! } - public var VoiceChat_StopRecordingStop: String { return self._s[4668]! } - public var Passport_UpdateRequiredError: String { return self._s[4669]! } - public var PrivacySettings_Passcode: String { return self._s[4670]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[4638]! } + public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4639]! } + public var Group_OwnershipTransfer_Title: String { return self._s[4640]! } + public var Conversation_DefaultRestrictedInline: String { return self._s[4641]! } + public var Login_PhoneNumberHelp: String { return self._s[4643]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4644]! } + public var Conversation_PinnedQuiz: String { return self._s[4645]! } + public var CreateGroup_SoftUserLimitAlert: String { return self._s[4646]! } + public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4647]! } + public var Group_MessagePhotoUpdated: String { return self._s[4648]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[4649]! } + public var BroadcastGroups_ConfirmationAlert_Text: String { return self._s[4650]! } + public var Passport_Identity_Translations: String { return self._s[4652]! } + public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4653]! } + public var ChannelInfo_DeleteChannel: String { return self._s[4655]! } + public var PasscodeSettings_HelpBottom: String { return self._s[4656]! } + public var Channel_Members_AddMembers: String { return self._s[4657]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[4658]! } + public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4660]! } + public var Conversation_HoldForAudio: String { return self._s[4661]! } + public var Media_LimitedAccessChangeSettings: String { return self._s[4663]! } + public var Watch_LastSeen_Lately: String { return self._s[4664]! } + public var ChatList_Context_MarkAsRead: String { return self._s[4665]! } + public var Conversation_PinnedMessage: String { return self._s[4666]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4667]! } + public var VoiceChat_StopRecordingStop: String { return self._s[4669]! } + public var Passport_UpdateRequiredError: String { return self._s[4670]! } + public var PrivacySettings_Passcode: String { return self._s[4671]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4671]!, self._r[4671]!, [_0]) + return formatWithArgumentRanges(self._s[4672]!, self._r[4672]!, [_0]) } - public var AutoNightTheme_NotAvailable: String { return self._s[4672]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[4673]! } - public var VoiceOver_Common_On: String { return self._s[4674]! } - public var LoginPassword_InvalidPasswordError: String { return self._s[4675]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4676]! } - public var Channel_SignMessages_Help: String { return self._s[4677]! } - public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4678]! } - public var Conversation_TitleNoComments: String { return self._s[4679]! } - public var MediaPicker_LivePhotoDescription: String { return self._s[4680]! } - public var GroupInfo_Permissions: String { return self._s[4681]! } - public var GroupPermission_NoSendLinks: String { return self._s[4684]! } + public var AutoNightTheme_NotAvailable: String { return self._s[4673]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[4674]! } + public var VoiceOver_Common_On: String { return self._s[4675]! } + public var LoginPassword_InvalidPasswordError: String { return self._s[4676]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4677]! } + public var Channel_SignMessages_Help: String { return self._s[4678]! } + public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4679]! } + public var Conversation_TitleNoComments: String { return self._s[4680]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[4681]! } + public var GroupInfo_Permissions: String { return self._s[4682]! } + public var GroupPermission_NoSendLinks: String { return self._s[4685]! } public func Conversation_ScheduledVoiceChatStartsTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4685]!, self._r[4685]!, [_0]) + return formatWithArgumentRanges(self._s[4686]!, self._r[4686]!, [_0]) } - public var Passport_Identity_ResidenceCountry: String { return self._s[4686]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[4688]! } - public var ChatList_ArchiveAction: String { return self._s[4689]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[4687]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[4689]! } + public var ChatList_ArchiveAction: String { return self._s[4690]! } public func Channel_AdminLog_DisabledSlowmode(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4690]!, self._r[4690]!, [_0]) + return formatWithArgumentRanges(self._s[4691]!, self._r[4691]!, [_0]) } - public var GroupInfo_GroupHistory: String { return self._s[4691]! } + public var GroupInfo_GroupHistory: String { return self._s[4692]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4693]!, self._r[4693]!, [_0]) + return formatWithArgumentRanges(self._s[4694]!, self._r[4694]!, [_0]) } - public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4695]! } - public var Channel_Info_Banned: String { return self._s[4696]! } - public var Paint_RecentStickers: String { return self._s[4697]! } - public var VoiceOver_MessageContextSend: String { return self._s[4698]! } - public var Group_ErrorNotMutualContact: String { return self._s[4699]! } - public var ReportPeer_ReasonOther: String { return self._s[4701]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4702]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4704]! } - public var KeyCommand_Find: String { return self._s[4705]! } + public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4696]! } + public var Channel_Info_Banned: String { return self._s[4697]! } + public var Paint_RecentStickers: String { return self._s[4698]! } + public var VoiceOver_MessageContextSend: String { return self._s[4699]! } + public var Group_ErrorNotMutualContact: String { return self._s[4700]! } + public var ReportPeer_ReasonOther: String { return self._s[4702]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4703]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4705]! } + public var KeyCommand_Find: String { return self._s[4706]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4706]!, self._r[4706]!, [_0]) + return formatWithArgumentRanges(self._s[4707]!, self._r[4707]!, [_0]) } - public var ChatList_Context_Unmute: String { return self._s[4707]! } - public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4708]! } - public var Stickers_GroupStickersHelp: String { return self._s[4709]! } - public var Checkout_Title: String { return self._s[4710]! } - public var Activity_RecordingAudio: String { return self._s[4711]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4712]! } - public var BlockedUsers_BlockTitle: String { return self._s[4713]! } - public var DialogList_SavedMessagesHelp: String { return self._s[4715]! } - public var Calls_All: String { return self._s[4716]! } - public var Settings_FAQ_Button: String { return self._s[4718]! } - public var Conversation_Dice_u1F3B0: String { return self._s[4720]! } + public var ChatList_Context_Unmute: String { return self._s[4708]! } + public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4709]! } + public var Stickers_GroupStickersHelp: String { return self._s[4710]! } + public var Checkout_Title: String { return self._s[4711]! } + public var Activity_RecordingAudio: String { return self._s[4712]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4713]! } + public var BlockedUsers_BlockTitle: String { return self._s[4714]! } + public var DialogList_SavedMessagesHelp: String { return self._s[4716]! } + public var Calls_All: String { return self._s[4717]! } + public var Settings_FAQ_Button: String { return self._s[4719]! } + public var Conversation_Dice_u1F3B0: String { return self._s[4721]! } public func Time_MonthOfYear_m5(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4721]!, self._r[4721]!, [_0]) + return formatWithArgumentRanges(self._s[4722]!, self._r[4722]!, [_0]) } - public var Conversation_ReportGroupLocation: String { return self._s[4722]! } - public var Passport_Scans_Upload: String { return self._s[4723]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4725]! } - public var ChatList_UnarchiveAction: String { return self._s[4726]! } - public var Stats_GroupTopInviter_History: String { return self._s[4727]! } - public var GroupInfo_Permissions_Title: String { return self._s[4728]! } - public var VoiceChat_CreateNewVoiceChatStart: String { return self._s[4729]! } - public var Passport_Language_el: String { return self._s[4730]! } - public var Channel_DiscussionMessageUnavailable: String { return self._s[4731]! } + public var Conversation_ReportGroupLocation: String { return self._s[4723]! } + public var Passport_Scans_Upload: String { return self._s[4724]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4726]! } + public var ChatList_UnarchiveAction: String { return self._s[4727]! } + public var Stats_GroupTopInviter_History: String { return self._s[4728]! } + public var GroupInfo_Permissions_Title: String { return self._s[4729]! } + public var VoiceChat_CreateNewVoiceChatStart: String { return self._s[4730]! } + public var Passport_Language_el: String { return self._s[4731]! } + public var Channel_DiscussionMessageUnavailable: String { return self._s[4732]! } public func UserInfo_ContactForwardTooltip_TwoChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4732]!, self._r[4732]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4733]!, self._r[4733]!, [_0, _1]) } - public var GroupInfo_ActionPromote: String { return self._s[4733]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4734]! } - public var Media_LimitedAccessSelectMore: String { return self._s[4735]! } + public var GroupInfo_ActionPromote: String { return self._s[4734]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4735]! } + public var Media_LimitedAccessSelectMore: String { return self._s[4736]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4736]!, self._r[4736]!, [_0]) + return formatWithArgumentRanges(self._s[4737]!, self._r[4737]!, [_0]) } - public var VoiceOver_Chat_Reply: String { return self._s[4737]! } - public var Month_GenMay: String { return self._s[4738]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4739]! } - public var Chat_PsaTooltip_covid: String { return self._s[4740]! } - public var Watch_Suggestion_CantTalk: String { return self._s[4741]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4742]! } - public var AppUpgrade_Running: String { return self._s[4743]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4746]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4747]! } - public var SharedMedia_EmptyText: String { return self._s[4748]! } - public var Passport_Address_EditResidentialAddress: String { return self._s[4749]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4750]! } - public var Message_PinnedGame: String { return self._s[4751]! } - public var KeyCommand_SearchInChat: String { return self._s[4752]! } - public var Appearance_ThemeCarouselNewNight: String { return self._s[4753]! } - public var ChatList_Search_FilterMedia: String { return self._s[4754]! } - public var Message_PinnedAudioMessage: String { return self._s[4755]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[4757]! } + public var VoiceOver_Chat_Reply: String { return self._s[4738]! } + public var Month_GenMay: String { return self._s[4739]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4740]! } + public var Chat_PsaTooltip_covid: String { return self._s[4741]! } + public var Watch_Suggestion_CantTalk: String { return self._s[4742]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4743]! } + public var AppUpgrade_Running: String { return self._s[4744]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4747]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4748]! } + public var SharedMedia_EmptyText: String { return self._s[4749]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[4750]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4751]! } + public var Message_PinnedGame: String { return self._s[4752]! } + public var KeyCommand_SearchInChat: String { return self._s[4753]! } + public var Appearance_ThemeCarouselNewNight: String { return self._s[4754]! } + public var ChatList_Search_FilterMedia: String { return self._s[4755]! } + public var Message_PinnedAudioMessage: String { return self._s[4756]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[4758]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4758]!, self._r[4758]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4759]!, self._r[4759]!, [_1, _2]) } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4759]! } - public var InviteLink_Create: String { return self._s[4760]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4760]! } + public var InviteLink_Create: String { return self._s[4761]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4761]!, self._r[4761]!, [_0]) - } - public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4762]!, self._r[4762]!, [_0]) } - public var Settings_AddAccount: String { return self._s[4763]! } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4764]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4765]! } - public var Channel_JoinChannel: String { return self._s[4766]! } - public var Watch_UserInfo_Unblock: String { return self._s[4767]! } - public var PhoneLabel_Title: String { return self._s[4768]! } - public var VoiceChat_EditPermissions: String { return self._s[4770]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[4771]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4772]! } + public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4763]!, self._r[4763]!, [_0]) + } + public var Settings_AddAccount: String { return self._s[4764]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4765]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4766]! } + public var Channel_JoinChannel: String { return self._s[4767]! } + public var Watch_UserInfo_Unblock: String { return self._s[4768]! } + public var PhoneLabel_Title: String { return self._s[4769]! } + public var VoiceChat_EditPermissions: String { return self._s[4771]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[4772]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4773]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4773]!, self._r[4773]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[4774]!, self._r[4774]!, [_1, _2, _3, _4, _5, _6]) } - public var Channel_AddBotErrorHaveRights: String { return self._s[4774]! } - public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4775]! } - public var DialogList_EncryptionProcessing: String { return self._s[4776]! } - public var ChatList_Search_FilterChats: String { return self._s[4777]! } - public var WatchRemote_NotificationText: String { return self._s[4778]! } - public var EditTheme_ChangeColors: String { return self._s[4780]! } - public var GroupRemoved_ViewUserInfo: String { return self._s[4781]! } - public var CallSettings_OnMobile: String { return self._s[4783]! } - public var Month_ShortFebruary: String { return self._s[4785]! } - public var VoiceOver_MessageContextReply: String { return self._s[4786]! } - public var AutoremoveSetup_TimerValueNever: String { return self._s[4787]! } - public var Group_Location_ChangeLocation: String { return self._s[4789]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[4775]! } + public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4776]! } + public var DialogList_EncryptionProcessing: String { return self._s[4777]! } + public var ChatList_Search_FilterChats: String { return self._s[4778]! } + public var WatchRemote_NotificationText: String { return self._s[4779]! } + public var EditTheme_ChangeColors: String { return self._s[4781]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[4782]! } + public var CallSettings_OnMobile: String { return self._s[4784]! } + public var Month_ShortFebruary: String { return self._s[4786]! } + public var VoiceOver_MessageContextReply: String { return self._s[4787]! } + public var AutoremoveSetup_TimerValueNever: String { return self._s[4788]! } + public var Group_Location_ChangeLocation: String { return self._s[4790]! } public func PUSH_VIDEO_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4790]!, self._r[4790]!, [_1]) + return formatWithArgumentRanges(self._s[4791]!, self._r[4791]!, [_1]) } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4791]! } - public var VoiceOver_Media_PlaybackStop: String { return self._s[4792]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4793]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4792]! } + public var VoiceOver_Media_PlaybackStop: String { return self._s[4793]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4794]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4795]!, self._r[4795]!, [_0]) + return formatWithArgumentRanges(self._s[4796]!, self._r[4796]!, [_0]) } - public var PhotoEditor_WarmthTool: String { return self._s[4796]! } - public var Login_InfoAvatarPhoto: String { return self._s[4797]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4798]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4799]! } - public var Map_PlacesInThisArea: String { return self._s[4800]! } - public var VoiceOver_Chat_ContactEmail: String { return self._s[4801]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[4802]! } + public var PhotoEditor_WarmthTool: String { return self._s[4797]! } + public var Login_InfoAvatarPhoto: String { return self._s[4798]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4799]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4800]! } + public var Map_PlacesInThisArea: String { return self._s[4801]! } + public var VoiceOver_Chat_ContactEmail: String { return self._s[4802]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[4803]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4803]!, self._r[4803]!, [_1]) + return formatWithArgumentRanges(self._s[4804]!, self._r[4804]!, [_1]) } - public var PeerInfo_ReportProfileVideo: String { return self._s[4804]! } - public var ShareMenu_Send: String { return self._s[4805]! } - public var Username_InvalidStartsWithNumber: String { return self._s[4806]! } + public var PeerInfo_ReportProfileVideo: String { return self._s[4805]! } + public var ShareMenu_Send: String { return self._s[4806]! } + public var Username_InvalidStartsWithNumber: String { return self._s[4807]! } public func Channel_AdminLog_StartedVoiceChat(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4807]!, self._r[4807]!, [_1]) + return formatWithArgumentRanges(self._s[4808]!, self._r[4808]!, [_1]) } - public var Appearance_AppIconClassicX: String { return self._s[4808]! } - public var Report_Report: String { return self._s[4809]! } + public var Appearance_AppIconClassicX: String { return self._s[4809]! } + public var Report_Report: String { return self._s[4810]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4810]!, self._r[4810]!, [_1]) + return formatWithArgumentRanges(self._s[4811]!, self._r[4811]!, [_1]) } - public var Conversation_StopPoll: String { return self._s[4811]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4813]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[4814]! } - public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4815]! } - public var Conversation_Timer_Title: String { return self._s[4816]! } - public var Common_Next: String { return self._s[4817]! } - public var Notification_Exceptions_NewException: String { return self._s[4818]! } + public var Conversation_StopPoll: String { return self._s[4812]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4814]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[4815]! } + public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4816]! } + public var Conversation_Timer_Title: String { return self._s[4817]! } + public var Common_Next: String { return self._s[4818]! } + public var Notification_Exceptions_NewException: String { return self._s[4819]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4819]!, self._r[4819]!, [_0]) + return formatWithArgumentRanges(self._s[4820]!, self._r[4820]!, [_0]) } - public var AccessDenied_CallMicrophone: String { return self._s[4820]! } - public var VoiceChat_UnmutePeer: String { return self._s[4821]! } - public var ChatImportActivity_Retry: String { return self._s[4822]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4823]! } - public var ChangePhoneNumberCode_Help: String { return self._s[4824]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4825]! } - public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4826]! } - public var BlockedUsers_LeavePrefix: String { return self._s[4827]! } + public var AccessDenied_CallMicrophone: String { return self._s[4821]! } + public var VoiceChat_UnmutePeer: String { return self._s[4822]! } + public var ChatImportActivity_Retry: String { return self._s[4823]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4824]! } + public var ChangePhoneNumberCode_Help: String { return self._s[4825]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4826]! } + public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4827]! } + public var BlockedUsers_LeavePrefix: String { return self._s[4828]! } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4828]!, self._r[4828]!, [_0]) + return formatWithArgumentRanges(self._s[4829]!, self._r[4829]!, [_0]) } - public var Group_About_Help: String { return self._s[4829]! } - public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4830]! } - public var Tour_Title3: String { return self._s[4831]! } - public var Watch_Conversation_Unblock: String { return self._s[4832]! } - public var Watch_UserInfo_Block: String { return self._s[4833]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[4834]! } - public var TwoFactorSetup_Hint_Action: String { return self._s[4835]! } - public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4836]! } - public var TextFormat_AddLinkTitle: String { return self._s[4837]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4838]! } + public var Group_About_Help: String { return self._s[4830]! } + public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4831]! } + public var Tour_Title3: String { return self._s[4832]! } + public var Watch_Conversation_Unblock: String { return self._s[4833]! } + public var Watch_UserInfo_Block: String { return self._s[4834]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[4835]! } + public var TwoFactorSetup_Hint_Action: String { return self._s[4836]! } + public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4837]! } + public var TextFormat_AddLinkTitle: String { return self._s[4838]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4839]! } public func Notification_VoiceChatScheduled(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4839]!, self._r[4839]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4840]!, self._r[4840]!, [_1, _2]) } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4840]! } - public var FastTwoStepSetup_PasswordSection: String { return self._s[4842]! } - public var Compose_ChannelMembers: String { return self._s[4843]! } - public var Conversation_ForwardTitle: String { return self._s[4844]! } - public var Conversation_PinnedPoll: String { return self._s[4847]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4841]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[4843]! } + public var Compose_ChannelMembers: String { return self._s[4844]! } + public var Conversation_ForwardTitle: String { return self._s[4845]! } + public var Conversation_PinnedPoll: String { return self._s[4848]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4848]!, self._r[4848]!, [_0]) + return formatWithArgumentRanges(self._s[4849]!, self._r[4849]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4849]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4851]! } - public var Stats_Overview: String { return self._s[4852]! } - public var Map_HomeAndWorkTitle: String { return self._s[4853]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4850]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4852]! } + public var Stats_Overview: String { return self._s[4853]! } + public var Map_HomeAndWorkTitle: String { return self._s[4854]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4854]!, self._r[4854]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4855]!, self._r[4855]!, [_1, _2, _3]) } - public var Passport_Address_CityPlaceholder: String { return self._s[4855]! } - public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4856]! } - public var Privacy_PhoneNumber: String { return self._s[4857]! } - public var ChatList_Search_FilterFiles: String { return self._s[4858]! } - public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4859]! } - public var ChannelIntro_CreateChannel: String { return self._s[4860]! } - public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4861]! } + public var Passport_Address_CityPlaceholder: String { return self._s[4856]! } + public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4857]! } + public var Privacy_PhoneNumber: String { return self._s[4858]! } + public var ChatList_Search_FilterFiles: String { return self._s[4859]! } + public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4860]! } + public var ChannelIntro_CreateChannel: String { return self._s[4861]! } + public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4862]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4862]!, self._r[4862]!, [_0]) + return formatWithArgumentRanges(self._s[4863]!, self._r[4863]!, [_0]) } - public var Weekday_ShortMonday: String { return self._s[4863]! } - public var Passport_Language_ar: String { return self._s[4865]! } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4866]! } - public var TwoFactorSetup_Done_Title: String { return self._s[4867]! } - public var Calls_RatingFeedback: String { return self._s[4868]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4869]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[4872]! } + public var Weekday_ShortMonday: String { return self._s[4864]! } + public var Passport_Language_ar: String { return self._s[4866]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4867]! } + public var TwoFactorSetup_Done_Title: String { return self._s[4868]! } + public var Calls_RatingFeedback: String { return self._s[4869]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4870]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[4873]! } public func VoiceOver_SelfDestructTimerOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4873]!, self._r[4873]!, [_0]) + return formatWithArgumentRanges(self._s[4874]!, self._r[4874]!, [_0]) } - public var Watch_Compose_Send: String { return self._s[4874]! } - public var PasscodeSettings_ChangePasscode: String { return self._s[4875]! } - public var WebSearch_RecentSectionClear: String { return self._s[4876]! } + public var Watch_Compose_Send: String { return self._s[4875]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[4876]! } + public var WebSearch_RecentSectionClear: String { return self._s[4877]! } public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4877]!, self._r[4877]!, [_0]) + return formatWithArgumentRanges(self._s[4878]!, self._r[4878]!, [_0]) } - public var WallpaperSearch_ColorTeal: String { return self._s[4878]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4879]! } - public var Permissions_ContactsTitle_v0: String { return self._s[4880]! } - public var Checkout_PasswordEntry_Pay: String { return self._s[4882]! } - public var Settings_SavedMessages: String { return self._s[4883]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4884]! } - public var Month_ShortMarch: String { return self._s[4885]! } - public var Message_Location: String { return self._s[4886]! } + public var WallpaperSearch_ColorTeal: String { return self._s[4879]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4880]! } + public var Permissions_ContactsTitle_v0: String { return self._s[4881]! } + public var Checkout_PasswordEntry_Pay: String { return self._s[4883]! } + public var Settings_SavedMessages: String { return self._s[4884]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4885]! } + public var Month_ShortMarch: String { return self._s[4886]! } + public var Message_Location: String { return self._s[4887]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4887]!, self._r[4887]!, [_1]) - } - public func Channel_AdminLog_MessageRemovedAdminName(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4888]!, self._r[4888]!, [_1]) } + public func Channel_AdminLog_MessageRemovedAdminName(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4889]!, self._r[4889]!, [_1]) + } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4889]!, self._r[4889]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4890]!, self._r[4890]!, [_1, _2]) } - public var VoiceOver_Chat_VoiceMessage: String { return self._s[4891]! } + public var VoiceOver_Chat_VoiceMessage: String { return self._s[4892]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4892]!, self._r[4892]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4893]!, self._r[4893]!, [_1, _2]) } - public var GroupPermission_NoSendMedia: String { return self._s[4893]! } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[4894]! } - public var SharedMedia_CategoryDocs: String { return self._s[4895]! } - public var Appearance_RemoveThemeConfirmation: String { return self._s[4896]! } - public var Paint_Framed: String { return self._s[4897]! } - public var Channel_Setup_LinkTypePublic: String { return self._s[4898]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4899]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[4900]! } + public var GroupPermission_NoSendMedia: String { return self._s[4894]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[4895]! } + public var SharedMedia_CategoryDocs: String { return self._s[4896]! } + public var Appearance_RemoveThemeConfirmation: String { return self._s[4897]! } + public var Paint_Framed: String { return self._s[4898]! } + public var Channel_Setup_LinkTypePublic: String { return self._s[4899]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4900]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[4901]! } public func ChatImport_SelectionConfirmationUserWithTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4901]!, self._r[4901]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4902]!, self._r[4902]!, [_1, _2]) } - public var Channel_SignMessages: String { return self._s[4902]! } - public var Contacts_AccessDeniedHelpON: String { return self._s[4903]! } - public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4904]! } + public var Channel_SignMessages: String { return self._s[4903]! } + public var Contacts_AccessDeniedHelpON: String { return self._s[4904]! } + public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4905]! } public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4905]!, self._r[4905]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4906]!, self._r[4906]!, [_1, _2]) } - public var InviteLink_Create_TimeLimitNoLimit: String { return self._s[4906]! } - public var GroupInfo_UpgradeButton: String { return self._s[4907]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4908]! } + public var InviteLink_Create_TimeLimitNoLimit: String { return self._s[4907]! } + public var GroupInfo_UpgradeButton: String { return self._s[4908]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4909]! } public func Conversation_ScheduledVoiceChatStartsTomorrowShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4909]!, self._r[4909]!, [_0]) + return formatWithArgumentRanges(self._s[4910]!, self._r[4910]!, [_0]) } - public var AutoDownloadSettings_Files: String { return self._s[4910]! } + public var AutoDownloadSettings_Files: String { return self._s[4911]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4911]!, self._r[4911]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4912]!, self._r[4912]!, [_0, _1]) } - public var Login_SendCodeViaSms: String { return self._s[4913]! } - public var Update_UpdateApp: String { return self._s[4914]! } - public var Channel_Setup_TypePublic: String { return self._s[4915]! } - public var Watch_Compose_CreateMessage: String { return self._s[4916]! } + public var Login_SendCodeViaSms: String { return self._s[4914]! } + public var Update_UpdateApp: String { return self._s[4915]! } + public var Channel_Setup_TypePublic: String { return self._s[4916]! } + public var Watch_Compose_CreateMessage: String { return self._s[4917]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4917]!, self._r[4917]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4918]!, self._r[4918]!, [_1, _2, _3]) } - public var StickerPacksSettings_ManagingHelp: String { return self._s[4918]! } - public var VoiceOver_Chat_Video: String { return self._s[4919]! } - public var Forward_ChannelReadOnly: String { return self._s[4920]! } - public var StickerPack_HideStickers: String { return self._s[4921]! } - public var ChatListFolder_NameContacts: String { return self._s[4922]! } - public var Profile_BotInfo: String { return self._s[4923]! } - public var Document_TargetConfirmationFormat: String { return self._s[4924]! } - public var GroupInfo_InviteByLink: String { return self._s[4925]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4926]! } - public var Watch_Stickers_RecentPlaceholder: String { return self._s[4927]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[4928]! } - public var Passport_NotLoggedInMessage: String { return self._s[4929]! } - public var Conversation_StopQuizConfirmation: String { return self._s[4930]! } - public var Checkout_PaymentMethod: String { return self._s[4931]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[4936]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4937]! } - public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4938]! } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4939]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4940]! } - public var Conversation_GigagroupDescription: String { return self._s[4941]! } - public var Camera_Title: String { return self._s[4942]! } - public var Map_Directions: String { return self._s[4943]! } - public var Stats_MessagePublicForwardsTitle: String { return self._s[4945]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4946]! } - public var Profile_EncryptionKey: String { return self._s[4947]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[4919]! } + public var VoiceOver_Chat_Video: String { return self._s[4920]! } + public var Forward_ChannelReadOnly: String { return self._s[4921]! } + public var StickerPack_HideStickers: String { return self._s[4922]! } + public var ChatListFolder_NameContacts: String { return self._s[4923]! } + public var Profile_BotInfo: String { return self._s[4924]! } + public var Document_TargetConfirmationFormat: String { return self._s[4925]! } + public var GroupInfo_InviteByLink: String { return self._s[4926]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4927]! } + public var Watch_Stickers_RecentPlaceholder: String { return self._s[4928]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[4929]! } + public var Passport_NotLoggedInMessage: String { return self._s[4930]! } + public var Conversation_StopQuizConfirmation: String { return self._s[4931]! } + public var Checkout_PaymentMethod: String { return self._s[4932]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[4937]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4938]! } + public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4939]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4940]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4941]! } + public var Conversation_GigagroupDescription: String { return self._s[4942]! } + public var Camera_Title: String { return self._s[4943]! } + public var Map_Directions: String { return self._s[4944]! } + public var Stats_MessagePublicForwardsTitle: String { return self._s[4946]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4947]! } + public var Profile_EncryptionKey: String { return self._s[4948]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4948]!, self._r[4948]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4949]!, self._r[4949]!, [_1, "\(_2)"]) } - public var VoiceChat_VideoPreviewShareCamera: String { return self._s[4949]! } + public var VoiceChat_VideoPreviewShareCamera: String { return self._s[4950]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4950]!, self._r[4950]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4951]!, self._r[4951]!, [_0, _1]) } - public var Passport_Identity_TypePassport: String { return self._s[4951]! } - public var CreatePoll_QuizOptionsHeader: String { return self._s[4953]! } - public var Common_No: String { return self._s[4954]! } - public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4955]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4956]! } - public var Settings_AboutEmpty: String { return self._s[4957]! } - public var TwoStepAuth_FloodError: String { return self._s[4959]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4960]! } + public var Passport_Identity_TypePassport: String { return self._s[4952]! } + public var CreatePoll_QuizOptionsHeader: String { return self._s[4954]! } + public var Common_No: String { return self._s[4955]! } + public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4956]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4957]! } + public var Settings_AboutEmpty: String { return self._s[4958]! } + public var TwoStepAuth_FloodError: String { return self._s[4960]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4961]! } public func Notification_VoiceChatScheduledChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4961]!, self._r[4961]!, [_0]) + return formatWithArgumentRanges(self._s[4962]!, self._r[4962]!, [_0]) } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4963]!, self._r[4963]!, [_1]) + return formatWithArgumentRanges(self._s[4964]!, self._r[4964]!, [_1]) } - public var Notification_Exceptions_MessagePreviewAlwaysOn: String { return self._s[4966]! } - public var Conversation_Edit: String { return self._s[4967]! } - public var CheckoutInfo_SaveInfo: String { return self._s[4969]! } - public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4970]! } - public var Call_CameraTooltip: String { return self._s[4972]! } - public var InstantPage_FeedbackButtonShort: String { return self._s[4973]! } - public var Contacts_InviteToTelegram: String { return self._s[4974]! } - public var Notifications_ResetAllNotifications: String { return self._s[4975]! } - public var Calls_NewCall: String { return self._s[4976]! } - public var VoiceOver_Chat_Music: String { return self._s[4979]! } - public var Channel_AdminLogFilter_EventsInviteLinks: String { return self._s[4980]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4981]! } - public var Channel_Edit_AboutItem: String { return self._s[4982]! } - public var Message_VideoExpired: String { return self._s[4983]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4984]! } + public var Notification_Exceptions_MessagePreviewAlwaysOn: String { return self._s[4967]! } + public var Conversation_Edit: String { return self._s[4968]! } + public var CheckoutInfo_SaveInfo: String { return self._s[4970]! } + public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4971]! } + public var Call_CameraTooltip: String { return self._s[4973]! } + public var InstantPage_FeedbackButtonShort: String { return self._s[4974]! } + public var Contacts_InviteToTelegram: String { return self._s[4975]! } + public var Notifications_ResetAllNotifications: String { return self._s[4976]! } + public var Calls_NewCall: String { return self._s[4977]! } + public var VoiceOver_Chat_Music: String { return self._s[4980]! } + public var Channel_AdminLogFilter_EventsInviteLinks: String { return self._s[4981]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4982]! } + public var Channel_Edit_AboutItem: String { return self._s[4983]! } + public var Message_VideoExpired: String { return self._s[4984]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4985]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4985]!, self._r[4985]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4986]!, self._r[4986]!, [_1, _2]) } - public var NotificationsSound_Input: String { return self._s[4987]! } - public var Notifications_ClassicTones: String { return self._s[4988]! } - public var Conversation_StatusTyping: String { return self._s[4989]! } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4990]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4991]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4992]! } - public var Conversation_MessageLeaveComment: String { return self._s[4993]! } - public var UserInfo_TapToCall: String { return self._s[4994]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4995]! } + public var NotificationsSound_Input: String { return self._s[4988]! } + public var Notifications_ClassicTones: String { return self._s[4989]! } + public var Conversation_StatusTyping: String { return self._s[4990]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4991]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4992]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4993]! } + public var Conversation_MessageLeaveComment: String { return self._s[4994]! } + public var UserInfo_TapToCall: String { return self._s[4995]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4996]! } public func ScheduleVoiceChat_ScheduleOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4996]!, self._r[4996]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4997]!, self._r[4997]!, [_0, _1]) } - public var Conversation_ClearAll: String { return self._s[4998]! } - public var UserInfo_NotificationsDefault: String { return self._s[4999]! } - public var Location_ProximityGroupTip: String { return self._s[5000]! } - public var Map_ChooseAPlace: String { return self._s[5001]! } - public var GroupInfo_AddParticipantTitle: String { return self._s[5003]! } - public var ChatList_PeerTypeNonContact: String { return self._s[5004]! } - public var Conversation_SlideToCancel: String { return self._s[5005]! } - public var Month_ShortJuly: String { return self._s[5006]! } - public var SocksProxySetup_ProxyType: String { return self._s[5007]! } + public var Conversation_ClearAll: String { return self._s[4999]! } + public var UserInfo_NotificationsDefault: String { return self._s[5000]! } + public var Location_ProximityGroupTip: String { return self._s[5001]! } + public var Map_ChooseAPlace: String { return self._s[5002]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[5004]! } + public var ChatList_PeerTypeNonContact: String { return self._s[5005]! } + public var Conversation_SlideToCancel: String { return self._s[5006]! } + public var Month_ShortJuly: String { return self._s[5007]! } + public var SocksProxySetup_ProxyType: String { return self._s[5008]! } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5008]!, self._r[5008]!, [_0]) + return formatWithArgumentRanges(self._s[5009]!, self._r[5009]!, [_0]) } - public var StickerPacks_ActionArchive: String { return self._s[5009]! } - public var ChatList_EditFolders: String { return self._s[5010]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[5011]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[5013]! } + public var StickerPacks_ActionArchive: String { return self._s[5010]! } + public var ChatList_EditFolders: String { return self._s[5011]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[5012]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[5014]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5014]!, self._r[5014]!, [_0]) + return formatWithArgumentRanges(self._s[5015]!, self._r[5015]!, [_0]) } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[5015]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[5016]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[5018]! } + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[5016]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[5017]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[5019]! } public func Conversation_ScheduledVoiceChatStartsOnShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5020]!, self._r[5020]!, [_0]) + return formatWithArgumentRanges(self._s[5021]!, self._r[5021]!, [_0]) } - public var Passport_DeleteAddress: String { return self._s[5021]! } - public var Passport_DeletePassportConfirmation: String { return self._s[5022]! } - public var Passport_Identity_ReverseSide: String { return self._s[5023]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[5025]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[5026]! } - public var InviteLink_CreatedBy: String { return self._s[5027]! } - public var Passport_FieldAddress: String { return self._s[5028]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[5029]! } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[5032]! } - public var VoiceChat_Panel_TapToJoin: String { return self._s[5033]! } - public var Map_Home: String { return self._s[5034]! } - public var PollResults_Title: String { return self._s[5037]! } + public var Passport_DeleteAddress: String { return self._s[5022]! } + public var Passport_DeletePassportConfirmation: String { return self._s[5023]! } + public var Passport_Identity_ReverseSide: String { return self._s[5024]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[5026]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[5027]! } + public var InviteLink_CreatedBy: String { return self._s[5028]! } + public var Passport_FieldAddress: String { return self._s[5029]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[5030]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[5033]! } + public var VoiceChat_Panel_TapToJoin: String { return self._s[5034]! } + public var Map_Home: String { return self._s[5035]! } + public var PollResults_Title: String { return self._s[5038]! } public func InviteLink_OtherPermanentLinkInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5038]!, self._r[5038]!, [_1, _2]) + return formatWithArgumentRanges(self._s[5039]!, self._r[5039]!, [_1, _2]) } - public var ArchivedChats_IntroText2: String { return self._s[5040]! } - public var VoiceChat_VideoPreviewTitle: String { return self._s[5041]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[5042]! } - public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[5043]! } - public var VoiceChat_Muted: String { return self._s[5045]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[5046]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[5047]! } - public var Conversation_AutoremoveActionEnable: String { return self._s[5049]! } - public var Group_Info_AdminLog: String { return self._s[5050]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[5051]! } - public var Appearance_Animations: String { return self._s[5052]! } - public var Appearance_TextSizeSetting: String { return self._s[5053]! } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + public var ArchivedChats_IntroText2: String { return self._s[5041]! } + public var VoiceChat_VideoPreviewTitle: String { return self._s[5042]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[5043]! } + public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[5044]! } + public var VoiceChat_Muted: String { return self._s[5046]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[5047]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[5048]! } + public var Conversation_AutoremoveActionEnable: String { return self._s[5050]! } + public var Group_Info_AdminLog: String { return self._s[5051]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[5052]! } + public var Appearance_Animations: String { return self._s[5053]! } + public var Appearance_TextSizeSetting: String { return self._s[5054]! } + 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[1 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FILES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ChatList_MessagePhotos(_ 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 AttachmentMenu_SendPhoto(_ 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 Notification_GameScoreSimple(_ 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 MessageTimer_ShortHours(_ 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 Stats_GroupShowMoreTopPosters(_ 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 Conversation_LiveLocationMembersCount(_ 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 VoiceOver_Chat_PollOptionCount(_ 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 Call_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Conversation_AutoremoveRemainingDays(_ 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) + return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } public func ScheduledIn_Minutes(_ 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 Watch_LastSeen_HoursAgo(_ 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 InviteLink_PeopleCanJoin(_ 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_Days(_ 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 Call_ShortSeconds(_ 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 ChatList_Search_Messages(_ 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 VoiceOver_Chat_MessagesSelected(_ 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 Notifications_ExceptionMuteExpires_Minutes(_ 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 Notifications_Exceptions(_ 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 Media_SharePhoto(_ 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 InviteLink_PeopleJoined(_ 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 InstantPage_Views(_ 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 OldChannels_InactiveMonth(_ 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 SharedMedia_File(_ 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 Conversation_ContextViewReplies(_ 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_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 Stats_GroupTopPosterChars(_ 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) + return String(format: self._ps[1 * 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[30 * 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[31 * 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[32 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MessageTimer_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 Invitation_Members(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func InviteLink_InviteLinks(_ 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 Stats_MessageViews(_ 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 Map_ETAMinutes(_ 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 LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveWeek(_ 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 Stats_GroupTopAdminBans(_ 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_Link(_ 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 ChatListFilter_ShowMoreChats(_ 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 Conversation_StatusMembers(_ 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 Notification_GameScoreExtended(_ 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 Wallpaper_DeleteConfirmation(_ 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 InviteLink_PeopleRemaining(_ 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 ForwardedLocations(_ 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 MessageTimer_ShortSeconds(_ 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 ScheduledIn_Hours(_ 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 ForwardedFiles(_ 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 Conversation_StatusSubscribers(_ 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 ChatList_MessageFiles(_ 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 SharedMedia_DeleteItemsConfirmation(_ 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 ForwardedAudios(_ 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 Conversation_SelectedMessages(_ 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 MuteExpires_Days(_ 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 SharedMedia_Video(_ 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 PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Stats_MessageForwards(_ 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 Chat_DeleteMessagesConfirmation(_ 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 ForwardedContacts(_ 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 PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[2 * 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[64 * 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[65 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ServiceMessage_GameScoreSelfExtended(_ 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 ChatList_MessageMusic(_ 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 Conversation_MessageViewComments(_ 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 MessageTimer_ShortWeeks(_ 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 VoiceChat_InviteLink_InviteSpeakers(_ 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 Conversation_StatusOnline(_ 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 MessageTimer_Years(_ 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 PUSH_CHANNEL_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func InviteText_ContactsCountText(_ 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_GroupTopPosterMessages(_ 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 Stats_GroupShowMoreTopInviters(_ 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 Map_ETAHours(_ 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 PrivacyLastSeenSettings_AddUsers(_ 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 Watch_LastSeen_MinutesAgo(_ 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 Conversation_ContextMenuSelectAll(_ 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 VoiceChat_Status_Members(_ 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 Stats_GroupShowMoreTopAdmins(_ 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 Forward_ConfirmMultipleFiles(_ 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 ForwardedGifs(_ 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 MessageTimer_Minutes(_ 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_VIDEOS(_ 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 MessageTimer_ShortMinutes(_ 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 GroupInfo_ParticipantCount(_ 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 PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ChatList_DeleteConfirmation(_ 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 Stats_GroupTopAdminKicks(_ 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 VoiceChat_InviteLink_InviteListeners(_ 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 Chat_TitlePinnedMessages(_ 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 MuteFor_Hours(_ 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 Notification_GameScoreSelfSimple(_ 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 Media_ShareVideo(_ 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 ServiceMessage_GameScoreSimple(_ 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 DialogList_LiveLocationChatsCount(_ 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 Notifications_ExceptionMuteExpires_Hours(_ 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 AttachmentMenu_SendGif(_ 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 Stats_GroupTopInviterInvites(_ 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 Call_Hours(_ 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 Notifications_ExceptionMuteExpires_Days(_ 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 StickerPack_AddMaskCount(_ 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 OldChannels_GroupFormat(_ 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 StickerPack_StickerCount(_ 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_MessageVideos(_ 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 LastSeen_HoursAgo(_ 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 ScheduledIn_Weeks(_ 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 AttachmentMenu_SendVideo(_ 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 ScheduledIn_Years(_ 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 InviteLink_PeopleJoinedShort(_ 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 PollResults_ShowMore(_ 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 LastSeen_MinutesAgo(_ 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 VoiceChat_Panel_Members(_ 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 Chat_MessagesUnpinned(_ 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 Contacts_InviteContacts(_ 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 Watch_UserInfo_Mute(_ 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 StickerPacks_DeleteStickerPacksConfirmation(_ 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 MuteExpires_Minutes(_ 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 Stats_GroupTopAdminDeletions(_ 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 PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func QuickSend_Photos(_ 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 LiveLocation_MenuChatsCount(_ 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 ForwardedVideos(_ 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 ScheduledIn_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ScheduledIn_Months(_ 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 StickerPack_AddStickerCount(_ 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 MessagePoll_VotedCount(_ 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 ForwardedPolls(_ 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 Contacts_ImportersCount(_ 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 ServiceMessage_GameScoreExtended(_ 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 VoiceOver_Chat_ContactPhoneNumberCount(_ 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 Notification_GameScoreSelfExtended(_ 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 PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_Seconds(_ 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 SharedMedia_Generic(_ 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 Conversation_TitleReplies(_ 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 VoiceOver_Chat_UnreadMessages(_ 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 CreatePoll_AddMoreOptions(_ 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 ChatList_SelectedChats(_ 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 SharedMedia_Photo(_ 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 ForwardedMessages(_ 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 PeopleNearby_ShowMorePeople(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[146 * 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[147 * 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[148 * 6 + Int(form.rawValue)]!, _1, _2) - } - 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[149 * 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[150 * 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[151 * 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[152 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[3 * 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[153 * 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[154 * 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[155 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func ForwardedStickers(_ 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 Theme_UsersCount(_ 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 AttachmentMenu_SendItem(_ 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 ScheduledIn_Seconds(_ 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 MessageTimer_Months(_ 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 MessageTimer_Weeks(_ 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 GroupInfo_ShowMoreMembers(_ 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[4 * 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[163 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_TitleComments(_ value: Int32) -> String { + public func ForwardedFiles(_ 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[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_DOCS_FIX1(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func Call_Hours(_ 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 SharedMedia_Generic(_ 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 ScheduledIn_Years(_ 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 AttachmentMenu_SendVideo(_ 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 MuteFor_Hours(_ 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 Conversation_SelectedMessages(_ 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 GroupInfo_ParticipantCount(_ 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 OldChannels_InactiveWeek(_ 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 StickerPack_RemoveMaskCount(_ 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 PeopleNearby_ShowMorePeople(_ 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 MessageTimer_ShortDays(_ 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 Watch_UserInfo_Mute(_ 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_MESSAGE_FILES(_ selector: Int32, _ _1: String, _ _2: 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[20 * 6 + Int(form.rawValue)]!, _1, _2) } - public func MuteExpires_Hours(_ value: Int32) -> String { + public func Notification_GameScoreExtended(_ 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[21 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func Stats_MessageForwards(_ 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 PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[167 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, _1, _2) } - public func ForwardedVideoMessages(_ value: Int32) -> String { + public func AttachmentMenu_SendPhoto(_ 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) + return String(format: self._ps[24 * 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[25 * 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[26 * 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[27 * 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[28 * 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[29 * 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[30 * 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[31 * 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[32 * 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[33 * 6 + Int(form.rawValue)]!, stringValue) } public func OldChannels_Leave(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[169 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[34 * 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[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 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[37 * 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[38 * 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[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 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[41 * 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[42 * 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[43 * 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[44 * 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[45 * 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[46 * 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[47 * 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[48 * 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[49 * 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[50 * 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[51 * 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[52 * 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[53 * 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[54 * 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[55 * 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[56 * 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[57 * 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[58 * 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[59 * 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[60 * 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[61 * 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[62 * 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[63 * 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[64 * 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[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 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[67 * 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[68 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + 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 ForwardedVideoMessages(_ 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 AttachmentMenu_SendItem(_ 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 SharedMedia_Video(_ 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 Chat_DeleteMessagesConfirmation(_ 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 ScheduledIn_Seconds(_ 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 MessageTimer_ShortMinutes(_ 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 QuickSend_Photos(_ 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 PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Stats_GroupShowMoreTopAdmins(_ 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 LastSeen_HoursAgo(_ 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 ChatList_Search_Messages(_ 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 PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[170 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func LiveLocationUpdated_MinutesAgo(_ 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 Conversation_ContextViewReplies(_ 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 PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MessageTimer_Hours(_ 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 Notification_GameScoreSelfSimple(_ 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 ChatList_MessageMusic(_ 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 MessagePoll_QuizCount(_ 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 InviteText_ContactsCountText(_ 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_Minutes(_ 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 ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func Stats_GroupTopPosterMessages(_ 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 VoiceChat_Panel_Members(_ 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 StickerPacks_ArchiveStickerPacksConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[171 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteFor_Days(_ value: Int32) -> String { + public func Passport_Scans(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[172 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_ShareItem(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[173 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[96 * 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[97 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Conversation_MessageViewComments(_ 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 ChatListFilter_ShowMoreChats(_ 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 UserCount(_ 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 Chat_TitlePinnedMessages(_ 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 Wallpaper_DeleteConfirmation(_ 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 ServiceMessage_GameScoreExtended(_ 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 Call_Seconds(_ 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 ForwardedVideos(_ 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 Stats_GroupTopAdminBans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_StatusSubscribers(_ 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 Theme_UsersCount(_ 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 InviteLink_PeopleRemaining(_ 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_MESSAGES(_ 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 Map_ETAMinutes(_ 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 Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ 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 SharedMedia_Link(_ 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 PasscodeSettings_FailedAttempts(_ 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 Notification_GameScoreSelfExtended(_ 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 StickerPack_RemoveStickerCount(_ 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 MessageTimer_Months(_ 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 PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func AttachmentMenu_SendGif(_ 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 Call_ShortMinutes(_ 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 ServiceMessage_GameScoreSelfExtended(_ 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 ChatList_MessageFiles(_ 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 PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, _1, _2) + } + 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[126 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MuteFor_Days(_ 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 Media_ShareVideo(_ 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 Map_ETAHours(_ 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 VoiceOver_Chat_ContactPhoneNumberCount(_ 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 OldChannels_InactiveMonth(_ 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 Stats_GroupTopAdminKicks(_ 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 Notifications_ExceptionMuteExpires_Hours(_ 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 PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedAudios(_ 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 ChatList_MessageVideos(_ 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 SharedMedia_File(_ 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 Media_ShareItem(_ 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 Notifications_Exceptions(_ 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 PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func InstantPage_Views(_ 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 ChatList_DeletedChats(_ 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 PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Stats_GroupShowMoreTopInviters(_ 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 Notifications_ExceptionMuteExpires_Minutes(_ 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_CHANNEL_MESSAGE_ROUNDS(_ 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 ScheduledIn_Weeks(_ 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 ForwardedGifs(_ 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 ChatList_SelectedChats(_ 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 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[150 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Conversation_TitleReplies(_ 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 ScheduledIn_Days(_ 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 MuteExpires_Hours(_ 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 ForwardedLocations(_ 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 ScheduledIn_Months(_ 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 Stats_GroupTopInviterInvites(_ 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_Status_Members(_ 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 PUSH_CHANNEL_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[158 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func LiveLocation_MenuChatsCount(_ 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 Stats_MessageViews(_ 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 MessageTimer_ShortHours(_ 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 PrivacyLastSeenSettings_AddUsers(_ 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 VoiceOver_Chat_UnreadMessages(_ 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 OldChannels_GroupFormat(_ 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 MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[165 * 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[166 * 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[167 * 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[168 * 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[169 * 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[170 * 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[171 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ScheduledIn_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[172 * 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[173 * 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[174 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + public func SharedMedia_Photo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[175 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramUI/Images.xcassets/Call/Context Menu/Audio.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Call/Context Menu/Audio.imageset/Contents.json new file mode 100644 index 0000000000..0355088028 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Call/Context Menu/Audio.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_menuaudio.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/submodules/TelegramUI/Images.xcassets/Call/Context Menu/Audio.imageset/ic_menuaudio.pdf b/submodules/TelegramUI/Images.xcassets/Call/Context Menu/Audio.imageset/ic_menuaudio.pdf new file mode 100644 index 0000000000000000000000000000000000000000..045166f1fb1387585ffffe9161689d8e45f891aa GIT binary patch literal 4661 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 literal 0 HcmV?d00001 diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index 63db8c25ba76f31e2367c374a97698668539ec33..694340cc6ad904f5aa9b03f6ed4aaf60beacc4a4 100644 GIT binary patch delta 14285 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%0AM5}8c<-Li+E)J?iU>UqlmytG4x$lZP$ zGTSe~8hdpJ;1j8)4!%aMaNBh3xr-f2bo#bG#kthGhYjj&Ti?2VKnpC~!=4nrY>JDR zR8v+*BQ~c50Z~$jJxV?9bvnFvlT2Ml-E~W>4w-2fN`LkbX zb{uNsWk_h?&F{S^>f!Ai&?PLLPT1@Fh?j@3f0sl;jQ=-{zG6lwtxn56TG(IWxDtwoQNEoFeuN8TD3M7T8%P?^ upgkHmOdtCKPnNuo1v;)jy}pshv131%K7wQ0WOmZgUNV(q3qZ3Ds{aQB=_%v@ delta 14361 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 sink = [remoteRenderer getSink]; std::shared_ptr> cloneSink = [cloneRenderer getSink];