diff --git a/data/core.telegram.org/api/geochats.html b/data/core.telegram.org/api/geochats.html
new file mode 100644
index 0000000000..703ed750f7
--- /dev/null
+++ b/data/core.telegram.org/api/geochats.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html class="">
+  <head>
+    <meta charset="utf-8">
+    <title>Nope</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta property="description" content="Deprecated old docs. This was definitely not the droid you were looking for.">
+    <meta property="og:title" content="Nope">
+    <meta property="og:image" content="">
+    <meta property="og:description" content="Deprecated old docs. This was definitely not the droid you were looking for.">
+    <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
+
+    <link href="/css/bootstrap.min.css?3" rel="stylesheet">
+    
+    <link href="/css/telegram.css?212" rel="stylesheet" media="screen">
+    <style>
+    </style>
+  </head>
+  <body class="preload">
+    <div class="dev_page_wrap">
+      <div class="dev_page_head navbar navbar-static-top navbar-tg">
+        <div class="navbar-inner">
+          <div class="container clearfix">
+            <ul class="nav navbar-nav navbar-right hidden-xs"><li class="navbar-twitter"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i><span> Twitter</span></a></li></ul>
+            <ul class="nav navbar-nav">
+              <li><a href="//telegram.org/">Home</a></li>
+<li class="hidden-xs"><a href="//telegram.org/faq">FAQ</a></li>
+<li class="hidden-xs"><a href="//telegram.org/apps">Apps</a></li>
+<li class="active"><a href="/api">API</a></li>
+<li class=""><a href="/mtproto">Protocol</a></li>
+<li class=""><a href="/schema">Schema</a></li>
+            </ul>
+          </div>
+        </div>
+      </div>
+      <div class="container clearfix">
+        <div class="dev_page">
+          <div id="dev_page_content_wrap" class=" ">
+  <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a  href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a  href="/api/geochats" >Nope</a></li></ul></div>
+  <h1 id="dev_page_title">Nope</h1>
+  
+  <div id="dev_page_content"><p>Deprecated old docs. This was definitely not the droid you were looking for.</p></div>
+  
+</div>
+          
+        </div>
+      </div>
+      <div class="footer_wrap">
+  <div class="footer_columns_wrap footer_desktop">
+    <div class="footer_column footer_column_telegram">
+      <h5>Telegram</h5>
+      <div class="footer_telegram_description"></div>
+      Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed.
+    </div>
+
+    <div class="footer_column">
+      <h5><a href="//telegram.org/faq">About</a></h5>
+      <ul>
+        <li><a href="//telegram.org/faq">FAQ</a></li>
+        <li><a href="//telegram.org/blog">Blog</a></li>
+        <li><a href="//telegram.org/jobs">Jobs</a></li>
+      </ul>
+    </div>
+    <div class="footer_column">
+      <h5><a href="//telegram.org/apps#mobile-apps">Mobile Apps</a></h5>
+      <ul>
+        <li><a href="//telegram.org/dl/ios">iPhone/iPad</a></li>
+        <li><a href="//telegram.org/dl/android">Android</a></li>
+        <li><a href="//telegram.org/dl/wp">Windows Phone</a></li>
+      </ul>
+    </div>
+    <div class="footer_column">
+      <h5><a href="//telegram.org/apps#desktop-apps">Desktop Apps</a></h5>
+      <ul>
+        <li><a href="//desktop.telegram.org/">PC/Mac/Linux</a></li>
+        <li><a href="//macos.telegram.org/">macOS</a></li>
+        <li><a href="//telegram.org/dl/web">Web-browser</a></li>
+      </ul>
+    </div>
+    <div class="footer_column footer_column_platform">
+      <h5><a href="/">Platform</a></h5>
+      <ul>
+        <li><a href="/api">API</a></li>
+        <li><a href="//translations.telegram.org/">Translations</a></li>
+        <li><a href="//instantview.telegram.org/">Instant View</a></li>
+      </ul>
+    </div>
+  </div>
+  <div class="footer_columns_wrap footer_mobile">
+    <div class="footer_column">
+      <h5><a href="//telegram.org/faq">About</a></h5>
+    </div>
+    <div class="footer_column">
+      <h5><a href="//telegram.org/blog">Blog</a></h5>
+    </div>
+    <div class="footer_column">
+      <h5><a href="//telegram.org/apps">Apps</a></h5>
+    </div>
+    <div class="footer_column">
+      <h5><a href="/">Platform</a></h5>
+    </div>
+    <div class="footer_column">
+      <h5><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)">Twitter</a></h5>
+    </div>
+  </div>
+</div>
+    </div>
+    <script src="/js/main.js?42"></script>
+    
+    <script>backToTopInit("Go up");
+removePreloadInit();
+</script>
+  </body>
+</html>
+
diff --git a/data/core.telegram.org/api/layers.html b/data/core.telegram.org/api/layers.html
new file mode 100644
index 0000000000..c0e81d1050
--- /dev/null
+++ b/data/core.telegram.org/api/layers.html
@@ -0,0 +1,1446 @@
+<!DOCTYPE html>
+<html class="">
+  <head>
+    <meta charset="utf-8">
+    <title>Layers</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta property="description" content="Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.
+Layer…">
+    <meta property="og:title" content="Layers">
+    <meta property="og:image" content="">
+    <meta property="og:description" content="Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.
+Layer…">
+    <link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
+
+    <link href="/css/bootstrap.min.css?3" rel="stylesheet">
+    
+    <link href="/css/telegram.css?212" rel="stylesheet" media="screen">
+    <style>
+    </style>
+  </head>
+  <body class="preload">
+    <div class="dev_page_wrap">
+      <div class="dev_page_head navbar navbar-static-top navbar-tg">
+        <div class="navbar-inner">
+          <div class="container clearfix">
+            <ul class="nav navbar-nav navbar-right hidden-xs"><li class="navbar-twitter"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i><span> Twitter</span></a></li></ul>
+            <ul class="nav navbar-nav">
+              <li><a href="//telegram.org/">Home</a></li>
+<li class="hidden-xs"><a href="//telegram.org/faq">FAQ</a></li>
+<li class="hidden-xs"><a href="//telegram.org/apps">Apps</a></li>
+<li class="active"><a href="/api">API</a></li>
+<li class=""><a href="/mtproto">Protocol</a></li>
+<li class=""><a href="/schema">Schema</a></li>
+            </ul>
+          </div>
+        </div>
+      </div>
+      <div class="container clearfix">
+        <div class="dev_page">
+          <div id="dev_page_content_wrap" class=" ">
+  <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a  href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a  href="/api/layers" >Layers</a></li></ul></div>
+  <h1 id="dev_page_title">Layers</h1>
+  
+  <div id="dev_page_content"><!-- scroll_nav -->
+
+<p>Below you will find information on scheme changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</a>.</p>
+<h3><a class="anchor" href="#layer-121" id="layer-121" name="layer-121"><i class="anchor-icon"></i></a><a href="/schema?layer=121">Layer 121</a></h3>
+<p>Added <a href="/api/files#vector-thumbnails">SVG path previews</a> for animated stickers.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/photoPathSize">photoPathSize</a> - Messages with animated stickers can have a compressed svg (&lt; 300 bytes) to show the outline of the sticker before fetching the actual lottie animation.</li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/photoPathSize">photoPathSize</a>#d8214d41 type:<a href="/type/string">string</a> bytes:<a href="/type/bytes">bytes</a> = <a href="/type/PhotoSize">PhotoSize</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-120" id="layer-120" name="layer-120"><i class="anchor-icon"></i></a><a href="/schema?layer=120">Layer 120</a></h3>
+<p>Added <a href="/api/stats">message statistics</a>, and a method to unpin all pinned messages in a chat.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/stats.getMessagePublicForwards">stats.getMessagePublicForwards</a> - Obtains a list of messages, indicating to which other public channels was a channel message forwarded.  </li>
+<li>Added <a href="/method/stats.getMessageStats">stats.getMessageStats</a> - Get <a href="/api/stats">message statistics</a></li>
+<li>Added <a href="/method/messages.unpinAllMessages">messages.unpinAllMessages</a> - <a href="/api/pin">Unpin</a> all pinned messages</li>
+</ul>
+<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
+<ul>
+<li>Changed type of <strong>from_id</strong> from <strong>flags.0?InputUser</strong> to <strong>flags.0?InputPeer</strong> in <a href="/method/messages.search">messages.search</a></li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/inputMessageCallbackQuery">inputMessageCallbackQuery</a> - Used by bots for fetching information about the message that originated a callback query</li>
+<li>Added <a href="/constructor/channelParticipantLeft">channelParticipantLeft</a> - A participant that left the channel/supergroup</li>
+<li>Added <a href="/constructor/channelParticipantsMentions">channelParticipantsMentions</a> - This filter is used when looking for supergroup members to mention.  </li>
+<li>Added <a href="/constructor/updatePinnedMessages">updatePinnedMessages</a> - Some messages were pinned in a chat</li>
+<li>Added <a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a> - Messages were pinned/unpinned in a <a href="/api/channel">channel/supergroup</a></li>
+<li>Added <a href="/constructor/inputMessagesFilterPinned">inputMessagesFilterPinned</a> - Fetch only pinned messages</li>
+<li>Added <a href="/constructor/stats.messageStats">stats.messageStats</a> - Message statistics</li>
+<li>Added <a href="/constructor/messageActionGeoProximityReached">messageActionGeoProximityReached</a> - A user of the chat is now in proximity of another user</li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>flags</strong>, <strong>accuracy_radius</strong> parameters in <a href="/constructor/inputGeoPoint">inputGeoPoint</a></li>
+<li>Added <strong>flags</strong>, <strong>accuracy_radius</strong> parameters in <a href="/constructor/geoPoint">geoPoint</a></li>
+<li>Added <strong>offset_id_offset</strong> parameter in <a href="/constructor/messages.messagesSlice">messages.messagesSlice</a></li>
+<li>Added <strong>offset_id_offset</strong> parameter in <a href="/constructor/messages.channelMessages">messages.channelMessages</a></li>
+<li>Added <strong>heading</strong>, <strong>proximity_notification_radius</strong> parameters, changed type of <strong>period</strong> from <strong>int</strong> to <strong>flags.1?int</strong> in <a href="/constructor/inputBotInlineMessageMediaGeo">inputBotInlineMessageMediaGeo</a></li>
+<li>Added <strong>heading</strong>, <strong>proximity_notification_radius</strong> parameters, changed type of <strong>period</strong> from <strong>int</strong> to <strong>flags.1?int</strong> in <a href="/constructor/botInlineMessageMediaGeo">botInlineMessageMediaGeo</a></li>
+<li>Added <strong>heading</strong>, <strong>proximity_notification_radius</strong> parameters in <a href="/constructor/inputMediaGeoLive">inputMediaGeoLive</a></li>
+<li>Added <strong>flags</strong>, <strong>heading</strong>, <strong>proximity_notification_radius</strong> parameters in <a href="/constructor/messageMediaGeoLive">messageMediaGeoLive</a></li>
+</ul>
+<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
+<ul>
+<li>Removed updateChannelPinnedMessage</li>
+<li>Removed updateUserPinnedMessage</li>
+<li>Removed updateChatPinnedMessage</li>
+</ul>
+<h4><a class="anchor" href="#push-notification-changes" id="push-notification-changes" name="push-notification-changes"><i class="anchor-icon"></i></a>PUSH notification changes</h4>
+<h5><a class="anchor" href="#new-push-notifications" id="new-push-notifications" name="new-push-notifications"><i class="anchor-icon"></i></a>New PUSH notifications</h5>
+<ul>
+<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_PLAYLIST</a> - <code>{1} sent you {2} music files</code></li>
+<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_DOCS</a> - <code>{1} sent you {2} files</code></li>
+<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_PLAYLIST</a> - <code>{1} sent {3} music files to the group {2}</code></li>
+<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_DOCS</a> - <code>{1} sent {3} files to the group {2}</code></li>
+<li>Added <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_PLAYLIST</a> - <code>{1} posted {2} music files</code></li>
+<li>Added <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_DOCS</a> - <code>{1} posted {2} files</code></li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/inputGeoPoint">inputGeoPoint</a>#48222faf flags:<a href="/type/%23">#</a> lat:<a href="/type/double">double</a> long:<a href="/type/double">double</a> accuracy_radius:flags.0?<a href="/type/int">int</a> = <a href="/type/InputGeoPoint">InputGeoPoint</a>;<br>
+<a href="/constructor/geoPoint">geoPoint</a>#b2a2f663 flags:<a href="/type/%23">#</a> long:<a href="/type/double">double</a> lat:<a href="/type/double">double</a> access_hash:<a href="/type/long">long</a> accuracy_radius:flags.0?<a href="/type/int">int</a> = <a href="/type/GeoPoint">GeoPoint</a>;<br>
+<a href="/constructor/messages.messagesSlice">messages.messagesSlice</a>#3a54685e flags:<a href="/type/%23">#</a> inexact:flags.1?<a href="/constructor/true">true</a> count:<a href="/type/int">int</a> next_rate:flags.0?<a href="/type/int">int</a> offset_id_offset:flags.2?<a href="/type/int">int</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Message">Message</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.Messages">messages.Messages</a>;
+<a href="/constructor/messages.channelMessages">messages.channelMessages</a>#64479808 flags:<a href="/type/%23">#</a> inexact:flags.1?<a href="/constructor/true">true</a> pts:<a href="/type/int">int</a> count:<a href="/type/int">int</a> offset_id_offset:flags.2?<a href="/type/int">int</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Message">Message</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.Messages">messages.Messages</a>;<br>
+<a href="/constructor/inputBotInlineMessageMediaGeo">inputBotInlineMessageMediaGeo</a>#96929a85 flags:<a href="/type/%23">#</a> geo_point:<a href="/type/InputGeoPoint">InputGeoPoint</a> heading:flags.0?<a href="/type/int">int</a> period:flags.1?<a href="/type/int">int</a> proximity_notification_radius:flags.3?<a href="/type/int">int</a> reply_markup:flags.2?<a href="/type/ReplyMarkup">ReplyMarkup</a> = <a href="/type/InputBotInlineMessage">InputBotInlineMessage</a>;<br>
+<a href="/constructor/botInlineMessageMediaGeo">botInlineMessageMediaGeo</a>#051846fd flags:<a href="/type/%23">#</a> geo:<a href="/type/GeoPoint">GeoPoint</a> heading:flags.0?<a href="/type/int">int</a> period:flags.1?<a href="/type/int">int</a> proximity_notification_radius:flags.3?<a href="/type/int">int</a> reply_markup:flags.2?<a href="/type/ReplyMarkup">ReplyMarkup</a> = <a href="/type/BotInlineMessage">BotInlineMessage</a>;<br>
+<a href="/constructor/inputMediaGeoLive">inputMediaGeoLive</a>#971fa843 flags:<a href="/type/%23">#</a> stopped:flags.0?<a href="/constructor/true">true</a> geo_point:<a href="/type/InputGeoPoint">InputGeoPoint</a> heading:flags.2?<a href="/type/int">int</a> period:flags.1?<a href="/type/int">int</a> proximity_notification_radius:flags.3?<a href="/type/int">int</a> = <a href="/type/InputMedia">InputMedia</a>;<br>
+<a href="/constructor/messageMediaGeoLive">messageMediaGeoLive</a>#b940c666 flags:<a href="/type/%23">#</a> geo:<a href="/type/GeoPoint">GeoPoint</a> heading:flags.0?<a href="/type/int">int</a> period:<a href="/type/int">int</a> proximity_notification_radius:flags.1?<a href="/type/int">int</a> = <a href="/type/MessageMedia">MessageMedia</a>;<br>
+<a href="/constructor/inputMessageCallbackQuery">inputMessageCallbackQuery</a>#acfa1a7e id:<a href="/type/int">int</a> query_id:<a href="/type/long">long</a> = <a href="/type/InputMessage">InputMessage</a>;<br>
+<a href="/constructor/channelParticipantLeft">channelParticipantLeft</a>#c3c6796b user_id:<a href="/type/int">int</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;
+<a href="/constructor/channelParticipantsMentions">channelParticipantsMentions</a>#e04b5ceb flags:<a href="/type/%23">#</a> q:flags.0?<a href="/type/string">string</a> top_msg_id:flags.1?<a href="/type/int">int</a> = <a href="/type/ChannelParticipantsFilter">ChannelParticipantsFilter</a>;<br>
+<a href="/constructor/updatePinnedMessages">updatePinnedMessages</a>#ed85eab5 flags:<a href="/type/%23">#</a> pinned:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/Peer">Peer</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
+<a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a>#8588878b flags:<a href="/type/%23">#</a> pinned:flags.0?<a href="/constructor/true">true</a> channel_id:<a href="/type/int">int</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
+<a href="/constructor/inputMessagesFilterPinned">inputMessagesFilterPinned</a>#1bb00451 = <a href="/type/MessagesFilter">MessagesFilter</a>;<br>
+<a href="/constructor/stats.messageStats">stats.messageStats</a>#8999f295 views_graph:<a href="/type/StatsGraph">StatsGraph</a> = <a href="/type/stats.MessageStats">stats.MessageStats</a>;<br>
+<a href="/constructor/messageActionGeoProximityReached">messageActionGeoProximityReached</a>#98e0d697 from_id:<a href="/type/Peer">Peer</a> to_id:<a href="/type/Peer">Peer</a> distance:<a href="/type/int">int</a> = <a href="/type/MessageAction">MessageAction</a>;<br>
+---functions---<br>
+<a href="/method/messages.search">messages.search</a>#0c352eec flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> q:<a href="/type/string">string</a> from_id:flags.0?<a href="/type/InputPeer">InputPeer</a> top_msg_id:flags.1?<a href="/type/int">int</a> filter:<a href="/type/MessagesFilter">MessagesFilter</a> min_date:<a href="/type/int">int</a> max_date:<a href="/type/int">int</a> offset_id:<a href="/type/int">int</a> add_offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> max_id:<a href="/type/int">int</a> min_id:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;<br>
+<a href="/method/stats.getMessagePublicForwards">stats.getMessagePublicForwards</a>#5630281b channel:<a href="/type/InputChannel">InputChannel</a> msg_id:<a href="/type/int">int</a> offset_rate:<a href="/type/int">int</a> offset_peer:<a href="/type/InputPeer">InputPeer</a> offset_id:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;
+<a href="/method/stats.getMessageStats">stats.getMessageStats</a>#b6e0a3f5 flags:<a href="/type/%23">#</a> dark:flags.0?<a href="/constructor/true">true</a> channel:<a href="/type/InputChannel">InputChannel</a> msg_id:<a href="/type/int">int</a> = <a href="/type/stats.MessageStats">stats.MessageStats</a>;<br>
+<a href="/method/messages.unpinAllMessages">messages.unpinAllMessages</a>#f025bc8b peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/messages.AffectedHistory">messages.AffectedHistory</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-119" id="layer-119" name="layer-119"><i class="anchor-icon"></i></a><a href="/schema?layer=119">Layer 119</a></h3>
+<p>Added <a href="/api/threads">message threads</a> and <a href="/api/discussion">comment sections in channel posts</a>.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/messages.getReplies">messages.getReplies</a> - Get messages in a reply thread</li>
+<li>Added <a href="/method/messages.getDiscussionMessage">messages.getDiscussionMessage</a> - Get <a href="/api/threads">discussion message</a> from the <a href="/api/discussion">associated discussion group</a> of a channel to show it on top of the comment section, without actually joining the group</li>
+<li>Added <a href="/method/messages.readDiscussion">messages.readDiscussion</a> - Mark a <a href="/api/threads">thread</a> as read</li>
+<li>Added <a href="/method/contacts.blockFromReplies">contacts.blockFromReplies</a> - Stop getting notifications about <a href="/api/threads">thread replies</a> of a certain user in <code>@replies</code></li>
+</ul>
+<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
+<ul>
+<li>Changed type of <strong>id</strong> from <strong>InputUser</strong> to <strong>InputPeer</strong> in <a href="/method/contacts.block">contacts.block</a></li>
+<li>Changed type of <strong>id</strong> from <strong>InputUser</strong> to <strong>InputPeer</strong> in <a href="/method/contacts.unblock">contacts.unblock</a></li>
+<li>Added <strong>top_msg_id</strong> parameter in <a href="/method/messages.search">messages.search</a></li>
+<li>Added <strong>flags</strong>, <strong>top_msg_id</strong> parameters in <a href="/method/messages.setTyping">messages.setTyping</a></li>
+<li>Changed type of <a href="/method/messages.getMessagesViews">messages.getMessagesViews</a> from <strong>Vector&lt;int&gt;</strong> to <strong>messages.MessageViews</strong></li>
+<li>Added <strong>filter</strong>, <strong>min_date</strong>, <strong>max_date</strong> parameters in <a href="/method/messages.searchGlobal">messages.searchGlobal</a></li>
+<li>Added <strong>flags</strong>, <strong>thread</strong> parameters, changed type of <strong>grouped</strong> from <strong>Bool</strong> to <strong>flags.0?true</strong> in <a href="/method/channels.exportMessageLink">channels.exportMessageLink</a></li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/messageViews">messageViews</a> - View, forward counter + info about replies of a specific message</li>
+<li>Added <a href="/constructor/updateChannelMessageForwards">updateChannelMessageForwards</a> - The forward counter of a message in a channel has changed</li>
+<li>Added <a href="/constructor/photoSizeProgressive">photoSizeProgressive</a> - Progressively encoded photosize</li>
+<li>Added <a href="/constructor/messages.messageViews">messages.messageViews</a> - View, forward counter + info about replies</li>
+<li>Added <a href="/constructor/updateReadChannelDiscussionInbox">updateReadChannelDiscussionInbox</a> - Incoming comments in a <a href="/api/threads">discussion thread</a> were marked as read</li>
+<li>Added <a href="/constructor/updateReadChannelDiscussionOutbox">updateReadChannelDiscussionOutbox</a> - Outgoing comments in a <a href="/api/threads">discussion thread</a> were marked as read</li>
+<li>Added <a href="/constructor/messages.discussionMessage">messages.discussionMessage</a> - Information about a <a href="/api/threads">message thread</a></li>
+<li>Added <a href="/constructor/messageReplyHeader">messageReplyHeader</a> - Message replies and <a href="/api/threads">thread</a> information</li>
+<li>Added <a href="/constructor/messageReplies">messageReplies</a> - Info about <a href="/api/threads">the comment section of a channel post, or a simple message thread</a></li>
+<li>Added <a href="/constructor/updatePeerBlocked">updatePeerBlocked</a> - A peer was blocked</li>
+<li>Added <a href="/constructor/peerBlocked">peerBlocked</a> - Information about a blocked peer</li>
+<li>Added <a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a> - A user is typing in a <a href="/api/channel">supergroup, channel</a> or <a href="/api/threads">message thread</a></li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>pinned</strong>, <strong>peer_id</strong>, <strong>reply_to</strong>, <strong>forwards</strong>, <strong>replies</strong> parameters, removed <strong>to_id</strong>, <strong>reply_to_msg_id</strong> parameters, changed type of <strong>from_id</strong> from <strong>flags.8?int</strong> to <strong>flags.8?Peer</strong> in <a href="/constructor/message">message</a></li>
+<li>Added <strong>peer_id</strong>, <strong>reply_to</strong> parameters, removed <strong>to_id</strong>, <strong>reply_to_msg_id</strong> parameters, changed type of <strong>from_id</strong> from <strong>flags.8?int</strong> to <strong>flags.8?Peer</strong> in <a href="/constructor/messageService">messageService</a></li>
+<li>Added <strong>chats</strong> parameter, changed type of <strong>blocked</strong> from <strong>Vector&lt;ContactBlocked&gt;</strong> to <strong>Vector&lt;PeerBlocked&gt;</strong> in <a href="/constructor/contacts.blocked">contacts.blocked</a></li>
+<li>Added <strong>chats</strong> parameter, changed type of <strong>blocked</strong> from <strong>Vector&lt;ContactBlocked&gt;</strong> to <strong>Vector&lt;PeerBlocked&gt;</strong> in <a href="/constructor/contacts.blockedSlice">contacts.blockedSlice</a></li>
+<li>Added <strong>reply_to</strong> parameter, removed <strong>reply_to_msg_id</strong> parameter in <a href="/constructor/updateShortMessage">updateShortMessage</a></li>
+<li>Added <strong>reply_to</strong> parameter, removed <strong>reply_to_msg_id</strong> parameter in <a href="/constructor/updateShortChatMessage">updateShortChatMessage</a></li>
+<li>Added <strong>admin_rights</strong> parameter in <a href="/constructor/channelParticipantCreator">channelParticipantCreator</a></li>
+<li>Removed <strong>channel_id</strong> parameter, changed type of <strong>from_id</strong> from <strong>flags.0?int</strong> to <strong>flags.0?Peer</strong> in <a href="/constructor/messageFwdHeader">messageFwdHeader</a></li>
+</ul>
+<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
+<ul>
+<li>Removed contactBlocked</li>
+<li>Removed updateUserBlocked</li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/message">message</a>#58ae39c9 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> post:flags.14?<a href="/constructor/true">true</a> from_scheduled:flags.18?<a href="/constructor/true">true</a> legacy:flags.19?<a href="/constructor/true">true</a> edit_hide:flags.21?<a href="/constructor/true">true</a> pinned:flags.24?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:flags.8?<a href="/type/Peer">Peer</a> peer_id:<a href="/type/Peer">Peer</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/int">int</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> date:<a href="/type/int">int</a> message:<a href="/type/string">string</a> media:flags.9?<a href="/type/MessageMedia">MessageMedia</a> reply_markup:flags.6?<a href="/type/ReplyMarkup">ReplyMarkup</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; views:flags.10?<a href="/type/int">int</a> forwards:flags.10?<a href="/type/int">int</a> replies:flags.23?<a href="/type/MessageReplies">MessageReplies</a> edit_date:flags.15?<a href="/type/int">int</a> post_author:flags.16?<a href="/type/string">string</a> grouped_id:flags.17?<a href="/type/long">long</a> restriction_reason:flags.22?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/RestrictionReason">RestrictionReason</a>&gt; = <a href="/type/Message">Message</a>;
+<a href="/constructor/messageService">messageService</a>#286fa604 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> post:flags.14?<a href="/constructor/true">true</a> legacy:flags.19?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:flags.8?<a href="/type/Peer">Peer</a> peer_id:<a href="/type/Peer">Peer</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> date:<a href="/type/int">int</a> action:<a href="/type/MessageAction">MessageAction</a> = <a href="/type/Message">Message</a>;<br>
+<a href="/constructor/contacts.blocked">contacts.blocked</a>#0ade1591 blocked:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PeerBlocked">PeerBlocked</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/contacts.Blocked">contacts.Blocked</a>;
+<a href="/constructor/contacts.blockedSlice">contacts.blockedSlice</a>#e1664194 count:<a href="/type/int">int</a> blocked:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PeerBlocked">PeerBlocked</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/contacts.Blocked">contacts.Blocked</a>;<br>
+<a href="/constructor/updateShortMessage">updateShortMessage</a>#2296d2c8 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> user_id:<a href="/type/int">int</a> message:<a href="/type/string">string</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/int">int</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; = <a href="/type/Updates">Updates</a>;
+<a href="/constructor/updateShortChatMessage">updateShortChatMessage</a>#402d5dbb flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:<a href="/type/int">int</a> chat_id:<a href="/type/int">int</a> message:<a href="/type/string">string</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/int">int</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; = <a href="/type/Updates">Updates</a>;<br>
+<a href="/constructor/channelParticipantCreator">channelParticipantCreator</a>#447dca4b flags:<a href="/type/%23">#</a> user_id:<a href="/type/int">int</a> admin_rights:<a href="/type/ChatAdminRights">ChatAdminRights</a> rank:flags.0?<a href="/type/string">string</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;<br>
+<a href="/constructor/messageFwdHeader">messageFwdHeader</a>#5f777dce flags:<a href="/type/%23">#</a> from_id:flags.0?<a href="/type/Peer">Peer</a> from_name:flags.5?<a href="/type/string">string</a> date:<a href="/type/int">int</a> channel_post:flags.2?<a href="/type/int">int</a> post_author:flags.3?<a href="/type/string">string</a> saved_from_peer:flags.4?<a href="/type/Peer">Peer</a> saved_from_msg_id:flags.4?<a href="/type/int">int</a> psa_type:flags.6?<a href="/type/string">string</a> = <a href="/type/MessageFwdHeader">MessageFwdHeader</a>;
+<a href="/constructor/messageViews">messageViews</a>#455b853d flags:<a href="/type/%23">#</a> views:flags.0?<a href="/type/int">int</a> forwards:flags.1?<a href="/type/int">int</a> replies:flags.2?<a href="/type/MessageReplies">MessageReplies</a> = <a href="/type/MessageViews">MessageViews</a>;<br>
+<a href="/constructor/updateChannelMessageForwards">updateChannelMessageForwards</a>#6e8a84df channel_id:<a href="/type/int">int</a> id:<a href="/type/int">int</a> forwards:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
+<a href="/constructor/photoSizeProgressive">photoSizeProgressive</a>#5aa86a51 type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> sizes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/PhotoSize">PhotoSize</a>;<br>
+<a href="/constructor/messages.messageViews">messages.messageViews</a>#b6c4f543 views:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageViews">MessageViews</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.MessageViews">messages.MessageViews</a>;<br>
+<a href="/constructor/updateReadChannelDiscussionInbox">updateReadChannelDiscussionInbox</a>#1cc7de54 flags:<a href="/type/%23">#</a> channel_id:<a href="/type/int">int</a> top_msg_id:<a href="/type/int">int</a> read_max_id:<a href="/type/int">int</a> broadcast_id:flags.0?<a href="/type/int">int</a> broadcast_post:flags.0?<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
+<a href="/constructor/updateReadChannelDiscussionOutbox">updateReadChannelDiscussionOutbox</a>#4638a26c channel_id:<a href="/type/int">int</a> top_msg_id:<a href="/type/int">int</a> read_max_id:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
+<a href="/constructor/messages.discussionMessage">messages.discussionMessage</a>#f5dd8f9d flags:<a href="/type/%23">#</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Message">Message</a>&gt; max_id:flags.0?<a href="/type/int">int</a> read_inbox_max_id:flags.1?<a href="/type/int">int</a> read_outbox_max_id:flags.2?<a href="/type/int">int</a> chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.DiscussionMessage">messages.DiscussionMessage</a>;
+<a href="/constructor/messageReplyHeader">messageReplyHeader</a>#a6d57763 flags:<a href="/type/%23">#</a> reply_to_msg_id:<a href="/type/int">int</a> reply_to_peer_id:flags.0?<a href="/type/Peer">Peer</a> reply_to_top_id:flags.1?<a href="/type/int">int</a> = <a href="/type/MessageReplyHeader">MessageReplyHeader</a>;
+<a href="/constructor/messageReplies">messageReplies</a>#4128faac flags:<a href="/type/%23">#</a> comments:flags.0?<a href="/constructor/true">true</a> replies:<a href="/type/int">int</a> replies_pts:<a href="/type/int">int</a> recent_repliers:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Peer">Peer</a>&gt; channel_id:flags.0?<a href="/type/int">int</a> max_id:flags.2?<a href="/type/int">int</a> read_max_id:flags.3?<a href="/type/int">int</a> = <a href="/type/MessageReplies">MessageReplies</a>;<br>
+<a href="/constructor/updatePeerBlocked">updatePeerBlocked</a>#246a4b22 peer_id:<a href="/type/Peer">Peer</a> blocked:<a href="/type/Bool">Bool</a> = <a href="/type/Update">Update</a>;<br>
+<a href="/constructor/peerBlocked">peerBlocked</a>#e8fd8014 peer_id:<a href="/type/Peer">Peer</a> date:<a href="/type/int">int</a> = <a href="/type/PeerBlocked">PeerBlocked</a>;<br>
+<a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a>#ff2abe9f flags:<a href="/type/%23">#</a> channel_id:<a href="/type/int">int</a> top_msg_id:flags.0?<a href="/type/int">int</a> user_id:<a href="/type/int">int</a> action:<a href="/type/SendMessageAction">SendMessageAction</a> = <a href="/type/Update">Update</a>;<br>
+---functions---<br>
+<a href="/method/contacts.block">contacts.block</a>#68cc1411 id:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/Bool">Bool</a>;
+<a href="/method/contacts.unblock">contacts.unblock</a>#bea65d50 id:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/Bool">Bool</a>;<br>
+<a href="/method/messages.search">messages.search</a>#4e17810b flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> q:<a href="/type/string">string</a> from_id:flags.0?<a href="/type/InputUser">InputUser</a> top_msg_id:flags.1?<a href="/type/int">int</a> filter:<a href="/type/MessagesFilter">MessagesFilter</a> min_date:<a href="/type/int">int</a> max_date:<a href="/type/int">int</a> offset_id:<a href="/type/int">int</a> add_offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> max_id:<a href="/type/int">int</a> min_id:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;
+<a href="/method/messages.setTyping">messages.setTyping</a>#58943ee2 flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> top_msg_id:flags.0?<a href="/type/int">int</a> action:<a href="/type/SendMessageAction">SendMessageAction</a> = <a href="/type/Bool">Bool</a>;
+<a href="/method/messages.getMessagesViews">messages.getMessagesViews</a>#5784d3e1 peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; increment:<a href="/type/Bool">Bool</a> = <a href="/type/messages.MessageViews">messages.MessageViews</a>;
+<a href="/method/messages.searchGlobal">messages.searchGlobal</a>#4bc6589a flags:<a href="/type/%23">#</a> folder_id:flags.0?<a href="/type/int">int</a> q:<a href="/type/string">string</a> filter:<a href="/type/MessagesFilter">MessagesFilter</a> min_date:<a href="/type/int">int</a> max_date:<a href="/type/int">int</a> offset_rate:<a href="/type/int">int</a> offset_peer:<a href="/type/InputPeer">InputPeer</a> offset_id:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;<br>
+<a href="/method/channels.exportMessageLink">channels.exportMessageLink</a>#e63fadeb flags:<a href="/type/%23">#</a> grouped:flags.0?<a href="/constructor/true">true</a> thread:flags.1?<a href="/constructor/true">true</a> channel:<a href="/type/InputChannel">InputChannel</a> id:<a href="/type/int">int</a> = <a href="/type/ExportedMessageLink">ExportedMessageLink</a>;<br>
+<a href="/method/messages.getReplies">messages.getReplies</a>#24b581ba peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> offset_id:<a href="/type/int">int</a> offset_date:<a href="/type/int">int</a> add_offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> max_id:<a href="/type/int">int</a> min_id:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;
+<a href="/method/messages.getDiscussionMessage">messages.getDiscussionMessage</a>#446972fd peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> = <a href="/type/messages.DiscussionMessage">messages.DiscussionMessage</a>;
+<a href="/method/messages.readDiscussion">messages.readDiscussion</a>#f731a9f4 peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> read_max_id:<a href="/type/int">int</a> = <a href="/type/Bool">Bool</a>;<br>
+<a href="/method/contacts.blockFromReplies">contacts.blockFromReplies</a>#29a8962c flags:<a href="/type/%23">#</a> delete_message:flags.0?<a href="/constructor/true">true</a> delete_history:flags.1?<a href="/constructor/true">true</a> report_spam:flags.2?<a href="/constructor/true">true</a> msg_id:<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-118" id="layer-118" name="layer-118"><i class="anchor-icon"></i></a><a href="/schema?layer=118">Layer 118</a></h3>
+<p>Added method for fetching country names and phone patterns.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/help.getCountriesList">help.getCountriesList</a> - Get name, ISO code, localized name and phone codes/patterns of all available countries</li>
+</ul>
+<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
+<ul>
+<li>Added <strong>flags</strong>, <strong>silent</strong> parameters in <a href="/method/messages.sendEncrypted">messages.sendEncrypted</a></li>
+<li>Added <strong>flags</strong>, <strong>silent</strong> parameters in <a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a></li>
+<li>Added <strong>password</strong> parameter in <a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a></li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/help.countryCode">help.countryCode</a> - Country code and phone number pattern of a specific country</li>
+<li>Added <a href="/constructor/help.country">help.country</a> - Name, ISO code, localized name and phone codes/patterns of a specific country</li>
+<li>Added <a href="/constructor/help.countriesListNotModified">help.countriesListNotModified</a> - The country list has not changed</li>
+<li>Added <a href="/constructor/help.countriesList">help.countriesList</a> - Name, ISO code, localized name and phone codes/patterns of all available countries</li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>flags</strong>, <strong>requires_password</strong> parameters in <a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a></li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a>#35bbdb6b flags:<a href="/type/%23">#</a> requires_password:flags.0?<a href="/constructor/true">true</a> text:<a href="/type/string">string</a> data:<a href="/type/bytes">bytes</a> = <a href="/type/KeyboardButton">KeyboardButton</a>;<br>
+<a href="/constructor/help.countryCode">help.countryCode</a>#4203c5ef flags:<a href="/type/%23">#</a> country_code:<a href="/type/string">string</a> prefixes:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/string">string</a>&gt; patterns:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/string">string</a>&gt; = <a href="/type/help.CountryCode">help.CountryCode</a>;
+<a href="/constructor/help.country">help.country</a>#c3878e23 flags:<a href="/type/%23">#</a> hidden:flags.0?<a href="/constructor/true">true</a> iso2:<a href="/type/string">string</a> default_name:<a href="/type/string">string</a> name:flags.1?<a href="/type/string">string</a> country_codes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/help.CountryCode">help.CountryCode</a>&gt; = <a href="/type/help.Country">help.Country</a>;
+<a href="/constructor/help.countriesListNotModified">help.countriesListNotModified</a>#93cc1f32 = <a href="/type/help.CountriesList">help.CountriesList</a>;
+<a href="/constructor/help.countriesList">help.countriesList</a>#87d0759e countries:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/help.Country">help.Country</a>&gt; hash:<a href="/type/int">int</a> = <a href="/type/help.CountriesList">help.CountriesList</a>;<br>
+---functions---<br>
+<a href="/method/messages.sendEncrypted">messages.sendEncrypted</a>#44fa7a15 flags:<a href="/type/%23">#</a> silent:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/InputEncryptedChat">InputEncryptedChat</a> random_id:<a href="/type/long">long</a> data:<a href="/type/bytes">bytes</a> = <a href="/type/messages.SentEncryptedMessage">messages.SentEncryptedMessage</a>;
+<a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a>#5559481d flags:<a href="/type/%23">#</a> silent:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/InputEncryptedChat">InputEncryptedChat</a> random_id:<a href="/type/long">long</a> data:<a href="/type/bytes">bytes</a> file:<a href="/type/InputEncryptedFile">InputEncryptedFile</a> = <a href="/type/messages.SentEncryptedMessage">messages.SentEncryptedMessage</a>;
+<a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a>#9342ca07 flags:<a href="/type/%23">#</a> game:flags.1?<a href="/constructor/true">true</a> peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> data:flags.0?<a href="/type/bytes">bytes</a> password:flags.2?<a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a> = <a href="/type/messages.BotCallbackAnswer">messages.BotCallbackAnswer</a>;<br>
+<a href="/method/help.getCountriesList">help.getCountriesList</a>#735787a8 lang_code:<a href="/type/string">string</a> hash:<a href="/type/int">int</a> = <a href="/type/help.CountriesList">help.CountriesList</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-117" id="layer-117" name="layer-117"><i class="anchor-icon"></i></a><a href="/schema?layer=117">Layer 117</a></h3>
+<p>Added WebRTC endpoint constructors.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/phoneConnectionWebrtc">phoneConnectionWebrtc</a> - WebRTC connection parameters</li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/phoneConnectionWebrtc">phoneConnectionWebrtc</a>#635fe375 flags:<a href="/type/%23">#</a> turn:flags.0?<a href="/constructor/true">true</a> stun:flags.1?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> ip:<a href="/type/string">string</a> ipv6:<a href="/type/string">string</a> port:<a href="/type/int">int</a> username:<a href="/type/string">string</a> password:<a href="/type/string">string</a> = <a href="/type/PhoneConnection">PhoneConnection</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-116" id="layer-116" name="layer-116"><i class="anchor-icon"></i></a><a href="/schema?layer=116">Layer 116</a></h3>
+<p>Added <a href="/api/stats">supergroup statistics</a> and global privacy settings.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/stats.getMegagroupStats">stats.getMegagroupStats</a> - Get <a href="/api/stats">supergroup statistics</a></li>
+<li>Added <a href="/method/account.getGlobalPrivacySettings">account.getGlobalPrivacySettings</a> - Get global privacy settings</li>
+<li>Added <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a> - Set global privacy settings</li>
+<li>Added <a href="/method/help.dismissSuggestion">help.dismissSuggestion</a> - Dismiss a suggestion</li>
+</ul>
+<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
+<ul>
+<li>Changed type of <a href="/method/photos.updateProfilePhoto">photos.updateProfilePhoto</a> from <strong>UserProfilePhoto</strong> to <strong>photos.Photo</strong></li>
+<li>Added <strong>flags</strong>, <strong>video</strong>, <strong>video_start_ts</strong> parameters, changed type of <strong>file</strong> from <strong>InputFile</strong> to <strong>flags.0?InputFile</strong> in <a href="/method/photos.uploadProfilePhoto">photos.uploadProfilePhoto</a></li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/statsGroupTopPoster">statsGroupTopPoster</a> - Information about an active user in a supergroup</li>
+<li>Added <a href="/constructor/statsGroupTopAdmin">statsGroupTopAdmin</a> - Information about an active admin in a supergroup</li>
+<li>Added <a href="/constructor/statsGroupTopInviter">statsGroupTopInviter</a> - Information about an active supergroup inviter</li>
+<li>Added <a href="/constructor/stats.megagroupStats">stats.megagroupStats</a> - Supergroup <a href="/api/stats">statistics</a></li>
+<li>Added <a href="/constructor/globalPrivacySettings">globalPrivacySettings</a> - Global privacy settings</li>
+<li>Added <a href="/constructor/updateChannelParticipant">updateChannelParticipant</a> - A participant has left, joined, was banned or admined in a <a href="/api/channel">channel or supergroup</a>.</li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>flags</strong>, <strong>video</strong>, <strong>video_start_ts</strong> parameters, changed type of <strong>file</strong> from <strong>InputFile</strong> to <strong>flags.0?InputFile</strong> in <a href="/constructor/inputChatUploadedPhoto">inputChatUploadedPhoto</a></li>
+<li>Added <strong>flags</strong>, <strong>has_video</strong> parameters in <a href="/constructor/userProfilePhoto">userProfilePhoto</a></li>
+<li>Added <strong>flags</strong>, <strong>has_video</strong> parameters in <a href="/constructor/chatPhoto">chatPhoto</a></li>
+<li>Added <strong>video_sizes</strong> parameter in <a href="/constructor/photo">photo</a></li>
+<li>Added <strong>autoarchived</strong>, <strong>geo_distance</strong> parameters in <a href="/constructor/peerSettings">peerSettings</a></li>
+<li>Added <strong>flags</strong>, <strong>folder_id</strong> parameters in <a href="/constructor/encryptedChatRequested">encryptedChatRequested</a></li>
+<li>Added <strong>flags</strong>, <strong>video_start_ts</strong> parameters in <a href="/constructor/videoSize">videoSize</a></li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/inputChatUploadedPhoto">inputChatUploadedPhoto</a>#c642724e flags:<a href="/type/%23">#</a> file:flags.0?<a href="/type/InputFile">InputFile</a> video:flags.1?<a href="/type/InputFile">InputFile</a> video_start_ts:flags.2?<a href="/type/double">double</a> = <a href="/type/InputChatPhoto">InputChatPhoto</a>;<br>
+<a href="/constructor/userProfilePhoto">userProfilePhoto</a>#69d3ab26 flags:<a href="/type/%23">#</a> has_video:flags.0?<a href="/constructor/true">true</a> photo_id:<a href="/type/long">long</a> photo_small:<a href="/type/FileLocation">FileLocation</a> photo_big:<a href="/type/FileLocation">FileLocation</a> dc_id:<a href="/type/int">int</a> = <a href="/type/UserProfilePhoto">UserProfilePhoto</a>;<br>
+<a href="/constructor/chatPhoto">chatPhoto</a>#d20b9f3c flags:<a href="/type/%23">#</a> has_video:flags.0?<a href="/constructor/true">true</a> photo_small:<a href="/type/FileLocation">FileLocation</a> photo_big:<a href="/type/FileLocation">FileLocation</a> dc_id:<a href="/type/int">int</a> = <a href="/type/ChatPhoto">ChatPhoto</a>;<br>
+<a href="/constructor/photo">photo</a>#fb197a65 flags:<a href="/type/%23">#</a> has_stickers:flags.0?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> file_reference:<a href="/type/bytes">bytes</a> date:<a href="/type/int">int</a> sizes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PhotoSize">PhotoSize</a>&gt; video_sizes:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/VideoSize">VideoSize</a>&gt; dc_id:<a href="/type/int">int</a> = <a href="/type/Photo">Photo</a>;
+<a href="/constructor/peerSettings">peerSettings</a>#733f2961 flags:<a href="/type/%23">#</a> report_spam:flags.0?<a href="/constructor/true">true</a> add_contact:flags.1?<a href="/constructor/true">true</a> block_contact:flags.2?<a href="/constructor/true">true</a> share_contact:flags.3?<a href="/constructor/true">true</a> need_contacts_exception:flags.4?<a href="/constructor/true">true</a> report_geo:flags.5?<a href="/constructor/true">true</a> autoarchived:flags.7?<a href="/constructor/true">true</a> geo_distance:flags.6?<a href="/type/int">int</a> = <a href="/type/PeerSettings">PeerSettings</a>;<br>
+<a href="/constructor/encryptedChatRequested">encryptedChatRequested</a>#62718a82 flags:<a href="/type/%23">#</a> folder_id:flags.0?<a href="/type/int">int</a> id:<a href="/type/int">int</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> g_a:<a href="/type/bytes">bytes</a> = <a href="/type/EncryptedChat">EncryptedChat</a>;<br>
+<a href="/constructor/videoSize">videoSize</a>#e831c556 flags:<a href="/type/%23">#</a> type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> size:<a href="/type/int">int</a> video_start_ts:flags.0?<a href="/type/double">double</a> = <a href="/type/VideoSize">VideoSize</a>;<br>
+<a href="/constructor/statsGroupTopPoster">statsGroupTopPoster</a>#18f3d0f7 user_id:<a href="/type/int">int</a> messages:<a href="/type/int">int</a> avg_chars:<a href="/type/int">int</a> = <a href="/type/StatsGroupTopPoster">StatsGroupTopPoster</a>;
+<a href="/constructor/statsGroupTopAdmin">statsGroupTopAdmin</a>#6014f412 user_id:<a href="/type/int">int</a> deleted:<a href="/type/int">int</a> kicked:<a href="/type/int">int</a> banned:<a href="/type/int">int</a> = <a href="/type/StatsGroupTopAdmin">StatsGroupTopAdmin</a>;
+<a href="/constructor/statsGroupTopInviter">statsGroupTopInviter</a>#31962a4c user_id:<a href="/type/int">int</a> invitations:<a href="/type/int">int</a> = <a href="/type/StatsGroupTopInviter">StatsGroupTopInviter</a>;
+<a href="/constructor/stats.megagroupStats">stats.megagroupStats</a>#ef7ff916 period:<a href="/type/StatsDateRangeDays">StatsDateRangeDays</a> members:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> messages:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> viewers:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> posters:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> growth_graph:<a href="/type/StatsGraph">StatsGraph</a> members_graph:<a href="/type/StatsGraph">StatsGraph</a> new_members_by_source_graph:<a href="/type/StatsGraph">StatsGraph</a> languages_graph:<a href="/type/StatsGraph">StatsGraph</a> messages_graph:<a href="/type/StatsGraph">StatsGraph</a> actions_graph:<a href="/type/StatsGraph">StatsGraph</a> top_hours_graph:<a href="/type/StatsGraph">StatsGraph</a> weekdays_graph:<a href="/type/StatsGraph">StatsGraph</a> top_posters:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StatsGroupTopPoster">StatsGroupTopPoster</a>&gt; top_admins:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StatsGroupTopAdmin">StatsGroupTopAdmin</a>&gt; top_inviters:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StatsGroupTopInviter">StatsGroupTopInviter</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/stats.MegagroupStats">stats.MegagroupStats</a>;<br>
+<a href="/constructor/globalPrivacySettings">globalPrivacySettings</a>#bea2f424 flags:<a href="/type/%23">#</a> archive_and_mute_new_noncontact_peers:flags.0?<a href="/type/Bool">Bool</a> = <a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</a>;<br>
+<a href="/constructor/updateChannelParticipant">updateChannelParticipant</a>#65d2b464 flags:<a href="/type/%23">#</a> channel_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> user_id:<a href="/type/int">int</a> prev_participant:flags.0?<a href="/type/ChannelParticipant">ChannelParticipant</a> new_participant:flags.1?<a href="/type/ChannelParticipant">ChannelParticipant</a> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
+---functions---<br>
+<a href="/method/photos.updateProfilePhoto">photos.updateProfilePhoto</a>#72d4742c id:<a href="/type/InputPhoto">InputPhoto</a> = <a href="/type/photos.Photo">photos.Photo</a>;
+<a href="/method/photos.uploadProfilePhoto">photos.uploadProfilePhoto</a>#89f30f69 flags:<a href="/type/%23">#</a> file:flags.0?<a href="/type/InputFile">InputFile</a> video:flags.1?<a href="/type/InputFile">InputFile</a> video_start_ts:flags.2?<a href="/type/double">double</a> = <a href="/type/photos.Photo">photos.Photo</a>;<br>
+<a href="/method/stats.getMegagroupStats">stats.getMegagroupStats</a>#dcdf8607 flags:<a href="/type/%23">#</a> dark:flags.0?<a href="/constructor/true">true</a> channel:<a href="/type/InputChannel">InputChannel</a> = <a href="/type/stats.MegagroupStats">stats.MegagroupStats</a>;<br>
+<a href="/method/account.getGlobalPrivacySettings">account.getGlobalPrivacySettings</a>#eb2b4cf6 = <a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</a>;
+<a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a>#1edaaac2 settings:<a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</a> = <a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</a>;<br>
+<a href="/method/help.dismissSuggestion">help.dismissSuggestion</a>#077fa99f suggestion:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-115" id="layer-115" name="layer-115"><i class="anchor-icon"></i></a><a href="/schema?layer=115">Layer 115</a></h3>
+<p>Added a chat invitation that also allows peeking into the group to read messages without joining it.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/chatInvitePeek">chatInvitePeek</a> - A chat invitation that also allows peeking into the group to read messages without joining it.</li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/chatInvitePeek">chatInvitePeek</a>#61695cb0 chat:<a href="/type/Chat">Chat</a> expires:<a href="/type/int">int</a> = <a href="/type/ChatInvite">ChatInvite</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-114" id="layer-114" name="layer-114"><i class="anchor-icon"></i></a><a href="/schema?layer=114">Layer 114</a></h3>
+<p>Added WebRTC signaling methods.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/phone.sendSignalingData">phone.sendSignalingData</a> - Send VoIP signaling data</li>
+</ul>
+<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
+<ul>
+<li>Removed <strong>grouped</strong> parameter in <a href="/method/messages.forwardMessages">messages.forwardMessages</a></li>
+<li>Added <strong>unpin</strong>, <strong>pm_oneside</strong> parameters in <a href="/method/messages.updatePinnedMessage">messages.updatePinnedMessage</a></li>
+</ul>
+<h5><a class="anchor" href="#deleted-methods" id="deleted-methods" name="deleted-methods"><i class="anchor-icon"></i></a>Deleted Methods</h5>
+<ul>
+<li>Removed messages.searchGifs</li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/videoSize">videoSize</a> - <a href="/api/files#animated-profile-pictures">Animated profile picture</a> in MPEG4 format</li>
+<li>Added <a href="/constructor/updatePhoneCallSignalingData">updatePhoneCallSignalingData</a> - Incoming phone call signaling payload</li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>video_calls_available</strong> parameter in <a href="/constructor/userFull">userFull</a></li>
+<li>Added <strong>force_file</strong> parameter in <a href="/constructor/inputMediaUploadedDocument">inputMediaUploadedDocument</a></li>
+<li>Added <strong>video_thumbs</strong> parameter in <a href="/constructor/document">document</a></li>
+<li>Added <strong>apply_min_photo</strong> parameter in <a href="/constructor/user">user</a></li>
+<li>Added <strong>blocked</strong> parameter, changed type of <strong>can_view_stats</strong> from <strong>flags.12?true</strong> to <strong>flags.20?true</strong> in <a href="/constructor/channelFull">channelFull</a></li>
+<li>Changed type of <strong>video</strong> from <strong>flags.5?true</strong> to <strong>flags.6?true</strong> in <a href="/constructor/phoneCallWaiting">phoneCallWaiting</a></li>
+<li>Changed type of <strong>video</strong> from <strong>flags.5?true</strong> to <strong>flags.6?true</strong> in <a href="/constructor/phoneCallRequested">phoneCallRequested</a></li>
+<li>Changed type of <strong>video</strong> from <strong>flags.5?true</strong> to <strong>flags.6?true</strong> in <a href="/constructor/phoneCallAccepted">phoneCallAccepted</a></li>
+<li>Added <strong>video</strong> parameter in <a href="/constructor/phoneCall">phoneCall</a></li>
+<li>Changed type of <strong>video</strong> from <strong>flags.5?true</strong> to <strong>flags.6?true</strong> in <a href="/constructor/phoneCallDiscarded">phoneCallDiscarded</a></li>
+<li>Added <strong>anonymous</strong> parameter in <a href="/constructor/chatAdminRights">chatAdminRights</a></li>
+</ul>
+<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
+<ul>
+<li>Removed foundGif</li>
+<li>Removed foundGifCached</li>
+<li>Removed inputMediaGifExternal</li>
+<li>Removed messages.foundGifs</li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/userFull">userFull</a>#edf17c12 flags:<a href="/type/%23">#</a> blocked:flags.0?<a href="/constructor/true">true</a> phone_calls_available:flags.4?<a href="/constructor/true">true</a> phone_calls_private:flags.5?<a href="/constructor/true">true</a> can_pin_message:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.12?<a href="/constructor/true">true</a> video_calls_available:flags.13?<a href="/constructor/true">true</a> user:<a href="/type/User">User</a> about:flags.1?<a href="/type/string">string</a> settings:<a href="/type/PeerSettings">PeerSettings</a> profile_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> bot_info:flags.3?<a href="/type/BotInfo">BotInfo</a> pinned_msg_id:flags.6?<a href="/type/int">int</a> common_chats_count:<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> = <a href="/type/UserFull">UserFull</a>;<br>
+<a href="/constructor/inputMediaUploadedDocument">inputMediaUploadedDocument</a>#5b38c6c1 flags:<a href="/type/%23">#</a> nosound_video:flags.3?<a href="/constructor/true">true</a> force_file:flags.4?<a href="/constructor/true">true</a> file:<a href="/type/InputFile">InputFile</a> thumb:flags.2?<a href="/type/InputFile">InputFile</a> mime_type:<a href="/type/string">string</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; stickers:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputDocument">InputDocument</a>&gt; ttl_seconds:flags.1?<a href="/type/int">int</a> = <a href="/type/InputMedia">InputMedia</a>;<br>
+<a href="/constructor/document">document</a>#1e87342b flags:<a href="/type/%23">#</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> file_reference:<a href="/type/bytes">bytes</a> date:<a href="/type/int">int</a> mime_type:<a href="/type/string">string</a> size:<a href="/type/int">int</a> thumbs:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PhotoSize">PhotoSize</a>&gt; video_thumbs:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/VideoSize">VideoSize</a>&gt; dc_id:<a href="/type/int">int</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/Document">Document</a>;<br>
+<a href="/constructor/user">user</a>#938458c1 flags:<a href="/type/%23">#</a> self:flags.10?<a href="/constructor/true">true</a> contact:flags.11?<a href="/constructor/true">true</a> mutual_contact:flags.12?<a href="/constructor/true">true</a> deleted:flags.13?<a href="/constructor/true">true</a> bot:flags.14?<a href="/constructor/true">true</a> bot_chat_history:flags.15?<a href="/constructor/true">true</a> bot_nochats:flags.16?<a href="/constructor/true">true</a> verified:flags.17?<a href="/constructor/true">true</a> restricted:flags.18?<a href="/constructor/true">true</a> min:flags.20?<a href="/constructor/true">true</a> bot_inline_geo:flags.21?<a href="/constructor/true">true</a> support:flags.23?<a href="/constructor/true">true</a> scam:flags.24?<a href="/constructor/true">true</a> apply_min_photo:flags.25?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> access_hash:flags.0?<a href="/type/long">long</a> first_name:flags.1?<a href="/type/string">string</a> last_name:flags.2?<a href="/type/string">string</a> username:flags.3?<a href="/type/string">string</a> phone:flags.4?<a href="/type/string">string</a> photo:flags.5?<a href="/type/UserProfilePhoto">UserProfilePhoto</a> status:flags.6?<a href="/type/UserStatus">UserStatus</a> bot_info_version:flags.14?<a href="/type/int">int</a> restriction_reason:flags.18?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/RestrictionReason">RestrictionReason</a>&gt; bot_inline_placeholder:flags.19?<a href="/type/string">string</a> lang_code:flags.22?<a href="/type/string">string</a> = <a href="/type/User">User</a>;<br>
+<a href="/constructor/channelFull">channelFull</a>#f0e6672a flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> can_view_stats:flags.20?<a href="/constructor/true">true</a> blocked:flags.22?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/BotInfo">BotInfo</a>&gt; migrated_from_chat_id:flags.4?<a href="/type/int">int</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/int">int</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
+<a href="/constructor/phoneCallWaiting">phoneCallWaiting</a>#1b8f4ad1 flags:<a href="/type/%23">#</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> receive_date:flags.0?<a href="/type/int">int</a> = <a href="/type/PhoneCall">PhoneCall</a>;
+<a href="/constructor/phoneCallRequested">phoneCallRequested</a>#87eabb53 flags:<a href="/type/%23">#</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> g_a_hash:<a href="/type/bytes">bytes</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> = <a href="/type/PhoneCall">PhoneCall</a>;
+<a href="/constructor/phoneCallAccepted">phoneCallAccepted</a>#997c454a flags:<a href="/type/%23">#</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> g_b:<a href="/type/bytes">bytes</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> = <a href="/type/PhoneCall">PhoneCall</a>;
+<a href="/constructor/phoneCall">phoneCall</a>#8742ae7f flags:<a href="/type/%23">#</a> p2p_allowed:flags.5?<a href="/constructor/true">true</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> g_a_or_b:<a href="/type/bytes">bytes</a> key_fingerprint:<a href="/type/long">long</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> connections:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PhoneConnection">PhoneConnection</a>&gt; start_date:<a href="/type/int">int</a> = <a href="/type/PhoneCall">PhoneCall</a>;
+<a href="/constructor/phoneCallDiscarded">phoneCallDiscarded</a>#50ca4de1 flags:<a href="/type/%23">#</a> need_rating:flags.2?<a href="/constructor/true">true</a> need_debug:flags.3?<a href="/constructor/true">true</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> reason:flags.0?<a href="/type/PhoneCallDiscardReason">PhoneCallDiscardReason</a> duration:flags.1?<a href="/type/int">int</a> = <a href="/type/PhoneCall">PhoneCall</a>;<br>
+<a href="/constructor/chatAdminRights">chatAdminRights</a>#5fb224d5 flags:<a href="/type/%23">#</a> change_info:flags.0?<a href="/constructor/true">true</a> post_messages:flags.1?<a href="/constructor/true">true</a> edit_messages:flags.2?<a href="/constructor/true">true</a> delete_messages:flags.3?<a href="/constructor/true">true</a> ban_users:flags.4?<a href="/constructor/true">true</a> invite_users:flags.5?<a href="/constructor/true">true</a> pin_messages:flags.7?<a href="/constructor/true">true</a> add_admins:flags.9?<a href="/constructor/true">true</a> anonymous:flags.10?<a href="/constructor/true">true</a> = <a href="/type/ChatAdminRights">ChatAdminRights</a>;<br>
+<a href="/constructor/videoSize">videoSize</a>#435bb987 type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> size:<a href="/type/int">int</a> = <a href="/type/VideoSize">VideoSize</a>;<br>
+<a href="/constructor/updatePhoneCallSignalingData">updatePhoneCallSignalingData</a>#2661bf09 phone_call_id:<a href="/type/long">long</a> data:<a href="/type/bytes">bytes</a> = <a href="/type/Update">Update</a>;<br>
+---functions---<br>
+<a href="/method/messages.forwardMessages">messages.forwardMessages</a>#d9fee60e flags:<a href="/type/%23">#</a> silent:flags.5?<a href="/constructor/true">true</a> background:flags.6?<a href="/constructor/true">true</a> with_my_score:flags.8?<a href="/constructor/true">true</a> from_peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; random_id:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/long">long</a>&gt; to_peer:<a href="/type/InputPeer">InputPeer</a> schedule_date:flags.10?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;
+<a href="/method/messages.updatePinnedMessage">messages.updatePinnedMessage</a>#d2aaf7ec flags:<a href="/type/%23">#</a> silent:flags.0?<a href="/constructor/true">true</a> unpin:flags.1?<a href="/constructor/true">true</a> pm_oneside:flags.2?<a href="/constructor/true">true</a> peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br>
+<a href="/method/phone.sendSignalingData">phone.sendSignalingData</a>#ff7a9383 peer:<a href="/type/InputPhoneCall">InputPhoneCall</a> data:<a href="/type/bytes">bytes</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-113" id="layer-113" name="layer-113"><i class="anchor-icon"></i></a><a href="/schema?layer=113">Layer 113</a></h3>
+<p>Public Service Announcement constructors and better PUSH notifications.<br>
+Notice that all <code>PINNED_*</code> <a href="https://core.telegram.org/api/push-updates#possible-notifications">PUSH notifications</a> have two variants: one for groups, and one for channels.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/help.getPromoData">help.getPromoData</a> - Get MTProxy/Public Service Announcement information</li>
+<li>Added <a href="/method/help.hidePromoData">help.hidePromoData</a> - Hide MTProxy/Public Service Announcement information</li>
+</ul>
+<h5><a class="anchor" href="#deleted-methods" id="deleted-methods" name="deleted-methods"><i class="anchor-icon"></i></a>Deleted Methods</h5>
+<ul>
+<li>Removed help.getProxyData</li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/help.promoDataEmpty">help.promoDataEmpty</a> - No PSA/MTProxy info is available</li>
+<li>Added <a href="/constructor/help.promoData">help.promoData</a> - MTProxy/Public Service Announcement information</li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>psa_type</strong> parameter in <a href="/constructor/messageFwdHeader">messageFwdHeader</a></li>
+</ul>
+<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
+<ul>
+<li>Removed help.proxyDataEmpty</li>
+<li>Removed help.proxyDataPromo</li>
+</ul>
+<h4><a class="anchor" href="#push-notification-changes" id="push-notification-changes" name="push-notification-changes"><i class="anchor-icon"></i></a>PUSH notification changes</h4>
+<h5><a class="anchor" href="#new-push-notifications" id="new-push-notifications" name="new-push-notifications"><i class="anchor-icon"></i></a>New PUSH notifications</h5>
+<ul>
+<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_QUIZ</a> - <code>{1} sent you a quiz {2}</code></li>
+<li>Added <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_QUIZ</a> - <code>{1} posted a quiz {2}</code></li>
+<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_QUIZ</a> - <code>{1} sent a quiz {3} to the group {2}</code></li>
+<li>Added <a href="/api/push-updates#possible-notifications">PINNED_QUIZ</a> - <code>{1} pinned a quiz {2}</code></li>
+</ul>
+<h5><a class="anchor" href="#changed-push-notifications" id="changed-push-notifications" name="changed-push-notifications"><i class="anchor-icon"></i></a>Changed PUSH notifications</h5>
+<ul>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_TEXT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_NOTEXT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_PHOTO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_PHOTO_SECRET</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_VIDEO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_VIDEO_SECRET</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_SCREENSHOT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_ROUND</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_DOC</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_STICKER</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_AUDIO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_CONTACT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GEO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GEOLIVE</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_POLL</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GIF</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GAME</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GAME_SCORE</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_INVOICE</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_TEXT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_NOTEXT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_PHOTO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_VIDEO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_ROUND</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_DOC</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_STICKER</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_AUDIO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_CONTACT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GEO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GEOLIVE</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_POLL</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GIF</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GAME</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GAME_SCORE</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_TEXT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_NOTEXT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_PHOTO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_VIDEO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_ROUND</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_DOC</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_STICKER</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_AUDIO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_CONTACT</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GEO</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GEOLIVE</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_POLL</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GIF</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GAME</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GAME_SCORE</a></li>
+<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_INVOICE</a></li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/messageFwdHeader">messageFwdHeader</a>#353a686b flags:<a href="/type/%23">#</a> from_id:flags.0?<a href="/type/int">int</a> from_name:flags.5?<a href="/type/string">string</a> date:<a href="/type/int">int</a> channel_id:flags.1?<a href="/type/int">int</a> channel_post:flags.2?<a href="/type/int">int</a> post_author:flags.3?<a href="/type/string">string</a> saved_from_peer:flags.4?<a href="/type/Peer">Peer</a> saved_from_msg_id:flags.4?<a href="/type/int">int</a> psa_type:flags.6?<a href="/type/string">string</a> = <a href="/type/MessageFwdHeader">MessageFwdHeader</a>;<br>
+<a href="/constructor/help.promoDataEmpty">help.promoDataEmpty</a>#98f6ac75 expires:<a href="/type/int">int</a> = <a href="/type/help.PromoData">help.PromoData</a>;
+<a href="/constructor/help.promoData">help.promoData</a>#8c39793f flags:<a href="/type/%23">#</a> proxy:flags.0?<a href="/constructor/true">true</a> expires:<a href="/type/int">int</a> peer:<a href="/type/Peer">Peer</a> chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; psa_type:flags.1?<a href="/type/string">string</a> psa_message:flags.2?<a href="/type/string">string</a> = <a href="/type/help.PromoData">help.PromoData</a>;<br>
+---functions---<br>
+<a href="/method/help.getPromoData">help.getPromoData</a>#c0977421 = <a href="/type/help.PromoData">help.PromoData</a>;
+<a href="/method/help.hidePromoData">help.hidePromoData</a>#1e251c95 peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-112" id="layer-112" name="layer-112"><i class="anchor-icon"></i></a><a href="/schema?layer=112">Layer 112</a></h3>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/messages.getOldFeaturedStickers">messages.getOldFeaturedStickers</a> - Method for fetching previously featured stickers</li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>count</strong> parameter in <a href="/constructor/messages.featuredStickersNotModified">messages.featuredStickersNotModified</a></li>
+<li>Added <strong>count</strong> parameter in <a href="/constructor/messages.featuredStickers">messages.featuredStickers</a></li>
+<li>Added <strong>close_period</strong>, <strong>close_date</strong> parameters in <a href="/constructor/poll">poll</a></li>
+<li>Added <strong>solution</strong>, <strong>solution_entities</strong> parameters in <a href="/constructor/pollResults">pollResults</a></li>
+<li>Added <strong>solution</strong>, <strong>solution_entities</strong> parameters in <a href="/constructor/inputMediaPoll">inputMediaPoll</a></li>
+<li>Added <strong>emoticon</strong> parameter in <a href="/constructor/inputMediaDice">inputMediaDice</a></li>
+<li>Added <strong>emoticon</strong> parameter in <a href="/constructor/messageMediaDice">messageMediaDice</a></li>
+<li>Added <strong>emoticon</strong> parameter in <a href="/constructor/inputStickerSetDice">inputStickerSetDice</a></li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/messages.featuredStickersNotModified">messages.featuredStickersNotModified</a>#c6dc0c66 count:<a href="/type/int">int</a> = <a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a>;
+<a href="/constructor/messages.featuredStickers">messages.featuredStickers</a>#b6abc341 hash:<a href="/type/int">int</a> count:<a href="/type/int">int</a> sets:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StickerSetCovered">StickerSetCovered</a>&gt; unread:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/long">long</a>&gt; = <a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a>;<br>
+<a href="/constructor/poll">poll</a>#86e18161 id:<a href="/type/long">long</a> flags:<a href="/type/%23">#</a> closed:flags.0?<a href="/constructor/true">true</a> public_voters:flags.1?<a href="/constructor/true">true</a> multiple_choice:flags.2?<a href="/constructor/true">true</a> quiz:flags.3?<a href="/constructor/true">true</a> question:<a href="/type/string">string</a> answers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PollAnswer">PollAnswer</a>&gt; close_period:flags.4?<a href="/type/int">int</a> close_date:flags.5?<a href="/type/int">int</a> = <a href="/type/Poll">Poll</a>;
+<a href="/constructor/pollResults">pollResults</a>#badcc1a3 flags:<a href="/type/%23">#</a> min:flags.0?<a href="/constructor/true">true</a> results:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PollAnswerVoters">PollAnswerVoters</a>&gt; total_voters:flags.2?<a href="/type/int">int</a> recent_voters:flags.3?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; solution:flags.4?<a href="/type/string">string</a> solution_entities:flags.4?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; = <a href="/type/PollResults">PollResults</a>;<br>
+<a href="/constructor/inputMediaPoll">inputMediaPoll</a>#0f94e5f1 flags:<a href="/type/%23">#</a> poll:<a href="/type/Poll">Poll</a> correct_answers:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/bytes">bytes</a>&gt; solution:flags.1?<a href="/type/string">string</a> solution_entities:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; = <a href="/type/InputMedia">InputMedia</a>;
+<a href="/constructor/inputMediaDice">inputMediaDice</a>#e66fbf7b emoticon:<a href="/type/string">string</a> = <a href="/type/InputMedia">InputMedia</a>;<br>
+<a href="/constructor/messageMediaDice">messageMediaDice</a>#3f7ee58b value:<a href="/type/int">int</a> emoticon:<a href="/type/string">string</a> = <a href="/type/MessageMedia">MessageMedia</a>;<br>
+<a href="/constructor/inputStickerSetDice">inputStickerSetDice</a>#e67f520e emoticon:<a href="/type/string">string</a> = <a href="/type/InputStickerSet">InputStickerSet</a>;<br>
+---functions---<br>
+<a href="/method/initConnection">initConnection</a>#c1cd5ea9 {X:Type} flags:<a href="/type/%23">#</a> api_id:<a href="/type/int">int</a> device_model:<a href="/type/string">string</a> system_version:<a href="/type/string">string</a> app_version:<a href="/type/string">string</a> system_lang_code:<a href="/type/string">string</a> lang_pack:<a href="/type/string">string</a> lang_code:<a href="/type/string">string</a> proxy:flags.0?<a href="/type/InputClientProxy">InputClientProxy</a> params:flags.1?<a href="/type/JSONValue">JSONValue</a> query:!X = X;<br>
+<a href="/method/messages.getOldFeaturedStickers">messages.getOldFeaturedStickers</a>#5fe7025b offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-111" id="layer-111" name="layer-111"><i class="anchor-icon"></i></a><a href="/schema?layer=111">Layer 111</a></h3>
+<p><a href="/api/folders">Folders</a>, <a href="/api/stats">channel stats</a>, bot and sticker improvements</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/messages.getDialogFilters">messages.getDialogFilters</a> - Get <a href="/api/folders">folders</a></li>
+<li>Added <a href="/method/messages.getSuggestedDialogFilters">messages.getSuggestedDialogFilters</a> - Get <a href="/api/folders">suggested folders</a></li>
+<li>Added <a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a> - Update <a href="/api/folders">folder</a></li>
+<li>Added <a href="/method/messages.updateDialogFiltersOrder">messages.updateDialogFiltersOrder</a> - Reorder <a href="/api/folders">folders</a></li>
+<li>Added <a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a> - Get <a href="/api/stats">channel statistics</a></li>
+<li>Added <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a> - Load <a href="/api/stats">channel statistics graph</a> asynchronously</li>
+<li>Added <a href="/method/stickers.setStickerSetThumb">stickers.setStickerSetThumb</a> - Set stickerset thumbnail</li>
+<li>Added <a href="/method/bots.setBotCommands">bots.setBotCommands</a> - Set bot command list</li>
+</ul>
+<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
+<ul>
+<li>Added <strong>params</strong> parameter in <a href="/method/initConnection">initConnection</a></li>
+<li>Added <strong>animated</strong>, <strong>thumb</strong> parameters in <a href="/method/stickers.createStickerSet">stickers.createStickerSet</a></li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/dialogFilter">dialogFilter</a> - Dialog filter AKA <a href="/api/folders">folder</a></li>
+<li>Added <a href="/constructor/dialogFilterSuggested">dialogFilterSuggested</a> - Suggested <a href="/api/folders">folders</a></li>
+<li>Added <a href="/constructor/updateDialogFilter">updateDialogFilter</a> - A new <a href="/api/folders">folder</a> was added</li>
+<li>Added <a href="/constructor/updateDialogFilterOrder">updateDialogFilterOrder</a> - New <a href="/api/folders">folder</a> order</li>
+<li>Added <a href="/constructor/updateDialogFilters">updateDialogFilters</a> - Clients should update <a href="/api/folders">folder</a> info</li>
+<li>Added <a href="/constructor/statsDateRangeDays">statsDateRangeDays</a> - <a href="/api/stats">Channel statistics</a> date range</li>
+<li>Added <a href="/constructor/statsAbsValueAndPrev">statsAbsValueAndPrev</a> - Statistics value couple; intial and final value for period of time currently in consideration</li>
+<li>Added <a href="/constructor/statsPercentValue">statsPercentValue</a> - <a href="/api/stats">Channel statistics percentage</a>.  </li>
+<li>Added <a href="/constructor/statsGraphAsync">statsGraphAsync</a> - This <a href="/api/stats">channel statistics graph</a> must be generated asynchronously using <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a> to reduce server load</li>
+<li>Added <a href="/constructor/statsGraphError">statsGraphError</a> - An error occurred while generating the <a href="/api/stats">statistics graph</a></li>
+<li>Added <a href="/constructor/statsGraph">statsGraph</a> - <a href="/api/stats">Channel statistics graph</a></li>
+<li>Added <a href="/constructor/messageInteractionCounters">messageInteractionCounters</a> - Message interaction counters</li>
+<li>Added <a href="/constructor/stats.broadcastStats">stats.broadcastStats</a> - <a href="/api/stats">Channel statistics</a>.</li>
+<li>Added <a href="/constructor/inputMediaDice">inputMediaDice</a> - Send a <a href="/api/dice">dice-based animated sticker</a></li>
+<li>Added <a href="/constructor/messageMediaDice">messageMediaDice</a> - <a href="/api/dice">Dice-based animated sticker</a></li>
+<li>Added <a href="/constructor/inputStickerSetDice">inputStickerSetDice</a> - Used for fetching <a href="/api/dice">animated dice stickers</a></li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>stats_dc</strong> parameter in <a href="/constructor/channelFull">channelFull</a></li>
+<li>Added <strong>flags</strong>, <strong>cached_page_views</strong> parameters in <a href="/constructor/webPageNotModified">webPageNotModified</a></li>
+<li>Added <strong>library_versions</strong> parameter in <a href="/constructor/phoneCallProtocol">phoneCallProtocol</a></li>
+<li>Added <strong>views</strong> parameter in <a href="/constructor/page">page</a></li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/channelFull">channelFull</a>#f0e6672a flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_view_stats:flags.12?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/BotInfo">BotInfo</a>&gt; migrated_from_chat_id:flags.4?<a href="/type/int">int</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/int">int</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
+<a href="/constructor/webPageNotModified">webPageNotModified</a>#7311ca11 flags:<a href="/type/%23">#</a> cached_page_views:flags.0?<a href="/type/int">int</a> = <a href="/type/WebPage">WebPage</a>;<br>
+<a href="/constructor/phoneCallProtocol">phoneCallProtocol</a>#fc878fc8 flags:<a href="/type/%23">#</a> udp_p2p:flags.0?<a href="/constructor/true">true</a> udp_reflector:flags.1?<a href="/constructor/true">true</a> min_layer:<a href="/type/int">int</a> max_layer:<a href="/type/int">int</a> library_versions:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/string">string</a>&gt; = <a href="/type/PhoneCallProtocol">PhoneCallProtocol</a>;
+<a href="/constructor/page">page</a>#98657f0d flags:<a href="/type/%23">#</a> part:flags.0?<a href="/constructor/true">true</a> rtl:flags.1?<a href="/constructor/true">true</a> v2:flags.2?<a href="/constructor/true">true</a> url:<a href="/type/string">string</a> blocks:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PageBlock">PageBlock</a>&gt; photos:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Photo">Photo</a>&gt; documents:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Document">Document</a>&gt; views:flags.3?<a href="/type/int">int</a> = <a href="/type/Page">Page</a>;<br>
+<a href="/constructor/dialogFilter">dialogFilter</a>#7438f7e8 flags:<a href="/type/%23">#</a> contacts:flags.0?<a href="/constructor/true">true</a> non_contacts:flags.1?<a href="/constructor/true">true</a> groups:flags.2?<a href="/constructor/true">true</a> broadcasts:flags.3?<a href="/constructor/true">true</a> bots:flags.4?<a href="/constructor/true">true</a> exclude_muted:flags.11?<a href="/constructor/true">true</a> exclude_read:flags.12?<a href="/constructor/true">true</a> exclude_archived:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> title:<a href="/type/string">string</a> emoticon:flags.25?<a href="/type/string">string</a> pinned_peers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputPeer">InputPeer</a>&gt; include_peers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputPeer">InputPeer</a>&gt; exclude_peers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputPeer">InputPeer</a>&gt; = <a href="/type/DialogFilter">DialogFilter</a>;
+<a href="/constructor/dialogFilterSuggested">dialogFilterSuggested</a>#77744d4a filter:<a href="/type/DialogFilter">DialogFilter</a> description:<a href="/type/string">string</a> = <a href="/type/DialogFilterSuggested">DialogFilterSuggested</a>;<br>
+<a href="/constructor/updateDialogFilter">updateDialogFilter</a>#26ffde7d flags:<a href="/type/%23">#</a> id:<a href="/type/int">int</a> filter:flags.0?<a href="/type/DialogFilter">DialogFilter</a> = <a href="/type/Update">Update</a>;
+<a href="/constructor/updateDialogFilterOrder">updateDialogFilterOrder</a>#a5d72105 order:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/Update">Update</a>;
+<a href="/constructor/updateDialogFilters">updateDialogFilters</a>#3504914f = <a href="/type/Update">Update</a>;<br>
+<a href="/constructor/statsDateRangeDays">statsDateRangeDays</a>#b637edaf min_date:<a href="/type/int">int</a> max_date:<a href="/type/int">int</a> = <a href="/type/StatsDateRangeDays">StatsDateRangeDays</a>;
+<a href="/constructor/statsAbsValueAndPrev">statsAbsValueAndPrev</a>#cb43acde current:<a href="/type/double">double</a> previous:<a href="/type/double">double</a> = <a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a>;
+<a href="/constructor/statsPercentValue">statsPercentValue</a>#cbce2fe0 part:<a href="/type/double">double</a> total:<a href="/type/double">double</a> = <a href="/type/StatsPercentValue">StatsPercentValue</a>;
+<a href="/constructor/statsGraphAsync">statsGraphAsync</a>#4a27eb2d token:<a href="/type/string">string</a> = <a href="/type/StatsGraph">StatsGraph</a>;
+<a href="/constructor/statsGraphError">statsGraphError</a>#bedc9822 error:<a href="/type/string">string</a> = <a href="/type/StatsGraph">StatsGraph</a>;
+<a href="/constructor/statsGraph">statsGraph</a>#8ea464b6 flags:<a href="/type/%23">#</a> json:<a href="/type/DataJSON">DataJSON</a> zoom_token:flags.0?<a href="/type/string">string</a> = <a href="/type/StatsGraph">StatsGraph</a>;<br>
+<a href="/constructor/messageInteractionCounters">messageInteractionCounters</a>#ad4fc9bd msg_id:<a href="/type/int">int</a> views:<a href="/type/int">int</a> forwards:<a href="/type/int">int</a> = <a href="/type/MessageInteractionCounters">MessageInteractionCounters</a>;<br>
+<a href="/constructor/stats.broadcastStats">stats.broadcastStats</a>#bdf78394 period:<a href="/type/StatsDateRangeDays">StatsDateRangeDays</a> followers:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> views_per_post:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> shares_per_post:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> enabled_notifications:<a href="/type/StatsPercentValue">StatsPercentValue</a> growth_graph:<a href="/type/StatsGraph">StatsGraph</a> followers_graph:<a href="/type/StatsGraph">StatsGraph</a> mute_graph:<a href="/type/StatsGraph">StatsGraph</a> top_hours_graph:<a href="/type/StatsGraph">StatsGraph</a> interactions_graph:<a href="/type/StatsGraph">StatsGraph</a> iv_interactions_graph:<a href="/type/StatsGraph">StatsGraph</a> views_by_source_graph:<a href="/type/StatsGraph">StatsGraph</a> new_followers_by_source_graph:<a href="/type/StatsGraph">StatsGraph</a> languages_graph:<a href="/type/StatsGraph">StatsGraph</a> recent_message_interactions:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageInteractionCounters">MessageInteractionCounters</a>&gt; = <a href="/type/stats.BroadcastStats">stats.BroadcastStats</a>;<br>
+<a href="/constructor/inputMediaDice">inputMediaDice</a>#aeffa807 = <a href="/type/InputMedia">InputMedia</a>;<br>
+<a href="/constructor/messageMediaDice">messageMediaDice</a>#638fe46b value:<a href="/type/int">int</a> = <a href="/type/MessageMedia">MessageMedia</a>;<br>
+<a href="/constructor/inputStickerSetDice">inputStickerSetDice</a>#79e21a53 = <a href="/type/InputStickerSet">InputStickerSet</a>;<br>
+---functions---<br>
+<a href="/method/initConnection">initConnection</a>#785188b8 {X:Type} flags:<a href="/type/%23">#</a> api_id:<a href="/type/int">int</a> device_model:<a href="/type/string">string</a> system_version:<a href="/type/string">string</a> app_version:<a href="/type/string">string</a> system_lang_code:<a href="/type/string">string</a> lang_pack:<a href="/type/string">string</a> lang_code:<a href="/type/string">string</a> proxy:flags.0?<a href="/type/InputClientProxy">InputClientProxy</a> params:flags.1?<a href="/type/JSONValue">JSONValue</a> query:!X = X;<br>
+<a href="/method/stickers.createStickerSet">stickers.createStickerSet</a>#f1036780 flags:<a href="/type/%23">#</a> masks:flags.0?<a href="/constructor/true">true</a> animated:flags.1?<a href="/constructor/true">true</a> user_id:<a href="/type/InputUser">InputUser</a> title:<a href="/type/string">string</a> short_name:<a href="/type/string">string</a> thumb:flags.2?<a href="/type/InputDocument">InputDocument</a> stickers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputStickerSetItem">InputStickerSetItem</a>&gt; = <a href="/type/messages.StickerSet">messages.StickerSet</a>;<br>
+<a href="/method/messages.getDialogFilters">messages.getDialogFilters</a>#f19ed96d = <a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DialogFilter">DialogFilter</a>&gt;;
+<a href="/method/messages.getSuggestedDialogFilters">messages.getSuggestedDialogFilters</a>#a29cd42c = <a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DialogFilterSuggested">DialogFilterSuggested</a>&gt;;
+<a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a>#1ad4a04a flags:<a href="/type/%23">#</a> id:<a href="/type/int">int</a> filter:flags.0?<a href="/type/DialogFilter">DialogFilter</a> = <a href="/type/Bool">Bool</a>;
+<a href="/method/messages.updateDialogFiltersOrder">messages.updateDialogFiltersOrder</a>#c563c1e4 order:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/Bool">Bool</a>;<br>
+<a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a>#ab42441a flags:<a href="/type/%23">#</a> dark:flags.0?<a href="/constructor/true">true</a> channel:<a href="/type/InputChannel">InputChannel</a> = <a href="/type/stats.BroadcastStats">stats.BroadcastStats</a>;
+<a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a>#621d5fa0 flags:<a href="/type/%23">#</a> token:<a href="/type/string">string</a> x:flags.0?<a href="/type/long">long</a> = <a href="/type/StatsGraph">StatsGraph</a>;
+<a href="/method/stickers.setStickerSetThumb">stickers.setStickerSetThumb</a>#9a364e30 stickerset:<a href="/type/InputStickerSet">InputStickerSet</a> thumb:<a href="/type/InputDocument">InputDocument</a> = <a href="/type/messages.StickerSet">messages.StickerSet</a>;<br>
+<a href="/method/bots.setBotCommands">bots.setBotCommands</a>#805d46f6 commands:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/BotCommand">BotCommand</a>&gt; = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-110" id="layer-110" name="layer-110"><i class="anchor-icon"></i></a><a href="/schema?layer=110">Layer 110</a></h3>
+<p>Credit card information</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/payments.getBankCardData">payments.getBankCardData</a> - Get info about a credit card</li>
+</ul>
+<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
+<ul>
+<li>Removed <strong>params</strong> parameter in <a href="/method/initConnection">initConnection</a></li>
+<li>Added <strong>flags</strong>, <strong>background</strong>, <strong>self_expires</strong> parameters in <a href="/method/contacts.getLocated">contacts.getLocated</a></li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/messageEntityBankCard">messageEntityBankCard</a> - Indicates a credit card number</li>
+<li>Added <a href="/constructor/bankCardOpenUrl">bankCardOpenUrl</a> - Credit card info URL provided by the bank</li>
+<li>Added <a href="/constructor/payments.bankCardData">payments.bankCardData</a> - Credit card info, provided by the card's bank(s)</li>
+<li>Added <a href="/constructor/peerSelfLocated">peerSelfLocated</a> - Current peer</li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/messageEntityBankCard">messageEntityBankCard</a>#761e6af4 offset:<a href="/type/int">int</a> length:<a href="/type/int">int</a> = <a href="/type/MessageEntity">MessageEntity</a>;<br>
+<a href="/constructor/bankCardOpenUrl">bankCardOpenUrl</a>#f568028a url:<a href="/type/string">string</a> name:<a href="/type/string">string</a> = <a href="/type/BankCardOpenUrl">BankCardOpenUrl</a>;<br>
+<a href="/constructor/payments.bankCardData">payments.bankCardData</a>#3e24e573 title:<a href="/type/string">string</a> open_urls:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/BankCardOpenUrl">BankCardOpenUrl</a>&gt; = <a href="/type/payments.BankCardData">payments.BankCardData</a>;
+<a href="/constructor/peerSelfLocated">peerSelfLocated</a>#f8ec284b expires:<a href="/type/int">int</a> = <a href="/type/PeerLocated">PeerLocated</a>;<br>
+---functions---<br>
+<a href="/method/initConnection">initConnection</a>#785188b8 {X:Type} flags:<a href="/type/%23">#</a> api_id:<a href="/type/int">int</a> device_model:<a href="/type/string">string</a> system_version:<a href="/type/string">string</a> app_version:<a href="/type/string">string</a> system_lang_code:<a href="/type/string">string</a> lang_pack:<a href="/type/string">string</a> lang_code:<a href="/type/string">string</a> proxy:flags.0?<a href="/type/InputClientProxy">InputClientProxy</a> query:!X = X;<br>
+<a href="/method/contacts.getLocated">contacts.getLocated</a>#d348bc44 flags:<a href="/type/%23">#</a> background:flags.1?<a href="/constructor/true">true</a> geo_point:<a href="/type/InputGeoPoint">InputGeoPoint</a> self_expires:flags.0?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br>
+<a href="/method/payments.getBankCardData">payments.getBankCardData</a>#2e79d779 number:<a href="/type/string">string</a> = <a href="/type/payments.BankCardData">payments.BankCardData</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-109" id="layer-109" name="layer-109"><i class="anchor-icon"></i></a><a href="/schema?layer=109">Layer 109</a></h3>
+<p>Non-anonymous polls, improved sticker management</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/messages.getPollVotes">messages.getPollVotes</a> - Get poll results for non-anonymous polls</li>
+<li>Added <a href="/method/messages.toggleStickerSets">messages.toggleStickerSets</a> - Apply changes to multiple stickersets</li>
+</ul>
+<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
+<ul>
+<li>Added <strong>params</strong> parameter in <a href="/method/initConnection">initConnection</a></li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/updateMessagePollVote">updateMessagePollVote</a> - A specific user has voted in a poll</li>
+<li>Added <a href="/constructor/messageUserVote">messageUserVote</a> - How a user voted in a poll</li>
+<li>Added <a href="/constructor/messageUserVoteInputOption">messageUserVoteInputOption</a> - How a user voted in a poll (reduced constructor, returned if an <code>option</code> was provided to <a href="/method/messages.getPollVotes">messages.getPollVotes</a>)</li>
+<li>Added <a href="/constructor/messageUserVoteMultiple">messageUserVoteMultiple</a> - How a user voted in a multiple-choice poll</li>
+<li>Added <a href="/constructor/messages.votesList">messages.votesList</a> - How users voted in a poll</li>
+<li>Added <a href="/constructor/keyboardButtonRequestPoll">keyboardButtonRequestPoll</a> - A button that allows the user to create and send a poll when pressed; available only in private</li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>recent_voters</strong> parameter in <a href="/constructor/pollResults">pollResults</a></li>
+<li>Added <strong>flags</strong>, <strong>correct_answers</strong> parameters in <a href="/constructor/inputMediaPoll">inputMediaPoll</a></li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/pollResults">pollResults</a>#c87024a2 flags:<a href="/type/%23">#</a> min:flags.0?<a href="/constructor/true">true</a> results:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PollAnswerVoters">PollAnswerVoters</a>&gt; total_voters:flags.2?<a href="/type/int">int</a> recent_voters:flags.3?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/PollResults">PollResults</a>;<br>
+<a href="/constructor/inputMediaPoll">inputMediaPoll</a>#abe9ca25 flags:<a href="/type/%23">#</a> poll:<a href="/type/Poll">Poll</a> correct_answers:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/bytes">bytes</a>&gt; = <a href="/type/InputMedia">InputMedia</a>;<br>
+<a href="/constructor/updateMessagePollVote">updateMessagePollVote</a>#42f88f2c poll_id:<a href="/type/long">long</a> user_id:<a href="/type/int">int</a> options:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/bytes">bytes</a>&gt; = <a href="/type/Update">Update</a>;<br>
+<a href="/constructor/messageUserVote">messageUserVote</a>#a28e5559 user_id:<a href="/type/int">int</a> option:<a href="/type/bytes">bytes</a> date:<a href="/type/int">int</a> = <a href="/type/MessageUserVote">MessageUserVote</a>;
+<a href="/constructor/messageUserVoteInputOption">messageUserVoteInputOption</a>#36377430 user_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> = <a href="/type/MessageUserVote">MessageUserVote</a>;
+<a href="/constructor/messageUserVoteMultiple">messageUserVoteMultiple</a>#0e8fe0de user_id:<a href="/type/int">int</a> options:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/bytes">bytes</a>&gt; date:<a href="/type/int">int</a> = <a href="/type/MessageUserVote">MessageUserVote</a>;
+<a href="/constructor/messages.votesList">messages.votesList</a>#0823f649 flags:<a href="/type/%23">#</a> count:<a href="/type/int">int</a> votes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageUserVote">MessageUserVote</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; next_offset:flags.0?<a href="/type/string">string</a> = <a href="/type/messages.VotesList">messages.VotesList</a>;<br>
+<a href="/constructor/keyboardButtonRequestPoll">keyboardButtonRequestPoll</a>#bbc7515d flags:<a href="/type/%23">#</a> quiz:flags.0?<a href="/type/Bool">Bool</a> text:<a href="/type/string">string</a> = <a href="/type/KeyboardButton">KeyboardButton</a>;<br>
+---functions---<br>
+<a href="/method/initConnection">initConnection</a>#785188b8 {X:Type} flags:<a href="/type/%23">#</a> api_id:<a href="/type/int">int</a> device_model:<a href="/type/string">string</a> system_version:<a href="/type/string">string</a> app_version:<a href="/type/string">string</a> system_lang_code:<a href="/type/string">string</a> lang_pack:<a href="/type/string">string</a> lang_code:<a href="/type/string">string</a> proxy:flags.0?<a href="/type/InputClientProxy">InputClientProxy</a> params:flags.1?<a href="/type/JSONValue">JSONValue</a> query:!X = X;<br>
+<a href="/method/messages.getPollVotes">messages.getPollVotes</a>#b86e380e flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/int">int</a> option:flags.0?<a href="/type/bytes">bytes</a> offset:flags.1?<a href="/type/string">string</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.VotesList">messages.VotesList</a>;
+<a href="/method/messages.toggleStickerSets">messages.toggleStickerSets</a>#b5052fea flags:<a href="/type/%23">#</a> uninstall:flags.0?<a href="/constructor/true">true</a> archive:flags.1?<a href="/constructor/true">true</a> unarchive:flags.2?<a href="/constructor/true">true</a> stickersets:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputStickerSet">InputStickerSet</a>&gt; = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-108" id="layer-108" name="layer-108"><i class="anchor-icon"></i></a><a href="/schema?layer=108">Layer 108</a></h3>
+<p>Login with QR-code, sensitive content settings, quizes, multiple-choice and public polls, get inactive chats, improved wallpapers and themes.</p>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> - Generate a login token, for <a href="/api/qr-login">login via QR code</a>.  </li>
+<li>Added <a href="/method/auth.importLoginToken">auth.importLoginToken</a> - Login using a redirected login token, generated in case of DC mismatch during <a href="/api/qr-login">QR code login</a>.</li>
+<li>Added <a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</a> - Accept QR code login token, logging in the app that generated it.</li>
+<li>Added <a href="/method/account.setContentSettings">account.setContentSettings</a> - Set sensitive content settings (for viewing or hiding NSFW content)</li>
+<li>Added <a href="/method/account.getContentSettings">account.getContentSettings</a> - Get sensitive content settings</li>
+<li>Added <a href="/method/channels.getInactiveChannels">channels.getInactiveChannels</a> - Get inactive channels and supergroups</li>
+<li>Added <a href="/method/account.getMultiWallPapers">account.getMultiWallPapers</a> - Get info about multiple wallpapers</li>
+</ul>
+<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
+<ul>
+<li>Added <strong>cdn_supported</strong> parameter in <a href="/method/upload.getFile">upload.getFile</a></li>
+<li>Added <strong>flags</strong>, <strong>settings</strong> parameters, changed type of <strong>document</strong> from <strong>InputDocument</strong> to <strong>flags.2?InputDocument</strong> in <a href="/method/account.createTheme">account.createTheme</a></li>
+<li>Added <strong>settings</strong> parameter in <a href="/method/account.updateTheme">account.updateTheme</a></li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/inputPhotoLegacyFileLocation">inputPhotoLegacyFileLocation</a> - Legacy photo file location</li>
+<li>Added <a href="/constructor/updateGeoLiveViewed">updateGeoLiveViewed</a> - Live geoposition message was viewed</li>
+<li>Added <a href="/constructor/updateLoginToken">updateLoginToken</a> - A login token (for login via QR code) was accepted.</li>
+<li>Added <a href="/constructor/auth.loginToken">auth.loginToken</a> - Login token (for <a href="/api/qr-login">QR code login</a>)</li>
+<li>Added <a href="/constructor/auth.loginTokenMigrateTo">auth.loginTokenMigrateTo</a> - Repeat the query to the specified DC</li>
+<li>Added <a href="/constructor/auth.loginTokenSuccess">auth.loginTokenSuccess</a> - Login via token (QR code) succeded!</li>
+<li>Added <a href="/constructor/account.contentSettings">account.contentSettings</a> - Sensitive content settings</li>
+<li>Added <a href="/constructor/messages.inactiveChats">messages.inactiveChats</a> - Inactive chat list</li>
+<li>Added <a href="/constructor/baseThemeClassic">baseThemeClassic</a> - Classic theme</li>
+<li>Added <a href="/constructor/baseThemeDay">baseThemeDay</a> - Day theme</li>
+<li>Added <a href="/constructor/baseThemeNight">baseThemeNight</a> - Night theme</li>
+<li>Added <a href="/constructor/baseThemeTinted">baseThemeTinted</a> - Tinted theme</li>
+<li>Added <a href="/constructor/baseThemeArctic">baseThemeArctic</a> - Arctic theme</li>
+<li>Added <a href="/constructor/inputWallPaperNoFile">inputWallPaperNoFile</a> - Wallpaper with no file</li>
+<li>Added <a href="/constructor/wallPaperNoFile">wallPaperNoFile</a> - No file wallpaper</li>
+<li>Added <a href="/constructor/inputThemeSettings">inputThemeSettings</a> - Theme settings</li>
+<li>Added <a href="/constructor/themeSettings">themeSettings</a> - Theme settings</li>
+<li>Added <a href="/constructor/webPageAttributeTheme">webPageAttributeTheme</a> - Page theme</li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>attributes</strong> parameter, removed <strong>documents</strong> parameter in <a href="/constructor/webPage">webPage</a></li>
+<li>Added <strong>public_voters</strong>, <strong>multiple_choice</strong>, <strong>quiz</strong> parameters in <a href="/constructor/poll">poll</a></li>
+<li>Added <strong>correct</strong> parameter in <a href="/constructor/pollAnswerVoters">pollAnswerVoters</a></li>
+<li>Added <strong>second_background_color</strong>, <strong>rotation</strong> parameters in <a href="/constructor/wallPaperSettings">wallPaperSettings</a></li>
+<li>Added <strong>video_upload_maxbitrate</strong> parameter in <a href="/constructor/autoDownloadSettings">autoDownloadSettings</a></li>
+<li>Added <strong>settings</strong> parameter in <a href="/constructor/theme">theme</a></li>
+</ul>
+<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
+<ul>
+<li>Removed themeDocumentNotModified</li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/webPage">webPage</a>#e89c45b2 flags:<a href="/type/%23">#</a> id:<a href="/type/long">long</a> url:<a href="/type/string">string</a> display_url:<a href="/type/string">string</a> hash:<a href="/type/int">int</a> type:flags.0?<a href="/type/string">string</a> site_name:flags.1?<a href="/type/string">string</a> title:flags.2?<a href="/type/string">string</a> description:flags.3?<a href="/type/string">string</a> photo:flags.4?<a href="/type/Photo">Photo</a> embed_url:flags.5?<a href="/type/string">string</a> embed_type:flags.5?<a href="/type/string">string</a> embed_width:flags.6?<a href="/type/int">int</a> embed_height:flags.6?<a href="/type/int">int</a> duration:flags.7?<a href="/type/int">int</a> author:flags.8?<a href="/type/string">string</a> document:flags.9?<a href="/type/Document">Document</a> cached_page:flags.10?<a href="/type/Page">Page</a> attributes:flags.12?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/WebPageAttribute">WebPageAttribute</a>&gt; = <a href="/type/WebPage">WebPage</a>;<br>
+<a href="/constructor/poll">poll</a>#d5529d06 id:<a href="/type/long">long</a> flags:<a href="/type/%23">#</a> closed:flags.0?<a href="/constructor/true">true</a> public_voters:flags.1?<a href="/constructor/true">true</a> multiple_choice:flags.2?<a href="/constructor/true">true</a> quiz:flags.3?<a href="/constructor/true">true</a> question:<a href="/type/string">string</a> answers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PollAnswer">PollAnswer</a>&gt; = <a href="/type/Poll">Poll</a>;
+<a href="/constructor/pollAnswerVoters">pollAnswerVoters</a>#3b6ddad2 flags:<a href="/type/%23">#</a> chosen:flags.0?<a href="/constructor/true">true</a> correct:flags.1?<a href="/constructor/true">true</a> option:<a href="/type/bytes">bytes</a> voters:<a href="/type/int">int</a> = <a href="/type/PollAnswerVoters">PollAnswerVoters</a>;<br>
+<a href="/constructor/wallPaperSettings">wallPaperSettings</a>#05086cf8 flags:<a href="/type/%23">#</a> blur:flags.1?<a href="/constructor/true">true</a> motion:flags.2?<a href="/constructor/true">true</a> background_color:flags.0?<a href="/type/int">int</a> second_background_color:flags.4?<a href="/type/int">int</a> intensity:flags.3?<a href="/type/int">int</a> rotation:flags.4?<a href="/type/int">int</a> = <a href="/type/WallPaperSettings">WallPaperSettings</a>;<br>
+<a href="/constructor/autoDownloadSettings">autoDownloadSettings</a>#e04232f3 flags:<a href="/type/%23">#</a> disabled:flags.0?<a href="/constructor/true">true</a> video_preload_large:flags.1?<a href="/constructor/true">true</a> audio_preload_next:flags.2?<a href="/constructor/true">true</a> phonecalls_less_data:flags.3?<a href="/constructor/true">true</a> photo_size_max:<a href="/type/int">int</a> video_size_max:<a href="/type/int">int</a> file_size_max:<a href="/type/int">int</a> video_upload_maxbitrate:<a href="/type/int">int</a> = <a href="/type/AutoDownloadSettings">AutoDownloadSettings</a>;<br>
+<a href="/constructor/inputPhotoLegacyFileLocation">inputPhotoLegacyFileLocation</a>#d83466f3 id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> file_reference:<a href="/type/bytes">bytes</a> volume_id:<a href="/type/long">long</a> local_id:<a href="/type/int">int</a> secret:<a href="/type/long">long</a> = <a href="/type/InputFileLocation">InputFileLocation</a>;<br>
+<a href="/constructor/theme">theme</a>#028f1114 flags:<a href="/type/%23">#</a> creator:flags.0?<a href="/constructor/true">true</a> default:flags.1?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> slug:<a href="/type/string">string</a> title:<a href="/type/string">string</a> document:flags.2?<a href="/type/Document">Document</a> settings:flags.3?<a href="/type/ThemeSettings">ThemeSettings</a> installs_count:<a href="/type/int">int</a> = <a href="/type/Theme">Theme</a>;<br>
+<a href="/constructor/updateGeoLiveViewed">updateGeoLiveViewed</a>#871fb939 peer:<a href="/type/Peer">Peer</a> msg_id:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
+<a href="/constructor/updateLoginToken">updateLoginToken</a>#564fe691 = <a href="/type/Update">Update</a>;<br>
+<a href="/constructor/auth.loginToken">auth.loginToken</a>#629f1980 expires:<a href="/type/int">int</a> token:<a href="/type/bytes">bytes</a> = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
+<a href="/constructor/auth.loginTokenMigrateTo">auth.loginTokenMigrateTo</a>#068e9916 dc_id:<a href="/type/int">int</a> token:<a href="/type/bytes">bytes</a> = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
+<a href="/constructor/auth.loginTokenSuccess">auth.loginTokenSuccess</a>#390d5c5e authorization:<a href="/type/auth.Authorization">auth.Authorization</a> = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
+<a href="/constructor/account.contentSettings">account.contentSettings</a>#57e28221 flags:<a href="/type/%23">#</a> sensitive_enabled:flags.0?<a href="/constructor/true">true</a> sensitive_can_change:flags.1?<a href="/constructor/true">true</a> = <a href="/type/account.ContentSettings">account.ContentSettings</a>;<br>
+<a href="/constructor/messages.inactiveChats">messages.inactiveChats</a>#a927fec5 dates:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.InactiveChats">messages.InactiveChats</a>;<br>
+<a href="/constructor/baseThemeClassic">baseThemeClassic</a>#c3a12462 = <a href="/type/BaseTheme">BaseTheme</a>;
+<a href="/constructor/baseThemeDay">baseThemeDay</a>#fbd81688 = <a href="/type/BaseTheme">BaseTheme</a>;
+<a href="/constructor/baseThemeNight">baseThemeNight</a>#b7b31ea8 = <a href="/type/BaseTheme">BaseTheme</a>;
+<a href="/constructor/baseThemeTinted">baseThemeTinted</a>#6d5f77ee = <a href="/type/BaseTheme">BaseTheme</a>;
+<a href="/constructor/baseThemeArctic">baseThemeArctic</a>#5b11125a = <a href="/type/BaseTheme">BaseTheme</a>;<br>
+<a href="/constructor/inputWallPaperNoFile">inputWallPaperNoFile</a>#8427bbac = <a href="/type/InputWallPaper">InputWallPaper</a>;<br>
+<a href="/constructor/wallPaperNoFile">wallPaperNoFile</a>#8af40b25 flags:<a href="/type/%23">#</a> default:flags.1?<a href="/constructor/true">true</a> dark:flags.4?<a href="/constructor/true">true</a> settings:flags.2?<a href="/type/WallPaperSettings">WallPaperSettings</a> = <a href="/type/WallPaper">WallPaper</a>;<br>
+<a href="/constructor/inputThemeSettings">inputThemeSettings</a>#bd507cd1 flags:<a href="/type/%23">#</a> base_theme:<a href="/type/BaseTheme">BaseTheme</a> accent_color:<a href="/type/int">int</a> message_top_color:flags.0?<a href="/type/int">int</a> message_bottom_color:flags.0?<a href="/type/int">int</a> wallpaper:flags.1?<a href="/type/InputWallPaper">InputWallPaper</a> wallpaper_settings:flags.1?<a href="/type/WallPaperSettings">WallPaperSettings</a> = <a href="/type/InputThemeSettings">InputThemeSettings</a>;<br>
+<a href="/constructor/themeSettings">themeSettings</a>#9c14984a flags:<a href="/type/%23">#</a> base_theme:<a href="/type/BaseTheme">BaseTheme</a> accent_color:<a href="/type/int">int</a> message_top_color:flags.0?<a href="/type/int">int</a> message_bottom_color:flags.0?<a href="/type/int">int</a> wallpaper:flags.1?<a href="/type/WallPaper">WallPaper</a> = <a href="/type/ThemeSettings">ThemeSettings</a>;<br>
+<a href="/constructor/webPageAttributeTheme">webPageAttributeTheme</a>#54b56617 flags:<a href="/type/%23">#</a> documents:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Document">Document</a>&gt; settings:flags.1?<a href="/type/ThemeSettings">ThemeSettings</a> = <a href="/type/WebPageAttribute">WebPageAttribute</a>;<br>
+---functions---<br>
+<a href="/method/upload.getFile">upload.getFile</a>#b15a9afc flags:<a href="/type/%23">#</a> precise:flags.0?<a href="/constructor/true">true</a> cdn_supported:flags.1?<a href="/constructor/true">true</a> location:<a href="/type/InputFileLocation">InputFileLocation</a> offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> = <a href="/type/upload.File">upload.File</a>;<br>
+<a href="/method/account.createTheme">account.createTheme</a>#8432c21f flags:<a href="/type/%23">#</a> slug:<a href="/type/string">string</a> title:<a href="/type/string">string</a> document:flags.2?<a href="/type/InputDocument">InputDocument</a> settings:flags.3?<a href="/type/InputThemeSettings">InputThemeSettings</a> = <a href="/type/Theme">Theme</a>;
+<a href="/method/account.updateTheme">account.updateTheme</a>#5cb367d5 flags:<a href="/type/%23">#</a> format:<a href="/type/string">string</a> theme:<a href="/type/InputTheme">InputTheme</a> slug:flags.0?<a href="/type/string">string</a> title:flags.1?<a href="/type/string">string</a> document:flags.2?<a href="/type/InputDocument">InputDocument</a> settings:flags.3?<a href="/type/InputThemeSettings">InputThemeSettings</a> = <a href="/type/Theme">Theme</a>;
+<a href="/method/auth.exportLoginToken">auth.exportLoginToken</a>#b1b41517 api_id:<a href="/type/int">int</a> api_hash:<a href="/type/string">string</a> except_ids:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
+<a href="/method/auth.importLoginToken">auth.importLoginToken</a>#95ac5ce4 token:<a href="/type/bytes">bytes</a> = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
+<a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</a>#e894ad4d token:<a href="/type/bytes">bytes</a> = <a href="/type/Authorization">Authorization</a>;
+<a href="/method/account.setContentSettings">account.setContentSettings</a>#b574b16b flags:<a href="/type/%23">#</a> sensitive_enabled:flags.0?<a href="/constructor/true">true</a> = <a href="/type/Bool">Bool</a>;
+<a href="/method/account.getContentSettings">account.getContentSettings</a>#8b9b4dae = <a href="/type/account.ContentSettings">account.ContentSettings</a>;<br>
+<a href="/method/channels.getInactiveChannels">channels.getInactiveChannels</a>#11e831ee = <a href="/type/messages.InactiveChats">messages.InactiveChats</a>;<br>
+<a href="/method/account.getMultiWallPapers">account.getMultiWallPapers</a>#65ad71dc wallpapers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputWallPaper">InputWallPaper</a>&gt; = <a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/WallPaper">WallPaper</a>&gt;;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-105" id="layer-105" name="layer-105"><i class="anchor-icon"></i></a><a href="/schema?layer=105">Layer 105</a></h3>
+<p>The API underwent huge changes, a full reread of the <a href="https://core.telegram.org">documentation</a> is required.</p>
+<h3><a class="anchor" href="#layer-23" id="layer-23" name="layer-23"><i class="anchor-icon"></i></a><a href="/schema?layer=23">Layer 23</a></h3>
+<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
+<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
+<ul>
+<li>Added <a href="/method/account.getPrivacy">account.getPrivacy</a> - Get privacy settings of current account</li>
+<li>Added <a href="/method/account.setPrivacy">account.setPrivacy</a> - Change privacy settings of current account</li>
+<li>Added <a href="/method/account.deleteAccount">account.deleteAccount</a> - Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the <a href="/api/srp">2FA password and no recovery method is configured</a>.</li>
+<li>Added <a href="/method/account.getAccountTTL">account.getAccountTTL</a> - Get days to live of account</li>
+<li>Added <a href="/method/account.setAccountTTL">account.setAccountTTL</a> - Set account self-destruction period</li>
+<li>Added <a href="/method/invokeWithLayer">invokeWithLayer</a> - Invoke the specified query using the specified API <a href="/api/invoking#layers">layer</a></li>
+<li>Added <a href="/method/contacts.resolveUsername">contacts.resolveUsername</a> - Resolve a @username to get peer info</li>
+<li>Added <a href="/method/account.sendChangePhoneCode">account.sendChangePhoneCode</a> - Verify a new phone number to associate to the current account</li>
+<li>Added <a href="/method/account.changePhone">account.changePhone</a> - Change the phone number of the current account</li>
+<li>Added <a href="/method/messages.getStickers">messages.getStickers</a> - Get stickers by emoji</li>
+<li>Added <a href="/method/messages.getAllStickers">messages.getAllStickers</a> - Get all installed stickers</li>
+<li>Added <a href="/method/account.updateDeviceLocked">account.updateDeviceLocked</a> - When client-side passcode lock feature is enabled, will not show message texts in incoming <a href="/api/push-updates">PUSH notifications</a>.</li>
+</ul>
+<h5><a class="anchor" href="#deleted-methods" id="deleted-methods" name="deleted-methods"><i class="anchor-icon"></i></a>Deleted Methods</h5>
+<ul>
+<li>Removed invokeWithLayer18</li>
+</ul>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/userStatusRecently">userStatusRecently</a> - Online status: last seen recently</li>
+<li>Added <a href="/constructor/userStatusLastWeek">userStatusLastWeek</a> - Online status: last seen last week</li>
+<li>Added <a href="/constructor/userStatusLastMonth">userStatusLastMonth</a> - Online status: last seen last month</li>
+<li>Added <a href="/constructor/updatePrivacy">updatePrivacy</a> - Privacy rules were changed</li>
+<li>Added <a href="/constructor/inputPrivacyKeyStatusTimestamp">inputPrivacyKeyStatusTimestamp</a> - Whether we can see the exact last online timestamp of the user</li>
+<li>Added <a href="/constructor/privacyKeyStatusTimestamp">privacyKeyStatusTimestamp</a> - Whether we can see the last online timestamp</li>
+<li>Added <a href="/constructor/inputPrivacyValueAllowContacts">inputPrivacyValueAllowContacts</a> - Allow only contacts</li>
+<li>Added <a href="/constructor/inputPrivacyValueAllowAll">inputPrivacyValueAllowAll</a> - Allow all users</li>
+<li>Added <a href="/constructor/inputPrivacyValueAllowUsers">inputPrivacyValueAllowUsers</a> - Allow only certain users</li>
+<li>Added <a href="/constructor/inputPrivacyValueDisallowContacts">inputPrivacyValueDisallowContacts</a> - Disallow only contacts</li>
+<li>Added <a href="/constructor/inputPrivacyValueDisallowAll">inputPrivacyValueDisallowAll</a> - Disallow all</li>
+<li>Added <a href="/constructor/inputPrivacyValueDisallowUsers">inputPrivacyValueDisallowUsers</a> - Disallow only certain users</li>
+<li>Added <a href="/constructor/privacyValueAllowContacts">privacyValueAllowContacts</a> - Allow all contacts</li>
+<li>Added <a href="/constructor/privacyValueAllowAll">privacyValueAllowAll</a> - Allow all users</li>
+<li>Added <a href="/constructor/privacyValueAllowUsers">privacyValueAllowUsers</a> - Allow only certain users</li>
+<li>Added <a href="/constructor/privacyValueDisallowContacts">privacyValueDisallowContacts</a> - Disallow only contacts</li>
+<li>Added <a href="/constructor/privacyValueDisallowAll">privacyValueDisallowAll</a> - Disallow all users</li>
+<li>Added <a href="/constructor/privacyValueDisallowUsers">privacyValueDisallowUsers</a> - Disallow only certain users</li>
+<li>Added <a href="/constructor/account.privacyRules">account.privacyRules</a> - Privacy rules</li>
+<li>Added <a href="/constructor/accountDaysTTL">accountDaysTTL</a> - Time to live in days of the current account</li>
+<li>Added <a href="/constructor/account.sentChangePhoneCode">account.sentChangePhoneCode</a></li>
+<li>Added <a href="/constructor/updateUserPhone">updateUserPhone</a> - A user's phone number was changed</li>
+<li>Added <a href="/constructor/documentAttributeImageSize">documentAttributeImageSize</a> - Defines the width and height of an image uploaded as document</li>
+<li>Added <a href="/constructor/documentAttributeAnimated">documentAttributeAnimated</a> - Defines an animated GIF</li>
+<li>Added <a href="/constructor/documentAttributeSticker">documentAttributeSticker</a> - Defines a sticker</li>
+<li>Added <a href="/constructor/documentAttributeVideo">documentAttributeVideo</a> - Defines a video</li>
+<li>Added <a href="/constructor/documentAttributeAudio">documentAttributeAudio</a> - Represents an audio file</li>
+<li>Added <a href="/constructor/documentAttributeFilename">documentAttributeFilename</a> - A simple document with a file name</li>
+<li>Added <a href="/constructor/messages.stickersNotModified">messages.stickersNotModified</a> - No new stickers were found for the given query</li>
+<li>Added <a href="/constructor/messages.stickers">messages.stickers</a> - Found stickers</li>
+<li>Added <a href="/constructor/stickerPack">stickerPack</a> - A stickerpack is a group of stickers associated to the same emoji.  </li>
+<li>Added <a href="/constructor/messages.allStickersNotModified">messages.allStickersNotModified</a> - Info about all installed stickers hasn't changed</li>
+<li>Added <a href="/constructor/messages.allStickers">messages.allStickers</a> - Info about all installed stickers</li>
+<li>Added <a href="/constructor/disabledFeature">disabledFeature</a></li>
+</ul>
+<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
+<ul>
+<li>Added <strong>status</strong> parameter, removed <strong>expires</strong> parameter in <a href="/constructor/contactStatus">contactStatus</a></li>
+<li>Added <strong>expires</strong>, <strong>chat_big_size</strong>, <strong>disabled_features</strong> parameters in <a href="/constructor/config">config</a></li>
+<li>Added <strong>attributes</strong> parameter, removed <strong>file_name</strong> parameter in <a href="/constructor/inputMediaUploadedDocument">inputMediaUploadedDocument</a></li>
+<li>Added <strong>attributes</strong> parameter, removed <strong>file_name</strong> parameter in <a href="/constructor/inputMediaUploadedThumbDocument">inputMediaUploadedThumbDocument</a></li>
+<li>Added <strong>attributes</strong> parameter, removed <strong>user_id</strong>, <strong>file_name</strong> parameters in <a href="/constructor/document">document</a></li>
+</ul>
+<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
+<div><pre><code><a href="/constructor/contactStatus">contactStatus</a>#d3680c61 user_id:<a href="/type/int">int</a> status:<a href="/type/UserStatus">UserStatus</a> = <a href="/type/ContactStatus">ContactStatus</a>;
+<a href="/constructor/config">config</a>#7dae33e0 date:<a href="/type/int">int</a> expires:<a href="/type/int">int</a> test_mode:<a href="/type/Bool">Bool</a> this_dc:<a href="/type/int">int</a> dc_options:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DcOption">DcOption</a>&gt; chat_big_size:<a href="/type/int">int</a> chat_size_max:<a href="/type/int">int</a> broadcast_size_max:<a href="/type/int">int</a> disabled_features:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DisabledFeature">DisabledFeature</a>&gt; = <a href="/type/Config">Config</a>;<br>
+<a href="/constructor/inputMediaUploadedDocument">inputMediaUploadedDocument</a>#ffe76b78 file:<a href="/type/InputFile">InputFile</a> mime_type:<a href="/type/string">string</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/InputMedia">InputMedia</a>;
+<a href="/constructor/inputMediaUploadedThumbDocument">inputMediaUploadedThumbDocument</a>#41481486 file:<a href="/type/InputFile">InputFile</a> thumb:<a href="/type/InputFile">InputFile</a> mime_type:<a href="/type/string">string</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/InputMedia">InputMedia</a>;<br>
+<a href="/constructor/document">document</a>#f9a39f4f id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> mime_type:<a href="/type/string">string</a> size:<a href="/type/int">int</a> thumb:<a href="/type/PhotoSize">PhotoSize</a> dc_id:<a href="/type/int">int</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/Document">Document</a>;<br>
+<a href="/constructor/userStatusRecently">userStatusRecently</a>#e26f42f1 = <a href="/type/UserStatus">UserStatus</a>;
+<a href="/constructor/userStatusLastWeek">userStatusLastWeek</a>#07bf09fc = <a href="/type/UserStatus">UserStatus</a>;
+<a href="/constructor/userStatusLastMonth">userStatusLastMonth</a>#77ebc742 = <a href="/type/UserStatus">UserStatus</a>;
+<a href="/constructor/updatePrivacy">updatePrivacy</a>#ee3b272a key:<a href="/type/PrivacyKey">PrivacyKey</a> rules:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PrivacyRule">PrivacyRule</a>&gt; = <a href="/type/Update">Update</a>;<br>
+<a href="/constructor/inputPrivacyKeyStatusTimestamp">inputPrivacyKeyStatusTimestamp</a>#4f96cb18 = <a href="/type/InputPrivacyKey">InputPrivacyKey</a>;<br>
+<a href="/constructor/privacyKeyStatusTimestamp">privacyKeyStatusTimestamp</a>#bc2eab30 = <a href="/type/PrivacyKey">PrivacyKey</a>;<br>
+<a href="/constructor/inputPrivacyValueAllowContacts">inputPrivacyValueAllowContacts</a>#0d09e07b = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
+<a href="/constructor/inputPrivacyValueAllowAll">inputPrivacyValueAllowAll</a>#184b35ce = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
+<a href="/constructor/inputPrivacyValueAllowUsers">inputPrivacyValueAllowUsers</a>#131cc67f users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputUser">InputUser</a>&gt; = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
+<a href="/constructor/inputPrivacyValueDisallowContacts">inputPrivacyValueDisallowContacts</a>#0ba52007 = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
+<a href="/constructor/inputPrivacyValueDisallowAll">inputPrivacyValueDisallowAll</a>#d66b66c9 = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
+<a href="/constructor/inputPrivacyValueDisallowUsers">inputPrivacyValueDisallowUsers</a>#90110467 users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputUser">InputUser</a>&gt; = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;<br>
+<a href="/constructor/privacyValueAllowContacts">privacyValueAllowContacts</a>#fffe1bac = <a href="/type/PrivacyRule">PrivacyRule</a>;
+<a href="/constructor/privacyValueAllowAll">privacyValueAllowAll</a>#65427b82 = <a href="/type/PrivacyRule">PrivacyRule</a>;
+<a href="/constructor/privacyValueAllowUsers">privacyValueAllowUsers</a>#4d5bbe0c users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/PrivacyRule">PrivacyRule</a>;
+<a href="/constructor/privacyValueDisallowContacts">privacyValueDisallowContacts</a>#f888fa1a = <a href="/type/PrivacyRule">PrivacyRule</a>;
+<a href="/constructor/privacyValueDisallowAll">privacyValueDisallowAll</a>#8b73e763 = <a href="/type/PrivacyRule">PrivacyRule</a>;
+<a href="/constructor/privacyValueDisallowUsers">privacyValueDisallowUsers</a>#0c7f49b7 users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/PrivacyRule">PrivacyRule</a>;<br>
+<a href="/constructor/account.privacyRules">account.privacyRules</a>#554abb6f rules:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PrivacyRule">PrivacyRule</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/account.PrivacyRules">account.PrivacyRules</a>;
+<a href="/constructor/accountDaysTTL">accountDaysTTL</a>#b8d0afdf days:<a href="/type/int">int</a> = <a href="/type/AccountDaysTTL">AccountDaysTTL</a>;
+<a href="/constructor/account.sentChangePhoneCode">account.sentChangePhoneCode</a>#a4f58c4c phone_code_hash:<a href="/type/string">string</a> send_call_timeout:<a href="/type/int">int</a> = <a href="/type/account.SentChangePhoneCode">account.SentChangePhoneCode</a>;<br>
+<a href="/constructor/updateUserPhone">updateUserPhone</a>#12b9417b user_id:<a href="/type/int">int</a> phone:<a href="/type/string">string</a> = <a href="/type/Update">Update</a>;<br>
+<a href="/constructor/documentAttributeImageSize">documentAttributeImageSize</a>#6c37c15c w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeAnimated">documentAttributeAnimated</a>#11b58939 = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeSticker">documentAttributeSticker</a>#fb0a5727 = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeVideo">documentAttributeVideo</a>#5910cccb duration:<a href="/type/int">int</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeAudio">documentAttributeAudio</a>#051448e5 duration:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeFilename">documentAttributeFilename</a>#15590068 file_name:<a href="/type/string">string</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;<br>
+<a href="/constructor/messages.stickersNotModified">messages.stickersNotModified</a>#f1749a22 = <a href="/type/messages.Stickers">messages.Stickers</a>;
+<a href="/constructor/messages.stickers">messages.stickers</a>#8a8ecd32 hash:<a href="/type/string">string</a> stickers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Document">Document</a>&gt; = <a href="/type/messages.Stickers">messages.Stickers</a>;<br>
+<a href="/constructor/stickerPack">stickerPack</a>#12b299d4 emoticon:<a href="/type/string">string</a> documents:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/long">long</a>&gt; = <a href="/type/StickerPack">StickerPack</a>;<br>
+<a href="/constructor/messages.allStickersNotModified">messages.allStickersNotModified</a>#e86602c3 = <a href="/type/messages.AllStickers">messages.AllStickers</a>;
+<a href="/constructor/messages.allStickers">messages.allStickers</a>#dcef3102 hash:<a href="/type/string">string</a> packs:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StickerPack">StickerPack</a>&gt; documents:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Document">Document</a>&gt; = <a href="/type/messages.AllStickers">messages.AllStickers</a>;<br>
+<a href="/constructor/disabledFeature">disabledFeature</a>#ae636f24 feature:<a href="/type/string">string</a> description:<a href="/type/string">string</a> = <a href="/type/DisabledFeature">DisabledFeature</a>;<br>
+---functions---<br>
+<a href="/method/account.getPrivacy">account.getPrivacy</a>#dadbc950 key:<a href="/type/InputPrivacyKey">InputPrivacyKey</a> = <a href="/type/account.PrivacyRules">account.PrivacyRules</a>;
+<a href="/method/account.setPrivacy">account.setPrivacy</a>#c9f81ce8 key:<a href="/type/InputPrivacyKey">InputPrivacyKey</a> rules:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputPrivacyRule">InputPrivacyRule</a>&gt; = <a href="/type/account.PrivacyRules">account.PrivacyRules</a>;
+<a href="/method/account.deleteAccount">account.deleteAccount</a>#418d4e0b reason:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;
+<a href="/method/account.getAccountTTL">account.getAccountTTL</a>#08fc711d = <a href="/type/AccountDaysTTL">AccountDaysTTL</a>;
+<a href="/method/account.setAccountTTL">account.setAccountTTL</a>#2442485e ttl:<a href="/type/AccountDaysTTL">AccountDaysTTL</a> = <a href="/type/Bool">Bool</a>;<br>
+<a href="/method/invokeWithLayer">invokeWithLayer</a>#da9b0d0d {X:Type} layer:<a href="/type/int">int</a> query:!X = X;<br>
+<a href="/method/contacts.resolveUsername">contacts.resolveUsername</a>#0bf0131c username:<a href="/type/string">string</a> = <a href="/type/User">User</a>;<br>
+<a href="/method/account.sendChangePhoneCode">account.sendChangePhoneCode</a>#a407a8f4 phone_number:<a href="/type/string">string</a> = <a href="/type/account.SentChangePhoneCode">account.SentChangePhoneCode</a>;
+<a href="/method/account.changePhone">account.changePhone</a>#70c32edb phone_number:<a href="/type/string">string</a> phone_code_hash:<a href="/type/string">string</a> phone_code:<a href="/type/string">string</a> = <a href="/type/User">User</a>;<br>
+<a href="/method/messages.getStickers">messages.getStickers</a>#ae22e045 emoticon:<a href="/type/string">string</a> hash:<a href="/type/string">string</a> = <a href="/type/messages.Stickers">messages.Stickers</a>;
+<a href="/method/messages.getAllStickers">messages.getAllStickers</a>#aa3bc868 hash:<a href="/type/string">string</a> = <a href="/type/messages.AllStickers">messages.AllStickers</a>;<br>
+<a href="/method/account.updateDeviceLocked">account.updateDeviceLocked</a>#38df3532 period:<a href="/type/int">int</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
+<h4><a class="anchor" href="#end-to-end-scheme-changes" id="end-to-end-scheme-changes" name="end-to-end-scheme-changes"><i class="anchor-icon"></i></a>End-to-end scheme changes</h4>
+<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
+<ul>
+<li>Added <a href="/constructor/decryptedMessageActionCommitKey">decryptedMessageActionCommitKey</a> - Commit new key, see <a href="/api/end-to-end/pfs">rekeying process</a></li>
+<li>Added <a href="/constructor/decryptedMessageActionNoop">decryptedMessageActionNoop</a> - NOOP action</li>
+<li>Added <a href="/constructor/decryptedMessageActionAbortKey">decryptedMessageActionAbortKey</a> - Abort rekeying</li>
+<li>Added <a href="/constructor/decryptedMessageActionAcceptKey">decryptedMessageActionAcceptKey</a> - Accept new key</li>
+<li>Added <a href="/constructor/decryptedMessageActionRequestKey">decryptedMessageActionRequestKey</a> - Request rekeying, see <a href="/api/end-to-end/pfs">rekeying process</a></li>
+<li>Added <a href="/constructor/documentAttributeImageSize">documentAttributeImageSize</a> - Defines the width and height of an image uploaded as document</li>
+<li>Added <a href="/constructor/documentAttributeAnimated">documentAttributeAnimated</a> - Defines an animated GIF</li>
+<li>Added <a href="/constructor/documentAttributeSticker">documentAttributeSticker</a> - Defines a sticker</li>
+<li>Added <a href="/constructor/documentAttributeVideo">documentAttributeVideo</a> - Defines a video</li>
+<li>Added <a href="/constructor/documentAttributeAudio">documentAttributeAudio</a> - Represents an audio file</li>
+<li>Added <a href="/constructor/documentAttributeFilename">documentAttributeFilename</a> - A simple document with a file name</li>
+<li>Added <a href="/constructor/photoSizeEmpty">photoSizeEmpty</a> - Empty constructor. Image with this thumbnail is unavailable.</li>
+<li>Added <a href="/constructor/photoSize">photoSize</a> - Image description.</li>
+<li>Added <a href="/constructor/photoCachedSize">photoCachedSize</a> - Description of an image and its content.</li>
+<li>Added <a href="/constructor/fileLocationUnavailable">fileLocationUnavailable</a></li>
+<li>Added <a href="/constructor/fileLocation">fileLocation</a></li>
+<li>Added <a href="/constructor/decryptedMessageMediaExternalDocument">decryptedMessageMediaExternalDocument</a> - Non-e2e documented forwarded from non-secret chat</li>
+</ul>
+<h4><a class="anchor" href="#end-to-end-scheme" id="end-to-end-scheme" name="end-to-end-scheme"><i class="anchor-icon"></i></a>End-to-end scheme</h4>
+<div><pre><code>===20===<br>
+<a href="/constructor/decryptedMessageActionCommitKey">decryptedMessageActionCommitKey</a>#ec2e0b9b exchange_id:<a href="/type/long">long</a> key_fingerprint:<a href="/type/long">long</a> = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;
+<a href="/constructor/decryptedMessageActionNoop">decryptedMessageActionNoop</a>#a82fdd63 = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;
+<a href="/constructor/decryptedMessageActionAbortKey">decryptedMessageActionAbortKey</a>#dd05ec6b exchange_id:<a href="/type/long">long</a> = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;
+<a href="/constructor/decryptedMessageActionAcceptKey">decryptedMessageActionAcceptKey</a>#6fe1735b exchange_id:<a href="/type/long">long</a> g_b:<a href="/type/bytes">bytes</a> key_fingerprint:<a href="/type/long">long</a> = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;
+<a href="/constructor/decryptedMessageActionRequestKey">decryptedMessageActionRequestKey</a>#f3c9611b exchange_id:<a href="/type/long">long</a> g_a:<a href="/type/bytes">bytes</a> = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;<br>
+===23===
+<a href="/constructor/documentAttributeImageSize">documentAttributeImageSize</a>#6c37c15c w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeAnimated">documentAttributeAnimated</a>#11b58939 = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeSticker">documentAttributeSticker</a>#fb0a5727 = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeVideo">documentAttributeVideo</a>#5910cccb duration:<a href="/type/int">int</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeAudio">documentAttributeAudio</a>#051448e5 duration:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
+<a href="/constructor/documentAttributeFilename">documentAttributeFilename</a>#15590068 file_name:<a href="/type/string">string</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;<br>
+<a href="/constructor/photoSizeEmpty">photoSizeEmpty</a>#0e17e23c type:<a href="/type/string">string</a> = <a href="/type/PhotoSize">PhotoSize</a>;
+<a href="/constructor/photoSize">photoSize</a>#77bfb61b type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> size:<a href="/type/int">int</a> = <a href="/type/PhotoSize">PhotoSize</a>;
+<a href="/constructor/photoCachedSize">photoCachedSize</a>#e9a734fa type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> bytes:<a href="/type/bytes">bytes</a> = <a href="/type/PhotoSize">PhotoSize</a>;<br>
+<a href="/constructor/fileLocationUnavailable">fileLocationUnavailable</a>#7c596b46 volume_id:<a href="/type/long">long</a> local_id:<a href="/type/int">int</a> secret:<a href="/type/long">long</a> = <a href="/type/FileLocation">FileLocation</a>;
+<a href="/constructor/fileLocation">fileLocation</a>#53d69076 dc_id:<a href="/type/int">int</a> volume_id:<a href="/type/long">long</a> local_id:<a href="/type/int">int</a> secret:<a href="/type/long">long</a> = <a href="/type/FileLocation">FileLocation</a>;<br>
+<a href="/constructor/decryptedMessageMediaExternalDocument">decryptedMessageMediaExternalDocument</a>#fa95b0dd id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> mime_type:<a href="/type/string">string</a> size:<a href="/type/int">int</a> thumb:<a href="/type/PhotoSize">PhotoSize</a> dc_id:<a href="/type/int">int</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/DecryptedMessageMedia">DecryptedMessageMedia</a>;<br></code></pre></div>
+<h3><a class="anchor" href="#layer-18" id="layer-18" name="layer-18"><i class="anchor-icon"></i></a><a href="/schema?layer=18">Layer 18</a></h3>
+<p>Added username support and a new type of updates for service messages.</p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added methods <a href="/method/account.checkUsername">account.checkUsername</a> and <a href="/method/account.updateUsername">account.updateUsername</a> for setting up a username, as well as the method <a href="/method/contacts.search">contacts.search</a> that allows searching for publicly available users by username.</li>
+<li><strong>username</strong> field added to constructors of the type <a href="/type/User">User</a> and to the <a href="/constructor/updateUserName">updateUserName</a> constructor.</li>
+<li>Added new update constructor <a href="/constructor/updateServiceNotification">updateServiceNotification</a> for receiving service messages.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/contactFound'>contactFound</a> user_id:<a href='/type/int'>int</a> = <a href='/type/ContactFound'>ContactFound</a>;
+
+<a href='/constructor/contacts.found'>contacts.found</a> results:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/ContactFound'>ContactFound</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/contacts.Found'>contacts.Found</a>;
+
+<a href='/constructor/updateUserName'>updateUserName</a> user_id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
+
+<a href='/constructor/userSelf'>userSelf</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> phone:<a href='/type/string'>string</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:<a href='/type/UserStatus'>UserStatus</a> inactive:<a href='/type/Bool'>Bool</a> = <a href='/type/User'>User</a>;
+<a href='/constructor/userContact'>userContact</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> phone:<a href='/type/string'>string</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:<a href='/type/UserStatus'>UserStatus</a> = <a href='/type/User'>User</a>;
+<a href='/constructor/userRequest'>userRequest</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> phone:<a href='/type/string'>string</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:<a href='/type/UserStatus'>UserStatus</a> = <a href='/type/User'>User</a>;
+<a href='/constructor/userForeign'>userForeign</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:<a href='/type/UserStatus'>UserStatus</a> = <a href='/type/User'>User</a>;
+<a href='/constructor/userDeleted'>userDeleted</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;
+
+<a href='/constructor/updateServiceNotification'>updateServiceNotification</a> type:<a href='/type/string'>string</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> popup:<a href='/type/Bool'>Bool</a> = <a href='/type/Update'>Update</a>;
+
+---functions---
+
+<a href='/method/account.checkUsername'>account.checkUsername</a> username:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;
+<a href='/method/account.updateUsername'>account.updateUsername</a> username:<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;
+
+<a href='/method/contacts.search'>contacts.search</a> q:<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/contacts.Found'>contacts.Found</a>;
+
+invokeWithLayer18#1c900537 {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-17" id="layer-17" name="layer-17"><i class="anchor-icon"></i></a><a href="/schema?layer=17">Layer 17</a></h3>
+<p>Added new events for recording and uploading media, selecting contacts and locations to share.</p>
+<p>Read status for multimedia (messages containing <a href="/constructor/messageMediaVideo">messageMediaVideo</a> or <a href="/constructor/messageMediaAudio">messageMediaAudio</a>) was moved to the new method <a href="/method/messages.readMessageContents">messages.readMessageContents</a>. In case <strong>read_contents</strong> is not passed or <a href="/method/messages.readHistory">messages.readHistory</a> is used with an older layer, messages will be marked as read in the traditional way.</p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added new type <a href="/type/SendMessageAction">SendMessageAction</a> for user actions aside from typing (recording, uploading media, etc.). It is used in updates <a href="/constructor/updateUserTyping">updateUserTyping</a>, <a href="/constructor/updateChatUserTyping">updateChatUserTyping</a>, in the method <a href="/method/messages.setTyping">messages.setTyping</a>, and in the new encrypted service message <a href="/constructor/decryptedMessageActionTyping">decryptedMessageActionTyping</a>.</li>
+<li><strong>unread</strong> and <strong>out</strong> parameters in the constructors of the <a href="/type/Message">Message</a> type were joined to form the new <strong>flags</strong> parameter, containing a flag mask.</li>
+<li>Added new method <a href="/method/messages.readMessageContents">messages.readMessageContents</a>, to be called once the user listened to a voice message or watched a video.</li>
+<li>Added parameters for end-to-end encrypted messages <strong>in_seq_no</strong>, <strong>out_seq_no</strong> and <strong>ttl</strong>.</li>
+<li>Added <strong>mime_type</strong> field to secret chat audio and video constructors.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/sendMessageTypingAction'>sendMessageTypingAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageCancelAction'>sendMessageCancelAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageRecordVideoAction'>sendMessageRecordVideoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageUploadVideoAction'>sendMessageUploadVideoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageRecordAudioAction'>sendMessageRecordAudioAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageUploadAudioAction'>sendMessageUploadAudioAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageUploadPhotoAction'>sendMessageUploadPhotoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageUploadDocumentAction'>sendMessageUploadDocumentAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageGeoLocationAction'>sendMessageGeoLocationAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageChooseContactAction'>sendMessageChooseContactAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+
+<a href='/constructor/updateUserTyping'>updateUserTyping</a> user_id:<a href='/type/int'>int</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Update'>Update</a>;
+<a href='/constructor/updateChatUserTyping'>updateChatUserTyping</a> chat_id:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Update'>Update</a>;
+
+// Message object
+<a href='/constructor/message'>message</a> flags:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> to_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> = <a href='/type/Message'>Message</a>;
+<a href='/constructor/messageForwarded'>messageForwarded</a> flags:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> fwd_from_id:<a href='/type/int'>int</a> fwd_date:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> to_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> = <a href='/type/Message'>Message</a>;
+<a href='/constructor/messageService'>messageService</a> flags:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> to_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> = <a href='/type/Message'>Message</a>;
+
+---functions---
+
+<a href='/method/messages.setTyping'>messages.setTyping</a> peer:<a href='/type/InputPeer'>InputPeer</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Bool'>Bool</a>;
+
+<a href='/method/messages.readHistory'>messages.readHistory</a> peer:<a href='/type/InputPeer'>InputPeer</a> max_id:<a href='/type/int'>int</a> offset:<a href='/type/int'>int</a> read_contents:<a href='/type/Bool'>Bool</a> = <a href='/type/messages.AffectedHistory'>messages.AffectedHistory</a>;
+<a href='/method/messages.readMessageContents'>messages.readMessageContents</a> id:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt; = <a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt;;
+
+invokeWithLayer17#50858a19 {X:Type} query:!X = X;</code></pre>
+<h4><a class="anchor" href="#end-to-end-schema" id="end-to-end-schema" name="end-to-end-schema"><i class="anchor-icon"></i></a>End-to-end schema</h4>
+<pre><code>===17===
+
+
+// Layer
+<a href='/constructor/decryptedMessageLayer'>decryptedMessageLayer</a> random_bytes:<a href='/type/bytes'>bytes</a> layer:<a href='/type/int'>int</a> in_seq_no:<a href='/type/int'>int</a> out_seq_no:<a href='/type/int'>int</a> message:<a href='/type/DecryptedMessage'>DecryptedMessage</a> = <a href='/type/DecryptedMessageLayer'>DecryptedMessageLayer</a>;
+
+<a href='/constructor/decryptedMessageMediaAudio'>decryptedMessageMediaAudio</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+<a href='/constructor/decryptedMessageMediaVideo'>decryptedMessageMediaVideo</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+
+<a href='/constructor/sendMessageTypingAction'>sendMessageTypingAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageCancelAction'>sendMessageCancelAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageRecordVideoAction'>sendMessageRecordVideoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageUploadVideoAction'>sendMessageUploadVideoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageRecordAudioAction'>sendMessageRecordAudioAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageUploadAudioAction'>sendMessageUploadAudioAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageUploadPhotoAction'>sendMessageUploadPhotoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageUploadDocumentAction'>sendMessageUploadDocumentAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageGeoLocationAction'>sendMessageGeoLocationAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+<a href='/constructor/sendMessageChooseContactAction'>sendMessageChooseContactAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
+
+<a href='/constructor/decryptedMessageActionNotifyLayer'>decryptedMessageActionNotifyLayer</a> layer:<a href='/type/int'>int</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
+<a href='/constructor/decryptedMessageActionTyping'>decryptedMessageActionTyping</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
+
+<a href='/constructor/decryptedMessage'>decryptedMessage</a> random_id:<a href='/type/long'>long</a> ttl:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:<a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a> = <a href='/type/DecryptedMessage'>DecryptedMessage</a>;
+<a href='/constructor/decryptedMessageService'>decryptedMessageService</a> random_id:<a href='/type/long'>long</a> action:<a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a> = <a href='/type/DecryptedMessage'>DecryptedMessage</a>;</code></pre>
+<h3><a class="anchor" href="#layer-16" id="layer-16" name="layer-16"><i class="anchor-icon"></i></a><a href="/schema?layer=16">Layer 16</a></h3>
+<p>Added new <strong>sms_type</strong> = <code>5</code> in the method <a href="/method/auth.sendCode">auth.sendCode</a>.</p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added new constructor: <a href="/constructor/auth.sentAppCode">auth.sentAppCode</a> to determine whether a code was sent via Telegram.</li>
+<li>Added new method <a href="/method/auth.sendSms">auth.sendSms</a> to force re-sending a code via SMS.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/auth.sentAppCode'>auth.sentAppCode</a> phone_registered:<a href='/type/Bool'>Bool</a> phone_code_hash:<a href='/type/string'>string</a> send_call_timeout:<a href='/type/int'>int</a> is_password:<a href='/type/Bool'>Bool</a> = <a href='/type/auth.SentCode'>auth.SentCode</a>;
+
+---functions---
+
+<a href='/method/auth.sendSms'>auth.sendSms</a> phone_number:<a href='/type/string'>string</a> phone_code_hash:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;
+
+invokeWithLayer16#cf5f0987 {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-15" id="layer-15" name="layer-15"><i class="anchor-icon"></i></a><a href="/schema?layer=15">Layer 15</a></h3>
+<p>Modified behavior of the <strong>offset</strong> parameter in the method <a href="/method/messages.getHistory">messages.getHistory</a>. From now on it's possible to combine message_id offset and a numeric offset.</p>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code>invokeWithLayer15#b4418b64 {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-14" id="layer-14" name="layer-14"><i class="anchor-icon"></i></a><a href="/schema?layer=14">Layer 14</a></h3>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added new update constructors: <a href="/constructor/updateUserBlocked">updateUserBlocked</a> and <a href="/constructor/updateNotifySettings">updateNotifySettings</a> to sync notification settings and blacklists between devices.</li>
+<li>Added <strong>notify_settings</strong> field to the <a href="/constructor/dialog">dialog</a> constructor.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/notifyPeer'>notifyPeer</a> peer:<a href='/type/Peer'>Peer</a> = <a href='/type/NotifyPeer'>NotifyPeer</a>;
+<a href='/constructor/notifyUsers'>notifyUsers</a> = <a href='/type/NotifyPeer'>NotifyPeer</a>;
+<a href='/constructor/notifyChats'>notifyChats</a> = <a href='/type/NotifyPeer'>NotifyPeer</a>;
+<a href='/constructor/notifyAll'>notifyAll</a> = <a href='/type/NotifyPeer'>NotifyPeer</a>;
+
+<a href='/constructor/dialog'>dialog</a> peer:<a href='/type/Peer'>Peer</a> top_message:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> = <a href='/type/Dialog'>Dialog</a>;
+
+<a href='/constructor/updateUserBlocked'>updateUserBlocked</a> user_id:<a href='/type/int'>int</a> blocked:<a href='/type/Bool'>Bool</a> = <a href='/type/Update'>Update</a>;
+<a href='/constructor/updateNotifySettings'>updateNotifySettings</a> peer:<a href='/type/NotifyPeer'>NotifyPeer</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> = <a href='/type/Update'>Update</a>;
+
+---functions---
+
+invokeWithLayer14#2b9b08fa {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-13" id="layer-13" name="layer-13"><i class="anchor-icon"></i></a><a href="/schema?layer=13">Layer 13</a></h3>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added <strong>mime_type</strong> field to all audio and video constructors.</li>
+<li>Added new <a href="/type/DecryptedMessageAction">service message types</a> in secret chats: messages read, messages deleted, screenshot taken, chat history cleared and API layer used by client notifications.</li>
+<li>Added <strong>retry_contacts</strong> field to the <a href="/constructor/contacts.importedContacts">contacts.importedContacts</a> constructor: ids of contacts, that will have to be imported at a later date.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code>contacts.importedContacts imported:Vector&lt;ImportedContact&gt; retry_contacts:Vector&lt;long&gt; users:Vector&lt;User&gt; = contacts.Im portedContacts;
+
+<a href='/constructor/inputMediaUploadedAudio'>inputMediaUploadedAudio</a> file:<a href='/type/InputFile'>InputFile</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
+<a href='/constructor/inputMediaUploadedVideo'>inputMediaUploadedVideo</a> file:<a href='/type/InputFile'>InputFile</a> duration:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
+<a href='/constructor/inputMediaUploadedThumbVideo'>inputMediaUploadedThumbVideo</a> file:<a href='/type/InputFile'>InputFile</a> thumb:<a href='/type/InputFile'>InputFile</a> duration:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
+
+<a href='/constructor/audio'>audio</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/Audio'>Audio</a>;
+<a href='/constructor/video'>video</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> caption:<a href='/type/string'>string</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumb:<a href='/type/PhotoSize'>PhotoSize</a> dc_id:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> = <a href='/type/Video'>Video</a>;
+
+---functions---
+
+invokeWithLayer13#427c8ea2 {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-12" id="layer-12" name="layer-12"><i class="anchor-icon"></i></a><a href="/schema?layer=12">Layer 12</a></h3>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added method <a href="/method/help.getSupport">help.getSupport</a> for obtaining support user id.</li>
+<li>Added <strong>broadcast_size_max</strong> field to the constructor <a href="/constructor/config">config</a>, contaning maximum number of broadcast recipients.</li>
+<li>Added <strong>send_call_timeout</strong> field to the constructor <a href="/constructor/auth.sentCode">auth.sentCode</a>, containing required delay before calling <a href="/method/auth.sendCall">auth.sendCall</a>. New field <strong>is_password</strong> in the same constructor.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/auth.sentCode'>auth.sentCode</a> phone_registered:<a href='/type/Bool'>Bool</a> phone_code_hash:<a href='/type/string'>string</a> send_call_timeout:<a href='/type/int'>int</a> is_password:<a href='/type/Bool'>Bool</a> = <a href='/type/auth.SentCode'>auth.SentCode</a>;
+
+<a href='/constructor/config'>config</a> date:<a href='/type/int'>int</a> test_mode:<a href='/type/Bool'>Bool</a> this_dc:<a href='/type/int'>int</a> dc_options:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/DcOption'>DcOption</a>&gt; chat_size_max:<a href='/type/int'>int</a> broadcast_size_max:<a href='/type/int'>int</a> = <a href='/type/Config'>Config</a>;
+
+<a href='/constructor/help.support'>help.support</a> phone_number:<a href='/type/string'>string</a> user:<a href='/type/User'>User</a> = <a href='/type/help.Support'>help.Support</a>;
+
+---functions---
+
+<a href='/method/help.getSupport'>help.getSupport</a> = <a href='/type/help.Support'>help.Support</a>;
+
+invokeWithLayer12#dda60d3c {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-11" id="layer-11" name="layer-11"><i class="anchor-icon"></i></a><a href="/schema?layer=11">Layer 11</a></h3>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>The <strong>nonce</strong> parameter was removed from secret chat constructors. For purposes of backward compatibility, in all previous layers this field will contain empty bytes.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/encryptedChatRequested'>encryptedChatRequested</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> g_a:<a href='/type/bytes'>bytes</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
+<a href='/constructor/encryptedChat'>encryptedChat</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> g_a_or_b:<a href='/type/bytes'>bytes</a> key_fingerprint:<a href='/type/long'>long</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
+
+---functions---
+
+invokeWithLayer11#a6b88fdf {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-10" id="layer-10" name="layer-10"><i class="anchor-icon"></i></a><a href="/schema?layer=10">Layer 10</a></h3>
+<p>Added brief constructors for editing group members. Added new attachment types for ordinary and secret chats.</p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added new update contructors: <a href="/constructor/updateChatParticipantAdd">updateChatParticipantAdd</a> and <a href="/constructor/updateChatParticipantDelete">updateChatParticipantDelete</a>.</li>
+<li>Added new media types: <a href="/type/Document">Document</a>, <a href="/type/Audio">Audio</a>, along with rescpective attachment constructors.</li>
+<li>If the client doesn't support Layer 10, it will receive <a href="/constructor/messageMediaUnsupported">messageMediaUnsupported</a> constructors instead of the <a href="/constructor/messageMediaDocument">messageMediaDocument</a> and <a href="/constructor/messageMediaAudio">messageMediaAudio</a> constructors.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/updateChatParticipantAdd'>updateChatParticipantAdd</a> chat_id:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> inviter_id:<a href='/type/int'>int</a> version:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
+<a href='/constructor/updateChatParticipantDelete'>updateChatParticipantDelete</a> chat_id:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> version:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
+
+
+<a href='/constructor/inputMediaUploadedAudio'>inputMediaUploadedAudio</a> file:<a href='/type/InputFile'>InputFile</a> duration:<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>;
+<a href='/constructor/inputMediaAudio'>inputMediaAudio</a> id:<a href='/type/InputAudio'>InputAudio</a> = <a href='/type/InputMedia'>InputMedia</a>;
+
+<a href='/constructor/inputMediaUploadedDocument'>inputMediaUploadedDocument</a> file:<a href='/type/InputFile'>InputFile</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
+<a href='/constructor/inputMediaUploadedThumbDocument'>inputMediaUploadedThumbDocument</a> file:<a href='/type/InputFile'>InputFile</a> thumb:<a href='/type/InputFile'>InputFile</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
+<a href='/constructor/inputMediaDocument'>inputMediaDocument</a> id:<a href='/type/InputDocument'>InputDocument</a> = <a href='/type/InputMedia'>InputMedia</a>;
+
+<a href='/constructor/messageMediaDocument'>messageMediaDocument</a> document:<a href='/type/Document'>Document</a> = <a href='/type/MessageMedia'>MessageMedia</a>;
+<a href='/constructor/messageMediaAudio'>messageMediaAudio</a> audio:<a href='/type/Audio'>Audio</a> = <a href='/type/MessageMedia'>MessageMedia</a>;
+
+// Input Audio
+<a href='/constructor/inputAudioEmpty'>inputAudioEmpty</a> = <a href='/type/InputAudio'>InputAudio</a>;
+<a href='/constructor/inputAudio'>inputAudio</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputAudio'>InputAudio</a>;
+
+// Input Document
+<a href='/constructor/inputDocumentEmpty'>inputDocumentEmpty</a> = <a href='/type/InputDocument'>InputDocument</a>;
+<a href='/constructor/inputDocument'>inputDocument</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputDocument'>InputDocument</a>;
+
+// Input location
+<a href='/constructor/inputAudioFileLocation'>inputAudioFileLocation</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
+<a href='/constructor/inputDocumentFileLocation'>inputDocumentFileLocation</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
+
+
+<a href='/constructor/decryptedMessageMediaDocument'>decryptedMessageMediaDocument</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+<a href='/constructor/decryptedMessageMediaAudio'>decryptedMessageMediaAudio</a> duration:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+
+
+// Audio object
+<a href='/constructor/audioEmpty'>audioEmpty</a> id:<a href='/type/long'>long</a> = <a href='/type/Audio'>Audio</a>;
+<a href='/constructor/audio'>audio</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> duration:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/Audio'>Audio</a>;
+
+// Video object
+<a href='/constructor/documentEmpty'>documentEmpty</a> id:<a href='/type/long'>long</a> = <a href='/type/Document'>Document</a>;
+<a href='/constructor/document'>document</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumb:<a href='/type/PhotoSize'>PhotoSize</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/Document'>Document</a>;
+
+---functions---
+
+invokeWithLayer10#39620c41 {X:Type} query:!X = X;
+PUSH-notifications
+
+Added MESSAGE_DOC, MESSAGE_AUDIO notifications — a message with document or audio received
+Added CHAT_MESSAGE_DOC, CHAT_MESSAGE_AUDIO notifications —  a message with document or audio received in a group</code></pre>
+<h3><a class="anchor" href="#layer-9" id="layer-9" name="layer-9"><i class="anchor-icon"></i></a><a href="/schema?layer=9">Layer 9</a></h3>
+<p>Increased efficiency when loading big files. Added important checks for certain methods.</p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added new <a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a> method, constructors <a href="/constructor/inputFileBig">inputFileBig</a>, <a href="/constructor/inputEncryptedFileBigUploaded">inputEncryptedFileBigUploaded</a> to optimize saving parts of big files. See the updated article on <a href="/api/files#uploading-files">Uploading files</a> for details.</li>
+<li>Added a check whether the <a href="/method/initConnection">initConnection</a> method was called with all required parameters before making other API calls. See the updated article on <a href="/api/invoking#saving-client-info">Calling methods</a> for details.</li>
+<li>Added availability check for <strong>lang_code</strong> parameters when calling methods <a href="/method/auth.sendCode">auth.sendCode</a>, <a href="/method/account.registerDevice">account.registerDevice</a></li>
+<li>Added availability check for <strong>random_id</strong> parameters in all message sending methods: <a href="/method/messages.sendMessage">messages.sendMessage</a>, <a href="/method/messages.sendMedia">messages.sendMedia</a>, <a href="/method/messages.forwardMessage">messages.forwardMessage</a></li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/inputFileBig'>inputFileBig</a> id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> name:<a href='/type/string'>string</a> = <a href='/type/InputFile'>InputFile</a>;
+
+<a href='/constructor/inputEncryptedFileBigUploaded'>inputEncryptedFileBigUploaded</a> id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>;
+
+---functions---
+
+<a href='/method/upload.saveBigFilePart'>upload.saveBigFilePart</a> file_id:<a href='/type/long'>long</a> file_part:<a href='/type/int'>int</a> file_total_parts:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/Bool'>Bool</a>;
+
+initConnection#69796de9 {X:Type} api_id:int device_model:string system_version:string app_version:string lang_code:string query:!X = X;
+
+invokeWithLayer9#76715a63 {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-8" id="layer-8" name="layer-8"><i class="anchor-icon"></i></a><a href="/schema?layer=8">Layer 8</a></h3>
+<p>Added support for end-to-end encryption in secret chats. <a href="/api/end-to-end">More...</a></p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added many constructors and methods for secret chats.</li>
+<li>Added <strong>qts</strong> field in constructor <a href="/constructor/updates.state">updates.state</a>.</li>
+<li>Added 4 new constructors of <a href="/type/Update">Update</a> type</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/updateNewEncryptedMessage'>updateNewEncryptedMessage</a> message:<a href='/type/EncryptedMessage'>EncryptedMessage</a> qts:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
+<a href='/constructor/updateEncryptedChatTyping'>updateEncryptedChatTyping</a> chat_id:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
+<a href='/constructor/updateEncryption'>updateEncryption</a> chat:<a href='/type/EncryptedChat'>EncryptedChat</a> date:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
+<a href='/constructor/updateEncryptedMessagesRead'>updateEncryptedMessagesRead</a> chat_id:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
+
+// EncryptedChat object
+<a href='/constructor/encryptedChatEmpty'>encryptedChatEmpty</a> id:<a href='/type/int'>int</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
+<a href='/constructor/encryptedChatWaiting'>encryptedChatWaiting</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
+<a href='/constructor/encryptedChatRequested'>encryptedChatRequested</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> g_a:<a href='/type/bytes'>bytes</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
+<a href='/constructor/encryptedChat'>encryptedChat</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> g_a_or_b:<a href='/type/bytes'>bytes</a> key_fingerprint:<a href='/type/long'>long</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
+<a href='/constructor/encryptedChatDiscarded'>encryptedChatDiscarded</a> id:<a href='/type/int'>int</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
+
+<a href='/constructor/inputEncryptedChat'>inputEncryptedChat</a> chat_id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputEncryptedChat'>InputEncryptedChat</a>;
+
+// EncryptedFile object
+<a href='/constructor/encryptedFileEmpty'>encryptedFileEmpty</a> = <a href='/type/EncryptedFile'>EncryptedFile</a>;
+<a href='/constructor/encryptedFile'>encryptedFile</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/EncryptedFile'>EncryptedFile</a>;
+
+<a href='/constructor/inputEncryptedFileEmpty'>inputEncryptedFileEmpty</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>;
+<a href='/constructor/inputEncryptedFileUploaded'>inputEncryptedFileUploaded</a> id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> md5_checksum:<a href='/type/string'>string</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>;
+<a href='/constructor/inputEncryptedFile'>inputEncryptedFile</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>;
+
+<a href='/constructor/inputEncryptedFileLocation'>inputEncryptedFileLocation</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
+
+// Encrypted message
+<a href='/constructor/encryptedMessage'>encryptedMessage</a> random_id:<a href='/type/long'>long</a> chat_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> file:<a href='/type/EncryptedFile'>EncryptedFile</a> = <a href='/type/EncryptedMessage'>EncryptedMessage</a>;
+<a href='/constructor/encryptedMessageService'>encryptedMessageService</a> random_id:<a href='/type/long'>long</a> chat_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/EncryptedMessage'>EncryptedMessage</a>;
+
+// Diffie-Hellman config
+<a href='/constructor/messages.dhConfigNotModified'>messages.dhConfigNotModified</a> random:<a href='/type/bytes'>bytes</a> = <a href='/type/messages.DhConfig'>messages.DhConfig</a>;
+<a href='/constructor/messages.dhConfig'>messages.dhConfig</a> g:<a href='/type/int'>int</a> p:<a href='/type/bytes'>bytes</a> version:<a href='/type/int'>int</a> random:<a href='/type/bytes'>bytes</a> = <a href='/type/messages.DhConfig'>messages.DhConfig</a>;
+
+<a href='/constructor/messages.sentEncryptedMessage'>messages.sentEncryptedMessage</a> date:<a href='/type/int'>int</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
+<a href='/constructor/messages.sentEncryptedFile'>messages.sentEncryptedFile</a> date:<a href='/type/int'>int</a> file:<a href='/type/EncryptedFile'>EncryptedFile</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
+
+// Updated state with qts
+<a href='/constructor/updates.state'>updates.state</a> pts:<a href='/type/int'>int</a> qts:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> = <a href='/type/updates.State'>updates.State</a>;
+<a href='/constructor/updates.difference'>updates.difference</a> new_messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Message'>Message</a>&gt; new_encrypted_messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/EncryptedMessage'>EncryptedMessage</a>&gt; other_updates:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Update'>Update</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; state:<a href='/type/updates.State'>updates.State</a> = <a href='/type/updates.Difference'>updates.Difference</a>;
+<a href='/constructor/updates.differenceSlice'>updates.differenceSlice</a> new_messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Message'>Message</a>&gt; new_encrypted_messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/EncryptedMessage'>EncryptedMessage</a>&gt; other_updates:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Update'>Update</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; intermediate_state:<a href='/type/updates.State'>updates.State</a> = <a href='/type/updates.Difference'>updates.Difference</a>;
+
+---functions---
+
+<a href='/method/messages.getDhConfig'>messages.getDhConfig</a> version:<a href='/type/int'>int</a> random_length:<a href='/type/int'>int</a> = <a href='/type/messages.DhConfig'>messages.DhConfig</a>;
+<a href='/method/messages.requestEncryption'>messages.requestEncryption</a> user_id:<a href='/type/InputUser'>InputUser</a> random_id:<a href='/type/int'>int</a> g_a:<a href='/type/bytes'>bytes</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
+<a href='/method/messages.acceptEncryption'>messages.acceptEncryption</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> g_b:<a href='/type/bytes'>bytes</a> key_fingerprint:<a href='/type/long'>long</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
+<a href='/method/messages.discardEncryption'>messages.discardEncryption</a> chat_id:<a href='/type/int'>int</a> = <a href='/type/Bool'>Bool</a>;
+
+<a href='/method/messages.setEncryptedTyping'>messages.setEncryptedTyping</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> typing:<a href='/type/Bool'>Bool</a> = <a href='/type/Bool'>Bool</a>;
+<a href='/method/messages.readEncryptedHistory'>messages.readEncryptedHistory</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> max_date:<a href='/type/int'>int</a> = <a href='/type/Bool'>Bool</a>;
+<a href='/method/messages.sendEncrypted'>messages.sendEncrypted</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> random_id:<a href='/type/long'>long</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
+<a href='/method/messages.sendEncryptedFile'>messages.sendEncryptedFile</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> random_id:<a href='/type/long'>long</a> data:<a href='/type/bytes'>bytes</a> file:<a href='/type/InputEncryptedFile'>InputEncryptedFile</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
+<a href='/method/messages.sendEncryptedService'>messages.sendEncryptedService</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> random_id:<a href='/type/long'>long</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
+<a href='/method/messages.receivedQueue'>messages.receivedQueue</a> max_qts:<a href='/type/int'>int</a> = <a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt;;
+
+<a href='/method/updates.getDifference'>updates.getDifference</a> pts:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> qts:<a href='/type/int'>int</a> = <a href='/type/updates.Difference'>updates.Difference</a>;
+
+invokeWithLayer8#e9abd9fd {X:Type} query:!X = X;</code></pre>
+<h4><a class="anchor" href="#push-notifications" id="push-notifications" name="push-notifications"><i class="anchor-icon"></i></a>Push-notifications</h4>
+<ul>
+<li>Added notification of <a href="/api/push-updates#possible-notifications">ENCRYPTION_REQUEST</a> type -- a contact requested secret chat creation</li>
+<li>Added notification of <a href="/api/push-updates#possible-notifications">ENCRYPTION_ACCEPT</a> type -- a contact confirmed secret chat creation</li>
+<li>Added notification of <a href="/api/push-updates#possible-notifications">ENCRYPTED_MESSAGE</a> type -- a contact sent message in a secret chat</li>
+</ul>
+<h4><a class="anchor" href="#end-to-end-schema" id="end-to-end-schema" name="end-to-end-schema"><i class="anchor-icon"></i></a>End-to-end schema</h4>
+<pre><code>===8===
+<a href='/constructor/decryptedMessage'>decryptedMessage</a> random_id:<a href='/type/long'>long</a> random_bytes:<a href='/type/bytes'>bytes</a> message:<a href='/type/string'>string</a> media:<a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a> = <a href='/type/DecryptedMessage'>DecryptedMessage</a>;
+<a href='/constructor/decryptedMessageService'>decryptedMessageService</a> random_id:<a href='/type/long'>long</a> random_bytes:<a href='/type/bytes'>bytes</a> action:<a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a> = <a href='/type/DecryptedMessage'>DecryptedMessage</a>;
+
+<a href='/constructor/decryptedMessageMediaEmpty'>decryptedMessageMediaEmpty</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+<a href='/constructor/decryptedMessageMediaPhoto'>decryptedMessageMediaPhoto</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+<a href='/constructor/decryptedMessageMediaVideo'>decryptedMessageMediaVideo</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> duration:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+<a href='/constructor/decryptedMessageMediaGeoPoint'>decryptedMessageMediaGeoPoint</a> lat:<a href='/type/double'>double</a> long:<a href='/type/double'>double</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+<a href='/constructor/decryptedMessageMediaContact'>decryptedMessageMediaContact</a> phone_number:<a href='/type/string'>string</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> user_id:<a href='/type/int'>int</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+
+<a href='/constructor/decryptedMessageActionSetMessageTTL'>decryptedMessageActionSetMessageTTL</a> ttl_seconds:<a href='/type/int'>int</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
+
+<a href='/constructor/decryptedMessageMediaDocument'>decryptedMessageMediaDocument</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+<a href='/constructor/decryptedMessageMediaAudio'>decryptedMessageMediaAudio</a> duration:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
+
+<a href='/constructor/decryptedMessageActionReadMessages'>decryptedMessageActionReadMessages</a> random_ids:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
+<a href='/constructor/decryptedMessageActionDeleteMessages'>decryptedMessageActionDeleteMessages</a> random_ids:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
+<a href='/constructor/decryptedMessageActionScreenshotMessages'>decryptedMessageActionScreenshotMessages</a> random_ids:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
+<a href='/constructor/decryptedMessageActionFlushHistory'>decryptedMessageActionFlushHistory</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;</code></pre>
+<h3><a class="anchor" href="#layer-7" id="layer-7" name="layer-7"><i class="anchor-icon"></i></a><a href="/schema?layer=7">Layer 7</a></h3>
+<p>Added wallpaper constructor <a href="/constructor/wallPaperSolid">wallPaperSolid</a>.</p>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/wallPaperSolid'>wallPaperSolid</a> id:<a href='/type/int'>int</a> title:<a href='/type/string'>string</a> bg_color:<a href='/type/int'>int</a> color:<a href='/type/int'>int</a> = <a href='/type/WallPaper'>WallPaper</a>;
+---functions---
+invokeWithLayer7#a5be56d3 {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-6" id="layer-6" name="layer-6"><i class="anchor-icon"></i></a><a href="/schema?layer=6">Layer 6</a></h3>
+<p>Added location identifiers from foursquare.</p>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/geoChat'>geoChat</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> venue:<a href='/type/string'>string</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> photo:<a href='/type/ChatPhoto'>ChatPhoto</a> participants_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> checked_in:<a href='/type/Bool'>Bool</a> version:<a href='/type/int'>int</a> = <a href='/type/Chat'>Chat</a>;
+---functions---
+<a href='/method/geochats.createGeoChat'>geochats.createGeoChat</a> title:<a href='/type/string'>string</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> address:<a href='/type/string'>string</a> venue:<a href='/type/string'>string</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
+
+invokeWithLayer6#3a64d54d {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-5" id="layer-5" name="layer-5"><i class="anchor-icon"></i></a><a href="/schema?layer=5">Layer 5</a></h3>
+<p>Added parameters for internationalization.</p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added parameter lang_code to methods <a href="/method/auth.sendCode">auth.sendCode</a>, <a href="/method/account.registerDevice">account.registerDevice</a></li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code>---functions---
+<a href='/method/auth.sendCode'>auth.sendCode</a> phone_number:<a href='/type/string'>string</a> sms_type:<a href='/type/int'>int</a> api_id:<a href='/type/int'>int</a> api_hash:<a href='/type/string'>string</a> lang_code:<a href='/type/string'>string</a> = <a href='/type/auth.SentCode'>auth.SentCode</a>;
+<a href='/method/account.registerDevice'>account.registerDevice</a> token_type:<a href='/type/int'>int</a> token:<a href='/type/string'>string</a> device_model:<a href='/type/string'>string</a> system_version:<a href='/type/string'>string</a> app_version:<a href='/type/string'>string</a> app_sandbox:<a href='/type/Bool'>Bool</a> lang_code:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;
+
+invokeWithLayer5#417a57ae {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-4" id="layer-4" name="layer-4"><i class="anchor-icon"></i></a><a href="/schema?layer=4">Layer 4</a></h3>
+<p>Added geochats. <a href="/api/geochats">More...</a></p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added many constructors and methods for geochats.</li>
+<li>Added friends_unread_count field to constructor <a href="/constructor/updates.state">updates.state</a>.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/inputGeoChat'>inputGeoChat</a> chat_id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputGeoChat'>InputGeoChat</a>;
+
+<a href='/constructor/geoChat'>geoChat</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> photo:<a href='/type/ChatPhoto'>ChatPhoto</a> participants_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> left:<a href='/type/Bool'>Bool</a> version:<a href='/type/int'>int</a> = <a href='/type/Chat'>Chat</a>;
+
+<a href='/constructor/geoChatMessageEmpty'>geoChatMessageEmpty</a> chat_id:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> = <a href='/type/GeoChatMessage'>GeoChatMessage</a>;
+<a href='/constructor/geoChatMessage'>geoChatMessage</a> chat_id:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> = <a href='/type/GeoChatMessage'>GeoChatMessage</a>;
+<a href='/constructor/geoChatMessageService'>geoChatMessageService</a> chat_id:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> = <a href='/type/GeoChatMessage'>GeoChatMessage</a>;
+
+<a href='/constructor/geochats.statedMessage'>geochats.statedMessage</a> message:<a href='/type/GeoChatMessage'>GeoChatMessage</a> chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; seq:<a href='/type/int'>int</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
+
+<a href='/constructor/geochats.located'>geochats.located</a> results:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/ChatLocated'>ChatLocated</a>&gt; messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/GeoChatMessage'>GeoChatMessage</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/geochats.Located'>geochats.Located</a>;
+
+<a href='/constructor/geochats.messages'>geochats.messages</a> messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/GeoChatMessage'>GeoChatMessage</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/geochats.Messages'>geochats.Messages</a>;
+<a href='/constructor/geochats.messagesSlice'>geochats.messagesSlice</a> count:<a href='/type/int'>int</a> messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/GeoChatMessage'>GeoChatMessage</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/geochats.Messages'>geochats.Messages</a>;
+
+<a href='/constructor/messageActionGeoChatCreate'>messageActionGeoChatCreate</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> = <a href='/type/MessageAction'>MessageAction</a>;
+<a href='/constructor/messageActionGeoChatCheckin'>messageActionGeoChatCheckin</a> = <a href='/type/MessageAction'>MessageAction</a>;
+<a href='/constructor/updateNewGeoChatMessage'>updateNewGeoChatMessage</a> message:<a href='/type/GeoChatMessage'>GeoChatMessage</a> = <a href='/type/Update'>Update</a>;
+<a href='/constructor/updates.state'>updates.state</a> pts:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> friends_unread_count:<a href='/type/int'>int</a> = <a href='/type/updates.State'>updates.State</a>;
+
+---functions---
+
+<a href='/method/geochats.getLocated'>geochats.getLocated</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> radius:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/geochats.Located'>geochats.Located</a>;
+<a href='/method/geochats.checkin'>geochats.checkin</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
+<a href='/method/geochats.getFullChat'>geochats.getFullChat</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> = <a href='/type/messages.ChatFull'>messages.ChatFull</a>;
+<a href='/method/geochats.editChatTitle'>geochats.editChatTitle</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
+<a href='/method/geochats.editChatPhoto'>geochats.editChatPhoto</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> photo:<a href='/type/InputChatPhoto'>InputChatPhoto</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
+<a href='/method/geochats.search'>geochats.search</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> q:<a href='/type/string'>string</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/geochats.Messages'>geochats.Messages</a>;
+<a href='/method/geochats.getHistory'>geochats.getHistory</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> offset:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/geochats.Messages'>geochats.Messages</a>;
+<a href='/method/geochats.setTyping'>geochats.setTyping</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> typing:<a href='/type/Bool'>Bool</a> = <a href='/type/Bool'>Bool</a>;
+<a href='/method/geochats.sendMessage'>geochats.sendMessage</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
+<a href='/method/geochats.sendMedia'>geochats.sendMedia</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> media:<a href='/type/InputMedia'>InputMedia</a> random_id:<a href='/type/long'>long</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
+<a href='/method/geochats.createGeoChat'>geochats.createGeoChat</a> title:<a href='/type/string'>string</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> address:<a href='/type/string'>string</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
+
+invokeWithLayer4#dea0d430 {X:Type} query:!X = X;</code></pre>
+<h4><a class="anchor" href="#push-notifications" id="push-notifications" name="push-notifications"><i class="anchor-icon"></i></a>Push-notifications</h4>
+<ul>
+<li>Added notification of <a href="/api/push-updates#possible-notifications">GEOCHAT_CHECKIN</a> type -- a user has checked-in in a geochat.</li>
+</ul>
+<h3><a class="anchor" href="#layer-3" id="layer-3" name="layer-3"><i class="anchor-icon"></i></a><a href="/schema?layer=3">Layer 3</a></h3>
+<p>Support for link changes for a contact when a message is sent. Now, if user X has user Y in the contact list and if user Y writes a message to user X, number X will become available for him. <a href="/api/requests">More...</a></p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added constructors <a href="/constructor/messages.statedMessagesLinks">messages.statedMessagesLinks</a>, <a href="/constructor/messages.statedMessageLink">messages.statedMessageLink</a>, <a href="/constructor/messages.sentMessageLink">messages.sentMessageLink</a>. They are completely similar to previous ones except for the links field containing changed links.</li>
+<li>Added events_mask field to constructors <a href="/constructor/inputPeerNotifySettings">inputPeerNotifySettings</a>, <a href="/constructor/peerNotifySettings">peerNotifySettings</a> making possible turning-off PUSH-notifications on image changes.</li>
+<li>Added method <a href="/method/messages.forwardMessage">messages.forwardMessage</a> for sending single messages.</li>
+<li>Added method <a href="/method/messages.sendBroadcast">messages.sendBroadcast</a> for bulky messaging.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/messages.statedMessagesLinks'>messages.statedMessagesLinks</a> messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Message'>Message</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; links:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/contacts.Link'>contacts.Link</a>&gt; pts:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/messages.StatedMessages'>messages.StatedMessages</a>;
+<a href='/constructor/messages.statedMessageLink'>messages.statedMessageLink</a> message:<a href='/type/Message'>Message</a> chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; links:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/contacts.Link'>contacts.Link</a>&gt; pts:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/messages.StatedMessage'>messages.StatedMessage</a>;
+<a href='/constructor/messages.sentMessageLink'>messages.sentMessageLink</a> id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> links:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/contacts.Link'>contacts.Link</a>&gt; = <a href='/type/messages.SentMessage'>messages.SentMessage</a>;
+
+---functions---
+
+<a href='/method/messages.forwardMessage'>messages.forwardMessage</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> random_id:<a href='/type/long'>long</a> = <a href='/type/messages.StatedMessage'>messages.StatedMessage</a>;
+<a href='/method/messages.sendBroadcast'>messages.sendBroadcast</a> contacts:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/InputUser'>InputUser</a>&gt; message:<a href='/type/string'>string</a> media:<a href='/type/InputMedia'>InputMedia</a> = <a href='/type/messages.StatedMessages'>messages.StatedMessages</a>;
+
+invokeWithLayer3#b7475268 {X:Type} query:!X = X;</code></pre>
+<h3><a class="anchor" href="#layer-2" id="layer-2" name="layer-2"><i class="anchor-icon"></i></a><a href="/schema?layer=2">Layer 2</a></h3>
+<p>Support for notifications on changes of contact profile images. It is assumed that receiving such image changed notification a client will add a record on this event in the message history with this contact.</p>
+<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
+<ul>
+<li>Added date and previous fields to constructor <a href="/constructor/updateUserPhoto">updateUserPhoto</a>.</li>
+<li>Added events_mask field to constructors <a href="/constructor/inputPeerNotifySettings">inputPeerNotifySettings</a>, <a href="/constructor/peerNotifySettings">peerNotifySettings</a> making possible turning-off PUSH-notifications on image change.</li>
+<li>Added identifier for relevant image to constructor <a href="/constructor/userProfilePhoto">userProfilePhoto</a>.</li>
+<li>Added method <a href="/method/photos.getUserPhotos">photos.getUserPhotos</a> to get a history of previous profile images.</li>
+</ul>
+<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
+<pre><code><a href='/constructor/inputPeerNotifySettings'>inputPeerNotifySettings</a> mute_until:<a href='/type/int'>int</a> sound:<a href='/type/string'>string</a> show_previews:<a href='/type/Bool'>Bool</a> events_mask:<a href='/type/int'>int</a> = <a href='/type/InputPeerNotifySettings'>InputPeerNotifySettings</a>;
+<a href='/constructor/peerNotifySettings'>peerNotifySettings</a> mute_until:<a href='/type/int'>int</a> sound:<a href='/type/string'>string</a> show_previews:<a href='/type/Bool'>Bool</a> events_mask:<a href='/type/int'>int</a> = <a href='/type/PeerNotifySettings'>PeerNotifySettings</a>;
+<a href='/constructor/updateUserPhoto'>updateUserPhoto</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> previous:<a href='/type/Bool'>Bool</a> = <a href='/type/Update'>Update</a>;
+<a href='/constructor/userProfilePhoto'>userProfilePhoto</a> photo_id:<a href='/type/long'>long</a> photo_small:<a href='/type/FileLocation'>FileLocation</a> photo_big:<a href='/type/FileLocation'>FileLocation</a> = <a href='/type/UserProfilePhoto'>UserProfilePhoto</a>;
+
+---functions---
+
+<a href='/method/photos.getUserPhotos'>photos.getUserPhotos</a> user_id:<a href='/type/InputUser'>InputUser</a> offset:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/photos.Photos'>photos.Photos</a>;
+
+invokeWithLayer2#289dd1f6 {X:Type} query:!X = X;</code></pre>
+<h4><a class="anchor" href="#push-notifications" id="push-notifications" name="push-notifications"><i class="anchor-icon"></i></a>Push-notifications</h4>
+<ul>
+<li>Added notification of <a href="/api/push-updates#possible-notifications">CONTACT_PHOTO</a> type -- a contact has changed profile image.</li>
+</ul></div>
+  
+</div>
+          
+        </div>
+      </div>
+      <div class="footer_wrap">
+  <div class="footer_columns_wrap footer_desktop">
+    <div class="footer_column footer_column_telegram">
+      <h5>Telegram</h5>
+      <div class="footer_telegram_description"></div>
+      Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed.
+    </div>
+
+    <div class="footer_column">
+      <h5><a href="//telegram.org/faq">About</a></h5>
+      <ul>
+        <li><a href="//telegram.org/faq">FAQ</a></li>
+        <li><a href="//telegram.org/blog">Blog</a></li>
+        <li><a href="//telegram.org/jobs">Jobs</a></li>
+      </ul>
+    </div>
+    <div class="footer_column">
+      <h5><a href="//telegram.org/apps#mobile-apps">Mobile Apps</a></h5>
+      <ul>
+        <li><a href="//telegram.org/dl/ios">iPhone/iPad</a></li>
+        <li><a href="//telegram.org/dl/android">Android</a></li>
+        <li><a href="//telegram.org/dl/wp">Windows Phone</a></li>
+      </ul>
+    </div>
+    <div class="footer_column">
+      <h5><a href="//telegram.org/apps#desktop-apps">Desktop Apps</a></h5>
+      <ul>
+        <li><a href="//desktop.telegram.org/">PC/Mac/Linux</a></li>
+        <li><a href="//macos.telegram.org/">macOS</a></li>
+        <li><a href="//telegram.org/dl/web">Web-browser</a></li>
+      </ul>
+    </div>
+    <div class="footer_column footer_column_platform">
+      <h5><a href="/">Platform</a></h5>
+      <ul>
+        <li><a href="/api">API</a></li>
+        <li><a href="//translations.telegram.org/">Translations</a></li>
+        <li><a href="//instantview.telegram.org/">Instant View</a></li>
+      </ul>
+    </div>
+  </div>
+  <div class="footer_columns_wrap footer_mobile">
+    <div class="footer_column">
+      <h5><a href="//telegram.org/faq">About</a></h5>
+    </div>
+    <div class="footer_column">
+      <h5><a href="//telegram.org/blog">Blog</a></h5>
+    </div>
+    <div class="footer_column">
+      <h5><a href="//telegram.org/apps">Apps</a></h5>
+    </div>
+    <div class="footer_column">
+      <h5><a href="/">Platform</a></h5>
+    </div>
+    <div class="footer_column">
+      <h5><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)">Twitter</a></h5>
+    </div>
+  </div>
+</div>
+    </div>
+    <script src="/js/main.js?42"></script>
+    <script src="/js/jquery.min.js?1"></script>
+<script src="/js/bootstrap.min.js"></script>
+
+    <script>window.initDevPageNav&&initDevPageNav();
+backToTopInit("Go up");
+removePreloadInit();
+</script>
+  </body>
+</html>
+
diff --git a/data/tsf.telegram.org/manuals/bugs.html b/data/tsf.telegram.org/manuals/bugs.html
deleted file mode 100644
index 2bf7783f35..0000000000
--- a/data/tsf.telegram.org/manuals/bugs.html
+++ /dev/null
@@ -1,460 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>Telegram Support Force</title>
-    <meta property="og:title" content="Handling Bugs and Troubleshooting">
-<meta property="og:image" content="https://tsf.telegram.org/file/811140845/1/y4-CDGX0MNo/7774e8d703a4bf7112">
-<meta property="og:description" content="This manual is intended for volunteers of the TSF, but anyone else is free to take a look as well.
-Every now and then users…">
-
-    <link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4">
-<link rel="alternate icon" href="/favicon.ico?4" type="image/x-icon" />
-    <script>document.cookie="stel_dt="+encodeURIComponent((new Date).getTimezoneOffset())+";path=/;max-age=31536000;samesite=None;secure"</script>
-    
-    <link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700" rel="stylesheet" type="text/css">
-    <link href="/css/bootstrap.min.css?3" rel="stylesheet">
-    <link href="/css/bootstrap-extra.css?2" rel="stylesheet">
-    <link href="/css/telegram.css?212" rel="stylesheet">
-    <link href="/css/tsf.css?7" rel="stylesheet">
-<link href="/css/jquery-ui.min.css" rel="stylesheet">
-<link href="/css/health.css?126" rel="stylesheet">
-<link href="/css/tchart.min.css?10" rel="stylesheet">
-<link href="/css/billboard.css?17" rel="stylesheet">
-
-  </head>
-  <body class="emoji_image no-transition">
-    
-    <div id="aj_progress" class="progress-bar"></div>
-    
-    <div id="aj_content"><div class="tr-container">
-  <header>
-  <div class="container">
-    <div class="header-wrap">
-      <div id="header-panel" class="header-panel">
-        <div class="header-auth">
-  <div class="header-auth-item"><a class="header-search-btn"></a></div><div class="header-auth-item"><a class="header-auth-link login-link" href="/auth">Login</a></div>
-</div>
-        <div class="header-breadcrumb header-breadcrumb-simple">
-          <ol id="breadcrumb" class="header-nav breadcrumb"><li><a href="/">Telegram Support Force</a></li></ol>
-        </div>
-      </div>
-    </div>
-  </div>
-</header>
-  <main class="container">
-    <nav class="tr-menu">
-  <div class="tr-menu-section">
-    <div class="tr-menu-header">
-      <div class="tr-menu-header-label">Resources</div>
-    </div>
-    <ul class="tr-menu-items"><li>
-  <a class="tr-menu-item" href="/">
-    <span class="nav-label">Introduction</span>
-  </a>
-</li><li class="active">
-  <a class="tr-menu-item" href="/manuals">
-    <span class="nav-label">Manuals</span>
-  </a>
-</li></ul>
-  </div>
-  
-  
-</nav>
-    <section class="content clearfix">
-      <section class="tr-content"><div id="dev_page_content_wrap" class=" ">
-  <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a  href="/" >Telegram Support Initiative</a></li><i class="icon icon-breadcrumb-divider"></i><li><a  href="/manuals" >Manuals</a></li><i class="icon icon-breadcrumb-divider"></i><li><a  href="/manuals/bugs" >Handling Bugs and Troubleshooting</a></li></ul></div>
-  <h1 id="dev_page_title">Handling Bugs and Troubleshooting</h1>
-  
-  <div id="dev_page_content"><!-- scroll_nav -->
-
-<blockquote>
-<p>This manual is intended for volunteers of the <a href="/">TSF</a>, but anyone else is free to take a look as well.</p>
-</blockquote>
-<p>Every now and then users will report bugs in Telegram. The <a href="#reporting-a-bug"><strong>step-by-step guide</strong></a> and <a href="#troubleshooting-common-issues"><strong>troubleshooting tips</strong></a> on this page will help you deal with those reports in style and eventually help Telegram get rid of the bugs themselves.</p>
-<p>See the <a href="/manuals/bug_hunting"><strong>Bug Hunting Algorithm</strong></a> for tips on investigating new issues.</p>
-<hr>
-<h3><a class="anchor-link" href="#reporting-a-bug"><i class="anchor-icon"></i></a><a class="anchor" name="reporting-a-bug"></a>Reporting a bug</h3>
-<h4><a class="anchor-link" href="#1-search-known-issues"><i class="anchor-icon"></i></a><a class="anchor" name="1-search-known-issues"></a>1. Search known issues</h4>
-<p>We use <a href="https://trello.com">Trello</a> boards to keep track of bugs (sorry, these boards are TSF-only, <a href="/">here&#39;s how you join</a>), features and user suggestions, so your first stop when encoutering a bug report is <strong>Trello search</strong>. Most likely, we already know about the issue — sometimes it is not a bug at all. So make sure you study all the relevant cards.</p>
-<p>If you have found the issue on Trello, leave a comment in the card with your user&#39;s <strong>#tq tag</strong> and device info (skip this step if the card already has too many comments of that kind or is in the “Hot and Trending” list). Then go right to <strong><a href="#4-notify-the-user">step 4</a></strong>.</p>
-<div>
-<a href="/file/811140845/1/y4-CDGX0MNo/7774e8d703a4bf7112" target="_blank"><img src="/file/811140845/1/y4-CDGX0MNo/7774e8d703a4bf7112" title="Screenshot_1.png, 50.2Kb"  class="dev_page_image" /></a>
-</div>
-
-<p>Trello cards are organized in lists that are pretty self-explanatory:</p>
-<ul>
-<li>The <strong>&#39;Hot &amp; Trending&#39;</strong> list has the most important cards</li>
-<li>Every card begins its journey in the <strong>&#39;Unsorted&#39;</strong> list.</li>
-<li>Once the issue was reviewed by a <a href="/manuals/bug_herding">bug herder</a> and reported to the developer, it moves to the <strong>&#39;Reviewed &amp; Reported&#39;</strong> list. we can report any new occurrences in the comments (don&#39;t forget the <strong>footers</strong>) and try to find missing puzzle pieces (e.g. the issue happens only on specific devices / OS versions).</li>
-<li>Finally, at some point, the card reaches <strong>&#39;Fixed&#39;</strong> status, is declared a <strong>&#39;Feature&#39;</strong> (this is how we want this to work), or <strong>&#39;Not our bug&#39;</strong> (platform restrictions, etc.).</li>
-</ul>
-<blockquote>
-<p><em>The very first card on each board contains a description for all labels and fields.</em></p>
-</blockquote>
-<p><strong>Fields</strong><br>Cards can have a <strong>status</strong> field which describes what state the issue is in and whether or not it requires any actions on our TSF side. (E.g., “Needs info”, “Needs logs”, or “Confirm fix”). Feel free to update <strong>Happens in</strong> with the latest version you were able to reproduce the issue in. Other fields are mostly reserved for bug herders, including the Dev Priority field.</p>
-<p><strong>Labels</strong></p>
-<ul>
-<li><strong>Blue</strong> – A <strong>notable</strong> card. Being aware of what&#39;s inside may potentially help you recognize important issues and answer questions from users more easily. </li>
-</ul>
-<ul>
-<li><strong>Yellow</strong> – This card is <strong>missing important information.</strong> </li>
-<li><strong>Sky blue</strong> – This card mentions a <strong>workaround</strong> for the issue.</li>
-</ul>
-<hr>
-<h4><a class="anchor-link" href="#2-investigate-the-bug"><i class="anchor-icon"></i></a><a class="anchor" name="2-investigate-the-bug"></a>2. Investigate the bug</h4>
-<blockquote>
-<p><strong>IMPORTANT:</strong> Please see the <a href="/manuals/bug_hunting">Bug Hunting Algorithm</a> after this manual for an in-depth look at investigating bugs.</p>
-</blockquote>
-<p>If you can&#39;t find anything useful on Trello:</p>
-<ol>
-<li>Check <strong>app version</strong>. Must be the <a href="https://t.me/tgstable">latest available</a>.</li>
-<li><strong>Reproduce the bug</strong>, if you have a relevant device on hand – using the <em>store version</em>. Mention if you can&#39;t reproduce it. Ask in the <a href="#bug-groups">bug groups</a> if you don&#39;t have the device – don&#39;t forget to include all <strong>hashtags</strong> from the user&#39;s footer with your question and <strong>English summary</strong> (don&#39;t just forward the messages!).</li>
-<li>Check the <a href="#troubleshooting-common-issues">Troubleshooting Tips</a> below, there are some useful tips for identifying and reporting <strong>common issues</strong>.</li>
-<li><strong>Find and ask the right questions</strong> that allow to locate the bug — in as few steps as possible. We have a separate and rather exciting manual on this topic, known as the <a href="/manuals/bug_hunting"><strong>Bug Hunting Algorithm</strong></a>.</li>
-</ol>
-<blockquote>
-<p>Reporting a bug is in many regards like convicting the developer of a crime. Just as in that case, you need a clear vision of what happened and why, hard evidence (screenshots) and witnesses (users). Unlike in a criminal case, though, it is considered appropriate and even necessary to reproduce the deed (see if you can reproduce the bug and get the same results).</p>
-<p>Another crucial difference: our defendant is also the judge. He is accountable, of course, but still biased. It is in the developer&#39;s best interest to convince you and the public that the bug is not related to his work. Server-side devs will blame the client devs, client devs will blame the server-side devs — and they all together will blame the OS and device manufacturers. While sometimes this is true, we need to leave no escape for them if it isn&#39;t.</p>
-</blockquote>
-<h4><a class="anchor-link" href="#3-report-the-bug"><i class="anchor-icon"></i></a><a class="anchor" name="3-report-the-bug"></a>3. Report the bug</h4>
-<p>If the bug is not mentioned on the Issues board and the Troubleshooting manual doesn&#39;t have any special instructions for the case, we need to report it on Trello.</p>
-<ol>
-<li>Make sure you&#39;ve really completed steps <strong><a href="#1-search-known-issues">1</a></strong> and <strong><a href="#2-investigate-the-bug">2</a></strong> of this guide.</li>
-<li><strong>Important:</strong> Discuss the issue in the relevant <a href="#bug-groups">bug group</a> — you never know what your teammates may have to say. Maybe there&#39;s no need to create a card and an existing one needs editing instead.</li>
-<li>If you&#39;re sure this is necessary, add the issue to the board. We&#39;ve added templates like <a href="https://trello.com/c/3WxFPedg">this one</a> to all boards. You can copy them and fill with info.</li>
-<li>Make sure your heading has all the relevant info. Fill in the rest of the details.</li>
-<li>Always add the user&#39;s (and/or your own, if you reproduced the issue) footer with the <strong>system hashtags</strong>.</li>
-<li>Add relevant <strong>screenshots</strong> or <strong>video</strong> to the issue. This is optional if the issue is clear enough without them.</li>
-<li>If the problem involves <strong>particular</strong> items (account, photo, group, message, etc) we need the coordinates required to locate that particular item (tq/footer, phone number, username, link, Telegram Web address bar string, forwarded copy). <em>Think: if you were a developer who just received your question, would you need to ask for more info instead of giving an answer?</em></li>
-<li>Make sure that your description has all the <strong>relevant keywords</strong>, so that it&#39;s easy to find the issue via <strong>search</strong>.</li>
-<li>When you add your first issue to Trello send the link to Daria — along with a picture of a beetle.</li>
-<li>Think of the words you would use if you were looking for that issue — try them in the search box. Adjust the description accordingly.</li>
-<li>Ask your teammates if you have any doubts.</li>
-</ol>
-<h5><a class="anchor-link" href="#bug-groups"><i class="anchor-icon"></i></a><a class="anchor" name="bug-groups"></a>Bug Groups</h5>
-<p>We&#39;re currently experimenting with TSF-wide bug groups for reporting and investigating issues in the apps. You can find a list in <a href="https://trello.com/c/iAH2kIDN">this card</a>.</p>
-<h5><a class="anchor-link" href="#custom-fields-and-comments"><i class="anchor-icon"></i></a><a class="anchor" name="custom-fields-and-comments"></a>Custom Fields and Comments</h5>
-<ul>
-<li>There are several custom fields. Fill in <strong>&#39;Happens in&#39;</strong> with the hashtag of the version, e.g. #5_1_1_870. The rest of the custom fields are reserved for <a href="">bug herders</a>, please don&#39;t change them unless you&#39;re 200% sure you know what you&#39;re doing. You can read more about the fields in the first card on each board.</li>
-<li>Add a <strong>comment</strong> whenever a bug&#39;s state is changed.</li>
-<li>Discuss in the groups, comments are for important <strong>updates</strong> to the bug only.</li>
-<li>Make sure the bug&#39;s description covers all the important info that emerged in the comments.</li>
-</ul>
-<h4><a class="anchor-link" href="#4-notify-the-user"><i class="anchor-icon"></i></a><a class="anchor" name="4-notify-the-user"></a>4. Notify the user</h4>
-<p>Once we&#39;re done, we need to get back to the user and tell them that we&#39;ve located the issue or are investigating it. You never know how long that might take, but the user must know that he succeeded in alerting us — and helped us greatly. Parachutes and pasties</p>
-<ul>
-<li>Always include an <strong>issue ID hashtag</strong> in your reply in this situation.</li>
-<li>All trello cards have unique identifiers (open card, click on “share and more”, then &#39;link to this card&#39;, take the last part or the link, after /c/ — e.g. <em>vMFS4MZf</em>).</li>
-<li>We use this ID to create a hashtag (e.g. <strong>#issue_vMFS4MZf</strong>) and include it in our reply to the user with that problem. Like this, for example:</li>
-</ul>
-<blockquote>
-<p>We are terribly sorry that you are not able to delete old profile pictures in channels on the Android application. We reproduced it and are already working on a bug fix. Your issue #issue_lLyHjLRa has been recorded and we&#39;ll get back to you as soon as we have any news.</p>
-<p>By the way, you can delete old profile pictures on the desktop client. Tell us if you want to learn more about it.</p>
-</blockquote>
-<p>This allows us to use Telegram hashtag search to track issues for follow-up questions. The bot can use these hashtags to send automatic replies when a bug is fixed. We can also search for this issue on Trello by its ID.</p>
-<div>
-    <a href="/file/811140239/1/7dQ_0YP_8b8/7936f2ed5753460926" target="_blank"><img src="/file/811140239/1/7dQ_0YP_8b8/7936f2ed5753460926" title="Screenshot_3.png, 31.03Kb"  class="dev_page_image" /></a>
-</div>
-
-<h4><a class="anchor-link" href="#5-stick-to-our-goals"><i class="anchor-icon"></i></a><a class="anchor" name="5-stick-to-our-goals"></a>5. Stick to our goals</h4>
-<ol>
-<li>Our final goal in case of any bug is to create a report in Trello that would get the status <strong>confirmed by a developer</strong> or <strong>feature</strong>.</li>
-<li>If no report was created or no existing relevant report found — we did <strong>nothing</strong>, regardless of how much time we spent talking to the user or TSF members in our groups and diagnosing the issue.</li>
-</ol>
-<p>In order to achieve this goal with a clear conscience, we need to respect our users&#39; <strong>time</strong> and <strong>effort</strong> — a little more on this below:</p>
-<hr>
-<h4><a class="anchor-link" href="#a-note-on-users"><i class="anchor-icon"></i></a><a class="anchor" name="a-note-on-users"></a>A note on users</h4>
-<p>One may think that users are people with problems. Wrong. It is us, who have problems — the user is just a convenient medium for studying them. Our problem is either that something is wrong in our system. Or that we can&#39;t understand what the user is doing wrong. When you look at it this way, you quickly realize that the user is our most important <strong>asset</strong> when it comes to bugs. They can help us identify bugs and improve usability.</p>
-<p>So when somebody comes with a problem, we are not looking for a way to make them go away. Instead we must do all we can to not let the user leave before we find the problem. This means that everything you ask them to do must tell you something important. Nobody enjoys rebooting their phone or logging out and in. The general rule is <strong>minimum actions — maximum effect</strong>. Rabid bunnies alert</p>
-<p>If you do ask something that requires at least some effort, please be nice about it! People don&#39;t have any obligations to Telegram — we need to convince them to help us and to thank them when they do. It&#39;s the least we can do.</p>
-<hr>
-<p>Now that we&#39;re done with the basic reporting process, below are some common issues and what you should do when somebody is complaining about similar stuff.</p>
-<hr>
-<h3><a class="anchor-link" href="#troubleshooting-common-issues"><i class="anchor-icon"></i></a><a class="anchor" name="troubleshooting-common-issues"></a>Troubleshooting common issues</h3>
-<blockquote>
-<p>This advanced troubleshooting guide is intended for volunteers of the <a href="/">Telegram Support Force</a>.<br>Everyone else is also welcome to take a look. Help friends and loved ones — or troubleshoot yourself!</p>
-</blockquote>
-<p><div class="dev_page_nav_wrap"></p>
-<ul>
-<li><a href="#cant-install-app">Can’t Install App</a></li>
-<li><a href="#messages-not-getting-delivered">Messages not getting delivered</a></li>
-<li><a href="#notification-problems">Notification problems</a></li>
-<li><a href="#contact-importing-problems">Contact importing problems</a></li>
-<li><a href="#speed-issues">Speed issues</a></li>
-<li><a href="#connection-issues">Connection issues</a></li>
-<li><a href="#last-seen-time-is-not-displayed-correctly">Last seen time is not displayed correctly</a></li>
-<li><a href="#user-was-blocked-but-still-sees-last-seen-online-status">Blocked user sees online/last seen status</a></li>
-</ul>
-<p></div></p>
-<hr>
-<h4><a class="anchor-link" href="#cant-install-app"><i class="anchor-icon"></i></a><a class="anchor" name="cant-install-app"></a>Can’t Install App</h4>
-<p><strong>iOS:</strong>  Device must run iOS 8 or higher.</p>
-<p><strong>Android: </strong><br>- If SDK &gt;= 16 —&gt; Android version must be 4.1<br>- Ask whether other applications install ok<br>- If nothing helps we need to know the Android version and device model</p>
-<h4><a class="anchor-link" href="#messages-not-getting-delivered"><i class="anchor-icon"></i></a><a class="anchor" name="messages-not-getting-delivered"></a>Messages not getting delivered</h4>
-<p>The following cases cover pretty much all the complaints:</p>
-<ul>
-<li>The user may be confused by the check system. In Telegram: 1 check = message sent, 2 checks = message <strong>read</strong> (opened by the recipient). So the sender may think the message is not getting delivered or is delivered slowly, while they are in fact waiting for it to be read.</li>
-<li>The user may be blocked. When a user is blocked, they will not be notified in any way. Their messages will just stop being read: one tick, always. He should ask his partner to check Settings — Blocked users. Blocked users don&#39;t see your online and last seen status and don&#39;t see a person&#39;s profile picture.</li>
-<li>The user may confuse messages and notifications and say that messages are not getting delivered, when he in fact means notification issues. If a person sees the message upon opening the app, but doesn&#39;t get notified until he opens the app — see <a href="#notification-problems">notification problems</a>.</li>
-<li>Since people can delete messages for everyone after sending them, it could be that a user means notifications for messages that have already been deleted by the sender.</li>
-<li>Lastly, when dealing with Secret Chats, users must remember, that messages will only be delivered to the device that was used when the Secret Chat was created.</li>
-</ul>
-<p>In case it&#39;s none of these five (but it <em>must</em> be one of these five, really), this is one of the worst things that can ever happen in Telegram. We need to know:</p>
-<ul>
-<li>Phone numbers for <em>all</em> participating users</li>
-<li>Devices and app types for <em>all</em> users</li>
-<li>Secret chats or cloud chats? Or both?</li>
-<li>One-way or two-way problem?</li>
-</ul>
-<h4><a class="anchor-link" href="#notification-problems"><i class="anchor-icon"></i></a><a class="anchor" name="notification-problems"></a>Notification problems</h4>
-<p><strong>iOS:</strong></p>
-<ul>
-<li>Make sure notifications are on in Telegram AND in phone settings (Settings &gt; Notifications), check app version.</li>
-<li>Make sure notifications weren’t disabled for a specific chat or group.</li>
-<li>Shut down Telegram (go to home screen, swipe up or double tap home button, stop Telegram (swipe out), then go to Phone Settings and disable alerts. Relaunch Telegram, go to Phone Settings, enable alerts.</li>
-</ul>
-<p>What we need to know if nothing helps:</p>
-<ul>
-<li>User’s <strong>footer tag</strong>.</li>
-<li>Type of problem (notifications: a. never come, b. come only sometimes)</li>
-<li><strong>Logs</strong> that capture the problem and <strong>time</strong> of when the message was received.</li>
-</ul>
-<p><strong>Android:</strong></p>
-<ul>
-<li>Make sure the latest app version is installed.</li>
-<li>Go to <em>Telegram Settings &gt; Notifications and Sounds</em>, make sure that notifications are ON and Importance is set to “High” or greater.</li>
-<li>Check notification priority for Telegram in Android settings, it can be called Importance or Behaviour depending on the device.</li>
-<li>Make sure notifications weren’t disabled for a specific chat.</li>
-<li>Make sure that <a href="https://play.google.com/store/apps/details?id=com.google.android.gms">Google Play Services</a> are installed on the device.</li>
-</ul>
-<blockquote>
-<p>NOTE: Huawei and Xiaomi devices have evil task killer services that interfere with the Telegram notification service. In order for our notifications to work, users need to add Telegram to allowed apps in those devices&#39; security settings. Samsung devices also may require some manipulations.  </p>
-<p>Huawei: Phone Manager App &gt; Protected apps &gt; Add Telegram to the list.<br>Xiaomi: Services &gt; Security &gt; Permissions &gt; Autostart, find Telegram and enable autostart.<br>Samsung: Settings &gt; Device Maintenance &gt; Battery &gt; Unmonitored Apps, then add Telegram to that list.</p>
-</blockquote>
-<p>In case you went through all the steps to no avail, we need to know:</p>
-<ul>
-<li>User’s phone number (username) or footer tag so we can find the user again to followup.</li>
-<li>Type of problem (notifications: a. never come, b. come only sometimes)</li>
-<li><strong>System</strong> and <strong>app logs</strong> that capture the problem and <strong>time</strong> of when the message was received.</li>
-</ul>
-<h4><a class="anchor-link" href="#contact-importing-problems"><i class="anchor-icon"></i></a><a class="anchor" name="contact-importing-problems"></a>Contact importing problems</h4>
-<p>User doesn’t see his contacts in Telegram. Or sees numbers instead of names in Messages list.</p>
-<blockquote>
-<p><strong>Important:</strong> Naturally, one of the easiest ways to solve this would be to save the number in international format. <strong>Do not advise this before other methods.</strong> Our systems <strong>must</strong> correctly parse any contacts. Therefore it is imperative to collect these samples and bring them to your local group so that we can adjust the algorithms.</p>
-</blockquote>
-<p><strong>iOS:</strong></p>
-<ul>
-<li>Temporarily change the name of the missing contact in Phone Contacts (not in Telegram) — add a few symbols, then change back again</li>
-<li>If that doesn’t help, relogin</li>
-</ul>
-<p>Things we need to know if nothing helps:</p>
-<ul>
-<li>User’s phone number</li>
-<li>Phone number(s) of the contact(s)</li>
-<li>How exactly these numbers are stored in users phone book (international format or anything else?)</li>
-<li>Devices and app versions for all users</li>
-</ul>
-<p><strong>Android:</strong></p>
-<ul>
-<li>Relaunch the app (not relogin! that won’t help) — swipe the app off the currently-running-apps list</li>
-<li>Temporarily change the name of the contact in phone contacts (add a few symbols, then change back again)</li>
-</ul>
-<p>Things we need to know if nothing helps:</p>
-<ul>
-<li>User’s phone number</li>
-<li>Phone number(s) of the contact(s)</li>
-<li>How exactly these numbers are stored in users phone book (international format or anything else?)</li>
-<li>Devices and app versions for all users</li>
-</ul>
-<h4><a class="anchor-link" href="#speed-issues"><i class="anchor-icon"></i></a><a class="anchor" name="speed-issues"></a>Speed issues</h4>
-<p>Make sure that we&#39;re really talking about speed issues here. In Telegram, 1 check = message sent, 2 checks = message read (opened by the recipient).</p>
-<p>What we need to know:</p>
-<ul>
-<li>Problem occurs in one app only, or in all apps (e.g. in iOS and TDesktop on the same Wi-Fi).</li>
-<li>Problem occurs when sending or receiving (uploading / downloading)? Or both?</li>
-<li>What Internet connection is being used? If Wi-Fi, advise user to try LTE and vice versa and see what changes.</li>
-<li>Recipient and sender&#39;s footer tags (or username/number).</li>
-<li>Time of problem (better include the timezone too).</li>
-<li>In case of a photo/video, ask the user to forward it to us. <strong>Not</strong> upload it again, just forward the original message with the attachment.</li>
-</ul>
-<h4><a class="anchor-link" href="#connection-issues"><i class="anchor-icon"></i></a><a class="anchor" name="connection-issues"></a>Connection issues</h4>
-<p>When people are reporting connection issues, check twitter first: are there any widespread problems. If the problem is local, we need to find out a lot of information before things can be investigated. Things to ask:</p>
-<ul>
-<li>Do other (non-Telegram) apps work OK?</li>
-<li>What exactly is happening? (always &#39;connecting…&#39; / always &#39;updating…&#39; / seems ok, but messages are not sent / not delivered, etc.)</li>
-<li>At what time did it start? Is it still happening?</li>
-<li>Is this happening all the time or sometimes?</li>
-<li>Does this happen with all Telegram apps — or just one?</li>
-<li>Does web.telegram.org work?</li>
-<li>The problem happens on Wi-Fi, on mobile connection or in both cases?</li>
-</ul>
-<p>Don&#39;t forget to include with your report:</p>
-<ul>
-<li>User&#39;s footer tag.</li>
-<li>Results of <a href="https://t.me/connectivity_test">@connectivity_test</a>. Which GIFs are dowloaded slowly or not downloaded?</li>
-</ul>
-<p>It is possible that we&#39;ll need a Traceroute to our servers, <a href="https://telegram.wiki/kb/general/connection-and-sms-issues/">here&#39;s</a> how you get that. Wait for instructions from the server cultists to get the right IP to trace the route to — each case potentially requires a different one.</p>
-<h4><a class="anchor-link" href="#last-seen-time-is-not-displayed-correctly"><i class="anchor-icon"></i></a><a class="anchor" name="last-seen-time-is-not-displayed-correctly"></a>Last seen time is not displayed correctly</h4>
-<ul>
-<li>We use the user’s time zone. If he has manually entered a time different from the time zone, he will see the wrong time.</li>
-<li>If an app force-quits, the user may remain <em>online</em> for 5-7 minutes after this.</li>
-</ul>
-<p>If none of the two, pass to the volunteer group. We need to know:</p>
-<ul>
-<li>The time zone and time set</li>
-<li>Detailed description of the problem</li>
-</ul>
-<blockquote>
-<p><strong>NOTE:</strong> Support accounts are slightly different from ordinary user accounts. Due to some limitations, it is <strong>normal</strong> if you don&#39;t see the correct last seen time for users who are contacting Support.</p>
-</blockquote>
-<h4><a class="anchor-link" href="#user-was-blocked-but-still-sees-last-seen-online-status"><i class="anchor-icon"></i></a><a class="anchor" name="user-was-blocked-but-still-sees-last-seen-online-status"></a>User was blocked, but still sees last seen / online status</h4>
-<p>The changes that come with blocking sometimes do not take effect immediately. Give it a few minutes, maybe half an hour — and the blocked user will stop seeing the status.</p>
-<p>If a blocked user restarts the app or relogins, but can still see online status — pass to the volunteer group. This cannot happen under normal conditions.</p>
-<hr>
-<h3><a class="anchor-link" href="#tsf-manuals"><i class="anchor-icon"></i></a><a class="anchor" name="tsf-manuals"></a>TSF Manuals</h3>
-<p><div class="dev_page_nav_wrap"></p>
-<ul>
-<li><a href="/">TSF Manifesto</a></li>
-<li><a href="/manuals/bios">BIOS</a></li>
-<li><a href="/manuals/answering_questions">Answering questions</a></li>
-<li><a href="/manuals/bugs"><strong>Bug handling and troubleshooting</strong></a> (you are here)</li>
-<li><a href="/manuals/feature_philosophy">Feature Philosophy</a></li>
-</ul>
-<p></div></p>
-</div>
-  
-</div></section>
-    </section>
-  </main>
-</div><div class="popup-container login-popup-container hide" id="login-popup-container">
-  <div class="popup">
-    <div class="popup-body">
-      <section>
-        <h2>Log In</h2>
-        <p>Log in here to access your TSF stats. Please enter your <b>phone number</b> in the <a target="_blank" rel="noopener" href="https://telegram.org/faq#login-and-sms">international format</a> and we will send a confirmation message to your account via Telegram.</p>
-
-        <form id="send-form" class="login-form">
-          <div class="form-group">
-            <input type="tel" class="form-control tr-form-control input-lg" id="login-phone" placeholder="+12223334455" autocomplete="off"/>
-          </div>
-          <div class="popup-buttons">
-            <a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><button type="submit" class="btn btn-link btn-lg">Next</button>
-          </div>
-        </form>
-
-        <div id="login-form" class="hide">
-          <div class="form-group">
-            <span class="form-control tr-form-control input input-lg input-disabled"><strong id="login-phone-field"></strong> (<a class="login-back" href="/auth">Incorrect?</a>)</span>
-            <p class="help-block dots-animated">We&#39;ve just sent you a message.<br/>Please confirm access via Telegram</p>
-          </div>
-          <div class="popup-buttons">
-            <a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><a class="btn btn-link btn-lg login-back">Back</a>
-          </div>
-        </div>
-      </section>
-    </div>
-  </div>
-</div></div>
-    <script src="/js/jquery.min.js?1"></script>
-    <script src="/js/bootstrap.min.js"></script>
-    <script src="/js/main-aj.js?48"></script>
-    <script src="/js/main.js?42"></script>
-<script src="/js/tsf.js?3"></script>
-<script src="/js/jquery-ui.min.js?1"></script>
-<script src="/js/tchart.min.js?13"></script>
-<script src="/js/billboard.min.js"></script>
-<script src="/js/stats.js?17"></script>
-
-    <script>ajInit({"version":544,"apiUrl":"\/api?hash=telegram-crawler","unauth":true});</script>
-    <script id="aj_script">window.initDevPageNav&&initDevPageNav();
-Aj.onLoad(function(state) {
-  function requestConfirmation(event) {
-    event && event.preventDefault();
-    var phone = $('#login-phone').val();
-    $.ajax({
-      type: 'POST',
-      url: '/auth/request',
-      data: {
-        phone: phone
-      },
-      success: function(result) {
-        $('#login-phone-field').text(phone);
-        $('#send-form').addClass('hide');
-        $('#login-form').removeClass('hide');
-        checkAuth(result.temp_session);
-      },
-      error: function(xhr) {
-        showAlert(xhr.responseText);
-      },
-      dataType: 'json'
-    });
-    return false;
-  }
-  function cancelConfirmation(event) {
-    event && event.preventDefault();
-    $('#login-phone-field').text('');
-    $('#send-form').removeClass('hide');
-    $('#login-form').addClass('hide');
-    $('#login-phone').focus();
-    clearTimeout(window.authTimeout);
-    return false;
-  }
-  function checkAuth(temp_session) {
-    clearTimeout(window.authTimeout);
-    window.authTimeout = setTimeout(function doCheckAuth() {
-      $.ajax({
-        type: 'POST',
-        url: '/auth/login',
-        data: {
-          temp_session: temp_session
-        },
-        success: function(result) {
-          if (result) {
-            location.reload();
-          } else {
-            checkAuth(temp_session);
-          }
-        },
-        error: function (xhr) {
-          showAlert(xhr.responseText);
-        },
-        dataType: 'json'
-      });
-    }, 700);
-  }
-  $('#login-popup-container').on('popup:open', function() {
-    $('#login-phone').focus();
-  });
-  $('#login-popup-container').on('popup:close', function() {
-    cancelConfirmation();
-    if (location.pathname == '/auth') {
-      window.history && history.replaceState(null, null, '/');
-    }
-  });
-  $('#login-popup-container #send-form').on('submit', requestConfirmation);
-  $('#login-popup-container .login-cancel-btn').on('click', function(e) {
-    e.preventDefault();
-    closePopup('#login-popup-container');
-  });
-  $('#login-popup-container .login-back').on('click', cancelConfirmation);
-  $('header .login-link').on('click', function(e) {
-    e.stopImmediatePropagation();
-    e.preventDefault();
-    openPopup('#login-popup-container');
-  });
-});
-Aj.onUnload(function(state) {
-  $('#login-popup-container').off('popup:open');
-  $('#login-popup-container').off('popup:close');
-  $('#login-popup-container #send-form').off('submit');
-  $('#login-popup-container .login-cancel-btn').off('click');
-  $('#login-popup-container .login-back').off('click');
-  $('header .login-link').off('click');
-});
-</script>
-    <script>Aj.pageLoaded();</script>
-    
-  </body>
-</html>
-