<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://switchbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amicuchu</id>
	<title>Nintendo Switch Brew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://switchbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amicuchu"/>
	<link rel="alternate" type="text/html" href="https://switchbrew.org/wiki/Special:Contributions/Amicuchu"/>
	<updated>2026-05-17T06:32:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Talk:Internet_Browser&amp;diff=8648</id>
		<title>Talk:Internet Browser</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Talk:Internet_Browser&amp;diff=8648"/>
		<updated>2020-01-05T17:46:53Z</updated>

		<summary type="html">&lt;p&gt;Amicuchu: Undo revision 8646 by Amicuchu (talk) Solved thanks to mha&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creditable Source? =&lt;br /&gt;
Yeah sure, a UA test can EASILY be faked.&lt;br /&gt;
Though, this unlike the Wii U UA string doesn&#039;t include a region suffix which in my eyes confirms it since nobody knew about it being region free.&lt;br /&gt;
&lt;br /&gt;
[[User:Filfat|Filfat]] ([[User talk:Filfat|talk]]) 11:27, 13 January 2017 (CST)&lt;/div&gt;</summary>
		<author><name>Amicuchu</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Internet_Browser&amp;diff=8647</id>
		<title>Internet Browser</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Internet_Browser&amp;diff=8647"/>
		<updated>2020-01-05T17:42:57Z</updated>

		<summary type="html">&lt;p&gt;Amicuchu: Info about how use websessions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nintendo Switch does not have a normal Internet Browser for user usage. However, there is multiple browser applets. It is the [https://web.archive.org/web/20170304075230/https://gl.access-company.com/news_event/archives/2017/170303/ NetFront NX] browser, which is based on Webkit.&lt;br /&gt;
&lt;br /&gt;
When linking the Nintendo Account with Facebook, the Facebook Auth website will open, offering a search box that can be used to browse the Internet (&amp;quot;LoginApplet&amp;quot;). Alternatively, it can be accessed with [https://gbatemp.net/threads/web-browser-kind-of-on-the-switch.463094/ custom DNS settings] which simulate a Wi-Fi login page (&amp;quot;WifiWebAuthApplet&amp;quot; for captive-portal).&lt;br /&gt;
&lt;br /&gt;
== Known User Agent Strings ==&lt;br /&gt;
{| class=&#039;wikitable&#039;&lt;br /&gt;
! System Version&lt;br /&gt;
! UA String&lt;br /&gt;
|-&lt;br /&gt;
| [[1.0.0]]&lt;br /&gt;
| Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.4.25 NintendoBrowser/5.1.0.11682&lt;br /&gt;
|-&lt;br /&gt;
| [[2.0.0]]&lt;br /&gt;
| Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.5.9 NintendoBrowser/5.1.0.13341&lt;br /&gt;
|-&lt;br /&gt;
| [[2.1.0]]-[[2.3.0]]&lt;br /&gt;
| Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.5.10 NintendoBrowser/5.1.0.13343&lt;br /&gt;
|-&lt;br /&gt;
| [[3.0.0]]&lt;br /&gt;
| Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.6.9 NintendoBrowser/5.1.0.14936&lt;br /&gt;
|-&lt;br /&gt;
| [[4.0.0]]&lt;br /&gt;
| Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.7.9 NintendoBrowser/5.1.0.15785&lt;br /&gt;
|-&lt;br /&gt;
| [[5.0.0]]&lt;br /&gt;
| Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.8.9 NintendoBrowser/5.1.0.16739&lt;br /&gt;
|-&lt;br /&gt;
| [[5.1.0]]&lt;br /&gt;
| Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.9.3 NintendoBrowser/5.1.0.16958&lt;br /&gt;
|-&lt;br /&gt;
| [[6.0.0]]&lt;br /&gt;
| Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.10.13 NintendoBrowser/5.1.0.17805&lt;br /&gt;
|-&lt;br /&gt;
| [[6.1.0]]&lt;br /&gt;
| Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.10.14 NintendoBrowser/5.1.0.17806&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The UA is generated with: &amp;quot;Mozilla/5.0 (Nintendo Switch; &amp;lt;appletname&amp;gt;) AppleWebKit/&amp;lt;webkitver&amp;gt; (KHTML, like Gecko) NF/&amp;lt;nfver0&amp;gt;.&amp;lt;nfver1&amp;gt;.&amp;lt;nfver2&amp;gt; NintendoBrowser/5.&amp;lt;ninver0&amp;gt;.&amp;lt;ninver1&amp;gt;.&amp;lt;ninver2&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Browser Applets ==&lt;br /&gt;
{| class=&#039;wikitable&#039;&lt;br /&gt;
! appletname (From UA)&lt;br /&gt;
! Usage&lt;br /&gt;
! Invalid TLS cert handling&lt;br /&gt;
! Uses whitelist&lt;br /&gt;
! Title ID&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| WebApplet&lt;br /&gt;
| General web-applet for use by applications(online manuals, ...).&lt;br /&gt;
| Displays an error dialog without an option to ignore it.&lt;br /&gt;
| Yes&lt;br /&gt;
| 010000000000100A&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ShopN&lt;br /&gt;
| Actual eShop client&lt;br /&gt;
| Just displays an error-code.&lt;br /&gt;
| Yes&lt;br /&gt;
| 010000000000100B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| WebApplet&lt;br /&gt;
| Offline HTML display&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 010000000000100F&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| LoginApplet&lt;br /&gt;
| Nintendo Account linking, and for linking Facebook and Twitter to suggest friends&lt;br /&gt;
| Just displays an error-code.&lt;br /&gt;
| Yes&lt;br /&gt;
| 0100000000001010&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ShareApplet&lt;br /&gt;
| Posting screenshots to social media, and (optionally) linking social media accounts&lt;br /&gt;
| Just displays an error-code.&lt;br /&gt;
| Yes&lt;br /&gt;
| 0100000000001010&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| LobbyApplet&lt;br /&gt;
| &amp;quot;Nintendo Switch Online Lounge&amp;quot;&lt;br /&gt;
| Just displays an error-code.&lt;br /&gt;
| Yes&lt;br /&gt;
| 0100000000001010&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| WifiWebAuthApplet&lt;br /&gt;
| Captive-portal&lt;br /&gt;
| Displays an error dialog with an option to ignore it.&lt;br /&gt;
| No&lt;br /&gt;
| 0100000000001011&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When whitelisting is enabled, you can only load page domains included in the whitelist, otherwise an error is displayed. This only applies to page navigation. Videos via the &amp;lt;video&amp;gt; tag are not affected, likewise with network requests with JS.&lt;br /&gt;
&lt;br /&gt;
No known applets can directly access the SD card via mounting it. This includes ShareApplet (which posts screenshots from SD to social media).&lt;br /&gt;
&lt;br /&gt;
== OSS ==&lt;br /&gt;
The NROs for the OSS are stored under a separate [[Title_list|title]]. All of the web-applets use the same OSS NROs via this title.&lt;br /&gt;
&lt;br /&gt;
String from v2.0 in oss_wkc.nro: &amp;quot;libcurl/7.50.1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Video Playback ==&lt;br /&gt;
WifiWebAuthApplet does not fully support playing videos. It will [[Error_codes|assert]] with normal videos. The assert triggers before it even starts MP4 parsing?(For example, selecting a video from a video-tag will assert even though it doesn&#039;t send any network request for it) However, in some cases with certain MP4s using vulns it will display an error dialog instead.&lt;br /&gt;
&lt;br /&gt;
With v3.0 WifiWebAuthApplet video-playback was disabled, it now throws the following error when attempting to play a video: &amp;quot;Support Code: 2809-1212&amp;quot; &amp;quot;This feature is not available.&amp;quot; On past system-versions it would just trigger a fatal-error(see above). Video playback still works on the whitelisted applets following v3.0.0, which allows video playback through Facebook and embedded into Google Sites.&lt;br /&gt;
&lt;br /&gt;
== Trusted RootCAs ==&lt;br /&gt;
While the rootCA(s) for Let&#039;s Encrypt isn&#039;t included, Let&#039;s Encrypt is indirectly trusted via &amp;quot;Digital Signature Trust Co.&amp;quot;. This seems to be only(?) the case for WifiWebAuthApplet, hence non-WifiWebAuthApplet seems to have a different set of trusted rootCAs.&lt;br /&gt;
&lt;br /&gt;
== WifiWebAuthApplet ==&lt;br /&gt;
When doing a connection-test in system-settings, it will detect that the captive-portal is required and display an error for it when the response for &amp;quot;http://conntest.nintendowifi.net/&amp;quot; doesn&#039;t include the &amp;quot;X-Organization: Nintendo&amp;quot; HTTP header. The web-applet will not load until something else attempts a conntest, for example when launching eShop and prior to LoginApplet launching. The initial page loaded by this applet is the above conntest URL.&lt;br /&gt;
&lt;br /&gt;
This is only available starting with [[2.0.0]].&lt;br /&gt;
&lt;br /&gt;
Prior to version [[3.0.0]], this applet was launched when attempting a system update from recovery mode if needed. This was changed to display a &amp;quot;This feature is not available.&amp;quot; popup instead.&lt;br /&gt;
&lt;br /&gt;
==Whitelisted Applets==&lt;br /&gt;
The v2.1 main-codebin page-aligned .text size is 0x1000-bytes larger than ShopN.&lt;br /&gt;
&lt;br /&gt;
The file at &amp;quot;data:/whitelist/WhitelistLns.txt&amp;quot; for LoginApplet/ShareApplet/LobbyApplet, which doesn&#039;t exist in WifiWebAuthApplet, contains the following:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;^https://([0-9A-Za-z\-]+\.)*nintendo\.net(/|$)&lt;br /&gt;
 ^https?://([0-9A-Za-z\-]+\.)*nintendo\.(co\.jp|com|eu|co\.uk|es|pt|ch|at|de|nl|be|ch|ru|fr|it|co\.za|co\.kr|tw|com\.hk|com\.au|ca|co\.nz)(/|$)&lt;br /&gt;
 ^https?://([0-9A-Za-z\-]+\.)*nintendo-europe\.com(/|$)&lt;br /&gt;
 ^https?://([0-9A-Za-z\-]+\.)*nintendoservicecentre\.co\.uk(/|$)&lt;br /&gt;
 ^https?://([0-9A-Za-z\-]+\.)*google\.(com|ad|ae|com\.af|com\.ag|com\.ai|al|am|co\.ao|com\.ar|as|at|com\.au|az|ba|com\.bd|be|bf|bg|com\.bh|bi|bj|com\.bn|com\.bo|com\.br|bs|bt|co\.bw|by|com\.bz|ca|cd|cf|cg|ch|ci|co\.ck|cl|cm|cn|com\.co|co\.cr|com\.cu|cv|com\.cy|cz|de|dj|dk|dm|com\.do|dz|com\.ec|ee|com\.eg|es|com\.et|fi|com\.fj|fm|fr|ga|ge|gg|com\.gh|com\.gi|gl|gm|gp|gr|com\.gt|gy|com\.hk|hn|hr|ht|hu|co\.id|ie|co\.il|im|co\.in|iq|is|it|je|com\.jm|jo|co\.jp|co\.ke|com\.kh|ki|kg|co\.kr|com\.kw|kz|la|com\.lb|li|lk|co\.ls|lt|lu|lv|com\.ly|co\.ma|md|me|mg|mk|ml|com\.mm|mn|ms|com\.mt|mu|mv|mw|com\.mx|com\.my|co\.mz|com\.na|com\.nf|com\.ng|com\.ni|ne|nl|no|com\.np|nr|nu|co\.nz|com\.om|com\.pa|com\.pe|com\.pg|com\.ph|com\.pk|pl|pn|com\.pr|ps|pt|com\.py|com\.qa|ro|ru|rw|com\.sa|com\.sb|sc|se|com\.sg|sh|si|sk|com\.sl|sn|so|sm|sr|st|com\.sv|td|tg|co\.th|com\.tj|tk|tl|tm|tn|to|com\.tr|tt|com\.tw|co\.tz|com\.ua|co\.ug|co\.uk|com\.uy|co\.uz|com\.vc|co\.ve|vg|co\.vi|com\.vn|vu|ws|rs|co\.za|co\.zm|co\.zw|cat)(/|$)&lt;br /&gt;
 ^https://([0-9A-Za-z\-]+\.)*facebook\.com(/|$)&lt;br /&gt;
 ^https://([0-9A-Za-z\-]+\.)*twitter\.com(/|$)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3.0.0+]: The &amp;quot;google\.(com&amp;quot; line now starts with &amp;quot;^https://&amp;quot; instead of &amp;quot;https?://&amp;quot;, hence plain HTTP is no longer allowed. The following line was added right after the original google line: &amp;quot;---- ^https?://([0-9A-Za-z\-]+\.)*google(\.[A-Za-z]+)*/(search|translate)\?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[4.0.0+]: Lines 2-4 (&amp;quot;...nintendo\.(co...&amp;quot;, &amp;quot;nintendo-europe&amp;quot;, and &amp;quot;nintendoservicecentre&amp;quot;) now starts with &amp;quot;^https://&amp;quot; instead of &amp;quot;https?://&amp;quot;. Hence, plain HTTP for these are no longer allowed.&lt;br /&gt;
&lt;br /&gt;
===ShareApplet===&lt;br /&gt;
The initial page loaded by this applet is controlled by the [[#ShareStartPage]] TLV.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;web-lp1.share.srv.nintendo.net&amp;quot; site will return a HTTP 302 redirect to &amp;lt;nowiki&amp;gt;&amp;quot;https://nintendo.com/&amp;quot;&amp;lt;/nowiki&amp;gt; when the specified User-Agent isn&#039;t the one for ShareApplet.&lt;br /&gt;
&lt;br /&gt;
===LobbyApplet===&lt;br /&gt;
Support for Lobby was added with [2.0.0+]. This applet is for &amp;quot;Nintendo Switch Online Lounge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The initial page loaded by this applet is: &amp;lt;nowiki&amp;gt;&amp;quot;https://web-lp1.znc.srv.nintendo.net/lobby/&amp;quot;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The content of the above URL refers to &amp;quot;rooms&amp;quot;, &amp;quot;NxView_Img_Google_Play_Icon&amp;quot;, etc.&lt;br /&gt;
&lt;br /&gt;
And also:&lt;br /&gt;
  Your room has been created.&lt;br /&gt;
  &lt;br /&gt;
  You can invite friends to the room via&lt;br /&gt;
  the Nintendo Switch Online Lounge app.&lt;br /&gt;
&lt;br /&gt;
== ShopN ==&lt;br /&gt;
The initial page loaded by ShopN is: &amp;lt;nowiki&amp;gt;&amp;quot;https://bugyo.hac.lp1.eshop.nintendo.net/ashigaru/&amp;quot;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
This can be accessed via computer possesed the certificate ShopN.&lt;br /&gt;
&lt;br /&gt;
The file at &amp;quot;data:/whitelist/WhitelistEc.txt&amp;quot;, which doesn&#039;t exist in WifiWebAuthApplet, contains the following:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;^https://([0-9A-Za-z\-]+\.)*eshop\.nintendo\.net($|/)&lt;br /&gt;
 ^https?://([0-9A-Za-z\-]+\.)*nintendo\.(co\.jp|com|de)($|/)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WebApplet ==&lt;br /&gt;
===010000000000100A===&lt;br /&gt;
The initial page loaded by this applet is specified by the title which launched this applet. Plain HTTP is allowed.&lt;br /&gt;
&lt;br /&gt;
The files under &amp;quot;data:/&amp;quot; are identical to WifiWebAuthApplet except that the content of each file differs.&lt;br /&gt;
&lt;br /&gt;
This applet uses a whitelist, but it doesn&#039;t come from &amp;quot;data:/&amp;quot; like whitelisted-applet.&lt;br /&gt;
&lt;br /&gt;
==== WebApplet launch with Tetris ====&lt;br /&gt;
The Tetris game/demo can be used to launch the online-WebApplet. This &#039;&#039;only&#039;&#039; applies to the JPN region of the game/demo: &amp;quot;ぷよぷよ™テトリス®Ｓ&amp;quot;(aka &amp;quot;Puyo Puyo Tetris&amp;quot;). Note that the gamecard for this can be used to launch the online-WebApplet on system-version &amp;gt;=1.0.0.&lt;br /&gt;
&lt;br /&gt;
First, launch the offline-WebApplet for the manual:&lt;br /&gt;
* Game: Main-menu -&amp;gt; press A with the already selected top menu button -&amp;gt; press the R button.&lt;br /&gt;
* Demo: Main-menu -&amp;gt; select menu button on the right side -&amp;gt; press A.&lt;br /&gt;
&lt;br /&gt;
Then in the manual:&lt;br /&gt;
* Press A -&amp;gt; select the bottom menu entry in the list.&lt;br /&gt;
* Select the SEGA icon -&amp;gt; press A.&lt;br /&gt;
&lt;br /&gt;
The offline-WebApplet will then launch the online-WebApplet with the plain-http &amp;lt;nowiki&amp;gt;&amp;quot;http://sega.jp/&amp;quot;&amp;lt;/nowiki&amp;gt; URL. Non-JPN regions of Tetris don&#039;t have any external link in the manual. For example, with your own DNS-server setup to return your own server address for this domain, you can load your own content for use with online-WebApplet.&lt;br /&gt;
&lt;br /&gt;
As of 12/01/2017 this still works on the latest update for Tetris (version 1.1.2).&lt;br /&gt;
&lt;br /&gt;
=== Offline Applet ===&lt;br /&gt;
Minus TIDs, the [[NPDM]] is the same as 010000000000100A except 010000000000100A has access to more/other services.&lt;br /&gt;
&lt;br /&gt;
== Service/FS Access ==&lt;br /&gt;
All browser applets have access to the following services: acc:u1, appletAE, audin:u, audren:u, audout:u, bsd:u, fatal:u, fsp-srv, hid, hid:sys, irs, ldn:m, ldr:ro, lm, erpt:c, nifm:s, ns:am, nsd:u, nvdrv:a, mm:u, pl:u, prepo:s, set, set:sys, sfdnsres, ssl, time:u, vi:s&lt;br /&gt;
&lt;br /&gt;
LoginApplet/ShareApplet/LobbyApplet have access to the above + caps:a.&lt;br /&gt;
&lt;br /&gt;
ShopN has access to the above + nim:shp.&lt;br /&gt;
&lt;br /&gt;
Unlike the applets listed above, WebApplet TID 010000000000100A has access to the [[Filesystem_services|FS]] MountContent* commands. This is so that it can load the whitelist from &amp;quot;/accessible-urls/accessible-urls.txt&amp;quot; in the mounted FS, from [[NCA]]-type4 where titleID={application which launched this applet}.&lt;br /&gt;
&lt;br /&gt;
== Heap ==&lt;br /&gt;
&lt;br /&gt;
The size used for [[SVC|svcSetHeapSize]] by the web-applets is 0x15600000. Under ShopN, the largest size that can be passed to this without an error being returned, is 0x1B400000.&lt;br /&gt;
&lt;br /&gt;
== Applet Launching ==&lt;br /&gt;
The web-applets are launched using a storage containing the input arg data, on exit the output storage contains the &amp;quot;*ReturnValue&amp;quot; reply data.&lt;br /&gt;
&lt;br /&gt;
Input/output storage size for TLV data is 0x2000-bytes.&lt;br /&gt;
&lt;br /&gt;
=== Library Applet Versions ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! System Version || Value&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+] || 0x20000&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+] || 0x30000&lt;br /&gt;
|-&lt;br /&gt;
| [5.0.0+] || 0x50000&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+] || 0x60000&lt;br /&gt;
|-&lt;br /&gt;
| [8.0.0+] || 0x80000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The above only (?) applies to non-WebWifi. WebWifi uses version 0x0.&lt;br /&gt;
&lt;br /&gt;
=== ShimKind ===&lt;br /&gt;
This enum is &amp;quot;nn::web::common::ShimKind&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This indicates the type of web-applet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Name&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Shop&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Login&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Offline&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Share&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Web&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Wifi&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Lobby&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WebSession ===&lt;br /&gt;
With [5.0.0+] sdk-nso added &amp;lt;code&amp;gt;nn::web::Session::&amp;lt;/code&amp;gt;. With [6.0.0+] this was removed, however it was reintroduced with [7.0.0+] as &amp;lt;code&amp;gt;nn::web::*WebSession&amp;lt;/code&amp;gt; (for ShimKind Offline and Web).&lt;br /&gt;
&lt;br /&gt;
This is for sending/receiving [[#SessionMessage]]s via applet Interactive storage.&lt;br /&gt;
&lt;br /&gt;
During state init, max_messages is set to 0xA and max_size is set to 0x5000, with message_count=0 and cur_size=0.&lt;br /&gt;
&lt;br /&gt;
When sending messages, there has to be an available message slot available (&amp;lt;code&amp;gt;max_messages!=message_count&amp;lt;/code&amp;gt;), and there has to be enough space avilable (&amp;lt;code&amp;gt;msghdr_contentsize+0x10 + cur_size &amp;lt;= max_size&amp;lt;/code&amp;gt;). After pushing the storage, message_count is incremented and cur_size is increased by &amp;lt;code&amp;gt;msghdr_contentsize+0x10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When receiving messages, it will repeatedly pop Interactive output storage until no more are available. If the ID is not 0x1000/0x0, the message is ignored. Otherwise:&lt;br /&gt;
* Ack: Verifies that message_count is not already 0, then decrements it. Then cur_size is decreased by the u32 loaded from msgcontent+0.&lt;br /&gt;
* 0x0: Does some validation. Copies the first 8-bytes from the header to the user [[#SessionMessage]]. Reads the message content into the user [[#SessionMessage]], when contentsize is non-zero. Then sends an Ack with the storage size.&lt;br /&gt;
&lt;br /&gt;
Next info was tested in 9.0.0&lt;br /&gt;
&lt;br /&gt;
In the js side, there is a method called &amp;lt;code&amp;gt;window.nx.sendMessage(arg)&amp;lt;/code&amp;gt; that sends data to the native side, this method returns a boolean indicating if sending was succesful and accepts a string as an argument. The string is encoded like a C null terminated string in the message content. For receive messages from native part, there is a dom event called &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt; which is dispatched when a message arrives. The event can be listened using &amp;lt;code&amp;gt;window.nx.addEventListener(&amp;quot;message&amp;quot;, callback)&amp;lt;/code&amp;gt; being callback a function which first parameter is like a dom event arg and contains a member called &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; which contains the string decoded from the arrived message&lt;br /&gt;
&lt;br /&gt;
If messages aren&#039;t acked by the native part, js side will not longer receive messages. Ack to web applet &#039;&#039;&#039;must&#039;&#039;&#039; have 4 bytes after the message content or will crash.&lt;br /&gt;
&lt;br /&gt;
==== SessionMessage ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[#SessionMessageHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| Size from header&lt;br /&gt;
| Message content&lt;br /&gt;
|-&lt;br /&gt;
| After message content&lt;br /&gt;
| 0x4 if message is ack, 0x0 otherwise&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SessionMessageHeader ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Message ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content size following the header.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x8&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IDs ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Content size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Arbitrary&lt;br /&gt;
| Arbitrary content. Used to communicate with the applet via JsExtensions used by the Js being run by the applet on the current page.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000&lt;br /&gt;
| 0xc&lt;br /&gt;
| Ack. Content: first u32 is the entire storage size of the message being acked, the rest is not used.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== WebWifiPageArg ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || Official sw sets this to 0 with appletStorageWrite, separately from the rest of the config struct.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x100 || URL used for the connection-test requests.&lt;br /&gt;
|-&lt;br /&gt;
| 0x104 || 0x400 || Initial URL navigated to by the applet.&lt;br /&gt;
|-&lt;br /&gt;
| 0x504 || 0x10 || NIFM Network UUID. Can be value zero. Only used by the applet when conntest_url is set.&lt;br /&gt;
|-&lt;br /&gt;
| 0x514 || 0x4 || Input value for nifm cmd SetRequirementByRevision. Can be value zero. Only used by the applet when conntest_url is set.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is the input struct for WifiWebAuthApplet. This is a total of 0x518-bytes.&lt;br /&gt;
&lt;br /&gt;
When the conntest_url is empty, the applet will test the connection with nifm and throw an error on failure.&lt;br /&gt;
&lt;br /&gt;
=== WebWifiReturnValue ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x8 || Result&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is the output struct for WifiWebAuthApplet. This is a total of 0x8-bytes.&lt;br /&gt;
&lt;br /&gt;
=== WebCommonReturnValue ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || u32 exitReason&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x1000 || lastUrl string&lt;br /&gt;
|-&lt;br /&gt;
| 0x1008 || 0x8 || lastUrlSize&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is the 0x1010-byte output storage used by all non-WebWifi applets - except for Share which returns a TLV storage on [3.0.0+], and Web on [8.0.0+].&lt;br /&gt;
&lt;br /&gt;
=== WebArgHeader ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x2 || Total [[#WebArgTLV]] entries following this struct.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x2 || Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || [[#ShimKind]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is the header struct at offset 0 in the input web Arg storage for non-WebWifi. This is a total of 0x8-bytes. The total storage size used for input/output TLVs is 0x2000.&lt;br /&gt;
&lt;br /&gt;
=== WebArgTLV ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x2 || Type of this arg.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x2 || Size of the arg data following this struct.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Web TLV used in the input web Arg storage, after [[#WebArgHeader]]. This is a total of 0x8-bytes.&lt;br /&gt;
&lt;br /&gt;
=== WebBootFooterButtonEntry ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || [[#FooterButtonId]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || u8 bool visible flag&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x2 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x7 || 0x1 || ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== TLVs ===&lt;br /&gt;
All strings are NUL-terminated.&lt;br /&gt;
&lt;br /&gt;
==== Input TLVs ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  System Version&lt;br /&gt;
!  Applets&lt;br /&gt;
!  Type&lt;br /&gt;
!  Size&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x1&lt;br /&gt;
| 0xC00&lt;br /&gt;
| string&lt;br /&gt;
| Initial URL&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x400&lt;br /&gt;
| string&lt;br /&gt;
| CallbackUrl&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x400&lt;br /&gt;
| string&lt;br /&gt;
| CallbackableUrl&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| Offline&lt;br /&gt;
| 0x5&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64 titleID&lt;br /&gt;
| ApplicationId, for DocumentKind_OfflineHtmlPage/DocumentKind_ApplicationLegalInformation. Should be zero for DocumentKind_OfflineHtmlPage since it&#039;s ignored.&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| Offline&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0xC00&lt;br /&gt;
| string&lt;br /&gt;
| DocumentPath&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| Offline&lt;br /&gt;
| 0x7&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 enum OfflineDocumentKind&lt;br /&gt;
| [[#DocumentKind]]&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| Offline&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64 titleID&lt;br /&gt;
| SystemDataId, for DocumentKind_SystemDataPage.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Share&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 enum [[#ShareStartPage]]&lt;br /&gt;
| ShareStartPage&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0xA&lt;br /&gt;
| 0x1000&lt;br /&gt;
| string&lt;br /&gt;
| Whitelist. If not formatted properly, the applet will exit briefly after the applet is launched. Each line is a regex for each whitelisted URL.&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0xB&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| News flag. When set the domain from the input URL is automatically whitelisted, in addition to any already loaded whitelist.&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0xE&lt;br /&gt;
| 0x10&lt;br /&gt;
| userID&lt;br /&gt;
| userID, controls which user-specific savedata to mount.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Share&lt;br /&gt;
| 0xF&lt;br /&gt;
| 0x20&lt;br /&gt;
| [[Capture_services|AlbumEntry]]&lt;br /&gt;
| AlbumEntry0&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| ScreenShotEnabled. Controls whether screen-shot capture is allowed.&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x11&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| EcClientCertEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x12&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| Offline&lt;br /&gt;
| 0x13&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| PlayReportEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x15&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x17&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 enum [[#BootDisplayKind]]&lt;br /&gt;
| BootDisplayKind&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 enum [[#BackgroundKind]]&lt;br /&gt;
| BackgroundKind&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x19&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| FooterEnabled. Controls whether the UI footer is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x1A&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| PointerEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x1B&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 enum [[#LeftStickMode]]&lt;br /&gt;
| LeftStickMode&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| s32&lt;br /&gt;
| KeyRepeatFrame, first param&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x1D&lt;br /&gt;
| 0x4&lt;br /&gt;
| s32&lt;br /&gt;
| KeyRepeatFrame, second param&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x1E&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| Set after BootAsMediaPlayer with the value inverted.&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x1F&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| DisplayUrlKind (&amp;lt;code&amp;gt;value = (input_enumval==0x1)&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| [2.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x21&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| BootAsMediaPlayer&lt;br /&gt;
|-&lt;br /&gt;
| [2.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x22&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| ShopJumpEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [2.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x23&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| [6.0.0+] MediaAutoPlayEnabled ([2.0.0-5.1.0] MediaPlayerUserGestureRestrictionEnabled)&lt;br /&gt;
|-&lt;br /&gt;
| [2.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x100&lt;br /&gt;
| string&lt;br /&gt;
| LobbyParameter&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x26&lt;br /&gt;
| 0x20&lt;br /&gt;
| [[Capture_services|ApplicationAlbumEntry]]&lt;br /&gt;
| ApplicationAlbumEntry&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x27&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| JsExtensionEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [4.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x100&lt;br /&gt;
| string&lt;br /&gt;
| AdditionalCommentText&lt;br /&gt;
|-&lt;br /&gt;
| [4.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x29&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| TouchEnabledOnContents&lt;br /&gt;
|-&lt;br /&gt;
| [4.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x2A&lt;br /&gt;
| 0x80&lt;br /&gt;
| string&lt;br /&gt;
| UserAgentAdditionalString. &amp;quot; &amp;quot; followed by this string are appended to the normal User-Agent string.&lt;br /&gt;
|-&lt;br /&gt;
| [4.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x2B&lt;br /&gt;
| 0x10&lt;br /&gt;
| u8 array&lt;br /&gt;
| AdditionalMediaData0 (If the user-input size is less than 0x10, the remaining tmp data used for the TLV is cleared)&lt;br /&gt;
|-&lt;br /&gt;
| [4.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| MediaPlayerAutoCloseEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [4.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x2D&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| PageCacheEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [4.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x2E&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| WebAudioEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [5.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x2F&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [5.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x31&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| When set, indicates the whitelist for YouTubeVideo should be used (loaded from web-applet RomFS).&lt;br /&gt;
|-&lt;br /&gt;
| [5.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x32&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 enum *WebFooterFixedKind&lt;br /&gt;
| FooterFixedKind&lt;br /&gt;
|-&lt;br /&gt;
| [5.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x33&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| PageFadeEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [5.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x20&lt;br /&gt;
| s8 data[32]&lt;br /&gt;
| MediaCreatorApplicationRatingAge&lt;br /&gt;
|-&lt;br /&gt;
| [5.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x35&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| BootLoadingIconEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [5.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x36&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| PageScrollIndicatorEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x37&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| MediaPlayerSpeedControlEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x20&lt;br /&gt;
| [[Capture_services|AlbumEntry]]&lt;br /&gt;
| AlbumEntry1&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x39&lt;br /&gt;
| 0x20&lt;br /&gt;
| [[Capture_services|AlbumEntry]]&lt;br /&gt;
| AlbumEntry2&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x3A&lt;br /&gt;
| 0x20&lt;br /&gt;
| [[Capture_services|AlbumEntry]]&lt;br /&gt;
| AlbumEntry3&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x3B&lt;br /&gt;
| 0x10&lt;br /&gt;
| u8 array&lt;br /&gt;
| AdditionalMediaData1&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x10&lt;br /&gt;
| u8 array&lt;br /&gt;
| AdditionalMediaData2&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x3D&lt;br /&gt;
| 0x10&lt;br /&gt;
| u8 array&lt;br /&gt;
| AdditionalMediaData3&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| BootFooterButton&lt;br /&gt;
| 0x3E&lt;br /&gt;
| 0x80&lt;br /&gt;
| Array of [[#WebBootFooterButtonEntry]] with 0x10 entries.&lt;br /&gt;
| BootFooterButton&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x3F&lt;br /&gt;
| 0x4&lt;br /&gt;
| float&lt;br /&gt;
| OverrideWebAudioVolume&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| float&lt;br /&gt;
| OverrideMediaAudioVolume&lt;br /&gt;
|-&lt;br /&gt;
| [7.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x41&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32 enum [[#WebSessionBootMode]]&lt;br /&gt;
| BootMode&lt;br /&gt;
|-&lt;br /&gt;
| [7.0.0+]&lt;br /&gt;
| &lt;br /&gt;
| 0x42&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| Enables using [[#WebSession]] when set.&lt;br /&gt;
|-&lt;br /&gt;
| [8.0.0+]&lt;br /&gt;
| Offline&lt;br /&gt;
| 0x43&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| MediaPlayerUiEnabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Offline: title to load the content from is controlled by ApplicationId/SystemDataId. With DocumentKind_OfflineHtmlPage, it will ignore this and only load from the user-process title.&lt;br /&gt;
&lt;br /&gt;
Offline DocumentPath: Initial document path in RomFS, without the leading &#039;/&#039;. For DocumentKind_OfflineHtmlPage, this is relative to &amp;quot;html-document/&amp;quot; in RomFS. For the other DocumentKind values, this is relative to &amp;quot;/&amp;quot; in RomFS. This path must contain &amp;quot;.htdocs/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Share/Lobby: if a non-zero userID isn&#039;t set, the applet will launch the profile-selector applet to select an account.&lt;br /&gt;
&lt;br /&gt;
Share: An error will be displayed if neither AlbumEntry or ApplicationAlbumEntry are set, with [[#ShareStartPage|ShareStartPage_Default]].&lt;br /&gt;
&lt;br /&gt;
[6.0.0+] &amp;lt;code&amp;gt;AddAlbumEntryAndMediaData&amp;lt;/code&amp;gt; was added:&lt;br /&gt;
* Looks for AlbumEntry{N} TLVs, when a TLV is not found it is written, then the associated AdditionalMediaData{N} TLV is written the same way as AdditionalMediaData0. If all AlbumEntry{N} TLVs already exist, this returns without writing anything.&lt;br /&gt;
&lt;br /&gt;
==== Output TLVs ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  System Version&lt;br /&gt;
!  Applets&lt;br /&gt;
!  Type&lt;br /&gt;
!  Size&lt;br /&gt;
!  Value&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| Share, Web&lt;br /&gt;
| 0x1&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| ShareExitReason&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| Share, Web&lt;br /&gt;
| 0x2&lt;br /&gt;
| &lt;br /&gt;
| string&lt;br /&gt;
| LastUrl&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| Share, Web&lt;br /&gt;
| 0x3&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64&lt;br /&gt;
| LastUrlSize&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| SharePostResult&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x5&lt;br /&gt;
| &lt;br /&gt;
| string&lt;br /&gt;
| PostServiceName&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64&lt;br /&gt;
| PostServiceNameSize&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x7&lt;br /&gt;
| &lt;br /&gt;
| string&lt;br /&gt;
| PostId&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0+]&lt;br /&gt;
| Share&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x8&lt;br /&gt;
| u64&lt;br /&gt;
| PostIdSize&lt;br /&gt;
|-&lt;br /&gt;
| [8.0.0+]&lt;br /&gt;
| Web&lt;br /&gt;
| 0x9&lt;br /&gt;
| 0x1&lt;br /&gt;
| u8 bool&lt;br /&gt;
| MediaPlayerAutoClosedByCompletion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These are used for Share-applet on [3.0.0+], and with Web on [8.0.0+]. Official user-processes doesn&#039;t check the TLV size for any of these.&lt;br /&gt;
&lt;br /&gt;
==== DocumentKind ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| DocumentKind_OfflineHtmlPage&lt;br /&gt;
| Use the HtmlDocument NCA content from the application.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| DocumentKind_ApplicationLegalInformation&lt;br /&gt;
| Use the LegalInformation NCA content from the application.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| DocumentKind_SystemDataPage&lt;br /&gt;
| Use the Data NCA content from the specified title, see also: [[Title_list#System_Data_Archives]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This controls the kind of content to mount with Offline-applet.&lt;br /&gt;
&lt;br /&gt;
==== ShareStartPage ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Name&lt;br /&gt;
!  URL&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| ShareStartPage_Default&lt;br /&gt;
| [[Network|&amp;quot;https://web-%.share.srv.nintendo.net/&amp;quot;]]&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ShareStartPage_Settings&lt;br /&gt;
| [[Network|&amp;quot;https://web-%.share.srv.nintendo.net/settings/&amp;quot;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This enum controls the initial page for ShareApplet.&lt;br /&gt;
&lt;br /&gt;
==== BootDisplayKind ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| BootDisplayKind_White&lt;br /&gt;
| Default white background.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| Unknown. Used by Offline default Arg initialization for DocumentKind_ApplicationLegalInformation/DocumentKind_SystemDataPage.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| BootDisplayKind_Black&lt;br /&gt;
| Black background.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| Unknown. Used by Share default Arg initialization.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| Unknown. Used by Lobby default default Arg initialization.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Kind values for BootDisplayKind. Controls the background color while displaying the loading screen during applet boot. Also controls the BackgroundKind when value is non-zero.&lt;br /&gt;
&lt;br /&gt;
The applet converts this to internal values.&lt;br /&gt;
* BootDisplayKind 0: &lt;br /&gt;
** If launched by an Application:&lt;br /&gt;
*** If [[#BackgroundKind]] is 2..1, return 3..2. When 0, run the below, otherwise assert.&lt;br /&gt;
** return TLV value from BootAsMediaPlayer&lt;br /&gt;
* BootDisplayKind 1..4: return 0..3.&lt;br /&gt;
&lt;br /&gt;
==== BackgroundKind ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Unknown. Used by Offline default Arg initialization for DocumentKind_ApplicationLegalInformation/DocumentKind_SystemDataPage.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| Same as [[#BootDisplayKind]] value 3.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| Same as [[#BootDisplayKind]] value 4. Used by Lobby default Arg initialization.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Kind values for BackgroundKind. Only used when [[#BootDisplayKind]] is 0.&lt;br /&gt;
&lt;br /&gt;
==== LeftStickMode ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| LeftStickMode_Pointer&lt;br /&gt;
| The user can directly control the pointer via the left-stick.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| LeftStickMode_Cursor&lt;br /&gt;
| The user can only select elements on the page via the left-stick.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Controls the initial mode, this can be toggled by the user via the pressing the left-stick button. If the Pointer flag is set to false, only LeftStickMode_Cursor will be used and mode toggle by the user is disabled (input value ignored).&lt;br /&gt;
&lt;br /&gt;
==== FooterButtonId ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| None&lt;br /&gt;
| None, for empty [[#WebBootFooterButtonEntry]]. Invalid for use as an input Id.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &lt;br /&gt;
| Values starting with this are invalid.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== WebSessionBootMode ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Value&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Normal (AllForeground)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| AllForegroundInitiallyHidden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This controls which [[Applet_Manager_services|LibraryAppletMode]] the applet will be launched with, by the user-process. The TLV for this seems to be ignored by the applet.&lt;br /&gt;
&lt;br /&gt;
==== LastUrl ====&lt;br /&gt;
When the applet loads a page where the beginning of the URL matches the URL from CallbackUrl, the applet will exit and set LastUrl to that URL (exit doesn&#039;t occur when CallbackableUrl is set). With Offline-applet for CallbackUrl handling, it compares the domain with &amp;quot;localhost&amp;quot; instead of using the CallbackUrl TLV.&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
&lt;br /&gt;
=== [[1.0.0]] ===&lt;br /&gt;
&amp;quot;shareddata:/buildinfo/buildinfo.dat&amp;quot; content:&lt;br /&gt;
  r:11682&lt;br /&gt;
  p:NX64&lt;br /&gt;
  v:Pilot&lt;br /&gt;
  d:2016-11-25 23:30&lt;br /&gt;
  n:0.4.25&lt;br /&gt;
&lt;br /&gt;
=== [[2.0.0]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;shareddata:/buildinfo/buildinfo.dat&amp;quot; content:&lt;br /&gt;
  r:13341&lt;br /&gt;
  p:NX64&lt;br /&gt;
  v:Release&lt;br /&gt;
  d:2017-02-13 22:57&lt;br /&gt;
  n:0.5.9&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
=== [[2.1.0]] ===&lt;br /&gt;
See [[Switch_Userland_Flaws|here]] for vuln-related changes.&lt;br /&gt;
&lt;br /&gt;
The WebKit NRO was updated. For the WebKit NRO, the page-aligned size for the R-X, R--, and RW- pages are the same as v2.0.&lt;br /&gt;
* The actual code in the NRO starts differing starting at offset 0xE780. In v2.0 the offset following the last code instruction is text_lastpage+0x3F8(text_end-0xC08), while for v2.1 it&#039;s text_lastpage+0xE60(text_end-0x1A0). Compared to the previous version, there&#039;s a val0 u32(padding) inserted where the code for the import stubs begin, near the end of .text. Relative to that end offset going backwards, .text differs starting at v2.0 textbase+0xD56530 / v2.1 textbase+0xD56F94.&lt;br /&gt;
* The R-- section was updated. Besides the large table(?) which was updated(nothing was added/removed there), the strings containing &amp;quot;D:/for_cruiser/release_182/nx/webkit/&amp;quot; were updated: &amp;quot;182&amp;quot; was changed to &amp;quot;189&amp;quot;. 0x10-bytes at offset 0x57292C were removed. 0x8-bytes were inserted at offset 0x14B2B5C in the v2.1 section. 0x8-bytes were inserted at offset 0x14B5C10 in the v2.1 section. ...&lt;br /&gt;
* The RW- section was updated, mainly for different addrs. Nothing was added/removed. Most(?)/all(?) main-codebin func import-addrs relative to main-codebin-base are the same as v2.0.&lt;br /&gt;
&lt;br /&gt;
Main-codebin region(titleID 010000000000100B):&lt;br /&gt;
* rtld is same as before basically, minus addrs. Likewise for the &amp;quot;nnSdkEmpty&amp;quot; binary following the main-codebin.&lt;br /&gt;
* Various byte values were changed in the main .text.&lt;br /&gt;
* In the main R-- section:&lt;br /&gt;
** The length of a string used with the user-agent changed, due to being changed from &amp;quot;{...}.9&amp;quot; to &amp;quot;{...}.10&amp;quot;.&lt;br /&gt;
** The version in the following string was changed from &amp;quot;1.2.2&amp;quot; to &amp;quot;1.2.3&amp;quot;: &amp;quot;FS_ACCESS: { sdk_versio n: 1.2.3, spec:  NX }&amp;quot;&lt;br /&gt;
** The datetime strings following &amp;quot;b/23876444&amp;quot; was changed from &amp;quot;Feb 10 2017&amp;quot; &amp;quot;02:24:47&amp;quot; to &amp;quot;Mar  9 201 7&amp;quot; &amp;quot;21:41:27&amp;quot;.&lt;br /&gt;
** A 0x10-byte block prior to SDK library tag strings was updated. The version in those strings was changed from &amp;quot;1_2_2&amp;quot; to &amp;quot;1_2_3&amp;quot;.&lt;br /&gt;
* The main RW- section appears to be basically the same minus addrs.&lt;br /&gt;
&lt;br /&gt;
All of the other NROs were updated in FS with only the following changes:&lt;br /&gt;
* The R-X section is identical to the previous version except for the 0x10-byte block in the NRO header. &lt;br /&gt;
* The R-- section only had version values in &amp;quot;/release_{ver}/&amp;quot; strings updated, see the for_cruiser path mentioned for WebKit NRO above. The only other change was that a 0x10-byte block following a &amp;quot;GNU&amp;quot; string was updated.&lt;br /&gt;
&lt;br /&gt;
==== FS ====&lt;br /&gt;
The content of &amp;quot;blacklist:/&amp;quot; and &amp;quot;oceanShared:/&amp;quot; haven&#039;t changed. Only the content of &amp;quot;shareddata:/&amp;quot; and &amp;quot;data:/&amp;quot; changed.&lt;br /&gt;
&lt;br /&gt;
===== &amp;quot;shareddata:/&amp;quot; =====&lt;br /&gt;
The following files were updated here(nothing added/removed):&lt;br /&gt;
&lt;br /&gt;
* /buildinfo/buildinfo.dat&lt;br /&gt;
* /dll/cairo_wkc.nro&lt;br /&gt;
* /dll/libfont.nro&lt;br /&gt;
* /dll/oss_wkc.nro&lt;br /&gt;
* /dll/peer_wkc.nro&lt;br /&gt;
* /dll/webkit_wkc.nro&lt;br /&gt;
&lt;br /&gt;
That is, every .nro under the above directory was updated.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;shareddata:/buildinfo/buildinfo.dat&amp;quot; content:&lt;br /&gt;
  r:13343&lt;br /&gt;
  p::NX64&lt;br /&gt;
  v:Release&lt;br /&gt;
  d:2017-03-14 21:08&lt;br /&gt;
  n:0.5.10&lt;br /&gt;
&lt;br /&gt;
===== &amp;quot;data:/&amp;quot; =====&lt;br /&gt;
The following files were updated here(nothing added/removed):&lt;br /&gt;
&lt;br /&gt;
* /.nrr/netfront.nrr&lt;br /&gt;
* /buildinfo/buildinfo.dat&lt;br /&gt;
&lt;br /&gt;
=== [[3.0.1]] ===&lt;br /&gt;
While main-codebin .text was updated, no actual code was changed.&lt;br /&gt;
&lt;br /&gt;
The .nss path string in main-codebin was changed from &amp;quot;Q:\work\LibraryApplet\...&amp;quot; to &amp;quot;Q:\work\nup\LibraryApplet\...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See [[3.0.1|here]] regarding &amp;quot;shareddata:/&amp;quot; buildinfo.&lt;br /&gt;
&lt;br /&gt;
=== [[5.0.0]] ===&lt;br /&gt;
Support for YouTubeVideo was added, and new [[#TLVs]] etc.&lt;br /&gt;
&lt;br /&gt;
In RomFS &amp;quot;/whitelist/WhitelistYouTubePlayer.txt&amp;quot; was added for the YouTubeVideo whitelist, which contains the following: &amp;lt;nowiki&amp;gt;&amp;quot;^https://www\.youtube\.com/embed/&amp;quot;&amp;lt;/nowiki&amp;gt;. This file has the same content on 7.0.x.&lt;br /&gt;
&lt;br /&gt;
[[Category:Library Applets]]&lt;/div&gt;</summary>
		<author><name>Amicuchu</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Talk:Internet_Browser&amp;diff=8646</id>
		<title>Talk:Internet Browser</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Talk:Internet_Browser&amp;diff=8646"/>
		<updated>2020-01-05T15:43:38Z</updated>

		<summary type="html">&lt;p&gt;Amicuchu: /* Websession proposed changes */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creditable Source? =&lt;br /&gt;
Yeah sure, a UA test can EASILY be faked.&lt;br /&gt;
Though, this unlike the Wii U UA string doesn&#039;t include a region suffix which in my eyes confirms it since nobody knew about it being region free.&lt;br /&gt;
&lt;br /&gt;
[[User:Filfat|Filfat]] ([[User talk:Filfat|talk]]) 11:27, 13 January 2017 (CST)&lt;br /&gt;
&lt;br /&gt;
== Websession proposed changes ==&lt;br /&gt;
&lt;br /&gt;
I tried edit the page but ends considered being spam&lt;br /&gt;
These are the changes I want do&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next info was tested in 9.0.0&lt;br /&gt;
&lt;br /&gt;
In the js side, there is a method called &amp;lt;code&amp;gt;window.nx.sendMessage(arg)&amp;lt;/code&amp;gt; that sends data to the native side, this method returns a boolean indicating if sending was succesful and accepts a string as an argument. The string is encoded like a C null terminated string in the message content. For receive messages from native part, there is a dom event called &amp;lt;code&amp;gt;message&amp;lt;/code&amp;gt; which is dispatched when a message arrives. The event can be listened using &amp;lt;code&amp;gt;window.nx.addEventListener(&amp;quot;message&amp;quot;, callback)&amp;lt;/code&amp;gt; being callback a function which first parameter is like a dom event arg and contains a member called &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; which contains the string decoded from the arrived message&lt;br /&gt;
&lt;br /&gt;
If messages aren&#039;t acked by the native part, js side will not longer receive messages. Ack to web applet &#039;&#039;&#039;must&#039;&#039;&#039; have 4 bytes after the message content or will crash.&lt;br /&gt;
&lt;br /&gt;
==== SessionMessage ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x10&lt;br /&gt;
| [[#SessionMessageHeader]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| Size from header&lt;br /&gt;
| Message content&lt;br /&gt;
|-&lt;br /&gt;
| After message content&lt;br /&gt;
| 0x4 if message is ack, 0x0 otherwise&lt;br /&gt;
| Padding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SessionMessageHeader ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Offset&lt;br /&gt;
!  Size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Message ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Content size following the header.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x8&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== IDs ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  ID&lt;br /&gt;
!  Content size&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| Arbitrary&lt;br /&gt;
| Arbitrary content. Used to communicate with the applet via JsExtensions used by the Js being run by the applet on the current page.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000&lt;br /&gt;
| 0xc&lt;br /&gt;
| Ack. Content: first u32 is the entire storage size of the message being acked, the rest is not used.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
[[User:Amicuchu|Amicuchu]] ([[User talk:Amicuchu|talk]]) 16:43, 5 January 2020 (UTC)&lt;/div&gt;</summary>
		<author><name>Amicuchu</name></author>
	</entry>
</feed>