diff --git a/MeshCentralServer.njsproj b/MeshCentralServer.njsproj
index cbe289a6..91bf43da 100644
--- a/MeshCentralServer.njsproj
+++ b/MeshCentralServer.njsproj
@@ -119,7 +119,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -405,6 +462,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -483,6 +594,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/meshcentral.js b/meshcentral.js
index b38e4811..0a5fa6cb 100644
--- a/meshcentral.js
+++ b/meshcentral.js
@@ -2551,6 +2551,7 @@ function mainStart() {
var passport = null;
var allsspi = true;
var yubikey = false;
+ var mstsc = false;
var recordingIndex = false;
var domainCount = 0;
if (require('os').platform() == 'win32') { for (var i in config.domains) { domainCount++; if (config.domains[i].auth == 'sspi') { sspi = true; } else { allsspi = false; } } } else { allsspi = false; }
@@ -2558,6 +2559,7 @@ function mainStart() {
for (var i in config.domains) {
if (config.domains[i].yubikey != null) { yubikey = true; }
if (config.domains[i].auth == 'ldap') { ldap = true; }
+ if (config.domains[i].mstsc === true) { mstsc = true; }
if ((typeof config.domains[i].authstrategies == 'object')) {
if (passport == null) { passport = ['passport']; }
if ((typeof config.domains[i].authstrategies.twitter == 'object') && (typeof config.domains[i].authstrategies.twitter.apikey == 'string') && (typeof config.domains[i].authstrategies.twitter.apisecret == 'string') && (passport.indexOf('passport-twitter') == -1)) { passport.push('passport-twitter'); }
@@ -2577,6 +2579,7 @@ function mainStart() {
var modules = ['ws', 'cbor', 'nedb', 'https', 'yauzl', 'xmldom', 'ipcheck', 'express', 'archiver', 'multiparty', 'node-forge', 'express-ws', 'compression', 'body-parser', 'connect-redis', 'cookie-session', 'express-handlebars'];
if (require('os').platform() == 'win32') { modules.push('node-windows'); if (sspi == true) { modules.push('node-sspi'); } } // Add Windows modules
if (ldap == true) { modules.push('ldapauth-fork'); }
+ if (mstsc == true) { modules.push('node-rdpjs-2'); }
if (passport != null) { modules.push(...passport); }
if (recordingIndex == true) { modules.push('image-size'); } // Need to get the remote desktop JPEG sizes to index the recodring file.
if (config.letsencrypt != null) { if (nodeVersion < 8) { addServerWarning("Let's Encrypt support requires Node v8.x or higher.", !args.launch); } else { modules.push('acme-client'); } } // Add acme-client module
diff --git a/mstsc.js b/mstsc.js
new file mode 100644
index 00000000..3344aebf
--- /dev/null
+++ b/mstsc.js
@@ -0,0 +1,122 @@
+/**
+* @description MeshCentral MSTSC relay
+* @author Ylian Saint-Hilaire & Bryan Roe
+* @copyright Intel Corporation 2018-2020
+* @license Apache-2.0
+* @version v0.0.1
+*/
+
+/*jslint node: true */
+/*jshint node: true */
+/*jshint strict:false */
+/*jshint -W097 */
+/*jshint esversion: 6 */
+"use strict";
+
+// Construct a MSTSC Relay object, called upon connection
+// This is a bit of a hack as we are going to run the RDP connection thru a loopback connection.
+// If the "node-rdpjs-2" module supported passing a socket, we would do something different.
+module.exports.CreateMstscRelay = function (parent, db, ws, req, args, domain, user) {
+ const Net = require('net');
+ const WebSocket = require('ws');
+
+ var obj = {};
+ obj.user = user;
+ obj.domain = domain;
+ obj.ws = ws;
+ obj.wsClient = null;
+ obj.tcpServer = null;
+ obj.tcpServerPort = 0;
+ obj.relaySocket = null;
+ obj.relayActive = false;
+ obj.infos = null;
+ var rdpClient = null;
+
+ // Disconnect this user
+ obj.close = function (arg) {
+ if ((arg == 1) || (arg == null)) { try { ws.close(); } catch (e) { console.log(e); } } // Soft close, close the websocket
+ if (arg == 2) { try { ws._socket._parent.end(); } catch (e) { console.log(e); } } // Hard close, close the TCP socket
+ if (obj.wsClient) { obj.wsClient.close(); obj.wsClient = null; }
+ if (obj.tcpServer) { obj.tcpServer.close(); obj.tcpServer = null; }
+ if (rdpClient) { rdpClient.close(); rdpClient = null; }
+ delete obj.user;
+ delete obj.domain;
+ delete obj.ws;
+ };
+
+ // Start the looppback server
+ function startTcpServer() {
+ obj.tcpServer = new Net.Server();
+ obj.tcpServer.listen(0, '127.0.0.1', function () { obj.tcpServerPort = obj.tcpServer.address().port; startRdp(obj.tcpServerPort); });
+ obj.tcpServer.on('connection', function (socket) {
+ if (obj.relaySocket != null) {
+ socket.close();
+ } else {
+ obj.relaySocket = socket;
+ obj.relaySocket.pause();
+ obj.relaySocket.on('data', function (chunk) { if (obj.relayActive == true) { obj.wsClient.send(chunk); } });
+ obj.relaySocket.on('end', function () { obj.close(0); });
+ obj.relaySocket.on('error', function (err) { obj.close(0); });
+
+ // TODO: Use correct URL with domain and use TLS only if needed.
+ obj.wsClient = new WebSocket('wss://127.0.0.1/meshrelay.ashx?auth=' + obj.infos.ip, { rejectUnauthorized: false });
+
+ obj.wsClient.on('open', function () { });
+ obj.wsClient.on('message', function (data) { if ((obj.relayActive == false) && (data == 'c')) { obj.relayActive = true; obj.relaySocket.resume(); } else { obj.relaySocket.write(data); } });
+ obj.wsClient.on('close', function () { obj.close(0); });
+ obj.tcpServer.close();
+ obj.tcpServer = null;
+ }
+ });
+ }
+
+ // Start the RDP client
+ function startRdp(port) {
+ rdpClient = require('node-rdpjs-2').createClient({
+ logLevel: 'ERROR',
+ domain: obj.infos.domain,
+ userName: obj.infos.username,
+ password: obj.infos.password,
+ enablePerf: true,
+ autoLogin: true,
+ screen: obj.infos.screen,
+ locale: obj.infos.locale
+ }).on('connect', function () {
+ send(['rdp-connect']);
+ }).on('bitmap', function (bitmap) {
+ send(['rdp-bitmap', bitmap]);
+ }).on('close', function () {
+ send(['rdp-close']);
+ }).on('error', function (err) {
+ send(['rdp-error', err]);
+ }).connect('127.0.0.1', obj.tcpServerPort);
+ }
+
+ // When data is received from the web socket
+ // RDP default port is 3389
+ ws.on('message', function (msg) {
+ msg = JSON.parse(msg);
+ switch (msg[0]) {
+ case 'infos': { obj.infos = msg[1]; startTcpServer(); break; }
+ case 'mouse': { if (rdpClient) { rdpClient.sendPointerEvent(msg[1], msg[2], msg[3], msg[4]); } break; }
+ case 'wheel': { if (rdpClient) { rdpClient.sendWheelEvent(msg[1], msg[2], msg[3], msg[4]); } break; }
+ case 'scancode': { if (rdpClient) { rdpClient.sendKeyEventScancode(msg[1], msg[2]); } break; }
+ case 'unicode': { if (rdpClient) { rdpClient.sendKeyEventUnicode(msg[1], msg[2]); } break; }
+ case 'disconnect': { obj.close(0); break; }
+ }
+ });
+
+ // If error, do nothing
+ ws.on('error', function (err) { console.log(err); obj.close(0); });
+
+ // If the web socket is closed
+ ws.on('close', function (req) { obj.close(0); });
+
+ // Send an object
+ function send(obj) { try { ws.send(JSON.stringify(obj)); } catch (ex) { } }
+
+ // We are all set, start receiving data
+ ws._socket.resume();
+
+ return obj;
+};
\ No newline at end of file
diff --git a/public/mstsc/LICENSE b/public/mstsc/LICENSE
new file mode 100644
index 00000000..ef7e7efc
--- /dev/null
+++ b/public/mstsc/LICENSE
@@ -0,0 +1,674 @@
+GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {one line to give the program's name and a brief idea of what it does.}
+ Copyright (C) {year} {name of author}
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ {project} Copyright (C) {year} {fullname}
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+ .
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/public/mstsc/css/bootstrap.min.css b/public/mstsc/css/bootstrap.min.css
new file mode 100644
index 00000000..322402c7
--- /dev/null
+++ b/public/mstsc/css/bootstrap.min.css
@@ -0,0 +1,7271 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{
+ font-family:sans-serif;
+ -webkit-text-size-adjust:100%;
+ -ms-text-size-adjust:100%
+}
+
+body{
+ margin:0
+}
+
+article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{
+ display:block
+}
+
+audio,canvas,progress,video{
+ display:inline-block;
+ vertical-align:baseline
+}
+
+audio:not([controls]){
+ display:none;
+ height:0
+}
+
+[hidden],template{
+ display:none
+}
+
+a{
+ background-color:transparent
+}
+
+a:active,a:hover{
+ outline:0
+}
+
+abbr[title]{
+ border-bottom:1px dotted
+}
+
+b,strong{
+ font-weight:700
+}
+
+dfn{
+ font-style:italic
+}
+
+h1{
+ margin:.67em 0;
+ font-size:2em
+}
+
+mark{
+ color:#000;
+ background:#ff0
+}
+
+small{
+ font-size:80%
+}
+
+sub,sup{
+ position:relative;
+ font-size:75%;
+ line-height:0;
+ vertical-align:baseline
+}
+
+sup{
+ top:-.5em
+}
+
+sub{
+ bottom:-.25em
+}
+
+img{
+ border:0
+}
+
+svg:not(:root){
+ overflow:hidden
+}
+
+figure{
+ margin:1em 40px
+}
+
+hr{
+ height:0;
+ -webkit-box-sizing:content-box;
+ -moz-box-sizing:content-box;
+ box-sizing:content-box
+}
+
+pre{
+ overflow:auto
+}
+
+code,kbd,pre,samp{
+ font-family:monospace,monospace;
+ font-size:1em
+}
+
+button,input,optgroup,select,textarea{
+ margin:0;
+ font:inherit;
+ color:inherit
+}
+
+button{
+ overflow:visible
+}
+
+button,select{
+ text-transform:none
+}
+
+button,html input[type=button],input[type=reset],input[type=submit]{
+ -webkit-appearance:button;
+ cursor:pointer
+}
+
+button[disabled],html input[disabled]{
+ cursor:default
+}
+
+button::-moz-focus-inner,input::-moz-focus-inner{
+ padding:0;
+ border:0
+}
+
+input{
+ line-height:normal
+}
+
+input[type=checkbox],input[type=radio]{
+ -webkit-box-sizing:border-box;
+ -moz-box-sizing:border-box;
+ box-sizing:border-box;
+ padding:0
+}
+
+input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{
+ height:auto
+}
+
+input[type=search]{
+ -webkit-box-sizing:content-box;
+ -moz-box-sizing:content-box;
+ box-sizing:content-box;
+ -webkit-appearance:textfield
+}
+
+input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{
+ -webkit-appearance:none
+}
+
+fieldset{
+ padding:.35em .625em .75em;
+ margin:0 2px;
+ border:1px solid silver
+}
+
+legend{
+ padding:0;
+ border:0
+}
+
+textarea{
+ overflow:auto
+}
+
+optgroup{
+ font-weight:700
+}
+
+table{
+ border-spacing:0;
+ border-collapse:collapse
+}
+
+td,th{
+ padding:0
+}
+
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{
+ *,:after,:before{
+ color:#000!important;
+ text-shadow:none!important;
+ background:0 0!important;
+ -webkit-box-shadow:none!important;
+ box-shadow:none!important
+ }
+
+ a,a:visited{
+ text-decoration:underline
+ }
+
+ a[href]:after{
+ content:" (" attr(href) ")"
+ }
+
+ abbr[title]:after{
+ content:" (" attr(title) ")"
+ }
+
+ a[href^="javascript:"]:after,a[href^="#"]:after{
+ content:""
+ }
+
+ blockquote,pre{
+ border:1px solid #999;
+ page-break-inside:avoid
+ }
+
+ thead{
+ display:table-header-group
+ }
+
+ img,tr{
+ page-break-inside:avoid
+ }
+
+ img{
+ max-width:100%!important
+ }
+
+ h2,h3,p{
+ orphans:3;
+ widows:3
+ }
+
+ h2,h3{
+ page-break-after:avoid
+ }
+
+ .navbar{
+ display:none
+ }
+
+ .btn>.caret,.dropup>.btn>.caret{
+ border-top-color:#000!important
+ }
+
+ .label{
+ border:1px solid #000
+ }
+
+ .table{
+ border-collapse:collapse!important
+ }
+
+ .table td,.table th{
+ background-color:#fff!important
+ }
+
+ .table-bordered td,.table-bordered th{
+ border:1px solid #ddd!important
+ }
+
+}
+
+@font-face{
+ font-family:'Glyphicons Halflings';
+ src:url(../fonts/glyphicons-halflings-regular.eot);
+ src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')
+}
+
+.glyphicon{
+ position:relative;
+ top:1px;
+ display:inline-block;
+ font-family:'Glyphicons Halflings';
+ font-style:normal;
+ font-weight:400;
+ line-height:1;
+ -webkit-font-smoothing:antialiased;
+ -moz-osx-font-smoothing:grayscale
+}
+
+.glyphicon-asterisk:before{
+ content:"\2a"
+}
+
+.glyphicon-plus:before{
+ content:"\2b"
+}
+
+.glyphicon-eur:before,.glyphicon-euro:before{
+ content:"\20ac"
+}
+
+.glyphicon-minus:before{
+ content:"\2212"
+}
+
+.glyphicon-cloud:before{
+ content:"\2601"
+}
+
+.glyphicon-envelope:before{
+ content:"\2709"
+}
+
+.glyphicon-pencil:before{
+ content:"\270f"
+}
+
+.glyphicon-glass:before{
+ content:"\e001"
+}
+
+.glyphicon-music:before{
+ content:"\e002"
+}
+
+.glyphicon-search:before{
+ content:"\e003"
+}
+
+.glyphicon-heart:before{
+ content:"\e005"
+}
+
+.glyphicon-star:before{
+ content:"\e006"
+}
+
+.glyphicon-star-empty:before{
+ content:"\e007"
+}
+
+.glyphicon-user:before{
+ content:"\e008"
+}
+
+.glyphicon-film:before{
+ content:"\e009"
+}
+
+.glyphicon-th-large:before{
+ content:"\e010"
+}
+
+.glyphicon-th:before{
+ content:"\e011"
+}
+
+.glyphicon-th-list:before{
+ content:"\e012"
+}
+
+.glyphicon-ok:before{
+ content:"\e013"
+}
+
+.glyphicon-remove:before{
+ content:"\e014"
+}
+
+.glyphicon-zoom-in:before{
+ content:"\e015"
+}
+
+.glyphicon-zoom-out:before{
+ content:"\e016"
+}
+
+.glyphicon-off:before{
+ content:"\e017"
+}
+
+.glyphicon-signal:before{
+ content:"\e018"
+}
+
+.glyphicon-cog:before{
+ content:"\e019"
+}
+
+.glyphicon-trash:before{
+ content:"\e020"
+}
+
+.glyphicon-home:before{
+ content:"\e021"
+}
+
+.glyphicon-file:before{
+ content:"\e022"
+}
+
+.glyphicon-time:before{
+ content:"\e023"
+}
+
+.glyphicon-road:before{
+ content:"\e024"
+}
+
+.glyphicon-download-alt:before{
+ content:"\e025"
+}
+
+.glyphicon-download:before{
+ content:"\e026"
+}
+
+.glyphicon-upload:before{
+ content:"\e027"
+}
+
+.glyphicon-inbox:before{
+ content:"\e028"
+}
+
+.glyphicon-play-circle:before{
+ content:"\e029"
+}
+
+.glyphicon-repeat:before{
+ content:"\e030"
+}
+
+.glyphicon-refresh:before{
+ content:"\e031"
+}
+
+.glyphicon-list-alt:before{
+ content:"\e032"
+}
+
+.glyphicon-lock:before{
+ content:"\e033"
+}
+
+.glyphicon-flag:before{
+ content:"\e034"
+}
+
+.glyphicon-headphones:before{
+ content:"\e035"
+}
+
+.glyphicon-volume-off:before{
+ content:"\e036"
+}
+
+.glyphicon-volume-down:before{
+ content:"\e037"
+}
+
+.glyphicon-volume-up:before{
+ content:"\e038"
+}
+
+.glyphicon-qrcode:before{
+ content:"\e039"
+}
+
+.glyphicon-barcode:before{
+ content:"\e040"
+}
+
+.glyphicon-tag:before{
+ content:"\e041"
+}
+
+.glyphicon-tags:before{
+ content:"\e042"
+}
+
+.glyphicon-book:before{
+ content:"\e043"
+}
+
+.glyphicon-bookmark:before{
+ content:"\e044"
+}
+
+.glyphicon-print:before{
+ content:"\e045"
+}
+
+.glyphicon-camera:before{
+ content:"\e046"
+}
+
+.glyphicon-font:before{
+ content:"\e047"
+}
+
+.glyphicon-bold:before{
+ content:"\e048"
+}
+
+.glyphicon-italic:before{
+ content:"\e049"
+}
+
+.glyphicon-text-height:before{
+ content:"\e050"
+}
+
+.glyphicon-text-width:before{
+ content:"\e051"
+}
+
+.glyphicon-align-left:before{
+ content:"\e052"
+}
+
+.glyphicon-align-center:before{
+ content:"\e053"
+}
+
+.glyphicon-align-right:before{
+ content:"\e054"
+}
+
+.glyphicon-align-justify:before{
+ content:"\e055"
+}
+
+.glyphicon-list:before{
+ content:"\e056"
+}
+
+.glyphicon-indent-left:before{
+ content:"\e057"
+}
+
+.glyphicon-indent-right:before{
+ content:"\e058"
+}
+
+.glyphicon-facetime-video:before{
+ content:"\e059"
+}
+
+.glyphicon-picture:before{
+ content:"\e060"
+}
+
+.glyphicon-map-marker:before{
+ content:"\e062"
+}
+
+.glyphicon-adjust:before{
+ content:"\e063"
+}
+
+.glyphicon-tint:before{
+ content:"\e064"
+}
+
+.glyphicon-edit:before{
+ content:"\e065"
+}
+
+.glyphicon-share:before{
+ content:"\e066"
+}
+
+.glyphicon-check:before{
+ content:"\e067"
+}
+
+.glyphicon-move:before{
+ content:"\e068"
+}
+
+.glyphicon-step-backward:before{
+ content:"\e069"
+}
+
+.glyphicon-fast-backward:before{
+ content:"\e070"
+}
+
+.glyphicon-backward:before{
+ content:"\e071"
+}
+
+.glyphicon-play:before{
+ content:"\e072"
+}
+
+.glyphicon-pause:before{
+ content:"\e073"
+}
+
+.glyphicon-stop:before{
+ content:"\e074"
+}
+
+.glyphicon-forward:before{
+ content:"\e075"
+}
+
+.glyphicon-fast-forward:before{
+ content:"\e076"
+}
+
+.glyphicon-step-forward:before{
+ content:"\e077"
+}
+
+.glyphicon-eject:before{
+ content:"\e078"
+}
+
+.glyphicon-chevron-left:before{
+ content:"\e079"
+}
+
+.glyphicon-chevron-right:before{
+ content:"\e080"
+}
+
+.glyphicon-plus-sign:before{
+ content:"\e081"
+}
+
+.glyphicon-minus-sign:before{
+ content:"\e082"
+}
+
+.glyphicon-remove-sign:before{
+ content:"\e083"
+}
+
+.glyphicon-ok-sign:before{
+ content:"\e084"
+}
+
+.glyphicon-question-sign:before{
+ content:"\e085"
+}
+
+.glyphicon-info-sign:before{
+ content:"\e086"
+}
+
+.glyphicon-screenshot:before{
+ content:"\e087"
+}
+
+.glyphicon-remove-circle:before{
+ content:"\e088"
+}
+
+.glyphicon-ok-circle:before{
+ content:"\e089"
+}
+
+.glyphicon-ban-circle:before{
+ content:"\e090"
+}
+
+.glyphicon-arrow-left:before{
+ content:"\e091"
+}
+
+.glyphicon-arrow-right:before{
+ content:"\e092"
+}
+
+.glyphicon-arrow-up:before{
+ content:"\e093"
+}
+
+.glyphicon-arrow-down:before{
+ content:"\e094"
+}
+
+.glyphicon-share-alt:before{
+ content:"\e095"
+}
+
+.glyphicon-resize-full:before{
+ content:"\e096"
+}
+
+.glyphicon-resize-small:before{
+ content:"\e097"
+}
+
+.glyphicon-exclamation-sign:before{
+ content:"\e101"
+}
+
+.glyphicon-gift:before{
+ content:"\e102"
+}
+
+.glyphicon-leaf:before{
+ content:"\e103"
+}
+
+.glyphicon-fire:before{
+ content:"\e104"
+}
+
+.glyphicon-eye-open:before{
+ content:"\e105"
+}
+
+.glyphicon-eye-close:before{
+ content:"\e106"
+}
+
+.glyphicon-warning-sign:before{
+ content:"\e107"
+}
+
+.glyphicon-plane:before{
+ content:"\e108"
+}
+
+.glyphicon-calendar:before{
+ content:"\e109"
+}
+
+.glyphicon-random:before{
+ content:"\e110"
+}
+
+.glyphicon-comment:before{
+ content:"\e111"
+}
+
+.glyphicon-magnet:before{
+ content:"\e112"
+}
+
+.glyphicon-chevron-up:before{
+ content:"\e113"
+}
+
+.glyphicon-chevron-down:before{
+ content:"\e114"
+}
+
+.glyphicon-retweet:before{
+ content:"\e115"
+}
+
+.glyphicon-shopping-cart:before{
+ content:"\e116"
+}
+
+.glyphicon-folder-close:before{
+ content:"\e117"
+}
+
+.glyphicon-folder-open:before{
+ content:"\e118"
+}
+
+.glyphicon-resize-vertical:before{
+ content:"\e119"
+}
+
+.glyphicon-resize-horizontal:before{
+ content:"\e120"
+}
+
+.glyphicon-hdd:before{
+ content:"\e121"
+}
+
+.glyphicon-bullhorn:before{
+ content:"\e122"
+}
+
+.glyphicon-bell:before{
+ content:"\e123"
+}
+
+.glyphicon-certificate:before{
+ content:"\e124"
+}
+
+.glyphicon-thumbs-up:before{
+ content:"\e125"
+}
+
+.glyphicon-thumbs-down:before{
+ content:"\e126"
+}
+
+.glyphicon-hand-right:before{
+ content:"\e127"
+}
+
+.glyphicon-hand-left:before{
+ content:"\e128"
+}
+
+.glyphicon-hand-up:before{
+ content:"\e129"
+}
+
+.glyphicon-hand-down:before{
+ content:"\e130"
+}
+
+.glyphicon-circle-arrow-right:before{
+ content:"\e131"
+}
+
+.glyphicon-circle-arrow-left:before{
+ content:"\e132"
+}
+
+.glyphicon-circle-arrow-up:before{
+ content:"\e133"
+}
+
+.glyphicon-circle-arrow-down:before{
+ content:"\e134"
+}
+
+.glyphicon-globe:before{
+ content:"\e135"
+}
+
+.glyphicon-wrench:before{
+ content:"\e136"
+}
+
+.glyphicon-tasks:before{
+ content:"\e137"
+}
+
+.glyphicon-filter:before{
+ content:"\e138"
+}
+
+.glyphicon-briefcase:before{
+ content:"\e139"
+}
+
+.glyphicon-fullscreen:before{
+ content:"\e140"
+}
+
+.glyphicon-dashboard:before{
+ content:"\e141"
+}
+
+.glyphicon-paperclip:before{
+ content:"\e142"
+}
+
+.glyphicon-heart-empty:before{
+ content:"\e143"
+}
+
+.glyphicon-link:before{
+ content:"\e144"
+}
+
+.glyphicon-phone:before{
+ content:"\e145"
+}
+
+.glyphicon-pushpin:before{
+ content:"\e146"
+}
+
+.glyphicon-usd:before{
+ content:"\e148"
+}
+
+.glyphicon-gbp:before{
+ content:"\e149"
+}
+
+.glyphicon-sort:before{
+ content:"\e150"
+}
+
+.glyphicon-sort-by-alphabet:before{
+ content:"\e151"
+}
+
+.glyphicon-sort-by-alphabet-alt:before{
+ content:"\e152"
+}
+
+.glyphicon-sort-by-order:before{
+ content:"\e153"
+}
+
+.glyphicon-sort-by-order-alt:before{
+ content:"\e154"
+}
+
+.glyphicon-sort-by-attributes:before{
+ content:"\e155"
+}
+
+.glyphicon-sort-by-attributes-alt:before{
+ content:"\e156"
+}
+
+.glyphicon-unchecked:before{
+ content:"\e157"
+}
+
+.glyphicon-expand:before{
+ content:"\e158"
+}
+
+.glyphicon-collapse-down:before{
+ content:"\e159"
+}
+
+.glyphicon-collapse-up:before{
+ content:"\e160"
+}
+
+.glyphicon-log-in:before{
+ content:"\e161"
+}
+
+.glyphicon-flash:before{
+ content:"\e162"
+}
+
+.glyphicon-log-out:before{
+ content:"\e163"
+}
+
+.glyphicon-new-window:before{
+ content:"\e164"
+}
+
+.glyphicon-record:before{
+ content:"\e165"
+}
+
+.glyphicon-save:before{
+ content:"\e166"
+}
+
+.glyphicon-open:before{
+ content:"\e167"
+}
+
+.glyphicon-saved:before{
+ content:"\e168"
+}
+
+.glyphicon-import:before{
+ content:"\e169"
+}
+
+.glyphicon-export:before{
+ content:"\e170"
+}
+
+.glyphicon-send:before{
+ content:"\e171"
+}
+
+.glyphicon-floppy-disk:before{
+ content:"\e172"
+}
+
+.glyphicon-floppy-saved:before{
+ content:"\e173"
+}
+
+.glyphicon-floppy-remove:before{
+ content:"\e174"
+}
+
+.glyphicon-floppy-save:before{
+ content:"\e175"
+}
+
+.glyphicon-floppy-open:before{
+ content:"\e176"
+}
+
+.glyphicon-credit-card:before{
+ content:"\e177"
+}
+
+.glyphicon-transfer:before{
+ content:"\e178"
+}
+
+.glyphicon-cutlery:before{
+ content:"\e179"
+}
+
+.glyphicon-header:before{
+ content:"\e180"
+}
+
+.glyphicon-compressed:before{
+ content:"\e181"
+}
+
+.glyphicon-earphone:before{
+ content:"\e182"
+}
+
+.glyphicon-phone-alt:before{
+ content:"\e183"
+}
+
+.glyphicon-tower:before{
+ content:"\e184"
+}
+
+.glyphicon-stats:before{
+ content:"\e185"
+}
+
+.glyphicon-sd-video:before{
+ content:"\e186"
+}
+
+.glyphicon-hd-video:before{
+ content:"\e187"
+}
+
+.glyphicon-subtitles:before{
+ content:"\e188"
+}
+
+.glyphicon-sound-stereo:before{
+ content:"\e189"
+}
+
+.glyphicon-sound-dolby:before{
+ content:"\e190"
+}
+
+.glyphicon-sound-5-1:before{
+ content:"\e191"
+}
+
+.glyphicon-sound-6-1:before{
+ content:"\e192"
+}
+
+.glyphicon-sound-7-1:before{
+ content:"\e193"
+}
+
+.glyphicon-copyright-mark:before{
+ content:"\e194"
+}
+
+.glyphicon-registration-mark:before{
+ content:"\e195"
+}
+
+.glyphicon-cloud-download:before{
+ content:"\e197"
+}
+
+.glyphicon-cloud-upload:before{
+ content:"\e198"
+}
+
+.glyphicon-tree-conifer:before{
+ content:"\e199"
+}
+
+.glyphicon-tree-deciduous:before{
+ content:"\e200"
+}
+
+.glyphicon-cd:before{
+ content:"\e201"
+}
+
+.glyphicon-save-file:before{
+ content:"\e202"
+}
+
+.glyphicon-open-file:before{
+ content:"\e203"
+}
+
+.glyphicon-level-up:before{
+ content:"\e204"
+}
+
+.glyphicon-copy:before{
+ content:"\e205"
+}
+
+.glyphicon-paste:before{
+ content:"\e206"
+}
+
+.glyphicon-alert:before{
+ content:"\e209"
+}
+
+.glyphicon-equalizer:before{
+ content:"\e210"
+}
+
+.glyphicon-king:before{
+ content:"\e211"
+}
+
+.glyphicon-queen:before{
+ content:"\e212"
+}
+
+.glyphicon-pawn:before{
+ content:"\e213"
+}
+
+.glyphicon-bishop:before{
+ content:"\e214"
+}
+
+.glyphicon-knight:before{
+ content:"\e215"
+}
+
+.glyphicon-baby-formula:before{
+ content:"\e216"
+}
+
+.glyphicon-tent:before{
+ content:"\26fa"
+}
+
+.glyphicon-blackboard:before{
+ content:"\e218"
+}
+
+.glyphicon-bed:before{
+ content:"\e219"
+}
+
+.glyphicon-apple:before{
+ content:"\f8ff"
+}
+
+.glyphicon-erase:before{
+ content:"\e221"
+}
+
+.glyphicon-hourglass:before{
+ content:"\231b"
+}
+
+.glyphicon-lamp:before{
+ content:"\e223"
+}
+
+.glyphicon-duplicate:before{
+ content:"\e224"
+}
+
+.glyphicon-piggy-bank:before{
+ content:"\e225"
+}
+
+.glyphicon-scissors:before{
+ content:"\e226"
+}
+
+.glyphicon-bitcoin:before{
+ content:"\e227"
+}
+
+.glyphicon-btc:before{
+ content:"\e227"
+}
+
+.glyphicon-xbt:before{
+ content:"\e227"
+}
+
+.glyphicon-yen:before{
+ content:"\00a5"
+}
+
+.glyphicon-jpy:before{
+ content:"\00a5"
+}
+
+.glyphicon-ruble:before{
+ content:"\20bd"
+}
+
+.glyphicon-rub:before{
+ content:"\20bd"
+}
+
+.glyphicon-scale:before{
+ content:"\e230"
+}
+
+.glyphicon-ice-lolly:before{
+ content:"\e231"
+}
+
+.glyphicon-ice-lolly-tasted:before{
+ content:"\e232"
+}
+
+.glyphicon-education:before{
+ content:"\e233"
+}
+
+.glyphicon-option-horizontal:before{
+ content:"\e234"
+}
+
+.glyphicon-option-vertical:before{
+ content:"\e235"
+}
+
+.glyphicon-menu-hamburger:before{
+ content:"\e236"
+}
+
+.glyphicon-modal-window:before{
+ content:"\e237"
+}
+
+.glyphicon-oil:before{
+ content:"\e238"
+}
+
+.glyphicon-grain:before{
+ content:"\e239"
+}
+
+.glyphicon-sunglasses:before{
+ content:"\e240"
+}
+
+.glyphicon-text-size:before{
+ content:"\e241"
+}
+
+.glyphicon-text-color:before{
+ content:"\e242"
+}
+
+.glyphicon-text-background:before{
+ content:"\e243"
+}
+
+.glyphicon-object-align-top:before{
+ content:"\e244"
+}
+
+.glyphicon-object-align-bottom:before{
+ content:"\e245"
+}
+
+.glyphicon-object-align-horizontal:before{
+ content:"\e246"
+}
+
+.glyphicon-object-align-left:before{
+ content:"\e247"
+}
+
+.glyphicon-object-align-vertical:before{
+ content:"\e248"
+}
+
+.glyphicon-object-align-right:before{
+ content:"\e249"
+}
+
+.glyphicon-triangle-right:before{
+ content:"\e250"
+}
+
+.glyphicon-triangle-left:before{
+ content:"\e251"
+}
+
+.glyphicon-triangle-bottom:before{
+ content:"\e252"
+}
+
+.glyphicon-triangle-top:before{
+ content:"\e253"
+}
+
+.glyphicon-console:before{
+ content:"\e254"
+}
+
+.glyphicon-superscript:before{
+ content:"\e255"
+}
+
+.glyphicon-subscript:before{
+ content:"\e256"
+}
+
+.glyphicon-menu-left:before{
+ content:"\e257"
+}
+
+.glyphicon-menu-right:before{
+ content:"\e258"
+}
+
+.glyphicon-menu-down:before{
+ content:"\e259"
+}
+
+.glyphicon-menu-up:before{
+ content:"\e260"
+}
+
+*{
+ -webkit-box-sizing:border-box;
+ -moz-box-sizing:border-box;
+ box-sizing:border-box
+}
+
+:after,:before{
+ -webkit-box-sizing:border-box;
+ -moz-box-sizing:border-box;
+ box-sizing:border-box
+}
+
+html{
+ font-size:10px;
+ -webkit-tap-highlight-color:rgba(0,0,0,0)
+}
+
+body{
+ font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size:14px;
+ line-height:1.42857143;
+ color:#333;
+ background-color:#fff
+}
+
+button,input,select,textarea{
+ font-family:inherit;
+ font-size:inherit;
+ line-height:inherit
+}
+
+a{
+ color:#337ab7;
+ text-decoration:none
+}
+
+a:focus,a:hover{
+ color:#23527c;
+ text-decoration:underline
+}
+
+a:focus{
+ outline:thin dotted;
+ outline:5px auto -webkit-focus-ring-color;
+ outline-offset:-2px
+}
+
+figure{
+ margin:0
+}
+
+img{
+ vertical-align:middle
+}
+
+.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{
+ display:block;
+ max-width:100%;
+ height:auto
+}
+
+.img-rounded{
+ border-radius:6px
+}
+
+.img-thumbnail{
+ display:inline-block;
+ max-width:100%;
+ height:auto;
+ padding:4px;
+ line-height:1.42857143;
+ background-color:#fff;
+ border:1px solid #ddd;
+ border-radius:4px;
+ -webkit-transition:all .2s ease-in-out;
+ -o-transition:all .2s ease-in-out;
+ transition:all .2s ease-in-out
+}
+
+.img-circle{
+ border-radius:50%
+}
+
+hr{
+ margin-top:20px;
+ margin-bottom:20px;
+ border:0;
+ border-top:1px solid #eee
+}
+
+.sr-only{
+ position:absolute;
+ width:1px;
+ height:1px;
+ padding:0;
+ margin:-1px;
+ overflow:hidden;
+ clip:rect(0,0,0,0);
+ border:0
+}
+
+.sr-only-focusable:active,.sr-only-focusable:focus{
+ position:static;
+ width:auto;
+ height:auto;
+ margin:0;
+ overflow:visible;
+ clip:auto
+}
+
+[role=button]{
+ cursor:pointer
+}
+
+.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{
+ font-family:inherit;
+ font-weight:500;
+ line-height:1.1;
+ color:inherit
+}
+
+.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
+ font-weight:400;
+ line-height:1;
+ color:#777
+}
+
+.h1,.h2,.h3,h1,h2,h3{
+ margin-top:20px;
+ margin-bottom:10px
+}
+
+.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{
+ font-size:65%
+}
+
+.h4,.h5,.h6,h4,h5,h6{
+ margin-top:10px;
+ margin-bottom:10px
+}
+
+.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
+ font-size:75%
+}
+
+.h1,h1{
+ font-size:36px
+}
+
+.h2,h2{
+ font-size:30px
+}
+
+.h3,h3{
+ font-size:24px
+}
+
+.h4,h4{
+ font-size:18px
+}
+
+.h5,h5{
+ font-size:14px
+}
+
+.h6,h6{
+ font-size:12px
+}
+
+p{
+ margin:0 0 10px
+}
+
+.lead{
+ margin-bottom:20px;
+ font-size:16px;
+ font-weight:300;
+ line-height:1.4
+}
+
+@media (min-width:768px){
+ .lead{
+ font-size:21px
+ }
+
+}
+
+.small,small{
+ font-size:85%
+}
+
+.mark,mark{
+ padding:.2em;
+ background-color:#fcf8e3
+}
+
+.text-left{
+ text-align:left
+}
+
+.text-right{
+ text-align:right
+}
+
+.text-center{
+ text-align:center
+}
+
+.text-justify{
+ text-align:justify
+}
+
+.text-nowrap{
+ white-space:nowrap
+}
+
+.text-lowercase{
+ text-transform:lowercase
+}
+
+.text-uppercase{
+ text-transform:uppercase
+}
+
+.text-capitalize{
+ text-transform:capitalize
+}
+
+.text-muted{
+ color:#777
+}
+
+.text-primary{
+ color:#337ab7
+}
+
+a.text-primary:focus,a.text-primary:hover{
+ color:#286090
+}
+
+.text-success{
+ color:#3c763d
+}
+
+a.text-success:focus,a.text-success:hover{
+ color:#2b542c
+}
+
+.text-info{
+ color:#31708f
+}
+
+a.text-info:focus,a.text-info:hover{
+ color:#245269
+}
+
+.text-warning{
+ color:#8a6d3b
+}
+
+a.text-warning:focus,a.text-warning:hover{
+ color:#66512c
+}
+
+.text-danger{
+ color:#a94442
+}
+
+a.text-danger:focus,a.text-danger:hover{
+ color:#843534
+}
+
+.bg-primary{
+ color:#fff;
+ background-color:#337ab7
+}
+
+a.bg-primary:focus,a.bg-primary:hover{
+ background-color:#286090
+}
+
+.bg-success{
+ background-color:#dff0d8
+}
+
+a.bg-success:focus,a.bg-success:hover{
+ background-color:#c1e2b3
+}
+
+.bg-info{
+ background-color:#d9edf7
+}
+
+a.bg-info:focus,a.bg-info:hover{
+ background-color:#afd9ee
+}
+
+.bg-warning{
+ background-color:#fcf8e3
+}
+
+a.bg-warning:focus,a.bg-warning:hover{
+ background-color:#f7ecb5
+}
+
+.bg-danger{
+ background-color:#f2dede
+}
+
+a.bg-danger:focus,a.bg-danger:hover{
+ background-color:#e4b9b9
+}
+
+.page-header{
+ padding-bottom:9px;
+ margin:40px 0 20px;
+ border-bottom:1px solid #eee
+}
+
+ol,ul{
+ margin-top:0;
+ margin-bottom:10px
+}
+
+ol ol,ol ul,ul ol,ul ul{
+ margin-bottom:0
+}
+
+.list-unstyled{
+ padding-left:0;
+ list-style:none
+}
+
+.list-inline{
+ padding-left:0;
+ margin-left:-5px;
+ list-style:none
+}
+
+.list-inline>li{
+ display:inline-block;
+ padding-right:5px;
+ padding-left:5px
+}
+
+dl{
+ margin-top:0;
+ margin-bottom:20px
+}
+
+dd,dt{
+ line-height:1.42857143
+}
+
+dt{
+ font-weight:700
+}
+
+dd{
+ margin-left:0
+}
+
+@media (min-width:768px){
+ .dl-horizontal dt{
+ float:left;
+ width:160px;
+ overflow:hidden;
+ clear:left;
+ text-align:right;
+ text-overflow:ellipsis;
+ white-space:nowrap
+ }
+
+ .dl-horizontal dd{
+ margin-left:180px
+ }
+
+}
+
+abbr[data-original-title],abbr[title]{
+ cursor:help;
+ border-bottom:1px dotted #777
+}
+
+.initialism{
+ font-size:90%;
+ text-transform:uppercase
+}
+
+blockquote{
+ padding:10px 20px;
+ margin:0 0 20px;
+ font-size:17.5px;
+ border-left:5px solid #eee
+}
+
+blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{
+ margin-bottom:0
+}
+
+blockquote .small,blockquote footer,blockquote small{
+ display:block;
+ font-size:80%;
+ line-height:1.42857143;
+ color:#777
+}
+
+blockquote .small:before,blockquote footer:before,blockquote small:before{
+ content:'\2014 \00A0'
+}
+
+.blockquote-reverse,blockquote.pull-right{
+ padding-right:15px;
+ padding-left:0;
+ text-align:right;
+ border-right:5px solid #eee;
+ border-left:0
+}
+
+.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{
+ content:''
+}
+
+.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{
+ content:'\00A0 \2014'
+}
+
+address{
+ margin-bottom:20px;
+ font-style:normal;
+ line-height:1.42857143
+}
+
+code,kbd,pre,samp{
+ font-family:Menlo,Monaco,Consolas,"Courier New",monospace
+}
+
+code{
+ padding:2px 4px;
+ font-size:90%;
+ color:#c7254e;
+ background-color:#f9f2f4;
+ border-radius:4px
+}
+
+kbd{
+ padding:2px 4px;
+ font-size:90%;
+ color:#fff;
+ background-color:#333;
+ border-radius:3px;
+ -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);
+ box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)
+}
+
+kbd kbd{
+ padding:0;
+ font-size:100%;
+ font-weight:700;
+ -webkit-box-shadow:none;
+ box-shadow:none
+}
+
+pre{
+ display:block;
+ padding:9.5px;
+ margin:0 0 10px;
+ font-size:13px;
+ line-height:1.42857143;
+ color:#333;
+ word-break:break-all;
+ word-wrap:break-word;
+ background-color:#f5f5f5;
+ border:1px solid #ccc;
+ border-radius:4px
+}
+
+pre code{
+ padding:0;
+ font-size:inherit;
+ color:inherit;
+ white-space:pre-wrap;
+ background-color:transparent;
+ border-radius:0
+}
+
+.pre-scrollable{
+ max-height:340px;
+ overflow-y:scroll
+}
+
+.container{
+ padding-right:15px;
+ padding-left:15px;
+ margin-right:auto;
+ margin-left:auto
+}
+
+@media (min-width:768px){
+ .container{
+ width:750px
+ }
+
+}
+
+@media (min-width:992px){
+ .container{
+ width:970px
+ }
+
+}
+
+@media (min-width:1200px){
+ .container{
+ width:1170px
+ }
+
+}
+
+.container-fluid{
+ padding-right:15px;
+ padding-left:15px;
+ margin-right:auto;
+ margin-left:auto
+}
+
+.row{
+ margin-right:-15px;
+ margin-left:-15px
+}
+
+.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
+ position:relative;
+ min-height:1px;
+ padding-right:15px;
+ padding-left:15px
+}
+
+.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
+ float:left
+}
+
+.col-xs-12{
+ width:100%
+}
+
+.col-xs-11{
+ width:91.66666667%
+}
+
+.col-xs-10{
+ width:83.33333333%
+}
+
+.col-xs-9{
+ width:75%
+}
+
+.col-xs-8{
+ width:66.66666667%
+}
+
+.col-xs-7{
+ width:58.33333333%
+}
+
+.col-xs-6{
+ width:50%
+}
+
+.col-xs-5{
+ width:41.66666667%
+}
+
+.col-xs-4{
+ width:33.33333333%
+}
+
+.col-xs-3{
+ width:25%
+}
+
+.col-xs-2{
+ width:16.66666667%
+}
+
+.col-xs-1{
+ width:8.33333333%
+}
+
+.col-xs-pull-12{
+ right:100%
+}
+
+.col-xs-pull-11{
+ right:91.66666667%
+}
+
+.col-xs-pull-10{
+ right:83.33333333%
+}
+
+.col-xs-pull-9{
+ right:75%
+}
+
+.col-xs-pull-8{
+ right:66.66666667%
+}
+
+.col-xs-pull-7{
+ right:58.33333333%
+}
+
+.col-xs-pull-6{
+ right:50%
+}
+
+.col-xs-pull-5{
+ right:41.66666667%
+}
+
+.col-xs-pull-4{
+ right:33.33333333%
+}
+
+.col-xs-pull-3{
+ right:25%
+}
+
+.col-xs-pull-2{
+ right:16.66666667%
+}
+
+.col-xs-pull-1{
+ right:8.33333333%
+}
+
+.col-xs-pull-0{
+ right:auto
+}
+
+.col-xs-push-12{
+ left:100%
+}
+
+.col-xs-push-11{
+ left:91.66666667%
+}
+
+.col-xs-push-10{
+ left:83.33333333%
+}
+
+.col-xs-push-9{
+ left:75%
+}
+
+.col-xs-push-8{
+ left:66.66666667%
+}
+
+.col-xs-push-7{
+ left:58.33333333%
+}
+
+.col-xs-push-6{
+ left:50%
+}
+
+.col-xs-push-5{
+ left:41.66666667%
+}
+
+.col-xs-push-4{
+ left:33.33333333%
+}
+
+.col-xs-push-3{
+ left:25%
+}
+
+.col-xs-push-2{
+ left:16.66666667%
+}
+
+.col-xs-push-1{
+ left:8.33333333%
+}
+
+.col-xs-push-0{
+ left:auto
+}
+
+.col-xs-offset-12{
+ margin-left:100%
+}
+
+.col-xs-offset-11{
+ margin-left:91.66666667%
+}
+
+.col-xs-offset-10{
+ margin-left:83.33333333%
+}
+
+.col-xs-offset-9{
+ margin-left:75%
+}
+
+.col-xs-offset-8{
+ margin-left:66.66666667%
+}
+
+.col-xs-offset-7{
+ margin-left:58.33333333%
+}
+
+.col-xs-offset-6{
+ margin-left:50%
+}
+
+.col-xs-offset-5{
+ margin-left:41.66666667%
+}
+
+.col-xs-offset-4{
+ margin-left:33.33333333%
+}
+
+.col-xs-offset-3{
+ margin-left:25%
+}
+
+.col-xs-offset-2{
+ margin-left:16.66666667%
+}
+
+.col-xs-offset-1{
+ margin-left:8.33333333%
+}
+
+.col-xs-offset-0{
+ margin-left:0
+}
+
+@media (min-width:768px){
+ .col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{
+ float:left
+ }
+
+ .col-sm-12{
+ width:100%
+ }
+
+ .col-sm-11{
+ width:91.66666667%
+ }
+
+ .col-sm-10{
+ width:83.33333333%
+ }
+
+ .col-sm-9{
+ width:75%
+ }
+
+ .col-sm-8{
+ width:66.66666667%
+ }
+
+ .col-sm-7{
+ width:58.33333333%
+ }
+
+ .col-sm-6{
+ width:50%
+ }
+
+ .col-sm-5{
+ width:41.66666667%
+ }
+
+ .col-sm-4{
+ width:33.33333333%
+ }
+
+ .col-sm-3{
+ width:25%
+ }
+
+ .col-sm-2{
+ width:16.66666667%
+ }
+
+ .col-sm-1{
+ width:8.33333333%
+ }
+
+ .col-sm-pull-12{
+ right:100%
+ }
+
+ .col-sm-pull-11{
+ right:91.66666667%
+ }
+
+ .col-sm-pull-10{
+ right:83.33333333%
+ }
+
+ .col-sm-pull-9{
+ right:75%
+ }
+
+ .col-sm-pull-8{
+ right:66.66666667%
+ }
+
+ .col-sm-pull-7{
+ right:58.33333333%
+ }
+
+ .col-sm-pull-6{
+ right:50%
+ }
+
+ .col-sm-pull-5{
+ right:41.66666667%
+ }
+
+ .col-sm-pull-4{
+ right:33.33333333%
+ }
+
+ .col-sm-pull-3{
+ right:25%
+ }
+
+ .col-sm-pull-2{
+ right:16.66666667%
+ }
+
+ .col-sm-pull-1{
+ right:8.33333333%
+ }
+
+ .col-sm-pull-0{
+ right:auto
+ }
+
+ .col-sm-push-12{
+ left:100%
+ }
+
+ .col-sm-push-11{
+ left:91.66666667%
+ }
+
+ .col-sm-push-10{
+ left:83.33333333%
+ }
+
+ .col-sm-push-9{
+ left:75%
+ }
+
+ .col-sm-push-8{
+ left:66.66666667%
+ }
+
+ .col-sm-push-7{
+ left:58.33333333%
+ }
+
+ .col-sm-push-6{
+ left:50%
+ }
+
+ .col-sm-push-5{
+ left:41.66666667%
+ }
+
+ .col-sm-push-4{
+ left:33.33333333%
+ }
+
+ .col-sm-push-3{
+ left:25%
+ }
+
+ .col-sm-push-2{
+ left:16.66666667%
+ }
+
+ .col-sm-push-1{
+ left:8.33333333%
+ }
+
+ .col-sm-push-0{
+ left:auto
+ }
+
+ .col-sm-offset-12{
+ margin-left:100%
+ }
+
+ .col-sm-offset-11{
+ margin-left:91.66666667%
+ }
+
+ .col-sm-offset-10{
+ margin-left:83.33333333%
+ }
+
+ .col-sm-offset-9{
+ margin-left:75%
+ }
+
+ .col-sm-offset-8{
+ margin-left:66.66666667%
+ }
+
+ .col-sm-offset-7{
+ margin-left:58.33333333%
+ }
+
+ .col-sm-offset-6{
+ margin-left:50%
+ }
+
+ .col-sm-offset-5{
+ margin-left:41.66666667%
+ }
+
+ .col-sm-offset-4{
+ margin-left:33.33333333%
+ }
+
+ .col-sm-offset-3{
+ margin-left:25%
+ }
+
+ .col-sm-offset-2{
+ margin-left:16.66666667%
+ }
+
+ .col-sm-offset-1{
+ margin-left:8.33333333%
+ }
+
+ .col-sm-offset-0{
+ margin-left:0
+ }
+
+}
+
+@media (min-width:992px){
+ .col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{
+ float:left
+ }
+
+ .col-md-12{
+ width:100%
+ }
+
+ .col-md-11{
+ width:91.66666667%
+ }
+
+ .col-md-10{
+ width:83.33333333%
+ }
+
+ .col-md-9{
+ width:75%
+ }
+
+ .col-md-8{
+ width:66.66666667%
+ }
+
+ .col-md-7{
+ width:58.33333333%
+ }
+
+ .col-md-6{
+ width:50%
+ }
+
+ .col-md-5{
+ width:41.66666667%
+ }
+
+ .col-md-4{
+ width:33.33333333%
+ }
+
+ .col-md-3{
+ width:25%
+ }
+
+ .col-md-2{
+ width:16.66666667%
+ }
+
+ .col-md-1{
+ width:8.33333333%
+ }
+
+ .col-md-pull-12{
+ right:100%
+ }
+
+ .col-md-pull-11{
+ right:91.66666667%
+ }
+
+ .col-md-pull-10{
+ right:83.33333333%
+ }
+
+ .col-md-pull-9{
+ right:75%
+ }
+
+ .col-md-pull-8{
+ right:66.66666667%
+ }
+
+ .col-md-pull-7{
+ right:58.33333333%
+ }
+
+ .col-md-pull-6{
+ right:50%
+ }
+
+ .col-md-pull-5{
+ right:41.66666667%
+ }
+
+ .col-md-pull-4{
+ right:33.33333333%
+ }
+
+ .col-md-pull-3{
+ right:25%
+ }
+
+ .col-md-pull-2{
+ right:16.66666667%
+ }
+
+ .col-md-pull-1{
+ right:8.33333333%
+ }
+
+ .col-md-pull-0{
+ right:auto
+ }
+
+ .col-md-push-12{
+ left:100%
+ }
+
+ .col-md-push-11{
+ left:91.66666667%
+ }
+
+ .col-md-push-10{
+ left:83.33333333%
+ }
+
+ .col-md-push-9{
+ left:75%
+ }
+
+ .col-md-push-8{
+ left:66.66666667%
+ }
+
+ .col-md-push-7{
+ left:58.33333333%
+ }
+
+ .col-md-push-6{
+ left:50%
+ }
+
+ .col-md-push-5{
+ left:41.66666667%
+ }
+
+ .col-md-push-4{
+ left:33.33333333%
+ }
+
+ .col-md-push-3{
+ left:25%
+ }
+
+ .col-md-push-2{
+ left:16.66666667%
+ }
+
+ .col-md-push-1{
+ left:8.33333333%
+ }
+
+ .col-md-push-0{
+ left:auto
+ }
+
+ .col-md-offset-12{
+ margin-left:100%
+ }
+
+ .col-md-offset-11{
+ margin-left:91.66666667%
+ }
+
+ .col-md-offset-10{
+ margin-left:83.33333333%
+ }
+
+ .col-md-offset-9{
+ margin-left:75%
+ }
+
+ .col-md-offset-8{
+ margin-left:66.66666667%
+ }
+
+ .col-md-offset-7{
+ margin-left:58.33333333%
+ }
+
+ .col-md-offset-6{
+ margin-left:50%
+ }
+
+ .col-md-offset-5{
+ margin-left:41.66666667%
+ }
+
+ .col-md-offset-4{
+ margin-left:33.33333333%
+ }
+
+ .col-md-offset-3{
+ margin-left:25%
+ }
+
+ .col-md-offset-2{
+ margin-left:16.66666667%
+ }
+
+ .col-md-offset-1{
+ margin-left:8.33333333%
+ }
+
+ .col-md-offset-0{
+ margin-left:0
+ }
+
+}
+
+@media (min-width:1200px){
+ .col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{
+ float:left
+ }
+
+ .col-lg-12{
+ width:100%
+ }
+
+ .col-lg-11{
+ width:91.66666667%
+ }
+
+ .col-lg-10{
+ width:83.33333333%
+ }
+
+ .col-lg-9{
+ width:75%
+ }
+
+ .col-lg-8{
+ width:66.66666667%
+ }
+
+ .col-lg-7{
+ width:58.33333333%
+ }
+
+ .col-lg-6{
+ width:50%
+ }
+
+ .col-lg-5{
+ width:41.66666667%
+ }
+
+ .col-lg-4{
+ width:33.33333333%
+ }
+
+ .col-lg-3{
+ width:25%
+ }
+
+ .col-lg-2{
+ width:16.66666667%
+ }
+
+ .col-lg-1{
+ width:8.33333333%
+ }
+
+ .col-lg-pull-12{
+ right:100%
+ }
+
+ .col-lg-pull-11{
+ right:91.66666667%
+ }
+
+ .col-lg-pull-10{
+ right:83.33333333%
+ }
+
+ .col-lg-pull-9{
+ right:75%
+ }
+
+ .col-lg-pull-8{
+ right:66.66666667%
+ }
+
+ .col-lg-pull-7{
+ right:58.33333333%
+ }
+
+ .col-lg-pull-6{
+ right:50%
+ }
+
+ .col-lg-pull-5{
+ right:41.66666667%
+ }
+
+ .col-lg-pull-4{
+ right:33.33333333%
+ }
+
+ .col-lg-pull-3{
+ right:25%
+ }
+
+ .col-lg-pull-2{
+ right:16.66666667%
+ }
+
+ .col-lg-pull-1{
+ right:8.33333333%
+ }
+
+ .col-lg-pull-0{
+ right:auto
+ }
+
+ .col-lg-push-12{
+ left:100%
+ }
+
+ .col-lg-push-11{
+ left:91.66666667%
+ }
+
+ .col-lg-push-10{
+ left:83.33333333%
+ }
+
+ .col-lg-push-9{
+ left:75%
+ }
+
+ .col-lg-push-8{
+ left:66.66666667%
+ }
+
+ .col-lg-push-7{
+ left:58.33333333%
+ }
+
+ .col-lg-push-6{
+ left:50%
+ }
+
+ .col-lg-push-5{
+ left:41.66666667%
+ }
+
+ .col-lg-push-4{
+ left:33.33333333%
+ }
+
+ .col-lg-push-3{
+ left:25%
+ }
+
+ .col-lg-push-2{
+ left:16.66666667%
+ }
+
+ .col-lg-push-1{
+ left:8.33333333%
+ }
+
+ .col-lg-push-0{
+ left:auto
+ }
+
+ .col-lg-offset-12{
+ margin-left:100%
+ }
+
+ .col-lg-offset-11{
+ margin-left:91.66666667%
+ }
+
+ .col-lg-offset-10{
+ margin-left:83.33333333%
+ }
+
+ .col-lg-offset-9{
+ margin-left:75%
+ }
+
+ .col-lg-offset-8{
+ margin-left:66.66666667%
+ }
+
+ .col-lg-offset-7{
+ margin-left:58.33333333%
+ }
+
+ .col-lg-offset-6{
+ margin-left:50%
+ }
+
+ .col-lg-offset-5{
+ margin-left:41.66666667%
+ }
+
+ .col-lg-offset-4{
+ margin-left:33.33333333%
+ }
+
+ .col-lg-offset-3{
+ margin-left:25%
+ }
+
+ .col-lg-offset-2{
+ margin-left:16.66666667%
+ }
+
+ .col-lg-offset-1{
+ margin-left:8.33333333%
+ }
+
+ .col-lg-offset-0{
+ margin-left:0
+ }
+
+}
+
+table{
+ background-color:transparent
+}
+
+caption{
+ padding-top:8px;
+ padding-bottom:8px;
+ color:#777;
+ text-align:left
+}
+
+th{
+ text-align:left
+}
+
+.table{
+ width:100%;
+ max-width:100%;
+ margin-bottom:20px
+}
+
+.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{
+ padding:8px;
+ line-height:1.42857143;
+ vertical-align:top;
+ border-top:1px solid #ddd
+}
+
+.table>thead>tr>th{
+ vertical-align:bottom;
+ border-bottom:2px solid #ddd
+}
+
+.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{
+ border-top:0
+}
+
+.table>tbody+tbody{
+ border-top:2px solid #ddd
+}
+
+.table .table{
+ background-color:#fff
+}
+
+.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{
+ padding:5px
+}
+
+.table-bordered{
+ border:1px solid #ddd
+}
+
+.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
+ border:1px solid #ddd
+}
+
+.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
+ border-bottom-width:2px
+}
+
+.table-striped>tbody>tr:nth-of-type(odd){
+ background-color:#f9f9f9
+}
+
+.table-hover>tbody>tr:hover{
+ background-color:#f5f5f5
+}
+
+table col[class*=col-]{
+ position:static;
+ display:table-column;
+ float:none
+}
+
+table td[class*=col-],table th[class*=col-]{
+ position:static;
+ display:table-cell;
+ float:none
+}
+
+.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{
+ background-color:#f5f5f5
+}
+
+.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{
+ background-color:#e8e8e8
+}
+
+.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{
+ background-color:#dff0d8
+}
+
+.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{
+ background-color:#d0e9c6
+}
+
+.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{
+ background-color:#d9edf7
+}
+
+.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{
+ background-color:#c4e3f3
+}
+
+.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{
+ background-color:#fcf8e3
+}
+
+.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{
+ background-color:#faf2cc
+}
+
+.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{
+ background-color:#f2dede
+}
+
+.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{
+ background-color:#ebcccc
+}
+
+.table-responsive{
+ min-height:.01%;
+ overflow-x:auto
+}
+
+@media screen and (max-width:767px){
+ .table-responsive{
+ width:100%;
+ margin-bottom:15px;
+ overflow-y:hidden;
+ -ms-overflow-style:-ms-autohiding-scrollbar;
+ border:1px solid #ddd
+ }
+
+ .table-responsive>.table{
+ margin-bottom:0
+ }
+
+ .table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{
+ white-space:nowrap
+ }
+
+ .table-responsive>.table-bordered{
+ border:0
+ }
+
+ .table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{
+ border-left:0
+ }
+
+ .table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{
+ border-right:0
+ }
+
+ .table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{
+ border-bottom:0
+ }
+
+}
+
+fieldset{
+ min-width:0;
+ padding:0;
+ margin:0;
+ border:0
+}
+
+legend{
+ display:block;
+ width:100%;
+ padding:0;
+ margin-bottom:20px;
+ font-size:21px;
+ line-height:inherit;
+ color:#333;
+ border:0;
+ border-bottom:1px solid #e5e5e5
+}
+
+label{
+ display:inline-block;
+ max-width:100%;
+ margin-bottom:5px;
+ font-weight:700
+}
+
+input[type=search]{
+ -webkit-box-sizing:border-box;
+ -moz-box-sizing:border-box;
+ box-sizing:border-box
+}
+
+input[type=checkbox],input[type=radio]{
+ margin:4px 0 0;
+ margin-top:1px\9;
+ line-height:normal
+}
+
+input[type=file]{
+ display:block
+}
+
+input[type=range]{
+ display:block;
+ width:100%
+}
+
+select[multiple],select[size]{
+ height:auto
+}
+
+input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{
+ outline:thin dotted;
+ outline:5px auto -webkit-focus-ring-color;
+ outline-offset:-2px
+}
+
+output{
+ display:block;
+ padding-top:7px;
+ font-size:14px;
+ line-height:1.42857143;
+ color:#555
+}
+
+.form-control{
+ display:block;
+ width:100%;
+ height:34px;
+ padding:6px 12px;
+ font-size:14px;
+ line-height:1.42857143;
+ color:#555;
+ background-color:#fff;
+ background-image:none;
+ border:1px solid #ccc;
+ border-radius:4px;
+ -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
+ box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
+ -webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
+ -o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;
+ transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s
+}
+
+.form-control:focus{
+ border-color:#66afe9;
+ outline:0;
+ -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
+ box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)
+}
+
+.form-control::-moz-placeholder{
+ color:#999;
+ opacity:1
+}
+
+.form-control:-ms-input-placeholder{
+ color:#999
+}
+
+.form-control::-webkit-input-placeholder{
+ color:#999
+}
+
+.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{
+ background-color:#eee;
+ opacity:1
+}
+
+.form-control[disabled],fieldset[disabled] .form-control{
+ cursor:not-allowed
+}
+
+textarea.form-control{
+ height:auto
+}
+
+input[type=search]{
+ -webkit-appearance:none
+}
+
+@media screen and (-webkit-min-device-pixel-ratio:0){
+ input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{
+ line-height:34px
+ }
+
+ .input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{
+ line-height:30px
+ }
+
+ .input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{
+ line-height:46px
+ }
+
+}
+
+.form-group{
+ margin-bottom:15px
+}
+
+.checkbox,.radio{
+ position:relative;
+ display:block;
+ margin-top:10px;
+ margin-bottom:10px
+}
+
+.checkbox label,.radio label{
+ min-height:20px;
+ padding-left:20px;
+ margin-bottom:0;
+ font-weight:400;
+ cursor:pointer
+}
+
+.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{
+ position:absolute;
+ margin-top:4px\9;
+ margin-left:-20px
+}
+
+.checkbox+.checkbox,.radio+.radio{
+ margin-top:-5px
+}
+
+.checkbox-inline,.radio-inline{
+ position:relative;
+ display:inline-block;
+ padding-left:20px;
+ margin-bottom:0;
+ font-weight:400;
+ vertical-align:middle;
+ cursor:pointer
+}
+
+.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{
+ margin-top:0;
+ margin-left:10px
+}
+
+fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{
+ cursor:not-allowed
+}
+
+.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{
+ cursor:not-allowed
+}
+
+.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{
+ cursor:not-allowed
+}
+
+.form-control-static{
+ min-height:34px;
+ padding-top:7px;
+ padding-bottom:7px;
+ margin-bottom:0
+}
+
+.form-control-static.input-lg,.form-control-static.input-sm{
+ padding-right:0;
+ padding-left:0
+}
+
+.input-sm{
+ height:30px;
+ padding:5px 10px;
+ font-size:12px;
+ line-height:1.5;
+ border-radius:3px
+}
+
+select.input-sm{
+ height:30px;
+ line-height:30px
+}
+
+select[multiple].input-sm,textarea.input-sm{
+ height:auto
+}
+
+.form-group-sm .form-control{
+ height:30px;
+ padding:5px 10px;
+ font-size:12px;
+ line-height:1.5;
+ border-radius:3px
+}
+
+.form-group-sm select.form-control{
+ height:30px;
+ line-height:30px
+}
+
+.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{
+ height:auto
+}
+
+.form-group-sm .form-control-static{
+ height:30px;
+ min-height:32px;
+ padding:6px 10px;
+ font-size:12px;
+ line-height:1.5
+}
+
+.input-lg{
+ height:46px;
+ padding:10px 16px;
+ font-size:18px;
+ line-height:1.3333333;
+ border-radius:6px
+}
+
+select.input-lg{
+ height:46px;
+ line-height:46px
+}
+
+select[multiple].input-lg,textarea.input-lg{
+ height:auto
+}
+
+.form-group-lg .form-control{
+ height:46px;
+ padding:10px 16px;
+ font-size:18px;
+ line-height:1.3333333;
+ border-radius:6px
+}
+
+.form-group-lg select.form-control{
+ height:46px;
+ line-height:46px
+}
+
+.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{
+ height:auto
+}
+
+.form-group-lg .form-control-static{
+ height:46px;
+ min-height:38px;
+ padding:11px 16px;
+ font-size:18px;
+ line-height:1.3333333
+}
+
+.has-feedback{
+ position:relative
+}
+
+.has-feedback .form-control{
+ padding-right:42.5px
+}
+
+.form-control-feedback{
+ position:absolute;
+ top:0;
+ right:0;
+ z-index:2;
+ display:block;
+ width:34px;
+ height:34px;
+ line-height:34px;
+ text-align:center;
+ pointer-events:none
+}
+
+.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{
+ width:46px;
+ height:46px;
+ line-height:46px
+}
+
+.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{
+ width:30px;
+ height:30px;
+ line-height:30px
+}
+
+.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{
+ color:#3c763d
+}
+
+.has-success .form-control{
+ border-color:#3c763d;
+ -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
+ box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
+}
+
+.has-success .form-control:focus{
+ border-color:#2b542c;
+ -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;
+ box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168
+}
+
+.has-success .input-group-addon{
+ color:#3c763d;
+ background-color:#dff0d8;
+ border-color:#3c763d
+}
+
+.has-success .form-control-feedback{
+ color:#3c763d
+}
+
+.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{
+ color:#8a6d3b
+}
+
+.has-warning .form-control{
+ border-color:#8a6d3b;
+ -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
+ box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
+}
+
+.has-warning .form-control:focus{
+ border-color:#66512c;
+ -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;
+ box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b
+}
+
+.has-warning .input-group-addon{
+ color:#8a6d3b;
+ background-color:#fcf8e3;
+ border-color:#8a6d3b
+}
+
+.has-warning .form-control-feedback{
+ color:#8a6d3b
+}
+
+.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{
+ color:#a94442
+}
+
+.has-error .form-control{
+ border-color:#a94442;
+ -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
+ box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
+}
+
+.has-error .form-control:focus{
+ border-color:#843534;
+ -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;
+ box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483
+}
+
+.has-error .input-group-addon{
+ color:#a94442;
+ background-color:#f2dede;
+ border-color:#a94442
+}
+
+.has-error .form-control-feedback{
+ color:#a94442
+}
+
+.has-feedback label~.form-control-feedback{
+ top:25px
+}
+
+.has-feedback label.sr-only~.form-control-feedback{
+ top:0
+}
+
+.help-block{
+ display:block;
+ margin-top:5px;
+ margin-bottom:10px;
+ color:#737373
+}
+
+@media (min-width:768px){
+ .form-inline .form-group{
+ display:inline-block;
+ margin-bottom:0;
+ vertical-align:middle
+ }
+
+ .form-inline .form-control{
+ display:inline-block;
+ width:auto;
+ vertical-align:middle
+ }
+
+ .form-inline .form-control-static{
+ display:inline-block
+ }
+
+ .form-inline .input-group{
+ display:inline-table;
+ vertical-align:middle
+ }
+
+ .form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{
+ width:auto
+ }
+
+ .form-inline .input-group>.form-control{
+ width:100%
+ }
+
+ .form-inline .control-label{
+ margin-bottom:0;
+ vertical-align:middle
+ }
+
+ .form-inline .checkbox,.form-inline .radio{
+ display:inline-block;
+ margin-top:0;
+ margin-bottom:0;
+ vertical-align:middle
+ }
+
+ .form-inline .checkbox label,.form-inline .radio label{
+ padding-left:0
+ }
+
+ .form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{
+ position:relative;
+ margin-left:0
+ }
+
+ .form-inline .has-feedback .form-control-feedback{
+ top:0
+ }
+
+}
+
+.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{
+ padding-top:7px;
+ margin-top:0;
+ margin-bottom:0
+}
+
+.form-horizontal .checkbox,.form-horizontal .radio{
+ min-height:27px
+}
+
+.form-horizontal .form-group{
+ margin-right:-15px;
+ margin-left:-15px
+}
+
+@media (min-width:768px){
+ .form-horizontal .control-label{
+ padding-top:7px;
+ margin-bottom:0;
+ text-align:right
+ }
+
+}
+
+.form-horizontal .has-feedback .form-control-feedback{
+ right:15px
+}
+
+@media (min-width:768px){
+ .form-horizontal .form-group-lg .control-label{
+ padding-top:14.33px;
+ font-size:18px
+ }
+
+}
+
+@media (min-width:768px){
+ .form-horizontal .form-group-sm .control-label{
+ padding-top:6px;
+ font-size:12px
+ }
+
+}
+
+.btn{
+ display:inline-block;
+ padding:6px 12px;
+ margin-bottom:0;
+ font-size:14px;
+ font-weight:400;
+ line-height:1.42857143;
+ text-align:center;
+ white-space:nowrap;
+ vertical-align:middle;
+ -ms-touch-action:manipulation;
+ touch-action:manipulation;
+ cursor:pointer;
+ -webkit-user-select:none;
+ -moz-user-select:none;
+ -ms-user-select:none;
+ user-select:none;
+ background-image:none;
+ border:1px solid transparent;
+ border-radius:4px
+}
+
+.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{
+ outline:thin dotted;
+ outline:5px auto -webkit-focus-ring-color;
+ outline-offset:-2px
+}
+
+.btn.focus,.btn:focus,.btn:hover{
+ color:#333;
+ text-decoration:none
+}
+
+.btn.active,.btn:active{
+ background-image:none;
+ outline:0;
+ -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
+ box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
+}
+
+.btn.disabled,.btn[disabled],fieldset[disabled] .btn{
+ cursor:not-allowed;
+ filter:alpha(opacity=65);
+ -webkit-box-shadow:none;
+ box-shadow:none;
+ opacity:.65
+}
+
+a.btn.disabled,fieldset[disabled] a.btn{
+ pointer-events:none
+}
+
+.btn-default{
+ color:#333;
+ background-color:#fff;
+ border-color:#ccc
+}
+
+.btn-default.focus,.btn-default:focus{
+ color:#333;
+ background-color:#e6e6e6;
+ border-color:#8c8c8c
+}
+
+.btn-default:hover{
+ color:#333;
+ background-color:#e6e6e6;
+ border-color:#adadad
+}
+
+.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
+ color:#333;
+ background-color:#e6e6e6;
+ border-color:#adadad
+}
+
+.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{
+ color:#333;
+ background-color:#d4d4d4;
+ border-color:#8c8c8c
+}
+
+.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
+ background-image:none
+}
+
+.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{
+ background-color:#fff;
+ border-color:#ccc
+}
+
+.btn-default .badge{
+ color:#fff;
+ background-color:#333
+}
+
+.btn-primary{
+ color:#fff;
+ background-color:#337ab7;
+ border-color:#2e6da4
+}
+
+.btn-primary.focus,.btn-primary:focus{
+ color:#fff;
+ background-color:#286090;
+ border-color:#122b40
+}
+
+.btn-primary:hover{
+ color:#fff;
+ background-color:#286090;
+ border-color:#204d74
+}
+
+.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
+ color:#fff;
+ background-color:#286090;
+ border-color:#204d74
+}
+
+.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{
+ color:#fff;
+ background-color:#204d74;
+ border-color:#122b40
+}
+
+.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
+ background-image:none
+}
+
+.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{
+ background-color:#337ab7;
+ border-color:#2e6da4
+}
+
+.btn-primary .badge{
+ color:#337ab7;
+ background-color:#fff
+}
+
+.btn-success{
+ color:#fff;
+ background-color:#5cb85c;
+ border-color:#4cae4c
+}
+
+.btn-success.focus,.btn-success:focus{
+ color:#fff;
+ background-color:#449d44;
+ border-color:#255625
+}
+
+.btn-success:hover{
+ color:#fff;
+ background-color:#449d44;
+ border-color:#398439
+}
+
+.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
+ color:#fff;
+ background-color:#449d44;
+ border-color:#398439
+}
+
+.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{
+ color:#fff;
+ background-color:#398439;
+ border-color:#255625
+}
+
+.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
+ background-image:none
+}
+
+.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{
+ background-color:#5cb85c;
+ border-color:#4cae4c
+}
+
+.btn-success .badge{
+ color:#5cb85c;
+ background-color:#fff
+}
+
+.btn-info{
+ color:#fff;
+ background-color:#5bc0de;
+ border-color:#46b8da
+}
+
+.btn-info.focus,.btn-info:focus{
+ color:#fff;
+ background-color:#31b0d5;
+ border-color:#1b6d85
+}
+
+.btn-info:hover{
+ color:#fff;
+ background-color:#31b0d5;
+ border-color:#269abc
+}
+
+.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
+ color:#fff;
+ background-color:#31b0d5;
+ border-color:#269abc
+}
+
+.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{
+ color:#fff;
+ background-color:#269abc;
+ border-color:#1b6d85
+}
+
+.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
+ background-image:none
+}
+
+.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{
+ background-color:#5bc0de;
+ border-color:#46b8da
+}
+
+.btn-info .badge{
+ color:#5bc0de;
+ background-color:#fff
+}
+
+.btn-warning{
+ color:#fff;
+ background-color:#f0ad4e;
+ border-color:#eea236
+}
+
+.btn-warning.focus,.btn-warning:focus{
+ color:#fff;
+ background-color:#ec971f;
+ border-color:#985f0d
+}
+
+.btn-warning:hover{
+ color:#fff;
+ background-color:#ec971f;
+ border-color:#d58512
+}
+
+.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
+ color:#fff;
+ background-color:#ec971f;
+ border-color:#d58512
+}
+
+.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{
+ color:#fff;
+ background-color:#d58512;
+ border-color:#985f0d
+}
+
+.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
+ background-image:none
+}
+
+.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{
+ background-color:#f0ad4e;
+ border-color:#eea236
+}
+
+.btn-warning .badge{
+ color:#f0ad4e;
+ background-color:#fff
+}
+
+.btn-danger{
+ color:#fff;
+ background-color:#d9534f;
+ border-color:#d43f3a
+}
+
+.btn-danger.focus,.btn-danger:focus{
+ color:#fff;
+ background-color:#c9302c;
+ border-color:#761c19
+}
+
+.btn-danger:hover{
+ color:#fff;
+ background-color:#c9302c;
+ border-color:#ac2925
+}
+
+.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
+ color:#fff;
+ background-color:#c9302c;
+ border-color:#ac2925
+}
+
+.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{
+ color:#fff;
+ background-color:#ac2925;
+ border-color:#761c19
+}
+
+.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
+ background-image:none
+}
+
+.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{
+ background-color:#d9534f;
+ border-color:#d43f3a
+}
+
+.btn-danger .badge{
+ color:#d9534f;
+ background-color:#fff
+}
+
+.btn-link{
+ font-weight:400;
+ color:#337ab7;
+ border-radius:0
+}
+
+.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{
+ background-color:transparent;
+ -webkit-box-shadow:none;
+ box-shadow:none
+}
+
+.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{
+ border-color:transparent
+}
+
+.btn-link:focus,.btn-link:hover{
+ color:#23527c;
+ text-decoration:underline;
+ background-color:transparent
+}
+
+.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{
+ color:#777;
+ text-decoration:none
+}
+
+.btn-group-lg>.btn,.btn-lg{
+ padding:10px 16px;
+ font-size:18px;
+ line-height:1.3333333;
+ border-radius:6px
+}
+
+.btn-group-sm>.btn,.btn-sm{
+ padding:5px 10px;
+ font-size:12px;
+ line-height:1.5;
+ border-radius:3px
+}
+
+.btn-group-xs>.btn,.btn-xs{
+ padding:1px 5px;
+ font-size:12px;
+ line-height:1.5;
+ border-radius:3px
+}
+
+.btn-block{
+ display:block;
+ width:100%
+}
+
+.btn-block+.btn-block{
+ margin-top:5px
+}
+
+input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{
+ width:100%
+}
+
+.fade{
+ opacity:0;
+ -webkit-transition:opacity .15s linear;
+ -o-transition:opacity .15s linear;
+ transition:opacity .15s linear
+}
+
+.fade.in{
+ opacity:1
+}
+
+.collapse{
+ display:none
+}
+
+.collapse.in{
+ display:block
+}
+
+tr.collapse.in{
+ display:table-row
+}
+
+tbody.collapse.in{
+ display:table-row-group
+}
+
+.collapsing{
+ position:relative;
+ height:0;
+ overflow:hidden;
+ -webkit-transition-timing-function:ease;
+ -o-transition-timing-function:ease;
+ transition-timing-function:ease;
+ -webkit-transition-duration:.35s;
+ -o-transition-duration:.35s;
+ transition-duration:.35s;
+ -webkit-transition-property:height,visibility;
+ -o-transition-property:height,visibility;
+ transition-property:height,visibility
+}
+
+.caret{
+ display:inline-block;
+ width:0;
+ height:0;
+ margin-left:2px;
+ vertical-align:middle;
+ border-top:4px dashed;
+ border-top:4px solid\9;
+ border-right:4px solid transparent;
+ border-left:4px solid transparent
+}
+
+.dropdown,.dropup{
+ position:relative
+}
+
+.dropdown-toggle:focus{
+ outline:0
+}
+
+.dropdown-menu{
+ position:absolute;
+ top:100%;
+ left:0;
+ z-index:1000;
+ display:none;
+ float:left;
+ min-width:160px;
+ padding:5px 0;
+ margin:2px 0 0;
+ font-size:14px;
+ text-align:left;
+ list-style:none;
+ background-color:#fff;
+ -webkit-background-clip:padding-box;
+ background-clip:padding-box;
+ border:1px solid #ccc;
+ border:1px solid rgba(0,0,0,.15);
+ border-radius:4px;
+ -webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);
+ box-shadow:0 6px 12px rgba(0,0,0,.175)
+}
+
+.dropdown-menu.pull-right{
+ right:0;
+ left:auto
+}
+
+.dropdown-menu .divider{
+ height:1px;
+ margin:9px 0;
+ overflow:hidden;
+ background-color:#e5e5e5
+}
+
+.dropdown-menu>li>a{
+ display:block;
+ padding:3px 20px;
+ clear:both;
+ font-weight:400;
+ line-height:1.42857143;
+ color:#333;
+ white-space:nowrap
+}
+
+.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{
+ color:#262626;
+ text-decoration:none;
+ background-color:#f5f5f5
+}
+
+.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{
+ color:#fff;
+ text-decoration:none;
+ background-color:#337ab7;
+ outline:0
+}
+
+.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
+ color:#777
+}
+
+.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
+ text-decoration:none;
+ cursor:not-allowed;
+ background-color:transparent;
+ background-image:none;
+ filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)
+}
+
+.open>.dropdown-menu{
+ display:block
+}
+
+.open>a{
+ outline:0
+}
+
+.dropdown-menu-right{
+ right:0;
+ left:auto
+}
+
+.dropdown-menu-left{
+ right:auto;
+ left:0
+}
+
+.dropdown-header{
+ display:block;
+ padding:3px 20px;
+ font-size:12px;
+ line-height:1.42857143;
+ color:#777;
+ white-space:nowrap
+}
+
+.dropdown-backdrop{
+ position:fixed;
+ top:0;
+ right:0;
+ bottom:0;
+ left:0;
+ z-index:990
+}
+
+.pull-right>.dropdown-menu{
+ right:0;
+ left:auto
+}
+
+.dropup .caret,.navbar-fixed-bottom .dropdown .caret{
+ content:"";
+ border-top:0;
+ border-bottom:4px dashed;
+ border-bottom:4px solid\9
+}
+
+.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{
+ top:auto;
+ bottom:100%;
+ margin-bottom:2px
+}
+
+@media (min-width:768px){
+ .navbar-right .dropdown-menu{
+ right:0;
+ left:auto
+ }
+
+ .navbar-right .dropdown-menu-left{
+ right:auto;
+ left:0
+ }
+
+}
+
+.btn-group,.btn-group-vertical{
+ position:relative;
+ display:inline-block;
+ vertical-align:middle
+}
+
+.btn-group-vertical>.btn,.btn-group>.btn{
+ position:relative;
+ float:left
+}
+
+.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{
+ z-index:2
+}
+
+.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{
+ margin-left:-1px
+}
+
+.btn-toolbar{
+ margin-left:-5px
+}
+
+.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{
+ float:left
+}
+
+.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{
+ margin-left:5px
+}
+
+.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){
+ border-radius:0
+}
+
+.btn-group>.btn:first-child{
+ margin-left:0
+}
+
+.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){
+ border-top-right-radius:0;
+ border-bottom-right-radius:0
+}
+
+.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){
+ border-top-left-radius:0;
+ border-bottom-left-radius:0
+}
+
+.btn-group>.btn-group{
+ float:left
+}
+
+.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{
+ border-radius:0
+}
+
+.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
+ border-top-right-radius:0;
+ border-bottom-right-radius:0
+}
+
+.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{
+ border-top-left-radius:0;
+ border-bottom-left-radius:0
+}
+
+.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{
+ outline:0
+}
+
+.btn-group>.btn+.dropdown-toggle{
+ padding-right:8px;
+ padding-left:8px
+}
+
+.btn-group>.btn-lg+.dropdown-toggle{
+ padding-right:12px;
+ padding-left:12px
+}
+
+.btn-group.open .dropdown-toggle{
+ -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
+ box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
+}
+
+.btn-group.open .dropdown-toggle.btn-link{
+ -webkit-box-shadow:none;
+ box-shadow:none
+}
+
+.btn .caret{
+ margin-left:0
+}
+
+.btn-lg .caret{
+ border-width:5px 5px 0;
+ border-bottom-width:0
+}
+
+.dropup .btn-lg .caret{
+ border-width:0 5px 5px
+}
+
+.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{
+ display:block;
+ float:none;
+ width:100%;
+ max-width:100%
+}
+
+.btn-group-vertical>.btn-group>.btn{
+ float:none
+}
+
+.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{
+ margin-top:-1px;
+ margin-left:0
+}
+
+.btn-group-vertical>.btn:not(:first-child):not(:last-child){
+ border-radius:0
+}
+
+.btn-group-vertical>.btn:first-child:not(:last-child){
+ border-top-right-radius:4px;
+ border-bottom-right-radius:0;
+ border-bottom-left-radius:0
+}
+
+.btn-group-vertical>.btn:last-child:not(:first-child){
+ border-top-left-radius:0;
+ border-top-right-radius:0;
+ border-bottom-left-radius:4px
+}
+
+.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{
+ border-radius:0
+}
+
+.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
+ border-bottom-right-radius:0;
+ border-bottom-left-radius:0
+}
+
+.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{
+ border-top-left-radius:0;
+ border-top-right-radius:0
+}
+
+.btn-group-justified{
+ display:table;
+ width:100%;
+ table-layout:fixed;
+ border-collapse:separate
+}
+
+.btn-group-justified>.btn,.btn-group-justified>.btn-group{
+ display:table-cell;
+ float:none;
+ width:1%
+}
+
+.btn-group-justified>.btn-group .btn{
+ width:100%
+}
+
+.btn-group-justified>.btn-group .dropdown-menu{
+ left:auto
+}
+
+[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{
+ position:absolute;
+ clip:rect(0,0,0,0);
+ pointer-events:none
+}
+
+.input-group{
+ position:relative;
+ display:table;
+ border-collapse:separate
+}
+
+.input-group[class*=col-]{
+ float:none;
+ padding-right:0;
+ padding-left:0
+}
+
+.input-group .form-control{
+ position:relative;
+ z-index:2;
+ float:left;
+ width:100%;
+ margin-bottom:0
+}
+
+.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{
+ height:46px;
+ padding:10px 16px;
+ font-size:18px;
+ line-height:1.3333333;
+ border-radius:6px
+}
+
+select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{
+ height:46px;
+ line-height:46px
+}
+
+select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{
+ height:auto
+}
+
+.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{
+ height:30px;
+ padding:5px 10px;
+ font-size:12px;
+ line-height:1.5;
+ border-radius:3px
+}
+
+select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{
+ height:30px;
+ line-height:30px
+}
+
+select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{
+ height:auto
+}
+
+.input-group .form-control,.input-group-addon,.input-group-btn{
+ display:table-cell
+}
+
+.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){
+ border-radius:0
+}
+
+.input-group-addon,.input-group-btn{
+ width:1%;
+ white-space:nowrap;
+ vertical-align:middle
+}
+
+.input-group-addon{
+ padding:6px 12px;
+ font-size:14px;
+ font-weight:400;
+ line-height:1;
+ color:#555;
+ text-align:center;
+ background-color:#eee;
+ border:1px solid #ccc;
+ border-radius:4px
+}
+
+.input-group-addon.input-sm{
+ padding:5px 10px;
+ font-size:12px;
+ border-radius:3px
+}
+
+.input-group-addon.input-lg{
+ padding:10px 16px;
+ font-size:18px;
+ border-radius:6px
+}
+
+.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{
+ margin-top:0
+}
+
+.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){
+ border-top-right-radius:0;
+ border-bottom-right-radius:0
+}
+
+.input-group-addon:first-child{
+ border-right:0
+}
+
+.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{
+ border-top-left-radius:0;
+ border-bottom-left-radius:0
+}
+
+.input-group-addon:last-child{
+ border-left:0
+}
+
+.input-group-btn{
+ position:relative;
+ font-size:0;
+ white-space:nowrap
+}
+
+.input-group-btn>.btn{
+ position:relative
+}
+
+.input-group-btn>.btn+.btn{
+ margin-left:-1px
+}
+
+.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{
+ z-index:2
+}
+
+.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{
+ margin-right:-1px
+}
+
+.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{
+ z-index:2;
+ margin-left:-1px
+}
+
+.nav{
+ padding-left:0;
+ margin-bottom:0;
+ list-style:none
+}
+
+.nav>li{
+ position:relative;
+ display:block
+}
+
+.nav>li>a{
+ position:relative;
+ display:block;
+ padding:10px 15px
+}
+
+.nav>li>a:focus,.nav>li>a:hover{
+ text-decoration:none;
+ background-color:#eee
+}
+
+.nav>li.disabled>a{
+ color:#777
+}
+
+.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{
+ color:#777;
+ text-decoration:none;
+ cursor:not-allowed;
+ background-color:transparent
+}
+
+.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{
+ background-color:#eee;
+ border-color:#337ab7
+}
+
+.nav .nav-divider{
+ height:1px;
+ margin:9px 0;
+ overflow:hidden;
+ background-color:#e5e5e5
+}
+
+.nav>li>a>img{
+ max-width:none
+}
+
+.nav-tabs{
+ border-bottom:1px solid #ddd
+}
+
+.nav-tabs>li{
+ float:left;
+ margin-bottom:-1px
+}
+
+.nav-tabs>li>a{
+ margin-right:2px;
+ line-height:1.42857143;
+ border:1px solid transparent;
+ border-radius:4px 4px 0 0
+}
+
+.nav-tabs>li>a:hover{
+ border-color:#eee #eee #ddd
+}
+
+.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{
+ color:#555;
+ cursor:default;
+ background-color:#fff;
+ border:1px solid #ddd;
+ border-bottom-color:transparent
+}
+
+.nav-tabs.nav-justified{
+ width:100%;
+ border-bottom:0
+}
+
+.nav-tabs.nav-justified>li{
+ float:none
+}
+
+.nav-tabs.nav-justified>li>a{
+ margin-bottom:5px;
+ text-align:center
+}
+
+.nav-tabs.nav-justified>.dropdown .dropdown-menu{
+ top:auto;
+ left:auto
+}
+
+@media (min-width:768px){
+ .nav-tabs.nav-justified>li{
+ display:table-cell;
+ width:1%
+ }
+
+ .nav-tabs.nav-justified>li>a{
+ margin-bottom:0
+ }
+
+}
+
+.nav-tabs.nav-justified>li>a{
+ margin-right:0;
+ border-radius:4px
+}
+
+.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
+ border:1px solid #ddd
+}
+
+@media (min-width:768px){
+ .nav-tabs.nav-justified>li>a{
+ border-bottom:1px solid #ddd;
+ border-radius:4px 4px 0 0
+ }
+
+ .nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
+ border-bottom-color:#fff
+ }
+
+}
+
+.nav-pills>li{
+ float:left
+}
+
+.nav-pills>li>a{
+ border-radius:4px
+}
+
+.nav-pills>li+li{
+ margin-left:2px
+}
+
+.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{
+ color:#fff;
+ background-color:#337ab7
+}
+
+.nav-stacked>li{
+ float:none
+}
+
+.nav-stacked>li+li{
+ margin-top:2px;
+ margin-left:0
+}
+
+.nav-justified{
+ width:100%
+}
+
+.nav-justified>li{
+ float:none
+}
+
+.nav-justified>li>a{
+ margin-bottom:5px;
+ text-align:center
+}
+
+.nav-justified>.dropdown .dropdown-menu{
+ top:auto;
+ left:auto
+}
+
+@media (min-width:768px){
+ .nav-justified>li{
+ display:table-cell;
+ width:1%
+ }
+
+ .nav-justified>li>a{
+ margin-bottom:0
+ }
+
+}
+
+.nav-tabs-justified{
+ border-bottom:0
+}
+
+.nav-tabs-justified>li>a{
+ margin-right:0;
+ border-radius:4px
+}
+
+.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
+ border:1px solid #ddd
+}
+
+@media (min-width:768px){
+ .nav-tabs-justified>li>a{
+ border-bottom:1px solid #ddd;
+ border-radius:4px 4px 0 0
+ }
+
+ .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
+ border-bottom-color:#fff
+ }
+
+}
+
+.tab-content>.tab-pane{
+ display:none
+}
+
+.tab-content>.active{
+ display:block
+}
+
+.nav-tabs .dropdown-menu{
+ margin-top:-1px;
+ border-top-left-radius:0;
+ border-top-right-radius:0
+}
+
+.navbar{
+ position:relative;
+ min-height:50px;
+ margin-bottom:20px;
+ border:1px solid transparent
+}
+
+@media (min-width:768px){
+ .navbar{
+ border-radius:4px
+ }
+
+}
+
+@media (min-width:768px){
+ .navbar-header{
+ float:left
+ }
+
+}
+
+.navbar-collapse{
+ padding-right:15px;
+ padding-left:15px;
+ overflow-x:visible;
+ -webkit-overflow-scrolling:touch;
+ border-top:1px solid transparent;
+ -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);
+ box-shadow:inset 0 1px 0 rgba(255,255,255,.1)
+}
+
+.navbar-collapse.in{
+ overflow-y:auto
+}
+
+@media (min-width:768px){
+ .navbar-collapse{
+ width:auto;
+ border-top:0;
+ -webkit-box-shadow:none;
+ box-shadow:none
+ }
+
+ .navbar-collapse.collapse{
+ display:block!important;
+ height:auto!important;
+ padding-bottom:0;
+ overflow:visible!important
+ }
+
+ .navbar-collapse.in{
+ overflow-y:visible
+ }
+
+ .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{
+ padding-right:0;
+ padding-left:0
+ }
+
+}
+
+.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
+ max-height:340px
+}
+
+@media (max-device-width:480px) and (orientation:landscape){
+ .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
+ max-height:200px
+ }
+
+}
+
+.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
+ margin-right:-15px;
+ margin-left:-15px
+}
+
+@media (min-width:768px){
+ .container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
+ margin-right:0;
+ margin-left:0
+ }
+
+}
+
+.navbar-static-top{
+ z-index:1000;
+ border-width:0 0 1px
+}
+
+@media (min-width:768px){
+ .navbar-static-top{
+ border-radius:0
+ }
+
+}
+
+.navbar-fixed-bottom,.navbar-fixed-top{
+ position:fixed;
+ right:0;
+ left:0;
+ z-index:1030
+}
+
+@media (min-width:768px){
+ .navbar-fixed-bottom,.navbar-fixed-top{
+ border-radius:0
+ }
+
+}
+
+.navbar-fixed-top{
+ top:0;
+ border-width:0 0 1px
+}
+
+.navbar-fixed-bottom{
+ bottom:0;
+ margin-bottom:0;
+ border-width:1px 0 0
+}
+
+.navbar-brand{
+ float:left;
+ height:50px;
+ padding:15px 15px;
+ font-size:18px;
+ line-height:20px
+}
+
+.navbar-brand:focus,.navbar-brand:hover{
+ text-decoration:none
+}
+
+.navbar-brand>img{
+ display:block
+}
+
+@media (min-width:768px){
+ .navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{
+ margin-left:-15px
+ }
+
+}
+
+.navbar-toggle{
+ position:relative;
+ float:right;
+ padding:9px 10px;
+ margin-top:8px;
+ margin-right:15px;
+ margin-bottom:8px;
+ background-color:transparent;
+ background-image:none;
+ border:1px solid transparent;
+ border-radius:4px
+}
+
+.navbar-toggle:focus{
+ outline:0
+}
+
+.navbar-toggle .icon-bar{
+ display:block;
+ width:22px;
+ height:2px;
+ border-radius:1px
+}
+
+.navbar-toggle .icon-bar+.icon-bar{
+ margin-top:4px
+}
+
+@media (min-width:768px){
+ .navbar-toggle{
+ display:none
+ }
+
+}
+
+.navbar-nav{
+ margin:7.5px -15px
+}
+
+.navbar-nav>li>a{
+ padding-top:10px;
+ padding-bottom:10px;
+ line-height:20px
+}
+
+@media (max-width:767px){
+ .navbar-nav .open .dropdown-menu{
+ position:static;
+ float:none;
+ width:auto;
+ margin-top:0;
+ background-color:transparent;
+ border:0;
+ -webkit-box-shadow:none;
+ box-shadow:none
+ }
+
+ .navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{
+ padding:5px 15px 5px 25px
+ }
+
+ .navbar-nav .open .dropdown-menu>li>a{
+ line-height:20px
+ }
+
+ .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{
+ background-image:none
+ }
+
+}
+
+@media (min-width:768px){
+ .navbar-nav{
+ float:left;
+ margin:0
+ }
+
+ .navbar-nav>li{
+ float:left
+ }
+
+ .navbar-nav>li>a{
+ padding-top:15px;
+ padding-bottom:15px
+ }
+
+}
+
+.navbar-form{
+ padding:10px 15px;
+ margin-top:8px;
+ margin-right:-15px;
+ margin-bottom:8px;
+ margin-left:-15px;
+ border-top:1px solid transparent;
+ border-bottom:1px solid transparent;
+ -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);
+ box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)
+}
+
+@media (min-width:768px){
+ .navbar-form .form-group{
+ display:inline-block;
+ margin-bottom:0;
+ vertical-align:middle
+ }
+
+ .navbar-form .form-control{
+ display:inline-block;
+ width:auto;
+ vertical-align:middle
+ }
+
+ .navbar-form .form-control-static{
+ display:inline-block
+ }
+
+ .navbar-form .input-group{
+ display:inline-table;
+ vertical-align:middle
+ }
+
+ .navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{
+ width:auto
+ }
+
+ .navbar-form .input-group>.form-control{
+ width:100%
+ }
+
+ .navbar-form .control-label{
+ margin-bottom:0;
+ vertical-align:middle
+ }
+
+ .navbar-form .checkbox,.navbar-form .radio{
+ display:inline-block;
+ margin-top:0;
+ margin-bottom:0;
+ vertical-align:middle
+ }
+
+ .navbar-form .checkbox label,.navbar-form .radio label{
+ padding-left:0
+ }
+
+ .navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{
+ position:relative;
+ margin-left:0
+ }
+
+ .navbar-form .has-feedback .form-control-feedback{
+ top:0
+ }
+
+}
+
+@media (max-width:767px){
+ .navbar-form .form-group{
+ margin-bottom:5px
+ }
+
+ .navbar-form .form-group:last-child{
+ margin-bottom:0
+ }
+
+}
+
+@media (min-width:768px){
+ .navbar-form{
+ width:auto;
+ padding-top:0;
+ padding-bottom:0;
+ margin-right:0;
+ margin-left:0;
+ border:0;
+ -webkit-box-shadow:none;
+ box-shadow:none
+ }
+
+}
+
+.navbar-nav>li>.dropdown-menu{
+ margin-top:0;
+ border-top-left-radius:0;
+ border-top-right-radius:0
+}
+
+.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{
+ margin-bottom:0;
+ border-top-left-radius:4px;
+ border-top-right-radius:4px;
+ border-bottom-right-radius:0;
+ border-bottom-left-radius:0
+}
+
+.navbar-btn{
+ margin-top:8px;
+ margin-bottom:8px
+}
+
+.navbar-btn.btn-sm{
+ margin-top:10px;
+ margin-bottom:10px
+}
+
+.navbar-btn.btn-xs{
+ margin-top:14px;
+ margin-bottom:14px
+}
+
+.navbar-text{
+ margin-top:15px;
+ margin-bottom:15px
+}
+
+@media (min-width:768px){
+ .navbar-text{
+ float:left;
+ margin-right:15px;
+ margin-left:15px
+ }
+
+}
+
+@media (min-width:768px){
+ .navbar-left{
+ float:left!important
+ }
+
+ .navbar-right{
+ float:right!important;
+ margin-right:-15px
+ }
+
+ .navbar-right~.navbar-right{
+ margin-right:0
+ }
+
+}
+
+.navbar-default{
+ background-color:#f8f8f8;
+ border-color:#e7e7e7
+}
+
+.navbar-default .navbar-brand{
+ color:#777
+}
+
+.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{
+ color:#5e5e5e;
+ background-color:transparent
+}
+
+.navbar-default .navbar-text{
+ color:#777
+}
+
+.navbar-default .navbar-nav>li>a{
+ color:#777
+}
+
+.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{
+ color:#333;
+ background-color:transparent
+}
+
+.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{
+ color:#555;
+ background-color:#e7e7e7
+}
+
+.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{
+ color:#ccc;
+ background-color:transparent
+}
+
+.navbar-default .navbar-toggle{
+ border-color:#ddd
+}
+
+.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{
+ background-color:#ddd
+}
+
+.navbar-default .navbar-toggle .icon-bar{
+ background-color:#888
+}
+
+.navbar-default .navbar-collapse,.navbar-default .navbar-form{
+ border-color:#e7e7e7
+}
+
+.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{
+ color:#555;
+ background-color:#e7e7e7
+}
+
+@media (max-width:767px){
+ .navbar-default .navbar-nav .open .dropdown-menu>li>a{
+ color:#777
+ }
+
+ .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{
+ color:#333;
+ background-color:transparent
+ }
+
+ .navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{
+ color:#555;
+ background-color:#e7e7e7
+ }
+
+ .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{
+ color:#ccc;
+ background-color:transparent
+ }
+
+}
+
+.navbar-default .navbar-link{
+ color:#777
+}
+
+.navbar-default .navbar-link:hover{
+ color:#333
+}
+
+.navbar-default .btn-link{
+ color:#777
+}
+
+.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{
+ color:#333
+}
+
+.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{
+ color:#ccc
+}
+
+.navbar-inverse{
+ background-color:#222;
+ border-color:#080808
+}
+
+.navbar-inverse .navbar-brand{
+ color:#9d9d9d
+}
+
+.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{
+ color:#fff;
+ background-color:transparent
+}
+
+.navbar-inverse .navbar-text{
+ color:#9d9d9d
+}
+
+.navbar-inverse .navbar-nav>li>a{
+ color:#9d9d9d
+}
+
+.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{
+ color:#fff;
+ background-color:transparent
+}
+
+.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{
+ color:#fff;
+ background-color:#080808
+}
+
+.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{
+ color:#444;
+ background-color:transparent
+}
+
+.navbar-inverse .navbar-toggle{
+ border-color:#333
+}
+
+.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{
+ background-color:#333
+}
+
+.navbar-inverse .navbar-toggle .icon-bar{
+ background-color:#fff
+}
+
+.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{
+ border-color:#101010
+}
+
+.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{
+ color:#fff;
+ background-color:#080808
+}
+
+@media (max-width:767px){
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{
+ border-color:#080808
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider{
+ background-color:#080808
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{
+ color:#9d9d9d
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{
+ color:#fff;
+ background-color:transparent
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{
+ color:#fff;
+ background-color:#080808
+ }
+
+ .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{
+ color:#444;
+ background-color:transparent
+ }
+
+}
+
+.navbar-inverse .navbar-link{
+ color:#9d9d9d
+}
+
+.navbar-inverse .navbar-link:hover{
+ color:#fff
+}
+
+.navbar-inverse .btn-link{
+ color:#9d9d9d
+}
+
+.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{
+ color:#fff
+}
+
+.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{
+ color:#444
+}
+
+.breadcrumb{
+ padding:8px 15px;
+ margin-bottom:20px;
+ list-style:none;
+ background-color:#f5f5f5;
+ border-radius:4px
+}
+
+.breadcrumb>li{
+ display:inline-block
+}
+
+.breadcrumb>li+li:before{
+ padding:0 5px;
+ color:#ccc;
+ content:"/\00a0"
+}
+
+.breadcrumb>.active{
+ color:#777
+}
+
+.pagination{
+ display:inline-block;
+ padding-left:0;
+ margin:20px 0;
+ border-radius:4px
+}
+
+.pagination>li{
+ display:inline
+}
+
+.pagination>li>a,.pagination>li>span{
+ position:relative;
+ float:left;
+ padding:6px 12px;
+ margin-left:-1px;
+ line-height:1.42857143;
+ color:#337ab7;
+ text-decoration:none;
+ background-color:#fff;
+ border:1px solid #ddd
+}
+
+.pagination>li:first-child>a,.pagination>li:first-child>span{
+ margin-left:0;
+ border-top-left-radius:4px;
+ border-bottom-left-radius:4px
+}
+
+.pagination>li:last-child>a,.pagination>li:last-child>span{
+ border-top-right-radius:4px;
+ border-bottom-right-radius:4px
+}
+
+.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{
+ z-index:3;
+ color:#23527c;
+ background-color:#eee;
+ border-color:#ddd
+}
+
+.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{
+ z-index:2;
+ color:#fff;
+ cursor:default;
+ background-color:#337ab7;
+ border-color:#337ab7
+}
+
+.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{
+ color:#777;
+ cursor:not-allowed;
+ background-color:#fff;
+ border-color:#ddd
+}
+
+.pagination-lg>li>a,.pagination-lg>li>span{
+ padding:10px 16px;
+ font-size:18px;
+ line-height:1.3333333
+}
+
+.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{
+ border-top-left-radius:6px;
+ border-bottom-left-radius:6px
+}
+
+.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{
+ border-top-right-radius:6px;
+ border-bottom-right-radius:6px
+}
+
+.pagination-sm>li>a,.pagination-sm>li>span{
+ padding:5px 10px;
+ font-size:12px;
+ line-height:1.5
+}
+
+.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{
+ border-top-left-radius:3px;
+ border-bottom-left-radius:3px
+}
+
+.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{
+ border-top-right-radius:3px;
+ border-bottom-right-radius:3px
+}
+
+.pager{
+ padding-left:0;
+ margin:20px 0;
+ text-align:center;
+ list-style:none
+}
+
+.pager li{
+ display:inline
+}
+
+.pager li>a,.pager li>span{
+ display:inline-block;
+ padding:5px 14px;
+ background-color:#fff;
+ border:1px solid #ddd;
+ border-radius:15px
+}
+
+.pager li>a:focus,.pager li>a:hover{
+ text-decoration:none;
+ background-color:#eee
+}
+
+.pager .next>a,.pager .next>span{
+ float:right
+}
+
+.pager .previous>a,.pager .previous>span{
+ float:left
+}
+
+.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{
+ color:#777;
+ cursor:not-allowed;
+ background-color:#fff
+}
+
+.label{
+ display:inline;
+ padding:.2em .6em .3em;
+ font-size:75%;
+ font-weight:700;
+ line-height:1;
+ color:#fff;
+ text-align:center;
+ white-space:nowrap;
+ vertical-align:baseline;
+ border-radius:.25em
+}
+
+a.label:focus,a.label:hover{
+ color:#fff;
+ text-decoration:none;
+ cursor:pointer
+}
+
+.label:empty{
+ display:none
+}
+
+.btn .label{
+ position:relative;
+ top:-1px
+}
+
+.label-default{
+ background-color:#777
+}
+
+.label-default[href]:focus,.label-default[href]:hover{
+ background-color:#5e5e5e
+}
+
+.label-primary{
+ background-color:#337ab7
+}
+
+.label-primary[href]:focus,.label-primary[href]:hover{
+ background-color:#286090
+}
+
+.label-success{
+ background-color:#5cb85c
+}
+
+.label-success[href]:focus,.label-success[href]:hover{
+ background-color:#449d44
+}
+
+.label-info{
+ background-color:#5bc0de
+}
+
+.label-info[href]:focus,.label-info[href]:hover{
+ background-color:#31b0d5
+}
+
+.label-warning{
+ background-color:#f0ad4e
+}
+
+.label-warning[href]:focus,.label-warning[href]:hover{
+ background-color:#ec971f
+}
+
+.label-danger{
+ background-color:#d9534f
+}
+
+.label-danger[href]:focus,.label-danger[href]:hover{
+ background-color:#c9302c
+}
+
+.badge{
+ display:inline-block;
+ min-width:10px;
+ padding:3px 7px;
+ font-size:12px;
+ font-weight:700;
+ line-height:1;
+ color:#fff;
+ text-align:center;
+ white-space:nowrap;
+ vertical-align:middle;
+ background-color:#777;
+ border-radius:10px
+}
+
+.badge:empty{
+ display:none
+}
+
+.btn .badge{
+ position:relative;
+ top:-1px
+}
+
+.btn-group-xs>.btn .badge,.btn-xs .badge{
+ top:0;
+ padding:1px 5px
+}
+
+a.badge:focus,a.badge:hover{
+ color:#fff;
+ text-decoration:none;
+ cursor:pointer
+}
+
+.list-group-item.active>.badge,.nav-pills>.active>a>.badge{
+ color:#337ab7;
+ background-color:#fff
+}
+
+.list-group-item>.badge{
+ float:right
+}
+
+.list-group-item>.badge+.badge{
+ margin-right:5px
+}
+
+.nav-pills>li>a>.badge{
+ margin-left:3px
+}
+
+.jumbotron{
+ padding-top:30px;
+ padding-bottom:30px;
+ margin-bottom:30px;
+ color:inherit;
+ background-color:#eee
+}
+
+.jumbotron .h1,.jumbotron h1{
+ color:inherit
+}
+
+.jumbotron p{
+ margin-bottom:15px;
+ font-size:21px;
+ font-weight:200
+}
+
+.jumbotron>hr{
+ border-top-color:#d5d5d5
+}
+
+.container .jumbotron,.container-fluid .jumbotron{
+ border-radius:6px
+}
+
+.jumbotron .container{
+ max-width:100%
+}
+
+@media screen and (min-width:768px){
+ .jumbotron{
+ padding-top:48px;
+ padding-bottom:48px
+ }
+
+ .container .jumbotron,.container-fluid .jumbotron{
+ padding-right:60px;
+ padding-left:60px
+ }
+
+ .jumbotron .h1,.jumbotron h1{
+ font-size:63px
+ }
+
+}
+
+.thumbnail{
+ display:block;
+ padding:4px;
+ margin-bottom:20px;
+ line-height:1.42857143;
+ background-color:#fff;
+ border:1px solid #ddd;
+ border-radius:4px;
+ -webkit-transition:border .2s ease-in-out;
+ -o-transition:border .2s ease-in-out;
+ transition:border .2s ease-in-out
+}
+
+.thumbnail a>img,.thumbnail>img{
+ margin-right:auto;
+ margin-left:auto
+}
+
+a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{
+ border-color:#337ab7
+}
+
+.thumbnail .caption{
+ padding:9px;
+ color:#333
+}
+
+.alert{
+ padding:15px;
+ margin-bottom:20px;
+ border:1px solid transparent;
+ border-radius:4px
+}
+
+.alert h4{
+ margin-top:0;
+ color:inherit
+}
+
+.alert .alert-link{
+ font-weight:700
+}
+
+.alert>p,.alert>ul{
+ margin-bottom:0
+}
+
+.alert>p+p{
+ margin-top:5px
+}
+
+.alert-dismissable,.alert-dismissible{
+ padding-right:35px
+}
+
+.alert-dismissable .close,.alert-dismissible .close{
+ position:relative;
+ top:-2px;
+ right:-21px;
+ color:inherit
+}
+
+.alert-success{
+ color:#3c763d;
+ background-color:#dff0d8;
+ border-color:#d6e9c6
+}
+
+.alert-success hr{
+ border-top-color:#c9e2b3
+}
+
+.alert-success .alert-link{
+ color:#2b542c
+}
+
+.alert-info{
+ color:#31708f;
+ background-color:#d9edf7;
+ border-color:#bce8f1
+}
+
+.alert-info hr{
+ border-top-color:#a6e1ec
+}
+
+.alert-info .alert-link{
+ color:#245269
+}
+
+.alert-warning{
+ color:#8a6d3b;
+ background-color:#fcf8e3;
+ border-color:#faebcc
+}
+
+.alert-warning hr{
+ border-top-color:#f7e1b5
+}
+
+.alert-warning .alert-link{
+ color:#66512c
+}
+
+.alert-danger{
+ color:#a94442;
+ background-color:#f2dede;
+ border-color:#ebccd1
+}
+
+.alert-danger hr{
+ border-top-color:#e4b9c0
+}
+
+.alert-danger .alert-link{
+ color:#843534
+}
+
+@-webkit-keyframes progress-bar-stripes{
+ from{
+ background-position:40px 0
+ }
+
+ to{
+ background-position:0 0
+ }
+
+}
+
+@-o-keyframes progress-bar-stripes{
+ from{
+ background-position:40px 0
+ }
+
+ to{
+ background-position:0 0
+ }
+
+}
+
+@keyframes progress-bar-stripes{
+ from{
+ background-position:40px 0
+ }
+
+ to{
+ background-position:0 0
+ }
+
+}
+
+.progress{
+ height:20px;
+ margin-bottom:20px;
+ overflow:hidden;
+ background-color:#f5f5f5;
+ border-radius:4px;
+ -webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);
+ box-shadow:inset 0 1px 2px rgba(0,0,0,.1)
+}
+
+.progress-bar{
+ float:left;
+ width:0;
+ height:100%;
+ font-size:12px;
+ line-height:20px;
+ color:#fff;
+ text-align:center;
+ background-color:#337ab7;
+ -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
+ box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
+ -webkit-transition:width .6s ease;
+ -o-transition:width .6s ease;
+ transition:width .6s ease
+}
+
+.progress-bar-striped,.progress-striped .progress-bar{
+ background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ -webkit-background-size:40px 40px;
+ background-size:40px 40px
+}
+
+.progress-bar.active,.progress.active .progress-bar{
+ -webkit-animation:progress-bar-stripes 2s linear infinite;
+ -o-animation:progress-bar-stripes 2s linear infinite;
+ animation:progress-bar-stripes 2s linear infinite
+}
+
+.progress-bar-success{
+ background-color:#5cb85c
+}
+
+.progress-striped .progress-bar-success{
+ background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
+}
+
+.progress-bar-info{
+ background-color:#5bc0de
+}
+
+.progress-striped .progress-bar-info{
+ background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
+}
+
+.progress-bar-warning{
+ background-color:#f0ad4e
+}
+
+.progress-striped .progress-bar-warning{
+ background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
+}
+
+.progress-bar-danger{
+ background-color:#d9534f
+}
+
+.progress-striped .progress-bar-danger{
+ background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
+ background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
+}
+
+.media{
+ margin-top:15px
+}
+
+.media:first-child{
+ margin-top:0
+}
+
+.media,.media-body{
+ overflow:hidden;
+ zoom:1
+}
+
+.media-body{
+ width:10000px
+}
+
+.media-object{
+ display:block
+}
+
+.media-object.img-thumbnail{
+ max-width:none
+}
+
+.media-right,.media>.pull-right{
+ padding-left:10px
+}
+
+.media-left,.media>.pull-left{
+ padding-right:10px
+}
+
+.media-body,.media-left,.media-right{
+ display:table-cell;
+ vertical-align:top
+}
+
+.media-middle{
+ vertical-align:middle
+}
+
+.media-bottom{
+ vertical-align:bottom
+}
+
+.media-heading{
+ margin-top:0;
+ margin-bottom:5px
+}
+
+.media-list{
+ padding-left:0;
+ list-style:none
+}
+
+.list-group{
+ padding-left:0;
+ margin-bottom:20px
+}
+
+.list-group-item{
+ position:relative;
+ display:block;
+ padding:10px 15px;
+ margin-bottom:-1px;
+ background-color:#fff;
+ border:1px solid #ddd
+}
+
+.list-group-item:first-child{
+ border-top-left-radius:4px;
+ border-top-right-radius:4px
+}
+
+.list-group-item:last-child{
+ margin-bottom:0;
+ border-bottom-right-radius:4px;
+ border-bottom-left-radius:4px
+}
+
+a.list-group-item,button.list-group-item{
+ color:#555
+}
+
+a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{
+ color:#333
+}
+
+a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{
+ color:#555;
+ text-decoration:none;
+ background-color:#f5f5f5
+}
+
+button.list-group-item{
+ width:100%;
+ text-align:left
+}
+
+.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{
+ color:#777;
+ cursor:not-allowed;
+ background-color:#eee
+}
+
+.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{
+ color:inherit
+}
+
+.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{
+ color:#777
+}
+
+.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{
+ z-index:2;
+ color:#fff;
+ background-color:#337ab7;
+ border-color:#337ab7
+}
+
+.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{
+ color:inherit
+}
+
+.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{
+ color:#c7ddef
+}
+
+.list-group-item-success{
+ color:#3c763d;
+ background-color:#dff0d8
+}
+
+a.list-group-item-success,button.list-group-item-success{
+ color:#3c763d
+}
+
+a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{
+ color:inherit
+}
+
+a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{
+ color:#3c763d;
+ background-color:#d0e9c6
+}
+
+a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{
+ color:#fff;
+ background-color:#3c763d;
+ border-color:#3c763d
+}
+
+.list-group-item-info{
+ color:#31708f;
+ background-color:#d9edf7
+}
+
+a.list-group-item-info,button.list-group-item-info{
+ color:#31708f
+}
+
+a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{
+ color:inherit
+}
+
+a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{
+ color:#31708f;
+ background-color:#c4e3f3
+}
+
+a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{
+ color:#fff;
+ background-color:#31708f;
+ border-color:#31708f
+}
+
+.list-group-item-warning{
+ color:#8a6d3b;
+ background-color:#fcf8e3
+}
+
+a.list-group-item-warning,button.list-group-item-warning{
+ color:#8a6d3b
+}
+
+a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{
+ color:inherit
+}
+
+a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{
+ color:#8a6d3b;
+ background-color:#faf2cc
+}
+
+a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{
+ color:#fff;
+ background-color:#8a6d3b;
+ border-color:#8a6d3b
+}
+
+.list-group-item-danger{
+ color:#a94442;
+ background-color:#f2dede
+}
+
+a.list-group-item-danger,button.list-group-item-danger{
+ color:#a94442
+}
+
+a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{
+ color:inherit
+}
+
+a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{
+ color:#a94442;
+ background-color:#ebcccc
+}
+
+a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{
+ color:#fff;
+ background-color:#a94442;
+ border-color:#a94442
+}
+
+.list-group-item-heading{
+ margin-top:0;
+ margin-bottom:5px
+}
+
+.list-group-item-text{
+ margin-bottom:0;
+ line-height:1.3
+}
+
+.panel{
+ margin-bottom:20px;
+ background-color:#fff;
+ border:1px solid transparent;
+ border-radius:4px;
+ -webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);
+ box-shadow:0 1px 1px rgba(0,0,0,.05)
+}
+
+.panel-body{
+ padding:15px
+}
+
+.panel-heading{
+ padding:10px 15px;
+ border-bottom:1px solid transparent;
+ border-top-left-radius:3px;
+ border-top-right-radius:3px
+}
+
+.panel-heading>.dropdown .dropdown-toggle{
+ color:inherit
+}
+
+.panel-title{
+ margin-top:0;
+ margin-bottom:0;
+ font-size:16px;
+ color:inherit
+}
+
+.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{
+ color:inherit
+}
+
+.panel-footer{
+ padding:10px 15px;
+ background-color:#f5f5f5;
+ border-top:1px solid #ddd;
+ border-bottom-right-radius:3px;
+ border-bottom-left-radius:3px
+}
+
+.panel>.list-group,.panel>.panel-collapse>.list-group{
+ margin-bottom:0
+}
+
+.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{
+ border-width:1px 0;
+ border-radius:0
+}
+
+.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{
+ border-top:0;
+ border-top-left-radius:3px;
+ border-top-right-radius:3px
+}
+
+.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{
+ border-bottom:0;
+ border-bottom-right-radius:3px;
+ border-bottom-left-radius:3px
+}
+
+.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{
+ border-top-left-radius:0;
+ border-top-right-radius:0
+}
+
+.panel-heading+.list-group .list-group-item:first-child{
+ border-top-width:0
+}
+
+.list-group+.panel-footer{
+ border-top-width:0
+}
+
+.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{
+ margin-bottom:0
+}
+
+.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{
+ padding-right:15px;
+ padding-left:15px
+}
+
+.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{
+ border-top-left-radius:3px;
+ border-top-right-radius:3px
+}
+
+.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{
+ border-top-left-radius:3px;
+ border-top-right-radius:3px
+}
+
+.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{
+ border-top-left-radius:3px
+}
+
+.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{
+ border-top-right-radius:3px
+}
+
+.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{
+ border-bottom-right-radius:3px;
+ border-bottom-left-radius:3px
+}
+
+.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{
+ border-bottom-right-radius:3px;
+ border-bottom-left-radius:3px
+}
+
+.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{
+ border-bottom-left-radius:3px
+}
+
+.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{
+ border-bottom-right-radius:3px
+}
+
+.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{
+ border-top:1px solid #ddd
+}
+
+.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{
+ border-top:0
+}
+
+.panel>.table-bordered,.panel>.table-responsive>.table-bordered{
+ border:0
+}
+
+.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{
+ border-left:0
+}
+
+.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{
+ border-right:0
+}
+
+.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{
+ border-bottom:0
+}
+
+.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{
+ border-bottom:0
+}
+
+.panel>.table-responsive{
+ margin-bottom:0;
+ border:0
+}
+
+.panel-group{
+ margin-bottom:20px
+}
+
+.panel-group .panel{
+ margin-bottom:0;
+ border-radius:4px
+}
+
+.panel-group .panel+.panel{
+ margin-top:5px
+}
+
+.panel-group .panel-heading{
+ border-bottom:0
+}
+
+.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{
+ border-top:1px solid #ddd
+}
+
+.panel-group .panel-footer{
+ border-top:0
+}
+
+.panel-group .panel-footer+.panel-collapse .panel-body{
+ border-bottom:1px solid #ddd
+}
+
+.panel-default{
+ border-color:#ddd
+}
+
+.panel-default>.panel-heading{
+ color:#333;
+ background-color:#f5f5f5;
+ border-color:#ddd
+}
+
+.panel-default>.panel-heading+.panel-collapse>.panel-body{
+ border-top-color:#ddd
+}
+
+.panel-default>.panel-heading .badge{
+ color:#f5f5f5;
+ background-color:#333
+}
+
+.panel-default>.panel-footer+.panel-collapse>.panel-body{
+ border-bottom-color:#ddd
+}
+
+.panel-primary{
+ border-color:#337ab7
+}
+
+.panel-primary>.panel-heading{
+ color:#fff;
+ background-color:#337ab7;
+ border-color:#337ab7
+}
+
+.panel-primary>.panel-heading+.panel-collapse>.panel-body{
+ border-top-color:#337ab7
+}
+
+.panel-primary>.panel-heading .badge{
+ color:#337ab7;
+ background-color:#fff
+}
+
+.panel-primary>.panel-footer+.panel-collapse>.panel-body{
+ border-bottom-color:#337ab7
+}
+
+.panel-success{
+ border-color:#d6e9c6
+}
+
+.panel-success>.panel-heading{
+ color:#3c763d;
+ background-color:#dff0d8;
+ border-color:#d6e9c6
+}
+
+.panel-success>.panel-heading+.panel-collapse>.panel-body{
+ border-top-color:#d6e9c6
+}
+
+.panel-success>.panel-heading .badge{
+ color:#dff0d8;
+ background-color:#3c763d
+}
+
+.panel-success>.panel-footer+.panel-collapse>.panel-body{
+ border-bottom-color:#d6e9c6
+}
+
+.panel-info{
+ border-color:#bce8f1
+}
+
+.panel-info>.panel-heading{
+ color:#31708f;
+ background-color:#d9edf7;
+ border-color:#bce8f1
+}
+
+.panel-info>.panel-heading+.panel-collapse>.panel-body{
+ border-top-color:#bce8f1
+}
+
+.panel-info>.panel-heading .badge{
+ color:#d9edf7;
+ background-color:#31708f
+}
+
+.panel-info>.panel-footer+.panel-collapse>.panel-body{
+ border-bottom-color:#bce8f1
+}
+
+.panel-warning{
+ border-color:#faebcc
+}
+
+.panel-warning>.panel-heading{
+ color:#8a6d3b;
+ background-color:#fcf8e3;
+ border-color:#faebcc
+}
+
+.panel-warning>.panel-heading+.panel-collapse>.panel-body{
+ border-top-color:#faebcc
+}
+
+.panel-warning>.panel-heading .badge{
+ color:#fcf8e3;
+ background-color:#8a6d3b
+}
+
+.panel-warning>.panel-footer+.panel-collapse>.panel-body{
+ border-bottom-color:#faebcc
+}
+
+.panel-danger{
+ border-color:#ebccd1
+}
+
+.panel-danger>.panel-heading{
+ color:#a94442;
+ background-color:#f2dede;
+ border-color:#ebccd1
+}
+
+.panel-danger>.panel-heading+.panel-collapse>.panel-body{
+ border-top-color:#ebccd1
+}
+
+.panel-danger>.panel-heading .badge{
+ color:#f2dede;
+ background-color:#a94442
+}
+
+.panel-danger>.panel-footer+.panel-collapse>.panel-body{
+ border-bottom-color:#ebccd1
+}
+
+.embed-responsive{
+ position:relative;
+ display:block;
+ height:0;
+ padding:0;
+ overflow:hidden
+}
+
+.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{
+ position:absolute;
+ top:0;
+ bottom:0;
+ left:0;
+ width:100%;
+ height:100%;
+ border:0
+}
+
+.embed-responsive-16by9{
+ padding-bottom:56.25%
+}
+
+.embed-responsive-4by3{
+ padding-bottom:75%
+}
+
+.well{
+ min-height:20px;
+ padding:19px;
+ margin-bottom:20px;
+ background-color:#f5f5f5;
+ border:1px solid #e3e3e3;
+ border-radius:4px;
+ -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);
+ box-shadow:inset 0 1px 1px rgba(0,0,0,.05)
+}
+
+.well blockquote{
+ border-color:#ddd;
+ border-color:rgba(0,0,0,.15)
+}
+
+.well-lg{
+ padding:24px;
+ border-radius:6px
+}
+
+.well-sm{
+ padding:9px;
+ border-radius:3px
+}
+
+.close{
+ float:right;
+ font-size:21px;
+ font-weight:700;
+ line-height:1;
+ color:#000;
+ text-shadow:0 1px 0 #fff;
+ filter:alpha(opacity=20);
+ opacity:.2
+}
+
+.close:focus,.close:hover{
+ color:#000;
+ text-decoration:none;
+ cursor:pointer;
+ filter:alpha(opacity=50);
+ opacity:.5
+}
+
+button.close{
+ -webkit-appearance:none;
+ padding:0;
+ cursor:pointer;
+ background:0 0;
+ border:0
+}
+
+.modal-open{
+ overflow:hidden
+}
+
+.modal{
+ position:fixed;
+ top:0;
+ right:0;
+ bottom:0;
+ left:0;
+ z-index:1050;
+ display:none;
+ overflow:hidden;
+ -webkit-overflow-scrolling:touch;
+ outline:0
+}
+
+.modal.fade .modal-dialog{
+ -webkit-transition:-webkit-transform .3s ease-out;
+ -o-transition:-o-transform .3s ease-out;
+ transition:transform .3s ease-out;
+ -webkit-transform:translate(0,-25%);
+ -ms-transform:translate(0,-25%);
+ -o-transform:translate(0,-25%);
+ transform:translate(0,-25%)
+}
+
+.modal.in .modal-dialog{
+ -webkit-transform:translate(0,0);
+ -ms-transform:translate(0,0);
+ -o-transform:translate(0,0);
+ transform:translate(0,0)
+}
+
+.modal-open .modal{
+ overflow-x:hidden;
+ overflow-y:auto
+}
+
+.modal-dialog{
+ position:relative;
+ width:auto;
+ margin:10px
+}
+
+.modal-content{
+ position:relative;
+ background-color:#fff;
+ -webkit-background-clip:padding-box;
+ background-clip:padding-box;
+ border:1px solid #999;
+ border:1px solid rgba(0,0,0,.2);
+ border-radius:6px;
+ outline:0;
+ -webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);
+ box-shadow:0 3px 9px rgba(0,0,0,.5)
+}
+
+.modal-backdrop{
+ position:fixed;
+ top:0;
+ right:0;
+ bottom:0;
+ left:0;
+ z-index:1040;
+ background-color:#000
+}
+
+.modal-backdrop.fade{
+ filter:alpha(opacity=0);
+ opacity:0
+}
+
+.modal-backdrop.in{
+ filter:alpha(opacity=50);
+ opacity:.5
+}
+
+.modal-header{
+ min-height:16.43px;
+ padding:15px;
+ border-bottom:1px solid #e5e5e5
+}
+
+.modal-header .close{
+ margin-top:-2px
+}
+
+.modal-title{
+ margin:0;
+ line-height:1.42857143
+}
+
+.modal-body{
+ position:relative;
+ padding:15px
+}
+
+.modal-footer{
+ padding:15px;
+ text-align:right;
+ border-top:1px solid #e5e5e5
+}
+
+.modal-footer .btn+.btn{
+ margin-bottom:0;
+ margin-left:5px
+}
+
+.modal-footer .btn-group .btn+.btn{
+ margin-left:-1px
+}
+
+.modal-footer .btn-block+.btn-block{
+ margin-left:0
+}
+
+.modal-scrollbar-measure{
+ position:absolute;
+ top:-9999px;
+ width:50px;
+ height:50px;
+ overflow:scroll
+}
+
+@media (min-width:768px){
+ .modal-dialog{
+ width:600px;
+ margin:30px auto
+ }
+
+ .modal-content{
+ -webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);
+ box-shadow:0 5px 15px rgba(0,0,0,.5)
+ }
+
+ .modal-sm{
+ width:300px
+ }
+
+}
+
+@media (min-width:992px){
+ .modal-lg{
+ width:900px
+ }
+
+}
+
+.tooltip{
+ position:absolute;
+ z-index:1070;
+ display:block;
+ font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size:12px;
+ font-style:normal;
+ font-weight:400;
+ line-height:1.42857143;
+ text-align:left;
+ text-align:start;
+ text-decoration:none;
+ text-shadow:none;
+ text-transform:none;
+ letter-spacing:normal;
+ word-break:normal;
+ word-spacing:normal;
+ word-wrap:normal;
+ white-space:normal;
+ filter:alpha(opacity=0);
+ opacity:0;
+ line-break:auto
+}
+
+.tooltip.in{
+ filter:alpha(opacity=90);
+ opacity:.9
+}
+
+.tooltip.top{
+ padding:5px 0;
+ margin-top:-3px
+}
+
+.tooltip.right{
+ padding:0 5px;
+ margin-left:3px
+}
+
+.tooltip.bottom{
+ padding:5px 0;
+ margin-top:3px
+}
+
+.tooltip.left{
+ padding:0 5px;
+ margin-left:-3px
+}
+
+.tooltip-inner{
+ max-width:200px;
+ padding:3px 8px;
+ color:#fff;
+ text-align:center;
+ background-color:#000;
+ border-radius:4px
+}
+
+.tooltip-arrow{
+ position:absolute;
+ width:0;
+ height:0;
+ border-color:transparent;
+ border-style:solid
+}
+
+.tooltip.top .tooltip-arrow{
+ bottom:0;
+ left:50%;
+ margin-left:-5px;
+ border-width:5px 5px 0;
+ border-top-color:#000
+}
+
+.tooltip.top-left .tooltip-arrow{
+ right:5px;
+ bottom:0;
+ margin-bottom:-5px;
+ border-width:5px 5px 0;
+ border-top-color:#000
+}
+
+.tooltip.top-right .tooltip-arrow{
+ bottom:0;
+ left:5px;
+ margin-bottom:-5px;
+ border-width:5px 5px 0;
+ border-top-color:#000
+}
+
+.tooltip.right .tooltip-arrow{
+ top:50%;
+ left:0;
+ margin-top:-5px;
+ border-width:5px 5px 5px 0;
+ border-right-color:#000
+}
+
+.tooltip.left .tooltip-arrow{
+ top:50%;
+ right:0;
+ margin-top:-5px;
+ border-width:5px 0 5px 5px;
+ border-left-color:#000
+}
+
+.tooltip.bottom .tooltip-arrow{
+ top:0;
+ left:50%;
+ margin-left:-5px;
+ border-width:0 5px 5px;
+ border-bottom-color:#000
+}
+
+.tooltip.bottom-left .tooltip-arrow{
+ top:0;
+ right:5px;
+ margin-top:-5px;
+ border-width:0 5px 5px;
+ border-bottom-color:#000
+}
+
+.tooltip.bottom-right .tooltip-arrow{
+ top:0;
+ left:5px;
+ margin-top:-5px;
+ border-width:0 5px 5px;
+ border-bottom-color:#000
+}
+
+.popover{
+ position:absolute;
+ top:0;
+ left:0;
+ z-index:1060;
+ display:none;
+ max-width:276px;
+ padding:1px;
+ font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
+ font-size:14px;
+ font-style:normal;
+ font-weight:400;
+ line-height:1.42857143;
+ text-align:left;
+ text-align:start;
+ text-decoration:none;
+ text-shadow:none;
+ text-transform:none;
+ letter-spacing:normal;
+ word-break:normal;
+ word-spacing:normal;
+ word-wrap:normal;
+ white-space:normal;
+ background-color:#fff;
+ -webkit-background-clip:padding-box;
+ background-clip:padding-box;
+ border:1px solid #ccc;
+ border:1px solid rgba(0,0,0,.2);
+ border-radius:6px;
+ -webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);
+ box-shadow:0 5px 10px rgba(0,0,0,.2);
+ line-break:auto
+}
+
+.popover.top{
+ margin-top:-10px
+}
+
+.popover.right{
+ margin-left:10px
+}
+
+.popover.bottom{
+ margin-top:10px
+}
+
+.popover.left{
+ margin-left:-10px
+}
+
+.popover-title{
+ padding:8px 14px;
+ margin:0;
+ font-size:14px;
+ background-color:#f7f7f7;
+ border-bottom:1px solid #ebebeb;
+ border-radius:5px 5px 0 0
+}
+
+.popover-content{
+ padding:9px 14px
+}
+
+.popover>.arrow,.popover>.arrow:after{
+ position:absolute;
+ display:block;
+ width:0;
+ height:0;
+ border-color:transparent;
+ border-style:solid
+}
+
+.popover>.arrow{
+ border-width:11px
+}
+
+.popover>.arrow:after{
+ content:"";
+ border-width:10px
+}
+
+.popover.top>.arrow{
+ bottom:-11px;
+ left:50%;
+ margin-left:-11px;
+ border-top-color:#999;
+ border-top-color:rgba(0,0,0,.25);
+ border-bottom-width:0
+}
+
+.popover.top>.arrow:after{
+ bottom:1px;
+ margin-left:-10px;
+ content:" ";
+ border-top-color:#fff;
+ border-bottom-width:0
+}
+
+.popover.right>.arrow{
+ top:50%;
+ left:-11px;
+ margin-top:-11px;
+ border-right-color:#999;
+ border-right-color:rgba(0,0,0,.25);
+ border-left-width:0
+}
+
+.popover.right>.arrow:after{
+ bottom:-10px;
+ left:1px;
+ content:" ";
+ border-right-color:#fff;
+ border-left-width:0
+}
+
+.popover.bottom>.arrow{
+ top:-11px;
+ left:50%;
+ margin-left:-11px;
+ border-top-width:0;
+ border-bottom-color:#999;
+ border-bottom-color:rgba(0,0,0,.25)
+}
+
+.popover.bottom>.arrow:after{
+ top:1px;
+ margin-left:-10px;
+ content:" ";
+ border-top-width:0;
+ border-bottom-color:#fff
+}
+
+.popover.left>.arrow{
+ top:50%;
+ right:-11px;
+ margin-top:-11px;
+ border-right-width:0;
+ border-left-color:#999;
+ border-left-color:rgba(0,0,0,.25)
+}
+
+.popover.left>.arrow:after{
+ right:1px;
+ bottom:-10px;
+ content:" ";
+ border-right-width:0;
+ border-left-color:#fff
+}
+
+.carousel{
+ position:relative
+}
+
+.carousel-inner{
+ position:relative;
+ width:100%;
+ overflow:hidden
+}
+
+.carousel-inner>.item{
+ position:relative;
+ display:none;
+ -webkit-transition:.6s ease-in-out left;
+ -o-transition:.6s ease-in-out left;
+ transition:.6s ease-in-out left
+}
+
+.carousel-inner>.item>a>img,.carousel-inner>.item>img{
+ line-height:1
+}
+
+@media all and (transform-3d),(-webkit-transform-3d){
+ .carousel-inner>.item{
+ -webkit-transition:-webkit-transform .6s ease-in-out;
+ -o-transition:-o-transform .6s ease-in-out;
+ transition:transform .6s ease-in-out;
+ -webkit-backface-visibility:hidden;
+ backface-visibility:hidden;
+ -webkit-perspective:1000px;
+ perspective:1000px
+ }
+
+ .carousel-inner>.item.active.right,.carousel-inner>.item.next{
+ left:0;
+ -webkit-transform:translate3d(100%,0,0);
+ transform:translate3d(100%,0,0)
+ }
+
+ .carousel-inner>.item.active.left,.carousel-inner>.item.prev{
+ left:0;
+ -webkit-transform:translate3d(-100%,0,0);
+ transform:translate3d(-100%,0,0)
+ }
+
+ .carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{
+ left:0;
+ -webkit-transform:translate3d(0,0,0);
+ transform:translate3d(0,0,0)
+ }
+
+}
+
+.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{
+ display:block
+}
+
+.carousel-inner>.active{
+ left:0
+}
+
+.carousel-inner>.next,.carousel-inner>.prev{
+ position:absolute;
+ top:0;
+ width:100%
+}
+
+.carousel-inner>.next{
+ left:100%
+}
+
+.carousel-inner>.prev{
+ left:-100%
+}
+
+.carousel-inner>.next.left,.carousel-inner>.prev.right{
+ left:0
+}
+
+.carousel-inner>.active.left{
+ left:-100%
+}
+
+.carousel-inner>.active.right{
+ left:100%
+}
+
+.carousel-control{
+ position:absolute;
+ top:0;
+ bottom:0;
+ left:0;
+ width:15%;
+ font-size:20px;
+ color:#fff;
+ text-align:center;
+ text-shadow:0 1px 2px rgba(0,0,0,.6);
+ filter:alpha(opacity=50);
+ opacity:.5
+}
+
+.carousel-control.left{
+ background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
+ background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
+ background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));
+ background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+ background-repeat:repeat-x
+}
+
+.carousel-control.right{
+ right:0;
+ left:auto;
+ background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
+ background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
+ background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));
+ background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+ background-repeat:repeat-x
+}
+
+.carousel-control:focus,.carousel-control:hover{
+ color:#fff;
+ text-decoration:none;
+ filter:alpha(opacity=90);
+ outline:0;
+ opacity:.9
+}
+
+.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
+ position:absolute;
+ top:50%;
+ z-index:5;
+ display:inline-block;
+ margin-top:-10px
+}
+
+.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
+ left:50%;
+ margin-left:-10px
+}
+
+.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
+ right:50%;
+ margin-right:-10px
+}
+
+.carousel-control .icon-next,.carousel-control .icon-prev{
+ width:20px;
+ height:20px;
+ font-family:serif;
+ line-height:1
+}
+
+.carousel-control .icon-prev:before{
+ content:'\2039'
+}
+
+.carousel-control .icon-next:before{
+ content:'\203a'
+}
+
+.carousel-indicators{
+ position:absolute;
+ bottom:10px;
+ left:50%;
+ z-index:15;
+ width:60%;
+ padding-left:0;
+ margin-left:-30%;
+ text-align:center;
+ list-style:none
+}
+
+.carousel-indicators li{
+ display:inline-block;
+ width:10px;
+ height:10px;
+ margin:1px;
+ text-indent:-999px;
+ cursor:pointer;
+ background-color:#000\9;
+ background-color:rgba(0,0,0,0);
+ border:1px solid #fff;
+ border-radius:10px
+}
+
+.carousel-indicators .active{
+ width:12px;
+ height:12px;
+ margin:0;
+ background-color:#fff
+}
+
+.carousel-caption{
+ position:absolute;
+ right:15%;
+ bottom:20px;
+ left:15%;
+ z-index:10;
+ padding-top:20px;
+ padding-bottom:20px;
+ color:#fff;
+ text-align:center;
+ text-shadow:0 1px 2px rgba(0,0,0,.6)
+}
+
+.carousel-caption .btn{
+ text-shadow:none
+}
+
+@media screen and (min-width:768px){
+ .carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
+ width:30px;
+ height:30px;
+ margin-top:-15px;
+ font-size:30px
+ }
+
+ .carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
+ margin-left:-15px
+ }
+
+ .carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
+ margin-right:-15px
+ }
+
+ .carousel-caption{
+ right:20%;
+ left:20%;
+ padding-bottom:30px
+ }
+
+ .carousel-indicators{
+ bottom:20px
+ }
+
+}
+
+.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{
+ display:table;
+ content:" "
+}
+
+.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{
+ clear:both
+}
+
+.center-block{
+ display:block;
+ margin-right:auto;
+ margin-left:auto
+}
+
+.pull-right{
+ float:right!important
+}
+
+.pull-left{
+ float:left!important
+}
+
+.hide{
+ display:none!important
+}
+
+.show{
+ display:block!important
+}
+
+.invisible{
+ visibility:hidden
+}
+
+.text-hide{
+ font:0/0 a;
+ color:transparent;
+ text-shadow:none;
+ background-color:transparent;
+ border:0
+}
+
+.hidden{
+ display:none!important
+}
+
+.affix{
+ position:fixed
+}
+
+@-ms-viewport{
+ width:device-width
+}
+
+.visible-lg,.visible-md,.visible-sm,.visible-xs{
+ display:none!important
+}
+
+.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{
+ display:none!important
+}
+
+@media (max-width:767px){
+ .visible-xs{
+ display:block!important
+ }
+
+ table.visible-xs{
+ display:table!important
+ }
+
+ tr.visible-xs{
+ display:table-row!important
+ }
+
+ td.visible-xs,th.visible-xs{
+ display:table-cell!important
+ }
+
+}
+
+@media (max-width:767px){
+ .visible-xs-block{
+ display:block!important
+ }
+
+}
+
+@media (max-width:767px){
+ .visible-xs-inline{
+ display:inline!important
+ }
+
+}
+
+@media (max-width:767px){
+ .visible-xs-inline-block{
+ display:inline-block!important
+ }
+
+}
+
+@media (min-width:768px) and (max-width:991px){
+ .visible-sm{
+ display:block!important
+ }
+
+ table.visible-sm{
+ display:table!important
+ }
+
+ tr.visible-sm{
+ display:table-row!important
+ }
+
+ td.visible-sm,th.visible-sm{
+ display:table-cell!important
+ }
+
+}
+
+@media (min-width:768px) and (max-width:991px){
+ .visible-sm-block{
+ display:block!important
+ }
+
+}
+
+@media (min-width:768px) and (max-width:991px){
+ .visible-sm-inline{
+ display:inline!important
+ }
+
+}
+
+@media (min-width:768px) and (max-width:991px){
+ .visible-sm-inline-block{
+ display:inline-block!important
+ }
+
+}
+
+@media (min-width:992px) and (max-width:1199px){
+ .visible-md{
+ display:block!important
+ }
+
+ table.visible-md{
+ display:table!important
+ }
+
+ tr.visible-md{
+ display:table-row!important
+ }
+
+ td.visible-md,th.visible-md{
+ display:table-cell!important
+ }
+
+}
+
+@media (min-width:992px) and (max-width:1199px){
+ .visible-md-block{
+ display:block!important
+ }
+
+}
+
+@media (min-width:992px) and (max-width:1199px){
+ .visible-md-inline{
+ display:inline!important
+ }
+
+}
+
+@media (min-width:992px) and (max-width:1199px){
+ .visible-md-inline-block{
+ display:inline-block!important
+ }
+
+}
+
+@media (min-width:1200px){
+ .visible-lg{
+ display:block!important
+ }
+
+ table.visible-lg{
+ display:table!important
+ }
+
+ tr.visible-lg{
+ display:table-row!important
+ }
+
+ td.visible-lg,th.visible-lg{
+ display:table-cell!important
+ }
+
+}
+
+@media (min-width:1200px){
+ .visible-lg-block{
+ display:block!important
+ }
+
+}
+
+@media (min-width:1200px){
+ .visible-lg-inline{
+ display:inline!important
+ }
+
+}
+
+@media (min-width:1200px){
+ .visible-lg-inline-block{
+ display:inline-block!important
+ }
+
+}
+
+@media (max-width:767px){
+ .hidden-xs{
+ display:none!important
+ }
+
+}
+
+@media (min-width:768px) and (max-width:991px){
+ .hidden-sm{
+ display:none!important
+ }
+
+}
+
+@media (min-width:992px) and (max-width:1199px){
+ .hidden-md{
+ display:none!important
+ }
+
+}
+
+@media (min-width:1200px){
+ .hidden-lg{
+ display:none!important
+ }
+
+}
+
+.visible-print{
+ display:none!important
+}
+
+@media print{
+ .visible-print{
+ display:block!important
+ }
+
+ table.visible-print{
+ display:table!important
+ }
+
+ tr.visible-print{
+ display:table-row!important
+ }
+
+ td.visible-print,th.visible-print{
+ display:table-cell!important
+ }
+
+}
+
+.visible-print-block{
+ display:none!important
+}
+
+@media print{
+ .visible-print-block{
+ display:block!important
+ }
+
+}
+
+.visible-print-inline{
+ display:none!important
+}
+
+@media print{
+ .visible-print-inline{
+ display:inline!important
+ }
+
+}
+
+.visible-print-inline-block{
+ display:none!important
+}
+
+@media print{
+ .visible-print-inline-block{
+ display:inline-block!important
+ }
+
+}
+
+@media print{
+ .hidden-print{
+ display:none!important
+ }
+
+}
diff --git a/public/mstsc/css/signin.css b/public/mstsc/css/signin.css
new file mode 100644
index 00000000..f83480a9
--- /dev/null
+++ b/public/mstsc/css/signin.css
@@ -0,0 +1,46 @@
+body {
+ overflow:hidden;
+}
+
+.form-signin {
+ max-width: 330px;
+ padding: 15px;
+ margin: 0 auto;
+}
+.form-signin .form-signin-heading,
+.form-signin .checkbox {
+ margin-bottom: 10px;
+}
+.form-signin .checkbox {
+ font-weight: normal;
+}
+.form-signin .form-control {
+ position: relative;
+ height: auto;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 10px;
+ font-size: 16px;
+}
+.form-signin .form-control:focus {
+ z-index: 2;
+}
+.form-signin input[type="text"] {
+ margin-bottom: -1px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.form-signin input[type="password"] {
+ margin-bottom: 10px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.logo {
+ width : 200px;
+ margin-left : auto;
+ margin-right : auto;
+ display : block;
+ margin-bottom: 10px;
+}
diff --git a/public/mstsc/index.html b/public/mstsc/index.html
new file mode 100644
index 00000000..4583ce37
--- /dev/null
+++ b/public/mstsc/index.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+ RDP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/mstsc/js/canvas.js b/public/mstsc/js/canvas.js
new file mode 100644
index 00000000..73f6ee18
--- /dev/null
+++ b/public/mstsc/js/canvas.js
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2015 Sylvain Peyrefitte
+ *
+ * This file is part of mstsc.js.
+ *
+ * mstsc.js is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+(function() {
+
+ /**
+ * decompress bitmap from RLE algorithm
+ * @param bitmap {object} bitmap object of bitmap event of node-rdpjs
+ */
+ function decompress (bitmap) {
+ var fName = null;
+ switch (bitmap.bitsPerPixel) {
+ case 15:
+ fName = 'bitmap_decompress_15';
+ break;
+ case 16:
+ fName = 'bitmap_decompress_16';
+ break;
+ case 24:
+ fName = 'bitmap_decompress_24';
+ break;
+ case 32:
+ fName = 'bitmap_decompress_32';
+ break;
+ default:
+ throw 'invalid bitmap data format';
+ }
+
+ var input = new Uint8Array(bitmap.data);
+ var inputPtr = Module._malloc(input.length);
+ var inputHeap = new Uint8Array(Module.HEAPU8.buffer, inputPtr, input.length);
+ inputHeap.set(input);
+
+ var output_width = bitmap.destRight - bitmap.destLeft + 1;
+ var output_height = bitmap.destBottom - bitmap.destTop + 1;
+ var ouputSize = output_width * output_height * 4;
+ var outputPtr = Module._malloc(ouputSize);
+
+ var outputHeap = new Uint8Array(Module.HEAPU8.buffer, outputPtr, ouputSize);
+
+ var res = Module.ccall(fName,
+ 'number',
+ ['number', 'number', 'number', 'number', 'number', 'number', 'number', 'number'],
+ [outputHeap.byteOffset, output_width, output_height, bitmap.width, bitmap.height, inputHeap.byteOffset, input.length]
+ );
+
+ var output = new Uint8ClampedArray(outputHeap.buffer, outputHeap.byteOffset, ouputSize);
+
+ Module._free(inputPtr);
+ Module._free(outputPtr);
+
+ return { width : output_width, height : output_height, data : output };
+ }
+
+ /**
+ * Un compress bitmap are reverse in y axis
+ */
+ function reverse (bitmap) {
+ return { width : bitmap.width, height : bitmap.height, data : new Uint8ClampedArray(bitmap.data) };
+ }
+
+ /**
+ * Canvas renderer
+ * @param canvas {canvas} use for rendering
+ */
+ function Canvas(canvas) {
+ this.canvas = canvas;
+ this.ctx = canvas.getContext("2d");
+ }
+
+ Canvas.prototype = {
+ /**
+ * update canvas with new bitmap
+ * @param bitmap {object}
+ */
+ update : function (bitmap) {
+ var output = null;
+ if (bitmap.isCompress) {
+ output = decompress(bitmap);
+ }
+ else {
+ output = reverse(bitmap);
+ }
+
+ // use image data to use asm.js
+ var imageData = this.ctx.createImageData(output.width, output.height);
+ imageData.data.set(output.data);
+ this.ctx.putImageData(imageData, bitmap.destLeft, bitmap.destTop);
+ }
+ }
+
+ /**
+ * Module export
+ */
+ Mstsc.Canvas = {
+ create : function (canvas) {
+ return new Canvas(canvas);
+ }
+ }
+})();
diff --git a/public/mstsc/js/client.js b/public/mstsc/js/client.js
new file mode 100644
index 00000000..61842fc4
--- /dev/null
+++ b/public/mstsc/js/client.js
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2015 Sylvain Peyrefitte
+ *
+ * This file is part of mstsc.js.
+ *
+ * mstsc.js is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+(function() {
+ /**
+ * Mouse button mapping
+ * @param button {integer} client button number
+ */
+ function mouseButtonMap(button) {
+ switch(button) {
+ case 0: return 1;
+ case 2: return 2;
+ default: return 0;
+ }
+ };
+
+ /**
+ * Mstsc client
+ * Input client connection (mouse and keyboard)
+ * bitmap processing
+ * @param canvas {canvas} rendering element
+ */
+ function Client(canvas) {
+ this.canvas = canvas;
+ // create renderer
+ this.render = new Mstsc.Canvas.create(this.canvas);
+ this.socket = null;
+ this.activeSession = false;
+ this.install();
+ }
+
+ Client.prototype = {
+ install : function () {
+ var self = this;
+
+ // Bind mouse move event
+ this.canvas.addEventListener('mousemove', function (e) {
+ if (!self.socket || !self.activeSession) return;
+ var offset = Mstsc.elementOffset(self.canvas);
+ self.socket.send(JSON.stringify(['mouse', e.clientX - offset.left, e.clientY - offset.top, 0, false]));
+ e.preventDefault();
+ return false;
+ });
+ this.canvas.addEventListener('mousedown', function (e) {
+ if (!self.socket || !self.activeSession) return;
+
+ var offset = Mstsc.elementOffset(self.canvas);
+ self.socket.send(JSON.stringify(['mouse', e.clientX - offset.left, e.clientY - offset.top, mouseButtonMap(e.button), true]));
+ e.preventDefault();
+ return false;
+ });
+ this.canvas.addEventListener('mouseup', function (e) {
+ if (!self.socket || !self.activeSession) return;
+
+ var offset = Mstsc.elementOffset(self.canvas);
+ self.socket.send(JSON.stringify(['mouse', e.clientX - offset.left, e.clientY - offset.top, mouseButtonMap(e.button), false]));
+ e.preventDefault();
+ return false;
+ });
+ this.canvas.addEventListener('contextmenu', function (e) {
+ if (!self.socket || !self.activeSession) return;
+ var offset = Mstsc.elementOffset(self.canvas);
+ self.socket.send(JSON.stringify(['mouse', e.clientX - offset.left, e.clientY - offset.top, mouseButtonMap(e.button), false]));
+ e.preventDefault();
+ return false;
+ });
+ this.canvas.addEventListener('DOMMouseScroll', function (e) {
+ if (!self.socket || !self.activeSession) return;
+ var isHorizontal = false;
+ var delta = e.detail;
+ var step = Math.round(Math.abs(delta) * 15 / 8);
+ var offset = Mstsc.elementOffset(self.canvas);
+ self.socket.send(JSON.stringify(['wheel', e.clientX - offset.left, e.clientY - offset.top, step, delta > 0, isHorizontal]));
+ e.preventDefault();
+ return false;
+ });
+ this.canvas.addEventListener('mousewheel', function (e) {
+ if (!self.socket || !self.activeSession) return;
+ var isHorizontal = Math.abs(e.deltaX) > Math.abs(e.deltaY);
+ var delta = isHorizontal?e.deltaX:e.deltaY;
+ var step = Math.round(Math.abs(delta) * 15 / 8);
+ var offset = Mstsc.elementOffset(self.canvas);
+ self.socket.send(JSON.stringify(['wheel', e.clientX - offset.left, e.clientY - offset.top, step, delta > 0, isHorizontal]));
+ e.preventDefault();
+ return false;
+ });
+
+ // Bind keyboard event
+ window.addEventListener('keydown', function (e) {
+ if (!self.socket || !self.activeSession) return;
+ self.socket.send(JSON.stringify(['scancode', Mstsc.scancode(e), true]));
+ e.preventDefault();
+ return false;
+ });
+ window.addEventListener('keyup', function (e) {
+ if (!self.socket || !self.activeSession) return;
+ self.socket.send(JSON.stringify(['scancode', Mstsc.scancode(e), false]));
+ e.preventDefault();
+ return false;
+ });
+
+ return this;
+ },
+ /**
+ * connect
+ * @param ip {string} ip target for rdp
+ * @param domain {string} microsoft domain
+ * @param username {string} session username
+ * @param password {string} session password
+ * @param next {function} asynchrone end callback
+ */
+ connect : function (ip, domain, username, password, next) {
+ // start connection
+ var self = this;
+ this.socket = new WebSocket("wss://" + window.location.host + "/mstsc/relay.ashx");
+ this.socket.onopen = function () {
+ console.log("WS-OPEN");
+ self.socket.send(JSON.stringify(['infos', {
+ ip: ip,
+ port: 3389,
+ screen: {
+ width: self.canvas.width,
+ height: self.canvas.height
+ },
+ domain: domain,
+ username: username,
+ password: password,
+ locale: Mstsc.locale()
+ }]));
+ };
+ this.socket.onmessage = function (evt) {
+ var msg = JSON.parse(evt.data);
+ switch (msg[0]) {
+ case 'rdp-connect': {
+ //console.log('[mstsc.js] connected');
+ self.activeSession = true;
+ break;
+ }
+ case 'rdp-bitmap': {
+ var bitmap = msg[1];
+ bitmap.data = new Uint8Array(bitmap.data.data).buffer;
+ //console.log('[mstsc.js] bitmap update bpp : ' + bitmap.bitsPerPixel);
+ self.render.update(bitmap);
+ break;
+ }
+ case 'rdp-close': {
+ //console.log('[mstsc.js] close');
+ self.activeSession = false;
+ next(null);
+ break;
+ }
+ case 'rdp-error': {
+ var err = msg[1];
+ console.log('[mstsc.js] error : ' + err.code + '(' + err.message + ')');
+ self.activeSession = false;
+ next(err);
+ break;
+ }
+ }
+ };
+ this.socket.onclose = function () {
+ console.log("WS-CLOSE");
+ self.activeSession = false;
+ next(null);
+ };
+ }
+ }
+
+ Mstsc.client = { create : function (canvas) { return new Client(canvas); } }
+})();
diff --git a/public/mstsc/js/keyboard.js b/public/mstsc/js/keyboard.js
new file mode 100644
index 00000000..531a9d7c
--- /dev/null
+++ b/public/mstsc/js/keyboard.js
@@ -0,0 +1,510 @@
+/*
+ * Copyright (c) 2015 Sylvain Peyrefitte
+ *
+ * This file is part of mstsc.js.
+ *
+ * mstsc.js is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+(function() {
+ // https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code
+ var KeyMap = {
+ "" : 0x0000,
+ "Escape" : 0x0001,
+ "Digit1" : 0x0002,
+ "Digit2" : 0x0003,
+ "Digit3" : 0x0004,
+ "Digit4" : 0x0005,
+ "Digit5" : 0x0006,
+ "Digit6" : 0x0007,
+ "Digit7" : 0x0008,
+ "Digit8" : 0x0009,
+ "Digit9" : 0x000A,
+ "Digit0" : 0x000B,
+ "Minus" : 0x000C,
+ "Equal" : 0x000D,
+ "Backspace" : 0x000E,
+ "Tab" : 0x000F,
+ "KeyQ" : 0x0010,
+ "KeyW" : 0x0011,
+ "KeyE" : 0x0012,
+ "KeyR" : 0x0013,
+ "KeyT" : 0x0014,
+ "KeyY" : 0x0015,
+ "KeyU" : 0x0016,
+ "KeyI" : 0x0017,
+ "KeyO" : 0x0018,
+ "KeyP" : 0x0019,
+ "BracketLeft" : 0x001A,
+ "BracketRight" : 0x001B,
+ "Enter" : 0x001C,
+ "ControlLeft" : 0x001D,
+ "KeyA" : 0x001E,
+ "KeyS" : 0x001F,
+ "KeyD" : 0x0020,
+ "KeyF" : 0x0021,
+ "KeyG" : 0x0022,
+ "KeyH" : 0x0023,
+ "KeyJ" : 0x0024,
+ "KeyK" : 0x0025,
+ "KeyL" : 0x0026,
+ "Semicolon" : 0x0027,
+ "Quote" : 0x0028,
+ "Backquote" : 0x0029,
+ "ShiftLeft" : 0x002A,
+ "Backslash" : 0x002B,
+ "KeyZ" : 0x002C,
+ "KeyX" : 0x002D,
+ "KeyC" : 0x002E,
+ "KeyV" : 0x002F,
+ "KeyB" : 0x0030,
+ "KeyN" : 0x0031,
+ "KeyM" : 0x0032,
+ "Comma" : 0x0033,
+ "Period" : 0x0034,
+ "Slash" : 0x0035,
+ "ShiftRight" : 0x0036,
+ "NumpadMultiply" : 0x0037,
+ "AltLeft" : 0x0038,
+ "Space" : 0x0039,
+ "CapsLock" : 0x003A,
+ "F1" : 0x003B,
+ "F2" : 0x003C,
+ "F3" : 0x003D,
+ "F4" : 0x003E,
+ "F5" : 0x003F,
+ "F6" : 0x0040,
+ "F7" : 0x0041,
+ "F8" : 0x0042,
+ "F9" : 0x0043,
+ "F10" : 0x0044,
+ "Pause" : 0x0045,
+ "ScrollLock" : 0x0046,
+ "Numpad7" : 0x0047,
+ "Numpad8" : 0x0048,
+ "Numpad9" : 0x0049,
+ "NumpadSubtract" : 0x004A,
+ "Numpad4" : 0x004B,
+ "Numpad5" : 0x004C,
+ "Numpad6" : 0x004D,
+ "NumpadAdd" : 0x004E,
+ "Numpad1" : 0x004F,
+ "Numpad2" : 0x0050,
+ "Numpad3" : 0x0051,
+ "Numpad0" : 0x0052,
+ "NumpadDecimal" : 0x0053,
+ "PrintScreen" : 0x0054,
+ "IntlBackslash" : 0x0056,
+ "F11" : 0x0057,
+ "F12" : 0x0058,
+ "NumpadEqual" : 0x0059,
+ "F13" : 0x0064,
+ "F14" : 0x0065,
+ "F15" : 0x0066,
+ "F16" : 0x0067,
+ "F17" : 0x0068,
+ "F18" : 0x0069,
+ "F19" : 0x006A,
+ "F20" : 0x006B,
+ "F21" : 0x006C,
+ "F22" : 0x006D,
+ "F23" : 0x006E,
+ "KanaMode" : 0x0070,
+ "Lang2" : 0x0071,
+ "Lang1" : 0x0072,
+ "IntlRo" : 0x0073,
+ "F24" : 0x0076,
+ "Convert" : 0x0079,
+ "NonConvert" : 0x007B,
+ "IntlYen" : 0x007D,
+ "NumpadComma" : 0x007E,
+ "MediaTrackPrevious" : 0xE010,
+ "MediaTrackNext" : 0xE019,
+ "NumpadEnter" : 0xE01C,
+ "ControlRight" : 0xE01D,
+ "VolumeMute" : 0xE020,
+ "LaunchApp2" : 0xE021,
+ "MediaPlayPause" : 0xE022,
+ "MediaStop" : 0xE024,
+ "VolumeDown" : 0xE02E,
+ "VolumeUp" : 0xE030,
+ "BrowserHome" : 0xE032,
+ "NumpadDivide" : 0xE035,
+ "PrintScreen" : 0xE037,
+ "AltRight" : 0xE038,
+ "NumLock" : 0xE045,
+ "Pause" : 0xE046,
+ "Home" : 0xE047,
+ "ArrowUp" : 0xE048,
+ "PageUp" : 0xE049,
+ "ArrowLeft" : 0xE04B,
+ "ArrowRight" : 0xE04D,
+ "End" : 0xE04F,
+ "ArrowDown" : 0xE050,
+ "PageDown" : 0xE051,
+ "Insert" : 0xE052,
+ "Delete" : 0xE053,
+ "OSLeft" : 0xE05B,
+ "OSRight" : 0xE05C,
+ "ContextMenu" : 0xE05D,
+ "Power" : 0xE05E,
+ "BrowserSearch" : 0xE065,
+ "BrowserFavorites" : 0xE066,
+ "BrowserRefresh" : 0xE067,
+ "BrowserStop" : 0xE068,
+ "BrowserForward" : 0xE069,
+ "BrowserBack" : 0xE06A,
+ "LaunchApp1" : 0xE06B,
+ "LaunchMail" : 0xE06C,
+ "MediaSelect" : 0xE06D
+ };
+
+ var UnicodeToCodeFirefox_FR = {
+ 27 : "Escape",
+ 112 : "F1",
+ 113 : "F2",
+ 114 : "F3",
+ 115 : "F4",
+ 116 : "F5",
+ 117 : "F6",
+ 118 : "F7",
+ 119 : "F8",
+ 120 : "F9",
+ 121 : "F10",
+ 122 : "F11",
+ 123 : "F12",
+ 0 : "Backquote",
+ 49 : "Digit1",
+ 50 : "Digit2",
+ 51 : "Digit3",
+ 52 : "Digit4",
+ 53 : "Digit5",
+ 54 : "Digit6",
+ 55 : "Digit7",
+ 56 : "Digit8",
+ 57 : "Digit9",
+ 48 : "Digit0",
+ 169 : "Minus",
+ 61 : "Equal",
+ 8 : "Backspace",
+ 9 : "Tab",
+ 65 : "KeyQ",
+ 90 : "KeyW",
+ 69 : "KeyE",
+ 82 : "KeyR",
+ 84 : "KeyT",
+ 89 : "KeyY",
+ 85 : "KeyU",
+ 73 : "KeyI",
+ 79 : "KeyO",
+ 80 : "KeyP",
+ 160 : "BracketLeft",
+ 164 : "BracketRight",
+ 13 : "Enter",
+ 20 : "CapsLock",
+ 20 : "CapsLock",
+ 81 : "KeyA",
+ 83 : "KeyS",
+ 68 : "KeyD",
+ 70 : "KeyF",
+ 71 : "KeyG",
+ 72 : "KeyH",
+ 74 : "KeyJ",
+ 75 : "KeyK",
+ 76 : "KeyL",
+ 77 : "Semicolon",
+ 165 : "Quote",
+ 170 : "Backslash",
+ 16 : "ShiftLeft",
+ 60 : "IntlBackslash",
+ 87 : "KeyZ",
+ 88 : "KeyX",
+ 67 : "KeyC",
+ 86 : "KeyV",
+ 66 : "KeyB",
+ 78 : "KeyN",
+ 188 : "KeyM",
+ 59 : "Comma",
+ 58 : "Period",
+ 161 : "Slash",
+ 16 : "ShiftRight",
+ 17 : "ControlLeft",
+ 91 : "OSLeft",
+ 18 : "AltLeft",
+ 32 : "Space",
+ 17 : "ControlLeft",
+ 18 : "AltRight",
+ 91 : "OSRight",
+ 93 : "ContextMenu",
+ 17 : "ControlRight",
+ 37 : "ArrowLeft",
+ 38 : "ArrowUp",
+ 40 : "ArrowDown",
+ 39 : "ArrowRight",
+ 144 : "NumLock",
+ 144 : "NumLock",
+ 111 : "NumpadDivide",
+ 106 : "NumpadMultiply",
+ 109 : "NumpadSubtract",
+ 103 : "Numpad7",
+ 104 : "Numpad8",
+ 105 : "Numpad9",
+ 107 : "NumpadAdd",
+ 100 : "Numpad4",
+ 101 : "Numpad5",
+ 102 : "Numpad6",
+ 97 : "Numpad1",
+ 98 : "Numpad2",
+ 99 : "Numpad3",
+ 96 : "Numpad0",
+ 110 : "NumpadDecimal",
+ 13 : "NumpadEnter",
+ 17 : "ControlLeft",
+ 67 : "KeyC",
+ 17 : "ControlLeft"
+ };
+
+ var UnicodeToCodeChrome_FR = {
+ 27 : "Escape",
+ 112 : "F1",
+ 113 : "F2",
+ 114 : "F3",
+ 115 : "F4",
+ 116 : "F5",
+ 117 : "F6",
+ 118 : "F7",
+ 119 : "F8",
+ 120 : "F9",
+ 121 : "F10",
+ 122 : "F11",
+ 123 : "F12",
+ 0 : "Backquote",
+ 49 : "Digit1",
+ 50 : "Digit2",
+ 51 : "Digit3",
+ 52 : "Digit4",
+ 53 : "Digit5",
+ 54 : "Digit6",
+ 55 : "Digit7",
+ 56 : "Digit8",
+ 57 : "Digit9",
+ 48 : "Digit0",
+ 219 : "Minus",
+ 187 : "Equal",
+ 8 : "Backspace",
+ 9 : "Tab",
+ 65 : "KeyQ",
+ 90 : "KeyW",
+ 69 : "KeyE",
+ 82 : "KeyR",
+ 84 : "KeyT",
+ 89 : "KeyY",
+ 85 : "KeyU",
+ 73 : "KeyI",
+ 79 : "KeyO",
+ 80 : "KeyP",
+ 221 : "BracketLeft",
+ 186 : "BracketRight",
+ 13 : "Enter",
+ 20 : "CapsLock",
+ 20 : "CapsLock",
+ 81 : "KeyA",
+ 83 : "KeyS",
+ 68 : "KeyD",
+ 70 : "KeyF",
+ 71 : "KeyG",
+ 72 : "KeyH",
+ 74 : "KeyJ",
+ 75 : "KeyK",
+ 76 : "KeyL",
+ 77 : "Semicolon",
+ 192 : "Quote",
+ 220 : "Backslash",
+ 16 : "ShiftLeft",
+ 60 : "IntlBackslash",
+ 87 : "KeyZ",
+ 88 : "KeyX",
+ 67 : "KeyC",
+ 86 : "KeyV",
+ 66 : "KeyB",
+ 78 : "KeyN",
+ 188 : "KeyM",
+ 190 : "Comma",
+ 191 : "Period",
+ 223 : "Slash",
+ 16 : "ShiftRight",
+ 17 : "ControlLeft",
+ 91 : "OSLeft",
+ 18 : "AltLeft",
+ 32 : "Space",
+ 17 : "ControlLeft",
+ 18 : "AltRight",
+ 91 : "OSRight",
+ 93 : "ContextMenu",
+ 17 : "ControlRight",
+ 37 : "ArrowLeft",
+ 38 : "ArrowUp",
+ 40 : "ArrowDown",
+ 39 : "ArrowRight",
+ 144 : "NumLock",
+ 144 : "NumLock",
+ 111 : "NumpadDivide",
+ 106 : "NumpadMultiply",
+ 109 : "NumpadSubtract",
+ 103 : "Numpad7",
+ 104 : "Numpad8",
+ 105 : "Numpad9",
+ 107 : "NumpadAdd",
+ 100 : "Numpad4",
+ 101 : "Numpad5",
+ 102 : "Numpad6",
+ 97 : "Numpad1",
+ 98 : "Numpad2",
+ 99 : "Numpad3",
+ 96 : "Numpad0",
+ 110 : "NumpadDecimal",
+ 13 : "NumpadEnter",
+ 17 : "ControlLeft",
+ 67 : "KeyC",
+ 17 : "ControlLeft"
+ };
+
+ var UnicodeToCode_EN = {
+ 27 : "Escape",
+ 112 : "F1",
+ 113 : "F2",
+ 114 : "F3",
+ 115 : "F4",
+ 116 : "F5",
+ 117 : "F6",
+ 118 : "F7",
+ 119 : "F8",
+ 120 : "F9",
+ 121 : "F10",
+ 122 : "F11",
+ 123 : "F12",
+ 192 : "Backquote",
+ 49 : "Digit1",
+ 50 : "Digit2",
+ 51 : "Digit3",
+ 52 : "Digit4",
+ 53 : "Digit5",
+ 54 : "Digit6",
+ 55 : "Digit7",
+ 56 : "Digit8",
+ 57 : "Digit9",
+ 48 : "Digit0",
+ 173 : "Minus",
+ 61 : "Equal",
+ 8 : "Backspace",
+ 9 : "Tab",
+ 81 : "KeyQ",
+ 87 : "KeyW",
+ 69 : "KeyE",
+ 82 : "KeyR",
+ 84 : "KeyT",
+ 89 : "KeyY",
+ 85 : "KeyU",
+ 73 : "KeyI",
+ 79 : "KeyO",
+ 80 : "KeyP",
+ 219 : "BracketLeft",
+ 221 : "BracketRight",
+ 13 : "Enter",
+ 20 : "CapsLock",
+ 65 : "KeyA",
+ 83 : "KeyS",
+ 68 : "KeyD",
+ 70 : "KeyF",
+ 71 : "KeyG",
+ 72 : "KeyH",
+ 74 : "KeyJ",
+ 75 : "KeyK",
+ 76 : "KeyL",
+ 59 : "Semicolon",
+ 222 : "Quote",
+ 220 : "Backslash",
+ 16 : "ShiftLeft",
+ 220 : "IntlBackslash",
+ 90 : "KeyZ",
+ 88 : "KeyX",
+ 67 : "KeyC",
+ 86 : "KeyV",
+ 66 : "KeyB",
+ 78 : "KeyN",
+ 77 : "KeyM",
+ 188 : "Comma",
+ 190 : "Period",
+ 191 : "Slash",
+ 16 : "ShiftRight",
+ 17 : "ControlLeft",
+ 18 : "AltLeft",
+ 91 : "OSLeft",
+ 32 : "Space",
+ 18 : "AltRight",
+ 91 : "OSRight",
+ 93 : "ContextMenu",
+ 17 : "ControlRight",
+ 37 : "ArrowLeft",
+ 38 : "ArrowUp",
+ 40 : "ArrowDown",
+ 39 : "ArrowRight",
+ 144 : "NumLock",
+ 144 : "NumLock",
+ 111 : "NumpadDivide",
+ 106 : "NumpadMultiply",
+ 109 : "NumpadSubtract",
+ 103 : "Numpad7",
+ 104 : "Numpad8",
+ 105 : "Numpad9",
+ 107 : "NumpadAdd",
+ 100 : "Numpad4",
+ 101 : "Numpad5",
+ 102 : "Numpad6",
+ 97 : "Numpad1",
+ 98 : "Numpad2",
+ 99 : "Numpad3",
+ 13 : "NumpadEnter",
+ 96 : "Numpad0",
+ 110 : "NumpadDecimal",
+ 17 : "ControlLeft"
+ };
+
+
+ var UnicodeToCode = {
+ 'firefox' : {
+ 'fr' : UnicodeToCodeFirefox_FR,
+ 'en' : UnicodeToCode_EN
+ },
+
+ 'chrome' : {
+ 'fr' : UnicodeToCodeChrome_FR,
+ 'en' : UnicodeToCode_EN
+ }
+ }
+
+ /**
+ * Scancode of keyevent
+ * @param e {keyboardevent}
+ * @return {integer} scancode
+ */
+ function scancode (e) {
+ var locale = Mstsc.locale();
+ locale = (['fr', 'en'].indexOf(locale) > 0 && locale) || 'en';
+ return KeyMap[e.code || UnicodeToCode[Mstsc.browser() || 'firefox'][locale][e.keyCode]];
+ }
+
+ Mstsc.scancode = scancode;
+
+})();
\ No newline at end of file
diff --git a/public/mstsc/js/mstsc.js b/public/mstsc/js/mstsc.js
new file mode 100644
index 00000000..07c038bb
--- /dev/null
+++ b/public/mstsc/js/mstsc.js
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2015 Sylvain Peyrefitte
+ *
+ * This file is part of mstsc.js.
+ *
+ * mstsc.j is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+(function() {
+
+ /**
+ * Use for domain declaration
+ */
+ Mstsc = function () {
+ }
+
+ Mstsc.prototype = {
+ // shortcut
+ $ : function (id) {
+ return document.getElementById(id);
+ },
+
+ /**
+ * Compute screen offset for a target element
+ * @param el {DOM element}
+ * @return {top : {integer}, left {integer}}
+ */
+ elementOffset : function (el) {
+ var x = 0;
+ var y = 0;
+ while (el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop )) {
+ x += el.offsetLeft - el.scrollLeft;
+ y += el.offsetTop - el.scrollTop;
+ el = el.offsetParent;
+ }
+ return { top: y, left: x };
+ },
+
+ /**
+ * Try to detect browser
+ * @returns {String} [firefox|chrome|ie]
+ */
+ browser : function () {
+ if (typeof InstallTrigger !== 'undefined') {
+ return 'firefox';
+ }
+
+ if (!!window.chrome) {
+ return 'chrome';
+ }
+
+ if (!!document.docuemntMode) {
+ return 'ie';
+ }
+
+ return null;
+ },
+
+ /**
+ * Try to detect language
+ * @returns
+ */
+ locale : function () {
+ return window.navigator.userLanguage || window.navigator.language;
+ }
+ }
+
+})();
+
+this.Mstsc = new Mstsc();
\ No newline at end of file
diff --git a/public/mstsc/js/rle.js b/public/mstsc/js/rle.js
new file mode 100644
index 00000000..8e6cf89e
--- /dev/null
+++ b/public/mstsc/js/rle.js
@@ -0,0 +1,17864 @@
+// Note: Some Emscripten settings will significantly limit the speed of the generated code.
+// Note: Some Emscripten settings may limit the speed of the generated code.
+// The Module object: Our interface to the outside world. We import
+// and export values on it, and do the work to get that through
+// closure compiler if necessary. There are various ways Module can be used:
+// 1. Not defined. We create it here
+// 2. A function parameter, function(Module) { ..generated code.. }
+// 3. pre-run appended it, var Module = {}; ..generated code..
+// 4. External script tag defines var Module.
+// We need to do an eval in order to handle the closure compiler
+// case, where this code here is minified but Module was defined
+// elsewhere (e.g. case 4 above). We also need to check if Module
+// already exists (e.g. case 3 above).
+// Note that if you want to run closure, and also to use Module
+// after the generated code, you will need to define var Module = {};
+// before the code. Then that object will be used in the code, and you
+// can continue to use Module afterwards as well.
+var Module = { };
+//if (!Module) { Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()'); }
+
+// Sometimes an existing Module object exists with properties
+// meant to overwrite the default module functionality. Here
+// we collect those properties and reapply _after_ we configure
+// the current environment's defaults to avoid having to be so
+// defensive during initialization.
+var moduleOverrides = {};
+for (var key in Module) {
+ if (Module.hasOwnProperty(key)) {
+ moduleOverrides[key] = Module[key];
+ }
+}
+
+// The environment setup code below is customized to use Module.
+// *** Environment setup code ***
+var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function';
+var ENVIRONMENT_IS_WEB = typeof window === 'object';
+var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
+var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
+
+if (ENVIRONMENT_IS_NODE) {
+ // Expose functionality in the same simple way that the shells work
+ // Note that we pollute the global namespace here, otherwise we break in node
+ if (!Module['print']) Module['print'] = function print(x) {
+ process['stdout'].write(x + '\n');
+ };
+ if (!Module['printErr']) Module['printErr'] = function printErr(x) {
+ process['stderr'].write(x + '\n');
+ };
+
+ var nodeFS = require('fs');
+ var nodePath = require('path');
+
+ Module['read'] = function read(filename, binary) {
+ filename = nodePath['normalize'](filename);
+ var ret = nodeFS['readFileSync'](filename);
+ // The path is absolute if the normalized version is the same as the resolved.
+ if (!ret && filename != nodePath['resolve'](filename)) {
+ filename = path.join(__dirname, '..', 'src', filename);
+ ret = nodeFS['readFileSync'](filename);
+ }
+ if (ret && !binary) ret = ret.toString();
+ return ret;
+ };
+
+ Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) };
+
+ Module['load'] = function load(f) {
+ globalEval(read(f));
+ };
+
+ Module['arguments'] = process['argv'].slice(2);
+
+ module['exports'] = Module;
+}
+else if (ENVIRONMENT_IS_SHELL) {
+ if (!Module['print']) Module['print'] = print;
+ if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm
+
+ if (typeof read != 'undefined') {
+ Module['read'] = read;
+ } else {
+ Module['read'] = function read() { throw 'no read() available (jsc?)' };
+ }
+
+ Module['readBinary'] = function readBinary(f) {
+ return read(f, 'binary');
+ };
+
+ if (typeof scriptArgs != 'undefined') {
+ Module['arguments'] = scriptArgs;
+ } else if (typeof arguments != 'undefined') {
+ Module['arguments'] = arguments;
+ }
+
+ this['Module'] = Module;
+
+ eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly)
+}
+else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
+ Module['read'] = function read(url) {
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, false);
+ xhr.send(null);
+ return xhr.responseText;
+ };
+
+ if (typeof arguments != 'undefined') {
+ Module['arguments'] = arguments;
+ }
+
+ if (typeof console !== 'undefined') {
+ if (!Module['print']) Module['print'] = function print(x) {
+ console.log(x);
+ };
+ if (!Module['printErr']) Module['printErr'] = function printErr(x) {
+ console.log(x);
+ };
+ } else {
+ // Probably a worker, and without console.log. We can do very little here...
+ var TRY_USE_DUMP = false;
+ if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) {
+ dump(x);
+ }) : (function(x) {
+ // self.postMessage(x); // enable this if you want stdout to be sent as messages
+ }));
+ }
+
+ if (ENVIRONMENT_IS_WEB) {
+ this['Module'] = Module;
+ } else {
+ Module['load'] = importScripts;
+ }
+}
+else {
+ // Unreachable because SHELL is dependant on the others
+ throw 'Unknown runtime environment. Where are we?';
+}
+
+function globalEval(x) {
+ eval.call(null, x);
+}
+if (!Module['load'] == 'undefined' && Module['read']) {
+ Module['load'] = function load(f) {
+ globalEval(Module['read'](f));
+ };
+}
+if (!Module['print']) {
+ Module['print'] = function(){};
+}
+if (!Module['printErr']) {
+ Module['printErr'] = Module['print'];
+}
+if (!Module['arguments']) {
+ Module['arguments'] = [];
+}
+// *** Environment setup code ***
+
+// Closure helpers
+Module.print = Module['print'];
+Module.printErr = Module['printErr'];
+
+// Callbacks
+Module['preRun'] = [];
+Module['postRun'] = [];
+
+// Merge back in the overrides
+for (var key in moduleOverrides) {
+ if (moduleOverrides.hasOwnProperty(key)) {
+ Module[key] = moduleOverrides[key];
+ }
+}
+
+
+
+// === Auto-generated preamble library stuff ===
+
+//========================================
+// Runtime code shared with compiler
+//========================================
+
+var Runtime = {
+ stackSave: function () {
+ return STACKTOP;
+ },
+ stackRestore: function (stackTop) {
+ STACKTOP = stackTop;
+ },
+ forceAlign: function (target, quantum) {
+ quantum = quantum || 4;
+ if (quantum == 1) return target;
+ if (isNumber(target) && isNumber(quantum)) {
+ return Math.ceil(target/quantum)*quantum;
+ } else if (isNumber(quantum) && isPowerOfTwo(quantum)) {
+ return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')';
+ }
+ return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum;
+ },
+ isNumberType: function (type) {
+ return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES;
+ },
+ isPointerType: function isPointerType(type) {
+ return type[type.length-1] == '*';
+},
+ isStructType: function isStructType(type) {
+ if (isPointerType(type)) return false;
+ if (isArrayType(type)) return true;
+ if (/{ ?[^}]* ?}>?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types
+ // See comment in isStructPointerType()
+ return type[0] == '%';
+},
+ INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0},
+ FLOAT_TYPES: {"float":0,"double":0},
+ or64: function (x, y) {
+ var l = (x | 0) | (y | 0);
+ var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296;
+ return l + h;
+ },
+ and64: function (x, y) {
+ var l = (x | 0) & (y | 0);
+ var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296;
+ return l + h;
+ },
+ xor64: function (x, y) {
+ var l = (x | 0) ^ (y | 0);
+ var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296;
+ return l + h;
+ },
+ getNativeTypeSize: function (type) {
+ switch (type) {
+ case 'i1': case 'i8': return 1;
+ case 'i16': return 2;
+ case 'i32': return 4;
+ case 'i64': return 8;
+ case 'float': return 4;
+ case 'double': return 8;
+ default: {
+ if (type[type.length-1] === '*') {
+ return Runtime.QUANTUM_SIZE; // A pointer
+ } else if (type[0] === 'i') {
+ var bits = parseInt(type.substr(1));
+ assert(bits % 8 === 0);
+ return bits/8;
+ } else {
+ return 0;
+ }
+ }
+ }
+ },
+ getNativeFieldSize: function (type) {
+ return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
+ },
+ dedup: function dedup(items, ident) {
+ var seen = {};
+ if (ident) {
+ return items.filter(function(item) {
+ if (seen[item[ident]]) return false;
+ seen[item[ident]] = true;
+ return true;
+ });
+ } else {
+ return items.filter(function(item) {
+ if (seen[item]) return false;
+ seen[item] = true;
+ return true;
+ });
+ }
+},
+ set: function set() {
+ var args = typeof arguments[0] === 'object' ? arguments[0] : arguments;
+ var ret = {};
+ for (var i = 0; i < args.length; i++) {
+ ret[args[i]] = 0;
+ }
+ return ret;
+},
+ STACK_ALIGN: 8,
+ getAlignSize: function (type, size, vararg) {
+ // we align i64s and doubles on 64-bit boundaries, unlike x86
+ if (vararg) return 8;
+ if (!vararg && (type == 'i64' || type == 'double')) return 8;
+ if (!type) return Math.min(size, 8); // align structures internally to 64 bits
+ return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
+ },
+ calculateStructAlignment: function calculateStructAlignment(type) {
+ type.flatSize = 0;
+ type.alignSize = 0;
+ var diffs = [];
+ var prev = -1;
+ var index = 0;
+ type.flatIndexes = type.fields.map(function(field) {
+ index++;
+ var size, alignSize;
+ if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) {
+ size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s.
+ alignSize = Runtime.getAlignSize(field, size);
+ } else if (Runtime.isStructType(field)) {
+ if (field[1] === '0') {
+ // this is [0 x something]. When inside another structure like here, it must be at the end,
+ // and it adds no size
+ // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!');
+ size = 0;
+ if (Types.types[field]) {
+ alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
+ } else {
+ alignSize = type.alignSize || QUANTUM_SIZE;
+ }
+ } else {
+ size = Types.types[field].flatSize;
+ alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
+ }
+ } else if (field[0] == 'b') {
+ // bN, large number field, like a [N x i8]
+ size = field.substr(1)|0;
+ alignSize = 1;
+ } else if (field[0] === '<') {
+ // vector type
+ size = alignSize = Types.types[field].flatSize; // fully aligned
+ } else if (field[0] === 'i') {
+ // illegal integer field, that could not be legalized because it is an internal structure field
+ // it is ok to have such fields, if we just use them as markers of field size and nothing more complex
+ size = alignSize = parseInt(field.substr(1))/8;
+ assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field);
+ } else {
+ assert(false, 'invalid type for calculateStructAlignment');
+ }
+ if (type.packed) alignSize = 1;
+ type.alignSize = Math.max(type.alignSize, alignSize);
+ var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory
+ type.flatSize = curr + size;
+ if (prev >= 0) {
+ diffs.push(curr-prev);
+ }
+ prev = curr;
+ return curr;
+ });
+ if (type.name_ && type.name_[0] === '[') {
+ // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid
+ // allocating a potentially huge array for [999999 x i8] etc.
+ type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2;
+ }
+ type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize);
+ if (diffs.length == 0) {
+ type.flatFactor = type.flatSize;
+ } else if (Runtime.dedup(diffs).length == 1) {
+ type.flatFactor = diffs[0];
+ }
+ type.needsFlattening = (type.flatFactor != 1);
+ return type.flatIndexes;
+ },
+ generateStructInfo: function (struct, typeName, offset) {
+ var type, alignment;
+ if (typeName) {
+ offset = offset || 0;
+ type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName];
+ if (!type) return null;
+ if (type.fields.length != struct.length) {
+ printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo');
+ return null;
+ }
+ alignment = type.flatIndexes;
+ } else {
+ var type = { fields: struct.map(function(item) { return item[0] }) };
+ alignment = Runtime.calculateStructAlignment(type);
+ }
+ var ret = {
+ __size__: type.flatSize
+ };
+ if (typeName) {
+ struct.forEach(function(item, i) {
+ if (typeof item === 'string') {
+ ret[item] = alignment[i] + offset;
+ } else {
+ // embedded struct
+ var key;
+ for (var k in item) key = k;
+ ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]);
+ }
+ });
+ } else {
+ struct.forEach(function(item, i) {
+ ret[item[1]] = alignment[i];
+ });
+ }
+ return ret;
+ },
+ dynCall: function (sig, ptr, args) {
+ if (args && args.length) {
+ assert(args.length == sig.length-1);
+ return FUNCTION_TABLE[ptr].apply(null, args);
+ } else {
+ assert(sig.length == 1);
+ return FUNCTION_TABLE[ptr]();
+ }
+ },
+ addFunction: function (func) {
+ var table = FUNCTION_TABLE;
+ var ret = table.length;
+ assert(ret % 2 === 0);
+ table.push(func);
+ for (var i = 0; i < 2-1; i++) table.push(0);
+ return ret;
+ },
+ removeFunction: function (index) {
+ var table = FUNCTION_TABLE;
+ table[index] = null;
+ },
+ getAsmConst: function (code, numArgs) {
+ // code is a constant string on the heap, so we can cache these
+ if (!Runtime.asmConstCache) Runtime.asmConstCache = {};
+ var func = Runtime.asmConstCache[code];
+ if (func) return func;
+ var args = [];
+ for (var i = 0; i < numArgs; i++) {
+ args.push(String.fromCharCode(36) + i); // $0, $1 etc
+ }
+ code = Pointer_stringify(code);
+ if (code[0] === '"') {
+ // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct
+ if (code.indexOf('"', 1) === code.length-1) {
+ code = code.substr(1, code.length-2);
+ } else {
+ // something invalid happened, e.g. EM_ASM("..code($0)..", input)
+ abort('invalid EM_ASM input |' + code + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)');
+ }
+ }
+ return Runtime.asmConstCache[code] = eval('(function(' + args.join(',') + '){ ' + code + ' })'); // new Function does not allow upvars in node
+ },
+ warnOnce: function (text) {
+ if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
+ if (!Runtime.warnOnce.shown[text]) {
+ Runtime.warnOnce.shown[text] = 1;
+ Module.printErr(text);
+ }
+ },
+ funcWrappers: {},
+ getFuncWrapper: function (func, sig) {
+ assert(sig);
+ if (!Runtime.funcWrappers[func]) {
+ Runtime.funcWrappers[func] = function dynCall_wrapper() {
+ return Runtime.dynCall(sig, func, arguments);
+ };
+ }
+ return Runtime.funcWrappers[func];
+ },
+ UTF8Processor: function () {
+ var buffer = [];
+ var needed = 0;
+ this.processCChar = function (code) {
+ code = code & 0xFF;
+
+ if (buffer.length == 0) {
+ if ((code & 0x80) == 0x00) { // 0xxxxxxx
+ return String.fromCharCode(code);
+ }
+ buffer.push(code);
+ if ((code & 0xE0) == 0xC0) { // 110xxxxx
+ needed = 1;
+ } else if ((code & 0xF0) == 0xE0) { // 1110xxxx
+ needed = 2;
+ } else { // 11110xxx
+ needed = 3;
+ }
+ return '';
+ }
+
+ if (needed) {
+ buffer.push(code);
+ needed--;
+ if (needed > 0) return '';
+ }
+
+ var c1 = buffer[0];
+ var c2 = buffer[1];
+ var c3 = buffer[2];
+ var c4 = buffer[3];
+ var ret;
+ if (buffer.length == 2) {
+ ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F));
+ } else if (buffer.length == 3) {
+ ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F));
+ } else {
+ // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+ var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) |
+ ((c3 & 0x3F) << 6) | (c4 & 0x3F);
+ ret = String.fromCharCode(
+ Math.floor((codePoint - 0x10000) / 0x400) + 0xD800,
+ (codePoint - 0x10000) % 0x400 + 0xDC00);
+ }
+ buffer.length = 0;
+ return ret;
+ }
+ this.processJSString = function processJSString(string) {
+ string = unescape(encodeURIComponent(string));
+ var ret = [];
+ for (var i = 0; i < string.length; i++) {
+ ret.push(string.charCodeAt(i));
+ }
+ return ret;
+ }
+ },
+ stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8);(assert((STACKTOP|0) < (STACK_MAX|0))|0); return ret; },
+ staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + (assert(!staticSealed),size))|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; },
+ dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + (assert(DYNAMICTOP > 0),size))|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; },
+ alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); return ret; },
+ makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((low>>>0)+((high>>>0)*4294967296)) : ((low>>>0)+((high|0)*4294967296))); return ret; },
+ GLOBAL_BASE: 8,
+ QUANTUM_SIZE: 4,
+ __dummy__: 0
+}
+
+
+Module['Runtime'] = Runtime;
+
+
+
+
+
+
+
+
+
+//========================================
+// Runtime essentials
+//========================================
+
+var __THREW__ = 0; // Used in checking for thrown exceptions.
+var setjmpId = 1; // Used in setjmp/longjmp
+var setjmpLabels = {};
+
+var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()
+var EXITSTATUS = 0;
+
+var undef = 0;
+// tempInt is used for 32-bit signed values or smaller. tempBigInt is used
+// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt
+var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat;
+var tempI64, tempI64b;
+var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
+
+function assert(condition, text) {
+ if (!condition) {
+ abort('Assertion failed: ' + text);
+ }
+}
+
+var globalScope = this;
+
+// C calling interface. A convenient way to call C functions (in C files, or
+// defined with extern "C").
+//
+// Note: LLVM optimizations can inline and remove functions, after which you will not be
+// able to call them. Closure can also do so. To avoid that, add your function to
+// the exports using something like
+//
+// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]'
+//
+// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C")
+// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and
+// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit).
+// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType,
+// except that 'array' is not possible (there is no way for us to know the length of the array)
+// @param args An array of the arguments to the function, as native JS values (as in returnType)
+// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack).
+// @return The return value, as a native JS value (as in returnType)
+function ccall(ident, returnType, argTypes, args) {
+ return ccallFunc(getCFunc(ident), returnType, argTypes, args);
+}
+Module["ccall"] = ccall;
+
+// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
+function getCFunc(ident) {
+ try {
+ var func = Module['_' + ident]; // closure exported function
+ if (!func) func = eval('_' + ident); // explicit lookup
+ } catch(e) {
+ }
+ assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
+ return func;
+}
+
+// Internal function that does a C call using a function, not an identifier
+function ccallFunc(func, returnType, argTypes, args) {
+ var stack = 0;
+ function toC(value, type) {
+ if (type == 'string') {
+ if (value === null || value === undefined || value === 0) return 0; // null string
+ value = intArrayFromString(value);
+ type = 'array';
+ }
+ if (type == 'array') {
+ if (!stack) stack = Runtime.stackSave();
+ var ret = Runtime.stackAlloc(value.length);
+ writeArrayToMemory(value, ret);
+ return ret;
+ }
+ return value;
+ }
+ function fromC(value, type) {
+ if (type == 'string') {
+ return Pointer_stringify(value);
+ }
+ assert(type != 'array');
+ return value;
+ }
+ var i = 0;
+ var cArgs = args ? args.map(function(arg) {
+ return toC(arg, argTypes[i++]);
+ }) : [];
+ var ret = fromC(func.apply(null, cArgs), returnType);
+ if (stack) Runtime.stackRestore(stack);
+ return ret;
+}
+
+// Returns a native JS wrapper for a C function. This is similar to ccall, but
+// returns a function you can call repeatedly in a normal way. For example:
+//
+// var my_function = cwrap('my_c_function', 'number', ['number', 'number']);
+// alert(my_function(5, 22));
+// alert(my_function(99, 12));
+//
+function cwrap(ident, returnType, argTypes) {
+ var func = getCFunc(ident);
+ return function() {
+ return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments));
+ }
+}
+Module["cwrap"] = cwrap;
+
+// Sets a value in memory in a dynamic way at run-time. Uses the
+// type data. This is the same as makeSetValue, except that
+// makeSetValue is done at compile-time and generates the needed
+// code then, whereas this function picks the right code at
+// run-time.
+// Note that setValue and getValue only do *aligned* writes and reads!
+// Note that ccall uses JS types as for defining types, while setValue and
+// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation
+function setValue(ptr, value, type, noSafe) {
+ type = type || 'i8';
+ if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
+ switch(type) {
+ case 'i1': HEAP8[(ptr)]=value; break;
+ case 'i8': HEAP8[(ptr)]=value; break;
+ case 'i16': HEAP16[((ptr)>>1)]=value; break;
+ case 'i32': HEAP32[((ptr)>>2)]=value; break;
+ case 'i64': (tempI64 = [value>>>0,(tempDouble=value,Math_abs(tempDouble) >= 1 ? (tempDouble > 0 ? Math_min(Math_floor((tempDouble)/4294967296), 4294967295)>>>0 : (~~(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296)))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;
+ case 'float': HEAPF32[((ptr)>>2)]=value; break;
+ case 'double': HEAPF64[((ptr)>>3)]=value; break;
+ default: abort('invalid type for setValue: ' + type);
+ }
+}
+Module['setValue'] = setValue;
+
+// Parallel to setValue.
+function getValue(ptr, type, noSafe) {
+ type = type || 'i8';
+ if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
+ switch(type) {
+ case 'i1': return HEAP8[(ptr)];
+ case 'i8': return HEAP8[(ptr)];
+ case 'i16': return HEAP16[((ptr)>>1)];
+ case 'i32': return HEAP32[((ptr)>>2)];
+ case 'i64': return HEAP32[((ptr)>>2)];
+ case 'float': return HEAPF32[((ptr)>>2)];
+ case 'double': return HEAPF64[((ptr)>>3)];
+ default: abort('invalid type for setValue: ' + type);
+ }
+ return null;
+}
+Module['getValue'] = getValue;
+
+var ALLOC_NORMAL = 0; // Tries to use _malloc()
+var ALLOC_STACK = 1; // Lives for the duration of the current function call
+var ALLOC_STATIC = 2; // Cannot be freed
+var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk
+var ALLOC_NONE = 4; // Do not allocate
+Module['ALLOC_NORMAL'] = ALLOC_NORMAL;
+Module['ALLOC_STACK'] = ALLOC_STACK;
+Module['ALLOC_STATIC'] = ALLOC_STATIC;
+Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC;
+Module['ALLOC_NONE'] = ALLOC_NONE;
+
+// allocate(): This is for internal use. You can use it yourself as well, but the interface
+// is a little tricky (see docs right below). The reason is that it is optimized
+// for multiple syntaxes to save space in generated code. So you should
+// normally not use allocate(), and instead allocate memory using _malloc(),
+// initialize it with setValue(), and so forth.
+// @slab: An array of data, or a number. If a number, then the size of the block to allocate,
+// in *bytes* (note that this is sometimes confusing: the next parameter does not
+// affect this!)
+// @types: Either an array of types, one for each byte (or 0 if no type at that position),
+// or a single type which is used for the entire block. This only matters if there
+// is initial data - if @slab is a number, then this does not matter at all and is
+// ignored.
+// @allocator: How to allocate memory, see ALLOC_*
+function allocate(slab, types, allocator, ptr) {
+ var zeroinit, size;
+ if (typeof slab === 'number') {
+ zeroinit = true;
+ size = slab;
+ } else {
+ zeroinit = false;
+ size = slab.length;
+ }
+
+ var singleType = typeof types === 'string' ? types : null;
+
+ var ret;
+ if (allocator == ALLOC_NONE) {
+ ret = ptr;
+ } else {
+ ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
+ }
+
+ if (zeroinit) {
+ var ptr = ret, stop;
+ assert((ret & 3) == 0);
+ stop = ret + (size & ~3);
+ for (; ptr < stop; ptr += 4) {
+ HEAP32[((ptr)>>2)]=0;
+ }
+ stop = ret + size;
+ while (ptr < stop) {
+ HEAP8[((ptr++)|0)]=0;
+ }
+ return ret;
+ }
+
+ if (singleType === 'i8') {
+ if (slab.subarray || slab.slice) {
+ HEAPU8.set(slab, ret);
+ } else {
+ HEAPU8.set(new Uint8Array(slab), ret);
+ }
+ return ret;
+ }
+
+ var i = 0, type, typeSize, previousType;
+ while (i < size) {
+ var curr = slab[i];
+
+ if (typeof curr === 'function') {
+ curr = Runtime.getFunctionIndex(curr);
+ }
+
+ type = singleType || types[i];
+ if (type === 0) {
+ i++;
+ continue;
+ }
+ assert(type, 'Must know what type to store in allocate!');
+
+ if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later
+
+ setValue(ret+i, curr, type);
+
+ // no need to look up size unless type changes, so cache it
+ if (previousType !== type) {
+ typeSize = Runtime.getNativeTypeSize(type);
+ previousType = type;
+ }
+ i += typeSize;
+ }
+
+ return ret;
+}
+Module['allocate'] = allocate;
+
+function Pointer_stringify(ptr, /* optional */ length) {
+ // TODO: use TextDecoder
+ // Find the length, and check for UTF while doing so
+ var hasUtf = false;
+ var t;
+ var i = 0;
+ while (1) {
+ assert(ptr + i < TOTAL_MEMORY);
+ t = HEAPU8[(((ptr)+(i))|0)];
+ if (t >= 128) hasUtf = true;
+ else if (t == 0 && !length) break;
+ i++;
+ if (length && i == length) break;
+ }
+ if (!length) length = i;
+
+ var ret = '';
+
+ if (!hasUtf) {
+ var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack
+ var curr;
+ while (length > 0) {
+ curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
+ ret = ret ? ret + curr : curr;
+ ptr += MAX_CHUNK;
+ length -= MAX_CHUNK;
+ }
+ return ret;
+ }
+
+ var utf8 = new Runtime.UTF8Processor();
+ for (i = 0; i < length; i++) {
+ assert(ptr + i < TOTAL_MEMORY);
+ t = HEAPU8[(((ptr)+(i))|0)];
+ ret += utf8.processCChar(t);
+ }
+ return ret;
+}
+Module['Pointer_stringify'] = Pointer_stringify;
+
+// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns
+// a copy of that string as a Javascript String object.
+function UTF16ToString(ptr) {
+ var i = 0;
+
+ var str = '';
+ while (1) {
+ var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];
+ if (codeUnit == 0)
+ return str;
+ ++i;
+ // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.
+ str += String.fromCharCode(codeUnit);
+ }
+}
+Module['UTF16ToString'] = UTF16ToString;
+
+// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
+// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP.
+function stringToUTF16(str, outPtr) {
+ for(var i = 0; i < str.length; ++i) {
+ // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.
+ var codeUnit = str.charCodeAt(i); // possibly a lead surrogate
+ HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit;
+ }
+ // Null-terminate the pointer to the HEAP.
+ HEAP16[(((outPtr)+(str.length*2))>>1)]=0;
+}
+Module['stringToUTF16'] = stringToUTF16;
+
+// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns
+// a copy of that string as a Javascript String object.
+function UTF32ToString(ptr) {
+ var i = 0;
+
+ var str = '';
+ while (1) {
+ var utf32 = HEAP32[(((ptr)+(i*4))>>2)];
+ if (utf32 == 0)
+ return str;
+ ++i;
+ // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.
+ if (utf32 >= 0x10000) {
+ var ch = utf32 - 0x10000;
+ str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));
+ } else {
+ str += String.fromCharCode(utf32);
+ }
+ }
+}
+Module['UTF32ToString'] = UTF32ToString;
+
+// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
+// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP,
+// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string.
+function stringToUTF32(str, outPtr) {
+ var iChar = 0;
+ for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) {
+ // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.
+ var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate
+ if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {
+ var trailSurrogate = str.charCodeAt(++iCodeUnit);
+ codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);
+ }
+ HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit;
+ ++iChar;
+ }
+ // Null-terminate the pointer to the HEAP.
+ HEAP32[(((outPtr)+(iChar*4))>>2)]=0;
+}
+Module['stringToUTF32'] = stringToUTF32;
+
+function demangle(func) {
+ try {
+ // Special-case the entry point, since its name differs from other name mangling.
+ if (func == 'Object._main' || func == '_main') {
+ return 'main()';
+ }
+ if (typeof func === 'number') func = Pointer_stringify(func);
+ if (func[0] !== '_') return func;
+ if (func[1] !== '_') return func; // C function
+ if (func[2] !== 'Z') return func;
+ switch (func[3]) {
+ case 'n': return 'operator new()';
+ case 'd': return 'operator delete()';
+ }
+ var i = 3;
+ // params, etc.
+ var basicTypes = {
+ 'v': 'void',
+ 'b': 'bool',
+ 'c': 'char',
+ 's': 'short',
+ 'i': 'int',
+ 'l': 'long',
+ 'f': 'float',
+ 'd': 'double',
+ 'w': 'wchar_t',
+ 'a': 'signed char',
+ 'h': 'unsigned char',
+ 't': 'unsigned short',
+ 'j': 'unsigned int',
+ 'm': 'unsigned long',
+ 'x': 'long long',
+ 'y': 'unsigned long long',
+ 'z': '...'
+ };
+ function dump(x) {
+ //return;
+ if (x) Module.print(x);
+ Module.print(func);
+ var pre = '';
+ for (var a = 0; a < i; a++) pre += ' ';
+ Module.print (pre + '^');
+ }
+ var subs = [];
+ function parseNested() {
+ i++;
+ if (func[i] === 'K') i++; // ignore const
+ var parts = [];
+ while (func[i] !== 'E') {
+ if (func[i] === 'S') { // substitution
+ i++;
+ var next = func.indexOf('_', i);
+ var num = func.substring(i, next) || 0;
+ parts.push(subs[num] || '?');
+ i = next+1;
+ continue;
+ }
+ if (func[i] === 'C') { // constructor
+ parts.push(parts[parts.length-1]);
+ i += 2;
+ continue;
+ }
+ var size = parseInt(func.substr(i));
+ var pre = size.toString().length;
+ if (!size || !pre) { i--; break; } // counter i++ below us
+ var curr = func.substr(i + pre, size);
+ parts.push(curr);
+ subs.push(curr);
+ i += pre + size;
+ }
+ i++; // skip E
+ return parts;
+ }
+ var first = true;
+ function parse(rawList, limit, allowVoid) { // main parser
+ limit = limit || Infinity;
+ var ret = '', list = [];
+ function flushList() {
+ return '(' + list.join(', ') + ')';
+ }
+ var name;
+ if (func[i] === 'N') {
+ // namespaced N-E
+ name = parseNested().join('::');
+ limit--;
+ if (limit === 0) return rawList ? [name] : name;
+ } else {
+ // not namespaced
+ if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L'
+ var size = parseInt(func.substr(i));
+ if (size) {
+ var pre = size.toString().length;
+ name = func.substr(i + pre, size);
+ i += pre + size;
+ }
+ }
+ first = false;
+ if (func[i] === 'I') {
+ i++;
+ var iList = parse(true);
+ var iRet = parse(true, 1, true);
+ ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>';
+ } else {
+ ret = name;
+ }
+ paramLoop: while (i < func.length && limit-- > 0) {
+ //dump('paramLoop');
+ var c = func[i++];
+ if (c in basicTypes) {
+ list.push(basicTypes[c]);
+ } else {
+ switch (c) {
+ case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer
+ case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference
+ case 'L': { // literal
+ i++; // skip basic type
+ var end = func.indexOf('E', i);
+ var size = end - i;
+ list.push(func.substr(i, size));
+ i += size + 2; // size + 'EE'
+ break;
+ }
+ case 'A': { // array
+ var size = parseInt(func.substr(i));
+ i += size.toString().length;
+ if (func[i] !== '_') throw '?';
+ i++; // skip _
+ list.push(parse(true, 1, true)[0] + ' [' + size + ']');
+ break;
+ }
+ case 'E': break paramLoop;
+ default: ret += '?' + c; break paramLoop;
+ }
+ }
+ }
+ if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void)
+ return rawList ? list : ret + flushList();
+ }
+ return parse();
+ } catch(e) {
+ return func;
+ }
+}
+
+function demangleAll(text) {
+ return text.replace(/__Z[\w\d_]+/g, function(x) { var y = demangle(x); return x === y ? x : (x + ' [' + y + ']') });
+}
+
+function stackTrace() {
+ var stack = new Error().stack;
+ return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6.
+}
+
+// Memory management
+
+var PAGE_SIZE = 4096;
+function alignMemoryPage(x) {
+ return (x+4095)&-4096;
+}
+
+var HEAP;
+var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
+
+var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area
+var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area
+var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk
+
+function enlargeMemory() {
+ abort('Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + TOTAL_MEMORY + ', (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.');
+}
+
+var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
+var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216;
+var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;
+
+
+// Initialize the runtime's memory
+// check for full engine support (use string 'subarray' to avoid closure compiler confusion)
+assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),
+ 'Cannot fallback to non-typed array case: Code is too specialized');
+
+var buffer = new ArrayBuffer(TOTAL_MEMORY);
+HEAP8 = new Int8Array(buffer);
+HEAP16 = new Int16Array(buffer);
+HEAP32 = new Int32Array(buffer);
+HEAPU8 = new Uint8Array(buffer);
+HEAPU16 = new Uint16Array(buffer);
+HEAPU32 = new Uint32Array(buffer);
+HEAPF32 = new Float32Array(buffer);
+HEAPF64 = new Float64Array(buffer);
+
+// Endianness check (note: assumes compiler arch was little-endian)
+HEAP32[0] = 255;
+assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');
+
+Module['HEAP'] = HEAP;
+Module['HEAP8'] = HEAP8;
+Module['HEAP16'] = HEAP16;
+Module['HEAP32'] = HEAP32;
+Module['HEAPU8'] = HEAPU8;
+Module['HEAPU16'] = HEAPU16;
+Module['HEAPU32'] = HEAPU32;
+Module['HEAPF32'] = HEAPF32;
+Module['HEAPF64'] = HEAPF64;
+
+function callRuntimeCallbacks(callbacks) {
+ while(callbacks.length > 0) {
+ var callback = callbacks.shift();
+ if (typeof callback == 'function') {
+ callback();
+ continue;
+ }
+ var func = callback.func;
+ if (typeof func === 'number') {
+ if (callback.arg === undefined) {
+ Runtime.dynCall('v', func);
+ } else {
+ Runtime.dynCall('vi', func, [callback.arg]);
+ }
+ } else {
+ func(callback.arg === undefined ? null : callback.arg);
+ }
+ }
+}
+
+var __ATPRERUN__ = []; // functions called before the runtime is initialized
+var __ATINIT__ = []; // functions called during startup
+var __ATMAIN__ = []; // functions called when main() is to be run
+var __ATEXIT__ = []; // functions called during shutdown
+var __ATPOSTRUN__ = []; // functions called after the runtime has exited
+
+var runtimeInitialized = false;
+
+function preRun() {
+ // compatibility - merge in anything from Module['preRun'] at this time
+ if (Module['preRun']) {
+ if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
+ while (Module['preRun'].length) {
+ addOnPreRun(Module['preRun'].shift());
+ }
+ }
+ callRuntimeCallbacks(__ATPRERUN__);
+}
+
+function ensureInitRuntime() {
+ if (runtimeInitialized) return;
+ runtimeInitialized = true;
+ callRuntimeCallbacks(__ATINIT__);
+}
+
+function preMain() {
+ callRuntimeCallbacks(__ATMAIN__);
+}
+
+function exitRuntime() {
+ callRuntimeCallbacks(__ATEXIT__);
+}
+
+function postRun() {
+ // compatibility - merge in anything from Module['postRun'] at this time
+ if (Module['postRun']) {
+ if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
+ while (Module['postRun'].length) {
+ addOnPostRun(Module['postRun'].shift());
+ }
+ }
+ callRuntimeCallbacks(__ATPOSTRUN__);
+}
+
+function addOnPreRun(cb) {
+ __ATPRERUN__.unshift(cb);
+}
+Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun;
+
+function addOnInit(cb) {
+ __ATINIT__.unshift(cb);
+}
+Module['addOnInit'] = Module.addOnInit = addOnInit;
+
+function addOnPreMain(cb) {
+ __ATMAIN__.unshift(cb);
+}
+Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain;
+
+function addOnExit(cb) {
+ __ATEXIT__.unshift(cb);
+}
+Module['addOnExit'] = Module.addOnExit = addOnExit;
+
+function addOnPostRun(cb) {
+ __ATPOSTRUN__.unshift(cb);
+}
+Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun;
+
+// Tools
+
+// This processes a JS string into a C-line array of numbers, 0-terminated.
+// For LLVM-originating strings, see parser.js:parseLLVMString function
+function intArrayFromString(stringy, dontAddNull, length /* optional */) {
+ var ret = (new Runtime.UTF8Processor()).processJSString(stringy);
+ if (length) {
+ ret.length = length;
+ }
+ if (!dontAddNull) {
+ ret.push(0);
+ }
+ return ret;
+}
+Module['intArrayFromString'] = intArrayFromString;
+
+function intArrayToString(array) {
+ var ret = [];
+ for (var i = 0; i < array.length; i++) {
+ var chr = array[i];
+ if (chr > 0xFF) {
+ assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.');
+ chr &= 0xFF;
+ }
+ ret.push(String.fromCharCode(chr));
+ }
+ return ret.join('');
+}
+Module['intArrayToString'] = intArrayToString;
+
+// Write a Javascript array to somewhere in the heap
+function writeStringToMemory(string, buffer, dontAddNull) {
+ var array = intArrayFromString(string, dontAddNull);
+ var i = 0;
+ while (i < array.length) {
+ var chr = array[i];
+ HEAP8[(((buffer)+(i))|0)]=chr;
+ i = i + 1;
+ }
+}
+Module['writeStringToMemory'] = writeStringToMemory;
+
+function writeArrayToMemory(array, buffer) {
+ for (var i = 0; i < array.length; i++) {
+ HEAP8[(((buffer)+(i))|0)]=array[i];
+ }
+}
+Module['writeArrayToMemory'] = writeArrayToMemory;
+
+function writeAsciiToMemory(str, buffer, dontAddNull) {
+ for (var i = 0; i < str.length; i++) {
+ assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff);
+ HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i);
+ }
+ if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0;
+}
+Module['writeAsciiToMemory'] = writeAsciiToMemory;
+
+function unSign(value, bits, ignore, sig) {
+ if (value >= 0) {
+ return value;
+ }
+ return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts
+ : Math.pow(2, bits) + value;
+}
+function reSign(value, bits, ignore, sig) {
+ if (value <= 0) {
+ return value;
+ }
+ var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32
+ : Math.pow(2, bits-1);
+ if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that
+ // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors
+ // TODO: In i64 mode 1, resign the two parts separately and safely
+ value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts
+ }
+ return value;
+}
+
+// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
+if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
+ var ah = a >>> 16;
+ var al = a & 0xffff;
+ var bh = b >>> 16;
+ var bl = b & 0xffff;
+ return (al*bl + ((ah*bl + al*bh) << 16))|0;
+};
+Math.imul = Math['imul'];
+
+
+var Math_abs = Math.abs;
+var Math_cos = Math.cos;
+var Math_sin = Math.sin;
+var Math_tan = Math.tan;
+var Math_acos = Math.acos;
+var Math_asin = Math.asin;
+var Math_atan = Math.atan;
+var Math_atan2 = Math.atan2;
+var Math_exp = Math.exp;
+var Math_log = Math.log;
+var Math_sqrt = Math.sqrt;
+var Math_ceil = Math.ceil;
+var Math_floor = Math.floor;
+var Math_pow = Math.pow;
+var Math_imul = Math.imul;
+var Math_fround = Math.fround;
+var Math_min = Math.min;
+
+// A counter of dependencies for calling run(). If we need to
+// do asynchronous work before running, increment this and
+// decrement it. Incrementing must happen in a place like
+// PRE_RUN_ADDITIONS (used by emcc to add file preloading).
+// Note that you can add dependencies in preRun, even though
+// it happens right before run - run will be postponed until
+// the dependencies are met.
+var runDependencies = 0;
+var runDependencyWatcher = null;
+var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled
+var runDependencyTracking = {};
+
+function addRunDependency(id) {
+ runDependencies++;
+ if (Module['monitorRunDependencies']) {
+ Module['monitorRunDependencies'](runDependencies);
+ }
+ if (id) {
+ assert(!runDependencyTracking[id]);
+ runDependencyTracking[id] = 1;
+ if (runDependencyWatcher === null && typeof setInterval !== 'undefined') {
+ // Check for missing dependencies every few seconds
+ runDependencyWatcher = setInterval(function() {
+ var shown = false;
+ for (var dep in runDependencyTracking) {
+ if (!shown) {
+ shown = true;
+ Module.printErr('still waiting on run dependencies:');
+ }
+ Module.printErr('dependency: ' + dep);
+ }
+ if (shown) {
+ Module.printErr('(end of list)');
+ }
+ }, 10000);
+ }
+ } else {
+ Module.printErr('warning: run dependency added without ID');
+ }
+}
+Module['addRunDependency'] = addRunDependency;
+function removeRunDependency(id) {
+ runDependencies--;
+ if (Module['monitorRunDependencies']) {
+ Module['monitorRunDependencies'](runDependencies);
+ }
+ if (id) {
+ assert(runDependencyTracking[id]);
+ delete runDependencyTracking[id];
+ } else {
+ Module.printErr('warning: run dependency removed without ID');
+ }
+ if (runDependencies == 0) {
+ if (runDependencyWatcher !== null) {
+ clearInterval(runDependencyWatcher);
+ runDependencyWatcher = null;
+ }
+ if (dependenciesFulfilled) {
+ var callback = dependenciesFulfilled;
+ dependenciesFulfilled = null;
+ callback(); // can add another dependenciesFulfilled
+ }
+ }
+}
+Module['removeRunDependency'] = removeRunDependency;
+
+Module["preloadedImages"] = {}; // maps url to image data
+Module["preloadedAudios"] = {}; // maps url to audio data
+
+
+var memoryInitializer = null;
+
+// === Body ===
+
+
+
+STATIC_BASE = 8;
+
+STATICTOP = STATIC_BASE + 504;
+
+
+/* global initializers */ __ATINIT__.push({ func: function() { runPostSets() } });
+
+
+
+
+
+/* memory initializer */ allocate([255,255,255,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
+function runPostSets() {
+
+
+}
+
+var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
+
+assert(tempDoublePtr % 8 == 0);
+
+function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much
+
+ HEAP8[tempDoublePtr] = HEAP8[ptr];
+
+ HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
+
+ HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
+
+ HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
+
+}
+
+function copyTempDouble(ptr) {
+
+ HEAP8[tempDoublePtr] = HEAP8[ptr];
+
+ HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
+
+ HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
+
+ HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
+
+ HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];
+
+ HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];
+
+ HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];
+
+ HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];
+
+}
+
+
+
+ function _memset(ptr, value, num) {
+ ptr = ptr|0; value = value|0; num = num|0;
+ var stop = 0, value4 = 0, stop4 = 0, unaligned = 0;
+ stop = (ptr + num)|0;
+ if ((num|0) >= 20) {
+ // This is unaligned, but quite large, so work hard to get to aligned settings
+ value = value & 0xff;
+ unaligned = ptr & 3;
+ value4 = value | (value << 8) | (value << 16) | (value << 24);
+ stop4 = stop & ~3;
+ if (unaligned) {
+ unaligned = (ptr + 4 - unaligned)|0;
+ while ((ptr|0) < (unaligned|0)) { // no need to check for stop, since we have large num
+ HEAP8[(ptr)]=value;
+ ptr = (ptr+1)|0;
+ }
+ }
+ while ((ptr|0) < (stop4|0)) {
+ HEAP32[((ptr)>>2)]=value4;
+ ptr = (ptr+4)|0;
+ }
+ }
+ while ((ptr|0) < (stop|0)) {
+ HEAP8[(ptr)]=value;
+ ptr = (ptr+1)|0;
+ }
+ return (ptr-num)|0;
+ }var _llvm_memset_p0i8_i32=_memset;
+
+
+ function _memcpy(dest, src, num) {
+ dest = dest|0; src = src|0; num = num|0;
+ var ret = 0;
+ ret = dest|0;
+ if ((dest&3) == (src&3)) {
+ while (dest & 3) {
+ if ((num|0) == 0) return ret|0;
+ HEAP8[(dest)]=HEAP8[(src)];
+ dest = (dest+1)|0;
+ src = (src+1)|0;
+ num = (num-1)|0;
+ }
+ while ((num|0) >= 4) {
+ HEAP32[((dest)>>2)]=HEAP32[((src)>>2)];
+ dest = (dest+4)|0;
+ src = (src+4)|0;
+ num = (num-4)|0;
+ }
+ }
+ while ((num|0) > 0) {
+ HEAP8[(dest)]=HEAP8[(src)];
+ dest = (dest+1)|0;
+ src = (src+1)|0;
+ num = (num-1)|0;
+ }
+ return ret|0;
+ }var _llvm_memcpy_p0i8_p0i8_i32=_memcpy;
+
+ function _abort() {
+ Module['abort']();
+ }
+
+
+
+ var ___errno_state=0;function ___setErrNo(value) {
+ // For convenient setting and returning of errno.
+ HEAP32[((___errno_state)>>2)]=value;
+ return value;
+ }function ___errno_location() {
+ return ___errno_state;
+ }
+
+ function _sbrk(bytes) {
+ // Implement a Linux-like 'memory area' for our 'process'.
+ // Changes the size of the memory area by |bytes|; returns the
+ // address of the previous top ('break') of the memory area
+ // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP
+ var self = _sbrk;
+ if (!self.called) {
+ DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned
+ self.called = true;
+ assert(Runtime.dynamicAlloc);
+ self.alloc = Runtime.dynamicAlloc;
+ Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') };
+ }
+ var ret = DYNAMICTOP;
+ if (bytes != 0) self.alloc(bytes);
+ return ret; // Previous break location.
+ }
+
+
+ var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name) {
+ // long sysconf(int name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
+ switch(name) {
+ case 30: return PAGE_SIZE;
+ case 132:
+ case 133:
+ case 12:
+ case 137:
+ case 138:
+ case 15:
+ case 235:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 149:
+ case 13:
+ case 10:
+ case 236:
+ case 153:
+ case 9:
+ case 21:
+ case 22:
+ case 159:
+ case 154:
+ case 14:
+ case 77:
+ case 78:
+ case 139:
+ case 80:
+ case 81:
+ case 79:
+ case 82:
+ case 68:
+ case 67:
+ case 164:
+ case 11:
+ case 29:
+ case 47:
+ case 48:
+ case 95:
+ case 52:
+ case 51:
+ case 46:
+ return 200809;
+ case 27:
+ case 246:
+ case 127:
+ case 128:
+ case 23:
+ case 24:
+ case 160:
+ case 161:
+ case 181:
+ case 182:
+ case 242:
+ case 183:
+ case 184:
+ case 243:
+ case 244:
+ case 245:
+ case 165:
+ case 178:
+ case 179:
+ case 49:
+ case 50:
+ case 168:
+ case 169:
+ case 175:
+ case 170:
+ case 171:
+ case 172:
+ case 97:
+ case 76:
+ case 32:
+ case 173:
+ case 35:
+ return -1;
+ case 176:
+ case 177:
+ case 7:
+ case 155:
+ case 8:
+ case 157:
+ case 125:
+ case 126:
+ case 92:
+ case 93:
+ case 129:
+ case 130:
+ case 131:
+ case 94:
+ case 91:
+ return 1;
+ case 74:
+ case 60:
+ case 69:
+ case 70:
+ case 4:
+ return 1024;
+ case 31:
+ case 42:
+ case 72:
+ return 32;
+ case 87:
+ case 26:
+ case 33:
+ return 2147483647;
+ case 34:
+ case 1:
+ return 47839;
+ case 38:
+ case 36:
+ return 99;
+ case 43:
+ case 37:
+ return 2048;
+ case 0: return 2097152;
+ case 3: return 65536;
+ case 28: return 32768;
+ case 44: return 32767;
+ case 75: return 16384;
+ case 39: return 1000;
+ case 89: return 700;
+ case 71: return 256;
+ case 40: return 255;
+ case 2: return 100;
+ case 180: return 64;
+ case 25: return 20;
+ case 5: return 16;
+ case 6: return 6;
+ case 73: return 4;
+ case 84: return 1;
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
+ function _time(ptr) {
+ var ret = Math.floor(Date.now()/1000);
+ if (ptr) {
+ HEAP32[((ptr)>>2)]=ret;
+ }
+ return ret;
+ }
+
+
+
+
+
+ function _strlen(ptr) {
+ ptr = ptr|0;
+ var curr = 0;
+ curr = ptr;
+ while (HEAP8[(curr)]) {
+ curr = (curr + 1)|0;
+ }
+ return (curr - ptr)|0;
+ }
+
+
+
+
+ var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
+
+ var TTY={ttys:[],init:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // currently, FS.init does not distinguish if process.stdin is a file or TTY
+ // // device, it always assumes it's a TTY device. because of this, we're forcing
+ // // process.stdin to UTF8 encoding to at least make stdin reading compatible
+ // // with text files until FS.init can be refactored.
+ // process['stdin']['setEncoding']('utf8');
+ // }
+ },shutdown:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
+ // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
+ // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
+ // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
+ // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
+ // process['stdin']['pause']();
+ // }
+ },register:function (dev, ops) {
+ TTY.ttys[dev] = { input: [], output: [], ops: ops };
+ FS.registerDevice(dev, TTY.stream_ops);
+ },stream_ops:{open:function (stream) {
+ var tty = TTY.ttys[stream.node.rdev];
+ if (!tty) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ stream.tty = tty;
+ stream.seekable = false;
+ },close:function (stream) {
+ // flush any pending line data
+ if (stream.tty.output.length) {
+ stream.tty.ops.put_char(stream.tty, 10);
+ }
+ },read:function (stream, buffer, offset, length, pos /* ignored */) {
+ if (!stream.tty || !stream.tty.ops.get_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = stream.tty.ops.get_char(stream.tty);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.put_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ for (var i = 0; i < length; i++) {
+ try {
+ stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }},default_tty_ops:{get_char:function (tty) {
+ if (!tty.input.length) {
+ var result = null;
+ if (ENVIRONMENT_IS_NODE) {
+ result = process['stdin']['read']();
+ if (!result) {
+ if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) {
+ return null; // EOF
+ }
+ return undefined; // no data available
+ }
+ } else if (typeof window != 'undefined' &&
+ typeof window.prompt == 'function') {
+ // Browser.
+ result = window.prompt('Input: '); // returns null on cancel
+ if (result !== null) {
+ result += '\n';
+ }
+ } else if (typeof readline == 'function') {
+ // Command line.
+ result = readline();
+ if (result !== null) {
+ result += '\n';
+ }
+ }
+ if (!result) {
+ return null;
+ }
+ tty.input = intArrayFromString(result, true);
+ }
+ return tty.input.shift();
+ },put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['print'](tty.output.join(''));
+ tty.output = [];
+ } else {
+ tty.output.push(TTY.utf8.processCChar(val));
+ }
+ }},default_tty1_ops:{put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['printErr'](tty.output.join(''));
+ tty.output = [];
+ } else {
+ tty.output.push(TTY.utf8.processCChar(val));
+ }
+ }}};
+
+ var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) {
+ return MEMFS.createNode(null, '/', 16384 | 0777, 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
+ // no supported
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (!MEMFS.ops_table) {
+ MEMFS.ops_table = {
+ dir: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ lookup: MEMFS.node_ops.lookup,
+ mknod: MEMFS.node_ops.mknod,
+ mknod: MEMFS.node_ops.mknod,
+ rename: MEMFS.node_ops.rename,
+ unlink: MEMFS.node_ops.unlink,
+ rmdir: MEMFS.node_ops.rmdir,
+ readdir: MEMFS.node_ops.readdir,
+ symlink: MEMFS.node_ops.symlink
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek
+ }
+ },
+ file: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek,
+ read: MEMFS.stream_ops.read,
+ write: MEMFS.stream_ops.write,
+ allocate: MEMFS.stream_ops.allocate,
+ mmap: MEMFS.stream_ops.mmap
+ }
+ },
+ link: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ readlink: MEMFS.node_ops.readlink
+ },
+ stream: {}
+ },
+ chrdev: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: FS.chrdev_stream_ops
+ },
+ };
+ }
+ var node = FS.createNode(parent, name, mode, dev);
+ if (FS.isDir(node.mode)) {
+ node.node_ops = MEMFS.ops_table.dir.node;
+ node.stream_ops = MEMFS.ops_table.dir.stream;
+ node.contents = {};
+ } else if (FS.isFile(node.mode)) {
+ node.node_ops = MEMFS.ops_table.file.node;
+ node.stream_ops = MEMFS.ops_table.file.stream;
+ node.contents = [];
+ node.contentMode = MEMFS.CONTENT_FLEXIBLE;
+ } else if (FS.isLink(node.mode)) {
+ node.node_ops = MEMFS.ops_table.link.node;
+ node.stream_ops = MEMFS.ops_table.link.stream;
+ } else if (FS.isChrdev(node.mode)) {
+ node.node_ops = MEMFS.ops_table.chrdev.node;
+ node.stream_ops = MEMFS.ops_table.chrdev.stream;
+ }
+ node.timestamp = Date.now();
+ // add the new node to the parent
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },ensureFlexible:function (node) {
+ if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) {
+ var contents = node.contents;
+ node.contents = Array.prototype.slice.call(contents);
+ node.contentMode = MEMFS.CONTENT_FLEXIBLE;
+ }
+ },node_ops:{getattr:function (node) {
+ var attr = {};
+ // device numbers reuse inode numbers.
+ attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
+ attr.ino = node.id;
+ attr.mode = node.mode;
+ attr.nlink = 1;
+ attr.uid = 0;
+ attr.gid = 0;
+ attr.rdev = node.rdev;
+ if (FS.isDir(node.mode)) {
+ attr.size = 4096;
+ } else if (FS.isFile(node.mode)) {
+ attr.size = node.contents.length;
+ } else if (FS.isLink(node.mode)) {
+ attr.size = node.link.length;
+ } else {
+ attr.size = 0;
+ }
+ attr.atime = new Date(node.timestamp);
+ attr.mtime = new Date(node.timestamp);
+ attr.ctime = new Date(node.timestamp);
+ // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
+ // but this is not required by the standard.
+ attr.blksize = 4096;
+ attr.blocks = Math.ceil(attr.size / attr.blksize);
+ return attr;
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ if (attr.size !== undefined) {
+ MEMFS.ensureFlexible(node);
+ var contents = node.contents;
+ if (attr.size < contents.length) contents.length = attr.size;
+ else while (attr.size > contents.length) contents.push(0);
+ }
+ },lookup:function (parent, name) {
+ throw FS.genericErrors[ERRNO_CODES.ENOENT];
+ },mknod:function (parent, name, mode, dev) {
+ return MEMFS.createNode(parent, name, mode, dev);
+ },rename:function (old_node, new_dir, new_name) {
+ // if we're overwriting a directory at new_name, make sure it's empty.
+ if (FS.isDir(old_node.mode)) {
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ }
+ if (new_node) {
+ for (var i in new_node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ }
+ }
+ // do the internal rewiring
+ delete old_node.parent.contents[old_node.name];
+ old_node.name = new_name;
+ new_dir.contents[new_name] = old_node;
+ old_node.parent = new_dir;
+ },unlink:function (parent, name) {
+ delete parent.contents[name];
+ },rmdir:function (parent, name) {
+ var node = FS.lookupNode(parent, name);
+ for (var i in node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ delete parent.contents[name];
+ },readdir:function (node) {
+ var entries = ['.', '..']
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newname, oldpath) {
+ var node = MEMFS.createNode(parent, newname, 0777 | 40960, 0);
+ node.link = oldpath;
+ return node;
+ },readlink:function (node) {
+ if (!FS.isLink(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return node.link;
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ var contents = stream.node.contents;
+ if (position >= contents.length)
+ return 0;
+ var size = Math.min(contents.length - position, length);
+ assert(size >= 0);
+ if (size > 8 && contents.subarray) { // non-trivial, and typed array
+ buffer.set(contents.subarray(position, position + size), offset);
+ } else
+ {
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents[position + i];
+ }
+ }
+ return size;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ var node = stream.node;
+ node.timestamp = Date.now();
+ var contents = node.contents;
+ if (length && contents.length === 0 && position === 0 && buffer.subarray) {
+ // just replace it with the new data
+ assert(buffer.length);
+ if (canOwn && offset === 0) {
+ node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source.
+ node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED;
+ } else {
+ node.contents = new Uint8Array(buffer.subarray(offset, offset+length));
+ node.contentMode = MEMFS.CONTENT_FIXED;
+ }
+ return length;
+ }
+ MEMFS.ensureFlexible(node);
+ var contents = node.contents;
+ while (contents.length < position) contents.push(0);
+ for (var i = 0; i < length; i++) {
+ contents[position + i] = buffer[offset + i];
+ }
+ return length;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.contents.length;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ stream.ungotten = [];
+ stream.position = position;
+ return position;
+ },allocate:function (stream, offset, length) {
+ MEMFS.ensureFlexible(stream.node);
+ var contents = stream.node.contents;
+ var limit = offset + length;
+ while (limit > contents.length) contents.push(0);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ var ptr;
+ var allocated;
+ var contents = stream.node.contents;
+ // Only make a new copy when MAP_PRIVATE is specified.
+ if ( !(flags & 2) &&
+ (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
+ // We can't emulate MAP_SHARED when the file is not backed by the buffer
+ // we're mapping to (e.g. the HEAP buffer).
+ allocated = false;
+ ptr = contents.byteOffset;
+ } else {
+ // Try to avoid unnecessary slices.
+ if (position > 0 || position + length < contents.length) {
+ if (contents.subarray) {
+ contents = contents.subarray(position, position + length);
+ } else {
+ contents = Array.prototype.slice.call(contents, position, position + length);
+ }
+ }
+ allocated = true;
+ ptr = _malloc(length);
+ if (!ptr) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
+ }
+ buffer.set(contents, ptr);
+ }
+ return { ptr: ptr, allocated: allocated };
+ }}};
+
+ var IDBFS={dbs:{},indexedDB:function () {
+ return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
+ return MEMFS.mount.apply(null, arguments);
+ },syncfs:function (mount, populate, callback) {
+ IDBFS.getLocalSet(mount, function(err, local) {
+ if (err) return callback(err);
+
+ IDBFS.getRemoteSet(mount, function(err, remote) {
+ if (err) return callback(err);
+
+ var src = populate ? remote : local;
+ var dst = populate ? local : remote;
+
+ IDBFS.reconcile(src, dst, callback);
+ });
+ });
+ },reconcile:function (src, dst, callback) {
+ var total = 0;
+
+ var create = {};
+ for (var key in src.files) {
+ if (!src.files.hasOwnProperty(key)) continue;
+ var e = src.files[key];
+ var e2 = dst.files[key];
+ if (!e2 || e.timestamp > e2.timestamp) {
+ create[key] = e;
+ total++;
+ }
+ }
+
+ var remove = {};
+ for (var key in dst.files) {
+ if (!dst.files.hasOwnProperty(key)) continue;
+ var e = dst.files[key];
+ var e2 = src.files[key];
+ if (!e2) {
+ remove[key] = e;
+ total++;
+ }
+ }
+
+ if (!total) {
+ // early out
+ return callback(null);
+ }
+
+ var completed = 0;
+ function done(err) {
+ if (err) return callback(err);
+ if (++completed >= total) {
+ return callback(null);
+ }
+ };
+
+ // create a single transaction to handle and IDB reads / writes we'll need to do
+ var db = src.type === 'remote' ? src.db : dst.db;
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
+ transaction.onerror = function transaction_onerror() { callback(this.error); };
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+
+ for (var path in create) {
+ if (!create.hasOwnProperty(path)) continue;
+ var entry = create[path];
+
+ if (dst.type === 'local') {
+ // save file to local
+ try {
+ if (FS.isDir(entry.mode)) {
+ FS.mkdir(path, entry.mode);
+ } else if (FS.isFile(entry.mode)) {
+ var stream = FS.open(path, 'w+', 0666);
+ FS.write(stream, entry.contents, 0, entry.contents.length, 0, true /* canOwn */);
+ FS.close(stream);
+ }
+ done(null);
+ } catch (e) {
+ return done(e);
+ }
+ } else {
+ // save file to IDB
+ var req = store.put(entry, path);
+ req.onsuccess = function req_onsuccess() { done(null); };
+ req.onerror = function req_onerror() { done(this.error); };
+ }
+ }
+
+ for (var path in remove) {
+ if (!remove.hasOwnProperty(path)) continue;
+ var entry = remove[path];
+
+ if (dst.type === 'local') {
+ // delete file from local
+ try {
+ if (FS.isDir(entry.mode)) {
+ // TODO recursive delete?
+ FS.rmdir(path);
+ } else if (FS.isFile(entry.mode)) {
+ FS.unlink(path);
+ }
+ done(null);
+ } catch (e) {
+ return done(e);
+ }
+ } else {
+ // delete file from IDB
+ var req = store.delete(path);
+ req.onsuccess = function req_onsuccess() { done(null); };
+ req.onerror = function req_onerror() { done(this.error); };
+ }
+ }
+ },getLocalSet:function (mount, callback) {
+ var files = {};
+
+ function isRealDir(p) {
+ return p !== '.' && p !== '..';
+ };
+ function toAbsolute(root) {
+ return function(p) {
+ return PATH.join2(root, p);
+ }
+ };
+
+ var check = FS.readdir(mount.mountpoint)
+ .filter(isRealDir)
+ .map(toAbsolute(mount.mountpoint));
+
+ while (check.length) {
+ var path = check.pop();
+ var stat, node;
+
+ try {
+ var lookup = FS.lookupPath(path);
+ node = lookup.node;
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ check.push.apply(check, FS.readdir(path)
+ .filter(isRealDir)
+ .map(toAbsolute(path)));
+
+ files[path] = { mode: stat.mode, timestamp: stat.mtime };
+ } else if (FS.isFile(stat.mode)) {
+ files[path] = { contents: node.contents, mode: stat.mode, timestamp: stat.mtime };
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+ }
+
+ return callback(null, { type: 'local', files: files });
+ },getDB:function (name, callback) {
+ // look it up in the cache
+ var db = IDBFS.dbs[name];
+ if (db) {
+ return callback(null, db);
+ }
+ var req;
+ try {
+ req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ req.onupgradeneeded = function req_onupgradeneeded() {
+ db = req.result;
+ db.createObjectStore(IDBFS.DB_STORE_NAME);
+ };
+ req.onsuccess = function req_onsuccess() {
+ db = req.result;
+ // add to the cache
+ IDBFS.dbs[name] = db;
+ callback(null, db);
+ };
+ req.onerror = function req_onerror() {
+ callback(this.error);
+ };
+ },getRemoteSet:function (mount, callback) {
+ var files = {};
+
+ IDBFS.getDB(mount.mountpoint, function(err, db) {
+ if (err) return callback(err);
+
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
+ transaction.onerror = function transaction_onerror() { callback(this.error); };
+
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ store.openCursor().onsuccess = function store_openCursor_onsuccess(event) {
+ var cursor = event.target.result;
+ if (!cursor) {
+ return callback(null, { type: 'remote', db: db, files: files });
+ }
+
+ files[cursor.key] = cursor.value;
+ cursor.continue();
+ };
+ });
+ }};
+
+ var NODEFS={isWindows:false,staticInit:function () {
+ NODEFS.isWindows = !!process.platform.match(/^win/);
+ },mount:function (mount) {
+ assert(ENVIRONMENT_IS_NODE);
+ return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node = FS.createNode(parent, name, mode);
+ node.node_ops = NODEFS.node_ops;
+ node.stream_ops = NODEFS.stream_ops;
+ return node;
+ },getMode:function (path) {
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ if (NODEFS.isWindows) {
+ // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
+ // propagate write bits to execute bits.
+ stat.mode = stat.mode | ((stat.mode & 146) >> 1);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return stat.mode;
+ },realPath:function (node) {
+ var parts = [];
+ while (node.parent !== node) {
+ parts.push(node.name);
+ node = node.parent;
+ }
+ parts.push(node.mount.opts.root);
+ parts.reverse();
+ return PATH.join.apply(null, parts);
+ },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
+ if (flags in NODEFS.flagsToPermissionStringMap) {
+ return NODEFS.flagsToPermissionStringMap[flags];
+ } else {
+ return flags;
+ }
+ },node_ops:{getattr:function (node) {
+ var path = NODEFS.realPath(node);
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
+ // See http://support.microsoft.com/kb/140365
+ if (NODEFS.isWindows && !stat.blksize) {
+ stat.blksize = 4096;
+ }
+ if (NODEFS.isWindows && !stat.blocks) {
+ stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
+ }
+ return {
+ dev: stat.dev,
+ ino: stat.ino,
+ mode: stat.mode,
+ nlink: stat.nlink,
+ uid: stat.uid,
+ gid: stat.gid,
+ rdev: stat.rdev,
+ size: stat.size,
+ atime: stat.atime,
+ mtime: stat.mtime,
+ ctime: stat.ctime,
+ blksize: stat.blksize,
+ blocks: stat.blocks
+ };
+ },setattr:function (node, attr) {
+ var path = NODEFS.realPath(node);
+ try {
+ if (attr.mode !== undefined) {
+ fs.chmodSync(path, attr.mode);
+ // update the common node structure mode as well
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ var date = new Date(attr.timestamp);
+ fs.utimesSync(path, date, date);
+ }
+ if (attr.size !== undefined) {
+ fs.truncateSync(path, attr.size);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },lookup:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ var mode = NODEFS.getMode(path);
+ return NODEFS.createNode(parent, name, mode);
+ },mknod:function (parent, name, mode, dev) {
+ var node = NODEFS.createNode(parent, name, mode, dev);
+ // create the backing node for this in the fs root as well
+ var path = NODEFS.realPath(node);
+ try {
+ if (FS.isDir(node.mode)) {
+ fs.mkdirSync(path, node.mode);
+ } else {
+ fs.writeFileSync(path, '', { mode: node.mode });
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return node;
+ },rename:function (oldNode, newDir, newName) {
+ var oldPath = NODEFS.realPath(oldNode);
+ var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
+ try {
+ fs.renameSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },unlink:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.unlinkSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },rmdir:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.rmdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readdir:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ return fs.readdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },symlink:function (parent, newName, oldPath) {
+ var newPath = PATH.join2(NODEFS.realPath(parent), newName);
+ try {
+ fs.symlinkSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readlink:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ return fs.readlinkSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }},stream_ops:{open:function (stream) {
+ var path = NODEFS.realPath(stream.node);
+ try {
+ if (FS.isFile(stream.node.mode)) {
+ stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },close:function (stream) {
+ try {
+ if (FS.isFile(stream.node.mode) && stream.nfd) {
+ fs.closeSync(stream.nfd);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },read:function (stream, buffer, offset, length, position) {
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(length);
+ var res;
+ try {
+ res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ if (res > 0) {
+ for (var i = 0; i < res; i++) {
+ buffer[offset + i] = nbuffer[i];
+ }
+ }
+ return res;
+ },write:function (stream, buffer, offset, length, position) {
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
+ var res;
+ try {
+ res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return res;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ try {
+ var stat = fs.fstatSync(stream.nfd);
+ position += stat.size;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }
+ }
+
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ stream.position = position;
+ return position;
+ }}};
+
+ var _stdin=allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stdout=allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stderr=allocate(1, "i32*", ALLOC_STATIC);
+
+ function _fflush(stream) {
+ // int fflush(FILE *stream);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html
+ // we don't currently perform any user-space buffering of data
+ }var FS={root:null,mounts:[],devices:[null],streams:[null],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) {
+ if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
+ return ___setErrNo(e.errno);
+ },lookupPath:function (path, opts) {
+ path = PATH.resolve(FS.cwd(), path);
+ opts = opts || { recurse_count: 0 };
+
+ if (opts.recurse_count > 8) { // max recursive lookup of 8
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+
+ // split the path
+ var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), false);
+
+ // start at the root
+ var current = FS.root;
+ var current_path = '/';
+
+ for (var i = 0; i < parts.length; i++) {
+ var islast = (i === parts.length-1);
+ if (islast && opts.parent) {
+ // stop resolving
+ break;
+ }
+
+ current = FS.lookupNode(current, parts[i]);
+ current_path = PATH.join2(current_path, parts[i]);
+
+ // jump to the mount's root node if this is a mountpoint
+ if (FS.isMountpoint(current)) {
+ current = current.mount.root;
+ }
+
+ // follow symlinks
+ // by default, lookupPath will not follow a symlink if it is the final path component.
+ // setting opts.follow = true will override this behavior.
+ if (!islast || opts.follow) {
+ var count = 0;
+ while (FS.isLink(current.mode)) {
+ var link = FS.readlink(current_path);
+ current_path = PATH.resolve(PATH.dirname(current_path), link);
+
+ var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
+ current = lookup.node;
+
+ if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+ }
+ }
+ }
+
+ return { path: current_path, node: current };
+ },getPath:function (node) {
+ var path;
+ while (true) {
+ if (FS.isRoot(node)) {
+ var mount = node.mount.mountpoint;
+ if (!path) return mount;
+ return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
+ }
+ path = path ? node.name + '/' + path : node.name;
+ node = node.parent;
+ }
+ },hashName:function (parentid, name) {
+ var hash = 0;
+
+
+ for (var i = 0; i < name.length; i++) {
+ hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
+ }
+ return ((parentid + hash) >>> 0) % FS.nameTable.length;
+ },hashAddNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ node.name_next = FS.nameTable[hash];
+ FS.nameTable[hash] = node;
+ },hashRemoveNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ if (FS.nameTable[hash] === node) {
+ FS.nameTable[hash] = node.name_next;
+ } else {
+ var current = FS.nameTable[hash];
+ while (current) {
+ if (current.name_next === node) {
+ current.name_next = node.name_next;
+ break;
+ }
+ current = current.name_next;
+ }
+ }
+ },lookupNode:function (parent, name) {
+ var err = FS.mayLookup(parent);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ var hash = FS.hashName(parent.id, name);
+ for (var node = FS.nameTable[hash]; node; node = node.name_next) {
+ var nodeName = node.name;
+ if (node.parent.id === parent.id && nodeName === name) {
+ return node;
+ }
+ }
+ // if we failed to find it in the cache, call into the VFS
+ return FS.lookup(parent, name);
+ },createNode:function (parent, name, mode, rdev) {
+ if (!FS.FSNode) {
+ FS.FSNode = function(parent, name, mode, rdev) {
+ this.id = FS.nextInode++;
+ this.name = name;
+ this.mode = mode;
+ this.node_ops = {};
+ this.stream_ops = {};
+ this.rdev = rdev;
+ this.parent = null;
+ this.mount = null;
+ if (!parent) {
+ parent = this; // root node sets parent to itself
+ }
+ this.parent = parent;
+ this.mount = parent.mount;
+ FS.hashAddNode(this);
+ };
+
+ // compatibility
+ var readMode = 292 | 73;
+ var writeMode = 146;
+
+ FS.FSNode.prototype = {};
+
+ // NOTE we must use Object.defineProperties instead of individual calls to
+ // Object.defineProperty in order to make closure compiler happy
+ Object.defineProperties(FS.FSNode.prototype, {
+ read: {
+ get: function() { return (this.mode & readMode) === readMode; },
+ set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
+ },
+ write: {
+ get: function() { return (this.mode & writeMode) === writeMode; },
+ set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
+ },
+ isFolder: {
+ get: function() { return FS.isDir(this.mode); },
+ },
+ isDevice: {
+ get: function() { return FS.isChrdev(this.mode); },
+ },
+ });
+ }
+ return new FS.FSNode(parent, name, mode, rdev);
+ },destroyNode:function (node) {
+ FS.hashRemoveNode(node);
+ },isRoot:function (node) {
+ return node === node.parent;
+ },isMountpoint:function (node) {
+ return node.mounted;
+ },isFile:function (mode) {
+ return (mode & 61440) === 32768;
+ },isDir:function (mode) {
+ return (mode & 61440) === 16384;
+ },isLink:function (mode) {
+ return (mode & 61440) === 40960;
+ },isChrdev:function (mode) {
+ return (mode & 61440) === 8192;
+ },isBlkdev:function (mode) {
+ return (mode & 61440) === 24576;
+ },isFIFO:function (mode) {
+ return (mode & 61440) === 4096;
+ },isSocket:function (mode) {
+ return (mode & 49152) === 49152;
+ },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
+ var flags = FS.flagModes[str];
+ if (typeof flags === 'undefined') {
+ throw new Error('Unknown file open mode: ' + str);
+ }
+ return flags;
+ },flagsToPermissionString:function (flag) {
+ var accmode = flag & 2097155;
+ var perms = ['r', 'w', 'rw'][accmode];
+ if ((flag & 512)) {
+ perms += 'w';
+ }
+ return perms;
+ },nodePermissions:function (node, perms) {
+ if (FS.ignorePermissions) {
+ return 0;
+ }
+ // return 0 if any user, group or owner bits are set.
+ if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
+ return ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },mayLookup:function (dir) {
+ return FS.nodePermissions(dir, 'x');
+ },mayCreate:function (dir, name) {
+ try {
+ var node = FS.lookupNode(dir, name);
+ return ERRNO_CODES.EEXIST;
+ } catch (e) {
+ }
+ return FS.nodePermissions(dir, 'wx');
+ },mayDelete:function (dir, name, isdir) {
+ var node;
+ try {
+ node = FS.lookupNode(dir, name);
+ } catch (e) {
+ return e.errno;
+ }
+ var err = FS.nodePermissions(dir, 'wx');
+ if (err) {
+ return err;
+ }
+ if (isdir) {
+ if (!FS.isDir(node.mode)) {
+ return ERRNO_CODES.ENOTDIR;
+ }
+ if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
+ return ERRNO_CODES.EBUSY;
+ }
+ } else {
+ if (FS.isDir(node.mode)) {
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return 0;
+ },mayOpen:function (node, flags) {
+ if (!node) {
+ return ERRNO_CODES.ENOENT;
+ }
+ if (FS.isLink(node.mode)) {
+ return ERRNO_CODES.ELOOP;
+ } else if (FS.isDir(node.mode)) {
+ if ((flags & 2097155) !== 0 || // opening for write
+ (flags & 512)) {
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
+ },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
+ fd_start = fd_start || 1;
+ fd_end = fd_end || FS.MAX_OPEN_FDS;
+ for (var fd = fd_start; fd <= fd_end; fd++) {
+ if (!FS.streams[fd]) {
+ return fd;
+ }
+ }
+ throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
+ },getStream:function (fd) {
+ return FS.streams[fd];
+ },createStream:function (stream, fd_start, fd_end) {
+ if (!FS.FSStream) {
+ FS.FSStream = function(){};
+ FS.FSStream.prototype = {};
+ // compatibility
+ Object.defineProperties(FS.FSStream.prototype, {
+ object: {
+ get: function() { return this.node; },
+ set: function(val) { this.node = val; }
+ },
+ isRead: {
+ get: function() { return (this.flags & 2097155) !== 1; }
+ },
+ isWrite: {
+ get: function() { return (this.flags & 2097155) !== 0; }
+ },
+ isAppend: {
+ get: function() { return (this.flags & 1024); }
+ }
+ });
+ }
+ if (stream.__proto__) {
+ // reuse the object
+ stream.__proto__ = FS.FSStream.prototype;
+ } else {
+ var newStream = new FS.FSStream();
+ for (var p in stream) {
+ newStream[p] = stream[p];
+ }
+ stream = newStream;
+ }
+ var fd = FS.nextfd(fd_start, fd_end);
+ stream.fd = fd;
+ FS.streams[fd] = stream;
+ return stream;
+ },closeStream:function (fd) {
+ FS.streams[fd] = null;
+ },chrdev_stream_ops:{open:function (stream) {
+ var device = FS.getDevice(stream.node.rdev);
+ // override node's stream ops with the device's
+ stream.stream_ops = device.stream_ops;
+ // forward the open call
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ },llseek:function () {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }},major:function (dev) {
+ return ((dev) >> 8);
+ },minor:function (dev) {
+ return ((dev) & 0xff);
+ },makedev:function (ma, mi) {
+ return ((ma) << 8 | (mi));
+ },registerDevice:function (dev, ops) {
+ FS.devices[dev] = { stream_ops: ops };
+ },getDevice:function (dev) {
+ return FS.devices[dev];
+ },syncfs:function (populate, callback) {
+ if (typeof(populate) === 'function') {
+ callback = populate;
+ populate = false;
+ }
+
+ var completed = 0;
+ var total = FS.mounts.length;
+ function done(err) {
+ if (err) {
+ return callback(err);
+ }
+ if (++completed >= total) {
+ callback(null);
+ }
+ };
+
+ // sync all mounts
+ for (var i = 0; i < FS.mounts.length; i++) {
+ var mount = FS.mounts[i];
+ if (!mount.type.syncfs) {
+ done(null);
+ continue;
+ }
+ mount.type.syncfs(mount, populate, done);
+ }
+ },mount:function (type, opts, mountpoint) {
+ var lookup;
+ if (mountpoint) {
+ lookup = FS.lookupPath(mountpoint, { follow: false });
+ mountpoint = lookup.path; // use the absolute path
+ }
+ var mount = {
+ type: type,
+ opts: opts,
+ mountpoint: mountpoint,
+ root: null
+ };
+ // create a root node for the fs
+ var root = type.mount(mount);
+ root.mount = mount;
+ mount.root = root;
+ // assign the mount info to the mountpoint's node
+ if (lookup) {
+ lookup.node.mount = mount;
+ lookup.node.mounted = true;
+ // compatibility update FS.root if we mount to /
+ if (mountpoint === '/') {
+ FS.root = mount.root;
+ }
+ }
+ // add to our cached list of mounts
+ FS.mounts.push(mount);
+ return root;
+ },lookup:function (parent, name) {
+ return parent.node_ops.lookup(parent, name);
+ },mknod:function (path, mode, dev) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var err = FS.mayCreate(parent, name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.mknod) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.mknod(parent, name, mode, dev);
+ },create:function (path, mode) {
+ mode = mode !== undefined ? mode : 0666;
+ mode &= 4095;
+ mode |= 32768;
+ return FS.mknod(path, mode, 0);
+ },mkdir:function (path, mode) {
+ mode = mode !== undefined ? mode : 0777;
+ mode &= 511 | 512;
+ mode |= 16384;
+ return FS.mknod(path, mode, 0);
+ },mkdev:function (path, mode, dev) {
+ if (typeof(dev) === 'undefined') {
+ dev = mode;
+ mode = 0666;
+ }
+ mode |= 8192;
+ return FS.mknod(path, mode, dev);
+ },symlink:function (oldpath, newpath) {
+ var lookup = FS.lookupPath(newpath, { parent: true });
+ var parent = lookup.node;
+ var newname = PATH.basename(newpath);
+ var err = FS.mayCreate(parent, newname);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.symlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.symlink(parent, newname, oldpath);
+ },rename:function (old_path, new_path) {
+ var old_dirname = PATH.dirname(old_path);
+ var new_dirname = PATH.dirname(new_path);
+ var old_name = PATH.basename(old_path);
+ var new_name = PATH.basename(new_path);
+ // parents must exist
+ var lookup, old_dir, new_dir;
+ try {
+ lookup = FS.lookupPath(old_path, { parent: true });
+ old_dir = lookup.node;
+ lookup = FS.lookupPath(new_path, { parent: true });
+ new_dir = lookup.node;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ // need to be part of the same mount
+ if (old_dir.mount !== new_dir.mount) {
+ throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
+ }
+ // source must exist
+ var old_node = FS.lookupNode(old_dir, old_name);
+ // old path should not be an ancestor of the new path
+ var relative = PATH.relative(old_path, new_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ // new path should not be an ancestor of the old path
+ relative = PATH.relative(new_path, old_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ // see if the new path already exists
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ // not fatal
+ }
+ // early out if nothing needs to change
+ if (old_node === new_node) {
+ return;
+ }
+ // we'll need to delete the old entry
+ var isdir = FS.isDir(old_node.mode);
+ var err = FS.mayDelete(old_dir, old_name, isdir);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ // need delete permissions if we'll be overwriting.
+ // need create permissions if new doesn't already exist.
+ err = new_node ?
+ FS.mayDelete(new_dir, new_name, isdir) :
+ FS.mayCreate(new_dir, new_name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!old_dir.node_ops.rename) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ // if we are going to change the parent, check write permissions
+ if (new_dir !== old_dir) {
+ err = FS.nodePermissions(old_dir, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ // remove the node from the lookup hash
+ FS.hashRemoveNode(old_node);
+ // do the underlying fs rename
+ try {
+ old_dir.node_ops.rename(old_node, new_dir, new_name);
+ } catch (e) {
+ throw e;
+ } finally {
+ // add the node back to the hash (in case node_ops.rename
+ // changed its name)
+ FS.hashAddNode(old_node);
+ }
+ },rmdir:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, true);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.rmdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ parent.node_ops.rmdir(parent, name);
+ FS.destroyNode(node);
+ },readdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ if (!node.node_ops.readdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ return node.node_ops.readdir(node);
+ },unlink:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, false);
+ if (err) {
+ // POSIX says unlink should set EPERM, not EISDIR
+ if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.unlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ parent.node_ops.unlink(parent, name);
+ FS.destroyNode(node);
+ },readlink:function (path) {
+ var lookup = FS.lookupPath(path, { follow: false });
+ var link = lookup.node;
+ if (!link.node_ops.readlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return link.node_ops.readlink(link);
+ },stat:function (path, dontFollow) {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ var node = lookup.node;
+ if (!node.node_ops.getattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return node.node_ops.getattr(node);
+ },lstat:function (path) {
+ return FS.stat(path, true);
+ },chmod:function (path, mode, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ mode: (mode & 4095) | (node.mode & ~4095),
+ timestamp: Date.now()
+ });
+ },lchmod:function (path, mode) {
+ FS.chmod(path, mode, true);
+ },fchmod:function (fd, mode) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chmod(stream.node, mode);
+ },chown:function (path, uid, gid, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ timestamp: Date.now()
+ // we ignore the uid / gid for now
+ });
+ },lchown:function (path, uid, gid) {
+ FS.chown(path, uid, gid, true);
+ },fchown:function (fd, uid, gid) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chown(stream.node, uid, gid);
+ },truncate:function (path, len) {
+ if (len < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!FS.isFile(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.nodePermissions(node, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ node.node_ops.setattr(node, {
+ size: len,
+ timestamp: Date.now()
+ });
+ },ftruncate:function (fd, len) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ FS.truncate(stream.node, len);
+ },utime:function (path, atime, mtime) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ node.node_ops.setattr(node, {
+ timestamp: Math.max(atime, mtime)
+ });
+ },open:function (path, flags, mode, fd_start, fd_end) {
+ flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
+ mode = typeof mode === 'undefined' ? 0666 : mode;
+ if ((flags & 64)) {
+ mode = (mode & 4095) | 32768;
+ } else {
+ mode = 0;
+ }
+ var node;
+ if (typeof path === 'object') {
+ node = path;
+ } else {
+ path = PATH.normalize(path);
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !(flags & 131072)
+ });
+ node = lookup.node;
+ } catch (e) {
+ // ignore
+ }
+ }
+ // perhaps we need to create the node
+ if ((flags & 64)) {
+ if (node) {
+ // if O_CREAT and O_EXCL are set, error out if the node already exists
+ if ((flags & 128)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
+ }
+ } else {
+ // node doesn't exist, try to create it
+ node = FS.mknod(path, mode, 0);
+ }
+ }
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ // can't truncate a device
+ if (FS.isChrdev(node.mode)) {
+ flags &= ~512;
+ }
+ // check permissions
+ var err = FS.mayOpen(node, flags);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ // do truncation if necessary
+ if ((flags & 512)) {
+ FS.truncate(node, 0);
+ }
+ // we've already handled these, don't pass down to the underlying vfs
+ flags &= ~(128 | 512);
+
+ // register the stream with the filesystem
+ var stream = FS.createStream({
+ node: node,
+ path: FS.getPath(node), // we want the absolute path to the node
+ flags: flags,
+ seekable: true,
+ position: 0,
+ stream_ops: node.stream_ops,
+ // used by the file family libc calls (fopen, fwrite, ferror, etc.)
+ ungotten: [],
+ error: false
+ }, fd_start, fd_end);
+ // call the new stream's open function
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ if (Module['logReadFiles'] && !(flags & 1)) {
+ if (!FS.readFiles) FS.readFiles = {};
+ if (!(path in FS.readFiles)) {
+ FS.readFiles[path] = 1;
+ Module['printErr']('read file: ' + path);
+ }
+ }
+ return stream;
+ },close:function (stream) {
+ try {
+ if (stream.stream_ops.close) {
+ stream.stream_ops.close(stream);
+ }
+ } catch (e) {
+ throw e;
+ } finally {
+ FS.closeStream(stream.fd);
+ }
+ },llseek:function (stream, offset, whence) {
+ if (!stream.seekable || !stream.stream_ops.llseek) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ return stream.stream_ops.llseek(stream, offset, whence);
+ },read:function (stream, buffer, offset, length, position) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.read) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
+ if (!seeking) stream.position += bytesRead;
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.write) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ if (stream.flags & 1024) {
+ // seek to the end before writing in append mode
+ FS.llseek(stream, 0, 2);
+ }
+ var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
+ if (!seeking) stream.position += bytesWritten;
+ return bytesWritten;
+ },allocate:function (stream, offset, length) {
+ if (offset < 0 || length <= 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (!stream.stream_ops.allocate) {
+ throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
+ }
+ stream.stream_ops.allocate(stream, offset, length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ // TODO if PROT is PROT_WRITE, make sure we have write access
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EACCES);
+ }
+ if (!stream.stream_ops.mmap) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
+ },ioctl:function (stream, cmd, arg) {
+ if (!stream.stream_ops.ioctl) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
+ }
+ return stream.stream_ops.ioctl(stream, cmd, arg);
+ },readFile:function (path, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'r';
+ opts.encoding = opts.encoding || 'binary';
+ var ret;
+ var stream = FS.open(path, opts.flags);
+ var stat = FS.stat(path);
+ var length = stat.size;
+ var buf = new Uint8Array(length);
+ FS.read(stream, buf, 0, length, 0);
+ if (opts.encoding === 'utf8') {
+ ret = '';
+ var utf8 = new Runtime.UTF8Processor();
+ for (var i = 0; i < length; i++) {
+ ret += utf8.processCChar(buf[i]);
+ }
+ } else if (opts.encoding === 'binary') {
+ ret = buf;
+ } else {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ FS.close(stream);
+ return ret;
+ },writeFile:function (path, data, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'w';
+ opts.encoding = opts.encoding || 'utf8';
+ var stream = FS.open(path, opts.flags, opts.mode);
+ if (opts.encoding === 'utf8') {
+ var utf8 = new Runtime.UTF8Processor();
+ var buf = new Uint8Array(utf8.processJSString(data));
+ FS.write(stream, buf, 0, buf.length, 0);
+ } else if (opts.encoding === 'binary') {
+ FS.write(stream, data, 0, data.length, 0);
+ } else {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ FS.close(stream);
+ },cwd:function () {
+ return FS.currentPath;
+ },chdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ if (!FS.isDir(lookup.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ var err = FS.nodePermissions(lookup.node, 'x');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ FS.currentPath = lookup.path;
+ },createDefaultDirectories:function () {
+ FS.mkdir('/tmp');
+ },createDefaultDevices:function () {
+ // create /dev
+ FS.mkdir('/dev');
+ // setup /dev/null
+ FS.registerDevice(FS.makedev(1, 3), {
+ read: function() { return 0; },
+ write: function() { return 0; }
+ });
+ FS.mkdev('/dev/null', FS.makedev(1, 3));
+ // setup /dev/tty and /dev/tty1
+ // stderr needs to print output using Module['printErr']
+ // so we register a second tty just for it.
+ TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
+ TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
+ FS.mkdev('/dev/tty', FS.makedev(5, 0));
+ FS.mkdev('/dev/tty1', FS.makedev(6, 0));
+ // we're not going to emulate the actual shm device,
+ // just create the tmp dirs that reside in it commonly
+ FS.mkdir('/dev/shm');
+ FS.mkdir('/dev/shm/tmp');
+ },createStandardStreams:function () {
+ // TODO deprecate the old functionality of a single
+ // input / output callback and that utilizes FS.createDevice
+ // and instead require a unique set of stream ops
+
+ // by default, we symlink the standard streams to the
+ // default tty devices. however, if the standard streams
+ // have been overwritten we create a unique device for
+ // them instead.
+ if (Module['stdin']) {
+ FS.createDevice('/dev', 'stdin', Module['stdin']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdin');
+ }
+ if (Module['stdout']) {
+ FS.createDevice('/dev', 'stdout', null, Module['stdout']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdout');
+ }
+ if (Module['stderr']) {
+ FS.createDevice('/dev', 'stderr', null, Module['stderr']);
+ } else {
+ FS.symlink('/dev/tty1', '/dev/stderr');
+ }
+
+ // open default streams for the stdin, stdout and stderr devices
+ var stdin = FS.open('/dev/stdin', 'r');
+ HEAP32[((_stdin)>>2)]=stdin.fd;
+ assert(stdin.fd === 1, 'invalid handle for stdin (' + stdin.fd + ')');
+
+ var stdout = FS.open('/dev/stdout', 'w');
+ HEAP32[((_stdout)>>2)]=stdout.fd;
+ assert(stdout.fd === 2, 'invalid handle for stdout (' + stdout.fd + ')');
+
+ var stderr = FS.open('/dev/stderr', 'w');
+ HEAP32[((_stderr)>>2)]=stderr.fd;
+ assert(stderr.fd === 3, 'invalid handle for stderr (' + stderr.fd + ')');
+ },ensureErrnoError:function () {
+ if (FS.ErrnoError) return;
+ FS.ErrnoError = function ErrnoError(errno) {
+ this.errno = errno;
+ for (var key in ERRNO_CODES) {
+ if (ERRNO_CODES[key] === errno) {
+ this.code = key;
+ break;
+ }
+ }
+ this.message = ERRNO_MESSAGES[errno];
+ if (this.stack) this.stack = demangleAll(this.stack);
+ };
+ FS.ErrnoError.prototype = new Error();
+ FS.ErrnoError.prototype.constructor = FS.ErrnoError;
+ // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
+ [ERRNO_CODES.ENOENT].forEach(function(code) {
+ FS.genericErrors[code] = new FS.ErrnoError(code);
+ FS.genericErrors[code].stack = '';
+ });
+ },staticInit:function () {
+ FS.ensureErrnoError();
+
+ FS.nameTable = new Array(4096);
+
+ FS.root = FS.createNode(null, '/', 16384 | 0777, 0);
+ FS.mount(MEMFS, {}, '/');
+
+ FS.createDefaultDirectories();
+ FS.createDefaultDevices();
+ },init:function (input, output, error) {
+ assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
+ FS.init.initialized = true;
+
+ FS.ensureErrnoError();
+
+ // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
+ Module['stdin'] = input || Module['stdin'];
+ Module['stdout'] = output || Module['stdout'];
+ Module['stderr'] = error || Module['stderr'];
+
+ FS.createStandardStreams();
+ },quit:function () {
+ FS.init.initialized = false;
+ for (var i = 0; i < FS.streams.length; i++) {
+ var stream = FS.streams[i];
+ if (!stream) {
+ continue;
+ }
+ FS.close(stream);
+ }
+ },getMode:function (canRead, canWrite) {
+ var mode = 0;
+ if (canRead) mode |= 292 | 73;
+ if (canWrite) mode |= 146;
+ return mode;
+ },joinPath:function (parts, forceRelative) {
+ var path = PATH.join.apply(null, parts);
+ if (forceRelative && path[0] == '/') path = path.substr(1);
+ return path;
+ },absolutePath:function (relative, base) {
+ return PATH.resolve(base, relative);
+ },standardizePath:function (path) {
+ return PATH.normalize(path);
+ },findObject:function (path, dontResolveLastLink) {
+ var ret = FS.analyzePath(path, dontResolveLastLink);
+ if (ret.exists) {
+ return ret.object;
+ } else {
+ ___setErrNo(ret.error);
+ return null;
+ }
+ },analyzePath:function (path, dontResolveLastLink) {
+ // operate from within the context of the symlink's target
+ try {
+ var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ path = lookup.path;
+ } catch (e) {
+ }
+ var ret = {
+ isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
+ parentExists: false, parentPath: null, parentObject: null
+ };
+ try {
+ var lookup = FS.lookupPath(path, { parent: true });
+ ret.parentExists = true;
+ ret.parentPath = lookup.path;
+ ret.parentObject = lookup.node;
+ ret.name = PATH.basename(path);
+ lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ ret.exists = true;
+ ret.path = lookup.path;
+ ret.object = lookup.node;
+ ret.name = lookup.node.name;
+ ret.isRoot = lookup.path === '/';
+ } catch (e) {
+ ret.error = e.errno;
+ };
+ return ret;
+ },createFolder:function (parent, name, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.mkdir(path, mode);
+ },createPath:function (parent, path, canRead, canWrite) {
+ parent = typeof parent === 'string' ? parent : FS.getPath(parent);
+ var parts = path.split('/').reverse();
+ while (parts.length) {
+ var part = parts.pop();
+ if (!part) continue;
+ var current = PATH.join2(parent, part);
+ try {
+ FS.mkdir(current);
+ } catch (e) {
+ // ignore EEXIST
+ }
+ parent = current;
+ }
+ return current;
+ },createFile:function (parent, name, properties, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.create(path, mode);
+ },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
+ var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
+ var mode = FS.getMode(canRead, canWrite);
+ var node = FS.create(path, mode);
+ if (data) {
+ if (typeof data === 'string') {
+ var arr = new Array(data.length);
+ for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
+ data = arr;
+ }
+ // make sure we can write to the file
+ FS.chmod(node, mode | 146);
+ var stream = FS.open(node, 'w');
+ FS.write(stream, data, 0, data.length, 0, canOwn);
+ FS.close(stream);
+ FS.chmod(node, mode);
+ }
+ return node;
+ },createDevice:function (parent, name, input, output) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(!!input, !!output);
+ if (!FS.createDevice.major) FS.createDevice.major = 64;
+ var dev = FS.makedev(FS.createDevice.major++, 0);
+ // Create a fake device that a set of stream ops to emulate
+ // the old behavior.
+ FS.registerDevice(dev, {
+ open: function(stream) {
+ stream.seekable = false;
+ },
+ close: function(stream) {
+ // flush any pending line data
+ if (output && output.buffer && output.buffer.length) {
+ output(10);
+ }
+ },
+ read: function(stream, buffer, offset, length, pos /* ignored */) {
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = input();
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },
+ write: function(stream, buffer, offset, length, pos) {
+ for (var i = 0; i < length; i++) {
+ try {
+ output(buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }
+ });
+ return FS.mkdev(path, mode, dev);
+ },createLink:function (parent, name, target, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ return FS.symlink(target, path);
+ },forceLoadFile:function (obj) {
+ if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
+ var success = true;
+ if (typeof XMLHttpRequest !== 'undefined') {
+ throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
+ } else if (Module['read']) {
+ // Command-line.
+ try {
+ // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
+ // read() will try to parse UTF8.
+ obj.contents = intArrayFromString(Module['read'](obj.url), true);
+ } catch (e) {
+ success = false;
+ }
+ } else {
+ throw new Error('Cannot load without read() or XMLHttpRequest.');
+ }
+ if (!success) ___setErrNo(ERRNO_CODES.EIO);
+ return success;
+ },createLazyFile:function (parent, name, url, canRead, canWrite) {
+ if (typeof XMLHttpRequest !== 'undefined') {
+ if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
+ // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
+ function LazyUint8Array() {
+ this.lengthKnown = false;
+ this.chunks = []; // Loaded chunks. Index is the chunk number
+ }
+ LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
+ if (idx > this.length-1 || idx < 0) {
+ return undefined;
+ }
+ var chunkOffset = idx % this.chunkSize;
+ var chunkNum = Math.floor(idx / this.chunkSize);
+ return this.getter(chunkNum)[chunkOffset];
+ }
+ LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
+ this.getter = getter;
+ }
+ LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
+ // Find length
+ var xhr = new XMLHttpRequest();
+ xhr.open('HEAD', url, false);
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ var datalength = Number(xhr.getResponseHeader("Content-length"));
+ var header;
+ var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
+ var chunkSize = 1024*1024; // Chunk size in bytes
+
+ if (!hasByteServing) chunkSize = datalength;
+
+ // Function to get a range from the remote URL.
+ var doXHR = (function(from, to) {
+ if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
+ if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
+
+ // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, false);
+ if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
+
+ // Some hints to the browser that we want binary data.
+ if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType('text/plain; charset=x-user-defined');
+ }
+
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ if (xhr.response !== undefined) {
+ return new Uint8Array(xhr.response || []);
+ } else {
+ return intArrayFromString(xhr.responseText || '', true);
+ }
+ });
+ var lazyArray = this;
+ lazyArray.setDataGetter(function(chunkNum) {
+ var start = chunkNum * chunkSize;
+ var end = (chunkNum+1) * chunkSize - 1; // including this byte
+ end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
+ lazyArray.chunks[chunkNum] = doXHR(start, end);
+ }
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
+ return lazyArray.chunks[chunkNum];
+ });
+
+ this._length = datalength;
+ this._chunkSize = chunkSize;
+ this.lengthKnown = true;
+ }
+
+ var lazyArray = new LazyUint8Array();
+ Object.defineProperty(lazyArray, "length", {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._length;
+ }
+ });
+ Object.defineProperty(lazyArray, "chunkSize", {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._chunkSize;
+ }
+ });
+
+ var properties = { isDevice: false, contents: lazyArray };
+ } else {
+ var properties = { isDevice: false, url: url };
+ }
+
+ var node = FS.createFile(parent, name, properties, canRead, canWrite);
+ // This is a total hack, but I want to get this lazy file code out of the
+ // core of MEMFS. If we want to keep this lazy file concept I feel it should
+ // be its own thin LAZYFS proxying calls to MEMFS.
+ if (properties.contents) {
+ node.contents = properties.contents;
+ } else if (properties.url) {
+ node.contents = null;
+ node.url = properties.url;
+ }
+ // override each stream op with one that tries to force load the lazy file first
+ var stream_ops = {};
+ var keys = Object.keys(node.stream_ops);
+ keys.forEach(function(key) {
+ var fn = node.stream_ops[key];
+ stream_ops[key] = function forceLoadLazyFile() {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ return fn.apply(null, arguments);
+ };
+ });
+ // use a custom read function
+ stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ var contents = stream.node.contents;
+ if (position >= contents.length)
+ return 0;
+ var size = Math.min(contents.length - position, length);
+ assert(size >= 0);
+ if (contents.slice) { // normal array
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents[position + i];
+ }
+ } else {
+ for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
+ buffer[offset + i] = contents.get(position + i);
+ }
+ }
+ return size;
+ };
+ node.stream_ops = stream_ops;
+ return node;
+ },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) {
+ Browser.init();
+ // TODO we should allow people to just pass in a complete filename instead
+ // of parent and name being that we just join them anyways
+ var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
+ function processData(byteArray) {
+ function finish(byteArray) {
+ if (!dontCreateFile) {
+ FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
+ }
+ if (onload) onload();
+ removeRunDependency('cp ' + fullname);
+ }
+ var handled = false;
+ Module['preloadPlugins'].forEach(function(plugin) {
+ if (handled) return;
+ if (plugin['canHandle'](fullname)) {
+ plugin['handle'](byteArray, fullname, finish, function() {
+ if (onerror) onerror();
+ removeRunDependency('cp ' + fullname);
+ });
+ handled = true;
+ }
+ });
+ if (!handled) finish(byteArray);
+ }
+ addRunDependency('cp ' + fullname);
+ if (typeof url == 'string') {
+ Browser.asyncLoad(url, function(byteArray) {
+ processData(byteArray);
+ }, onerror);
+ } else {
+ processData(url);
+ }
+ },indexedDB:function () {
+ return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ },DB_NAME:function () {
+ return 'EM_FS_' + window.location.pathname;
+ },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
+ console.log('creating db');
+ var db = openRequest.result;
+ db.createObjectStore(FS.DB_STORE_NAME);
+ };
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var putRequest = files.put(FS.analyzePath(path).object.contents, path);
+ putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
+ putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ },loadFilesFromDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = onerror; // no database to load from
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ try {
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
+ } catch(e) {
+ onerror(e);
+ return;
+ }
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var getRequest = files.get(path);
+ getRequest.onsuccess = function getRequest_onsuccess() {
+ if (FS.analyzePath(path).exists) {
+ FS.unlink(path);
+ }
+ FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
+ ok++;
+ if (ok + fail == total) finish();
+ };
+ getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ }};var PATH={splitPath:function (filename) {
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ return splitPathRe.exec(filename).slice(1);
+ },normalizeArray:function (parts, allowAboveRoot) {
+ // if the path tries to go above the root, `up` ends up > 0
+ var up = 0;
+ for (var i = parts.length - 1; i >= 0; i--) {
+ var last = parts[i];
+ if (last === '.') {
+ parts.splice(i, 1);
+ } else if (last === '..') {
+ parts.splice(i, 1);
+ up++;
+ } else if (up) {
+ parts.splice(i, 1);
+ up--;
+ }
+ }
+ // if the path is allowed to go above the root, restore leading ..s
+ if (allowAboveRoot) {
+ for (; up--; up) {
+ parts.unshift('..');
+ }
+ }
+ return parts;
+ },normalize:function (path) {
+ var isAbsolute = path.charAt(0) === '/',
+ trailingSlash = path.substr(-1) === '/';
+ // Normalize the path
+ path = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), !isAbsolute).join('/');
+ if (!path && !isAbsolute) {
+ path = '.';
+ }
+ if (path && trailingSlash) {
+ path += '/';
+ }
+ return (isAbsolute ? '/' : '') + path;
+ },dirname:function (path) {
+ var result = PATH.splitPath(path),
+ root = result[0],
+ dir = result[1];
+ if (!root && !dir) {
+ // No dirname whatsoever
+ return '.';
+ }
+ if (dir) {
+ // It has a dirname, strip trailing slash
+ dir = dir.substr(0, dir.length - 1);
+ }
+ return root + dir;
+ },basename:function (path) {
+ // EMSCRIPTEN return '/'' for '/', not an empty string
+ if (path === '/') return '/';
+ var lastSlash = path.lastIndexOf('/');
+ if (lastSlash === -1) return path;
+ return path.substr(lastSlash+1);
+ },extname:function (path) {
+ return PATH.splitPath(path)[3];
+ },join:function () {
+ var paths = Array.prototype.slice.call(arguments, 0);
+ return PATH.normalize(paths.join('/'));
+ },join2:function (l, r) {
+ return PATH.normalize(l + '/' + r);
+ },resolve:function () {
+ var resolvedPath = '',
+ resolvedAbsolute = false;
+ for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+ var path = (i >= 0) ? arguments[i] : FS.cwd();
+ // Skip empty and invalid entries
+ if (typeof path !== 'string') {
+ throw new TypeError('Arguments to path.resolve must be strings');
+ } else if (!path) {
+ continue;
+ }
+ resolvedPath = path + '/' + resolvedPath;
+ resolvedAbsolute = path.charAt(0) === '/';
+ }
+ // At this point the path should be resolved to a full absolute path, but
+ // handle relative paths to be safe (might happen when process.cwd() fails)
+ resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
+ return !!p;
+ }), !resolvedAbsolute).join('/');
+ return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
+ },relative:function (from, to) {
+ from = PATH.resolve(from).substr(1);
+ to = PATH.resolve(to).substr(1);
+ function trim(arr) {
+ var start = 0;
+ for (; start < arr.length; start++) {
+ if (arr[start] !== '') break;
+ }
+ var end = arr.length - 1;
+ for (; end >= 0; end--) {
+ if (arr[end] !== '') break;
+ }
+ if (start > end) return [];
+ return arr.slice(start, end - start + 1);
+ }
+ var fromParts = trim(from.split('/'));
+ var toParts = trim(to.split('/'));
+ var length = Math.min(fromParts.length, toParts.length);
+ var samePartsLength = length;
+ for (var i = 0; i < length; i++) {
+ if (fromParts[i] !== toParts[i]) {
+ samePartsLength = i;
+ break;
+ }
+ }
+ var outputParts = [];
+ for (var i = samePartsLength; i < fromParts.length; i++) {
+ outputParts.push('..');
+ }
+ outputParts = outputParts.concat(toParts.slice(samePartsLength));
+ return outputParts.join('/');
+ }};var Browser={mainLoop:{scheduler:null,shouldPause:false,paused:false,queue:[],pause:function () {
+ Browser.mainLoop.shouldPause = true;
+ },resume:function () {
+ if (Browser.mainLoop.paused) {
+ Browser.mainLoop.paused = false;
+ Browser.mainLoop.scheduler();
+ }
+ Browser.mainLoop.shouldPause = false;
+ },updateStatus:function () {
+ if (Module['setStatus']) {
+ var message = Module['statusMessage'] || 'Please wait...';
+ var remaining = Browser.mainLoop.remainingBlockers;
+ var expected = Browser.mainLoop.expectedBlockers;
+ if (remaining) {
+ if (remaining < expected) {
+ Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');
+ } else {
+ Module['setStatus'](message);
+ }
+ } else {
+ Module['setStatus']('');
+ }
+ }
+ }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () {
+ if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers
+
+ if (Browser.initted || ENVIRONMENT_IS_WORKER) return;
+ Browser.initted = true;
+
+ try {
+ new Blob();
+ Browser.hasBlobConstructor = true;
+ } catch(e) {
+ Browser.hasBlobConstructor = false;
+ console.log("warning: no blob constructor, cannot create blobs with mimetypes");
+ }
+ Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null));
+ Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined;
+ if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') {
+ console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
+ Module.noImageDecoding = true;
+ }
+
+ // Support for plugins that can process preloaded files. You can add more of these to
+ // your app by creating and appending to Module.preloadPlugins.
+ //
+ // Each plugin is asked if it can handle a file based on the file's name. If it can,
+ // it is given the file's raw data. When it is done, it calls a callback with the file's
+ // (possibly modified) data. For example, a plugin might decompress a file, or it
+ // might create some side data structure for use later (like an Image element, etc.).
+
+ var imagePlugin = {};
+ imagePlugin['canHandle'] = function imagePlugin_canHandle(name) {
+ return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name);
+ };
+ imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) {
+ var b = null;
+ if (Browser.hasBlobConstructor) {
+ try {
+ b = new Blob([byteArray], { type: Browser.getMimetype(name) });
+ if (b.size !== byteArray.length) { // Safari bug #118630
+ // Safari's Blob can only take an ArrayBuffer
+ b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) });
+ }
+ } catch(e) {
+ Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');
+ }
+ }
+ if (!b) {
+ var bb = new Browser.BlobBuilder();
+ bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range
+ b = bb.getBlob();
+ }
+ var url = Browser.URLObject.createObjectURL(b);
+ assert(typeof url == 'string', 'createObjectURL must return a url as a string');
+ var img = new Image();
+ img.onload = function img_onload() {
+ assert(img.complete, 'Image ' + name + ' could not be decoded');
+ var canvas = document.createElement('canvas');
+ canvas.width = img.width;
+ canvas.height = img.height;
+ var ctx = canvas.getContext('2d');
+ ctx.drawImage(img, 0, 0);
+ Module["preloadedImages"][name] = canvas;
+ Browser.URLObject.revokeObjectURL(url);
+ if (onload) onload(byteArray);
+ };
+ img.onerror = function img_onerror(event) {
+ console.log('Image ' + url + ' could not be decoded');
+ if (onerror) onerror();
+ };
+ img.src = url;
+ };
+ Module['preloadPlugins'].push(imagePlugin);
+
+ var audioPlugin = {};
+ audioPlugin['canHandle'] = function audioPlugin_canHandle(name) {
+ return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };
+ };
+ audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) {
+ var done = false;
+ function finish(audio) {
+ if (done) return;
+ done = true;
+ Module["preloadedAudios"][name] = audio;
+ if (onload) onload(byteArray);
+ }
+ function fail() {
+ if (done) return;
+ done = true;
+ Module["preloadedAudios"][name] = new Audio(); // empty shim
+ if (onerror) onerror();
+ }
+ if (Browser.hasBlobConstructor) {
+ try {
+ var b = new Blob([byteArray], { type: Browser.getMimetype(name) });
+ } catch(e) {
+ return fail();
+ }
+ var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!
+ assert(typeof url == 'string', 'createObjectURL must return a url as a string');
+ var audio = new Audio();
+ audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926
+ audio.onerror = function audio_onerror(event) {
+ if (done) return;
+ console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');
+ function encode64(data) {
+ var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+ var PAD = '=';
+ var ret = '';
+ var leftchar = 0;
+ var leftbits = 0;
+ for (var i = 0; i < data.length; i++) {
+ leftchar = (leftchar << 8) | data[i];
+ leftbits += 8;
+ while (leftbits >= 6) {
+ var curr = (leftchar >> (leftbits-6)) & 0x3f;
+ leftbits -= 6;
+ ret += BASE[curr];
+ }
+ }
+ if (leftbits == 2) {
+ ret += BASE[(leftchar&3) << 4];
+ ret += PAD + PAD;
+ } else if (leftbits == 4) {
+ ret += BASE[(leftchar&0xf) << 2];
+ ret += PAD;
+ }
+ return ret;
+ }
+ audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);
+ finish(audio); // we don't wait for confirmation this worked - but it's worth trying
+ };
+ audio.src = url;
+ // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
+ Browser.safeSetTimeout(function() {
+ finish(audio); // try to use it even though it is not necessarily ready to play
+ }, 10000);
+ } else {
+ return fail();
+ }
+ };
+ Module['preloadPlugins'].push(audioPlugin);
+
+ // Canvas event setup
+
+ var canvas = Module['canvas'];
+ canvas.requestPointerLock = canvas['requestPointerLock'] ||
+ canvas['mozRequestPointerLock'] ||
+ canvas['webkitRequestPointerLock'];
+ canvas.exitPointerLock = document['exitPointerLock'] ||
+ document['mozExitPointerLock'] ||
+ document['webkitExitPointerLock'] ||
+ function(){}; // no-op if function does not exist
+ canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
+
+ function pointerLockChange() {
+ Browser.pointerLock = document['pointerLockElement'] === canvas ||
+ document['mozPointerLockElement'] === canvas ||
+ document['webkitPointerLockElement'] === canvas;
+ }
+
+ document.addEventListener('pointerlockchange', pointerLockChange, false);
+ document.addEventListener('mozpointerlockchange', pointerLockChange, false);
+ document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
+
+ if (Module['elementPointerLock']) {
+ canvas.addEventListener("click", function(ev) {
+ if (!Browser.pointerLock && canvas.requestPointerLock) {
+ canvas.requestPointerLock();
+ ev.preventDefault();
+ }
+ }, false);
+ }
+ },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) {
+ var ctx;
+ try {
+ if (useWebGL) {
+ var contextAttributes = {
+ antialias: false,
+ alpha: false
+ };
+
+ if (webGLContextAttributes) {
+ for (var attribute in webGLContextAttributes) {
+ contextAttributes[attribute] = webGLContextAttributes[attribute];
+ }
+ }
+
+
+ var errorInfo = '?';
+ function onContextCreationError(event) {
+ errorInfo = event.statusMessage || errorInfo;
+ }
+ canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false);
+ try {
+ ['experimental-webgl', 'webgl'].some(function(webglId) {
+ return ctx = canvas.getContext(webglId, contextAttributes);
+ });
+ } finally {
+ canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false);
+ }
+ } else {
+ ctx = canvas.getContext('2d');
+ }
+ if (!ctx) throw ':(';
+ } catch (e) {
+ Module.print('Could not create canvas: ' + [errorInfo, e]);
+ return null;
+ }
+ if (useWebGL) {
+ // Set the background of the WebGL canvas to black
+ canvas.style.backgroundColor = "black";
+
+ // Warn on context loss
+ canvas.addEventListener('webglcontextlost', function(event) {
+ alert('WebGL context lost. You will need to reload the page.');
+ }, false);
+ }
+ if (setInModule) {
+ GLctx = Module.ctx = ctx;
+ Module.useWebGL = useWebGL;
+ Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() });
+ Browser.init();
+ }
+ return ctx;
+ },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) {
+ Browser.lockPointer = lockPointer;
+ Browser.resizeCanvas = resizeCanvas;
+ if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true;
+ if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false;
+
+ var canvas = Module['canvas'];
+ function fullScreenChange() {
+ Browser.isFullScreen = false;
+ if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||
+ document['mozFullScreenElement'] || document['mozFullscreenElement'] ||
+ document['fullScreenElement'] || document['fullscreenElement']) === canvas) {
+ canvas.cancelFullScreen = document['cancelFullScreen'] ||
+ document['mozCancelFullScreen'] ||
+ document['webkitCancelFullScreen'];
+ canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
+ if (Browser.lockPointer) canvas.requestPointerLock();
+ Browser.isFullScreen = true;
+ if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
+ } else if (Browser.resizeCanvas){
+ Browser.setWindowedCanvasSize();
+ }
+ if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);
+ }
+
+ if (!Browser.fullScreenHandlersInstalled) {
+ Browser.fullScreenHandlersInstalled = true;
+ document.addEventListener('fullscreenchange', fullScreenChange, false);
+ document.addEventListener('mozfullscreenchange', fullScreenChange, false);
+ document.addEventListener('webkitfullscreenchange', fullScreenChange, false);
+ }
+
+ canvas.requestFullScreen = canvas['requestFullScreen'] ||
+ canvas['mozRequestFullScreen'] ||
+ (canvas['webkitRequestFullScreen'] ? function() { canvas['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null);
+ canvas.requestFullScreen();
+ },requestAnimationFrame:function requestAnimationFrame(func) {
+ if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js)
+ setTimeout(func, 1000/60);
+ } else {
+ if (!window.requestAnimationFrame) {
+ window.requestAnimationFrame = window['requestAnimationFrame'] ||
+ window['mozRequestAnimationFrame'] ||
+ window['webkitRequestAnimationFrame'] ||
+ window['msRequestAnimationFrame'] ||
+ window['oRequestAnimationFrame'] ||
+ window['setTimeout'];
+ }
+ window.requestAnimationFrame(func);
+ }
+ },safeCallback:function (func) {
+ return function() {
+ if (!ABORT) return func.apply(null, arguments);
+ };
+ },safeRequestAnimationFrame:function (func) {
+ return Browser.requestAnimationFrame(function() {
+ if (!ABORT) func();
+ });
+ },safeSetTimeout:function (func, timeout) {
+ return setTimeout(function() {
+ if (!ABORT) func();
+ }, timeout);
+ },safeSetInterval:function (func, timeout) {
+ return setInterval(function() {
+ if (!ABORT) func();
+ }, timeout);
+ },getMimetype:function (name) {
+ return {
+ 'jpg': 'image/jpeg',
+ 'jpeg': 'image/jpeg',
+ 'png': 'image/png',
+ 'bmp': 'image/bmp',
+ 'ogg': 'audio/ogg',
+ 'wav': 'audio/wav',
+ 'mp3': 'audio/mpeg'
+ }[name.substr(name.lastIndexOf('.')+1)];
+ },getUserMedia:function (func) {
+ if(!window.getUserMedia) {
+ window.getUserMedia = navigator['getUserMedia'] ||
+ navigator['mozGetUserMedia'];
+ }
+ window.getUserMedia(func);
+ },getMovementX:function (event) {
+ return event['movementX'] ||
+ event['mozMovementX'] ||
+ event['webkitMovementX'] ||
+ 0;
+ },getMovementY:function (event) {
+ return event['movementY'] ||
+ event['mozMovementY'] ||
+ event['webkitMovementY'] ||
+ 0;
+ },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup
+ if (Browser.pointerLock) {
+ // When the pointer is locked, calculate the coordinates
+ // based on the movement of the mouse.
+ // Workaround for Firefox bug 764498
+ if (event.type != 'mousemove' &&
+ ('mozMovementX' in event)) {
+ Browser.mouseMovementX = Browser.mouseMovementY = 0;
+ } else {
+ Browser.mouseMovementX = Browser.getMovementX(event);
+ Browser.mouseMovementY = Browser.getMovementY(event);
+ }
+
+ // check if SDL is available
+ if (typeof SDL != "undefined") {
+ Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
+ Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
+ } else {
+ // just add the mouse delta to the current absolut mouse position
+ // FIXME: ideally this should be clamped against the canvas size and zero
+ Browser.mouseX += Browser.mouseMovementX;
+ Browser.mouseY += Browser.mouseMovementY;
+ }
+ } else {
+ // Otherwise, calculate the movement based on the changes
+ // in the coordinates.
+ var rect = Module["canvas"].getBoundingClientRect();
+ var x, y;
+
+ // Neither .scrollX or .pageXOffset are defined in a spec, but
+ // we prefer .scrollX because it is currently in a spec draft.
+ // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/)
+ var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset);
+ var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset);
+ // If this assert lands, it's likely because the browser doesn't support scrollX or pageXOffset
+ // and we have no viable fallback.
+ assert((typeof scrollX !== 'undefined') && (typeof scrollY !== 'undefined'), 'Unable to retrieve scroll position, mouse positions likely broken.');
+ if (event.type == 'touchstart' ||
+ event.type == 'touchend' ||
+ event.type == 'touchmove') {
+ var t = event.touches.item(0);
+ if (t) {
+ x = t.pageX - (scrollX + rect.left);
+ y = t.pageY - (scrollY + rect.top);
+ } else {
+ return;
+ }
+ } else {
+ x = event.pageX - (scrollX + rect.left);
+ y = event.pageY - (scrollY + rect.top);
+ }
+
+ // the canvas might be CSS-scaled compared to its backbuffer;
+ // SDL-using content will want mouse coordinates in terms
+ // of backbuffer units.
+ var cw = Module["canvas"].width;
+ var ch = Module["canvas"].height;
+ x = x * (cw / rect.width);
+ y = y * (ch / rect.height);
+
+ Browser.mouseMovementX = x - Browser.mouseX;
+ Browser.mouseMovementY = y - Browser.mouseY;
+ Browser.mouseX = x;
+ Browser.mouseY = y;
+ }
+ },xhrLoad:function (url, onload, onerror) {
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, true);
+ xhr.responseType = 'arraybuffer';
+ xhr.onload = function xhr_onload() {
+ if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
+ onload(xhr.response);
+ } else {
+ onerror();
+ }
+ };
+ xhr.onerror = onerror;
+ xhr.send(null);
+ },asyncLoad:function (url, onload, onerror, noRunDep) {
+ Browser.xhrLoad(url, function(arrayBuffer) {
+ assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
+ onload(new Uint8Array(arrayBuffer));
+ if (!noRunDep) removeRunDependency('al ' + url);
+ }, function(event) {
+ if (onerror) {
+ onerror();
+ } else {
+ throw 'Loading data file "' + url + '" failed.';
+ }
+ });
+ if (!noRunDep) addRunDependency('al ' + url);
+ },resizeListeners:[],updateResizeListeners:function () {
+ var canvas = Module['canvas'];
+ Browser.resizeListeners.forEach(function(listener) {
+ listener(canvas.width, canvas.height);
+ });
+ },setCanvasSize:function (width, height, noUpdates) {
+ var canvas = Module['canvas'];
+ canvas.width = width;
+ canvas.height = height;
+ if (!noUpdates) Browser.updateResizeListeners();
+ },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () {
+ var canvas = Module['canvas'];
+ this.windowedWidth = canvas.width;
+ this.windowedHeight = canvas.height;
+ canvas.width = screen.width;
+ canvas.height = screen.height;
+ // check if SDL is available
+ if (typeof SDL != "undefined") {
+ var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
+ flags = flags | 0x00800000; // set SDL_FULLSCREEN flag
+ HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
+ }
+ Browser.updateResizeListeners();
+ },setWindowedCanvasSize:function () {
+ var canvas = Module['canvas'];
+ canvas.width = this.windowedWidth;
+ canvas.height = this.windowedHeight;
+ // check if SDL is available
+ if (typeof SDL != "undefined") {
+ var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
+ flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag
+ HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
+ }
+ Browser.updateResizeListeners();
+ }};
+___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0;
+Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) };
+ Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) };
+ Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) };
+ Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() };
+ Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
+ Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
+FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;
+__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor();
+if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); }
+STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
+
+staticSealed = true; // seal the static portion of memory
+
+STACK_MAX = STACK_BASE + 5242880;
+
+DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
+
+assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
+
+
+
+var FUNCTION_TABLE = [0, 0];
+
+// EMSCRIPTEN_START_FUNCS
+
+function _bitmap_decompress_15($output,$output_width,$output_height,$input_width,$input_height,$input,$size){
+ var label=0;
+ var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1;
+ var $2;
+ var $3;
+ var $4;
+ var $5;
+ var $6;
+ var $7;
+ var $temp;
+ var $rv;
+ var $y;
+ var $x;
+ var $a;
+ var $r;
+ var $g;
+ var $b;
+ $1=$output;
+ $2=$output_width;
+ $3=$output_height;
+ $4=$input_width;
+ $5=$input_height;
+ $6=$input;
+ $7=$size;
+ var $8=$4;
+ var $9=$5;
+ var $10=(Math_imul($8,$9)|0);
+ var $11=($10<<1);
+ var $12=_malloc($11);
+ $temp=$12;
+ var $13=$temp;
+ var $14=$4;
+ var $15=$5;
+ var $16=$6;
+ var $17=$7;
+ var $18=_bitmap_decompress2($13,$14,$15,$16,$17);
+ $rv=$18;
+ $y=0;
+ label=2;break;
+ case 2:
+ var $20=$y;
+ var $21=$3;
+ var $22=($20|0)<($21|0);
+ if($22){label=3;break;}else{label=9;break;}
+ case 3:
+ $x=0;
+ label=4;break;
+ case 4:
+ var $25=$x;
+ var $26=$2;
+ var $27=($25|0)<($26|0);
+ if($27){label=5;break;}else{label=7;break;}
+ case 5:
+ var $29=$y;
+ var $30=$4;
+ var $31=(Math_imul($29,$30)|0);
+ var $32=$x;
+ var $33=((($31)+($32))|0);
+ var $34=$temp;
+ var $35=$34;
+ var $36=(($35+($33<<1))|0);
+ var $37=HEAP16[(($36)>>1)];
+ $a=$37;
+ var $38=$a;
+ var $39=($38&65535);
+ var $40=$39&31744;
+ var $41=$40>>10;
+ var $42=(($41)&255);
+ $r=$42;
+ var $43=$a;
+ var $44=($43&65535);
+ var $45=$44&992;
+ var $46=$45>>5;
+ var $47=(($46)&255);
+ $g=$47;
+ var $48=$a;
+ var $49=($48&65535);
+ var $50=$49&31;
+ var $51=(($50)&255);
+ $b=$51;
+ var $52=$r;
+ var $53=($52&255);
+ var $54=((($53)*(255))&-1);
+ var $55=(((($54|0))/(31))&-1);
+ var $56=(($55)&255);
+ $r=$56;
+ var $57=$g;
+ var $58=($57&255);
+ var $59=((($58)*(255))&-1);
+ var $60=(((($59|0))/(31))&-1);
+ var $61=(($60)&255);
+ $g=$61;
+ var $62=$b;
+ var $63=($62&255);
+ var $64=((($63)*(255))&-1);
+ var $65=(((($64|0))/(31))&-1);
+ var $66=(($65)&255);
+ $b=$66;
+ var $67=$b;
+ var $68=($67&255);
+ var $69=$68<<16;
+ var $70=-16777216|$69;
+ var $71=$g;
+ var $72=($71&255);
+ var $73=$72<<8;
+ var $74=$70|$73;
+ var $75=$r;
+ var $76=($75&255);
+ var $77=$74|$76;
+ var $78=$y;
+ var $79=$2;
+ var $80=(Math_imul($78,$79)|0);
+ var $81=$x;
+ var $82=((($80)+($81))|0);
+ var $83=$1;
+ var $84=$83;
+ var $85=(($84+($82<<2))|0);
+ HEAP32[(($85)>>2)]=$77;
+ label=6;break;
+ case 6:
+ var $87=$x;
+ var $88=((($87)+(1))|0);
+ $x=$88;
+ label=4;break;
+ case 7:
+ label=8;break;
+ case 8:
+ var $91=$y;
+ var $92=((($91)+(1))|0);
+ $y=$92;
+ label=2;break;
+ case 9:
+ var $94=$temp;
+ _free($94);
+ var $95=$rv;
+ STACKTOP=sp;return $95;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+Module["_bitmap_decompress_15"] = _bitmap_decompress_15;
+
+function _bitmap_decompress2($output,$width,$height,$input,$size){
+ var label=0;
+ var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1;
+ var $2;
+ var $3;
+ var $4;
+ var $5;
+ var $6;
+ var $end;
+ var $prevline;
+ var $line;
+ var $opcode;
+ var $count;
+ var $offset;
+ var $isfillormix;
+ var $x;
+ var $lastopcode;
+ var $insertmix;
+ var $bicolour;
+ var $code;
+ var $colour1;
+ var $colour2;
+ var $mixmask;
+ var $mask;
+ var $mix;
+ var $fom_mask;
+ $2=$output;
+ $3=$width;
+ $4=$height;
+ $5=$input;
+ $6=$size;
+ var $7=$5;
+ var $8=$6;
+ var $9=(($7+$8)|0);
+ $end=$9;
+ $prevline=0;
+ $line=0;
+ var $10=$3;
+ $x=$10;
+ $lastopcode=-1;
+ $insertmix=0;
+ $bicolour=0;
+ $colour1=0;
+ $colour2=0;
+ $mask=0;
+ $mix=-1;
+ $fom_mask=0;
+ label=2;break;
+ case 2:
+ var $12=$5;
+ var $13=$end;
+ var $14=($12>>>0)<($13>>>0);
+ if($14){label=3;break;}else{label=346;break;}
+ case 3:
+ $fom_mask=0;
+ var $16=$5;
+ var $17=(($16+1)|0);
+ $5=$17;
+ var $18=HEAP8[($16)];
+ $code=$18;
+ var $19=$code;
+ var $20=($19&255);
+ var $21=$20>>4;
+ $opcode=$21;
+ var $22=$opcode;
+ if(($22|0)==12|($22|0)==13|($22|0)==14){ label=4;break;}else if(($22|0)==15){ label=5;break;}else{label=9;break;}
+ case 4:
+ var $24=$opcode;
+ var $25=((($24)-(6))|0);
+ $opcode=$25;
+ var $26=$code;
+ var $27=($26&255);
+ var $28=$27&15;
+ $count=$28;
+ $offset=16;
+ label=10;break;
+ case 5:
+ var $30=$code;
+ var $31=($30&255);
+ var $32=$31&15;
+ $opcode=$32;
+ var $33=$opcode;
+ var $34=($33|0)<9;
+ if($34){label=6;break;}else{label=7;break;}
+ case 6:
+ var $36=$5;
+ var $37=(($36+1)|0);
+ $5=$37;
+ var $38=HEAP8[($36)];
+ var $39=($38&255);
+ $count=$39;
+ var $40=$5;
+ var $41=(($40+1)|0);
+ $5=$41;
+ var $42=HEAP8[($40)];
+ var $43=($42&255);
+ var $44=$43<<8;
+ var $45=$count;
+ var $46=$45|$44;
+ $count=$46;
+ label=8;break;
+ case 7:
+ var $48=$opcode;
+ var $49=($48|0)<11;
+ var $50=($49?8:1);
+ $count=$50;
+ label=8;break;
+ case 8:
+ $offset=0;
+ label=10;break;
+ case 9:
+ var $53=$opcode;
+ var $54=$53>>1;
+ $opcode=$54;
+ var $55=$code;
+ var $56=($55&255);
+ var $57=$56&31;
+ $count=$57;
+ $offset=32;
+ label=10;break;
+ case 10:
+ var $59=$offset;
+ var $60=($59|0)!=0;
+ if($60){label=11;break;}else{label=22;break;}
+ case 11:
+ var $62=$opcode;
+ var $63=($62|0)==2;
+ if($63){var $68=1;label=13;break;}else{label=12;break;}
+ case 12:
+ var $65=$opcode;
+ var $66=($65|0)==7;
+ var $68=$66;label=13;break;
+ case 13:
+ var $68;
+ var $69=($68&1);
+ $isfillormix=$69;
+ var $70=$count;
+ var $71=($70|0)==0;
+ if($71){label=14;break;}else{label=18;break;}
+ case 14:
+ var $73=$isfillormix;
+ var $74=($73|0)!=0;
+ if($74){label=15;break;}else{label=16;break;}
+ case 15:
+ var $76=$5;
+ var $77=(($76+1)|0);
+ $5=$77;
+ var $78=HEAP8[($76)];
+ var $79=($78&255);
+ var $80=((($79)+(1))|0);
+ $count=$80;
+ label=17;break;
+ case 16:
+ var $82=$5;
+ var $83=(($82+1)|0);
+ $5=$83;
+ var $84=HEAP8[($82)];
+ var $85=($84&255);
+ var $86=$offset;
+ var $87=((($85)+($86))|0);
+ $count=$87;
+ label=17;break;
+ case 17:
+ label=21;break;
+ case 18:
+ var $90=$isfillormix;
+ var $91=($90|0)!=0;
+ if($91){label=19;break;}else{label=20;break;}
+ case 19:
+ var $93=$count;
+ var $94=$93<<3;
+ $count=$94;
+ label=20;break;
+ case 20:
+ label=21;break;
+ case 21:
+ label=22;break;
+ case 22:
+ var $98=$opcode;
+ switch(($98|0)){case 0:{ label=23;break;}case 8:{ label=28;break;}case 3:{ label=29;break;}case 6:case 7:{ label=30;break;}case 9:{ label=31;break;}case 10:{ label=32;break;}default:{label=33;break;}}break;
+ case 23:
+ var $100=$lastopcode;
+ var $101=$opcode;
+ var $102=($100|0)==($101|0);
+ if($102){label=24;break;}else{label=27;break;}
+ case 24:
+ var $104=$x;
+ var $105=$3;
+ var $106=($104|0)==($105|0);
+ if($106){label=25;break;}else{label=26;break;}
+ case 25:
+ var $108=$prevline;
+ var $109=($108|0)==0;
+ if($109){label=27;break;}else{label=26;break;}
+ case 26:
+ $insertmix=1;
+ label=27;break;
+ case 27:
+ label=33;break;
+ case 28:
+ var $113=$5;
+ var $114=(($113+1)|0);
+ $5=$114;
+ var $115=HEAP8[($113)];
+ var $116=($115&255);
+ $colour1=$116;
+ var $117=$5;
+ var $118=(($117+1)|0);
+ $5=$118;
+ var $119=HEAP8[($117)];
+ var $120=($119&255);
+ var $121=$120<<8;
+ var $122=$colour1;
+ var $123=($122&65535);
+ var $124=$123|$121;
+ var $125=(($124)&65535);
+ $colour1=$125;
+ label=29;break;
+ case 29:
+ var $127=$5;
+ var $128=(($127+1)|0);
+ $5=$128;
+ var $129=HEAP8[($127)];
+ var $130=($129&255);
+ $colour2=$130;
+ var $131=$5;
+ var $132=(($131+1)|0);
+ $5=$132;
+ var $133=HEAP8[($131)];
+ var $134=($133&255);
+ var $135=$134<<8;
+ var $136=$colour2;
+ var $137=($136&65535);
+ var $138=$137|$135;
+ var $139=(($138)&65535);
+ $colour2=$139;
+ label=33;break;
+ case 30:
+ var $141=$5;
+ var $142=(($141+1)|0);
+ $5=$142;
+ var $143=HEAP8[($141)];
+ var $144=($143&255);
+ $mix=$144;
+ var $145=$5;
+ var $146=(($145+1)|0);
+ $5=$146;
+ var $147=HEAP8[($145)];
+ var $148=($147&255);
+ var $149=$148<<8;
+ var $150=$mix;
+ var $151=($150&65535);
+ var $152=$151|$149;
+ var $153=(($152)&65535);
+ $mix=$153;
+ var $154=$opcode;
+ var $155=((($154)-(5))|0);
+ $opcode=$155;
+ label=33;break;
+ case 31:
+ $mask=3;
+ $opcode=2;
+ $fom_mask=3;
+ label=33;break;
+ case 32:
+ $mask=5;
+ $opcode=2;
+ $fom_mask=5;
+ label=33;break;
+ case 33:
+ var $159=$opcode;
+ $lastopcode=$159;
+ $mixmask=0;
+ label=34;break;
+ case 34:
+ var $161=$count;
+ var $162=($161|0)>0;
+ if($162){label=35;break;}else{label=345;break;}
+ case 35:
+ var $164=$x;
+ var $165=$3;
+ var $166=($164|0)>=($165|0);
+ if($166){label=36;break;}else{label=39;break;}
+ case 36:
+ var $168=$4;
+ var $169=($168|0)<=0;
+ if($169){label=37;break;}else{label=38;break;}
+ case 37:
+ $1=0;
+ label=347;break;
+ case 38:
+ $x=0;
+ var $172=$4;
+ var $173=((($172)-(1))|0);
+ $4=$173;
+ var $174=$line;
+ $prevline=$174;
+ var $175=$2;
+ var $176=$175;
+ var $177=$4;
+ var $178=$3;
+ var $179=(Math_imul($177,$178)|0);
+ var $180=(($176+($179<<1))|0);
+ $line=$180;
+ label=39;break;
+ case 39:
+ var $182=$opcode;
+ switch(($182|0)){case 3:{ label=261;break;}case 4:{ label=272;break;}case 8:{ label=283;break;}case 13:{ label=321;break;}case 14:{ label=332;break;}case 0:{ label=40;break;}case 1:{ label=69;break;}case 2:{ label=93;break;}default:{label=343;break;}}break;
+ case 40:
+ var $184=$insertmix;
+ var $185=($184|0)!=0;
+ if($185){label=41;break;}else{label=45;break;}
+ case 41:
+ var $187=$prevline;
+ var $188=($187|0)==0;
+ if($188){label=42;break;}else{label=43;break;}
+ case 42:
+ var $190=$mix;
+ var $191=$x;
+ var $192=$line;
+ var $193=(($192+($191<<1))|0);
+ HEAP16[(($193)>>1)]=$190;
+ label=44;break;
+ case 43:
+ var $195=$x;
+ var $196=$prevline;
+ var $197=(($196+($195<<1))|0);
+ var $198=HEAP16[(($197)>>1)];
+ var $199=($198&65535);
+ var $200=$mix;
+ var $201=($200&65535);
+ var $202=$199^$201;
+ var $203=(($202)&65535);
+ var $204=$x;
+ var $205=$line;
+ var $206=(($205+($204<<1))|0);
+ HEAP16[(($206)>>1)]=$203;
+ label=44;break;
+ case 44:
+ $insertmix=0;
+ var $208=$count;
+ var $209=((($208)-(1))|0);
+ $count=$209;
+ var $210=$x;
+ var $211=((($210)+(1))|0);
+ $x=$211;
+ label=45;break;
+ case 45:
+ var $213=$prevline;
+ var $214=($213|0)==0;
+ if($214){label=46;break;}else{label=57;break;}
+ case 46:
+ label=47;break;
+ case 47:
+ var $217=$count;
+ var $218=$217&-8;
+ var $219=($218|0)!=0;
+ if($219){label=48;break;}else{var $226=0;label=49;break;}
+ case 48:
+ var $221=$x;
+ var $222=((($221)+(8))|0);
+ var $223=$3;
+ var $224=($222|0)<($223|0);
+ var $226=$224;label=49;break;
+ case 49:
+ var $226;
+ if($226){label=50;break;}else{label=51;break;}
+ case 50:
+ var $228=$x;
+ var $229=$line;
+ var $230=(($229+($228<<1))|0);
+ HEAP16[(($230)>>1)]=0;
+ var $231=$count;
+ var $232=((($231)-(1))|0);
+ $count=$232;
+ var $233=$x;
+ var $234=((($233)+(1))|0);
+ $x=$234;
+ var $235=$x;
+ var $236=$line;
+ var $237=(($236+($235<<1))|0);
+ HEAP16[(($237)>>1)]=0;
+ var $238=$count;
+ var $239=((($238)-(1))|0);
+ $count=$239;
+ var $240=$x;
+ var $241=((($240)+(1))|0);
+ $x=$241;
+ var $242=$x;
+ var $243=$line;
+ var $244=(($243+($242<<1))|0);
+ HEAP16[(($244)>>1)]=0;
+ var $245=$count;
+ var $246=((($245)-(1))|0);
+ $count=$246;
+ var $247=$x;
+ var $248=((($247)+(1))|0);
+ $x=$248;
+ var $249=$x;
+ var $250=$line;
+ var $251=(($250+($249<<1))|0);
+ HEAP16[(($251)>>1)]=0;
+ var $252=$count;
+ var $253=((($252)-(1))|0);
+ $count=$253;
+ var $254=$x;
+ var $255=((($254)+(1))|0);
+ $x=$255;
+ var $256=$x;
+ var $257=$line;
+ var $258=(($257+($256<<1))|0);
+ HEAP16[(($258)>>1)]=0;
+ var $259=$count;
+ var $260=((($259)-(1))|0);
+ $count=$260;
+ var $261=$x;
+ var $262=((($261)+(1))|0);
+ $x=$262;
+ var $263=$x;
+ var $264=$line;
+ var $265=(($264+($263<<1))|0);
+ HEAP16[(($265)>>1)]=0;
+ var $266=$count;
+ var $267=((($266)-(1))|0);
+ $count=$267;
+ var $268=$x;
+ var $269=((($268)+(1))|0);
+ $x=$269;
+ var $270=$x;
+ var $271=$line;
+ var $272=(($271+($270<<1))|0);
+ HEAP16[(($272)>>1)]=0;
+ var $273=$count;
+ var $274=((($273)-(1))|0);
+ $count=$274;
+ var $275=$x;
+ var $276=((($275)+(1))|0);
+ $x=$276;
+ var $277=$x;
+ var $278=$line;
+ var $279=(($278+($277<<1))|0);
+ HEAP16[(($279)>>1)]=0;
+ var $280=$count;
+ var $281=((($280)-(1))|0);
+ $count=$281;
+ var $282=$x;
+ var $283=((($282)+(1))|0);
+ $x=$283;
+ label=47;break;
+ case 51:
+ label=52;break;
+ case 52:
+ var $286=$count;
+ var $287=($286|0)>0;
+ if($287){label=53;break;}else{var $293=0;label=54;break;}
+ case 53:
+ var $289=$x;
+ var $290=$3;
+ var $291=($289|0)<($290|0);
+ var $293=$291;label=54;break;
+ case 54:
+ var $293;
+ if($293){label=55;break;}else{label=56;break;}
+ case 55:
+ var $295=$x;
+ var $296=$line;
+ var $297=(($296+($295<<1))|0);
+ HEAP16[(($297)>>1)]=0;
+ var $298=$count;
+ var $299=((($298)-(1))|0);
+ $count=$299;
+ var $300=$x;
+ var $301=((($300)+(1))|0);
+ $x=$301;
+ label=52;break;
+ case 56:
+ label=68;break;
+ case 57:
+ label=58;break;
+ case 58:
+ var $305=$count;
+ var $306=$305&-8;
+ var $307=($306|0)!=0;
+ if($307){label=59;break;}else{var $314=0;label=60;break;}
+ case 59:
+ var $309=$x;
+ var $310=((($309)+(8))|0);
+ var $311=$3;
+ var $312=($310|0)<($311|0);
+ var $314=$312;label=60;break;
+ case 60:
+ var $314;
+ if($314){label=61;break;}else{label=62;break;}
+ case 61:
+ var $316=$x;
+ var $317=$prevline;
+ var $318=(($317+($316<<1))|0);
+ var $319=HEAP16[(($318)>>1)];
+ var $320=$x;
+ var $321=$line;
+ var $322=(($321+($320<<1))|0);
+ HEAP16[(($322)>>1)]=$319;
+ var $323=$count;
+ var $324=((($323)-(1))|0);
+ $count=$324;
+ var $325=$x;
+ var $326=((($325)+(1))|0);
+ $x=$326;
+ var $327=$x;
+ var $328=$prevline;
+ var $329=(($328+($327<<1))|0);
+ var $330=HEAP16[(($329)>>1)];
+ var $331=$x;
+ var $332=$line;
+ var $333=(($332+($331<<1))|0);
+ HEAP16[(($333)>>1)]=$330;
+ var $334=$count;
+ var $335=((($334)-(1))|0);
+ $count=$335;
+ var $336=$x;
+ var $337=((($336)+(1))|0);
+ $x=$337;
+ var $338=$x;
+ var $339=$prevline;
+ var $340=(($339+($338<<1))|0);
+ var $341=HEAP16[(($340)>>1)];
+ var $342=$x;
+ var $343=$line;
+ var $344=(($343+($342<<1))|0);
+ HEAP16[(($344)>>1)]=$341;
+ var $345=$count;
+ var $346=((($345)-(1))|0);
+ $count=$346;
+ var $347=$x;
+ var $348=((($347)+(1))|0);
+ $x=$348;
+ var $349=$x;
+ var $350=$prevline;
+ var $351=(($350+($349<<1))|0);
+ var $352=HEAP16[(($351)>>1)];
+ var $353=$x;
+ var $354=$line;
+ var $355=(($354+($353<<1))|0);
+ HEAP16[(($355)>>1)]=$352;
+ var $356=$count;
+ var $357=((($356)-(1))|0);
+ $count=$357;
+ var $358=$x;
+ var $359=((($358)+(1))|0);
+ $x=$359;
+ var $360=$x;
+ var $361=$prevline;
+ var $362=(($361+($360<<1))|0);
+ var $363=HEAP16[(($362)>>1)];
+ var $364=$x;
+ var $365=$line;
+ var $366=(($365+($364<<1))|0);
+ HEAP16[(($366)>>1)]=$363;
+ var $367=$count;
+ var $368=((($367)-(1))|0);
+ $count=$368;
+ var $369=$x;
+ var $370=((($369)+(1))|0);
+ $x=$370;
+ var $371=$x;
+ var $372=$prevline;
+ var $373=(($372+($371<<1))|0);
+ var $374=HEAP16[(($373)>>1)];
+ var $375=$x;
+ var $376=$line;
+ var $377=(($376+($375<<1))|0);
+ HEAP16[(($377)>>1)]=$374;
+ var $378=$count;
+ var $379=((($378)-(1))|0);
+ $count=$379;
+ var $380=$x;
+ var $381=((($380)+(1))|0);
+ $x=$381;
+ var $382=$x;
+ var $383=$prevline;
+ var $384=(($383+($382<<1))|0);
+ var $385=HEAP16[(($384)>>1)];
+ var $386=$x;
+ var $387=$line;
+ var $388=(($387+($386<<1))|0);
+ HEAP16[(($388)>>1)]=$385;
+ var $389=$count;
+ var $390=((($389)-(1))|0);
+ $count=$390;
+ var $391=$x;
+ var $392=((($391)+(1))|0);
+ $x=$392;
+ var $393=$x;
+ var $394=$prevline;
+ var $395=(($394+($393<<1))|0);
+ var $396=HEAP16[(($395)>>1)];
+ var $397=$x;
+ var $398=$line;
+ var $399=(($398+($397<<1))|0);
+ HEAP16[(($399)>>1)]=$396;
+ var $400=$count;
+ var $401=((($400)-(1))|0);
+ $count=$401;
+ var $402=$x;
+ var $403=((($402)+(1))|0);
+ $x=$403;
+ label=58;break;
+ case 62:
+ label=63;break;
+ case 63:
+ var $406=$count;
+ var $407=($406|0)>0;
+ if($407){label=64;break;}else{var $413=0;label=65;break;}
+ case 64:
+ var $409=$x;
+ var $410=$3;
+ var $411=($409|0)<($410|0);
+ var $413=$411;label=65;break;
+ case 65:
+ var $413;
+ if($413){label=66;break;}else{label=67;break;}
+ case 66:
+ var $415=$x;
+ var $416=$prevline;
+ var $417=(($416+($415<<1))|0);
+ var $418=HEAP16[(($417)>>1)];
+ var $419=$x;
+ var $420=$line;
+ var $421=(($420+($419<<1))|0);
+ HEAP16[(($421)>>1)]=$418;
+ var $422=$count;
+ var $423=((($422)-(1))|0);
+ $count=$423;
+ var $424=$x;
+ var $425=((($424)+(1))|0);
+ $x=$425;
+ label=63;break;
+ case 67:
+ label=68;break;
+ case 68:
+ label=344;break;
+ case 69:
+ var $429=$prevline;
+ var $430=($429|0)==0;
+ if($430){label=70;break;}else{label=81;break;}
+ case 70:
+ label=71;break;
+ case 71:
+ var $433=$count;
+ var $434=$433&-8;
+ var $435=($434|0)!=0;
+ if($435){label=72;break;}else{var $442=0;label=73;break;}
+ case 72:
+ var $437=$x;
+ var $438=((($437)+(8))|0);
+ var $439=$3;
+ var $440=($438|0)<($439|0);
+ var $442=$440;label=73;break;
+ case 73:
+ var $442;
+ if($442){label=74;break;}else{label=75;break;}
+ case 74:
+ var $444=$mix;
+ var $445=$x;
+ var $446=$line;
+ var $447=(($446+($445<<1))|0);
+ HEAP16[(($447)>>1)]=$444;
+ var $448=$count;
+ var $449=((($448)-(1))|0);
+ $count=$449;
+ var $450=$x;
+ var $451=((($450)+(1))|0);
+ $x=$451;
+ var $452=$mix;
+ var $453=$x;
+ var $454=$line;
+ var $455=(($454+($453<<1))|0);
+ HEAP16[(($455)>>1)]=$452;
+ var $456=$count;
+ var $457=((($456)-(1))|0);
+ $count=$457;
+ var $458=$x;
+ var $459=((($458)+(1))|0);
+ $x=$459;
+ var $460=$mix;
+ var $461=$x;
+ var $462=$line;
+ var $463=(($462+($461<<1))|0);
+ HEAP16[(($463)>>1)]=$460;
+ var $464=$count;
+ var $465=((($464)-(1))|0);
+ $count=$465;
+ var $466=$x;
+ var $467=((($466)+(1))|0);
+ $x=$467;
+ var $468=$mix;
+ var $469=$x;
+ var $470=$line;
+ var $471=(($470+($469<<1))|0);
+ HEAP16[(($471)>>1)]=$468;
+ var $472=$count;
+ var $473=((($472)-(1))|0);
+ $count=$473;
+ var $474=$x;
+ var $475=((($474)+(1))|0);
+ $x=$475;
+ var $476=$mix;
+ var $477=$x;
+ var $478=$line;
+ var $479=(($478+($477<<1))|0);
+ HEAP16[(($479)>>1)]=$476;
+ var $480=$count;
+ var $481=((($480)-(1))|0);
+ $count=$481;
+ var $482=$x;
+ var $483=((($482)+(1))|0);
+ $x=$483;
+ var $484=$mix;
+ var $485=$x;
+ var $486=$line;
+ var $487=(($486+($485<<1))|0);
+ HEAP16[(($487)>>1)]=$484;
+ var $488=$count;
+ var $489=((($488)-(1))|0);
+ $count=$489;
+ var $490=$x;
+ var $491=((($490)+(1))|0);
+ $x=$491;
+ var $492=$mix;
+ var $493=$x;
+ var $494=$line;
+ var $495=(($494+($493<<1))|0);
+ HEAP16[(($495)>>1)]=$492;
+ var $496=$count;
+ var $497=((($496)-(1))|0);
+ $count=$497;
+ var $498=$x;
+ var $499=((($498)+(1))|0);
+ $x=$499;
+ var $500=$mix;
+ var $501=$x;
+ var $502=$line;
+ var $503=(($502+($501<<1))|0);
+ HEAP16[(($503)>>1)]=$500;
+ var $504=$count;
+ var $505=((($504)-(1))|0);
+ $count=$505;
+ var $506=$x;
+ var $507=((($506)+(1))|0);
+ $x=$507;
+ label=71;break;
+ case 75:
+ label=76;break;
+ case 76:
+ var $510=$count;
+ var $511=($510|0)>0;
+ if($511){label=77;break;}else{var $517=0;label=78;break;}
+ case 77:
+ var $513=$x;
+ var $514=$3;
+ var $515=($513|0)<($514|0);
+ var $517=$515;label=78;break;
+ case 78:
+ var $517;
+ if($517){label=79;break;}else{label=80;break;}
+ case 79:
+ var $519=$mix;
+ var $520=$x;
+ var $521=$line;
+ var $522=(($521+($520<<1))|0);
+ HEAP16[(($522)>>1)]=$519;
+ var $523=$count;
+ var $524=((($523)-(1))|0);
+ $count=$524;
+ var $525=$x;
+ var $526=((($525)+(1))|0);
+ $x=$526;
+ label=76;break;
+ case 80:
+ label=92;break;
+ case 81:
+ label=82;break;
+ case 82:
+ var $530=$count;
+ var $531=$530&-8;
+ var $532=($531|0)!=0;
+ if($532){label=83;break;}else{var $539=0;label=84;break;}
+ case 83:
+ var $534=$x;
+ var $535=((($534)+(8))|0);
+ var $536=$3;
+ var $537=($535|0)<($536|0);
+ var $539=$537;label=84;break;
+ case 84:
+ var $539;
+ if($539){label=85;break;}else{label=86;break;}
+ case 85:
+ var $541=$x;
+ var $542=$prevline;
+ var $543=(($542+($541<<1))|0);
+ var $544=HEAP16[(($543)>>1)];
+ var $545=($544&65535);
+ var $546=$mix;
+ var $547=($546&65535);
+ var $548=$545^$547;
+ var $549=(($548)&65535);
+ var $550=$x;
+ var $551=$line;
+ var $552=(($551+($550<<1))|0);
+ HEAP16[(($552)>>1)]=$549;
+ var $553=$count;
+ var $554=((($553)-(1))|0);
+ $count=$554;
+ var $555=$x;
+ var $556=((($555)+(1))|0);
+ $x=$556;
+ var $557=$x;
+ var $558=$prevline;
+ var $559=(($558+($557<<1))|0);
+ var $560=HEAP16[(($559)>>1)];
+ var $561=($560&65535);
+ var $562=$mix;
+ var $563=($562&65535);
+ var $564=$561^$563;
+ var $565=(($564)&65535);
+ var $566=$x;
+ var $567=$line;
+ var $568=(($567+($566<<1))|0);
+ HEAP16[(($568)>>1)]=$565;
+ var $569=$count;
+ var $570=((($569)-(1))|0);
+ $count=$570;
+ var $571=$x;
+ var $572=((($571)+(1))|0);
+ $x=$572;
+ var $573=$x;
+ var $574=$prevline;
+ var $575=(($574+($573<<1))|0);
+ var $576=HEAP16[(($575)>>1)];
+ var $577=($576&65535);
+ var $578=$mix;
+ var $579=($578&65535);
+ var $580=$577^$579;
+ var $581=(($580)&65535);
+ var $582=$x;
+ var $583=$line;
+ var $584=(($583+($582<<1))|0);
+ HEAP16[(($584)>>1)]=$581;
+ var $585=$count;
+ var $586=((($585)-(1))|0);
+ $count=$586;
+ var $587=$x;
+ var $588=((($587)+(1))|0);
+ $x=$588;
+ var $589=$x;
+ var $590=$prevline;
+ var $591=(($590+($589<<1))|0);
+ var $592=HEAP16[(($591)>>1)];
+ var $593=($592&65535);
+ var $594=$mix;
+ var $595=($594&65535);
+ var $596=$593^$595;
+ var $597=(($596)&65535);
+ var $598=$x;
+ var $599=$line;
+ var $600=(($599+($598<<1))|0);
+ HEAP16[(($600)>>1)]=$597;
+ var $601=$count;
+ var $602=((($601)-(1))|0);
+ $count=$602;
+ var $603=$x;
+ var $604=((($603)+(1))|0);
+ $x=$604;
+ var $605=$x;
+ var $606=$prevline;
+ var $607=(($606+($605<<1))|0);
+ var $608=HEAP16[(($607)>>1)];
+ var $609=($608&65535);
+ var $610=$mix;
+ var $611=($610&65535);
+ var $612=$609^$611;
+ var $613=(($612)&65535);
+ var $614=$x;
+ var $615=$line;
+ var $616=(($615+($614<<1))|0);
+ HEAP16[(($616)>>1)]=$613;
+ var $617=$count;
+ var $618=((($617)-(1))|0);
+ $count=$618;
+ var $619=$x;
+ var $620=((($619)+(1))|0);
+ $x=$620;
+ var $621=$x;
+ var $622=$prevline;
+ var $623=(($622+($621<<1))|0);
+ var $624=HEAP16[(($623)>>1)];
+ var $625=($624&65535);
+ var $626=$mix;
+ var $627=($626&65535);
+ var $628=$625^$627;
+ var $629=(($628)&65535);
+ var $630=$x;
+ var $631=$line;
+ var $632=(($631+($630<<1))|0);
+ HEAP16[(($632)>>1)]=$629;
+ var $633=$count;
+ var $634=((($633)-(1))|0);
+ $count=$634;
+ var $635=$x;
+ var $636=((($635)+(1))|0);
+ $x=$636;
+ var $637=$x;
+ var $638=$prevline;
+ var $639=(($638+($637<<1))|0);
+ var $640=HEAP16[(($639)>>1)];
+ var $641=($640&65535);
+ var $642=$mix;
+ var $643=($642&65535);
+ var $644=$641^$643;
+ var $645=(($644)&65535);
+ var $646=$x;
+ var $647=$line;
+ var $648=(($647+($646<<1))|0);
+ HEAP16[(($648)>>1)]=$645;
+ var $649=$count;
+ var $650=((($649)-(1))|0);
+ $count=$650;
+ var $651=$x;
+ var $652=((($651)+(1))|0);
+ $x=$652;
+ var $653=$x;
+ var $654=$prevline;
+ var $655=(($654+($653<<1))|0);
+ var $656=HEAP16[(($655)>>1)];
+ var $657=($656&65535);
+ var $658=$mix;
+ var $659=($658&65535);
+ var $660=$657^$659;
+ var $661=(($660)&65535);
+ var $662=$x;
+ var $663=$line;
+ var $664=(($663+($662<<1))|0);
+ HEAP16[(($664)>>1)]=$661;
+ var $665=$count;
+ var $666=((($665)-(1))|0);
+ $count=$666;
+ var $667=$x;
+ var $668=((($667)+(1))|0);
+ $x=$668;
+ label=82;break;
+ case 86:
+ label=87;break;
+ case 87:
+ var $671=$count;
+ var $672=($671|0)>0;
+ if($672){label=88;break;}else{var $678=0;label=89;break;}
+ case 88:
+ var $674=$x;
+ var $675=$3;
+ var $676=($674|0)<($675|0);
+ var $678=$676;label=89;break;
+ case 89:
+ var $678;
+ if($678){label=90;break;}else{label=91;break;}
+ case 90:
+ var $680=$x;
+ var $681=$prevline;
+ var $682=(($681+($680<<1))|0);
+ var $683=HEAP16[(($682)>>1)];
+ var $684=($683&65535);
+ var $685=$mix;
+ var $686=($685&65535);
+ var $687=$684^$686;
+ var $688=(($687)&65535);
+ var $689=$x;
+ var $690=$line;
+ var $691=(($690+($689<<1))|0);
+ HEAP16[(($691)>>1)]=$688;
+ var $692=$count;
+ var $693=((($692)-(1))|0);
+ $count=$693;
+ var $694=$x;
+ var $695=((($694)+(1))|0);
+ $x=$695;
+ label=87;break;
+ case 91:
+ label=92;break;
+ case 92:
+ label=344;break;
+ case 93:
+ var $699=$prevline;
+ var $700=($699|0)==0;
+ if($700){label=94;break;}else{label=177;break;}
+ case 94:
+ label=95;break;
+ case 95:
+ var $703=$count;
+ var $704=$703&-8;
+ var $705=($704|0)!=0;
+ if($705){label=96;break;}else{var $712=0;label=97;break;}
+ case 96:
+ var $707=$x;
+ var $708=((($707)+(8))|0);
+ var $709=$3;
+ var $710=($708|0)<($709|0);
+ var $712=$710;label=97;break;
+ case 97:
+ var $712;
+ if($712){label=98;break;}else{label=163;break;}
+ case 98:
+ var $714=$mixmask;
+ var $715=($714&255);
+ var $716=$715<<1;
+ var $717=(($716)&255);
+ $mixmask=$717;
+ var $718=$mixmask;
+ var $719=($718&255);
+ var $720=($719|0)==0;
+ if($720){label=99;break;}else{label=103;break;}
+ case 99:
+ var $722=$fom_mask;
+ var $723=($722|0)!=0;
+ if($723){label=100;break;}else{label=101;break;}
+ case 100:
+ var $725=$fom_mask;
+ var $732=$725;label=102;break;
+ case 101:
+ var $727=$5;
+ var $728=(($727+1)|0);
+ $5=$728;
+ var $729=HEAP8[($727)];
+ var $730=($729&255);
+ var $732=$730;label=102;break;
+ case 102:
+ var $732;
+ var $733=(($732)&255);
+ $mask=$733;
+ $mixmask=1;
+ label=103;break;
+ case 103:
+ var $735=$mask;
+ var $736=($735&255);
+ var $737=$mixmask;
+ var $738=($737&255);
+ var $739=$736&$738;
+ var $740=($739|0)!=0;
+ if($740){label=104;break;}else{label=105;break;}
+ case 104:
+ var $742=$mix;
+ var $743=$x;
+ var $744=$line;
+ var $745=(($744+($743<<1))|0);
+ HEAP16[(($745)>>1)]=$742;
+ label=106;break;
+ case 105:
+ var $747=$x;
+ var $748=$line;
+ var $749=(($748+($747<<1))|0);
+ HEAP16[(($749)>>1)]=0;
+ label=106;break;
+ case 106:
+ var $751=$count;
+ var $752=((($751)-(1))|0);
+ $count=$752;
+ var $753=$x;
+ var $754=((($753)+(1))|0);
+ $x=$754;
+ var $755=$mixmask;
+ var $756=($755&255);
+ var $757=$756<<1;
+ var $758=(($757)&255);
+ $mixmask=$758;
+ var $759=$mixmask;
+ var $760=($759&255);
+ var $761=($760|0)==0;
+ if($761){label=107;break;}else{label=111;break;}
+ case 107:
+ var $763=$fom_mask;
+ var $764=($763|0)!=0;
+ if($764){label=108;break;}else{label=109;break;}
+ case 108:
+ var $766=$fom_mask;
+ var $773=$766;label=110;break;
+ case 109:
+ var $768=$5;
+ var $769=(($768+1)|0);
+ $5=$769;
+ var $770=HEAP8[($768)];
+ var $771=($770&255);
+ var $773=$771;label=110;break;
+ case 110:
+ var $773;
+ var $774=(($773)&255);
+ $mask=$774;
+ $mixmask=1;
+ label=111;break;
+ case 111:
+ var $776=$mask;
+ var $777=($776&255);
+ var $778=$mixmask;
+ var $779=($778&255);
+ var $780=$777&$779;
+ var $781=($780|0)!=0;
+ if($781){label=112;break;}else{label=113;break;}
+ case 112:
+ var $783=$mix;
+ var $784=$x;
+ var $785=$line;
+ var $786=(($785+($784<<1))|0);
+ HEAP16[(($786)>>1)]=$783;
+ label=114;break;
+ case 113:
+ var $788=$x;
+ var $789=$line;
+ var $790=(($789+($788<<1))|0);
+ HEAP16[(($790)>>1)]=0;
+ label=114;break;
+ case 114:
+ var $792=$count;
+ var $793=((($792)-(1))|0);
+ $count=$793;
+ var $794=$x;
+ var $795=((($794)+(1))|0);
+ $x=$795;
+ var $796=$mixmask;
+ var $797=($796&255);
+ var $798=$797<<1;
+ var $799=(($798)&255);
+ $mixmask=$799;
+ var $800=$mixmask;
+ var $801=($800&255);
+ var $802=($801|0)==0;
+ if($802){label=115;break;}else{label=119;break;}
+ case 115:
+ var $804=$fom_mask;
+ var $805=($804|0)!=0;
+ if($805){label=116;break;}else{label=117;break;}
+ case 116:
+ var $807=$fom_mask;
+ var $814=$807;label=118;break;
+ case 117:
+ var $809=$5;
+ var $810=(($809+1)|0);
+ $5=$810;
+ var $811=HEAP8[($809)];
+ var $812=($811&255);
+ var $814=$812;label=118;break;
+ case 118:
+ var $814;
+ var $815=(($814)&255);
+ $mask=$815;
+ $mixmask=1;
+ label=119;break;
+ case 119:
+ var $817=$mask;
+ var $818=($817&255);
+ var $819=$mixmask;
+ var $820=($819&255);
+ var $821=$818&$820;
+ var $822=($821|0)!=0;
+ if($822){label=120;break;}else{label=121;break;}
+ case 120:
+ var $824=$mix;
+ var $825=$x;
+ var $826=$line;
+ var $827=(($826+($825<<1))|0);
+ HEAP16[(($827)>>1)]=$824;
+ label=122;break;
+ case 121:
+ var $829=$x;
+ var $830=$line;
+ var $831=(($830+($829<<1))|0);
+ HEAP16[(($831)>>1)]=0;
+ label=122;break;
+ case 122:
+ var $833=$count;
+ var $834=((($833)-(1))|0);
+ $count=$834;
+ var $835=$x;
+ var $836=((($835)+(1))|0);
+ $x=$836;
+ var $837=$mixmask;
+ var $838=($837&255);
+ var $839=$838<<1;
+ var $840=(($839)&255);
+ $mixmask=$840;
+ var $841=$mixmask;
+ var $842=($841&255);
+ var $843=($842|0)==0;
+ if($843){label=123;break;}else{label=127;break;}
+ case 123:
+ var $845=$fom_mask;
+ var $846=($845|0)!=0;
+ if($846){label=124;break;}else{label=125;break;}
+ case 124:
+ var $848=$fom_mask;
+ var $855=$848;label=126;break;
+ case 125:
+ var $850=$5;
+ var $851=(($850+1)|0);
+ $5=$851;
+ var $852=HEAP8[($850)];
+ var $853=($852&255);
+ var $855=$853;label=126;break;
+ case 126:
+ var $855;
+ var $856=(($855)&255);
+ $mask=$856;
+ $mixmask=1;
+ label=127;break;
+ case 127:
+ var $858=$mask;
+ var $859=($858&255);
+ var $860=$mixmask;
+ var $861=($860&255);
+ var $862=$859&$861;
+ var $863=($862|0)!=0;
+ if($863){label=128;break;}else{label=129;break;}
+ case 128:
+ var $865=$mix;
+ var $866=$x;
+ var $867=$line;
+ var $868=(($867+($866<<1))|0);
+ HEAP16[(($868)>>1)]=$865;
+ label=130;break;
+ case 129:
+ var $870=$x;
+ var $871=$line;
+ var $872=(($871+($870<<1))|0);
+ HEAP16[(($872)>>1)]=0;
+ label=130;break;
+ case 130:
+ var $874=$count;
+ var $875=((($874)-(1))|0);
+ $count=$875;
+ var $876=$x;
+ var $877=((($876)+(1))|0);
+ $x=$877;
+ var $878=$mixmask;
+ var $879=($878&255);
+ var $880=$879<<1;
+ var $881=(($880)&255);
+ $mixmask=$881;
+ var $882=$mixmask;
+ var $883=($882&255);
+ var $884=($883|0)==0;
+ if($884){label=131;break;}else{label=135;break;}
+ case 131:
+ var $886=$fom_mask;
+ var $887=($886|0)!=0;
+ if($887){label=132;break;}else{label=133;break;}
+ case 132:
+ var $889=$fom_mask;
+ var $896=$889;label=134;break;
+ case 133:
+ var $891=$5;
+ var $892=(($891+1)|0);
+ $5=$892;
+ var $893=HEAP8[($891)];
+ var $894=($893&255);
+ var $896=$894;label=134;break;
+ case 134:
+ var $896;
+ var $897=(($896)&255);
+ $mask=$897;
+ $mixmask=1;
+ label=135;break;
+ case 135:
+ var $899=$mask;
+ var $900=($899&255);
+ var $901=$mixmask;
+ var $902=($901&255);
+ var $903=$900&$902;
+ var $904=($903|0)!=0;
+ if($904){label=136;break;}else{label=137;break;}
+ case 136:
+ var $906=$mix;
+ var $907=$x;
+ var $908=$line;
+ var $909=(($908+($907<<1))|0);
+ HEAP16[(($909)>>1)]=$906;
+ label=138;break;
+ case 137:
+ var $911=$x;
+ var $912=$line;
+ var $913=(($912+($911<<1))|0);
+ HEAP16[(($913)>>1)]=0;
+ label=138;break;
+ case 138:
+ var $915=$count;
+ var $916=((($915)-(1))|0);
+ $count=$916;
+ var $917=$x;
+ var $918=((($917)+(1))|0);
+ $x=$918;
+ var $919=$mixmask;
+ var $920=($919&255);
+ var $921=$920<<1;
+ var $922=(($921)&255);
+ $mixmask=$922;
+ var $923=$mixmask;
+ var $924=($923&255);
+ var $925=($924|0)==0;
+ if($925){label=139;break;}else{label=143;break;}
+ case 139:
+ var $927=$fom_mask;
+ var $928=($927|0)!=0;
+ if($928){label=140;break;}else{label=141;break;}
+ case 140:
+ var $930=$fom_mask;
+ var $937=$930;label=142;break;
+ case 141:
+ var $932=$5;
+ var $933=(($932+1)|0);
+ $5=$933;
+ var $934=HEAP8[($932)];
+ var $935=($934&255);
+ var $937=$935;label=142;break;
+ case 142:
+ var $937;
+ var $938=(($937)&255);
+ $mask=$938;
+ $mixmask=1;
+ label=143;break;
+ case 143:
+ var $940=$mask;
+ var $941=($940&255);
+ var $942=$mixmask;
+ var $943=($942&255);
+ var $944=$941&$943;
+ var $945=($944|0)!=0;
+ if($945){label=144;break;}else{label=145;break;}
+ case 144:
+ var $947=$mix;
+ var $948=$x;
+ var $949=$line;
+ var $950=(($949+($948<<1))|0);
+ HEAP16[(($950)>>1)]=$947;
+ label=146;break;
+ case 145:
+ var $952=$x;
+ var $953=$line;
+ var $954=(($953+($952<<1))|0);
+ HEAP16[(($954)>>1)]=0;
+ label=146;break;
+ case 146:
+ var $956=$count;
+ var $957=((($956)-(1))|0);
+ $count=$957;
+ var $958=$x;
+ var $959=((($958)+(1))|0);
+ $x=$959;
+ var $960=$mixmask;
+ var $961=($960&255);
+ var $962=$961<<1;
+ var $963=(($962)&255);
+ $mixmask=$963;
+ var $964=$mixmask;
+ var $965=($964&255);
+ var $966=($965|0)==0;
+ if($966){label=147;break;}else{label=151;break;}
+ case 147:
+ var $968=$fom_mask;
+ var $969=($968|0)!=0;
+ if($969){label=148;break;}else{label=149;break;}
+ case 148:
+ var $971=$fom_mask;
+ var $978=$971;label=150;break;
+ case 149:
+ var $973=$5;
+ var $974=(($973+1)|0);
+ $5=$974;
+ var $975=HEAP8[($973)];
+ var $976=($975&255);
+ var $978=$976;label=150;break;
+ case 150:
+ var $978;
+ var $979=(($978)&255);
+ $mask=$979;
+ $mixmask=1;
+ label=151;break;
+ case 151:
+ var $981=$mask;
+ var $982=($981&255);
+ var $983=$mixmask;
+ var $984=($983&255);
+ var $985=$982&$984;
+ var $986=($985|0)!=0;
+ if($986){label=152;break;}else{label=153;break;}
+ case 152:
+ var $988=$mix;
+ var $989=$x;
+ var $990=$line;
+ var $991=(($990+($989<<1))|0);
+ HEAP16[(($991)>>1)]=$988;
+ label=154;break;
+ case 153:
+ var $993=$x;
+ var $994=$line;
+ var $995=(($994+($993<<1))|0);
+ HEAP16[(($995)>>1)]=0;
+ label=154;break;
+ case 154:
+ var $997=$count;
+ var $998=((($997)-(1))|0);
+ $count=$998;
+ var $999=$x;
+ var $1000=((($999)+(1))|0);
+ $x=$1000;
+ var $1001=$mixmask;
+ var $1002=($1001&255);
+ var $1003=$1002<<1;
+ var $1004=(($1003)&255);
+ $mixmask=$1004;
+ var $1005=$mixmask;
+ var $1006=($1005&255);
+ var $1007=($1006|0)==0;
+ if($1007){label=155;break;}else{label=159;break;}
+ case 155:
+ var $1009=$fom_mask;
+ var $1010=($1009|0)!=0;
+ if($1010){label=156;break;}else{label=157;break;}
+ case 156:
+ var $1012=$fom_mask;
+ var $1019=$1012;label=158;break;
+ case 157:
+ var $1014=$5;
+ var $1015=(($1014+1)|0);
+ $5=$1015;
+ var $1016=HEAP8[($1014)];
+ var $1017=($1016&255);
+ var $1019=$1017;label=158;break;
+ case 158:
+ var $1019;
+ var $1020=(($1019)&255);
+ $mask=$1020;
+ $mixmask=1;
+ label=159;break;
+ case 159:
+ var $1022=$mask;
+ var $1023=($1022&255);
+ var $1024=$mixmask;
+ var $1025=($1024&255);
+ var $1026=$1023&$1025;
+ var $1027=($1026|0)!=0;
+ if($1027){label=160;break;}else{label=161;break;}
+ case 160:
+ var $1029=$mix;
+ var $1030=$x;
+ var $1031=$line;
+ var $1032=(($1031+($1030<<1))|0);
+ HEAP16[(($1032)>>1)]=$1029;
+ label=162;break;
+ case 161:
+ var $1034=$x;
+ var $1035=$line;
+ var $1036=(($1035+($1034<<1))|0);
+ HEAP16[(($1036)>>1)]=0;
+ label=162;break;
+ case 162:
+ var $1038=$count;
+ var $1039=((($1038)-(1))|0);
+ $count=$1039;
+ var $1040=$x;
+ var $1041=((($1040)+(1))|0);
+ $x=$1041;
+ label=95;break;
+ case 163:
+ label=164;break;
+ case 164:
+ var $1044=$count;
+ var $1045=($1044|0)>0;
+ if($1045){label=165;break;}else{var $1051=0;label=166;break;}
+ case 165:
+ var $1047=$x;
+ var $1048=$3;
+ var $1049=($1047|0)<($1048|0);
+ var $1051=$1049;label=166;break;
+ case 166:
+ var $1051;
+ if($1051){label=167;break;}else{label=176;break;}
+ case 167:
+ var $1053=$mixmask;
+ var $1054=($1053&255);
+ var $1055=$1054<<1;
+ var $1056=(($1055)&255);
+ $mixmask=$1056;
+ var $1057=$mixmask;
+ var $1058=($1057&255);
+ var $1059=($1058|0)==0;
+ if($1059){label=168;break;}else{label=172;break;}
+ case 168:
+ var $1061=$fom_mask;
+ var $1062=($1061|0)!=0;
+ if($1062){label=169;break;}else{label=170;break;}
+ case 169:
+ var $1064=$fom_mask;
+ var $1071=$1064;label=171;break;
+ case 170:
+ var $1066=$5;
+ var $1067=(($1066+1)|0);
+ $5=$1067;
+ var $1068=HEAP8[($1066)];
+ var $1069=($1068&255);
+ var $1071=$1069;label=171;break;
+ case 171:
+ var $1071;
+ var $1072=(($1071)&255);
+ $mask=$1072;
+ $mixmask=1;
+ label=172;break;
+ case 172:
+ var $1074=$mask;
+ var $1075=($1074&255);
+ var $1076=$mixmask;
+ var $1077=($1076&255);
+ var $1078=$1075&$1077;
+ var $1079=($1078|0)!=0;
+ if($1079){label=173;break;}else{label=174;break;}
+ case 173:
+ var $1081=$mix;
+ var $1082=$x;
+ var $1083=$line;
+ var $1084=(($1083+($1082<<1))|0);
+ HEAP16[(($1084)>>1)]=$1081;
+ label=175;break;
+ case 174:
+ var $1086=$x;
+ var $1087=$line;
+ var $1088=(($1087+($1086<<1))|0);
+ HEAP16[(($1088)>>1)]=0;
+ label=175;break;
+ case 175:
+ var $1090=$count;
+ var $1091=((($1090)-(1))|0);
+ $count=$1091;
+ var $1092=$x;
+ var $1093=((($1092)+(1))|0);
+ $x=$1093;
+ label=164;break;
+ case 176:
+ label=260;break;
+ case 177:
+ label=178;break;
+ case 178:
+ var $1097=$count;
+ var $1098=$1097&-8;
+ var $1099=($1098|0)!=0;
+ if($1099){label=179;break;}else{var $1106=0;label=180;break;}
+ case 179:
+ var $1101=$x;
+ var $1102=((($1101)+(8))|0);
+ var $1103=$3;
+ var $1104=($1102|0)<($1103|0);
+ var $1106=$1104;label=180;break;
+ case 180:
+ var $1106;
+ if($1106){label=181;break;}else{label=246;break;}
+ case 181:
+ var $1108=$mixmask;
+ var $1109=($1108&255);
+ var $1110=$1109<<1;
+ var $1111=(($1110)&255);
+ $mixmask=$1111;
+ var $1112=$mixmask;
+ var $1113=($1112&255);
+ var $1114=($1113|0)==0;
+ if($1114){label=182;break;}else{label=186;break;}
+ case 182:
+ var $1116=$fom_mask;
+ var $1117=($1116|0)!=0;
+ if($1117){label=183;break;}else{label=184;break;}
+ case 183:
+ var $1119=$fom_mask;
+ var $1126=$1119;label=185;break;
+ case 184:
+ var $1121=$5;
+ var $1122=(($1121+1)|0);
+ $5=$1122;
+ var $1123=HEAP8[($1121)];
+ var $1124=($1123&255);
+ var $1126=$1124;label=185;break;
+ case 185:
+ var $1126;
+ var $1127=(($1126)&255);
+ $mask=$1127;
+ $mixmask=1;
+ label=186;break;
+ case 186:
+ var $1129=$mask;
+ var $1130=($1129&255);
+ var $1131=$mixmask;
+ var $1132=($1131&255);
+ var $1133=$1130&$1132;
+ var $1134=($1133|0)!=0;
+ if($1134){label=187;break;}else{label=188;break;}
+ case 187:
+ var $1136=$x;
+ var $1137=$prevline;
+ var $1138=(($1137+($1136<<1))|0);
+ var $1139=HEAP16[(($1138)>>1)];
+ var $1140=($1139&65535);
+ var $1141=$mix;
+ var $1142=($1141&65535);
+ var $1143=$1140^$1142;
+ var $1144=(($1143)&65535);
+ var $1145=$x;
+ var $1146=$line;
+ var $1147=(($1146+($1145<<1))|0);
+ HEAP16[(($1147)>>1)]=$1144;
+ label=189;break;
+ case 188:
+ var $1149=$x;
+ var $1150=$prevline;
+ var $1151=(($1150+($1149<<1))|0);
+ var $1152=HEAP16[(($1151)>>1)];
+ var $1153=$x;
+ var $1154=$line;
+ var $1155=(($1154+($1153<<1))|0);
+ HEAP16[(($1155)>>1)]=$1152;
+ label=189;break;
+ case 189:
+ var $1157=$count;
+ var $1158=((($1157)-(1))|0);
+ $count=$1158;
+ var $1159=$x;
+ var $1160=((($1159)+(1))|0);
+ $x=$1160;
+ var $1161=$mixmask;
+ var $1162=($1161&255);
+ var $1163=$1162<<1;
+ var $1164=(($1163)&255);
+ $mixmask=$1164;
+ var $1165=$mixmask;
+ var $1166=($1165&255);
+ var $1167=($1166|0)==0;
+ if($1167){label=190;break;}else{label=194;break;}
+ case 190:
+ var $1169=$fom_mask;
+ var $1170=($1169|0)!=0;
+ if($1170){label=191;break;}else{label=192;break;}
+ case 191:
+ var $1172=$fom_mask;
+ var $1179=$1172;label=193;break;
+ case 192:
+ var $1174=$5;
+ var $1175=(($1174+1)|0);
+ $5=$1175;
+ var $1176=HEAP8[($1174)];
+ var $1177=($1176&255);
+ var $1179=$1177;label=193;break;
+ case 193:
+ var $1179;
+ var $1180=(($1179)&255);
+ $mask=$1180;
+ $mixmask=1;
+ label=194;break;
+ case 194:
+ var $1182=$mask;
+ var $1183=($1182&255);
+ var $1184=$mixmask;
+ var $1185=($1184&255);
+ var $1186=$1183&$1185;
+ var $1187=($1186|0)!=0;
+ if($1187){label=195;break;}else{label=196;break;}
+ case 195:
+ var $1189=$x;
+ var $1190=$prevline;
+ var $1191=(($1190+($1189<<1))|0);
+ var $1192=HEAP16[(($1191)>>1)];
+ var $1193=($1192&65535);
+ var $1194=$mix;
+ var $1195=($1194&65535);
+ var $1196=$1193^$1195;
+ var $1197=(($1196)&65535);
+ var $1198=$x;
+ var $1199=$line;
+ var $1200=(($1199+($1198<<1))|0);
+ HEAP16[(($1200)>>1)]=$1197;
+ label=197;break;
+ case 196:
+ var $1202=$x;
+ var $1203=$prevline;
+ var $1204=(($1203+($1202<<1))|0);
+ var $1205=HEAP16[(($1204)>>1)];
+ var $1206=$x;
+ var $1207=$line;
+ var $1208=(($1207+($1206<<1))|0);
+ HEAP16[(($1208)>>1)]=$1205;
+ label=197;break;
+ case 197:
+ var $1210=$count;
+ var $1211=((($1210)-(1))|0);
+ $count=$1211;
+ var $1212=$x;
+ var $1213=((($1212)+(1))|0);
+ $x=$1213;
+ var $1214=$mixmask;
+ var $1215=($1214&255);
+ var $1216=$1215<<1;
+ var $1217=(($1216)&255);
+ $mixmask=$1217;
+ var $1218=$mixmask;
+ var $1219=($1218&255);
+ var $1220=($1219|0)==0;
+ if($1220){label=198;break;}else{label=202;break;}
+ case 198:
+ var $1222=$fom_mask;
+ var $1223=($1222|0)!=0;
+ if($1223){label=199;break;}else{label=200;break;}
+ case 199:
+ var $1225=$fom_mask;
+ var $1232=$1225;label=201;break;
+ case 200:
+ var $1227=$5;
+ var $1228=(($1227+1)|0);
+ $5=$1228;
+ var $1229=HEAP8[($1227)];
+ var $1230=($1229&255);
+ var $1232=$1230;label=201;break;
+ case 201:
+ var $1232;
+ var $1233=(($1232)&255);
+ $mask=$1233;
+ $mixmask=1;
+ label=202;break;
+ case 202:
+ var $1235=$mask;
+ var $1236=($1235&255);
+ var $1237=$mixmask;
+ var $1238=($1237&255);
+ var $1239=$1236&$1238;
+ var $1240=($1239|0)!=0;
+ if($1240){label=203;break;}else{label=204;break;}
+ case 203:
+ var $1242=$x;
+ var $1243=$prevline;
+ var $1244=(($1243+($1242<<1))|0);
+ var $1245=HEAP16[(($1244)>>1)];
+ var $1246=($1245&65535);
+ var $1247=$mix;
+ var $1248=($1247&65535);
+ var $1249=$1246^$1248;
+ var $1250=(($1249)&65535);
+ var $1251=$x;
+ var $1252=$line;
+ var $1253=(($1252+($1251<<1))|0);
+ HEAP16[(($1253)>>1)]=$1250;
+ label=205;break;
+ case 204:
+ var $1255=$x;
+ var $1256=$prevline;
+ var $1257=(($1256+($1255<<1))|0);
+ var $1258=HEAP16[(($1257)>>1)];
+ var $1259=$x;
+ var $1260=$line;
+ var $1261=(($1260+($1259<<1))|0);
+ HEAP16[(($1261)>>1)]=$1258;
+ label=205;break;
+ case 205:
+ var $1263=$count;
+ var $1264=((($1263)-(1))|0);
+ $count=$1264;
+ var $1265=$x;
+ var $1266=((($1265)+(1))|0);
+ $x=$1266;
+ var $1267=$mixmask;
+ var $1268=($1267&255);
+ var $1269=$1268<<1;
+ var $1270=(($1269)&255);
+ $mixmask=$1270;
+ var $1271=$mixmask;
+ var $1272=($1271&255);
+ var $1273=($1272|0)==0;
+ if($1273){label=206;break;}else{label=210;break;}
+ case 206:
+ var $1275=$fom_mask;
+ var $1276=($1275|0)!=0;
+ if($1276){label=207;break;}else{label=208;break;}
+ case 207:
+ var $1278=$fom_mask;
+ var $1285=$1278;label=209;break;
+ case 208:
+ var $1280=$5;
+ var $1281=(($1280+1)|0);
+ $5=$1281;
+ var $1282=HEAP8[($1280)];
+ var $1283=($1282&255);
+ var $1285=$1283;label=209;break;
+ case 209:
+ var $1285;
+ var $1286=(($1285)&255);
+ $mask=$1286;
+ $mixmask=1;
+ label=210;break;
+ case 210:
+ var $1288=$mask;
+ var $1289=($1288&255);
+ var $1290=$mixmask;
+ var $1291=($1290&255);
+ var $1292=$1289&$1291;
+ var $1293=($1292|0)!=0;
+ if($1293){label=211;break;}else{label=212;break;}
+ case 211:
+ var $1295=$x;
+ var $1296=$prevline;
+ var $1297=(($1296+($1295<<1))|0);
+ var $1298=HEAP16[(($1297)>>1)];
+ var $1299=($1298&65535);
+ var $1300=$mix;
+ var $1301=($1300&65535);
+ var $1302=$1299^$1301;
+ var $1303=(($1302)&65535);
+ var $1304=$x;
+ var $1305=$line;
+ var $1306=(($1305+($1304<<1))|0);
+ HEAP16[(($1306)>>1)]=$1303;
+ label=213;break;
+ case 212:
+ var $1308=$x;
+ var $1309=$prevline;
+ var $1310=(($1309+($1308<<1))|0);
+ var $1311=HEAP16[(($1310)>>1)];
+ var $1312=$x;
+ var $1313=$line;
+ var $1314=(($1313+($1312<<1))|0);
+ HEAP16[(($1314)>>1)]=$1311;
+ label=213;break;
+ case 213:
+ var $1316=$count;
+ var $1317=((($1316)-(1))|0);
+ $count=$1317;
+ var $1318=$x;
+ var $1319=((($1318)+(1))|0);
+ $x=$1319;
+ var $1320=$mixmask;
+ var $1321=($1320&255);
+ var $1322=$1321<<1;
+ var $1323=(($1322)&255);
+ $mixmask=$1323;
+ var $1324=$mixmask;
+ var $1325=($1324&255);
+ var $1326=($1325|0)==0;
+ if($1326){label=214;break;}else{label=218;break;}
+ case 214:
+ var $1328=$fom_mask;
+ var $1329=($1328|0)!=0;
+ if($1329){label=215;break;}else{label=216;break;}
+ case 215:
+ var $1331=$fom_mask;
+ var $1338=$1331;label=217;break;
+ case 216:
+ var $1333=$5;
+ var $1334=(($1333+1)|0);
+ $5=$1334;
+ var $1335=HEAP8[($1333)];
+ var $1336=($1335&255);
+ var $1338=$1336;label=217;break;
+ case 217:
+ var $1338;
+ var $1339=(($1338)&255);
+ $mask=$1339;
+ $mixmask=1;
+ label=218;break;
+ case 218:
+ var $1341=$mask;
+ var $1342=($1341&255);
+ var $1343=$mixmask;
+ var $1344=($1343&255);
+ var $1345=$1342&$1344;
+ var $1346=($1345|0)!=0;
+ if($1346){label=219;break;}else{label=220;break;}
+ case 219:
+ var $1348=$x;
+ var $1349=$prevline;
+ var $1350=(($1349+($1348<<1))|0);
+ var $1351=HEAP16[(($1350)>>1)];
+ var $1352=($1351&65535);
+ var $1353=$mix;
+ var $1354=($1353&65535);
+ var $1355=$1352^$1354;
+ var $1356=(($1355)&65535);
+ var $1357=$x;
+ var $1358=$line;
+ var $1359=(($1358+($1357<<1))|0);
+ HEAP16[(($1359)>>1)]=$1356;
+ label=221;break;
+ case 220:
+ var $1361=$x;
+ var $1362=$prevline;
+ var $1363=(($1362+($1361<<1))|0);
+ var $1364=HEAP16[(($1363)>>1)];
+ var $1365=$x;
+ var $1366=$line;
+ var $1367=(($1366+($1365<<1))|0);
+ HEAP16[(($1367)>>1)]=$1364;
+ label=221;break;
+ case 221:
+ var $1369=$count;
+ var $1370=((($1369)-(1))|0);
+ $count=$1370;
+ var $1371=$x;
+ var $1372=((($1371)+(1))|0);
+ $x=$1372;
+ var $1373=$mixmask;
+ var $1374=($1373&255);
+ var $1375=$1374<<1;
+ var $1376=(($1375)&255);
+ $mixmask=$1376;
+ var $1377=$mixmask;
+ var $1378=($1377&255);
+ var $1379=($1378|0)==0;
+ if($1379){label=222;break;}else{label=226;break;}
+ case 222:
+ var $1381=$fom_mask;
+ var $1382=($1381|0)!=0;
+ if($1382){label=223;break;}else{label=224;break;}
+ case 223:
+ var $1384=$fom_mask;
+ var $1391=$1384;label=225;break;
+ case 224:
+ var $1386=$5;
+ var $1387=(($1386+1)|0);
+ $5=$1387;
+ var $1388=HEAP8[($1386)];
+ var $1389=($1388&255);
+ var $1391=$1389;label=225;break;
+ case 225:
+ var $1391;
+ var $1392=(($1391)&255);
+ $mask=$1392;
+ $mixmask=1;
+ label=226;break;
+ case 226:
+ var $1394=$mask;
+ var $1395=($1394&255);
+ var $1396=$mixmask;
+ var $1397=($1396&255);
+ var $1398=$1395&$1397;
+ var $1399=($1398|0)!=0;
+ if($1399){label=227;break;}else{label=228;break;}
+ case 227:
+ var $1401=$x;
+ var $1402=$prevline;
+ var $1403=(($1402+($1401<<1))|0);
+ var $1404=HEAP16[(($1403)>>1)];
+ var $1405=($1404&65535);
+ var $1406=$mix;
+ var $1407=($1406&65535);
+ var $1408=$1405^$1407;
+ var $1409=(($1408)&65535);
+ var $1410=$x;
+ var $1411=$line;
+ var $1412=(($1411+($1410<<1))|0);
+ HEAP16[(($1412)>>1)]=$1409;
+ label=229;break;
+ case 228:
+ var $1414=$x;
+ var $1415=$prevline;
+ var $1416=(($1415+($1414<<1))|0);
+ var $1417=HEAP16[(($1416)>>1)];
+ var $1418=$x;
+ var $1419=$line;
+ var $1420=(($1419+($1418<<1))|0);
+ HEAP16[(($1420)>>1)]=$1417;
+ label=229;break;
+ case 229:
+ var $1422=$count;
+ var $1423=((($1422)-(1))|0);
+ $count=$1423;
+ var $1424=$x;
+ var $1425=((($1424)+(1))|0);
+ $x=$1425;
+ var $1426=$mixmask;
+ var $1427=($1426&255);
+ var $1428=$1427<<1;
+ var $1429=(($1428)&255);
+ $mixmask=$1429;
+ var $1430=$mixmask;
+ var $1431=($1430&255);
+ var $1432=($1431|0)==0;
+ if($1432){label=230;break;}else{label=234;break;}
+ case 230:
+ var $1434=$fom_mask;
+ var $1435=($1434|0)!=0;
+ if($1435){label=231;break;}else{label=232;break;}
+ case 231:
+ var $1437=$fom_mask;
+ var $1444=$1437;label=233;break;
+ case 232:
+ var $1439=$5;
+ var $1440=(($1439+1)|0);
+ $5=$1440;
+ var $1441=HEAP8[($1439)];
+ var $1442=($1441&255);
+ var $1444=$1442;label=233;break;
+ case 233:
+ var $1444;
+ var $1445=(($1444)&255);
+ $mask=$1445;
+ $mixmask=1;
+ label=234;break;
+ case 234:
+ var $1447=$mask;
+ var $1448=($1447&255);
+ var $1449=$mixmask;
+ var $1450=($1449&255);
+ var $1451=$1448&$1450;
+ var $1452=($1451|0)!=0;
+ if($1452){label=235;break;}else{label=236;break;}
+ case 235:
+ var $1454=$x;
+ var $1455=$prevline;
+ var $1456=(($1455+($1454<<1))|0);
+ var $1457=HEAP16[(($1456)>>1)];
+ var $1458=($1457&65535);
+ var $1459=$mix;
+ var $1460=($1459&65535);
+ var $1461=$1458^$1460;
+ var $1462=(($1461)&65535);
+ var $1463=$x;
+ var $1464=$line;
+ var $1465=(($1464+($1463<<1))|0);
+ HEAP16[(($1465)>>1)]=$1462;
+ label=237;break;
+ case 236:
+ var $1467=$x;
+ var $1468=$prevline;
+ var $1469=(($1468+($1467<<1))|0);
+ var $1470=HEAP16[(($1469)>>1)];
+ var $1471=$x;
+ var $1472=$line;
+ var $1473=(($1472+($1471<<1))|0);
+ HEAP16[(($1473)>>1)]=$1470;
+ label=237;break;
+ case 237:
+ var $1475=$count;
+ var $1476=((($1475)-(1))|0);
+ $count=$1476;
+ var $1477=$x;
+ var $1478=((($1477)+(1))|0);
+ $x=$1478;
+ var $1479=$mixmask;
+ var $1480=($1479&255);
+ var $1481=$1480<<1;
+ var $1482=(($1481)&255);
+ $mixmask=$1482;
+ var $1483=$mixmask;
+ var $1484=($1483&255);
+ var $1485=($1484|0)==0;
+ if($1485){label=238;break;}else{label=242;break;}
+ case 238:
+ var $1487=$fom_mask;
+ var $1488=($1487|0)!=0;
+ if($1488){label=239;break;}else{label=240;break;}
+ case 239:
+ var $1490=$fom_mask;
+ var $1497=$1490;label=241;break;
+ case 240:
+ var $1492=$5;
+ var $1493=(($1492+1)|0);
+ $5=$1493;
+ var $1494=HEAP8[($1492)];
+ var $1495=($1494&255);
+ var $1497=$1495;label=241;break;
+ case 241:
+ var $1497;
+ var $1498=(($1497)&255);
+ $mask=$1498;
+ $mixmask=1;
+ label=242;break;
+ case 242:
+ var $1500=$mask;
+ var $1501=($1500&255);
+ var $1502=$mixmask;
+ var $1503=($1502&255);
+ var $1504=$1501&$1503;
+ var $1505=($1504|0)!=0;
+ if($1505){label=243;break;}else{label=244;break;}
+ case 243:
+ var $1507=$x;
+ var $1508=$prevline;
+ var $1509=(($1508+($1507<<1))|0);
+ var $1510=HEAP16[(($1509)>>1)];
+ var $1511=($1510&65535);
+ var $1512=$mix;
+ var $1513=($1512&65535);
+ var $1514=$1511^$1513;
+ var $1515=(($1514)&65535);
+ var $1516=$x;
+ var $1517=$line;
+ var $1518=(($1517+($1516<<1))|0);
+ HEAP16[(($1518)>>1)]=$1515;
+ label=245;break;
+ case 244:
+ var $1520=$x;
+ var $1521=$prevline;
+ var $1522=(($1521+($1520<<1))|0);
+ var $1523=HEAP16[(($1522)>>1)];
+ var $1524=$x;
+ var $1525=$line;
+ var $1526=(($1525+($1524<<1))|0);
+ HEAP16[(($1526)>>1)]=$1523;
+ label=245;break;
+ case 245:
+ var $1528=$count;
+ var $1529=((($1528)-(1))|0);
+ $count=$1529;
+ var $1530=$x;
+ var $1531=((($1530)+(1))|0);
+ $x=$1531;
+ label=178;break;
+ case 246:
+ label=247;break;
+ case 247:
+ var $1534=$count;
+ var $1535=($1534|0)>0;
+ if($1535){label=248;break;}else{var $1541=0;label=249;break;}
+ case 248:
+ var $1537=$x;
+ var $1538=$3;
+ var $1539=($1537|0)<($1538|0);
+ var $1541=$1539;label=249;break;
+ case 249:
+ var $1541;
+ if($1541){label=250;break;}else{label=259;break;}
+ case 250:
+ var $1543=$mixmask;
+ var $1544=($1543&255);
+ var $1545=$1544<<1;
+ var $1546=(($1545)&255);
+ $mixmask=$1546;
+ var $1547=$mixmask;
+ var $1548=($1547&255);
+ var $1549=($1548|0)==0;
+ if($1549){label=251;break;}else{label=255;break;}
+ case 251:
+ var $1551=$fom_mask;
+ var $1552=($1551|0)!=0;
+ if($1552){label=252;break;}else{label=253;break;}
+ case 252:
+ var $1554=$fom_mask;
+ var $1561=$1554;label=254;break;
+ case 253:
+ var $1556=$5;
+ var $1557=(($1556+1)|0);
+ $5=$1557;
+ var $1558=HEAP8[($1556)];
+ var $1559=($1558&255);
+ var $1561=$1559;label=254;break;
+ case 254:
+ var $1561;
+ var $1562=(($1561)&255);
+ $mask=$1562;
+ $mixmask=1;
+ label=255;break;
+ case 255:
+ var $1564=$mask;
+ var $1565=($1564&255);
+ var $1566=$mixmask;
+ var $1567=($1566&255);
+ var $1568=$1565&$1567;
+ var $1569=($1568|0)!=0;
+ if($1569){label=256;break;}else{label=257;break;}
+ case 256:
+ var $1571=$x;
+ var $1572=$prevline;
+ var $1573=(($1572+($1571<<1))|0);
+ var $1574=HEAP16[(($1573)>>1)];
+ var $1575=($1574&65535);
+ var $1576=$mix;
+ var $1577=($1576&65535);
+ var $1578=$1575^$1577;
+ var $1579=(($1578)&65535);
+ var $1580=$x;
+ var $1581=$line;
+ var $1582=(($1581+($1580<<1))|0);
+ HEAP16[(($1582)>>1)]=$1579;
+ label=258;break;
+ case 257:
+ var $1584=$x;
+ var $1585=$prevline;
+ var $1586=(($1585+($1584<<1))|0);
+ var $1587=HEAP16[(($1586)>>1)];
+ var $1588=$x;
+ var $1589=$line;
+ var $1590=(($1589+($1588<<1))|0);
+ HEAP16[(($1590)>>1)]=$1587;
+ label=258;break;
+ case 258:
+ var $1592=$count;
+ var $1593=((($1592)-(1))|0);
+ $count=$1593;
+ var $1594=$x;
+ var $1595=((($1594)+(1))|0);
+ $x=$1595;
+ label=247;break;
+ case 259:
+ label=260;break;
+ case 260:
+ label=344;break;
+ case 261:
+ label=262;break;
+ case 262:
+ var $1600=$count;
+ var $1601=$1600&-8;
+ var $1602=($1601|0)!=0;
+ if($1602){label=263;break;}else{var $1609=0;label=264;break;}
+ case 263:
+ var $1604=$x;
+ var $1605=((($1604)+(8))|0);
+ var $1606=$3;
+ var $1607=($1605|0)<($1606|0);
+ var $1609=$1607;label=264;break;
+ case 264:
+ var $1609;
+ if($1609){label=265;break;}else{label=266;break;}
+ case 265:
+ var $1611=$colour2;
+ var $1612=$x;
+ var $1613=$line;
+ var $1614=(($1613+($1612<<1))|0);
+ HEAP16[(($1614)>>1)]=$1611;
+ var $1615=$count;
+ var $1616=((($1615)-(1))|0);
+ $count=$1616;
+ var $1617=$x;
+ var $1618=((($1617)+(1))|0);
+ $x=$1618;
+ var $1619=$colour2;
+ var $1620=$x;
+ var $1621=$line;
+ var $1622=(($1621+($1620<<1))|0);
+ HEAP16[(($1622)>>1)]=$1619;
+ var $1623=$count;
+ var $1624=((($1623)-(1))|0);
+ $count=$1624;
+ var $1625=$x;
+ var $1626=((($1625)+(1))|0);
+ $x=$1626;
+ var $1627=$colour2;
+ var $1628=$x;
+ var $1629=$line;
+ var $1630=(($1629+($1628<<1))|0);
+ HEAP16[(($1630)>>1)]=$1627;
+ var $1631=$count;
+ var $1632=((($1631)-(1))|0);
+ $count=$1632;
+ var $1633=$x;
+ var $1634=((($1633)+(1))|0);
+ $x=$1634;
+ var $1635=$colour2;
+ var $1636=$x;
+ var $1637=$line;
+ var $1638=(($1637+($1636<<1))|0);
+ HEAP16[(($1638)>>1)]=$1635;
+ var $1639=$count;
+ var $1640=((($1639)-(1))|0);
+ $count=$1640;
+ var $1641=$x;
+ var $1642=((($1641)+(1))|0);
+ $x=$1642;
+ var $1643=$colour2;
+ var $1644=$x;
+ var $1645=$line;
+ var $1646=(($1645+($1644<<1))|0);
+ HEAP16[(($1646)>>1)]=$1643;
+ var $1647=$count;
+ var $1648=((($1647)-(1))|0);
+ $count=$1648;
+ var $1649=$x;
+ var $1650=((($1649)+(1))|0);
+ $x=$1650;
+ var $1651=$colour2;
+ var $1652=$x;
+ var $1653=$line;
+ var $1654=(($1653+($1652<<1))|0);
+ HEAP16[(($1654)>>1)]=$1651;
+ var $1655=$count;
+ var $1656=((($1655)-(1))|0);
+ $count=$1656;
+ var $1657=$x;
+ var $1658=((($1657)+(1))|0);
+ $x=$1658;
+ var $1659=$colour2;
+ var $1660=$x;
+ var $1661=$line;
+ var $1662=(($1661+($1660<<1))|0);
+ HEAP16[(($1662)>>1)]=$1659;
+ var $1663=$count;
+ var $1664=((($1663)-(1))|0);
+ $count=$1664;
+ var $1665=$x;
+ var $1666=((($1665)+(1))|0);
+ $x=$1666;
+ var $1667=$colour2;
+ var $1668=$x;
+ var $1669=$line;
+ var $1670=(($1669+($1668<<1))|0);
+ HEAP16[(($1670)>>1)]=$1667;
+ var $1671=$count;
+ var $1672=((($1671)-(1))|0);
+ $count=$1672;
+ var $1673=$x;
+ var $1674=((($1673)+(1))|0);
+ $x=$1674;
+ label=262;break;
+ case 266:
+ label=267;break;
+ case 267:
+ var $1677=$count;
+ var $1678=($1677|0)>0;
+ if($1678){label=268;break;}else{var $1684=0;label=269;break;}
+ case 268:
+ var $1680=$x;
+ var $1681=$3;
+ var $1682=($1680|0)<($1681|0);
+ var $1684=$1682;label=269;break;
+ case 269:
+ var $1684;
+ if($1684){label=270;break;}else{label=271;break;}
+ case 270:
+ var $1686=$colour2;
+ var $1687=$x;
+ var $1688=$line;
+ var $1689=(($1688+($1687<<1))|0);
+ HEAP16[(($1689)>>1)]=$1686;
+ var $1690=$count;
+ var $1691=((($1690)-(1))|0);
+ $count=$1691;
+ var $1692=$x;
+ var $1693=((($1692)+(1))|0);
+ $x=$1693;
+ label=267;break;
+ case 271:
+ label=344;break;
+ case 272:
+ label=273;break;
+ case 273:
+ var $1697=$count;
+ var $1698=$1697&-8;
+ var $1699=($1698|0)!=0;
+ if($1699){label=274;break;}else{var $1706=0;label=275;break;}
+ case 274:
+ var $1701=$x;
+ var $1702=((($1701)+(8))|0);
+ var $1703=$3;
+ var $1704=($1702|0)<($1703|0);
+ var $1706=$1704;label=275;break;
+ case 275:
+ var $1706;
+ if($1706){label=276;break;}else{label=277;break;}
+ case 276:
+ var $1708=$5;
+ var $1709=(($1708+1)|0);
+ $5=$1709;
+ var $1710=HEAP8[($1708)];
+ var $1711=($1710&255);
+ var $1712=$x;
+ var $1713=$line;
+ var $1714=(($1713+($1712<<1))|0);
+ HEAP16[(($1714)>>1)]=$1711;
+ var $1715=$5;
+ var $1716=(($1715+1)|0);
+ $5=$1716;
+ var $1717=HEAP8[($1715)];
+ var $1718=($1717&255);
+ var $1719=$1718<<8;
+ var $1720=$x;
+ var $1721=$line;
+ var $1722=(($1721+($1720<<1))|0);
+ var $1723=HEAP16[(($1722)>>1)];
+ var $1724=($1723&65535);
+ var $1725=$1724|$1719;
+ var $1726=(($1725)&65535);
+ HEAP16[(($1722)>>1)]=$1726;
+ var $1727=$count;
+ var $1728=((($1727)-(1))|0);
+ $count=$1728;
+ var $1729=$x;
+ var $1730=((($1729)+(1))|0);
+ $x=$1730;
+ var $1731=$5;
+ var $1732=(($1731+1)|0);
+ $5=$1732;
+ var $1733=HEAP8[($1731)];
+ var $1734=($1733&255);
+ var $1735=$x;
+ var $1736=$line;
+ var $1737=(($1736+($1735<<1))|0);
+ HEAP16[(($1737)>>1)]=$1734;
+ var $1738=$5;
+ var $1739=(($1738+1)|0);
+ $5=$1739;
+ var $1740=HEAP8[($1738)];
+ var $1741=($1740&255);
+ var $1742=$1741<<8;
+ var $1743=$x;
+ var $1744=$line;
+ var $1745=(($1744+($1743<<1))|0);
+ var $1746=HEAP16[(($1745)>>1)];
+ var $1747=($1746&65535);
+ var $1748=$1747|$1742;
+ var $1749=(($1748)&65535);
+ HEAP16[(($1745)>>1)]=$1749;
+ var $1750=$count;
+ var $1751=((($1750)-(1))|0);
+ $count=$1751;
+ var $1752=$x;
+ var $1753=((($1752)+(1))|0);
+ $x=$1753;
+ var $1754=$5;
+ var $1755=(($1754+1)|0);
+ $5=$1755;
+ var $1756=HEAP8[($1754)];
+ var $1757=($1756&255);
+ var $1758=$x;
+ var $1759=$line;
+ var $1760=(($1759+($1758<<1))|0);
+ HEAP16[(($1760)>>1)]=$1757;
+ var $1761=$5;
+ var $1762=(($1761+1)|0);
+ $5=$1762;
+ var $1763=HEAP8[($1761)];
+ var $1764=($1763&255);
+ var $1765=$1764<<8;
+ var $1766=$x;
+ var $1767=$line;
+ var $1768=(($1767+($1766<<1))|0);
+ var $1769=HEAP16[(($1768)>>1)];
+ var $1770=($1769&65535);
+ var $1771=$1770|$1765;
+ var $1772=(($1771)&65535);
+ HEAP16[(($1768)>>1)]=$1772;
+ var $1773=$count;
+ var $1774=((($1773)-(1))|0);
+ $count=$1774;
+ var $1775=$x;
+ var $1776=((($1775)+(1))|0);
+ $x=$1776;
+ var $1777=$5;
+ var $1778=(($1777+1)|0);
+ $5=$1778;
+ var $1779=HEAP8[($1777)];
+ var $1780=($1779&255);
+ var $1781=$x;
+ var $1782=$line;
+ var $1783=(($1782+($1781<<1))|0);
+ HEAP16[(($1783)>>1)]=$1780;
+ var $1784=$5;
+ var $1785=(($1784+1)|0);
+ $5=$1785;
+ var $1786=HEAP8[($1784)];
+ var $1787=($1786&255);
+ var $1788=$1787<<8;
+ var $1789=$x;
+ var $1790=$line;
+ var $1791=(($1790+($1789<<1))|0);
+ var $1792=HEAP16[(($1791)>>1)];
+ var $1793=($1792&65535);
+ var $1794=$1793|$1788;
+ var $1795=(($1794)&65535);
+ HEAP16[(($1791)>>1)]=$1795;
+ var $1796=$count;
+ var $1797=((($1796)-(1))|0);
+ $count=$1797;
+ var $1798=$x;
+ var $1799=((($1798)+(1))|0);
+ $x=$1799;
+ var $1800=$5;
+ var $1801=(($1800+1)|0);
+ $5=$1801;
+ var $1802=HEAP8[($1800)];
+ var $1803=($1802&255);
+ var $1804=$x;
+ var $1805=$line;
+ var $1806=(($1805+($1804<<1))|0);
+ HEAP16[(($1806)>>1)]=$1803;
+ var $1807=$5;
+ var $1808=(($1807+1)|0);
+ $5=$1808;
+ var $1809=HEAP8[($1807)];
+ var $1810=($1809&255);
+ var $1811=$1810<<8;
+ var $1812=$x;
+ var $1813=$line;
+ var $1814=(($1813+($1812<<1))|0);
+ var $1815=HEAP16[(($1814)>>1)];
+ var $1816=($1815&65535);
+ var $1817=$1816|$1811;
+ var $1818=(($1817)&65535);
+ HEAP16[(($1814)>>1)]=$1818;
+ var $1819=$count;
+ var $1820=((($1819)-(1))|0);
+ $count=$1820;
+ var $1821=$x;
+ var $1822=((($1821)+(1))|0);
+ $x=$1822;
+ var $1823=$5;
+ var $1824=(($1823+1)|0);
+ $5=$1824;
+ var $1825=HEAP8[($1823)];
+ var $1826=($1825&255);
+ var $1827=$x;
+ var $1828=$line;
+ var $1829=(($1828+($1827<<1))|0);
+ HEAP16[(($1829)>>1)]=$1826;
+ var $1830=$5;
+ var $1831=(($1830+1)|0);
+ $5=$1831;
+ var $1832=HEAP8[($1830)];
+ var $1833=($1832&255);
+ var $1834=$1833<<8;
+ var $1835=$x;
+ var $1836=$line;
+ var $1837=(($1836+($1835<<1))|0);
+ var $1838=HEAP16[(($1837)>>1)];
+ var $1839=($1838&65535);
+ var $1840=$1839|$1834;
+ var $1841=(($1840)&65535);
+ HEAP16[(($1837)>>1)]=$1841;
+ var $1842=$count;
+ var $1843=((($1842)-(1))|0);
+ $count=$1843;
+ var $1844=$x;
+ var $1845=((($1844)+(1))|0);
+ $x=$1845;
+ var $1846=$5;
+ var $1847=(($1846+1)|0);
+ $5=$1847;
+ var $1848=HEAP8[($1846)];
+ var $1849=($1848&255);
+ var $1850=$x;
+ var $1851=$line;
+ var $1852=(($1851+($1850<<1))|0);
+ HEAP16[(($1852)>>1)]=$1849;
+ var $1853=$5;
+ var $1854=(($1853+1)|0);
+ $5=$1854;
+ var $1855=HEAP8[($1853)];
+ var $1856=($1855&255);
+ var $1857=$1856<<8;
+ var $1858=$x;
+ var $1859=$line;
+ var $1860=(($1859+($1858<<1))|0);
+ var $1861=HEAP16[(($1860)>>1)];
+ var $1862=($1861&65535);
+ var $1863=$1862|$1857;
+ var $1864=(($1863)&65535);
+ HEAP16[(($1860)>>1)]=$1864;
+ var $1865=$count;
+ var $1866=((($1865)-(1))|0);
+ $count=$1866;
+ var $1867=$x;
+ var $1868=((($1867)+(1))|0);
+ $x=$1868;
+ var $1869=$5;
+ var $1870=(($1869+1)|0);
+ $5=$1870;
+ var $1871=HEAP8[($1869)];
+ var $1872=($1871&255);
+ var $1873=$x;
+ var $1874=$line;
+ var $1875=(($1874+($1873<<1))|0);
+ HEAP16[(($1875)>>1)]=$1872;
+ var $1876=$5;
+ var $1877=(($1876+1)|0);
+ $5=$1877;
+ var $1878=HEAP8[($1876)];
+ var $1879=($1878&255);
+ var $1880=$1879<<8;
+ var $1881=$x;
+ var $1882=$line;
+ var $1883=(($1882+($1881<<1))|0);
+ var $1884=HEAP16[(($1883)>>1)];
+ var $1885=($1884&65535);
+ var $1886=$1885|$1880;
+ var $1887=(($1886)&65535);
+ HEAP16[(($1883)>>1)]=$1887;
+ var $1888=$count;
+ var $1889=((($1888)-(1))|0);
+ $count=$1889;
+ var $1890=$x;
+ var $1891=((($1890)+(1))|0);
+ $x=$1891;
+ label=273;break;
+ case 277:
+ label=278;break;
+ case 278:
+ var $1894=$count;
+ var $1895=($1894|0)>0;
+ if($1895){label=279;break;}else{var $1901=0;label=280;break;}
+ case 279:
+ var $1897=$x;
+ var $1898=$3;
+ var $1899=($1897|0)<($1898|0);
+ var $1901=$1899;label=280;break;
+ case 280:
+ var $1901;
+ if($1901){label=281;break;}else{label=282;break;}
+ case 281:
+ var $1903=$5;
+ var $1904=(($1903+1)|0);
+ $5=$1904;
+ var $1905=HEAP8[($1903)];
+ var $1906=($1905&255);
+ var $1907=$x;
+ var $1908=$line;
+ var $1909=(($1908+($1907<<1))|0);
+ HEAP16[(($1909)>>1)]=$1906;
+ var $1910=$5;
+ var $1911=(($1910+1)|0);
+ $5=$1911;
+ var $1912=HEAP8[($1910)];
+ var $1913=($1912&255);
+ var $1914=$1913<<8;
+ var $1915=$x;
+ var $1916=$line;
+ var $1917=(($1916+($1915<<1))|0);
+ var $1918=HEAP16[(($1917)>>1)];
+ var $1919=($1918&65535);
+ var $1920=$1919|$1914;
+ var $1921=(($1920)&65535);
+ HEAP16[(($1917)>>1)]=$1921;
+ var $1922=$count;
+ var $1923=((($1922)-(1))|0);
+ $count=$1923;
+ var $1924=$x;
+ var $1925=((($1924)+(1))|0);
+ $x=$1925;
+ label=278;break;
+ case 282:
+ label=344;break;
+ case 283:
+ label=284;break;
+ case 284:
+ var $1929=$count;
+ var $1930=$1929&-8;
+ var $1931=($1930|0)!=0;
+ if($1931){label=285;break;}else{var $1938=0;label=286;break;}
+ case 285:
+ var $1933=$x;
+ var $1934=((($1933)+(8))|0);
+ var $1935=$3;
+ var $1936=($1934|0)<($1935|0);
+ var $1938=$1936;label=286;break;
+ case 286:
+ var $1938;
+ if($1938){label=287;break;}else{label=312;break;}
+ case 287:
+ var $1940=$bicolour;
+ var $1941=($1940|0)!=0;
+ if($1941){label=288;break;}else{label=289;break;}
+ case 288:
+ var $1943=$colour2;
+ var $1944=$x;
+ var $1945=$line;
+ var $1946=(($1945+($1944<<1))|0);
+ HEAP16[(($1946)>>1)]=$1943;
+ $bicolour=0;
+ label=290;break;
+ case 289:
+ var $1948=$colour1;
+ var $1949=$x;
+ var $1950=$line;
+ var $1951=(($1950+($1949<<1))|0);
+ HEAP16[(($1951)>>1)]=$1948;
+ $bicolour=1;
+ var $1952=$count;
+ var $1953=((($1952)+(1))|0);
+ $count=$1953;
+ label=290;break;
+ case 290:
+ var $1955=$count;
+ var $1956=((($1955)-(1))|0);
+ $count=$1956;
+ var $1957=$x;
+ var $1958=((($1957)+(1))|0);
+ $x=$1958;
+ var $1959=$bicolour;
+ var $1960=($1959|0)!=0;
+ if($1960){label=291;break;}else{label=292;break;}
+ case 291:
+ var $1962=$colour2;
+ var $1963=$x;
+ var $1964=$line;
+ var $1965=(($1964+($1963<<1))|0);
+ HEAP16[(($1965)>>1)]=$1962;
+ $bicolour=0;
+ label=293;break;
+ case 292:
+ var $1967=$colour1;
+ var $1968=$x;
+ var $1969=$line;
+ var $1970=(($1969+($1968<<1))|0);
+ HEAP16[(($1970)>>1)]=$1967;
+ $bicolour=1;
+ var $1971=$count;
+ var $1972=((($1971)+(1))|0);
+ $count=$1972;
+ label=293;break;
+ case 293:
+ var $1974=$count;
+ var $1975=((($1974)-(1))|0);
+ $count=$1975;
+ var $1976=$x;
+ var $1977=((($1976)+(1))|0);
+ $x=$1977;
+ var $1978=$bicolour;
+ var $1979=($1978|0)!=0;
+ if($1979){label=294;break;}else{label=295;break;}
+ case 294:
+ var $1981=$colour2;
+ var $1982=$x;
+ var $1983=$line;
+ var $1984=(($1983+($1982<<1))|0);
+ HEAP16[(($1984)>>1)]=$1981;
+ $bicolour=0;
+ label=296;break;
+ case 295:
+ var $1986=$colour1;
+ var $1987=$x;
+ var $1988=$line;
+ var $1989=(($1988+($1987<<1))|0);
+ HEAP16[(($1989)>>1)]=$1986;
+ $bicolour=1;
+ var $1990=$count;
+ var $1991=((($1990)+(1))|0);
+ $count=$1991;
+ label=296;break;
+ case 296:
+ var $1993=$count;
+ var $1994=((($1993)-(1))|0);
+ $count=$1994;
+ var $1995=$x;
+ var $1996=((($1995)+(1))|0);
+ $x=$1996;
+ var $1997=$bicolour;
+ var $1998=($1997|0)!=0;
+ if($1998){label=297;break;}else{label=298;break;}
+ case 297:
+ var $2000=$colour2;
+ var $2001=$x;
+ var $2002=$line;
+ var $2003=(($2002+($2001<<1))|0);
+ HEAP16[(($2003)>>1)]=$2000;
+ $bicolour=0;
+ label=299;break;
+ case 298:
+ var $2005=$colour1;
+ var $2006=$x;
+ var $2007=$line;
+ var $2008=(($2007+($2006<<1))|0);
+ HEAP16[(($2008)>>1)]=$2005;
+ $bicolour=1;
+ var $2009=$count;
+ var $2010=((($2009)+(1))|0);
+ $count=$2010;
+ label=299;break;
+ case 299:
+ var $2012=$count;
+ var $2013=((($2012)-(1))|0);
+ $count=$2013;
+ var $2014=$x;
+ var $2015=((($2014)+(1))|0);
+ $x=$2015;
+ var $2016=$bicolour;
+ var $2017=($2016|0)!=0;
+ if($2017){label=300;break;}else{label=301;break;}
+ case 300:
+ var $2019=$colour2;
+ var $2020=$x;
+ var $2021=$line;
+ var $2022=(($2021+($2020<<1))|0);
+ HEAP16[(($2022)>>1)]=$2019;
+ $bicolour=0;
+ label=302;break;
+ case 301:
+ var $2024=$colour1;
+ var $2025=$x;
+ var $2026=$line;
+ var $2027=(($2026+($2025<<1))|0);
+ HEAP16[(($2027)>>1)]=$2024;
+ $bicolour=1;
+ var $2028=$count;
+ var $2029=((($2028)+(1))|0);
+ $count=$2029;
+ label=302;break;
+ case 302:
+ var $2031=$count;
+ var $2032=((($2031)-(1))|0);
+ $count=$2032;
+ var $2033=$x;
+ var $2034=((($2033)+(1))|0);
+ $x=$2034;
+ var $2035=$bicolour;
+ var $2036=($2035|0)!=0;
+ if($2036){label=303;break;}else{label=304;break;}
+ case 303:
+ var $2038=$colour2;
+ var $2039=$x;
+ var $2040=$line;
+ var $2041=(($2040+($2039<<1))|0);
+ HEAP16[(($2041)>>1)]=$2038;
+ $bicolour=0;
+ label=305;break;
+ case 304:
+ var $2043=$colour1;
+ var $2044=$x;
+ var $2045=$line;
+ var $2046=(($2045+($2044<<1))|0);
+ HEAP16[(($2046)>>1)]=$2043;
+ $bicolour=1;
+ var $2047=$count;
+ var $2048=((($2047)+(1))|0);
+ $count=$2048;
+ label=305;break;
+ case 305:
+ var $2050=$count;
+ var $2051=((($2050)-(1))|0);
+ $count=$2051;
+ var $2052=$x;
+ var $2053=((($2052)+(1))|0);
+ $x=$2053;
+ var $2054=$bicolour;
+ var $2055=($2054|0)!=0;
+ if($2055){label=306;break;}else{label=307;break;}
+ case 306:
+ var $2057=$colour2;
+ var $2058=$x;
+ var $2059=$line;
+ var $2060=(($2059+($2058<<1))|0);
+ HEAP16[(($2060)>>1)]=$2057;
+ $bicolour=0;
+ label=308;break;
+ case 307:
+ var $2062=$colour1;
+ var $2063=$x;
+ var $2064=$line;
+ var $2065=(($2064+($2063<<1))|0);
+ HEAP16[(($2065)>>1)]=$2062;
+ $bicolour=1;
+ var $2066=$count;
+ var $2067=((($2066)+(1))|0);
+ $count=$2067;
+ label=308;break;
+ case 308:
+ var $2069=$count;
+ var $2070=((($2069)-(1))|0);
+ $count=$2070;
+ var $2071=$x;
+ var $2072=((($2071)+(1))|0);
+ $x=$2072;
+ var $2073=$bicolour;
+ var $2074=($2073|0)!=0;
+ if($2074){label=309;break;}else{label=310;break;}
+ case 309:
+ var $2076=$colour2;
+ var $2077=$x;
+ var $2078=$line;
+ var $2079=(($2078+($2077<<1))|0);
+ HEAP16[(($2079)>>1)]=$2076;
+ $bicolour=0;
+ label=311;break;
+ case 310:
+ var $2081=$colour1;
+ var $2082=$x;
+ var $2083=$line;
+ var $2084=(($2083+($2082<<1))|0);
+ HEAP16[(($2084)>>1)]=$2081;
+ $bicolour=1;
+ var $2085=$count;
+ var $2086=((($2085)+(1))|0);
+ $count=$2086;
+ label=311;break;
+ case 311:
+ var $2088=$count;
+ var $2089=((($2088)-(1))|0);
+ $count=$2089;
+ var $2090=$x;
+ var $2091=((($2090)+(1))|0);
+ $x=$2091;
+ label=284;break;
+ case 312:
+ label=313;break;
+ case 313:
+ var $2094=$count;
+ var $2095=($2094|0)>0;
+ if($2095){label=314;break;}else{var $2101=0;label=315;break;}
+ case 314:
+ var $2097=$x;
+ var $2098=$3;
+ var $2099=($2097|0)<($2098|0);
+ var $2101=$2099;label=315;break;
+ case 315:
+ var $2101;
+ if($2101){label=316;break;}else{label=320;break;}
+ case 316:
+ var $2103=$bicolour;
+ var $2104=($2103|0)!=0;
+ if($2104){label=317;break;}else{label=318;break;}
+ case 317:
+ var $2106=$colour2;
+ var $2107=$x;
+ var $2108=$line;
+ var $2109=(($2108+($2107<<1))|0);
+ HEAP16[(($2109)>>1)]=$2106;
+ $bicolour=0;
+ label=319;break;
+ case 318:
+ var $2111=$colour1;
+ var $2112=$x;
+ var $2113=$line;
+ var $2114=(($2113+($2112<<1))|0);
+ HEAP16[(($2114)>>1)]=$2111;
+ $bicolour=1;
+ var $2115=$count;
+ var $2116=((($2115)+(1))|0);
+ $count=$2116;
+ label=319;break;
+ case 319:
+ var $2118=$count;
+ var $2119=((($2118)-(1))|0);
+ $count=$2119;
+ var $2120=$x;
+ var $2121=((($2120)+(1))|0);
+ $x=$2121;
+ label=313;break;
+ case 320:
+ label=344;break;
+ case 321:
+ label=322;break;
+ case 322:
+ var $2125=$count;
+ var $2126=$2125&-8;
+ var $2127=($2126|0)!=0;
+ if($2127){label=323;break;}else{var $2134=0;label=324;break;}
+ case 323:
+ var $2129=$x;
+ var $2130=((($2129)+(8))|0);
+ var $2131=$3;
+ var $2132=($2130|0)<($2131|0);
+ var $2134=$2132;label=324;break;
+ case 324:
+ var $2134;
+ if($2134){label=325;break;}else{label=326;break;}
+ case 325:
+ var $2136=$x;
+ var $2137=$line;
+ var $2138=(($2137+($2136<<1))|0);
+ HEAP16[(($2138)>>1)]=-1;
+ var $2139=$count;
+ var $2140=((($2139)-(1))|0);
+ $count=$2140;
+ var $2141=$x;
+ var $2142=((($2141)+(1))|0);
+ $x=$2142;
+ var $2143=$x;
+ var $2144=$line;
+ var $2145=(($2144+($2143<<1))|0);
+ HEAP16[(($2145)>>1)]=-1;
+ var $2146=$count;
+ var $2147=((($2146)-(1))|0);
+ $count=$2147;
+ var $2148=$x;
+ var $2149=((($2148)+(1))|0);
+ $x=$2149;
+ var $2150=$x;
+ var $2151=$line;
+ var $2152=(($2151+($2150<<1))|0);
+ HEAP16[(($2152)>>1)]=-1;
+ var $2153=$count;
+ var $2154=((($2153)-(1))|0);
+ $count=$2154;
+ var $2155=$x;
+ var $2156=((($2155)+(1))|0);
+ $x=$2156;
+ var $2157=$x;
+ var $2158=$line;
+ var $2159=(($2158+($2157<<1))|0);
+ HEAP16[(($2159)>>1)]=-1;
+ var $2160=$count;
+ var $2161=((($2160)-(1))|0);
+ $count=$2161;
+ var $2162=$x;
+ var $2163=((($2162)+(1))|0);
+ $x=$2163;
+ var $2164=$x;
+ var $2165=$line;
+ var $2166=(($2165+($2164<<1))|0);
+ HEAP16[(($2166)>>1)]=-1;
+ var $2167=$count;
+ var $2168=((($2167)-(1))|0);
+ $count=$2168;
+ var $2169=$x;
+ var $2170=((($2169)+(1))|0);
+ $x=$2170;
+ var $2171=$x;
+ var $2172=$line;
+ var $2173=(($2172+($2171<<1))|0);
+ HEAP16[(($2173)>>1)]=-1;
+ var $2174=$count;
+ var $2175=((($2174)-(1))|0);
+ $count=$2175;
+ var $2176=$x;
+ var $2177=((($2176)+(1))|0);
+ $x=$2177;
+ var $2178=$x;
+ var $2179=$line;
+ var $2180=(($2179+($2178<<1))|0);
+ HEAP16[(($2180)>>1)]=-1;
+ var $2181=$count;
+ var $2182=((($2181)-(1))|0);
+ $count=$2182;
+ var $2183=$x;
+ var $2184=((($2183)+(1))|0);
+ $x=$2184;
+ var $2185=$x;
+ var $2186=$line;
+ var $2187=(($2186+($2185<<1))|0);
+ HEAP16[(($2187)>>1)]=-1;
+ var $2188=$count;
+ var $2189=((($2188)-(1))|0);
+ $count=$2189;
+ var $2190=$x;
+ var $2191=((($2190)+(1))|0);
+ $x=$2191;
+ label=322;break;
+ case 326:
+ label=327;break;
+ case 327:
+ var $2194=$count;
+ var $2195=($2194|0)>0;
+ if($2195){label=328;break;}else{var $2201=0;label=329;break;}
+ case 328:
+ var $2197=$x;
+ var $2198=$3;
+ var $2199=($2197|0)<($2198|0);
+ var $2201=$2199;label=329;break;
+ case 329:
+ var $2201;
+ if($2201){label=330;break;}else{label=331;break;}
+ case 330:
+ var $2203=$x;
+ var $2204=$line;
+ var $2205=(($2204+($2203<<1))|0);
+ HEAP16[(($2205)>>1)]=-1;
+ var $2206=$count;
+ var $2207=((($2206)-(1))|0);
+ $count=$2207;
+ var $2208=$x;
+ var $2209=((($2208)+(1))|0);
+ $x=$2209;
+ label=327;break;
+ case 331:
+ label=344;break;
+ case 332:
+ label=333;break;
+ case 333:
+ var $2213=$count;
+ var $2214=$2213&-8;
+ var $2215=($2214|0)!=0;
+ if($2215){label=334;break;}else{var $2222=0;label=335;break;}
+ case 334:
+ var $2217=$x;
+ var $2218=((($2217)+(8))|0);
+ var $2219=$3;
+ var $2220=($2218|0)<($2219|0);
+ var $2222=$2220;label=335;break;
+ case 335:
+ var $2222;
+ if($2222){label=336;break;}else{label=337;break;}
+ case 336:
+ var $2224=$x;
+ var $2225=$line;
+ var $2226=(($2225+($2224<<1))|0);
+ HEAP16[(($2226)>>1)]=0;
+ var $2227=$count;
+ var $2228=((($2227)-(1))|0);
+ $count=$2228;
+ var $2229=$x;
+ var $2230=((($2229)+(1))|0);
+ $x=$2230;
+ var $2231=$x;
+ var $2232=$line;
+ var $2233=(($2232+($2231<<1))|0);
+ HEAP16[(($2233)>>1)]=0;
+ var $2234=$count;
+ var $2235=((($2234)-(1))|0);
+ $count=$2235;
+ var $2236=$x;
+ var $2237=((($2236)+(1))|0);
+ $x=$2237;
+ var $2238=$x;
+ var $2239=$line;
+ var $2240=(($2239+($2238<<1))|0);
+ HEAP16[(($2240)>>1)]=0;
+ var $2241=$count;
+ var $2242=((($2241)-(1))|0);
+ $count=$2242;
+ var $2243=$x;
+ var $2244=((($2243)+(1))|0);
+ $x=$2244;
+ var $2245=$x;
+ var $2246=$line;
+ var $2247=(($2246+($2245<<1))|0);
+ HEAP16[(($2247)>>1)]=0;
+ var $2248=$count;
+ var $2249=((($2248)-(1))|0);
+ $count=$2249;
+ var $2250=$x;
+ var $2251=((($2250)+(1))|0);
+ $x=$2251;
+ var $2252=$x;
+ var $2253=$line;
+ var $2254=(($2253+($2252<<1))|0);
+ HEAP16[(($2254)>>1)]=0;
+ var $2255=$count;
+ var $2256=((($2255)-(1))|0);
+ $count=$2256;
+ var $2257=$x;
+ var $2258=((($2257)+(1))|0);
+ $x=$2258;
+ var $2259=$x;
+ var $2260=$line;
+ var $2261=(($2260+($2259<<1))|0);
+ HEAP16[(($2261)>>1)]=0;
+ var $2262=$count;
+ var $2263=((($2262)-(1))|0);
+ $count=$2263;
+ var $2264=$x;
+ var $2265=((($2264)+(1))|0);
+ $x=$2265;
+ var $2266=$x;
+ var $2267=$line;
+ var $2268=(($2267+($2266<<1))|0);
+ HEAP16[(($2268)>>1)]=0;
+ var $2269=$count;
+ var $2270=((($2269)-(1))|0);
+ $count=$2270;
+ var $2271=$x;
+ var $2272=((($2271)+(1))|0);
+ $x=$2272;
+ var $2273=$x;
+ var $2274=$line;
+ var $2275=(($2274+($2273<<1))|0);
+ HEAP16[(($2275)>>1)]=0;
+ var $2276=$count;
+ var $2277=((($2276)-(1))|0);
+ $count=$2277;
+ var $2278=$x;
+ var $2279=((($2278)+(1))|0);
+ $x=$2279;
+ label=333;break;
+ case 337:
+ label=338;break;
+ case 338:
+ var $2282=$count;
+ var $2283=($2282|0)>0;
+ if($2283){label=339;break;}else{var $2289=0;label=340;break;}
+ case 339:
+ var $2285=$x;
+ var $2286=$3;
+ var $2287=($2285|0)<($2286|0);
+ var $2289=$2287;label=340;break;
+ case 340:
+ var $2289;
+ if($2289){label=341;break;}else{label=342;break;}
+ case 341:
+ var $2291=$x;
+ var $2292=$line;
+ var $2293=(($2292+($2291<<1))|0);
+ HEAP16[(($2293)>>1)]=0;
+ var $2294=$count;
+ var $2295=((($2294)-(1))|0);
+ $count=$2295;
+ var $2296=$x;
+ var $2297=((($2296)+(1))|0);
+ $x=$2297;
+ label=338;break;
+ case 342:
+ label=344;break;
+ case 343:
+ $1=0;
+ label=347;break;
+ case 344:
+ label=34;break;
+ case 345:
+ label=2;break;
+ case 346:
+ $1=1;
+ label=347;break;
+ case 347:
+ var $2304=$1;
+ STACKTOP=sp;return $2304;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+
+
+function _bitmap_decompress_16($output,$output_width,$output_height,$input_width,$input_height,$input,$size){
+ var label=0;
+ var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1;
+ var $2;
+ var $3;
+ var $4;
+ var $5;
+ var $6;
+ var $7;
+ var $temp;
+ var $rv;
+ var $y;
+ var $x;
+ var $a;
+ var $r;
+ var $g;
+ var $b;
+ $1=$output;
+ $2=$output_width;
+ $3=$output_height;
+ $4=$input_width;
+ $5=$input_height;
+ $6=$input;
+ $7=$size;
+ var $8=$4;
+ var $9=$5;
+ var $10=(Math_imul($8,$9)|0);
+ var $11=($10<<1);
+ var $12=_malloc($11);
+ $temp=$12;
+ var $13=$temp;
+ var $14=$4;
+ var $15=$5;
+ var $16=$6;
+ var $17=$7;
+ var $18=_bitmap_decompress2($13,$14,$15,$16,$17);
+ $rv=$18;
+ $y=0;
+ label=2;break;
+ case 2:
+ var $20=$y;
+ var $21=$3;
+ var $22=($20|0)<($21|0);
+ if($22){label=3;break;}else{label=9;break;}
+ case 3:
+ $x=0;
+ label=4;break;
+ case 4:
+ var $25=$x;
+ var $26=$2;
+ var $27=($25|0)<($26|0);
+ if($27){label=5;break;}else{label=7;break;}
+ case 5:
+ var $29=$y;
+ var $30=$4;
+ var $31=(Math_imul($29,$30)|0);
+ var $32=$x;
+ var $33=((($31)+($32))|0);
+ var $34=$temp;
+ var $35=$34;
+ var $36=(($35+($33<<1))|0);
+ var $37=HEAP16[(($36)>>1)];
+ $a=$37;
+ var $38=$a;
+ var $39=($38&65535);
+ var $40=$39&63488;
+ var $41=$40>>11;
+ var $42=(($41)&255);
+ $r=$42;
+ var $43=$a;
+ var $44=($43&65535);
+ var $45=$44&2016;
+ var $46=$45>>5;
+ var $47=(($46)&255);
+ $g=$47;
+ var $48=$a;
+ var $49=($48&65535);
+ var $50=$49&31;
+ var $51=(($50)&255);
+ $b=$51;
+ var $52=$r;
+ var $53=($52&255);
+ var $54=((($53)*(255))&-1);
+ var $55=(((($54|0))/(31))&-1);
+ var $56=(($55)&255);
+ $r=$56;
+ var $57=$g;
+ var $58=($57&255);
+ var $59=((($58)*(255))&-1);
+ var $60=(((($59|0))/(63))&-1);
+ var $61=(($60)&255);
+ $g=$61;
+ var $62=$b;
+ var $63=($62&255);
+ var $64=((($63)*(255))&-1);
+ var $65=(((($64|0))/(31))&-1);
+ var $66=(($65)&255);
+ $b=$66;
+ var $67=$b;
+ var $68=($67&255);
+ var $69=$68<<16;
+ var $70=-16777216|$69;
+ var $71=$g;
+ var $72=($71&255);
+ var $73=$72<<8;
+ var $74=$70|$73;
+ var $75=$r;
+ var $76=($75&255);
+ var $77=$74|$76;
+ var $78=$y;
+ var $79=$2;
+ var $80=(Math_imul($78,$79)|0);
+ var $81=$x;
+ var $82=((($80)+($81))|0);
+ var $83=$1;
+ var $84=$83;
+ var $85=(($84+($82<<2))|0);
+ HEAP32[(($85)>>2)]=$77;
+ label=6;break;
+ case 6:
+ var $87=$x;
+ var $88=((($87)+(1))|0);
+ $x=$88;
+ label=4;break;
+ case 7:
+ label=8;break;
+ case 8:
+ var $91=$y;
+ var $92=((($91)+(1))|0);
+ $y=$92;
+ label=2;break;
+ case 9:
+ var $94=$temp;
+ _free($94);
+ var $95=$rv;
+ STACKTOP=sp;return $95;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+Module["_bitmap_decompress_16"] = _bitmap_decompress_16;
+
+function _bitmap_decompress_24($output,$output_width,$output_height,$input_width,$input_height,$input,$size){
+ var label=0;
+ var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1;
+ var $2;
+ var $3;
+ var $4;
+ var $5;
+ var $6;
+ var $7;
+ var $temp;
+ var $rv;
+ var $y;
+ var $x;
+ var $r;
+ var $g;
+ var $b;
+ $1=$output;
+ $2=$output_width;
+ $3=$output_height;
+ $4=$input_width;
+ $5=$input_height;
+ $6=$input;
+ $7=$size;
+ var $8=$4;
+ var $9=$5;
+ var $10=(Math_imul($8,$9)|0);
+ var $11=((($10)*(3))&-1);
+ var $12=_malloc($11);
+ $temp=$12;
+ var $13=$temp;
+ var $14=$4;
+ var $15=$5;
+ var $16=$6;
+ var $17=$7;
+ var $18=_bitmap_decompress3($13,$14,$15,$16,$17);
+ $rv=$18;
+ $y=0;
+ label=2;break;
+ case 2:
+ var $20=$y;
+ var $21=$3;
+ var $22=($20|0)<($21|0);
+ if($22){label=3;break;}else{label=9;break;}
+ case 3:
+ $x=0;
+ label=4;break;
+ case 4:
+ var $25=$x;
+ var $26=$2;
+ var $27=($25|0)<($26|0);
+ if($27){label=5;break;}else{label=7;break;}
+ case 5:
+ var $29=$y;
+ var $30=$4;
+ var $31=(Math_imul($29,$30)|0);
+ var $32=$x;
+ var $33=((($31)+($32))|0);
+ var $34=((($33)*(3))&-1);
+ var $35=$temp;
+ var $36=(($35+$34)|0);
+ var $37=HEAP8[($36)];
+ $r=$37;
+ var $38=$y;
+ var $39=$4;
+ var $40=(Math_imul($38,$39)|0);
+ var $41=$x;
+ var $42=((($40)+($41))|0);
+ var $43=((($42)*(3))&-1);
+ var $44=((($43)+(1))|0);
+ var $45=$temp;
+ var $46=(($45+$44)|0);
+ var $47=HEAP8[($46)];
+ $g=$47;
+ var $48=$y;
+ var $49=$4;
+ var $50=(Math_imul($48,$49)|0);
+ var $51=$x;
+ var $52=((($50)+($51))|0);
+ var $53=((($52)*(3))&-1);
+ var $54=((($53)+(2))|0);
+ var $55=$temp;
+ var $56=(($55+$54)|0);
+ var $57=HEAP8[($56)];
+ $b=$57;
+ var $58=$b;
+ var $59=($58&255);
+ var $60=$59<<16;
+ var $61=-16777216|$60;
+ var $62=$g;
+ var $63=($62&255);
+ var $64=$63<<8;
+ var $65=$61|$64;
+ var $66=$r;
+ var $67=($66&255);
+ var $68=$65|$67;
+ var $69=$y;
+ var $70=$2;
+ var $71=(Math_imul($69,$70)|0);
+ var $72=$x;
+ var $73=((($71)+($72))|0);
+ var $74=$1;
+ var $75=$74;
+ var $76=(($75+($73<<2))|0);
+ HEAP32[(($76)>>2)]=$68;
+ label=6;break;
+ case 6:
+ var $78=$x;
+ var $79=((($78)+(1))|0);
+ $x=$79;
+ label=4;break;
+ case 7:
+ label=8;break;
+ case 8:
+ var $82=$y;
+ var $83=((($82)+(1))|0);
+ $y=$83;
+ label=2;break;
+ case 9:
+ var $85=$temp;
+ _free($85);
+ var $86=$rv;
+ STACKTOP=sp;return $86;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+Module["_bitmap_decompress_24"] = _bitmap_decompress_24;
+
+function _bitmap_decompress3($output,$width,$height,$input,$size){
+ var label=0;
+ var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1;
+ var $2;
+ var $3;
+ var $4;
+ var $5;
+ var $6;
+ var $end;
+ var $prevline;
+ var $line;
+ var $opcode;
+ var $count;
+ var $offset;
+ var $isfillormix;
+ var $x;
+ var $lastopcode;
+ var $insertmix;
+ var $bicolour;
+ var $code;
+ var $colour1=sp;
+ var $colour2=(sp)+(8);
+ var $mixmask;
+ var $mask;
+ var $mix=(sp)+(16);
+ var $fom_mask;
+ $2=$output;
+ $3=$width;
+ $4=$height;
+ $5=$input;
+ $6=$size;
+ var $7=$5;
+ var $8=$6;
+ var $9=(($7+$8)|0);
+ $end=$9;
+ $prevline=0;
+ $line=0;
+ var $10=$3;
+ $x=$10;
+ $lastopcode=-1;
+ $insertmix=0;
+ $bicolour=0;
+ var $11=$colour1;
+ HEAP8[($11)]=0; HEAP8[((($11)+(1))|0)]=0; HEAP8[((($11)+(2))|0)]=0;
+ var $12=$colour2;
+ HEAP8[($12)]=0; HEAP8[((($12)+(1))|0)]=0; HEAP8[((($12)+(2))|0)]=0;
+ $mask=0;
+ var $13=$mix;
+ assert(3 % 1 === 0);HEAP8[($13)]=HEAP8[(8)];HEAP8[((($13)+(1))|0)]=HEAP8[(9)];HEAP8[((($13)+(2))|0)]=HEAP8[(10)];
+ $fom_mask=0;
+ label=2;break;
+ case 2:
+ var $15=$5;
+ var $16=$end;
+ var $17=($15>>>0)<($16>>>0);
+ if($17){label=3;break;}else{label=346;break;}
+ case 3:
+ $fom_mask=0;
+ var $19=$5;
+ var $20=(($19+1)|0);
+ $5=$20;
+ var $21=HEAP8[($19)];
+ $code=$21;
+ var $22=$code;
+ var $23=($22&255);
+ var $24=$23>>4;
+ $opcode=$24;
+ var $25=$opcode;
+ if(($25|0)==12|($25|0)==13|($25|0)==14){ label=4;break;}else if(($25|0)==15){ label=5;break;}else{label=9;break;}
+ case 4:
+ var $27=$opcode;
+ var $28=((($27)-(6))|0);
+ $opcode=$28;
+ var $29=$code;
+ var $30=($29&255);
+ var $31=$30&15;
+ $count=$31;
+ $offset=16;
+ label=10;break;
+ case 5:
+ var $33=$code;
+ var $34=($33&255);
+ var $35=$34&15;
+ $opcode=$35;
+ var $36=$opcode;
+ var $37=($36|0)<9;
+ if($37){label=6;break;}else{label=7;break;}
+ case 6:
+ var $39=$5;
+ var $40=(($39+1)|0);
+ $5=$40;
+ var $41=HEAP8[($39)];
+ var $42=($41&255);
+ $count=$42;
+ var $43=$5;
+ var $44=(($43+1)|0);
+ $5=$44;
+ var $45=HEAP8[($43)];
+ var $46=($45&255);
+ var $47=$46<<8;
+ var $48=$count;
+ var $49=$48|$47;
+ $count=$49;
+ label=8;break;
+ case 7:
+ var $51=$opcode;
+ var $52=($51|0)<11;
+ var $53=($52?8:1);
+ $count=$53;
+ label=8;break;
+ case 8:
+ $offset=0;
+ label=10;break;
+ case 9:
+ var $56=$opcode;
+ var $57=$56>>1;
+ $opcode=$57;
+ var $58=$code;
+ var $59=($58&255);
+ var $60=$59&31;
+ $count=$60;
+ $offset=32;
+ label=10;break;
+ case 10:
+ var $62=$offset;
+ var $63=($62|0)!=0;
+ if($63){label=11;break;}else{label=22;break;}
+ case 11:
+ var $65=$opcode;
+ var $66=($65|0)==2;
+ if($66){var $71=1;label=13;break;}else{label=12;break;}
+ case 12:
+ var $68=$opcode;
+ var $69=($68|0)==7;
+ var $71=$69;label=13;break;
+ case 13:
+ var $71;
+ var $72=($71&1);
+ $isfillormix=$72;
+ var $73=$count;
+ var $74=($73|0)==0;
+ if($74){label=14;break;}else{label=18;break;}
+ case 14:
+ var $76=$isfillormix;
+ var $77=($76|0)!=0;
+ if($77){label=15;break;}else{label=16;break;}
+ case 15:
+ var $79=$5;
+ var $80=(($79+1)|0);
+ $5=$80;
+ var $81=HEAP8[($79)];
+ var $82=($81&255);
+ var $83=((($82)+(1))|0);
+ $count=$83;
+ label=17;break;
+ case 16:
+ var $85=$5;
+ var $86=(($85+1)|0);
+ $5=$86;
+ var $87=HEAP8[($85)];
+ var $88=($87&255);
+ var $89=$offset;
+ var $90=((($88)+($89))|0);
+ $count=$90;
+ label=17;break;
+ case 17:
+ label=21;break;
+ case 18:
+ var $93=$isfillormix;
+ var $94=($93|0)!=0;
+ if($94){label=19;break;}else{label=20;break;}
+ case 19:
+ var $96=$count;
+ var $97=$96<<3;
+ $count=$97;
+ label=20;break;
+ case 20:
+ label=21;break;
+ case 21:
+ label=22;break;
+ case 22:
+ var $101=$opcode;
+ switch(($101|0)){case 0:{ label=23;break;}case 8:{ label=28;break;}case 3:{ label=29;break;}case 6:case 7:{ label=30;break;}case 9:{ label=31;break;}case 10:{ label=32;break;}default:{label=33;break;}}break;
+ case 23:
+ var $103=$lastopcode;
+ var $104=$opcode;
+ var $105=($103|0)==($104|0);
+ if($105){label=24;break;}else{label=27;break;}
+ case 24:
+ var $107=$x;
+ var $108=$3;
+ var $109=($107|0)==($108|0);
+ if($109){label=25;break;}else{label=26;break;}
+ case 25:
+ var $111=$prevline;
+ var $112=($111|0)==0;
+ if($112){label=27;break;}else{label=26;break;}
+ case 26:
+ $insertmix=1;
+ label=27;break;
+ case 27:
+ label=33;break;
+ case 28:
+ var $116=$5;
+ var $117=(($116+1)|0);
+ $5=$117;
+ var $118=HEAP8[($116)];
+ var $119=(($colour1)|0);
+ HEAP8[($119)]=$118;
+ var $120=$5;
+ var $121=(($120+1)|0);
+ $5=$121;
+ var $122=HEAP8[($120)];
+ var $123=(($colour1+1)|0);
+ HEAP8[($123)]=$122;
+ var $124=$5;
+ var $125=(($124+1)|0);
+ $5=$125;
+ var $126=HEAP8[($124)];
+ var $127=(($colour1+2)|0);
+ HEAP8[($127)]=$126;
+ label=29;break;
+ case 29:
+ var $129=$5;
+ var $130=(($129+1)|0);
+ $5=$130;
+ var $131=HEAP8[($129)];
+ var $132=(($colour2)|0);
+ HEAP8[($132)]=$131;
+ var $133=$5;
+ var $134=(($133+1)|0);
+ $5=$134;
+ var $135=HEAP8[($133)];
+ var $136=(($colour2+1)|0);
+ HEAP8[($136)]=$135;
+ var $137=$5;
+ var $138=(($137+1)|0);
+ $5=$138;
+ var $139=HEAP8[($137)];
+ var $140=(($colour2+2)|0);
+ HEAP8[($140)]=$139;
+ label=33;break;
+ case 30:
+ var $142=$5;
+ var $143=(($142+1)|0);
+ $5=$143;
+ var $144=HEAP8[($142)];
+ var $145=(($mix)|0);
+ HEAP8[($145)]=$144;
+ var $146=$5;
+ var $147=(($146+1)|0);
+ $5=$147;
+ var $148=HEAP8[($146)];
+ var $149=(($mix+1)|0);
+ HEAP8[($149)]=$148;
+ var $150=$5;
+ var $151=(($150+1)|0);
+ $5=$151;
+ var $152=HEAP8[($150)];
+ var $153=(($mix+2)|0);
+ HEAP8[($153)]=$152;
+ var $154=$opcode;
+ var $155=((($154)-(5))|0);
+ $opcode=$155;
+ label=33;break;
+ case 31:
+ $mask=3;
+ $opcode=2;
+ $fom_mask=3;
+ label=33;break;
+ case 32:
+ $mask=5;
+ $opcode=2;
+ $fom_mask=5;
+ label=33;break;
+ case 33:
+ var $159=$opcode;
+ $lastopcode=$159;
+ $mixmask=0;
+ label=34;break;
+ case 34:
+ var $161=$count;
+ var $162=($161|0)>0;
+ if($162){label=35;break;}else{label=345;break;}
+ case 35:
+ var $164=$x;
+ var $165=$3;
+ var $166=($164|0)>=($165|0);
+ if($166){label=36;break;}else{label=39;break;}
+ case 36:
+ var $168=$4;
+ var $169=($168|0)<=0;
+ if($169){label=37;break;}else{label=38;break;}
+ case 37:
+ $1=0;
+ label=347;break;
+ case 38:
+ $x=0;
+ var $172=$4;
+ var $173=((($172)-(1))|0);
+ $4=$173;
+ var $174=$line;
+ $prevline=$174;
+ var $175=$2;
+ var $176=$4;
+ var $177=$3;
+ var $178=((($177)*(3))&-1);
+ var $179=(Math_imul($176,$178)|0);
+ var $180=(($175+$179)|0);
+ $line=$180;
+ label=39;break;
+ case 39:
+ var $182=$opcode;
+ switch(($182|0)){case 3:{ label=261;break;}case 4:{ label=272;break;}case 8:{ label=283;break;}case 13:{ label=321;break;}case 14:{ label=332;break;}case 0:{ label=40;break;}case 1:{ label=69;break;}case 2:{ label=93;break;}default:{label=343;break;}}break;
+ case 40:
+ var $184=$insertmix;
+ var $185=($184|0)!=0;
+ if($185){label=41;break;}else{label=45;break;}
+ case 41:
+ var $187=$prevline;
+ var $188=($187|0)==0;
+ if($188){label=42;break;}else{label=43;break;}
+ case 42:
+ var $190=(($mix)|0);
+ var $191=HEAP8[($190)];
+ var $192=$x;
+ var $193=((($192)*(3))&-1);
+ var $194=$line;
+ var $195=(($194+$193)|0);
+ HEAP8[($195)]=$191;
+ var $196=(($mix+1)|0);
+ var $197=HEAP8[($196)];
+ var $198=$x;
+ var $199=((($198)*(3))&-1);
+ var $200=((($199)+(1))|0);
+ var $201=$line;
+ var $202=(($201+$200)|0);
+ HEAP8[($202)]=$197;
+ var $203=(($mix+2)|0);
+ var $204=HEAP8[($203)];
+ var $205=$x;
+ var $206=((($205)*(3))&-1);
+ var $207=((($206)+(2))|0);
+ var $208=$line;
+ var $209=(($208+$207)|0);
+ HEAP8[($209)]=$204;
+ label=44;break;
+ case 43:
+ var $211=$x;
+ var $212=((($211)*(3))&-1);
+ var $213=$prevline;
+ var $214=(($213+$212)|0);
+ var $215=HEAP8[($214)];
+ var $216=($215&255);
+ var $217=(($mix)|0);
+ var $218=HEAP8[($217)];
+ var $219=($218&255);
+ var $220=$216^$219;
+ var $221=(($220)&255);
+ var $222=$x;
+ var $223=((($222)*(3))&-1);
+ var $224=$line;
+ var $225=(($224+$223)|0);
+ HEAP8[($225)]=$221;
+ var $226=$x;
+ var $227=((($226)*(3))&-1);
+ var $228=((($227)+(1))|0);
+ var $229=$prevline;
+ var $230=(($229+$228)|0);
+ var $231=HEAP8[($230)];
+ var $232=($231&255);
+ var $233=(($mix+1)|0);
+ var $234=HEAP8[($233)];
+ var $235=($234&255);
+ var $236=$232^$235;
+ var $237=(($236)&255);
+ var $238=$x;
+ var $239=((($238)*(3))&-1);
+ var $240=((($239)+(1))|0);
+ var $241=$line;
+ var $242=(($241+$240)|0);
+ HEAP8[($242)]=$237;
+ var $243=$x;
+ var $244=((($243)*(3))&-1);
+ var $245=((($244)+(2))|0);
+ var $246=$prevline;
+ var $247=(($246+$245)|0);
+ var $248=HEAP8[($247)];
+ var $249=($248&255);
+ var $250=(($mix+2)|0);
+ var $251=HEAP8[($250)];
+ var $252=($251&255);
+ var $253=$249^$252;
+ var $254=(($253)&255);
+ var $255=$x;
+ var $256=((($255)*(3))&-1);
+ var $257=((($256)+(2))|0);
+ var $258=$line;
+ var $259=(($258+$257)|0);
+ HEAP8[($259)]=$254;
+ label=44;break;
+ case 44:
+ $insertmix=0;
+ var $261=$count;
+ var $262=((($261)-(1))|0);
+ $count=$262;
+ var $263=$x;
+ var $264=((($263)+(1))|0);
+ $x=$264;
+ label=45;break;
+ case 45:
+ var $266=$prevline;
+ var $267=($266|0)==0;
+ if($267){label=46;break;}else{label=57;break;}
+ case 46:
+ label=47;break;
+ case 47:
+ var $270=$count;
+ var $271=$270&-8;
+ var $272=($271|0)!=0;
+ if($272){label=48;break;}else{var $279=0;label=49;break;}
+ case 48:
+ var $274=$x;
+ var $275=((($274)+(8))|0);
+ var $276=$3;
+ var $277=($275|0)<($276|0);
+ var $279=$277;label=49;break;
+ case 49:
+ var $279;
+ if($279){label=50;break;}else{label=51;break;}
+ case 50:
+ var $281=$x;
+ var $282=((($281)*(3))&-1);
+ var $283=$line;
+ var $284=(($283+$282)|0);
+ HEAP8[($284)]=0;
+ var $285=$x;
+ var $286=((($285)*(3))&-1);
+ var $287=((($286)+(1))|0);
+ var $288=$line;
+ var $289=(($288+$287)|0);
+ HEAP8[($289)]=0;
+ var $290=$x;
+ var $291=((($290)*(3))&-1);
+ var $292=((($291)+(2))|0);
+ var $293=$line;
+ var $294=(($293+$292)|0);
+ HEAP8[($294)]=0;
+ var $295=$count;
+ var $296=((($295)-(1))|0);
+ $count=$296;
+ var $297=$x;
+ var $298=((($297)+(1))|0);
+ $x=$298;
+ var $299=$x;
+ var $300=((($299)*(3))&-1);
+ var $301=$line;
+ var $302=(($301+$300)|0);
+ HEAP8[($302)]=0;
+ var $303=$x;
+ var $304=((($303)*(3))&-1);
+ var $305=((($304)+(1))|0);
+ var $306=$line;
+ var $307=(($306+$305)|0);
+ HEAP8[($307)]=0;
+ var $308=$x;
+ var $309=((($308)*(3))&-1);
+ var $310=((($309)+(2))|0);
+ var $311=$line;
+ var $312=(($311+$310)|0);
+ HEAP8[($312)]=0;
+ var $313=$count;
+ var $314=((($313)-(1))|0);
+ $count=$314;
+ var $315=$x;
+ var $316=((($315)+(1))|0);
+ $x=$316;
+ var $317=$x;
+ var $318=((($317)*(3))&-1);
+ var $319=$line;
+ var $320=(($319+$318)|0);
+ HEAP8[($320)]=0;
+ var $321=$x;
+ var $322=((($321)*(3))&-1);
+ var $323=((($322)+(1))|0);
+ var $324=$line;
+ var $325=(($324+$323)|0);
+ HEAP8[($325)]=0;
+ var $326=$x;
+ var $327=((($326)*(3))&-1);
+ var $328=((($327)+(2))|0);
+ var $329=$line;
+ var $330=(($329+$328)|0);
+ HEAP8[($330)]=0;
+ var $331=$count;
+ var $332=((($331)-(1))|0);
+ $count=$332;
+ var $333=$x;
+ var $334=((($333)+(1))|0);
+ $x=$334;
+ var $335=$x;
+ var $336=((($335)*(3))&-1);
+ var $337=$line;
+ var $338=(($337+$336)|0);
+ HEAP8[($338)]=0;
+ var $339=$x;
+ var $340=((($339)*(3))&-1);
+ var $341=((($340)+(1))|0);
+ var $342=$line;
+ var $343=(($342+$341)|0);
+ HEAP8[($343)]=0;
+ var $344=$x;
+ var $345=((($344)*(3))&-1);
+ var $346=((($345)+(2))|0);
+ var $347=$line;
+ var $348=(($347+$346)|0);
+ HEAP8[($348)]=0;
+ var $349=$count;
+ var $350=((($349)-(1))|0);
+ $count=$350;
+ var $351=$x;
+ var $352=((($351)+(1))|0);
+ $x=$352;
+ var $353=$x;
+ var $354=((($353)*(3))&-1);
+ var $355=$line;
+ var $356=(($355+$354)|0);
+ HEAP8[($356)]=0;
+ var $357=$x;
+ var $358=((($357)*(3))&-1);
+ var $359=((($358)+(1))|0);
+ var $360=$line;
+ var $361=(($360+$359)|0);
+ HEAP8[($361)]=0;
+ var $362=$x;
+ var $363=((($362)*(3))&-1);
+ var $364=((($363)+(2))|0);
+ var $365=$line;
+ var $366=(($365+$364)|0);
+ HEAP8[($366)]=0;
+ var $367=$count;
+ var $368=((($367)-(1))|0);
+ $count=$368;
+ var $369=$x;
+ var $370=((($369)+(1))|0);
+ $x=$370;
+ var $371=$x;
+ var $372=((($371)*(3))&-1);
+ var $373=$line;
+ var $374=(($373+$372)|0);
+ HEAP8[($374)]=0;
+ var $375=$x;
+ var $376=((($375)*(3))&-1);
+ var $377=((($376)+(1))|0);
+ var $378=$line;
+ var $379=(($378+$377)|0);
+ HEAP8[($379)]=0;
+ var $380=$x;
+ var $381=((($380)*(3))&-1);
+ var $382=((($381)+(2))|0);
+ var $383=$line;
+ var $384=(($383+$382)|0);
+ HEAP8[($384)]=0;
+ var $385=$count;
+ var $386=((($385)-(1))|0);
+ $count=$386;
+ var $387=$x;
+ var $388=((($387)+(1))|0);
+ $x=$388;
+ var $389=$x;
+ var $390=((($389)*(3))&-1);
+ var $391=$line;
+ var $392=(($391+$390)|0);
+ HEAP8[($392)]=0;
+ var $393=$x;
+ var $394=((($393)*(3))&-1);
+ var $395=((($394)+(1))|0);
+ var $396=$line;
+ var $397=(($396+$395)|0);
+ HEAP8[($397)]=0;
+ var $398=$x;
+ var $399=((($398)*(3))&-1);
+ var $400=((($399)+(2))|0);
+ var $401=$line;
+ var $402=(($401+$400)|0);
+ HEAP8[($402)]=0;
+ var $403=$count;
+ var $404=((($403)-(1))|0);
+ $count=$404;
+ var $405=$x;
+ var $406=((($405)+(1))|0);
+ $x=$406;
+ var $407=$x;
+ var $408=((($407)*(3))&-1);
+ var $409=$line;
+ var $410=(($409+$408)|0);
+ HEAP8[($410)]=0;
+ var $411=$x;
+ var $412=((($411)*(3))&-1);
+ var $413=((($412)+(1))|0);
+ var $414=$line;
+ var $415=(($414+$413)|0);
+ HEAP8[($415)]=0;
+ var $416=$x;
+ var $417=((($416)*(3))&-1);
+ var $418=((($417)+(2))|0);
+ var $419=$line;
+ var $420=(($419+$418)|0);
+ HEAP8[($420)]=0;
+ var $421=$count;
+ var $422=((($421)-(1))|0);
+ $count=$422;
+ var $423=$x;
+ var $424=((($423)+(1))|0);
+ $x=$424;
+ label=47;break;
+ case 51:
+ label=52;break;
+ case 52:
+ var $427=$count;
+ var $428=($427|0)>0;
+ if($428){label=53;break;}else{var $434=0;label=54;break;}
+ case 53:
+ var $430=$x;
+ var $431=$3;
+ var $432=($430|0)<($431|0);
+ var $434=$432;label=54;break;
+ case 54:
+ var $434;
+ if($434){label=55;break;}else{label=56;break;}
+ case 55:
+ var $436=$x;
+ var $437=((($436)*(3))&-1);
+ var $438=$line;
+ var $439=(($438+$437)|0);
+ HEAP8[($439)]=0;
+ var $440=$x;
+ var $441=((($440)*(3))&-1);
+ var $442=((($441)+(1))|0);
+ var $443=$line;
+ var $444=(($443+$442)|0);
+ HEAP8[($444)]=0;
+ var $445=$x;
+ var $446=((($445)*(3))&-1);
+ var $447=((($446)+(2))|0);
+ var $448=$line;
+ var $449=(($448+$447)|0);
+ HEAP8[($449)]=0;
+ var $450=$count;
+ var $451=((($450)-(1))|0);
+ $count=$451;
+ var $452=$x;
+ var $453=((($452)+(1))|0);
+ $x=$453;
+ label=52;break;
+ case 56:
+ label=68;break;
+ case 57:
+ label=58;break;
+ case 58:
+ var $457=$count;
+ var $458=$457&-8;
+ var $459=($458|0)!=0;
+ if($459){label=59;break;}else{var $466=0;label=60;break;}
+ case 59:
+ var $461=$x;
+ var $462=((($461)+(8))|0);
+ var $463=$3;
+ var $464=($462|0)<($463|0);
+ var $466=$464;label=60;break;
+ case 60:
+ var $466;
+ if($466){label=61;break;}else{label=62;break;}
+ case 61:
+ var $468=$x;
+ var $469=((($468)*(3))&-1);
+ var $470=$prevline;
+ var $471=(($470+$469)|0);
+ var $472=HEAP8[($471)];
+ var $473=$x;
+ var $474=((($473)*(3))&-1);
+ var $475=$line;
+ var $476=(($475+$474)|0);
+ HEAP8[($476)]=$472;
+ var $477=$x;
+ var $478=((($477)*(3))&-1);
+ var $479=((($478)+(1))|0);
+ var $480=$prevline;
+ var $481=(($480+$479)|0);
+ var $482=HEAP8[($481)];
+ var $483=$x;
+ var $484=((($483)*(3))&-1);
+ var $485=((($484)+(1))|0);
+ var $486=$line;
+ var $487=(($486+$485)|0);
+ HEAP8[($487)]=$482;
+ var $488=$x;
+ var $489=((($488)*(3))&-1);
+ var $490=((($489)+(2))|0);
+ var $491=$prevline;
+ var $492=(($491+$490)|0);
+ var $493=HEAP8[($492)];
+ var $494=$x;
+ var $495=((($494)*(3))&-1);
+ var $496=((($495)+(2))|0);
+ var $497=$line;
+ var $498=(($497+$496)|0);
+ HEAP8[($498)]=$493;
+ var $499=$count;
+ var $500=((($499)-(1))|0);
+ $count=$500;
+ var $501=$x;
+ var $502=((($501)+(1))|0);
+ $x=$502;
+ var $503=$x;
+ var $504=((($503)*(3))&-1);
+ var $505=$prevline;
+ var $506=(($505+$504)|0);
+ var $507=HEAP8[($506)];
+ var $508=$x;
+ var $509=((($508)*(3))&-1);
+ var $510=$line;
+ var $511=(($510+$509)|0);
+ HEAP8[($511)]=$507;
+ var $512=$x;
+ var $513=((($512)*(3))&-1);
+ var $514=((($513)+(1))|0);
+ var $515=$prevline;
+ var $516=(($515+$514)|0);
+ var $517=HEAP8[($516)];
+ var $518=$x;
+ var $519=((($518)*(3))&-1);
+ var $520=((($519)+(1))|0);
+ var $521=$line;
+ var $522=(($521+$520)|0);
+ HEAP8[($522)]=$517;
+ var $523=$x;
+ var $524=((($523)*(3))&-1);
+ var $525=((($524)+(2))|0);
+ var $526=$prevline;
+ var $527=(($526+$525)|0);
+ var $528=HEAP8[($527)];
+ var $529=$x;
+ var $530=((($529)*(3))&-1);
+ var $531=((($530)+(2))|0);
+ var $532=$line;
+ var $533=(($532+$531)|0);
+ HEAP8[($533)]=$528;
+ var $534=$count;
+ var $535=((($534)-(1))|0);
+ $count=$535;
+ var $536=$x;
+ var $537=((($536)+(1))|0);
+ $x=$537;
+ var $538=$x;
+ var $539=((($538)*(3))&-1);
+ var $540=$prevline;
+ var $541=(($540+$539)|0);
+ var $542=HEAP8[($541)];
+ var $543=$x;
+ var $544=((($543)*(3))&-1);
+ var $545=$line;
+ var $546=(($545+$544)|0);
+ HEAP8[($546)]=$542;
+ var $547=$x;
+ var $548=((($547)*(3))&-1);
+ var $549=((($548)+(1))|0);
+ var $550=$prevline;
+ var $551=(($550+$549)|0);
+ var $552=HEAP8[($551)];
+ var $553=$x;
+ var $554=((($553)*(3))&-1);
+ var $555=((($554)+(1))|0);
+ var $556=$line;
+ var $557=(($556+$555)|0);
+ HEAP8[($557)]=$552;
+ var $558=$x;
+ var $559=((($558)*(3))&-1);
+ var $560=((($559)+(2))|0);
+ var $561=$prevline;
+ var $562=(($561+$560)|0);
+ var $563=HEAP8[($562)];
+ var $564=$x;
+ var $565=((($564)*(3))&-1);
+ var $566=((($565)+(2))|0);
+ var $567=$line;
+ var $568=(($567+$566)|0);
+ HEAP8[($568)]=$563;
+ var $569=$count;
+ var $570=((($569)-(1))|0);
+ $count=$570;
+ var $571=$x;
+ var $572=((($571)+(1))|0);
+ $x=$572;
+ var $573=$x;
+ var $574=((($573)*(3))&-1);
+ var $575=$prevline;
+ var $576=(($575+$574)|0);
+ var $577=HEAP8[($576)];
+ var $578=$x;
+ var $579=((($578)*(3))&-1);
+ var $580=$line;
+ var $581=(($580+$579)|0);
+ HEAP8[($581)]=$577;
+ var $582=$x;
+ var $583=((($582)*(3))&-1);
+ var $584=((($583)+(1))|0);
+ var $585=$prevline;
+ var $586=(($585+$584)|0);
+ var $587=HEAP8[($586)];
+ var $588=$x;
+ var $589=((($588)*(3))&-1);
+ var $590=((($589)+(1))|0);
+ var $591=$line;
+ var $592=(($591+$590)|0);
+ HEAP8[($592)]=$587;
+ var $593=$x;
+ var $594=((($593)*(3))&-1);
+ var $595=((($594)+(2))|0);
+ var $596=$prevline;
+ var $597=(($596+$595)|0);
+ var $598=HEAP8[($597)];
+ var $599=$x;
+ var $600=((($599)*(3))&-1);
+ var $601=((($600)+(2))|0);
+ var $602=$line;
+ var $603=(($602+$601)|0);
+ HEAP8[($603)]=$598;
+ var $604=$count;
+ var $605=((($604)-(1))|0);
+ $count=$605;
+ var $606=$x;
+ var $607=((($606)+(1))|0);
+ $x=$607;
+ var $608=$x;
+ var $609=((($608)*(3))&-1);
+ var $610=$prevline;
+ var $611=(($610+$609)|0);
+ var $612=HEAP8[($611)];
+ var $613=$x;
+ var $614=((($613)*(3))&-1);
+ var $615=$line;
+ var $616=(($615+$614)|0);
+ HEAP8[($616)]=$612;
+ var $617=$x;
+ var $618=((($617)*(3))&-1);
+ var $619=((($618)+(1))|0);
+ var $620=$prevline;
+ var $621=(($620+$619)|0);
+ var $622=HEAP8[($621)];
+ var $623=$x;
+ var $624=((($623)*(3))&-1);
+ var $625=((($624)+(1))|0);
+ var $626=$line;
+ var $627=(($626+$625)|0);
+ HEAP8[($627)]=$622;
+ var $628=$x;
+ var $629=((($628)*(3))&-1);
+ var $630=((($629)+(2))|0);
+ var $631=$prevline;
+ var $632=(($631+$630)|0);
+ var $633=HEAP8[($632)];
+ var $634=$x;
+ var $635=((($634)*(3))&-1);
+ var $636=((($635)+(2))|0);
+ var $637=$line;
+ var $638=(($637+$636)|0);
+ HEAP8[($638)]=$633;
+ var $639=$count;
+ var $640=((($639)-(1))|0);
+ $count=$640;
+ var $641=$x;
+ var $642=((($641)+(1))|0);
+ $x=$642;
+ var $643=$x;
+ var $644=((($643)*(3))&-1);
+ var $645=$prevline;
+ var $646=(($645+$644)|0);
+ var $647=HEAP8[($646)];
+ var $648=$x;
+ var $649=((($648)*(3))&-1);
+ var $650=$line;
+ var $651=(($650+$649)|0);
+ HEAP8[($651)]=$647;
+ var $652=$x;
+ var $653=((($652)*(3))&-1);
+ var $654=((($653)+(1))|0);
+ var $655=$prevline;
+ var $656=(($655+$654)|0);
+ var $657=HEAP8[($656)];
+ var $658=$x;
+ var $659=((($658)*(3))&-1);
+ var $660=((($659)+(1))|0);
+ var $661=$line;
+ var $662=(($661+$660)|0);
+ HEAP8[($662)]=$657;
+ var $663=$x;
+ var $664=((($663)*(3))&-1);
+ var $665=((($664)+(2))|0);
+ var $666=$prevline;
+ var $667=(($666+$665)|0);
+ var $668=HEAP8[($667)];
+ var $669=$x;
+ var $670=((($669)*(3))&-1);
+ var $671=((($670)+(2))|0);
+ var $672=$line;
+ var $673=(($672+$671)|0);
+ HEAP8[($673)]=$668;
+ var $674=$count;
+ var $675=((($674)-(1))|0);
+ $count=$675;
+ var $676=$x;
+ var $677=((($676)+(1))|0);
+ $x=$677;
+ var $678=$x;
+ var $679=((($678)*(3))&-1);
+ var $680=$prevline;
+ var $681=(($680+$679)|0);
+ var $682=HEAP8[($681)];
+ var $683=$x;
+ var $684=((($683)*(3))&-1);
+ var $685=$line;
+ var $686=(($685+$684)|0);
+ HEAP8[($686)]=$682;
+ var $687=$x;
+ var $688=((($687)*(3))&-1);
+ var $689=((($688)+(1))|0);
+ var $690=$prevline;
+ var $691=(($690+$689)|0);
+ var $692=HEAP8[($691)];
+ var $693=$x;
+ var $694=((($693)*(3))&-1);
+ var $695=((($694)+(1))|0);
+ var $696=$line;
+ var $697=(($696+$695)|0);
+ HEAP8[($697)]=$692;
+ var $698=$x;
+ var $699=((($698)*(3))&-1);
+ var $700=((($699)+(2))|0);
+ var $701=$prevline;
+ var $702=(($701+$700)|0);
+ var $703=HEAP8[($702)];
+ var $704=$x;
+ var $705=((($704)*(3))&-1);
+ var $706=((($705)+(2))|0);
+ var $707=$line;
+ var $708=(($707+$706)|0);
+ HEAP8[($708)]=$703;
+ var $709=$count;
+ var $710=((($709)-(1))|0);
+ $count=$710;
+ var $711=$x;
+ var $712=((($711)+(1))|0);
+ $x=$712;
+ var $713=$x;
+ var $714=((($713)*(3))&-1);
+ var $715=$prevline;
+ var $716=(($715+$714)|0);
+ var $717=HEAP8[($716)];
+ var $718=$x;
+ var $719=((($718)*(3))&-1);
+ var $720=$line;
+ var $721=(($720+$719)|0);
+ HEAP8[($721)]=$717;
+ var $722=$x;
+ var $723=((($722)*(3))&-1);
+ var $724=((($723)+(1))|0);
+ var $725=$prevline;
+ var $726=(($725+$724)|0);
+ var $727=HEAP8[($726)];
+ var $728=$x;
+ var $729=((($728)*(3))&-1);
+ var $730=((($729)+(1))|0);
+ var $731=$line;
+ var $732=(($731+$730)|0);
+ HEAP8[($732)]=$727;
+ var $733=$x;
+ var $734=((($733)*(3))&-1);
+ var $735=((($734)+(2))|0);
+ var $736=$prevline;
+ var $737=(($736+$735)|0);
+ var $738=HEAP8[($737)];
+ var $739=$x;
+ var $740=((($739)*(3))&-1);
+ var $741=((($740)+(2))|0);
+ var $742=$line;
+ var $743=(($742+$741)|0);
+ HEAP8[($743)]=$738;
+ var $744=$count;
+ var $745=((($744)-(1))|0);
+ $count=$745;
+ var $746=$x;
+ var $747=((($746)+(1))|0);
+ $x=$747;
+ label=58;break;
+ case 62:
+ label=63;break;
+ case 63:
+ var $750=$count;
+ var $751=($750|0)>0;
+ if($751){label=64;break;}else{var $757=0;label=65;break;}
+ case 64:
+ var $753=$x;
+ var $754=$3;
+ var $755=($753|0)<($754|0);
+ var $757=$755;label=65;break;
+ case 65:
+ var $757;
+ if($757){label=66;break;}else{label=67;break;}
+ case 66:
+ var $759=$x;
+ var $760=((($759)*(3))&-1);
+ var $761=$prevline;
+ var $762=(($761+$760)|0);
+ var $763=HEAP8[($762)];
+ var $764=$x;
+ var $765=((($764)*(3))&-1);
+ var $766=$line;
+ var $767=(($766+$765)|0);
+ HEAP8[($767)]=$763;
+ var $768=$x;
+ var $769=((($768)*(3))&-1);
+ var $770=((($769)+(1))|0);
+ var $771=$prevline;
+ var $772=(($771+$770)|0);
+ var $773=HEAP8[($772)];
+ var $774=$x;
+ var $775=((($774)*(3))&-1);
+ var $776=((($775)+(1))|0);
+ var $777=$line;
+ var $778=(($777+$776)|0);
+ HEAP8[($778)]=$773;
+ var $779=$x;
+ var $780=((($779)*(3))&-1);
+ var $781=((($780)+(2))|0);
+ var $782=$prevline;
+ var $783=(($782+$781)|0);
+ var $784=HEAP8[($783)];
+ var $785=$x;
+ var $786=((($785)*(3))&-1);
+ var $787=((($786)+(2))|0);
+ var $788=$line;
+ var $789=(($788+$787)|0);
+ HEAP8[($789)]=$784;
+ var $790=$count;
+ var $791=((($790)-(1))|0);
+ $count=$791;
+ var $792=$x;
+ var $793=((($792)+(1))|0);
+ $x=$793;
+ label=63;break;
+ case 67:
+ label=68;break;
+ case 68:
+ label=344;break;
+ case 69:
+ var $797=$prevline;
+ var $798=($797|0)==0;
+ if($798){label=70;break;}else{label=81;break;}
+ case 70:
+ label=71;break;
+ case 71:
+ var $801=$count;
+ var $802=$801&-8;
+ var $803=($802|0)!=0;
+ if($803){label=72;break;}else{var $810=0;label=73;break;}
+ case 72:
+ var $805=$x;
+ var $806=((($805)+(8))|0);
+ var $807=$3;
+ var $808=($806|0)<($807|0);
+ var $810=$808;label=73;break;
+ case 73:
+ var $810;
+ if($810){label=74;break;}else{label=75;break;}
+ case 74:
+ var $812=(($mix)|0);
+ var $813=HEAP8[($812)];
+ var $814=$x;
+ var $815=((($814)*(3))&-1);
+ var $816=$line;
+ var $817=(($816+$815)|0);
+ HEAP8[($817)]=$813;
+ var $818=(($mix+1)|0);
+ var $819=HEAP8[($818)];
+ var $820=$x;
+ var $821=((($820)*(3))&-1);
+ var $822=((($821)+(1))|0);
+ var $823=$line;
+ var $824=(($823+$822)|0);
+ HEAP8[($824)]=$819;
+ var $825=(($mix+2)|0);
+ var $826=HEAP8[($825)];
+ var $827=$x;
+ var $828=((($827)*(3))&-1);
+ var $829=((($828)+(2))|0);
+ var $830=$line;
+ var $831=(($830+$829)|0);
+ HEAP8[($831)]=$826;
+ var $832=$count;
+ var $833=((($832)-(1))|0);
+ $count=$833;
+ var $834=$x;
+ var $835=((($834)+(1))|0);
+ $x=$835;
+ var $836=(($mix)|0);
+ var $837=HEAP8[($836)];
+ var $838=$x;
+ var $839=((($838)*(3))&-1);
+ var $840=$line;
+ var $841=(($840+$839)|0);
+ HEAP8[($841)]=$837;
+ var $842=(($mix+1)|0);
+ var $843=HEAP8[($842)];
+ var $844=$x;
+ var $845=((($844)*(3))&-1);
+ var $846=((($845)+(1))|0);
+ var $847=$line;
+ var $848=(($847+$846)|0);
+ HEAP8[($848)]=$843;
+ var $849=(($mix+2)|0);
+ var $850=HEAP8[($849)];
+ var $851=$x;
+ var $852=((($851)*(3))&-1);
+ var $853=((($852)+(2))|0);
+ var $854=$line;
+ var $855=(($854+$853)|0);
+ HEAP8[($855)]=$850;
+ var $856=$count;
+ var $857=((($856)-(1))|0);
+ $count=$857;
+ var $858=$x;
+ var $859=((($858)+(1))|0);
+ $x=$859;
+ var $860=(($mix)|0);
+ var $861=HEAP8[($860)];
+ var $862=$x;
+ var $863=((($862)*(3))&-1);
+ var $864=$line;
+ var $865=(($864+$863)|0);
+ HEAP8[($865)]=$861;
+ var $866=(($mix+1)|0);
+ var $867=HEAP8[($866)];
+ var $868=$x;
+ var $869=((($868)*(3))&-1);
+ var $870=((($869)+(1))|0);
+ var $871=$line;
+ var $872=(($871+$870)|0);
+ HEAP8[($872)]=$867;
+ var $873=(($mix+2)|0);
+ var $874=HEAP8[($873)];
+ var $875=$x;
+ var $876=((($875)*(3))&-1);
+ var $877=((($876)+(2))|0);
+ var $878=$line;
+ var $879=(($878+$877)|0);
+ HEAP8[($879)]=$874;
+ var $880=$count;
+ var $881=((($880)-(1))|0);
+ $count=$881;
+ var $882=$x;
+ var $883=((($882)+(1))|0);
+ $x=$883;
+ var $884=(($mix)|0);
+ var $885=HEAP8[($884)];
+ var $886=$x;
+ var $887=((($886)*(3))&-1);
+ var $888=$line;
+ var $889=(($888+$887)|0);
+ HEAP8[($889)]=$885;
+ var $890=(($mix+1)|0);
+ var $891=HEAP8[($890)];
+ var $892=$x;
+ var $893=((($892)*(3))&-1);
+ var $894=((($893)+(1))|0);
+ var $895=$line;
+ var $896=(($895+$894)|0);
+ HEAP8[($896)]=$891;
+ var $897=(($mix+2)|0);
+ var $898=HEAP8[($897)];
+ var $899=$x;
+ var $900=((($899)*(3))&-1);
+ var $901=((($900)+(2))|0);
+ var $902=$line;
+ var $903=(($902+$901)|0);
+ HEAP8[($903)]=$898;
+ var $904=$count;
+ var $905=((($904)-(1))|0);
+ $count=$905;
+ var $906=$x;
+ var $907=((($906)+(1))|0);
+ $x=$907;
+ var $908=(($mix)|0);
+ var $909=HEAP8[($908)];
+ var $910=$x;
+ var $911=((($910)*(3))&-1);
+ var $912=$line;
+ var $913=(($912+$911)|0);
+ HEAP8[($913)]=$909;
+ var $914=(($mix+1)|0);
+ var $915=HEAP8[($914)];
+ var $916=$x;
+ var $917=((($916)*(3))&-1);
+ var $918=((($917)+(1))|0);
+ var $919=$line;
+ var $920=(($919+$918)|0);
+ HEAP8[($920)]=$915;
+ var $921=(($mix+2)|0);
+ var $922=HEAP8[($921)];
+ var $923=$x;
+ var $924=((($923)*(3))&-1);
+ var $925=((($924)+(2))|0);
+ var $926=$line;
+ var $927=(($926+$925)|0);
+ HEAP8[($927)]=$922;
+ var $928=$count;
+ var $929=((($928)-(1))|0);
+ $count=$929;
+ var $930=$x;
+ var $931=((($930)+(1))|0);
+ $x=$931;
+ var $932=(($mix)|0);
+ var $933=HEAP8[($932)];
+ var $934=$x;
+ var $935=((($934)*(3))&-1);
+ var $936=$line;
+ var $937=(($936+$935)|0);
+ HEAP8[($937)]=$933;
+ var $938=(($mix+1)|0);
+ var $939=HEAP8[($938)];
+ var $940=$x;
+ var $941=((($940)*(3))&-1);
+ var $942=((($941)+(1))|0);
+ var $943=$line;
+ var $944=(($943+$942)|0);
+ HEAP8[($944)]=$939;
+ var $945=(($mix+2)|0);
+ var $946=HEAP8[($945)];
+ var $947=$x;
+ var $948=((($947)*(3))&-1);
+ var $949=((($948)+(2))|0);
+ var $950=$line;
+ var $951=(($950+$949)|0);
+ HEAP8[($951)]=$946;
+ var $952=$count;
+ var $953=((($952)-(1))|0);
+ $count=$953;
+ var $954=$x;
+ var $955=((($954)+(1))|0);
+ $x=$955;
+ var $956=(($mix)|0);
+ var $957=HEAP8[($956)];
+ var $958=$x;
+ var $959=((($958)*(3))&-1);
+ var $960=$line;
+ var $961=(($960+$959)|0);
+ HEAP8[($961)]=$957;
+ var $962=(($mix+1)|0);
+ var $963=HEAP8[($962)];
+ var $964=$x;
+ var $965=((($964)*(3))&-1);
+ var $966=((($965)+(1))|0);
+ var $967=$line;
+ var $968=(($967+$966)|0);
+ HEAP8[($968)]=$963;
+ var $969=(($mix+2)|0);
+ var $970=HEAP8[($969)];
+ var $971=$x;
+ var $972=((($971)*(3))&-1);
+ var $973=((($972)+(2))|0);
+ var $974=$line;
+ var $975=(($974+$973)|0);
+ HEAP8[($975)]=$970;
+ var $976=$count;
+ var $977=((($976)-(1))|0);
+ $count=$977;
+ var $978=$x;
+ var $979=((($978)+(1))|0);
+ $x=$979;
+ var $980=(($mix)|0);
+ var $981=HEAP8[($980)];
+ var $982=$x;
+ var $983=((($982)*(3))&-1);
+ var $984=$line;
+ var $985=(($984+$983)|0);
+ HEAP8[($985)]=$981;
+ var $986=(($mix+1)|0);
+ var $987=HEAP8[($986)];
+ var $988=$x;
+ var $989=((($988)*(3))&-1);
+ var $990=((($989)+(1))|0);
+ var $991=$line;
+ var $992=(($991+$990)|0);
+ HEAP8[($992)]=$987;
+ var $993=(($mix+2)|0);
+ var $994=HEAP8[($993)];
+ var $995=$x;
+ var $996=((($995)*(3))&-1);
+ var $997=((($996)+(2))|0);
+ var $998=$line;
+ var $999=(($998+$997)|0);
+ HEAP8[($999)]=$994;
+ var $1000=$count;
+ var $1001=((($1000)-(1))|0);
+ $count=$1001;
+ var $1002=$x;
+ var $1003=((($1002)+(1))|0);
+ $x=$1003;
+ label=71;break;
+ case 75:
+ label=76;break;
+ case 76:
+ var $1006=$count;
+ var $1007=($1006|0)>0;
+ if($1007){label=77;break;}else{var $1013=0;label=78;break;}
+ case 77:
+ var $1009=$x;
+ var $1010=$3;
+ var $1011=($1009|0)<($1010|0);
+ var $1013=$1011;label=78;break;
+ case 78:
+ var $1013;
+ if($1013){label=79;break;}else{label=80;break;}
+ case 79:
+ var $1015=(($mix)|0);
+ var $1016=HEAP8[($1015)];
+ var $1017=$x;
+ var $1018=((($1017)*(3))&-1);
+ var $1019=$line;
+ var $1020=(($1019+$1018)|0);
+ HEAP8[($1020)]=$1016;
+ var $1021=(($mix+1)|0);
+ var $1022=HEAP8[($1021)];
+ var $1023=$x;
+ var $1024=((($1023)*(3))&-1);
+ var $1025=((($1024)+(1))|0);
+ var $1026=$line;
+ var $1027=(($1026+$1025)|0);
+ HEAP8[($1027)]=$1022;
+ var $1028=(($mix+2)|0);
+ var $1029=HEAP8[($1028)];
+ var $1030=$x;
+ var $1031=((($1030)*(3))&-1);
+ var $1032=((($1031)+(2))|0);
+ var $1033=$line;
+ var $1034=(($1033+$1032)|0);
+ HEAP8[($1034)]=$1029;
+ var $1035=$count;
+ var $1036=((($1035)-(1))|0);
+ $count=$1036;
+ var $1037=$x;
+ var $1038=((($1037)+(1))|0);
+ $x=$1038;
+ label=76;break;
+ case 80:
+ label=92;break;
+ case 81:
+ label=82;break;
+ case 82:
+ var $1042=$count;
+ var $1043=$1042&-8;
+ var $1044=($1043|0)!=0;
+ if($1044){label=83;break;}else{var $1051=0;label=84;break;}
+ case 83:
+ var $1046=$x;
+ var $1047=((($1046)+(8))|0);
+ var $1048=$3;
+ var $1049=($1047|0)<($1048|0);
+ var $1051=$1049;label=84;break;
+ case 84:
+ var $1051;
+ if($1051){label=85;break;}else{label=86;break;}
+ case 85:
+ var $1053=$x;
+ var $1054=((($1053)*(3))&-1);
+ var $1055=$prevline;
+ var $1056=(($1055+$1054)|0);
+ var $1057=HEAP8[($1056)];
+ var $1058=($1057&255);
+ var $1059=(($mix)|0);
+ var $1060=HEAP8[($1059)];
+ var $1061=($1060&255);
+ var $1062=$1058^$1061;
+ var $1063=(($1062)&255);
+ var $1064=$x;
+ var $1065=((($1064)*(3))&-1);
+ var $1066=$line;
+ var $1067=(($1066+$1065)|0);
+ HEAP8[($1067)]=$1063;
+ var $1068=$x;
+ var $1069=((($1068)*(3))&-1);
+ var $1070=((($1069)+(1))|0);
+ var $1071=$prevline;
+ var $1072=(($1071+$1070)|0);
+ var $1073=HEAP8[($1072)];
+ var $1074=($1073&255);
+ var $1075=(($mix+1)|0);
+ var $1076=HEAP8[($1075)];
+ var $1077=($1076&255);
+ var $1078=$1074^$1077;
+ var $1079=(($1078)&255);
+ var $1080=$x;
+ var $1081=((($1080)*(3))&-1);
+ var $1082=((($1081)+(1))|0);
+ var $1083=$line;
+ var $1084=(($1083+$1082)|0);
+ HEAP8[($1084)]=$1079;
+ var $1085=$x;
+ var $1086=((($1085)*(3))&-1);
+ var $1087=((($1086)+(2))|0);
+ var $1088=$prevline;
+ var $1089=(($1088+$1087)|0);
+ var $1090=HEAP8[($1089)];
+ var $1091=($1090&255);
+ var $1092=(($mix+2)|0);
+ var $1093=HEAP8[($1092)];
+ var $1094=($1093&255);
+ var $1095=$1091^$1094;
+ var $1096=(($1095)&255);
+ var $1097=$x;
+ var $1098=((($1097)*(3))&-1);
+ var $1099=((($1098)+(2))|0);
+ var $1100=$line;
+ var $1101=(($1100+$1099)|0);
+ HEAP8[($1101)]=$1096;
+ var $1102=$count;
+ var $1103=((($1102)-(1))|0);
+ $count=$1103;
+ var $1104=$x;
+ var $1105=((($1104)+(1))|0);
+ $x=$1105;
+ var $1106=$x;
+ var $1107=((($1106)*(3))&-1);
+ var $1108=$prevline;
+ var $1109=(($1108+$1107)|0);
+ var $1110=HEAP8[($1109)];
+ var $1111=($1110&255);
+ var $1112=(($mix)|0);
+ var $1113=HEAP8[($1112)];
+ var $1114=($1113&255);
+ var $1115=$1111^$1114;
+ var $1116=(($1115)&255);
+ var $1117=$x;
+ var $1118=((($1117)*(3))&-1);
+ var $1119=$line;
+ var $1120=(($1119+$1118)|0);
+ HEAP8[($1120)]=$1116;
+ var $1121=$x;
+ var $1122=((($1121)*(3))&-1);
+ var $1123=((($1122)+(1))|0);
+ var $1124=$prevline;
+ var $1125=(($1124+$1123)|0);
+ var $1126=HEAP8[($1125)];
+ var $1127=($1126&255);
+ var $1128=(($mix+1)|0);
+ var $1129=HEAP8[($1128)];
+ var $1130=($1129&255);
+ var $1131=$1127^$1130;
+ var $1132=(($1131)&255);
+ var $1133=$x;
+ var $1134=((($1133)*(3))&-1);
+ var $1135=((($1134)+(1))|0);
+ var $1136=$line;
+ var $1137=(($1136+$1135)|0);
+ HEAP8[($1137)]=$1132;
+ var $1138=$x;
+ var $1139=((($1138)*(3))&-1);
+ var $1140=((($1139)+(2))|0);
+ var $1141=$prevline;
+ var $1142=(($1141+$1140)|0);
+ var $1143=HEAP8[($1142)];
+ var $1144=($1143&255);
+ var $1145=(($mix+2)|0);
+ var $1146=HEAP8[($1145)];
+ var $1147=($1146&255);
+ var $1148=$1144^$1147;
+ var $1149=(($1148)&255);
+ var $1150=$x;
+ var $1151=((($1150)*(3))&-1);
+ var $1152=((($1151)+(2))|0);
+ var $1153=$line;
+ var $1154=(($1153+$1152)|0);
+ HEAP8[($1154)]=$1149;
+ var $1155=$count;
+ var $1156=((($1155)-(1))|0);
+ $count=$1156;
+ var $1157=$x;
+ var $1158=((($1157)+(1))|0);
+ $x=$1158;
+ var $1159=$x;
+ var $1160=((($1159)*(3))&-1);
+ var $1161=$prevline;
+ var $1162=(($1161+$1160)|0);
+ var $1163=HEAP8[($1162)];
+ var $1164=($1163&255);
+ var $1165=(($mix)|0);
+ var $1166=HEAP8[($1165)];
+ var $1167=($1166&255);
+ var $1168=$1164^$1167;
+ var $1169=(($1168)&255);
+ var $1170=$x;
+ var $1171=((($1170)*(3))&-1);
+ var $1172=$line;
+ var $1173=(($1172+$1171)|0);
+ HEAP8[($1173)]=$1169;
+ var $1174=$x;
+ var $1175=((($1174)*(3))&-1);
+ var $1176=((($1175)+(1))|0);
+ var $1177=$prevline;
+ var $1178=(($1177+$1176)|0);
+ var $1179=HEAP8[($1178)];
+ var $1180=($1179&255);
+ var $1181=(($mix+1)|0);
+ var $1182=HEAP8[($1181)];
+ var $1183=($1182&255);
+ var $1184=$1180^$1183;
+ var $1185=(($1184)&255);
+ var $1186=$x;
+ var $1187=((($1186)*(3))&-1);
+ var $1188=((($1187)+(1))|0);
+ var $1189=$line;
+ var $1190=(($1189+$1188)|0);
+ HEAP8[($1190)]=$1185;
+ var $1191=$x;
+ var $1192=((($1191)*(3))&-1);
+ var $1193=((($1192)+(2))|0);
+ var $1194=$prevline;
+ var $1195=(($1194+$1193)|0);
+ var $1196=HEAP8[($1195)];
+ var $1197=($1196&255);
+ var $1198=(($mix+2)|0);
+ var $1199=HEAP8[($1198)];
+ var $1200=($1199&255);
+ var $1201=$1197^$1200;
+ var $1202=(($1201)&255);
+ var $1203=$x;
+ var $1204=((($1203)*(3))&-1);
+ var $1205=((($1204)+(2))|0);
+ var $1206=$line;
+ var $1207=(($1206+$1205)|0);
+ HEAP8[($1207)]=$1202;
+ var $1208=$count;
+ var $1209=((($1208)-(1))|0);
+ $count=$1209;
+ var $1210=$x;
+ var $1211=((($1210)+(1))|0);
+ $x=$1211;
+ var $1212=$x;
+ var $1213=((($1212)*(3))&-1);
+ var $1214=$prevline;
+ var $1215=(($1214+$1213)|0);
+ var $1216=HEAP8[($1215)];
+ var $1217=($1216&255);
+ var $1218=(($mix)|0);
+ var $1219=HEAP8[($1218)];
+ var $1220=($1219&255);
+ var $1221=$1217^$1220;
+ var $1222=(($1221)&255);
+ var $1223=$x;
+ var $1224=((($1223)*(3))&-1);
+ var $1225=$line;
+ var $1226=(($1225+$1224)|0);
+ HEAP8[($1226)]=$1222;
+ var $1227=$x;
+ var $1228=((($1227)*(3))&-1);
+ var $1229=((($1228)+(1))|0);
+ var $1230=$prevline;
+ var $1231=(($1230+$1229)|0);
+ var $1232=HEAP8[($1231)];
+ var $1233=($1232&255);
+ var $1234=(($mix+1)|0);
+ var $1235=HEAP8[($1234)];
+ var $1236=($1235&255);
+ var $1237=$1233^$1236;
+ var $1238=(($1237)&255);
+ var $1239=$x;
+ var $1240=((($1239)*(3))&-1);
+ var $1241=((($1240)+(1))|0);
+ var $1242=$line;
+ var $1243=(($1242+$1241)|0);
+ HEAP8[($1243)]=$1238;
+ var $1244=$x;
+ var $1245=((($1244)*(3))&-1);
+ var $1246=((($1245)+(2))|0);
+ var $1247=$prevline;
+ var $1248=(($1247+$1246)|0);
+ var $1249=HEAP8[($1248)];
+ var $1250=($1249&255);
+ var $1251=(($mix+2)|0);
+ var $1252=HEAP8[($1251)];
+ var $1253=($1252&255);
+ var $1254=$1250^$1253;
+ var $1255=(($1254)&255);
+ var $1256=$x;
+ var $1257=((($1256)*(3))&-1);
+ var $1258=((($1257)+(2))|0);
+ var $1259=$line;
+ var $1260=(($1259+$1258)|0);
+ HEAP8[($1260)]=$1255;
+ var $1261=$count;
+ var $1262=((($1261)-(1))|0);
+ $count=$1262;
+ var $1263=$x;
+ var $1264=((($1263)+(1))|0);
+ $x=$1264;
+ var $1265=$x;
+ var $1266=((($1265)*(3))&-1);
+ var $1267=$prevline;
+ var $1268=(($1267+$1266)|0);
+ var $1269=HEAP8[($1268)];
+ var $1270=($1269&255);
+ var $1271=(($mix)|0);
+ var $1272=HEAP8[($1271)];
+ var $1273=($1272&255);
+ var $1274=$1270^$1273;
+ var $1275=(($1274)&255);
+ var $1276=$x;
+ var $1277=((($1276)*(3))&-1);
+ var $1278=$line;
+ var $1279=(($1278+$1277)|0);
+ HEAP8[($1279)]=$1275;
+ var $1280=$x;
+ var $1281=((($1280)*(3))&-1);
+ var $1282=((($1281)+(1))|0);
+ var $1283=$prevline;
+ var $1284=(($1283+$1282)|0);
+ var $1285=HEAP8[($1284)];
+ var $1286=($1285&255);
+ var $1287=(($mix+1)|0);
+ var $1288=HEAP8[($1287)];
+ var $1289=($1288&255);
+ var $1290=$1286^$1289;
+ var $1291=(($1290)&255);
+ var $1292=$x;
+ var $1293=((($1292)*(3))&-1);
+ var $1294=((($1293)+(1))|0);
+ var $1295=$line;
+ var $1296=(($1295+$1294)|0);
+ HEAP8[($1296)]=$1291;
+ var $1297=$x;
+ var $1298=((($1297)*(3))&-1);
+ var $1299=((($1298)+(2))|0);
+ var $1300=$prevline;
+ var $1301=(($1300+$1299)|0);
+ var $1302=HEAP8[($1301)];
+ var $1303=($1302&255);
+ var $1304=(($mix+2)|0);
+ var $1305=HEAP8[($1304)];
+ var $1306=($1305&255);
+ var $1307=$1303^$1306;
+ var $1308=(($1307)&255);
+ var $1309=$x;
+ var $1310=((($1309)*(3))&-1);
+ var $1311=((($1310)+(2))|0);
+ var $1312=$line;
+ var $1313=(($1312+$1311)|0);
+ HEAP8[($1313)]=$1308;
+ var $1314=$count;
+ var $1315=((($1314)-(1))|0);
+ $count=$1315;
+ var $1316=$x;
+ var $1317=((($1316)+(1))|0);
+ $x=$1317;
+ var $1318=$x;
+ var $1319=((($1318)*(3))&-1);
+ var $1320=$prevline;
+ var $1321=(($1320+$1319)|0);
+ var $1322=HEAP8[($1321)];
+ var $1323=($1322&255);
+ var $1324=(($mix)|0);
+ var $1325=HEAP8[($1324)];
+ var $1326=($1325&255);
+ var $1327=$1323^$1326;
+ var $1328=(($1327)&255);
+ var $1329=$x;
+ var $1330=((($1329)*(3))&-1);
+ var $1331=$line;
+ var $1332=(($1331+$1330)|0);
+ HEAP8[($1332)]=$1328;
+ var $1333=$x;
+ var $1334=((($1333)*(3))&-1);
+ var $1335=((($1334)+(1))|0);
+ var $1336=$prevline;
+ var $1337=(($1336+$1335)|0);
+ var $1338=HEAP8[($1337)];
+ var $1339=($1338&255);
+ var $1340=(($mix+1)|0);
+ var $1341=HEAP8[($1340)];
+ var $1342=($1341&255);
+ var $1343=$1339^$1342;
+ var $1344=(($1343)&255);
+ var $1345=$x;
+ var $1346=((($1345)*(3))&-1);
+ var $1347=((($1346)+(1))|0);
+ var $1348=$line;
+ var $1349=(($1348+$1347)|0);
+ HEAP8[($1349)]=$1344;
+ var $1350=$x;
+ var $1351=((($1350)*(3))&-1);
+ var $1352=((($1351)+(2))|0);
+ var $1353=$prevline;
+ var $1354=(($1353+$1352)|0);
+ var $1355=HEAP8[($1354)];
+ var $1356=($1355&255);
+ var $1357=(($mix+2)|0);
+ var $1358=HEAP8[($1357)];
+ var $1359=($1358&255);
+ var $1360=$1356^$1359;
+ var $1361=(($1360)&255);
+ var $1362=$x;
+ var $1363=((($1362)*(3))&-1);
+ var $1364=((($1363)+(2))|0);
+ var $1365=$line;
+ var $1366=(($1365+$1364)|0);
+ HEAP8[($1366)]=$1361;
+ var $1367=$count;
+ var $1368=((($1367)-(1))|0);
+ $count=$1368;
+ var $1369=$x;
+ var $1370=((($1369)+(1))|0);
+ $x=$1370;
+ var $1371=$x;
+ var $1372=((($1371)*(3))&-1);
+ var $1373=$prevline;
+ var $1374=(($1373+$1372)|0);
+ var $1375=HEAP8[($1374)];
+ var $1376=($1375&255);
+ var $1377=(($mix)|0);
+ var $1378=HEAP8[($1377)];
+ var $1379=($1378&255);
+ var $1380=$1376^$1379;
+ var $1381=(($1380)&255);
+ var $1382=$x;
+ var $1383=((($1382)*(3))&-1);
+ var $1384=$line;
+ var $1385=(($1384+$1383)|0);
+ HEAP8[($1385)]=$1381;
+ var $1386=$x;
+ var $1387=((($1386)*(3))&-1);
+ var $1388=((($1387)+(1))|0);
+ var $1389=$prevline;
+ var $1390=(($1389+$1388)|0);
+ var $1391=HEAP8[($1390)];
+ var $1392=($1391&255);
+ var $1393=(($mix+1)|0);
+ var $1394=HEAP8[($1393)];
+ var $1395=($1394&255);
+ var $1396=$1392^$1395;
+ var $1397=(($1396)&255);
+ var $1398=$x;
+ var $1399=((($1398)*(3))&-1);
+ var $1400=((($1399)+(1))|0);
+ var $1401=$line;
+ var $1402=(($1401+$1400)|0);
+ HEAP8[($1402)]=$1397;
+ var $1403=$x;
+ var $1404=((($1403)*(3))&-1);
+ var $1405=((($1404)+(2))|0);
+ var $1406=$prevline;
+ var $1407=(($1406+$1405)|0);
+ var $1408=HEAP8[($1407)];
+ var $1409=($1408&255);
+ var $1410=(($mix+2)|0);
+ var $1411=HEAP8[($1410)];
+ var $1412=($1411&255);
+ var $1413=$1409^$1412;
+ var $1414=(($1413)&255);
+ var $1415=$x;
+ var $1416=((($1415)*(3))&-1);
+ var $1417=((($1416)+(2))|0);
+ var $1418=$line;
+ var $1419=(($1418+$1417)|0);
+ HEAP8[($1419)]=$1414;
+ var $1420=$count;
+ var $1421=((($1420)-(1))|0);
+ $count=$1421;
+ var $1422=$x;
+ var $1423=((($1422)+(1))|0);
+ $x=$1423;
+ var $1424=$x;
+ var $1425=((($1424)*(3))&-1);
+ var $1426=$prevline;
+ var $1427=(($1426+$1425)|0);
+ var $1428=HEAP8[($1427)];
+ var $1429=($1428&255);
+ var $1430=(($mix)|0);
+ var $1431=HEAP8[($1430)];
+ var $1432=($1431&255);
+ var $1433=$1429^$1432;
+ var $1434=(($1433)&255);
+ var $1435=$x;
+ var $1436=((($1435)*(3))&-1);
+ var $1437=$line;
+ var $1438=(($1437+$1436)|0);
+ HEAP8[($1438)]=$1434;
+ var $1439=$x;
+ var $1440=((($1439)*(3))&-1);
+ var $1441=((($1440)+(1))|0);
+ var $1442=$prevline;
+ var $1443=(($1442+$1441)|0);
+ var $1444=HEAP8[($1443)];
+ var $1445=($1444&255);
+ var $1446=(($mix+1)|0);
+ var $1447=HEAP8[($1446)];
+ var $1448=($1447&255);
+ var $1449=$1445^$1448;
+ var $1450=(($1449)&255);
+ var $1451=$x;
+ var $1452=((($1451)*(3))&-1);
+ var $1453=((($1452)+(1))|0);
+ var $1454=$line;
+ var $1455=(($1454+$1453)|0);
+ HEAP8[($1455)]=$1450;
+ var $1456=$x;
+ var $1457=((($1456)*(3))&-1);
+ var $1458=((($1457)+(2))|0);
+ var $1459=$prevline;
+ var $1460=(($1459+$1458)|0);
+ var $1461=HEAP8[($1460)];
+ var $1462=($1461&255);
+ var $1463=(($mix+2)|0);
+ var $1464=HEAP8[($1463)];
+ var $1465=($1464&255);
+ var $1466=$1462^$1465;
+ var $1467=(($1466)&255);
+ var $1468=$x;
+ var $1469=((($1468)*(3))&-1);
+ var $1470=((($1469)+(2))|0);
+ var $1471=$line;
+ var $1472=(($1471+$1470)|0);
+ HEAP8[($1472)]=$1467;
+ var $1473=$count;
+ var $1474=((($1473)-(1))|0);
+ $count=$1474;
+ var $1475=$x;
+ var $1476=((($1475)+(1))|0);
+ $x=$1476;
+ label=82;break;
+ case 86:
+ label=87;break;
+ case 87:
+ var $1479=$count;
+ var $1480=($1479|0)>0;
+ if($1480){label=88;break;}else{var $1486=0;label=89;break;}
+ case 88:
+ var $1482=$x;
+ var $1483=$3;
+ var $1484=($1482|0)<($1483|0);
+ var $1486=$1484;label=89;break;
+ case 89:
+ var $1486;
+ if($1486){label=90;break;}else{label=91;break;}
+ case 90:
+ var $1488=$x;
+ var $1489=((($1488)*(3))&-1);
+ var $1490=$prevline;
+ var $1491=(($1490+$1489)|0);
+ var $1492=HEAP8[($1491)];
+ var $1493=($1492&255);
+ var $1494=(($mix)|0);
+ var $1495=HEAP8[($1494)];
+ var $1496=($1495&255);
+ var $1497=$1493^$1496;
+ var $1498=(($1497)&255);
+ var $1499=$x;
+ var $1500=((($1499)*(3))&-1);
+ var $1501=$line;
+ var $1502=(($1501+$1500)|0);
+ HEAP8[($1502)]=$1498;
+ var $1503=$x;
+ var $1504=((($1503)*(3))&-1);
+ var $1505=((($1504)+(1))|0);
+ var $1506=$prevline;
+ var $1507=(($1506+$1505)|0);
+ var $1508=HEAP8[($1507)];
+ var $1509=($1508&255);
+ var $1510=(($mix+1)|0);
+ var $1511=HEAP8[($1510)];
+ var $1512=($1511&255);
+ var $1513=$1509^$1512;
+ var $1514=(($1513)&255);
+ var $1515=$x;
+ var $1516=((($1515)*(3))&-1);
+ var $1517=((($1516)+(1))|0);
+ var $1518=$line;
+ var $1519=(($1518+$1517)|0);
+ HEAP8[($1519)]=$1514;
+ var $1520=$x;
+ var $1521=((($1520)*(3))&-1);
+ var $1522=((($1521)+(2))|0);
+ var $1523=$prevline;
+ var $1524=(($1523+$1522)|0);
+ var $1525=HEAP8[($1524)];
+ var $1526=($1525&255);
+ var $1527=(($mix+2)|0);
+ var $1528=HEAP8[($1527)];
+ var $1529=($1528&255);
+ var $1530=$1526^$1529;
+ var $1531=(($1530)&255);
+ var $1532=$x;
+ var $1533=((($1532)*(3))&-1);
+ var $1534=((($1533)+(2))|0);
+ var $1535=$line;
+ var $1536=(($1535+$1534)|0);
+ HEAP8[($1536)]=$1531;
+ var $1537=$count;
+ var $1538=((($1537)-(1))|0);
+ $count=$1538;
+ var $1539=$x;
+ var $1540=((($1539)+(1))|0);
+ $x=$1540;
+ label=87;break;
+ case 91:
+ label=92;break;
+ case 92:
+ label=344;break;
+ case 93:
+ var $1544=$prevline;
+ var $1545=($1544|0)==0;
+ if($1545){label=94;break;}else{label=177;break;}
+ case 94:
+ label=95;break;
+ case 95:
+ var $1548=$count;
+ var $1549=$1548&-8;
+ var $1550=($1549|0)!=0;
+ if($1550){label=96;break;}else{var $1557=0;label=97;break;}
+ case 96:
+ var $1552=$x;
+ var $1553=((($1552)+(8))|0);
+ var $1554=$3;
+ var $1555=($1553|0)<($1554|0);
+ var $1557=$1555;label=97;break;
+ case 97:
+ var $1557;
+ if($1557){label=98;break;}else{label=163;break;}
+ case 98:
+ var $1559=$mixmask;
+ var $1560=($1559&255);
+ var $1561=$1560<<1;
+ var $1562=(($1561)&255);
+ $mixmask=$1562;
+ var $1563=$mixmask;
+ var $1564=($1563&255);
+ var $1565=($1564|0)==0;
+ if($1565){label=99;break;}else{label=103;break;}
+ case 99:
+ var $1567=$fom_mask;
+ var $1568=($1567|0)!=0;
+ if($1568){label=100;break;}else{label=101;break;}
+ case 100:
+ var $1570=$fom_mask;
+ var $1577=$1570;label=102;break;
+ case 101:
+ var $1572=$5;
+ var $1573=(($1572+1)|0);
+ $5=$1573;
+ var $1574=HEAP8[($1572)];
+ var $1575=($1574&255);
+ var $1577=$1575;label=102;break;
+ case 102:
+ var $1577;
+ var $1578=(($1577)&255);
+ $mask=$1578;
+ $mixmask=1;
+ label=103;break;
+ case 103:
+ var $1580=$mask;
+ var $1581=($1580&255);
+ var $1582=$mixmask;
+ var $1583=($1582&255);
+ var $1584=$1581&$1583;
+ var $1585=($1584|0)!=0;
+ if($1585){label=104;break;}else{label=105;break;}
+ case 104:
+ var $1587=(($mix)|0);
+ var $1588=HEAP8[($1587)];
+ var $1589=$x;
+ var $1590=((($1589)*(3))&-1);
+ var $1591=$line;
+ var $1592=(($1591+$1590)|0);
+ HEAP8[($1592)]=$1588;
+ var $1593=(($mix+1)|0);
+ var $1594=HEAP8[($1593)];
+ var $1595=$x;
+ var $1596=((($1595)*(3))&-1);
+ var $1597=((($1596)+(1))|0);
+ var $1598=$line;
+ var $1599=(($1598+$1597)|0);
+ HEAP8[($1599)]=$1594;
+ var $1600=(($mix+2)|0);
+ var $1601=HEAP8[($1600)];
+ var $1602=$x;
+ var $1603=((($1602)*(3))&-1);
+ var $1604=((($1603)+(2))|0);
+ var $1605=$line;
+ var $1606=(($1605+$1604)|0);
+ HEAP8[($1606)]=$1601;
+ label=106;break;
+ case 105:
+ var $1608=$x;
+ var $1609=((($1608)*(3))&-1);
+ var $1610=$line;
+ var $1611=(($1610+$1609)|0);
+ HEAP8[($1611)]=0;
+ var $1612=$x;
+ var $1613=((($1612)*(3))&-1);
+ var $1614=((($1613)+(1))|0);
+ var $1615=$line;
+ var $1616=(($1615+$1614)|0);
+ HEAP8[($1616)]=0;
+ var $1617=$x;
+ var $1618=((($1617)*(3))&-1);
+ var $1619=((($1618)+(2))|0);
+ var $1620=$line;
+ var $1621=(($1620+$1619)|0);
+ HEAP8[($1621)]=0;
+ label=106;break;
+ case 106:
+ var $1623=$count;
+ var $1624=((($1623)-(1))|0);
+ $count=$1624;
+ var $1625=$x;
+ var $1626=((($1625)+(1))|0);
+ $x=$1626;
+ var $1627=$mixmask;
+ var $1628=($1627&255);
+ var $1629=$1628<<1;
+ var $1630=(($1629)&255);
+ $mixmask=$1630;
+ var $1631=$mixmask;
+ var $1632=($1631&255);
+ var $1633=($1632|0)==0;
+ if($1633){label=107;break;}else{label=111;break;}
+ case 107:
+ var $1635=$fom_mask;
+ var $1636=($1635|0)!=0;
+ if($1636){label=108;break;}else{label=109;break;}
+ case 108:
+ var $1638=$fom_mask;
+ var $1645=$1638;label=110;break;
+ case 109:
+ var $1640=$5;
+ var $1641=(($1640+1)|0);
+ $5=$1641;
+ var $1642=HEAP8[($1640)];
+ var $1643=($1642&255);
+ var $1645=$1643;label=110;break;
+ case 110:
+ var $1645;
+ var $1646=(($1645)&255);
+ $mask=$1646;
+ $mixmask=1;
+ label=111;break;
+ case 111:
+ var $1648=$mask;
+ var $1649=($1648&255);
+ var $1650=$mixmask;
+ var $1651=($1650&255);
+ var $1652=$1649&$1651;
+ var $1653=($1652|0)!=0;
+ if($1653){label=112;break;}else{label=113;break;}
+ case 112:
+ var $1655=(($mix)|0);
+ var $1656=HEAP8[($1655)];
+ var $1657=$x;
+ var $1658=((($1657)*(3))&-1);
+ var $1659=$line;
+ var $1660=(($1659+$1658)|0);
+ HEAP8[($1660)]=$1656;
+ var $1661=(($mix+1)|0);
+ var $1662=HEAP8[($1661)];
+ var $1663=$x;
+ var $1664=((($1663)*(3))&-1);
+ var $1665=((($1664)+(1))|0);
+ var $1666=$line;
+ var $1667=(($1666+$1665)|0);
+ HEAP8[($1667)]=$1662;
+ var $1668=(($mix+2)|0);
+ var $1669=HEAP8[($1668)];
+ var $1670=$x;
+ var $1671=((($1670)*(3))&-1);
+ var $1672=((($1671)+(2))|0);
+ var $1673=$line;
+ var $1674=(($1673+$1672)|0);
+ HEAP8[($1674)]=$1669;
+ label=114;break;
+ case 113:
+ var $1676=$x;
+ var $1677=((($1676)*(3))&-1);
+ var $1678=$line;
+ var $1679=(($1678+$1677)|0);
+ HEAP8[($1679)]=0;
+ var $1680=$x;
+ var $1681=((($1680)*(3))&-1);
+ var $1682=((($1681)+(1))|0);
+ var $1683=$line;
+ var $1684=(($1683+$1682)|0);
+ HEAP8[($1684)]=0;
+ var $1685=$x;
+ var $1686=((($1685)*(3))&-1);
+ var $1687=((($1686)+(2))|0);
+ var $1688=$line;
+ var $1689=(($1688+$1687)|0);
+ HEAP8[($1689)]=0;
+ label=114;break;
+ case 114:
+ var $1691=$count;
+ var $1692=((($1691)-(1))|0);
+ $count=$1692;
+ var $1693=$x;
+ var $1694=((($1693)+(1))|0);
+ $x=$1694;
+ var $1695=$mixmask;
+ var $1696=($1695&255);
+ var $1697=$1696<<1;
+ var $1698=(($1697)&255);
+ $mixmask=$1698;
+ var $1699=$mixmask;
+ var $1700=($1699&255);
+ var $1701=($1700|0)==0;
+ if($1701){label=115;break;}else{label=119;break;}
+ case 115:
+ var $1703=$fom_mask;
+ var $1704=($1703|0)!=0;
+ if($1704){label=116;break;}else{label=117;break;}
+ case 116:
+ var $1706=$fom_mask;
+ var $1713=$1706;label=118;break;
+ case 117:
+ var $1708=$5;
+ var $1709=(($1708+1)|0);
+ $5=$1709;
+ var $1710=HEAP8[($1708)];
+ var $1711=($1710&255);
+ var $1713=$1711;label=118;break;
+ case 118:
+ var $1713;
+ var $1714=(($1713)&255);
+ $mask=$1714;
+ $mixmask=1;
+ label=119;break;
+ case 119:
+ var $1716=$mask;
+ var $1717=($1716&255);
+ var $1718=$mixmask;
+ var $1719=($1718&255);
+ var $1720=$1717&$1719;
+ var $1721=($1720|0)!=0;
+ if($1721){label=120;break;}else{label=121;break;}
+ case 120:
+ var $1723=(($mix)|0);
+ var $1724=HEAP8[($1723)];
+ var $1725=$x;
+ var $1726=((($1725)*(3))&-1);
+ var $1727=$line;
+ var $1728=(($1727+$1726)|0);
+ HEAP8[($1728)]=$1724;
+ var $1729=(($mix+1)|0);
+ var $1730=HEAP8[($1729)];
+ var $1731=$x;
+ var $1732=((($1731)*(3))&-1);
+ var $1733=((($1732)+(1))|0);
+ var $1734=$line;
+ var $1735=(($1734+$1733)|0);
+ HEAP8[($1735)]=$1730;
+ var $1736=(($mix+2)|0);
+ var $1737=HEAP8[($1736)];
+ var $1738=$x;
+ var $1739=((($1738)*(3))&-1);
+ var $1740=((($1739)+(2))|0);
+ var $1741=$line;
+ var $1742=(($1741+$1740)|0);
+ HEAP8[($1742)]=$1737;
+ label=122;break;
+ case 121:
+ var $1744=$x;
+ var $1745=((($1744)*(3))&-1);
+ var $1746=$line;
+ var $1747=(($1746+$1745)|0);
+ HEAP8[($1747)]=0;
+ var $1748=$x;
+ var $1749=((($1748)*(3))&-1);
+ var $1750=((($1749)+(1))|0);
+ var $1751=$line;
+ var $1752=(($1751+$1750)|0);
+ HEAP8[($1752)]=0;
+ var $1753=$x;
+ var $1754=((($1753)*(3))&-1);
+ var $1755=((($1754)+(2))|0);
+ var $1756=$line;
+ var $1757=(($1756+$1755)|0);
+ HEAP8[($1757)]=0;
+ label=122;break;
+ case 122:
+ var $1759=$count;
+ var $1760=((($1759)-(1))|0);
+ $count=$1760;
+ var $1761=$x;
+ var $1762=((($1761)+(1))|0);
+ $x=$1762;
+ var $1763=$mixmask;
+ var $1764=($1763&255);
+ var $1765=$1764<<1;
+ var $1766=(($1765)&255);
+ $mixmask=$1766;
+ var $1767=$mixmask;
+ var $1768=($1767&255);
+ var $1769=($1768|0)==0;
+ if($1769){label=123;break;}else{label=127;break;}
+ case 123:
+ var $1771=$fom_mask;
+ var $1772=($1771|0)!=0;
+ if($1772){label=124;break;}else{label=125;break;}
+ case 124:
+ var $1774=$fom_mask;
+ var $1781=$1774;label=126;break;
+ case 125:
+ var $1776=$5;
+ var $1777=(($1776+1)|0);
+ $5=$1777;
+ var $1778=HEAP8[($1776)];
+ var $1779=($1778&255);
+ var $1781=$1779;label=126;break;
+ case 126:
+ var $1781;
+ var $1782=(($1781)&255);
+ $mask=$1782;
+ $mixmask=1;
+ label=127;break;
+ case 127:
+ var $1784=$mask;
+ var $1785=($1784&255);
+ var $1786=$mixmask;
+ var $1787=($1786&255);
+ var $1788=$1785&$1787;
+ var $1789=($1788|0)!=0;
+ if($1789){label=128;break;}else{label=129;break;}
+ case 128:
+ var $1791=(($mix)|0);
+ var $1792=HEAP8[($1791)];
+ var $1793=$x;
+ var $1794=((($1793)*(3))&-1);
+ var $1795=$line;
+ var $1796=(($1795+$1794)|0);
+ HEAP8[($1796)]=$1792;
+ var $1797=(($mix+1)|0);
+ var $1798=HEAP8[($1797)];
+ var $1799=$x;
+ var $1800=((($1799)*(3))&-1);
+ var $1801=((($1800)+(1))|0);
+ var $1802=$line;
+ var $1803=(($1802+$1801)|0);
+ HEAP8[($1803)]=$1798;
+ var $1804=(($mix+2)|0);
+ var $1805=HEAP8[($1804)];
+ var $1806=$x;
+ var $1807=((($1806)*(3))&-1);
+ var $1808=((($1807)+(2))|0);
+ var $1809=$line;
+ var $1810=(($1809+$1808)|0);
+ HEAP8[($1810)]=$1805;
+ label=130;break;
+ case 129:
+ var $1812=$x;
+ var $1813=((($1812)*(3))&-1);
+ var $1814=$line;
+ var $1815=(($1814+$1813)|0);
+ HEAP8[($1815)]=0;
+ var $1816=$x;
+ var $1817=((($1816)*(3))&-1);
+ var $1818=((($1817)+(1))|0);
+ var $1819=$line;
+ var $1820=(($1819+$1818)|0);
+ HEAP8[($1820)]=0;
+ var $1821=$x;
+ var $1822=((($1821)*(3))&-1);
+ var $1823=((($1822)+(2))|0);
+ var $1824=$line;
+ var $1825=(($1824+$1823)|0);
+ HEAP8[($1825)]=0;
+ label=130;break;
+ case 130:
+ var $1827=$count;
+ var $1828=((($1827)-(1))|0);
+ $count=$1828;
+ var $1829=$x;
+ var $1830=((($1829)+(1))|0);
+ $x=$1830;
+ var $1831=$mixmask;
+ var $1832=($1831&255);
+ var $1833=$1832<<1;
+ var $1834=(($1833)&255);
+ $mixmask=$1834;
+ var $1835=$mixmask;
+ var $1836=($1835&255);
+ var $1837=($1836|0)==0;
+ if($1837){label=131;break;}else{label=135;break;}
+ case 131:
+ var $1839=$fom_mask;
+ var $1840=($1839|0)!=0;
+ if($1840){label=132;break;}else{label=133;break;}
+ case 132:
+ var $1842=$fom_mask;
+ var $1849=$1842;label=134;break;
+ case 133:
+ var $1844=$5;
+ var $1845=(($1844+1)|0);
+ $5=$1845;
+ var $1846=HEAP8[($1844)];
+ var $1847=($1846&255);
+ var $1849=$1847;label=134;break;
+ case 134:
+ var $1849;
+ var $1850=(($1849)&255);
+ $mask=$1850;
+ $mixmask=1;
+ label=135;break;
+ case 135:
+ var $1852=$mask;
+ var $1853=($1852&255);
+ var $1854=$mixmask;
+ var $1855=($1854&255);
+ var $1856=$1853&$1855;
+ var $1857=($1856|0)!=0;
+ if($1857){label=136;break;}else{label=137;break;}
+ case 136:
+ var $1859=(($mix)|0);
+ var $1860=HEAP8[($1859)];
+ var $1861=$x;
+ var $1862=((($1861)*(3))&-1);
+ var $1863=$line;
+ var $1864=(($1863+$1862)|0);
+ HEAP8[($1864)]=$1860;
+ var $1865=(($mix+1)|0);
+ var $1866=HEAP8[($1865)];
+ var $1867=$x;
+ var $1868=((($1867)*(3))&-1);
+ var $1869=((($1868)+(1))|0);
+ var $1870=$line;
+ var $1871=(($1870+$1869)|0);
+ HEAP8[($1871)]=$1866;
+ var $1872=(($mix+2)|0);
+ var $1873=HEAP8[($1872)];
+ var $1874=$x;
+ var $1875=((($1874)*(3))&-1);
+ var $1876=((($1875)+(2))|0);
+ var $1877=$line;
+ var $1878=(($1877+$1876)|0);
+ HEAP8[($1878)]=$1873;
+ label=138;break;
+ case 137:
+ var $1880=$x;
+ var $1881=((($1880)*(3))&-1);
+ var $1882=$line;
+ var $1883=(($1882+$1881)|0);
+ HEAP8[($1883)]=0;
+ var $1884=$x;
+ var $1885=((($1884)*(3))&-1);
+ var $1886=((($1885)+(1))|0);
+ var $1887=$line;
+ var $1888=(($1887+$1886)|0);
+ HEAP8[($1888)]=0;
+ var $1889=$x;
+ var $1890=((($1889)*(3))&-1);
+ var $1891=((($1890)+(2))|0);
+ var $1892=$line;
+ var $1893=(($1892+$1891)|0);
+ HEAP8[($1893)]=0;
+ label=138;break;
+ case 138:
+ var $1895=$count;
+ var $1896=((($1895)-(1))|0);
+ $count=$1896;
+ var $1897=$x;
+ var $1898=((($1897)+(1))|0);
+ $x=$1898;
+ var $1899=$mixmask;
+ var $1900=($1899&255);
+ var $1901=$1900<<1;
+ var $1902=(($1901)&255);
+ $mixmask=$1902;
+ var $1903=$mixmask;
+ var $1904=($1903&255);
+ var $1905=($1904|0)==0;
+ if($1905){label=139;break;}else{label=143;break;}
+ case 139:
+ var $1907=$fom_mask;
+ var $1908=($1907|0)!=0;
+ if($1908){label=140;break;}else{label=141;break;}
+ case 140:
+ var $1910=$fom_mask;
+ var $1917=$1910;label=142;break;
+ case 141:
+ var $1912=$5;
+ var $1913=(($1912+1)|0);
+ $5=$1913;
+ var $1914=HEAP8[($1912)];
+ var $1915=($1914&255);
+ var $1917=$1915;label=142;break;
+ case 142:
+ var $1917;
+ var $1918=(($1917)&255);
+ $mask=$1918;
+ $mixmask=1;
+ label=143;break;
+ case 143:
+ var $1920=$mask;
+ var $1921=($1920&255);
+ var $1922=$mixmask;
+ var $1923=($1922&255);
+ var $1924=$1921&$1923;
+ var $1925=($1924|0)!=0;
+ if($1925){label=144;break;}else{label=145;break;}
+ case 144:
+ var $1927=(($mix)|0);
+ var $1928=HEAP8[($1927)];
+ var $1929=$x;
+ var $1930=((($1929)*(3))&-1);
+ var $1931=$line;
+ var $1932=(($1931+$1930)|0);
+ HEAP8[($1932)]=$1928;
+ var $1933=(($mix+1)|0);
+ var $1934=HEAP8[($1933)];
+ var $1935=$x;
+ var $1936=((($1935)*(3))&-1);
+ var $1937=((($1936)+(1))|0);
+ var $1938=$line;
+ var $1939=(($1938+$1937)|0);
+ HEAP8[($1939)]=$1934;
+ var $1940=(($mix+2)|0);
+ var $1941=HEAP8[($1940)];
+ var $1942=$x;
+ var $1943=((($1942)*(3))&-1);
+ var $1944=((($1943)+(2))|0);
+ var $1945=$line;
+ var $1946=(($1945+$1944)|0);
+ HEAP8[($1946)]=$1941;
+ label=146;break;
+ case 145:
+ var $1948=$x;
+ var $1949=((($1948)*(3))&-1);
+ var $1950=$line;
+ var $1951=(($1950+$1949)|0);
+ HEAP8[($1951)]=0;
+ var $1952=$x;
+ var $1953=((($1952)*(3))&-1);
+ var $1954=((($1953)+(1))|0);
+ var $1955=$line;
+ var $1956=(($1955+$1954)|0);
+ HEAP8[($1956)]=0;
+ var $1957=$x;
+ var $1958=((($1957)*(3))&-1);
+ var $1959=((($1958)+(2))|0);
+ var $1960=$line;
+ var $1961=(($1960+$1959)|0);
+ HEAP8[($1961)]=0;
+ label=146;break;
+ case 146:
+ var $1963=$count;
+ var $1964=((($1963)-(1))|0);
+ $count=$1964;
+ var $1965=$x;
+ var $1966=((($1965)+(1))|0);
+ $x=$1966;
+ var $1967=$mixmask;
+ var $1968=($1967&255);
+ var $1969=$1968<<1;
+ var $1970=(($1969)&255);
+ $mixmask=$1970;
+ var $1971=$mixmask;
+ var $1972=($1971&255);
+ var $1973=($1972|0)==0;
+ if($1973){label=147;break;}else{label=151;break;}
+ case 147:
+ var $1975=$fom_mask;
+ var $1976=($1975|0)!=0;
+ if($1976){label=148;break;}else{label=149;break;}
+ case 148:
+ var $1978=$fom_mask;
+ var $1985=$1978;label=150;break;
+ case 149:
+ var $1980=$5;
+ var $1981=(($1980+1)|0);
+ $5=$1981;
+ var $1982=HEAP8[($1980)];
+ var $1983=($1982&255);
+ var $1985=$1983;label=150;break;
+ case 150:
+ var $1985;
+ var $1986=(($1985)&255);
+ $mask=$1986;
+ $mixmask=1;
+ label=151;break;
+ case 151:
+ var $1988=$mask;
+ var $1989=($1988&255);
+ var $1990=$mixmask;
+ var $1991=($1990&255);
+ var $1992=$1989&$1991;
+ var $1993=($1992|0)!=0;
+ if($1993){label=152;break;}else{label=153;break;}
+ case 152:
+ var $1995=(($mix)|0);
+ var $1996=HEAP8[($1995)];
+ var $1997=$x;
+ var $1998=((($1997)*(3))&-1);
+ var $1999=$line;
+ var $2000=(($1999+$1998)|0);
+ HEAP8[($2000)]=$1996;
+ var $2001=(($mix+1)|0);
+ var $2002=HEAP8[($2001)];
+ var $2003=$x;
+ var $2004=((($2003)*(3))&-1);
+ var $2005=((($2004)+(1))|0);
+ var $2006=$line;
+ var $2007=(($2006+$2005)|0);
+ HEAP8[($2007)]=$2002;
+ var $2008=(($mix+2)|0);
+ var $2009=HEAP8[($2008)];
+ var $2010=$x;
+ var $2011=((($2010)*(3))&-1);
+ var $2012=((($2011)+(2))|0);
+ var $2013=$line;
+ var $2014=(($2013+$2012)|0);
+ HEAP8[($2014)]=$2009;
+ label=154;break;
+ case 153:
+ var $2016=$x;
+ var $2017=((($2016)*(3))&-1);
+ var $2018=$line;
+ var $2019=(($2018+$2017)|0);
+ HEAP8[($2019)]=0;
+ var $2020=$x;
+ var $2021=((($2020)*(3))&-1);
+ var $2022=((($2021)+(1))|0);
+ var $2023=$line;
+ var $2024=(($2023+$2022)|0);
+ HEAP8[($2024)]=0;
+ var $2025=$x;
+ var $2026=((($2025)*(3))&-1);
+ var $2027=((($2026)+(2))|0);
+ var $2028=$line;
+ var $2029=(($2028+$2027)|0);
+ HEAP8[($2029)]=0;
+ label=154;break;
+ case 154:
+ var $2031=$count;
+ var $2032=((($2031)-(1))|0);
+ $count=$2032;
+ var $2033=$x;
+ var $2034=((($2033)+(1))|0);
+ $x=$2034;
+ var $2035=$mixmask;
+ var $2036=($2035&255);
+ var $2037=$2036<<1;
+ var $2038=(($2037)&255);
+ $mixmask=$2038;
+ var $2039=$mixmask;
+ var $2040=($2039&255);
+ var $2041=($2040|0)==0;
+ if($2041){label=155;break;}else{label=159;break;}
+ case 155:
+ var $2043=$fom_mask;
+ var $2044=($2043|0)!=0;
+ if($2044){label=156;break;}else{label=157;break;}
+ case 156:
+ var $2046=$fom_mask;
+ var $2053=$2046;label=158;break;
+ case 157:
+ var $2048=$5;
+ var $2049=(($2048+1)|0);
+ $5=$2049;
+ var $2050=HEAP8[($2048)];
+ var $2051=($2050&255);
+ var $2053=$2051;label=158;break;
+ case 158:
+ var $2053;
+ var $2054=(($2053)&255);
+ $mask=$2054;
+ $mixmask=1;
+ label=159;break;
+ case 159:
+ var $2056=$mask;
+ var $2057=($2056&255);
+ var $2058=$mixmask;
+ var $2059=($2058&255);
+ var $2060=$2057&$2059;
+ var $2061=($2060|0)!=0;
+ if($2061){label=160;break;}else{label=161;break;}
+ case 160:
+ var $2063=(($mix)|0);
+ var $2064=HEAP8[($2063)];
+ var $2065=$x;
+ var $2066=((($2065)*(3))&-1);
+ var $2067=$line;
+ var $2068=(($2067+$2066)|0);
+ HEAP8[($2068)]=$2064;
+ var $2069=(($mix+1)|0);
+ var $2070=HEAP8[($2069)];
+ var $2071=$x;
+ var $2072=((($2071)*(3))&-1);
+ var $2073=((($2072)+(1))|0);
+ var $2074=$line;
+ var $2075=(($2074+$2073)|0);
+ HEAP8[($2075)]=$2070;
+ var $2076=(($mix+2)|0);
+ var $2077=HEAP8[($2076)];
+ var $2078=$x;
+ var $2079=((($2078)*(3))&-1);
+ var $2080=((($2079)+(2))|0);
+ var $2081=$line;
+ var $2082=(($2081+$2080)|0);
+ HEAP8[($2082)]=$2077;
+ label=162;break;
+ case 161:
+ var $2084=$x;
+ var $2085=((($2084)*(3))&-1);
+ var $2086=$line;
+ var $2087=(($2086+$2085)|0);
+ HEAP8[($2087)]=0;
+ var $2088=$x;
+ var $2089=((($2088)*(3))&-1);
+ var $2090=((($2089)+(1))|0);
+ var $2091=$line;
+ var $2092=(($2091+$2090)|0);
+ HEAP8[($2092)]=0;
+ var $2093=$x;
+ var $2094=((($2093)*(3))&-1);
+ var $2095=((($2094)+(2))|0);
+ var $2096=$line;
+ var $2097=(($2096+$2095)|0);
+ HEAP8[($2097)]=0;
+ label=162;break;
+ case 162:
+ var $2099=$count;
+ var $2100=((($2099)-(1))|0);
+ $count=$2100;
+ var $2101=$x;
+ var $2102=((($2101)+(1))|0);
+ $x=$2102;
+ label=95;break;
+ case 163:
+ label=164;break;
+ case 164:
+ var $2105=$count;
+ var $2106=($2105|0)>0;
+ if($2106){label=165;break;}else{var $2112=0;label=166;break;}
+ case 165:
+ var $2108=$x;
+ var $2109=$3;
+ var $2110=($2108|0)<($2109|0);
+ var $2112=$2110;label=166;break;
+ case 166:
+ var $2112;
+ if($2112){label=167;break;}else{label=176;break;}
+ case 167:
+ var $2114=$mixmask;
+ var $2115=($2114&255);
+ var $2116=$2115<<1;
+ var $2117=(($2116)&255);
+ $mixmask=$2117;
+ var $2118=$mixmask;
+ var $2119=($2118&255);
+ var $2120=($2119|0)==0;
+ if($2120){label=168;break;}else{label=172;break;}
+ case 168:
+ var $2122=$fom_mask;
+ var $2123=($2122|0)!=0;
+ if($2123){label=169;break;}else{label=170;break;}
+ case 169:
+ var $2125=$fom_mask;
+ var $2132=$2125;label=171;break;
+ case 170:
+ var $2127=$5;
+ var $2128=(($2127+1)|0);
+ $5=$2128;
+ var $2129=HEAP8[($2127)];
+ var $2130=($2129&255);
+ var $2132=$2130;label=171;break;
+ case 171:
+ var $2132;
+ var $2133=(($2132)&255);
+ $mask=$2133;
+ $mixmask=1;
+ label=172;break;
+ case 172:
+ var $2135=$mask;
+ var $2136=($2135&255);
+ var $2137=$mixmask;
+ var $2138=($2137&255);
+ var $2139=$2136&$2138;
+ var $2140=($2139|0)!=0;
+ if($2140){label=173;break;}else{label=174;break;}
+ case 173:
+ var $2142=(($mix)|0);
+ var $2143=HEAP8[($2142)];
+ var $2144=$x;
+ var $2145=((($2144)*(3))&-1);
+ var $2146=$line;
+ var $2147=(($2146+$2145)|0);
+ HEAP8[($2147)]=$2143;
+ var $2148=(($mix+1)|0);
+ var $2149=HEAP8[($2148)];
+ var $2150=$x;
+ var $2151=((($2150)*(3))&-1);
+ var $2152=((($2151)+(1))|0);
+ var $2153=$line;
+ var $2154=(($2153+$2152)|0);
+ HEAP8[($2154)]=$2149;
+ var $2155=(($mix+2)|0);
+ var $2156=HEAP8[($2155)];
+ var $2157=$x;
+ var $2158=((($2157)*(3))&-1);
+ var $2159=((($2158)+(2))|0);
+ var $2160=$line;
+ var $2161=(($2160+$2159)|0);
+ HEAP8[($2161)]=$2156;
+ label=175;break;
+ case 174:
+ var $2163=$x;
+ var $2164=((($2163)*(3))&-1);
+ var $2165=$line;
+ var $2166=(($2165+$2164)|0);
+ HEAP8[($2166)]=0;
+ var $2167=$x;
+ var $2168=((($2167)*(3))&-1);
+ var $2169=((($2168)+(1))|0);
+ var $2170=$line;
+ var $2171=(($2170+$2169)|0);
+ HEAP8[($2171)]=0;
+ var $2172=$x;
+ var $2173=((($2172)*(3))&-1);
+ var $2174=((($2173)+(2))|0);
+ var $2175=$line;
+ var $2176=(($2175+$2174)|0);
+ HEAP8[($2176)]=0;
+ label=175;break;
+ case 175:
+ var $2178=$count;
+ var $2179=((($2178)-(1))|0);
+ $count=$2179;
+ var $2180=$x;
+ var $2181=((($2180)+(1))|0);
+ $x=$2181;
+ label=164;break;
+ case 176:
+ label=260;break;
+ case 177:
+ label=178;break;
+ case 178:
+ var $2185=$count;
+ var $2186=$2185&-8;
+ var $2187=($2186|0)!=0;
+ if($2187){label=179;break;}else{var $2194=0;label=180;break;}
+ case 179:
+ var $2189=$x;
+ var $2190=((($2189)+(8))|0);
+ var $2191=$3;
+ var $2192=($2190|0)<($2191|0);
+ var $2194=$2192;label=180;break;
+ case 180:
+ var $2194;
+ if($2194){label=181;break;}else{label=246;break;}
+ case 181:
+ var $2196=$mixmask;
+ var $2197=($2196&255);
+ var $2198=$2197<<1;
+ var $2199=(($2198)&255);
+ $mixmask=$2199;
+ var $2200=$mixmask;
+ var $2201=($2200&255);
+ var $2202=($2201|0)==0;
+ if($2202){label=182;break;}else{label=186;break;}
+ case 182:
+ var $2204=$fom_mask;
+ var $2205=($2204|0)!=0;
+ if($2205){label=183;break;}else{label=184;break;}
+ case 183:
+ var $2207=$fom_mask;
+ var $2214=$2207;label=185;break;
+ case 184:
+ var $2209=$5;
+ var $2210=(($2209+1)|0);
+ $5=$2210;
+ var $2211=HEAP8[($2209)];
+ var $2212=($2211&255);
+ var $2214=$2212;label=185;break;
+ case 185:
+ var $2214;
+ var $2215=(($2214)&255);
+ $mask=$2215;
+ $mixmask=1;
+ label=186;break;
+ case 186:
+ var $2217=$mask;
+ var $2218=($2217&255);
+ var $2219=$mixmask;
+ var $2220=($2219&255);
+ var $2221=$2218&$2220;
+ var $2222=($2221|0)!=0;
+ if($2222){label=187;break;}else{label=188;break;}
+ case 187:
+ var $2224=$x;
+ var $2225=((($2224)*(3))&-1);
+ var $2226=$prevline;
+ var $2227=(($2226+$2225)|0);
+ var $2228=HEAP8[($2227)];
+ var $2229=($2228&255);
+ var $2230=(($mix)|0);
+ var $2231=HEAP8[($2230)];
+ var $2232=($2231&255);
+ var $2233=$2229^$2232;
+ var $2234=(($2233)&255);
+ var $2235=$x;
+ var $2236=((($2235)*(3))&-1);
+ var $2237=$line;
+ var $2238=(($2237+$2236)|0);
+ HEAP8[($2238)]=$2234;
+ var $2239=$x;
+ var $2240=((($2239)*(3))&-1);
+ var $2241=((($2240)+(1))|0);
+ var $2242=$prevline;
+ var $2243=(($2242+$2241)|0);
+ var $2244=HEAP8[($2243)];
+ var $2245=($2244&255);
+ var $2246=(($mix+1)|0);
+ var $2247=HEAP8[($2246)];
+ var $2248=($2247&255);
+ var $2249=$2245^$2248;
+ var $2250=(($2249)&255);
+ var $2251=$x;
+ var $2252=((($2251)*(3))&-1);
+ var $2253=((($2252)+(1))|0);
+ var $2254=$line;
+ var $2255=(($2254+$2253)|0);
+ HEAP8[($2255)]=$2250;
+ var $2256=$x;
+ var $2257=((($2256)*(3))&-1);
+ var $2258=((($2257)+(2))|0);
+ var $2259=$prevline;
+ var $2260=(($2259+$2258)|0);
+ var $2261=HEAP8[($2260)];
+ var $2262=($2261&255);
+ var $2263=(($mix+2)|0);
+ var $2264=HEAP8[($2263)];
+ var $2265=($2264&255);
+ var $2266=$2262^$2265;
+ var $2267=(($2266)&255);
+ var $2268=$x;
+ var $2269=((($2268)*(3))&-1);
+ var $2270=((($2269)+(2))|0);
+ var $2271=$line;
+ var $2272=(($2271+$2270)|0);
+ HEAP8[($2272)]=$2267;
+ label=189;break;
+ case 188:
+ var $2274=$x;
+ var $2275=((($2274)*(3))&-1);
+ var $2276=$prevline;
+ var $2277=(($2276+$2275)|0);
+ var $2278=HEAP8[($2277)];
+ var $2279=$x;
+ var $2280=((($2279)*(3))&-1);
+ var $2281=$line;
+ var $2282=(($2281+$2280)|0);
+ HEAP8[($2282)]=$2278;
+ var $2283=$x;
+ var $2284=((($2283)*(3))&-1);
+ var $2285=((($2284)+(1))|0);
+ var $2286=$prevline;
+ var $2287=(($2286+$2285)|0);
+ var $2288=HEAP8[($2287)];
+ var $2289=$x;
+ var $2290=((($2289)*(3))&-1);
+ var $2291=((($2290)+(1))|0);
+ var $2292=$line;
+ var $2293=(($2292+$2291)|0);
+ HEAP8[($2293)]=$2288;
+ var $2294=$x;
+ var $2295=((($2294)*(3))&-1);
+ var $2296=((($2295)+(2))|0);
+ var $2297=$prevline;
+ var $2298=(($2297+$2296)|0);
+ var $2299=HEAP8[($2298)];
+ var $2300=$x;
+ var $2301=((($2300)*(3))&-1);
+ var $2302=((($2301)+(2))|0);
+ var $2303=$line;
+ var $2304=(($2303+$2302)|0);
+ HEAP8[($2304)]=$2299;
+ label=189;break;
+ case 189:
+ var $2306=$count;
+ var $2307=((($2306)-(1))|0);
+ $count=$2307;
+ var $2308=$x;
+ var $2309=((($2308)+(1))|0);
+ $x=$2309;
+ var $2310=$mixmask;
+ var $2311=($2310&255);
+ var $2312=$2311<<1;
+ var $2313=(($2312)&255);
+ $mixmask=$2313;
+ var $2314=$mixmask;
+ var $2315=($2314&255);
+ var $2316=($2315|0)==0;
+ if($2316){label=190;break;}else{label=194;break;}
+ case 190:
+ var $2318=$fom_mask;
+ var $2319=($2318|0)!=0;
+ if($2319){label=191;break;}else{label=192;break;}
+ case 191:
+ var $2321=$fom_mask;
+ var $2328=$2321;label=193;break;
+ case 192:
+ var $2323=$5;
+ var $2324=(($2323+1)|0);
+ $5=$2324;
+ var $2325=HEAP8[($2323)];
+ var $2326=($2325&255);
+ var $2328=$2326;label=193;break;
+ case 193:
+ var $2328;
+ var $2329=(($2328)&255);
+ $mask=$2329;
+ $mixmask=1;
+ label=194;break;
+ case 194:
+ var $2331=$mask;
+ var $2332=($2331&255);
+ var $2333=$mixmask;
+ var $2334=($2333&255);
+ var $2335=$2332&$2334;
+ var $2336=($2335|0)!=0;
+ if($2336){label=195;break;}else{label=196;break;}
+ case 195:
+ var $2338=$x;
+ var $2339=((($2338)*(3))&-1);
+ var $2340=$prevline;
+ var $2341=(($2340+$2339)|0);
+ var $2342=HEAP8[($2341)];
+ var $2343=($2342&255);
+ var $2344=(($mix)|0);
+ var $2345=HEAP8[($2344)];
+ var $2346=($2345&255);
+ var $2347=$2343^$2346;
+ var $2348=(($2347)&255);
+ var $2349=$x;
+ var $2350=((($2349)*(3))&-1);
+ var $2351=$line;
+ var $2352=(($2351+$2350)|0);
+ HEAP8[($2352)]=$2348;
+ var $2353=$x;
+ var $2354=((($2353)*(3))&-1);
+ var $2355=((($2354)+(1))|0);
+ var $2356=$prevline;
+ var $2357=(($2356+$2355)|0);
+ var $2358=HEAP8[($2357)];
+ var $2359=($2358&255);
+ var $2360=(($mix+1)|0);
+ var $2361=HEAP8[($2360)];
+ var $2362=($2361&255);
+ var $2363=$2359^$2362;
+ var $2364=(($2363)&255);
+ var $2365=$x;
+ var $2366=((($2365)*(3))&-1);
+ var $2367=((($2366)+(1))|0);
+ var $2368=$line;
+ var $2369=(($2368+$2367)|0);
+ HEAP8[($2369)]=$2364;
+ var $2370=$x;
+ var $2371=((($2370)*(3))&-1);
+ var $2372=((($2371)+(2))|0);
+ var $2373=$prevline;
+ var $2374=(($2373+$2372)|0);
+ var $2375=HEAP8[($2374)];
+ var $2376=($2375&255);
+ var $2377=(($mix+2)|0);
+ var $2378=HEAP8[($2377)];
+ var $2379=($2378&255);
+ var $2380=$2376^$2379;
+ var $2381=(($2380)&255);
+ var $2382=$x;
+ var $2383=((($2382)*(3))&-1);
+ var $2384=((($2383)+(2))|0);
+ var $2385=$line;
+ var $2386=(($2385+$2384)|0);
+ HEAP8[($2386)]=$2381;
+ label=197;break;
+ case 196:
+ var $2388=$x;
+ var $2389=((($2388)*(3))&-1);
+ var $2390=$prevline;
+ var $2391=(($2390+$2389)|0);
+ var $2392=HEAP8[($2391)];
+ var $2393=$x;
+ var $2394=((($2393)*(3))&-1);
+ var $2395=$line;
+ var $2396=(($2395+$2394)|0);
+ HEAP8[($2396)]=$2392;
+ var $2397=$x;
+ var $2398=((($2397)*(3))&-1);
+ var $2399=((($2398)+(1))|0);
+ var $2400=$prevline;
+ var $2401=(($2400+$2399)|0);
+ var $2402=HEAP8[($2401)];
+ var $2403=$x;
+ var $2404=((($2403)*(3))&-1);
+ var $2405=((($2404)+(1))|0);
+ var $2406=$line;
+ var $2407=(($2406+$2405)|0);
+ HEAP8[($2407)]=$2402;
+ var $2408=$x;
+ var $2409=((($2408)*(3))&-1);
+ var $2410=((($2409)+(2))|0);
+ var $2411=$prevline;
+ var $2412=(($2411+$2410)|0);
+ var $2413=HEAP8[($2412)];
+ var $2414=$x;
+ var $2415=((($2414)*(3))&-1);
+ var $2416=((($2415)+(2))|0);
+ var $2417=$line;
+ var $2418=(($2417+$2416)|0);
+ HEAP8[($2418)]=$2413;
+ label=197;break;
+ case 197:
+ var $2420=$count;
+ var $2421=((($2420)-(1))|0);
+ $count=$2421;
+ var $2422=$x;
+ var $2423=((($2422)+(1))|0);
+ $x=$2423;
+ var $2424=$mixmask;
+ var $2425=($2424&255);
+ var $2426=$2425<<1;
+ var $2427=(($2426)&255);
+ $mixmask=$2427;
+ var $2428=$mixmask;
+ var $2429=($2428&255);
+ var $2430=($2429|0)==0;
+ if($2430){label=198;break;}else{label=202;break;}
+ case 198:
+ var $2432=$fom_mask;
+ var $2433=($2432|0)!=0;
+ if($2433){label=199;break;}else{label=200;break;}
+ case 199:
+ var $2435=$fom_mask;
+ var $2442=$2435;label=201;break;
+ case 200:
+ var $2437=$5;
+ var $2438=(($2437+1)|0);
+ $5=$2438;
+ var $2439=HEAP8[($2437)];
+ var $2440=($2439&255);
+ var $2442=$2440;label=201;break;
+ case 201:
+ var $2442;
+ var $2443=(($2442)&255);
+ $mask=$2443;
+ $mixmask=1;
+ label=202;break;
+ case 202:
+ var $2445=$mask;
+ var $2446=($2445&255);
+ var $2447=$mixmask;
+ var $2448=($2447&255);
+ var $2449=$2446&$2448;
+ var $2450=($2449|0)!=0;
+ if($2450){label=203;break;}else{label=204;break;}
+ case 203:
+ var $2452=$x;
+ var $2453=((($2452)*(3))&-1);
+ var $2454=$prevline;
+ var $2455=(($2454+$2453)|0);
+ var $2456=HEAP8[($2455)];
+ var $2457=($2456&255);
+ var $2458=(($mix)|0);
+ var $2459=HEAP8[($2458)];
+ var $2460=($2459&255);
+ var $2461=$2457^$2460;
+ var $2462=(($2461)&255);
+ var $2463=$x;
+ var $2464=((($2463)*(3))&-1);
+ var $2465=$line;
+ var $2466=(($2465+$2464)|0);
+ HEAP8[($2466)]=$2462;
+ var $2467=$x;
+ var $2468=((($2467)*(3))&-1);
+ var $2469=((($2468)+(1))|0);
+ var $2470=$prevline;
+ var $2471=(($2470+$2469)|0);
+ var $2472=HEAP8[($2471)];
+ var $2473=($2472&255);
+ var $2474=(($mix+1)|0);
+ var $2475=HEAP8[($2474)];
+ var $2476=($2475&255);
+ var $2477=$2473^$2476;
+ var $2478=(($2477)&255);
+ var $2479=$x;
+ var $2480=((($2479)*(3))&-1);
+ var $2481=((($2480)+(1))|0);
+ var $2482=$line;
+ var $2483=(($2482+$2481)|0);
+ HEAP8[($2483)]=$2478;
+ var $2484=$x;
+ var $2485=((($2484)*(3))&-1);
+ var $2486=((($2485)+(2))|0);
+ var $2487=$prevline;
+ var $2488=(($2487+$2486)|0);
+ var $2489=HEAP8[($2488)];
+ var $2490=($2489&255);
+ var $2491=(($mix+2)|0);
+ var $2492=HEAP8[($2491)];
+ var $2493=($2492&255);
+ var $2494=$2490^$2493;
+ var $2495=(($2494)&255);
+ var $2496=$x;
+ var $2497=((($2496)*(3))&-1);
+ var $2498=((($2497)+(2))|0);
+ var $2499=$line;
+ var $2500=(($2499+$2498)|0);
+ HEAP8[($2500)]=$2495;
+ label=205;break;
+ case 204:
+ var $2502=$x;
+ var $2503=((($2502)*(3))&-1);
+ var $2504=$prevline;
+ var $2505=(($2504+$2503)|0);
+ var $2506=HEAP8[($2505)];
+ var $2507=$x;
+ var $2508=((($2507)*(3))&-1);
+ var $2509=$line;
+ var $2510=(($2509+$2508)|0);
+ HEAP8[($2510)]=$2506;
+ var $2511=$x;
+ var $2512=((($2511)*(3))&-1);
+ var $2513=((($2512)+(1))|0);
+ var $2514=$prevline;
+ var $2515=(($2514+$2513)|0);
+ var $2516=HEAP8[($2515)];
+ var $2517=$x;
+ var $2518=((($2517)*(3))&-1);
+ var $2519=((($2518)+(1))|0);
+ var $2520=$line;
+ var $2521=(($2520+$2519)|0);
+ HEAP8[($2521)]=$2516;
+ var $2522=$x;
+ var $2523=((($2522)*(3))&-1);
+ var $2524=((($2523)+(2))|0);
+ var $2525=$prevline;
+ var $2526=(($2525+$2524)|0);
+ var $2527=HEAP8[($2526)];
+ var $2528=$x;
+ var $2529=((($2528)*(3))&-1);
+ var $2530=((($2529)+(2))|0);
+ var $2531=$line;
+ var $2532=(($2531+$2530)|0);
+ HEAP8[($2532)]=$2527;
+ label=205;break;
+ case 205:
+ var $2534=$count;
+ var $2535=((($2534)-(1))|0);
+ $count=$2535;
+ var $2536=$x;
+ var $2537=((($2536)+(1))|0);
+ $x=$2537;
+ var $2538=$mixmask;
+ var $2539=($2538&255);
+ var $2540=$2539<<1;
+ var $2541=(($2540)&255);
+ $mixmask=$2541;
+ var $2542=$mixmask;
+ var $2543=($2542&255);
+ var $2544=($2543|0)==0;
+ if($2544){label=206;break;}else{label=210;break;}
+ case 206:
+ var $2546=$fom_mask;
+ var $2547=($2546|0)!=0;
+ if($2547){label=207;break;}else{label=208;break;}
+ case 207:
+ var $2549=$fom_mask;
+ var $2556=$2549;label=209;break;
+ case 208:
+ var $2551=$5;
+ var $2552=(($2551+1)|0);
+ $5=$2552;
+ var $2553=HEAP8[($2551)];
+ var $2554=($2553&255);
+ var $2556=$2554;label=209;break;
+ case 209:
+ var $2556;
+ var $2557=(($2556)&255);
+ $mask=$2557;
+ $mixmask=1;
+ label=210;break;
+ case 210:
+ var $2559=$mask;
+ var $2560=($2559&255);
+ var $2561=$mixmask;
+ var $2562=($2561&255);
+ var $2563=$2560&$2562;
+ var $2564=($2563|0)!=0;
+ if($2564){label=211;break;}else{label=212;break;}
+ case 211:
+ var $2566=$x;
+ var $2567=((($2566)*(3))&-1);
+ var $2568=$prevline;
+ var $2569=(($2568+$2567)|0);
+ var $2570=HEAP8[($2569)];
+ var $2571=($2570&255);
+ var $2572=(($mix)|0);
+ var $2573=HEAP8[($2572)];
+ var $2574=($2573&255);
+ var $2575=$2571^$2574;
+ var $2576=(($2575)&255);
+ var $2577=$x;
+ var $2578=((($2577)*(3))&-1);
+ var $2579=$line;
+ var $2580=(($2579+$2578)|0);
+ HEAP8[($2580)]=$2576;
+ var $2581=$x;
+ var $2582=((($2581)*(3))&-1);
+ var $2583=((($2582)+(1))|0);
+ var $2584=$prevline;
+ var $2585=(($2584+$2583)|0);
+ var $2586=HEAP8[($2585)];
+ var $2587=($2586&255);
+ var $2588=(($mix+1)|0);
+ var $2589=HEAP8[($2588)];
+ var $2590=($2589&255);
+ var $2591=$2587^$2590;
+ var $2592=(($2591)&255);
+ var $2593=$x;
+ var $2594=((($2593)*(3))&-1);
+ var $2595=((($2594)+(1))|0);
+ var $2596=$line;
+ var $2597=(($2596+$2595)|0);
+ HEAP8[($2597)]=$2592;
+ var $2598=$x;
+ var $2599=((($2598)*(3))&-1);
+ var $2600=((($2599)+(2))|0);
+ var $2601=$prevline;
+ var $2602=(($2601+$2600)|0);
+ var $2603=HEAP8[($2602)];
+ var $2604=($2603&255);
+ var $2605=(($mix+2)|0);
+ var $2606=HEAP8[($2605)];
+ var $2607=($2606&255);
+ var $2608=$2604^$2607;
+ var $2609=(($2608)&255);
+ var $2610=$x;
+ var $2611=((($2610)*(3))&-1);
+ var $2612=((($2611)+(2))|0);
+ var $2613=$line;
+ var $2614=(($2613+$2612)|0);
+ HEAP8[($2614)]=$2609;
+ label=213;break;
+ case 212:
+ var $2616=$x;
+ var $2617=((($2616)*(3))&-1);
+ var $2618=$prevline;
+ var $2619=(($2618+$2617)|0);
+ var $2620=HEAP8[($2619)];
+ var $2621=$x;
+ var $2622=((($2621)*(3))&-1);
+ var $2623=$line;
+ var $2624=(($2623+$2622)|0);
+ HEAP8[($2624)]=$2620;
+ var $2625=$x;
+ var $2626=((($2625)*(3))&-1);
+ var $2627=((($2626)+(1))|0);
+ var $2628=$prevline;
+ var $2629=(($2628+$2627)|0);
+ var $2630=HEAP8[($2629)];
+ var $2631=$x;
+ var $2632=((($2631)*(3))&-1);
+ var $2633=((($2632)+(1))|0);
+ var $2634=$line;
+ var $2635=(($2634+$2633)|0);
+ HEAP8[($2635)]=$2630;
+ var $2636=$x;
+ var $2637=((($2636)*(3))&-1);
+ var $2638=((($2637)+(2))|0);
+ var $2639=$prevline;
+ var $2640=(($2639+$2638)|0);
+ var $2641=HEAP8[($2640)];
+ var $2642=$x;
+ var $2643=((($2642)*(3))&-1);
+ var $2644=((($2643)+(2))|0);
+ var $2645=$line;
+ var $2646=(($2645+$2644)|0);
+ HEAP8[($2646)]=$2641;
+ label=213;break;
+ case 213:
+ var $2648=$count;
+ var $2649=((($2648)-(1))|0);
+ $count=$2649;
+ var $2650=$x;
+ var $2651=((($2650)+(1))|0);
+ $x=$2651;
+ var $2652=$mixmask;
+ var $2653=($2652&255);
+ var $2654=$2653<<1;
+ var $2655=(($2654)&255);
+ $mixmask=$2655;
+ var $2656=$mixmask;
+ var $2657=($2656&255);
+ var $2658=($2657|0)==0;
+ if($2658){label=214;break;}else{label=218;break;}
+ case 214:
+ var $2660=$fom_mask;
+ var $2661=($2660|0)!=0;
+ if($2661){label=215;break;}else{label=216;break;}
+ case 215:
+ var $2663=$fom_mask;
+ var $2670=$2663;label=217;break;
+ case 216:
+ var $2665=$5;
+ var $2666=(($2665+1)|0);
+ $5=$2666;
+ var $2667=HEAP8[($2665)];
+ var $2668=($2667&255);
+ var $2670=$2668;label=217;break;
+ case 217:
+ var $2670;
+ var $2671=(($2670)&255);
+ $mask=$2671;
+ $mixmask=1;
+ label=218;break;
+ case 218:
+ var $2673=$mask;
+ var $2674=($2673&255);
+ var $2675=$mixmask;
+ var $2676=($2675&255);
+ var $2677=$2674&$2676;
+ var $2678=($2677|0)!=0;
+ if($2678){label=219;break;}else{label=220;break;}
+ case 219:
+ var $2680=$x;
+ var $2681=((($2680)*(3))&-1);
+ var $2682=$prevline;
+ var $2683=(($2682+$2681)|0);
+ var $2684=HEAP8[($2683)];
+ var $2685=($2684&255);
+ var $2686=(($mix)|0);
+ var $2687=HEAP8[($2686)];
+ var $2688=($2687&255);
+ var $2689=$2685^$2688;
+ var $2690=(($2689)&255);
+ var $2691=$x;
+ var $2692=((($2691)*(3))&-1);
+ var $2693=$line;
+ var $2694=(($2693+$2692)|0);
+ HEAP8[($2694)]=$2690;
+ var $2695=$x;
+ var $2696=((($2695)*(3))&-1);
+ var $2697=((($2696)+(1))|0);
+ var $2698=$prevline;
+ var $2699=(($2698+$2697)|0);
+ var $2700=HEAP8[($2699)];
+ var $2701=($2700&255);
+ var $2702=(($mix+1)|0);
+ var $2703=HEAP8[($2702)];
+ var $2704=($2703&255);
+ var $2705=$2701^$2704;
+ var $2706=(($2705)&255);
+ var $2707=$x;
+ var $2708=((($2707)*(3))&-1);
+ var $2709=((($2708)+(1))|0);
+ var $2710=$line;
+ var $2711=(($2710+$2709)|0);
+ HEAP8[($2711)]=$2706;
+ var $2712=$x;
+ var $2713=((($2712)*(3))&-1);
+ var $2714=((($2713)+(2))|0);
+ var $2715=$prevline;
+ var $2716=(($2715+$2714)|0);
+ var $2717=HEAP8[($2716)];
+ var $2718=($2717&255);
+ var $2719=(($mix+2)|0);
+ var $2720=HEAP8[($2719)];
+ var $2721=($2720&255);
+ var $2722=$2718^$2721;
+ var $2723=(($2722)&255);
+ var $2724=$x;
+ var $2725=((($2724)*(3))&-1);
+ var $2726=((($2725)+(2))|0);
+ var $2727=$line;
+ var $2728=(($2727+$2726)|0);
+ HEAP8[($2728)]=$2723;
+ label=221;break;
+ case 220:
+ var $2730=$x;
+ var $2731=((($2730)*(3))&-1);
+ var $2732=$prevline;
+ var $2733=(($2732+$2731)|0);
+ var $2734=HEAP8[($2733)];
+ var $2735=$x;
+ var $2736=((($2735)*(3))&-1);
+ var $2737=$line;
+ var $2738=(($2737+$2736)|0);
+ HEAP8[($2738)]=$2734;
+ var $2739=$x;
+ var $2740=((($2739)*(3))&-1);
+ var $2741=((($2740)+(1))|0);
+ var $2742=$prevline;
+ var $2743=(($2742+$2741)|0);
+ var $2744=HEAP8[($2743)];
+ var $2745=$x;
+ var $2746=((($2745)*(3))&-1);
+ var $2747=((($2746)+(1))|0);
+ var $2748=$line;
+ var $2749=(($2748+$2747)|0);
+ HEAP8[($2749)]=$2744;
+ var $2750=$x;
+ var $2751=((($2750)*(3))&-1);
+ var $2752=((($2751)+(2))|0);
+ var $2753=$prevline;
+ var $2754=(($2753+$2752)|0);
+ var $2755=HEAP8[($2754)];
+ var $2756=$x;
+ var $2757=((($2756)*(3))&-1);
+ var $2758=((($2757)+(2))|0);
+ var $2759=$line;
+ var $2760=(($2759+$2758)|0);
+ HEAP8[($2760)]=$2755;
+ label=221;break;
+ case 221:
+ var $2762=$count;
+ var $2763=((($2762)-(1))|0);
+ $count=$2763;
+ var $2764=$x;
+ var $2765=((($2764)+(1))|0);
+ $x=$2765;
+ var $2766=$mixmask;
+ var $2767=($2766&255);
+ var $2768=$2767<<1;
+ var $2769=(($2768)&255);
+ $mixmask=$2769;
+ var $2770=$mixmask;
+ var $2771=($2770&255);
+ var $2772=($2771|0)==0;
+ if($2772){label=222;break;}else{label=226;break;}
+ case 222:
+ var $2774=$fom_mask;
+ var $2775=($2774|0)!=0;
+ if($2775){label=223;break;}else{label=224;break;}
+ case 223:
+ var $2777=$fom_mask;
+ var $2784=$2777;label=225;break;
+ case 224:
+ var $2779=$5;
+ var $2780=(($2779+1)|0);
+ $5=$2780;
+ var $2781=HEAP8[($2779)];
+ var $2782=($2781&255);
+ var $2784=$2782;label=225;break;
+ case 225:
+ var $2784;
+ var $2785=(($2784)&255);
+ $mask=$2785;
+ $mixmask=1;
+ label=226;break;
+ case 226:
+ var $2787=$mask;
+ var $2788=($2787&255);
+ var $2789=$mixmask;
+ var $2790=($2789&255);
+ var $2791=$2788&$2790;
+ var $2792=($2791|0)!=0;
+ if($2792){label=227;break;}else{label=228;break;}
+ case 227:
+ var $2794=$x;
+ var $2795=((($2794)*(3))&-1);
+ var $2796=$prevline;
+ var $2797=(($2796+$2795)|0);
+ var $2798=HEAP8[($2797)];
+ var $2799=($2798&255);
+ var $2800=(($mix)|0);
+ var $2801=HEAP8[($2800)];
+ var $2802=($2801&255);
+ var $2803=$2799^$2802;
+ var $2804=(($2803)&255);
+ var $2805=$x;
+ var $2806=((($2805)*(3))&-1);
+ var $2807=$line;
+ var $2808=(($2807+$2806)|0);
+ HEAP8[($2808)]=$2804;
+ var $2809=$x;
+ var $2810=((($2809)*(3))&-1);
+ var $2811=((($2810)+(1))|0);
+ var $2812=$prevline;
+ var $2813=(($2812+$2811)|0);
+ var $2814=HEAP8[($2813)];
+ var $2815=($2814&255);
+ var $2816=(($mix+1)|0);
+ var $2817=HEAP8[($2816)];
+ var $2818=($2817&255);
+ var $2819=$2815^$2818;
+ var $2820=(($2819)&255);
+ var $2821=$x;
+ var $2822=((($2821)*(3))&-1);
+ var $2823=((($2822)+(1))|0);
+ var $2824=$line;
+ var $2825=(($2824+$2823)|0);
+ HEAP8[($2825)]=$2820;
+ var $2826=$x;
+ var $2827=((($2826)*(3))&-1);
+ var $2828=((($2827)+(2))|0);
+ var $2829=$prevline;
+ var $2830=(($2829+$2828)|0);
+ var $2831=HEAP8[($2830)];
+ var $2832=($2831&255);
+ var $2833=(($mix+2)|0);
+ var $2834=HEAP8[($2833)];
+ var $2835=($2834&255);
+ var $2836=$2832^$2835;
+ var $2837=(($2836)&255);
+ var $2838=$x;
+ var $2839=((($2838)*(3))&-1);
+ var $2840=((($2839)+(2))|0);
+ var $2841=$line;
+ var $2842=(($2841+$2840)|0);
+ HEAP8[($2842)]=$2837;
+ label=229;break;
+ case 228:
+ var $2844=$x;
+ var $2845=((($2844)*(3))&-1);
+ var $2846=$prevline;
+ var $2847=(($2846+$2845)|0);
+ var $2848=HEAP8[($2847)];
+ var $2849=$x;
+ var $2850=((($2849)*(3))&-1);
+ var $2851=$line;
+ var $2852=(($2851+$2850)|0);
+ HEAP8[($2852)]=$2848;
+ var $2853=$x;
+ var $2854=((($2853)*(3))&-1);
+ var $2855=((($2854)+(1))|0);
+ var $2856=$prevline;
+ var $2857=(($2856+$2855)|0);
+ var $2858=HEAP8[($2857)];
+ var $2859=$x;
+ var $2860=((($2859)*(3))&-1);
+ var $2861=((($2860)+(1))|0);
+ var $2862=$line;
+ var $2863=(($2862+$2861)|0);
+ HEAP8[($2863)]=$2858;
+ var $2864=$x;
+ var $2865=((($2864)*(3))&-1);
+ var $2866=((($2865)+(2))|0);
+ var $2867=$prevline;
+ var $2868=(($2867+$2866)|0);
+ var $2869=HEAP8[($2868)];
+ var $2870=$x;
+ var $2871=((($2870)*(3))&-1);
+ var $2872=((($2871)+(2))|0);
+ var $2873=$line;
+ var $2874=(($2873+$2872)|0);
+ HEAP8[($2874)]=$2869;
+ label=229;break;
+ case 229:
+ var $2876=$count;
+ var $2877=((($2876)-(1))|0);
+ $count=$2877;
+ var $2878=$x;
+ var $2879=((($2878)+(1))|0);
+ $x=$2879;
+ var $2880=$mixmask;
+ var $2881=($2880&255);
+ var $2882=$2881<<1;
+ var $2883=(($2882)&255);
+ $mixmask=$2883;
+ var $2884=$mixmask;
+ var $2885=($2884&255);
+ var $2886=($2885|0)==0;
+ if($2886){label=230;break;}else{label=234;break;}
+ case 230:
+ var $2888=$fom_mask;
+ var $2889=($2888|0)!=0;
+ if($2889){label=231;break;}else{label=232;break;}
+ case 231:
+ var $2891=$fom_mask;
+ var $2898=$2891;label=233;break;
+ case 232:
+ var $2893=$5;
+ var $2894=(($2893+1)|0);
+ $5=$2894;
+ var $2895=HEAP8[($2893)];
+ var $2896=($2895&255);
+ var $2898=$2896;label=233;break;
+ case 233:
+ var $2898;
+ var $2899=(($2898)&255);
+ $mask=$2899;
+ $mixmask=1;
+ label=234;break;
+ case 234:
+ var $2901=$mask;
+ var $2902=($2901&255);
+ var $2903=$mixmask;
+ var $2904=($2903&255);
+ var $2905=$2902&$2904;
+ var $2906=($2905|0)!=0;
+ if($2906){label=235;break;}else{label=236;break;}
+ case 235:
+ var $2908=$x;
+ var $2909=((($2908)*(3))&-1);
+ var $2910=$prevline;
+ var $2911=(($2910+$2909)|0);
+ var $2912=HEAP8[($2911)];
+ var $2913=($2912&255);
+ var $2914=(($mix)|0);
+ var $2915=HEAP8[($2914)];
+ var $2916=($2915&255);
+ var $2917=$2913^$2916;
+ var $2918=(($2917)&255);
+ var $2919=$x;
+ var $2920=((($2919)*(3))&-1);
+ var $2921=$line;
+ var $2922=(($2921+$2920)|0);
+ HEAP8[($2922)]=$2918;
+ var $2923=$x;
+ var $2924=((($2923)*(3))&-1);
+ var $2925=((($2924)+(1))|0);
+ var $2926=$prevline;
+ var $2927=(($2926+$2925)|0);
+ var $2928=HEAP8[($2927)];
+ var $2929=($2928&255);
+ var $2930=(($mix+1)|0);
+ var $2931=HEAP8[($2930)];
+ var $2932=($2931&255);
+ var $2933=$2929^$2932;
+ var $2934=(($2933)&255);
+ var $2935=$x;
+ var $2936=((($2935)*(3))&-1);
+ var $2937=((($2936)+(1))|0);
+ var $2938=$line;
+ var $2939=(($2938+$2937)|0);
+ HEAP8[($2939)]=$2934;
+ var $2940=$x;
+ var $2941=((($2940)*(3))&-1);
+ var $2942=((($2941)+(2))|0);
+ var $2943=$prevline;
+ var $2944=(($2943+$2942)|0);
+ var $2945=HEAP8[($2944)];
+ var $2946=($2945&255);
+ var $2947=(($mix+2)|0);
+ var $2948=HEAP8[($2947)];
+ var $2949=($2948&255);
+ var $2950=$2946^$2949;
+ var $2951=(($2950)&255);
+ var $2952=$x;
+ var $2953=((($2952)*(3))&-1);
+ var $2954=((($2953)+(2))|0);
+ var $2955=$line;
+ var $2956=(($2955+$2954)|0);
+ HEAP8[($2956)]=$2951;
+ label=237;break;
+ case 236:
+ var $2958=$x;
+ var $2959=((($2958)*(3))&-1);
+ var $2960=$prevline;
+ var $2961=(($2960+$2959)|0);
+ var $2962=HEAP8[($2961)];
+ var $2963=$x;
+ var $2964=((($2963)*(3))&-1);
+ var $2965=$line;
+ var $2966=(($2965+$2964)|0);
+ HEAP8[($2966)]=$2962;
+ var $2967=$x;
+ var $2968=((($2967)*(3))&-1);
+ var $2969=((($2968)+(1))|0);
+ var $2970=$prevline;
+ var $2971=(($2970+$2969)|0);
+ var $2972=HEAP8[($2971)];
+ var $2973=$x;
+ var $2974=((($2973)*(3))&-1);
+ var $2975=((($2974)+(1))|0);
+ var $2976=$line;
+ var $2977=(($2976+$2975)|0);
+ HEAP8[($2977)]=$2972;
+ var $2978=$x;
+ var $2979=((($2978)*(3))&-1);
+ var $2980=((($2979)+(2))|0);
+ var $2981=$prevline;
+ var $2982=(($2981+$2980)|0);
+ var $2983=HEAP8[($2982)];
+ var $2984=$x;
+ var $2985=((($2984)*(3))&-1);
+ var $2986=((($2985)+(2))|0);
+ var $2987=$line;
+ var $2988=(($2987+$2986)|0);
+ HEAP8[($2988)]=$2983;
+ label=237;break;
+ case 237:
+ var $2990=$count;
+ var $2991=((($2990)-(1))|0);
+ $count=$2991;
+ var $2992=$x;
+ var $2993=((($2992)+(1))|0);
+ $x=$2993;
+ var $2994=$mixmask;
+ var $2995=($2994&255);
+ var $2996=$2995<<1;
+ var $2997=(($2996)&255);
+ $mixmask=$2997;
+ var $2998=$mixmask;
+ var $2999=($2998&255);
+ var $3000=($2999|0)==0;
+ if($3000){label=238;break;}else{label=242;break;}
+ case 238:
+ var $3002=$fom_mask;
+ var $3003=($3002|0)!=0;
+ if($3003){label=239;break;}else{label=240;break;}
+ case 239:
+ var $3005=$fom_mask;
+ var $3012=$3005;label=241;break;
+ case 240:
+ var $3007=$5;
+ var $3008=(($3007+1)|0);
+ $5=$3008;
+ var $3009=HEAP8[($3007)];
+ var $3010=($3009&255);
+ var $3012=$3010;label=241;break;
+ case 241:
+ var $3012;
+ var $3013=(($3012)&255);
+ $mask=$3013;
+ $mixmask=1;
+ label=242;break;
+ case 242:
+ var $3015=$mask;
+ var $3016=($3015&255);
+ var $3017=$mixmask;
+ var $3018=($3017&255);
+ var $3019=$3016&$3018;
+ var $3020=($3019|0)!=0;
+ if($3020){label=243;break;}else{label=244;break;}
+ case 243:
+ var $3022=$x;
+ var $3023=((($3022)*(3))&-1);
+ var $3024=$prevline;
+ var $3025=(($3024+$3023)|0);
+ var $3026=HEAP8[($3025)];
+ var $3027=($3026&255);
+ var $3028=(($mix)|0);
+ var $3029=HEAP8[($3028)];
+ var $3030=($3029&255);
+ var $3031=$3027^$3030;
+ var $3032=(($3031)&255);
+ var $3033=$x;
+ var $3034=((($3033)*(3))&-1);
+ var $3035=$line;
+ var $3036=(($3035+$3034)|0);
+ HEAP8[($3036)]=$3032;
+ var $3037=$x;
+ var $3038=((($3037)*(3))&-1);
+ var $3039=((($3038)+(1))|0);
+ var $3040=$prevline;
+ var $3041=(($3040+$3039)|0);
+ var $3042=HEAP8[($3041)];
+ var $3043=($3042&255);
+ var $3044=(($mix+1)|0);
+ var $3045=HEAP8[($3044)];
+ var $3046=($3045&255);
+ var $3047=$3043^$3046;
+ var $3048=(($3047)&255);
+ var $3049=$x;
+ var $3050=((($3049)*(3))&-1);
+ var $3051=((($3050)+(1))|0);
+ var $3052=$line;
+ var $3053=(($3052+$3051)|0);
+ HEAP8[($3053)]=$3048;
+ var $3054=$x;
+ var $3055=((($3054)*(3))&-1);
+ var $3056=((($3055)+(2))|0);
+ var $3057=$prevline;
+ var $3058=(($3057+$3056)|0);
+ var $3059=HEAP8[($3058)];
+ var $3060=($3059&255);
+ var $3061=(($mix+2)|0);
+ var $3062=HEAP8[($3061)];
+ var $3063=($3062&255);
+ var $3064=$3060^$3063;
+ var $3065=(($3064)&255);
+ var $3066=$x;
+ var $3067=((($3066)*(3))&-1);
+ var $3068=((($3067)+(2))|0);
+ var $3069=$line;
+ var $3070=(($3069+$3068)|0);
+ HEAP8[($3070)]=$3065;
+ label=245;break;
+ case 244:
+ var $3072=$x;
+ var $3073=((($3072)*(3))&-1);
+ var $3074=$prevline;
+ var $3075=(($3074+$3073)|0);
+ var $3076=HEAP8[($3075)];
+ var $3077=$x;
+ var $3078=((($3077)*(3))&-1);
+ var $3079=$line;
+ var $3080=(($3079+$3078)|0);
+ HEAP8[($3080)]=$3076;
+ var $3081=$x;
+ var $3082=((($3081)*(3))&-1);
+ var $3083=((($3082)+(1))|0);
+ var $3084=$prevline;
+ var $3085=(($3084+$3083)|0);
+ var $3086=HEAP8[($3085)];
+ var $3087=$x;
+ var $3088=((($3087)*(3))&-1);
+ var $3089=((($3088)+(1))|0);
+ var $3090=$line;
+ var $3091=(($3090+$3089)|0);
+ HEAP8[($3091)]=$3086;
+ var $3092=$x;
+ var $3093=((($3092)*(3))&-1);
+ var $3094=((($3093)+(2))|0);
+ var $3095=$prevline;
+ var $3096=(($3095+$3094)|0);
+ var $3097=HEAP8[($3096)];
+ var $3098=$x;
+ var $3099=((($3098)*(3))&-1);
+ var $3100=((($3099)+(2))|0);
+ var $3101=$line;
+ var $3102=(($3101+$3100)|0);
+ HEAP8[($3102)]=$3097;
+ label=245;break;
+ case 245:
+ var $3104=$count;
+ var $3105=((($3104)-(1))|0);
+ $count=$3105;
+ var $3106=$x;
+ var $3107=((($3106)+(1))|0);
+ $x=$3107;
+ label=178;break;
+ case 246:
+ label=247;break;
+ case 247:
+ var $3110=$count;
+ var $3111=($3110|0)>0;
+ if($3111){label=248;break;}else{var $3117=0;label=249;break;}
+ case 248:
+ var $3113=$x;
+ var $3114=$3;
+ var $3115=($3113|0)<($3114|0);
+ var $3117=$3115;label=249;break;
+ case 249:
+ var $3117;
+ if($3117){label=250;break;}else{label=259;break;}
+ case 250:
+ var $3119=$mixmask;
+ var $3120=($3119&255);
+ var $3121=$3120<<1;
+ var $3122=(($3121)&255);
+ $mixmask=$3122;
+ var $3123=$mixmask;
+ var $3124=($3123&255);
+ var $3125=($3124|0)==0;
+ if($3125){label=251;break;}else{label=255;break;}
+ case 251:
+ var $3127=$fom_mask;
+ var $3128=($3127|0)!=0;
+ if($3128){label=252;break;}else{label=253;break;}
+ case 252:
+ var $3130=$fom_mask;
+ var $3137=$3130;label=254;break;
+ case 253:
+ var $3132=$5;
+ var $3133=(($3132+1)|0);
+ $5=$3133;
+ var $3134=HEAP8[($3132)];
+ var $3135=($3134&255);
+ var $3137=$3135;label=254;break;
+ case 254:
+ var $3137;
+ var $3138=(($3137)&255);
+ $mask=$3138;
+ $mixmask=1;
+ label=255;break;
+ case 255:
+ var $3140=$mask;
+ var $3141=($3140&255);
+ var $3142=$mixmask;
+ var $3143=($3142&255);
+ var $3144=$3141&$3143;
+ var $3145=($3144|0)!=0;
+ if($3145){label=256;break;}else{label=257;break;}
+ case 256:
+ var $3147=$x;
+ var $3148=((($3147)*(3))&-1);
+ var $3149=$prevline;
+ var $3150=(($3149+$3148)|0);
+ var $3151=HEAP8[($3150)];
+ var $3152=($3151&255);
+ var $3153=(($mix)|0);
+ var $3154=HEAP8[($3153)];
+ var $3155=($3154&255);
+ var $3156=$3152^$3155;
+ var $3157=(($3156)&255);
+ var $3158=$x;
+ var $3159=((($3158)*(3))&-1);
+ var $3160=$line;
+ var $3161=(($3160+$3159)|0);
+ HEAP8[($3161)]=$3157;
+ var $3162=$x;
+ var $3163=((($3162)*(3))&-1);
+ var $3164=((($3163)+(1))|0);
+ var $3165=$prevline;
+ var $3166=(($3165+$3164)|0);
+ var $3167=HEAP8[($3166)];
+ var $3168=($3167&255);
+ var $3169=(($mix+1)|0);
+ var $3170=HEAP8[($3169)];
+ var $3171=($3170&255);
+ var $3172=$3168^$3171;
+ var $3173=(($3172)&255);
+ var $3174=$x;
+ var $3175=((($3174)*(3))&-1);
+ var $3176=((($3175)+(1))|0);
+ var $3177=$line;
+ var $3178=(($3177+$3176)|0);
+ HEAP8[($3178)]=$3173;
+ var $3179=$x;
+ var $3180=((($3179)*(3))&-1);
+ var $3181=((($3180)+(2))|0);
+ var $3182=$prevline;
+ var $3183=(($3182+$3181)|0);
+ var $3184=HEAP8[($3183)];
+ var $3185=($3184&255);
+ var $3186=(($mix+2)|0);
+ var $3187=HEAP8[($3186)];
+ var $3188=($3187&255);
+ var $3189=$3185^$3188;
+ var $3190=(($3189)&255);
+ var $3191=$x;
+ var $3192=((($3191)*(3))&-1);
+ var $3193=((($3192)+(2))|0);
+ var $3194=$line;
+ var $3195=(($3194+$3193)|0);
+ HEAP8[($3195)]=$3190;
+ label=258;break;
+ case 257:
+ var $3197=$x;
+ var $3198=((($3197)*(3))&-1);
+ var $3199=$prevline;
+ var $3200=(($3199+$3198)|0);
+ var $3201=HEAP8[($3200)];
+ var $3202=$x;
+ var $3203=((($3202)*(3))&-1);
+ var $3204=$line;
+ var $3205=(($3204+$3203)|0);
+ HEAP8[($3205)]=$3201;
+ var $3206=$x;
+ var $3207=((($3206)*(3))&-1);
+ var $3208=((($3207)+(1))|0);
+ var $3209=$prevline;
+ var $3210=(($3209+$3208)|0);
+ var $3211=HEAP8[($3210)];
+ var $3212=$x;
+ var $3213=((($3212)*(3))&-1);
+ var $3214=((($3213)+(1))|0);
+ var $3215=$line;
+ var $3216=(($3215+$3214)|0);
+ HEAP8[($3216)]=$3211;
+ var $3217=$x;
+ var $3218=((($3217)*(3))&-1);
+ var $3219=((($3218)+(2))|0);
+ var $3220=$prevline;
+ var $3221=(($3220+$3219)|0);
+ var $3222=HEAP8[($3221)];
+ var $3223=$x;
+ var $3224=((($3223)*(3))&-1);
+ var $3225=((($3224)+(2))|0);
+ var $3226=$line;
+ var $3227=(($3226+$3225)|0);
+ HEAP8[($3227)]=$3222;
+ label=258;break;
+ case 258:
+ var $3229=$count;
+ var $3230=((($3229)-(1))|0);
+ $count=$3230;
+ var $3231=$x;
+ var $3232=((($3231)+(1))|0);
+ $x=$3232;
+ label=247;break;
+ case 259:
+ label=260;break;
+ case 260:
+ label=344;break;
+ case 261:
+ label=262;break;
+ case 262:
+ var $3237=$count;
+ var $3238=$3237&-8;
+ var $3239=($3238|0)!=0;
+ if($3239){label=263;break;}else{var $3246=0;label=264;break;}
+ case 263:
+ var $3241=$x;
+ var $3242=((($3241)+(8))|0);
+ var $3243=$3;
+ var $3244=($3242|0)<($3243|0);
+ var $3246=$3244;label=264;break;
+ case 264:
+ var $3246;
+ if($3246){label=265;break;}else{label=266;break;}
+ case 265:
+ var $3248=(($colour2)|0);
+ var $3249=HEAP8[($3248)];
+ var $3250=$x;
+ var $3251=((($3250)*(3))&-1);
+ var $3252=$line;
+ var $3253=(($3252+$3251)|0);
+ HEAP8[($3253)]=$3249;
+ var $3254=(($colour2+1)|0);
+ var $3255=HEAP8[($3254)];
+ var $3256=$x;
+ var $3257=((($3256)*(3))&-1);
+ var $3258=((($3257)+(1))|0);
+ var $3259=$line;
+ var $3260=(($3259+$3258)|0);
+ HEAP8[($3260)]=$3255;
+ var $3261=(($colour2+2)|0);
+ var $3262=HEAP8[($3261)];
+ var $3263=$x;
+ var $3264=((($3263)*(3))&-1);
+ var $3265=((($3264)+(2))|0);
+ var $3266=$line;
+ var $3267=(($3266+$3265)|0);
+ HEAP8[($3267)]=$3262;
+ var $3268=$count;
+ var $3269=((($3268)-(1))|0);
+ $count=$3269;
+ var $3270=$x;
+ var $3271=((($3270)+(1))|0);
+ $x=$3271;
+ var $3272=(($colour2)|0);
+ var $3273=HEAP8[($3272)];
+ var $3274=$x;
+ var $3275=((($3274)*(3))&-1);
+ var $3276=$line;
+ var $3277=(($3276+$3275)|0);
+ HEAP8[($3277)]=$3273;
+ var $3278=(($colour2+1)|0);
+ var $3279=HEAP8[($3278)];
+ var $3280=$x;
+ var $3281=((($3280)*(3))&-1);
+ var $3282=((($3281)+(1))|0);
+ var $3283=$line;
+ var $3284=(($3283+$3282)|0);
+ HEAP8[($3284)]=$3279;
+ var $3285=(($colour2+2)|0);
+ var $3286=HEAP8[($3285)];
+ var $3287=$x;
+ var $3288=((($3287)*(3))&-1);
+ var $3289=((($3288)+(2))|0);
+ var $3290=$line;
+ var $3291=(($3290+$3289)|0);
+ HEAP8[($3291)]=$3286;
+ var $3292=$count;
+ var $3293=((($3292)-(1))|0);
+ $count=$3293;
+ var $3294=$x;
+ var $3295=((($3294)+(1))|0);
+ $x=$3295;
+ var $3296=(($colour2)|0);
+ var $3297=HEAP8[($3296)];
+ var $3298=$x;
+ var $3299=((($3298)*(3))&-1);
+ var $3300=$line;
+ var $3301=(($3300+$3299)|0);
+ HEAP8[($3301)]=$3297;
+ var $3302=(($colour2+1)|0);
+ var $3303=HEAP8[($3302)];
+ var $3304=$x;
+ var $3305=((($3304)*(3))&-1);
+ var $3306=((($3305)+(1))|0);
+ var $3307=$line;
+ var $3308=(($3307+$3306)|0);
+ HEAP8[($3308)]=$3303;
+ var $3309=(($colour2+2)|0);
+ var $3310=HEAP8[($3309)];
+ var $3311=$x;
+ var $3312=((($3311)*(3))&-1);
+ var $3313=((($3312)+(2))|0);
+ var $3314=$line;
+ var $3315=(($3314+$3313)|0);
+ HEAP8[($3315)]=$3310;
+ var $3316=$count;
+ var $3317=((($3316)-(1))|0);
+ $count=$3317;
+ var $3318=$x;
+ var $3319=((($3318)+(1))|0);
+ $x=$3319;
+ var $3320=(($colour2)|0);
+ var $3321=HEAP8[($3320)];
+ var $3322=$x;
+ var $3323=((($3322)*(3))&-1);
+ var $3324=$line;
+ var $3325=(($3324+$3323)|0);
+ HEAP8[($3325)]=$3321;
+ var $3326=(($colour2+1)|0);
+ var $3327=HEAP8[($3326)];
+ var $3328=$x;
+ var $3329=((($3328)*(3))&-1);
+ var $3330=((($3329)+(1))|0);
+ var $3331=$line;
+ var $3332=(($3331+$3330)|0);
+ HEAP8[($3332)]=$3327;
+ var $3333=(($colour2+2)|0);
+ var $3334=HEAP8[($3333)];
+ var $3335=$x;
+ var $3336=((($3335)*(3))&-1);
+ var $3337=((($3336)+(2))|0);
+ var $3338=$line;
+ var $3339=(($3338+$3337)|0);
+ HEAP8[($3339)]=$3334;
+ var $3340=$count;
+ var $3341=((($3340)-(1))|0);
+ $count=$3341;
+ var $3342=$x;
+ var $3343=((($3342)+(1))|0);
+ $x=$3343;
+ var $3344=(($colour2)|0);
+ var $3345=HEAP8[($3344)];
+ var $3346=$x;
+ var $3347=((($3346)*(3))&-1);
+ var $3348=$line;
+ var $3349=(($3348+$3347)|0);
+ HEAP8[($3349)]=$3345;
+ var $3350=(($colour2+1)|0);
+ var $3351=HEAP8[($3350)];
+ var $3352=$x;
+ var $3353=((($3352)*(3))&-1);
+ var $3354=((($3353)+(1))|0);
+ var $3355=$line;
+ var $3356=(($3355+$3354)|0);
+ HEAP8[($3356)]=$3351;
+ var $3357=(($colour2+2)|0);
+ var $3358=HEAP8[($3357)];
+ var $3359=$x;
+ var $3360=((($3359)*(3))&-1);
+ var $3361=((($3360)+(2))|0);
+ var $3362=$line;
+ var $3363=(($3362+$3361)|0);
+ HEAP8[($3363)]=$3358;
+ var $3364=$count;
+ var $3365=((($3364)-(1))|0);
+ $count=$3365;
+ var $3366=$x;
+ var $3367=((($3366)+(1))|0);
+ $x=$3367;
+ var $3368=(($colour2)|0);
+ var $3369=HEAP8[($3368)];
+ var $3370=$x;
+ var $3371=((($3370)*(3))&-1);
+ var $3372=$line;
+ var $3373=(($3372+$3371)|0);
+ HEAP8[($3373)]=$3369;
+ var $3374=(($colour2+1)|0);
+ var $3375=HEAP8[($3374)];
+ var $3376=$x;
+ var $3377=((($3376)*(3))&-1);
+ var $3378=((($3377)+(1))|0);
+ var $3379=$line;
+ var $3380=(($3379+$3378)|0);
+ HEAP8[($3380)]=$3375;
+ var $3381=(($colour2+2)|0);
+ var $3382=HEAP8[($3381)];
+ var $3383=$x;
+ var $3384=((($3383)*(3))&-1);
+ var $3385=((($3384)+(2))|0);
+ var $3386=$line;
+ var $3387=(($3386+$3385)|0);
+ HEAP8[($3387)]=$3382;
+ var $3388=$count;
+ var $3389=((($3388)-(1))|0);
+ $count=$3389;
+ var $3390=$x;
+ var $3391=((($3390)+(1))|0);
+ $x=$3391;
+ var $3392=(($colour2)|0);
+ var $3393=HEAP8[($3392)];
+ var $3394=$x;
+ var $3395=((($3394)*(3))&-1);
+ var $3396=$line;
+ var $3397=(($3396+$3395)|0);
+ HEAP8[($3397)]=$3393;
+ var $3398=(($colour2+1)|0);
+ var $3399=HEAP8[($3398)];
+ var $3400=$x;
+ var $3401=((($3400)*(3))&-1);
+ var $3402=((($3401)+(1))|0);
+ var $3403=$line;
+ var $3404=(($3403+$3402)|0);
+ HEAP8[($3404)]=$3399;
+ var $3405=(($colour2+2)|0);
+ var $3406=HEAP8[($3405)];
+ var $3407=$x;
+ var $3408=((($3407)*(3))&-1);
+ var $3409=((($3408)+(2))|0);
+ var $3410=$line;
+ var $3411=(($3410+$3409)|0);
+ HEAP8[($3411)]=$3406;
+ var $3412=$count;
+ var $3413=((($3412)-(1))|0);
+ $count=$3413;
+ var $3414=$x;
+ var $3415=((($3414)+(1))|0);
+ $x=$3415;
+ var $3416=(($colour2)|0);
+ var $3417=HEAP8[($3416)];
+ var $3418=$x;
+ var $3419=((($3418)*(3))&-1);
+ var $3420=$line;
+ var $3421=(($3420+$3419)|0);
+ HEAP8[($3421)]=$3417;
+ var $3422=(($colour2+1)|0);
+ var $3423=HEAP8[($3422)];
+ var $3424=$x;
+ var $3425=((($3424)*(3))&-1);
+ var $3426=((($3425)+(1))|0);
+ var $3427=$line;
+ var $3428=(($3427+$3426)|0);
+ HEAP8[($3428)]=$3423;
+ var $3429=(($colour2+2)|0);
+ var $3430=HEAP8[($3429)];
+ var $3431=$x;
+ var $3432=((($3431)*(3))&-1);
+ var $3433=((($3432)+(2))|0);
+ var $3434=$line;
+ var $3435=(($3434+$3433)|0);
+ HEAP8[($3435)]=$3430;
+ var $3436=$count;
+ var $3437=((($3436)-(1))|0);
+ $count=$3437;
+ var $3438=$x;
+ var $3439=((($3438)+(1))|0);
+ $x=$3439;
+ label=262;break;
+ case 266:
+ label=267;break;
+ case 267:
+ var $3442=$count;
+ var $3443=($3442|0)>0;
+ if($3443){label=268;break;}else{var $3449=0;label=269;break;}
+ case 268:
+ var $3445=$x;
+ var $3446=$3;
+ var $3447=($3445|0)<($3446|0);
+ var $3449=$3447;label=269;break;
+ case 269:
+ var $3449;
+ if($3449){label=270;break;}else{label=271;break;}
+ case 270:
+ var $3451=(($colour2)|0);
+ var $3452=HEAP8[($3451)];
+ var $3453=$x;
+ var $3454=((($3453)*(3))&-1);
+ var $3455=$line;
+ var $3456=(($3455+$3454)|0);
+ HEAP8[($3456)]=$3452;
+ var $3457=(($colour2+1)|0);
+ var $3458=HEAP8[($3457)];
+ var $3459=$x;
+ var $3460=((($3459)*(3))&-1);
+ var $3461=((($3460)+(1))|0);
+ var $3462=$line;
+ var $3463=(($3462+$3461)|0);
+ HEAP8[($3463)]=$3458;
+ var $3464=(($colour2+2)|0);
+ var $3465=HEAP8[($3464)];
+ var $3466=$x;
+ var $3467=((($3466)*(3))&-1);
+ var $3468=((($3467)+(2))|0);
+ var $3469=$line;
+ var $3470=(($3469+$3468)|0);
+ HEAP8[($3470)]=$3465;
+ var $3471=$count;
+ var $3472=((($3471)-(1))|0);
+ $count=$3472;
+ var $3473=$x;
+ var $3474=((($3473)+(1))|0);
+ $x=$3474;
+ label=267;break;
+ case 271:
+ label=344;break;
+ case 272:
+ label=273;break;
+ case 273:
+ var $3478=$count;
+ var $3479=$3478&-8;
+ var $3480=($3479|0)!=0;
+ if($3480){label=274;break;}else{var $3487=0;label=275;break;}
+ case 274:
+ var $3482=$x;
+ var $3483=((($3482)+(8))|0);
+ var $3484=$3;
+ var $3485=($3483|0)<($3484|0);
+ var $3487=$3485;label=275;break;
+ case 275:
+ var $3487;
+ if($3487){label=276;break;}else{label=277;break;}
+ case 276:
+ var $3489=$5;
+ var $3490=(($3489+1)|0);
+ $5=$3490;
+ var $3491=HEAP8[($3489)];
+ var $3492=$x;
+ var $3493=((($3492)*(3))&-1);
+ var $3494=$line;
+ var $3495=(($3494+$3493)|0);
+ HEAP8[($3495)]=$3491;
+ var $3496=$5;
+ var $3497=(($3496+1)|0);
+ $5=$3497;
+ var $3498=HEAP8[($3496)];
+ var $3499=$x;
+ var $3500=((($3499)*(3))&-1);
+ var $3501=((($3500)+(1))|0);
+ var $3502=$line;
+ var $3503=(($3502+$3501)|0);
+ HEAP8[($3503)]=$3498;
+ var $3504=$5;
+ var $3505=(($3504+1)|0);
+ $5=$3505;
+ var $3506=HEAP8[($3504)];
+ var $3507=$x;
+ var $3508=((($3507)*(3))&-1);
+ var $3509=((($3508)+(2))|0);
+ var $3510=$line;
+ var $3511=(($3510+$3509)|0);
+ HEAP8[($3511)]=$3506;
+ var $3512=$count;
+ var $3513=((($3512)-(1))|0);
+ $count=$3513;
+ var $3514=$x;
+ var $3515=((($3514)+(1))|0);
+ $x=$3515;
+ var $3516=$5;
+ var $3517=(($3516+1)|0);
+ $5=$3517;
+ var $3518=HEAP8[($3516)];
+ var $3519=$x;
+ var $3520=((($3519)*(3))&-1);
+ var $3521=$line;
+ var $3522=(($3521+$3520)|0);
+ HEAP8[($3522)]=$3518;
+ var $3523=$5;
+ var $3524=(($3523+1)|0);
+ $5=$3524;
+ var $3525=HEAP8[($3523)];
+ var $3526=$x;
+ var $3527=((($3526)*(3))&-1);
+ var $3528=((($3527)+(1))|0);
+ var $3529=$line;
+ var $3530=(($3529+$3528)|0);
+ HEAP8[($3530)]=$3525;
+ var $3531=$5;
+ var $3532=(($3531+1)|0);
+ $5=$3532;
+ var $3533=HEAP8[($3531)];
+ var $3534=$x;
+ var $3535=((($3534)*(3))&-1);
+ var $3536=((($3535)+(2))|0);
+ var $3537=$line;
+ var $3538=(($3537+$3536)|0);
+ HEAP8[($3538)]=$3533;
+ var $3539=$count;
+ var $3540=((($3539)-(1))|0);
+ $count=$3540;
+ var $3541=$x;
+ var $3542=((($3541)+(1))|0);
+ $x=$3542;
+ var $3543=$5;
+ var $3544=(($3543+1)|0);
+ $5=$3544;
+ var $3545=HEAP8[($3543)];
+ var $3546=$x;
+ var $3547=((($3546)*(3))&-1);
+ var $3548=$line;
+ var $3549=(($3548+$3547)|0);
+ HEAP8[($3549)]=$3545;
+ var $3550=$5;
+ var $3551=(($3550+1)|0);
+ $5=$3551;
+ var $3552=HEAP8[($3550)];
+ var $3553=$x;
+ var $3554=((($3553)*(3))&-1);
+ var $3555=((($3554)+(1))|0);
+ var $3556=$line;
+ var $3557=(($3556+$3555)|0);
+ HEAP8[($3557)]=$3552;
+ var $3558=$5;
+ var $3559=(($3558+1)|0);
+ $5=$3559;
+ var $3560=HEAP8[($3558)];
+ var $3561=$x;
+ var $3562=((($3561)*(3))&-1);
+ var $3563=((($3562)+(2))|0);
+ var $3564=$line;
+ var $3565=(($3564+$3563)|0);
+ HEAP8[($3565)]=$3560;
+ var $3566=$count;
+ var $3567=((($3566)-(1))|0);
+ $count=$3567;
+ var $3568=$x;
+ var $3569=((($3568)+(1))|0);
+ $x=$3569;
+ var $3570=$5;
+ var $3571=(($3570+1)|0);
+ $5=$3571;
+ var $3572=HEAP8[($3570)];
+ var $3573=$x;
+ var $3574=((($3573)*(3))&-1);
+ var $3575=$line;
+ var $3576=(($3575+$3574)|0);
+ HEAP8[($3576)]=$3572;
+ var $3577=$5;
+ var $3578=(($3577+1)|0);
+ $5=$3578;
+ var $3579=HEAP8[($3577)];
+ var $3580=$x;
+ var $3581=((($3580)*(3))&-1);
+ var $3582=((($3581)+(1))|0);
+ var $3583=$line;
+ var $3584=(($3583+$3582)|0);
+ HEAP8[($3584)]=$3579;
+ var $3585=$5;
+ var $3586=(($3585+1)|0);
+ $5=$3586;
+ var $3587=HEAP8[($3585)];
+ var $3588=$x;
+ var $3589=((($3588)*(3))&-1);
+ var $3590=((($3589)+(2))|0);
+ var $3591=$line;
+ var $3592=(($3591+$3590)|0);
+ HEAP8[($3592)]=$3587;
+ var $3593=$count;
+ var $3594=((($3593)-(1))|0);
+ $count=$3594;
+ var $3595=$x;
+ var $3596=((($3595)+(1))|0);
+ $x=$3596;
+ var $3597=$5;
+ var $3598=(($3597+1)|0);
+ $5=$3598;
+ var $3599=HEAP8[($3597)];
+ var $3600=$x;
+ var $3601=((($3600)*(3))&-1);
+ var $3602=$line;
+ var $3603=(($3602+$3601)|0);
+ HEAP8[($3603)]=$3599;
+ var $3604=$5;
+ var $3605=(($3604+1)|0);
+ $5=$3605;
+ var $3606=HEAP8[($3604)];
+ var $3607=$x;
+ var $3608=((($3607)*(3))&-1);
+ var $3609=((($3608)+(1))|0);
+ var $3610=$line;
+ var $3611=(($3610+$3609)|0);
+ HEAP8[($3611)]=$3606;
+ var $3612=$5;
+ var $3613=(($3612+1)|0);
+ $5=$3613;
+ var $3614=HEAP8[($3612)];
+ var $3615=$x;
+ var $3616=((($3615)*(3))&-1);
+ var $3617=((($3616)+(2))|0);
+ var $3618=$line;
+ var $3619=(($3618+$3617)|0);
+ HEAP8[($3619)]=$3614;
+ var $3620=$count;
+ var $3621=((($3620)-(1))|0);
+ $count=$3621;
+ var $3622=$x;
+ var $3623=((($3622)+(1))|0);
+ $x=$3623;
+ var $3624=$5;
+ var $3625=(($3624+1)|0);
+ $5=$3625;
+ var $3626=HEAP8[($3624)];
+ var $3627=$x;
+ var $3628=((($3627)*(3))&-1);
+ var $3629=$line;
+ var $3630=(($3629+$3628)|0);
+ HEAP8[($3630)]=$3626;
+ var $3631=$5;
+ var $3632=(($3631+1)|0);
+ $5=$3632;
+ var $3633=HEAP8[($3631)];
+ var $3634=$x;
+ var $3635=((($3634)*(3))&-1);
+ var $3636=((($3635)+(1))|0);
+ var $3637=$line;
+ var $3638=(($3637+$3636)|0);
+ HEAP8[($3638)]=$3633;
+ var $3639=$5;
+ var $3640=(($3639+1)|0);
+ $5=$3640;
+ var $3641=HEAP8[($3639)];
+ var $3642=$x;
+ var $3643=((($3642)*(3))&-1);
+ var $3644=((($3643)+(2))|0);
+ var $3645=$line;
+ var $3646=(($3645+$3644)|0);
+ HEAP8[($3646)]=$3641;
+ var $3647=$count;
+ var $3648=((($3647)-(1))|0);
+ $count=$3648;
+ var $3649=$x;
+ var $3650=((($3649)+(1))|0);
+ $x=$3650;
+ var $3651=$5;
+ var $3652=(($3651+1)|0);
+ $5=$3652;
+ var $3653=HEAP8[($3651)];
+ var $3654=$x;
+ var $3655=((($3654)*(3))&-1);
+ var $3656=$line;
+ var $3657=(($3656+$3655)|0);
+ HEAP8[($3657)]=$3653;
+ var $3658=$5;
+ var $3659=(($3658+1)|0);
+ $5=$3659;
+ var $3660=HEAP8[($3658)];
+ var $3661=$x;
+ var $3662=((($3661)*(3))&-1);
+ var $3663=((($3662)+(1))|0);
+ var $3664=$line;
+ var $3665=(($3664+$3663)|0);
+ HEAP8[($3665)]=$3660;
+ var $3666=$5;
+ var $3667=(($3666+1)|0);
+ $5=$3667;
+ var $3668=HEAP8[($3666)];
+ var $3669=$x;
+ var $3670=((($3669)*(3))&-1);
+ var $3671=((($3670)+(2))|0);
+ var $3672=$line;
+ var $3673=(($3672+$3671)|0);
+ HEAP8[($3673)]=$3668;
+ var $3674=$count;
+ var $3675=((($3674)-(1))|0);
+ $count=$3675;
+ var $3676=$x;
+ var $3677=((($3676)+(1))|0);
+ $x=$3677;
+ var $3678=$5;
+ var $3679=(($3678+1)|0);
+ $5=$3679;
+ var $3680=HEAP8[($3678)];
+ var $3681=$x;
+ var $3682=((($3681)*(3))&-1);
+ var $3683=$line;
+ var $3684=(($3683+$3682)|0);
+ HEAP8[($3684)]=$3680;
+ var $3685=$5;
+ var $3686=(($3685+1)|0);
+ $5=$3686;
+ var $3687=HEAP8[($3685)];
+ var $3688=$x;
+ var $3689=((($3688)*(3))&-1);
+ var $3690=((($3689)+(1))|0);
+ var $3691=$line;
+ var $3692=(($3691+$3690)|0);
+ HEAP8[($3692)]=$3687;
+ var $3693=$5;
+ var $3694=(($3693+1)|0);
+ $5=$3694;
+ var $3695=HEAP8[($3693)];
+ var $3696=$x;
+ var $3697=((($3696)*(3))&-1);
+ var $3698=((($3697)+(2))|0);
+ var $3699=$line;
+ var $3700=(($3699+$3698)|0);
+ HEAP8[($3700)]=$3695;
+ var $3701=$count;
+ var $3702=((($3701)-(1))|0);
+ $count=$3702;
+ var $3703=$x;
+ var $3704=((($3703)+(1))|0);
+ $x=$3704;
+ label=273;break;
+ case 277:
+ label=278;break;
+ case 278:
+ var $3707=$count;
+ var $3708=($3707|0)>0;
+ if($3708){label=279;break;}else{var $3714=0;label=280;break;}
+ case 279:
+ var $3710=$x;
+ var $3711=$3;
+ var $3712=($3710|0)<($3711|0);
+ var $3714=$3712;label=280;break;
+ case 280:
+ var $3714;
+ if($3714){label=281;break;}else{label=282;break;}
+ case 281:
+ var $3716=$5;
+ var $3717=(($3716+1)|0);
+ $5=$3717;
+ var $3718=HEAP8[($3716)];
+ var $3719=$x;
+ var $3720=((($3719)*(3))&-1);
+ var $3721=$line;
+ var $3722=(($3721+$3720)|0);
+ HEAP8[($3722)]=$3718;
+ var $3723=$5;
+ var $3724=(($3723+1)|0);
+ $5=$3724;
+ var $3725=HEAP8[($3723)];
+ var $3726=$x;
+ var $3727=((($3726)*(3))&-1);
+ var $3728=((($3727)+(1))|0);
+ var $3729=$line;
+ var $3730=(($3729+$3728)|0);
+ HEAP8[($3730)]=$3725;
+ var $3731=$5;
+ var $3732=(($3731+1)|0);
+ $5=$3732;
+ var $3733=HEAP8[($3731)];
+ var $3734=$x;
+ var $3735=((($3734)*(3))&-1);
+ var $3736=((($3735)+(2))|0);
+ var $3737=$line;
+ var $3738=(($3737+$3736)|0);
+ HEAP8[($3738)]=$3733;
+ var $3739=$count;
+ var $3740=((($3739)-(1))|0);
+ $count=$3740;
+ var $3741=$x;
+ var $3742=((($3741)+(1))|0);
+ $x=$3742;
+ label=278;break;
+ case 282:
+ label=344;break;
+ case 283:
+ label=284;break;
+ case 284:
+ var $3746=$count;
+ var $3747=$3746&-8;
+ var $3748=($3747|0)!=0;
+ if($3748){label=285;break;}else{var $3755=0;label=286;break;}
+ case 285:
+ var $3750=$x;
+ var $3751=((($3750)+(8))|0);
+ var $3752=$3;
+ var $3753=($3751|0)<($3752|0);
+ var $3755=$3753;label=286;break;
+ case 286:
+ var $3755;
+ if($3755){label=287;break;}else{label=312;break;}
+ case 287:
+ var $3757=$bicolour;
+ var $3758=($3757|0)!=0;
+ if($3758){label=288;break;}else{label=289;break;}
+ case 288:
+ var $3760=(($colour2)|0);
+ var $3761=HEAP8[($3760)];
+ var $3762=$x;
+ var $3763=((($3762)*(3))&-1);
+ var $3764=$line;
+ var $3765=(($3764+$3763)|0);
+ HEAP8[($3765)]=$3761;
+ var $3766=(($colour2+1)|0);
+ var $3767=HEAP8[($3766)];
+ var $3768=$x;
+ var $3769=((($3768)*(3))&-1);
+ var $3770=((($3769)+(1))|0);
+ var $3771=$line;
+ var $3772=(($3771+$3770)|0);
+ HEAP8[($3772)]=$3767;
+ var $3773=(($colour2+2)|0);
+ var $3774=HEAP8[($3773)];
+ var $3775=$x;
+ var $3776=((($3775)*(3))&-1);
+ var $3777=((($3776)+(2))|0);
+ var $3778=$line;
+ var $3779=(($3778+$3777)|0);
+ HEAP8[($3779)]=$3774;
+ $bicolour=0;
+ label=290;break;
+ case 289:
+ var $3781=(($colour1)|0);
+ var $3782=HEAP8[($3781)];
+ var $3783=$x;
+ var $3784=((($3783)*(3))&-1);
+ var $3785=$line;
+ var $3786=(($3785+$3784)|0);
+ HEAP8[($3786)]=$3782;
+ var $3787=(($colour1+1)|0);
+ var $3788=HEAP8[($3787)];
+ var $3789=$x;
+ var $3790=((($3789)*(3))&-1);
+ var $3791=((($3790)+(1))|0);
+ var $3792=$line;
+ var $3793=(($3792+$3791)|0);
+ HEAP8[($3793)]=$3788;
+ var $3794=(($colour1+2)|0);
+ var $3795=HEAP8[($3794)];
+ var $3796=$x;
+ var $3797=((($3796)*(3))&-1);
+ var $3798=((($3797)+(2))|0);
+ var $3799=$line;
+ var $3800=(($3799+$3798)|0);
+ HEAP8[($3800)]=$3795;
+ $bicolour=1;
+ var $3801=$count;
+ var $3802=((($3801)+(1))|0);
+ $count=$3802;
+ label=290;break;
+ case 290:
+ var $3804=$count;
+ var $3805=((($3804)-(1))|0);
+ $count=$3805;
+ var $3806=$x;
+ var $3807=((($3806)+(1))|0);
+ $x=$3807;
+ var $3808=$bicolour;
+ var $3809=($3808|0)!=0;
+ if($3809){label=291;break;}else{label=292;break;}
+ case 291:
+ var $3811=(($colour2)|0);
+ var $3812=HEAP8[($3811)];
+ var $3813=$x;
+ var $3814=((($3813)*(3))&-1);
+ var $3815=$line;
+ var $3816=(($3815+$3814)|0);
+ HEAP8[($3816)]=$3812;
+ var $3817=(($colour2+1)|0);
+ var $3818=HEAP8[($3817)];
+ var $3819=$x;
+ var $3820=((($3819)*(3))&-1);
+ var $3821=((($3820)+(1))|0);
+ var $3822=$line;
+ var $3823=(($3822+$3821)|0);
+ HEAP8[($3823)]=$3818;
+ var $3824=(($colour2+2)|0);
+ var $3825=HEAP8[($3824)];
+ var $3826=$x;
+ var $3827=((($3826)*(3))&-1);
+ var $3828=((($3827)+(2))|0);
+ var $3829=$line;
+ var $3830=(($3829+$3828)|0);
+ HEAP8[($3830)]=$3825;
+ $bicolour=0;
+ label=293;break;
+ case 292:
+ var $3832=(($colour1)|0);
+ var $3833=HEAP8[($3832)];
+ var $3834=$x;
+ var $3835=((($3834)*(3))&-1);
+ var $3836=$line;
+ var $3837=(($3836+$3835)|0);
+ HEAP8[($3837)]=$3833;
+ var $3838=(($colour1+1)|0);
+ var $3839=HEAP8[($3838)];
+ var $3840=$x;
+ var $3841=((($3840)*(3))&-1);
+ var $3842=((($3841)+(1))|0);
+ var $3843=$line;
+ var $3844=(($3843+$3842)|0);
+ HEAP8[($3844)]=$3839;
+ var $3845=(($colour1+2)|0);
+ var $3846=HEAP8[($3845)];
+ var $3847=$x;
+ var $3848=((($3847)*(3))&-1);
+ var $3849=((($3848)+(2))|0);
+ var $3850=$line;
+ var $3851=(($3850+$3849)|0);
+ HEAP8[($3851)]=$3846;
+ $bicolour=1;
+ var $3852=$count;
+ var $3853=((($3852)+(1))|0);
+ $count=$3853;
+ label=293;break;
+ case 293:
+ var $3855=$count;
+ var $3856=((($3855)-(1))|0);
+ $count=$3856;
+ var $3857=$x;
+ var $3858=((($3857)+(1))|0);
+ $x=$3858;
+ var $3859=$bicolour;
+ var $3860=($3859|0)!=0;
+ if($3860){label=294;break;}else{label=295;break;}
+ case 294:
+ var $3862=(($colour2)|0);
+ var $3863=HEAP8[($3862)];
+ var $3864=$x;
+ var $3865=((($3864)*(3))&-1);
+ var $3866=$line;
+ var $3867=(($3866+$3865)|0);
+ HEAP8[($3867)]=$3863;
+ var $3868=(($colour2+1)|0);
+ var $3869=HEAP8[($3868)];
+ var $3870=$x;
+ var $3871=((($3870)*(3))&-1);
+ var $3872=((($3871)+(1))|0);
+ var $3873=$line;
+ var $3874=(($3873+$3872)|0);
+ HEAP8[($3874)]=$3869;
+ var $3875=(($colour2+2)|0);
+ var $3876=HEAP8[($3875)];
+ var $3877=$x;
+ var $3878=((($3877)*(3))&-1);
+ var $3879=((($3878)+(2))|0);
+ var $3880=$line;
+ var $3881=(($3880+$3879)|0);
+ HEAP8[($3881)]=$3876;
+ $bicolour=0;
+ label=296;break;
+ case 295:
+ var $3883=(($colour1)|0);
+ var $3884=HEAP8[($3883)];
+ var $3885=$x;
+ var $3886=((($3885)*(3))&-1);
+ var $3887=$line;
+ var $3888=(($3887+$3886)|0);
+ HEAP8[($3888)]=$3884;
+ var $3889=(($colour1+1)|0);
+ var $3890=HEAP8[($3889)];
+ var $3891=$x;
+ var $3892=((($3891)*(3))&-1);
+ var $3893=((($3892)+(1))|0);
+ var $3894=$line;
+ var $3895=(($3894+$3893)|0);
+ HEAP8[($3895)]=$3890;
+ var $3896=(($colour1+2)|0);
+ var $3897=HEAP8[($3896)];
+ var $3898=$x;
+ var $3899=((($3898)*(3))&-1);
+ var $3900=((($3899)+(2))|0);
+ var $3901=$line;
+ var $3902=(($3901+$3900)|0);
+ HEAP8[($3902)]=$3897;
+ $bicolour=1;
+ var $3903=$count;
+ var $3904=((($3903)+(1))|0);
+ $count=$3904;
+ label=296;break;
+ case 296:
+ var $3906=$count;
+ var $3907=((($3906)-(1))|0);
+ $count=$3907;
+ var $3908=$x;
+ var $3909=((($3908)+(1))|0);
+ $x=$3909;
+ var $3910=$bicolour;
+ var $3911=($3910|0)!=0;
+ if($3911){label=297;break;}else{label=298;break;}
+ case 297:
+ var $3913=(($colour2)|0);
+ var $3914=HEAP8[($3913)];
+ var $3915=$x;
+ var $3916=((($3915)*(3))&-1);
+ var $3917=$line;
+ var $3918=(($3917+$3916)|0);
+ HEAP8[($3918)]=$3914;
+ var $3919=(($colour2+1)|0);
+ var $3920=HEAP8[($3919)];
+ var $3921=$x;
+ var $3922=((($3921)*(3))&-1);
+ var $3923=((($3922)+(1))|0);
+ var $3924=$line;
+ var $3925=(($3924+$3923)|0);
+ HEAP8[($3925)]=$3920;
+ var $3926=(($colour2+2)|0);
+ var $3927=HEAP8[($3926)];
+ var $3928=$x;
+ var $3929=((($3928)*(3))&-1);
+ var $3930=((($3929)+(2))|0);
+ var $3931=$line;
+ var $3932=(($3931+$3930)|0);
+ HEAP8[($3932)]=$3927;
+ $bicolour=0;
+ label=299;break;
+ case 298:
+ var $3934=(($colour1)|0);
+ var $3935=HEAP8[($3934)];
+ var $3936=$x;
+ var $3937=((($3936)*(3))&-1);
+ var $3938=$line;
+ var $3939=(($3938+$3937)|0);
+ HEAP8[($3939)]=$3935;
+ var $3940=(($colour1+1)|0);
+ var $3941=HEAP8[($3940)];
+ var $3942=$x;
+ var $3943=((($3942)*(3))&-1);
+ var $3944=((($3943)+(1))|0);
+ var $3945=$line;
+ var $3946=(($3945+$3944)|0);
+ HEAP8[($3946)]=$3941;
+ var $3947=(($colour1+2)|0);
+ var $3948=HEAP8[($3947)];
+ var $3949=$x;
+ var $3950=((($3949)*(3))&-1);
+ var $3951=((($3950)+(2))|0);
+ var $3952=$line;
+ var $3953=(($3952+$3951)|0);
+ HEAP8[($3953)]=$3948;
+ $bicolour=1;
+ var $3954=$count;
+ var $3955=((($3954)+(1))|0);
+ $count=$3955;
+ label=299;break;
+ case 299:
+ var $3957=$count;
+ var $3958=((($3957)-(1))|0);
+ $count=$3958;
+ var $3959=$x;
+ var $3960=((($3959)+(1))|0);
+ $x=$3960;
+ var $3961=$bicolour;
+ var $3962=($3961|0)!=0;
+ if($3962){label=300;break;}else{label=301;break;}
+ case 300:
+ var $3964=(($colour2)|0);
+ var $3965=HEAP8[($3964)];
+ var $3966=$x;
+ var $3967=((($3966)*(3))&-1);
+ var $3968=$line;
+ var $3969=(($3968+$3967)|0);
+ HEAP8[($3969)]=$3965;
+ var $3970=(($colour2+1)|0);
+ var $3971=HEAP8[($3970)];
+ var $3972=$x;
+ var $3973=((($3972)*(3))&-1);
+ var $3974=((($3973)+(1))|0);
+ var $3975=$line;
+ var $3976=(($3975+$3974)|0);
+ HEAP8[($3976)]=$3971;
+ var $3977=(($colour2+2)|0);
+ var $3978=HEAP8[($3977)];
+ var $3979=$x;
+ var $3980=((($3979)*(3))&-1);
+ var $3981=((($3980)+(2))|0);
+ var $3982=$line;
+ var $3983=(($3982+$3981)|0);
+ HEAP8[($3983)]=$3978;
+ $bicolour=0;
+ label=302;break;
+ case 301:
+ var $3985=(($colour1)|0);
+ var $3986=HEAP8[($3985)];
+ var $3987=$x;
+ var $3988=((($3987)*(3))&-1);
+ var $3989=$line;
+ var $3990=(($3989+$3988)|0);
+ HEAP8[($3990)]=$3986;
+ var $3991=(($colour1+1)|0);
+ var $3992=HEAP8[($3991)];
+ var $3993=$x;
+ var $3994=((($3993)*(3))&-1);
+ var $3995=((($3994)+(1))|0);
+ var $3996=$line;
+ var $3997=(($3996+$3995)|0);
+ HEAP8[($3997)]=$3992;
+ var $3998=(($colour1+2)|0);
+ var $3999=HEAP8[($3998)];
+ var $4000=$x;
+ var $4001=((($4000)*(3))&-1);
+ var $4002=((($4001)+(2))|0);
+ var $4003=$line;
+ var $4004=(($4003+$4002)|0);
+ HEAP8[($4004)]=$3999;
+ $bicolour=1;
+ var $4005=$count;
+ var $4006=((($4005)+(1))|0);
+ $count=$4006;
+ label=302;break;
+ case 302:
+ var $4008=$count;
+ var $4009=((($4008)-(1))|0);
+ $count=$4009;
+ var $4010=$x;
+ var $4011=((($4010)+(1))|0);
+ $x=$4011;
+ var $4012=$bicolour;
+ var $4013=($4012|0)!=0;
+ if($4013){label=303;break;}else{label=304;break;}
+ case 303:
+ var $4015=(($colour2)|0);
+ var $4016=HEAP8[($4015)];
+ var $4017=$x;
+ var $4018=((($4017)*(3))&-1);
+ var $4019=$line;
+ var $4020=(($4019+$4018)|0);
+ HEAP8[($4020)]=$4016;
+ var $4021=(($colour2+1)|0);
+ var $4022=HEAP8[($4021)];
+ var $4023=$x;
+ var $4024=((($4023)*(3))&-1);
+ var $4025=((($4024)+(1))|0);
+ var $4026=$line;
+ var $4027=(($4026+$4025)|0);
+ HEAP8[($4027)]=$4022;
+ var $4028=(($colour2+2)|0);
+ var $4029=HEAP8[($4028)];
+ var $4030=$x;
+ var $4031=((($4030)*(3))&-1);
+ var $4032=((($4031)+(2))|0);
+ var $4033=$line;
+ var $4034=(($4033+$4032)|0);
+ HEAP8[($4034)]=$4029;
+ $bicolour=0;
+ label=305;break;
+ case 304:
+ var $4036=(($colour1)|0);
+ var $4037=HEAP8[($4036)];
+ var $4038=$x;
+ var $4039=((($4038)*(3))&-1);
+ var $4040=$line;
+ var $4041=(($4040+$4039)|0);
+ HEAP8[($4041)]=$4037;
+ var $4042=(($colour1+1)|0);
+ var $4043=HEAP8[($4042)];
+ var $4044=$x;
+ var $4045=((($4044)*(3))&-1);
+ var $4046=((($4045)+(1))|0);
+ var $4047=$line;
+ var $4048=(($4047+$4046)|0);
+ HEAP8[($4048)]=$4043;
+ var $4049=(($colour1+2)|0);
+ var $4050=HEAP8[($4049)];
+ var $4051=$x;
+ var $4052=((($4051)*(3))&-1);
+ var $4053=((($4052)+(2))|0);
+ var $4054=$line;
+ var $4055=(($4054+$4053)|0);
+ HEAP8[($4055)]=$4050;
+ $bicolour=1;
+ var $4056=$count;
+ var $4057=((($4056)+(1))|0);
+ $count=$4057;
+ label=305;break;
+ case 305:
+ var $4059=$count;
+ var $4060=((($4059)-(1))|0);
+ $count=$4060;
+ var $4061=$x;
+ var $4062=((($4061)+(1))|0);
+ $x=$4062;
+ var $4063=$bicolour;
+ var $4064=($4063|0)!=0;
+ if($4064){label=306;break;}else{label=307;break;}
+ case 306:
+ var $4066=(($colour2)|0);
+ var $4067=HEAP8[($4066)];
+ var $4068=$x;
+ var $4069=((($4068)*(3))&-1);
+ var $4070=$line;
+ var $4071=(($4070+$4069)|0);
+ HEAP8[($4071)]=$4067;
+ var $4072=(($colour2+1)|0);
+ var $4073=HEAP8[($4072)];
+ var $4074=$x;
+ var $4075=((($4074)*(3))&-1);
+ var $4076=((($4075)+(1))|0);
+ var $4077=$line;
+ var $4078=(($4077+$4076)|0);
+ HEAP8[($4078)]=$4073;
+ var $4079=(($colour2+2)|0);
+ var $4080=HEAP8[($4079)];
+ var $4081=$x;
+ var $4082=((($4081)*(3))&-1);
+ var $4083=((($4082)+(2))|0);
+ var $4084=$line;
+ var $4085=(($4084+$4083)|0);
+ HEAP8[($4085)]=$4080;
+ $bicolour=0;
+ label=308;break;
+ case 307:
+ var $4087=(($colour1)|0);
+ var $4088=HEAP8[($4087)];
+ var $4089=$x;
+ var $4090=((($4089)*(3))&-1);
+ var $4091=$line;
+ var $4092=(($4091+$4090)|0);
+ HEAP8[($4092)]=$4088;
+ var $4093=(($colour1+1)|0);
+ var $4094=HEAP8[($4093)];
+ var $4095=$x;
+ var $4096=((($4095)*(3))&-1);
+ var $4097=((($4096)+(1))|0);
+ var $4098=$line;
+ var $4099=(($4098+$4097)|0);
+ HEAP8[($4099)]=$4094;
+ var $4100=(($colour1+2)|0);
+ var $4101=HEAP8[($4100)];
+ var $4102=$x;
+ var $4103=((($4102)*(3))&-1);
+ var $4104=((($4103)+(2))|0);
+ var $4105=$line;
+ var $4106=(($4105+$4104)|0);
+ HEAP8[($4106)]=$4101;
+ $bicolour=1;
+ var $4107=$count;
+ var $4108=((($4107)+(1))|0);
+ $count=$4108;
+ label=308;break;
+ case 308:
+ var $4110=$count;
+ var $4111=((($4110)-(1))|0);
+ $count=$4111;
+ var $4112=$x;
+ var $4113=((($4112)+(1))|0);
+ $x=$4113;
+ var $4114=$bicolour;
+ var $4115=($4114|0)!=0;
+ if($4115){label=309;break;}else{label=310;break;}
+ case 309:
+ var $4117=(($colour2)|0);
+ var $4118=HEAP8[($4117)];
+ var $4119=$x;
+ var $4120=((($4119)*(3))&-1);
+ var $4121=$line;
+ var $4122=(($4121+$4120)|0);
+ HEAP8[($4122)]=$4118;
+ var $4123=(($colour2+1)|0);
+ var $4124=HEAP8[($4123)];
+ var $4125=$x;
+ var $4126=((($4125)*(3))&-1);
+ var $4127=((($4126)+(1))|0);
+ var $4128=$line;
+ var $4129=(($4128+$4127)|0);
+ HEAP8[($4129)]=$4124;
+ var $4130=(($colour2+2)|0);
+ var $4131=HEAP8[($4130)];
+ var $4132=$x;
+ var $4133=((($4132)*(3))&-1);
+ var $4134=((($4133)+(2))|0);
+ var $4135=$line;
+ var $4136=(($4135+$4134)|0);
+ HEAP8[($4136)]=$4131;
+ $bicolour=0;
+ label=311;break;
+ case 310:
+ var $4138=(($colour1)|0);
+ var $4139=HEAP8[($4138)];
+ var $4140=$x;
+ var $4141=((($4140)*(3))&-1);
+ var $4142=$line;
+ var $4143=(($4142+$4141)|0);
+ HEAP8[($4143)]=$4139;
+ var $4144=(($colour1+1)|0);
+ var $4145=HEAP8[($4144)];
+ var $4146=$x;
+ var $4147=((($4146)*(3))&-1);
+ var $4148=((($4147)+(1))|0);
+ var $4149=$line;
+ var $4150=(($4149+$4148)|0);
+ HEAP8[($4150)]=$4145;
+ var $4151=(($colour1+2)|0);
+ var $4152=HEAP8[($4151)];
+ var $4153=$x;
+ var $4154=((($4153)*(3))&-1);
+ var $4155=((($4154)+(2))|0);
+ var $4156=$line;
+ var $4157=(($4156+$4155)|0);
+ HEAP8[($4157)]=$4152;
+ $bicolour=1;
+ var $4158=$count;
+ var $4159=((($4158)+(1))|0);
+ $count=$4159;
+ label=311;break;
+ case 311:
+ var $4161=$count;
+ var $4162=((($4161)-(1))|0);
+ $count=$4162;
+ var $4163=$x;
+ var $4164=((($4163)+(1))|0);
+ $x=$4164;
+ label=284;break;
+ case 312:
+ label=313;break;
+ case 313:
+ var $4167=$count;
+ var $4168=($4167|0)>0;
+ if($4168){label=314;break;}else{var $4174=0;label=315;break;}
+ case 314:
+ var $4170=$x;
+ var $4171=$3;
+ var $4172=($4170|0)<($4171|0);
+ var $4174=$4172;label=315;break;
+ case 315:
+ var $4174;
+ if($4174){label=316;break;}else{label=320;break;}
+ case 316:
+ var $4176=$bicolour;
+ var $4177=($4176|0)!=0;
+ if($4177){label=317;break;}else{label=318;break;}
+ case 317:
+ var $4179=(($colour2)|0);
+ var $4180=HEAP8[($4179)];
+ var $4181=$x;
+ var $4182=((($4181)*(3))&-1);
+ var $4183=$line;
+ var $4184=(($4183+$4182)|0);
+ HEAP8[($4184)]=$4180;
+ var $4185=(($colour2+1)|0);
+ var $4186=HEAP8[($4185)];
+ var $4187=$x;
+ var $4188=((($4187)*(3))&-1);
+ var $4189=((($4188)+(1))|0);
+ var $4190=$line;
+ var $4191=(($4190+$4189)|0);
+ HEAP8[($4191)]=$4186;
+ var $4192=(($colour2+2)|0);
+ var $4193=HEAP8[($4192)];
+ var $4194=$x;
+ var $4195=((($4194)*(3))&-1);
+ var $4196=((($4195)+(2))|0);
+ var $4197=$line;
+ var $4198=(($4197+$4196)|0);
+ HEAP8[($4198)]=$4193;
+ $bicolour=0;
+ label=319;break;
+ case 318:
+ var $4200=(($colour1)|0);
+ var $4201=HEAP8[($4200)];
+ var $4202=$x;
+ var $4203=((($4202)*(3))&-1);
+ var $4204=$line;
+ var $4205=(($4204+$4203)|0);
+ HEAP8[($4205)]=$4201;
+ var $4206=(($colour1+1)|0);
+ var $4207=HEAP8[($4206)];
+ var $4208=$x;
+ var $4209=((($4208)*(3))&-1);
+ var $4210=((($4209)+(1))|0);
+ var $4211=$line;
+ var $4212=(($4211+$4210)|0);
+ HEAP8[($4212)]=$4207;
+ var $4213=(($colour1+2)|0);
+ var $4214=HEAP8[($4213)];
+ var $4215=$x;
+ var $4216=((($4215)*(3))&-1);
+ var $4217=((($4216)+(2))|0);
+ var $4218=$line;
+ var $4219=(($4218+$4217)|0);
+ HEAP8[($4219)]=$4214;
+ $bicolour=1;
+ var $4220=$count;
+ var $4221=((($4220)+(1))|0);
+ $count=$4221;
+ label=319;break;
+ case 319:
+ var $4223=$count;
+ var $4224=((($4223)-(1))|0);
+ $count=$4224;
+ var $4225=$x;
+ var $4226=((($4225)+(1))|0);
+ $x=$4226;
+ label=313;break;
+ case 320:
+ label=344;break;
+ case 321:
+ label=322;break;
+ case 322:
+ var $4230=$count;
+ var $4231=$4230&-8;
+ var $4232=($4231|0)!=0;
+ if($4232){label=323;break;}else{var $4239=0;label=324;break;}
+ case 323:
+ var $4234=$x;
+ var $4235=((($4234)+(8))|0);
+ var $4236=$3;
+ var $4237=($4235|0)<($4236|0);
+ var $4239=$4237;label=324;break;
+ case 324:
+ var $4239;
+ if($4239){label=325;break;}else{label=326;break;}
+ case 325:
+ var $4241=$x;
+ var $4242=((($4241)*(3))&-1);
+ var $4243=$line;
+ var $4244=(($4243+$4242)|0);
+ HEAP8[($4244)]=-1;
+ var $4245=$x;
+ var $4246=((($4245)*(3))&-1);
+ var $4247=((($4246)+(1))|0);
+ var $4248=$line;
+ var $4249=(($4248+$4247)|0);
+ HEAP8[($4249)]=-1;
+ var $4250=$x;
+ var $4251=((($4250)*(3))&-1);
+ var $4252=((($4251)+(2))|0);
+ var $4253=$line;
+ var $4254=(($4253+$4252)|0);
+ HEAP8[($4254)]=-1;
+ var $4255=$count;
+ var $4256=((($4255)-(1))|0);
+ $count=$4256;
+ var $4257=$x;
+ var $4258=((($4257)+(1))|0);
+ $x=$4258;
+ var $4259=$x;
+ var $4260=((($4259)*(3))&-1);
+ var $4261=$line;
+ var $4262=(($4261+$4260)|0);
+ HEAP8[($4262)]=-1;
+ var $4263=$x;
+ var $4264=((($4263)*(3))&-1);
+ var $4265=((($4264)+(1))|0);
+ var $4266=$line;
+ var $4267=(($4266+$4265)|0);
+ HEAP8[($4267)]=-1;
+ var $4268=$x;
+ var $4269=((($4268)*(3))&-1);
+ var $4270=((($4269)+(2))|0);
+ var $4271=$line;
+ var $4272=(($4271+$4270)|0);
+ HEAP8[($4272)]=-1;
+ var $4273=$count;
+ var $4274=((($4273)-(1))|0);
+ $count=$4274;
+ var $4275=$x;
+ var $4276=((($4275)+(1))|0);
+ $x=$4276;
+ var $4277=$x;
+ var $4278=((($4277)*(3))&-1);
+ var $4279=$line;
+ var $4280=(($4279+$4278)|0);
+ HEAP8[($4280)]=-1;
+ var $4281=$x;
+ var $4282=((($4281)*(3))&-1);
+ var $4283=((($4282)+(1))|0);
+ var $4284=$line;
+ var $4285=(($4284+$4283)|0);
+ HEAP8[($4285)]=-1;
+ var $4286=$x;
+ var $4287=((($4286)*(3))&-1);
+ var $4288=((($4287)+(2))|0);
+ var $4289=$line;
+ var $4290=(($4289+$4288)|0);
+ HEAP8[($4290)]=-1;
+ var $4291=$count;
+ var $4292=((($4291)-(1))|0);
+ $count=$4292;
+ var $4293=$x;
+ var $4294=((($4293)+(1))|0);
+ $x=$4294;
+ var $4295=$x;
+ var $4296=((($4295)*(3))&-1);
+ var $4297=$line;
+ var $4298=(($4297+$4296)|0);
+ HEAP8[($4298)]=-1;
+ var $4299=$x;
+ var $4300=((($4299)*(3))&-1);
+ var $4301=((($4300)+(1))|0);
+ var $4302=$line;
+ var $4303=(($4302+$4301)|0);
+ HEAP8[($4303)]=-1;
+ var $4304=$x;
+ var $4305=((($4304)*(3))&-1);
+ var $4306=((($4305)+(2))|0);
+ var $4307=$line;
+ var $4308=(($4307+$4306)|0);
+ HEAP8[($4308)]=-1;
+ var $4309=$count;
+ var $4310=((($4309)-(1))|0);
+ $count=$4310;
+ var $4311=$x;
+ var $4312=((($4311)+(1))|0);
+ $x=$4312;
+ var $4313=$x;
+ var $4314=((($4313)*(3))&-1);
+ var $4315=$line;
+ var $4316=(($4315+$4314)|0);
+ HEAP8[($4316)]=-1;
+ var $4317=$x;
+ var $4318=((($4317)*(3))&-1);
+ var $4319=((($4318)+(1))|0);
+ var $4320=$line;
+ var $4321=(($4320+$4319)|0);
+ HEAP8[($4321)]=-1;
+ var $4322=$x;
+ var $4323=((($4322)*(3))&-1);
+ var $4324=((($4323)+(2))|0);
+ var $4325=$line;
+ var $4326=(($4325+$4324)|0);
+ HEAP8[($4326)]=-1;
+ var $4327=$count;
+ var $4328=((($4327)-(1))|0);
+ $count=$4328;
+ var $4329=$x;
+ var $4330=((($4329)+(1))|0);
+ $x=$4330;
+ var $4331=$x;
+ var $4332=((($4331)*(3))&-1);
+ var $4333=$line;
+ var $4334=(($4333+$4332)|0);
+ HEAP8[($4334)]=-1;
+ var $4335=$x;
+ var $4336=((($4335)*(3))&-1);
+ var $4337=((($4336)+(1))|0);
+ var $4338=$line;
+ var $4339=(($4338+$4337)|0);
+ HEAP8[($4339)]=-1;
+ var $4340=$x;
+ var $4341=((($4340)*(3))&-1);
+ var $4342=((($4341)+(2))|0);
+ var $4343=$line;
+ var $4344=(($4343+$4342)|0);
+ HEAP8[($4344)]=-1;
+ var $4345=$count;
+ var $4346=((($4345)-(1))|0);
+ $count=$4346;
+ var $4347=$x;
+ var $4348=((($4347)+(1))|0);
+ $x=$4348;
+ var $4349=$x;
+ var $4350=((($4349)*(3))&-1);
+ var $4351=$line;
+ var $4352=(($4351+$4350)|0);
+ HEAP8[($4352)]=-1;
+ var $4353=$x;
+ var $4354=((($4353)*(3))&-1);
+ var $4355=((($4354)+(1))|0);
+ var $4356=$line;
+ var $4357=(($4356+$4355)|0);
+ HEAP8[($4357)]=-1;
+ var $4358=$x;
+ var $4359=((($4358)*(3))&-1);
+ var $4360=((($4359)+(2))|0);
+ var $4361=$line;
+ var $4362=(($4361+$4360)|0);
+ HEAP8[($4362)]=-1;
+ var $4363=$count;
+ var $4364=((($4363)-(1))|0);
+ $count=$4364;
+ var $4365=$x;
+ var $4366=((($4365)+(1))|0);
+ $x=$4366;
+ var $4367=$x;
+ var $4368=((($4367)*(3))&-1);
+ var $4369=$line;
+ var $4370=(($4369+$4368)|0);
+ HEAP8[($4370)]=-1;
+ var $4371=$x;
+ var $4372=((($4371)*(3))&-1);
+ var $4373=((($4372)+(1))|0);
+ var $4374=$line;
+ var $4375=(($4374+$4373)|0);
+ HEAP8[($4375)]=-1;
+ var $4376=$x;
+ var $4377=((($4376)*(3))&-1);
+ var $4378=((($4377)+(2))|0);
+ var $4379=$line;
+ var $4380=(($4379+$4378)|0);
+ HEAP8[($4380)]=-1;
+ var $4381=$count;
+ var $4382=((($4381)-(1))|0);
+ $count=$4382;
+ var $4383=$x;
+ var $4384=((($4383)+(1))|0);
+ $x=$4384;
+ label=322;break;
+ case 326:
+ label=327;break;
+ case 327:
+ var $4387=$count;
+ var $4388=($4387|0)>0;
+ if($4388){label=328;break;}else{var $4394=0;label=329;break;}
+ case 328:
+ var $4390=$x;
+ var $4391=$3;
+ var $4392=($4390|0)<($4391|0);
+ var $4394=$4392;label=329;break;
+ case 329:
+ var $4394;
+ if($4394){label=330;break;}else{label=331;break;}
+ case 330:
+ var $4396=$x;
+ var $4397=((($4396)*(3))&-1);
+ var $4398=$line;
+ var $4399=(($4398+$4397)|0);
+ HEAP8[($4399)]=-1;
+ var $4400=$x;
+ var $4401=((($4400)*(3))&-1);
+ var $4402=((($4401)+(1))|0);
+ var $4403=$line;
+ var $4404=(($4403+$4402)|0);
+ HEAP8[($4404)]=-1;
+ var $4405=$x;
+ var $4406=((($4405)*(3))&-1);
+ var $4407=((($4406)+(2))|0);
+ var $4408=$line;
+ var $4409=(($4408+$4407)|0);
+ HEAP8[($4409)]=-1;
+ var $4410=$count;
+ var $4411=((($4410)-(1))|0);
+ $count=$4411;
+ var $4412=$x;
+ var $4413=((($4412)+(1))|0);
+ $x=$4413;
+ label=327;break;
+ case 331:
+ label=344;break;
+ case 332:
+ label=333;break;
+ case 333:
+ var $4417=$count;
+ var $4418=$4417&-8;
+ var $4419=($4418|0)!=0;
+ if($4419){label=334;break;}else{var $4426=0;label=335;break;}
+ case 334:
+ var $4421=$x;
+ var $4422=((($4421)+(8))|0);
+ var $4423=$3;
+ var $4424=($4422|0)<($4423|0);
+ var $4426=$4424;label=335;break;
+ case 335:
+ var $4426;
+ if($4426){label=336;break;}else{label=337;break;}
+ case 336:
+ var $4428=$x;
+ var $4429=((($4428)*(3))&-1);
+ var $4430=$line;
+ var $4431=(($4430+$4429)|0);
+ HEAP8[($4431)]=0;
+ var $4432=$x;
+ var $4433=((($4432)*(3))&-1);
+ var $4434=((($4433)+(1))|0);
+ var $4435=$line;
+ var $4436=(($4435+$4434)|0);
+ HEAP8[($4436)]=0;
+ var $4437=$x;
+ var $4438=((($4437)*(3))&-1);
+ var $4439=((($4438)+(2))|0);
+ var $4440=$line;
+ var $4441=(($4440+$4439)|0);
+ HEAP8[($4441)]=0;
+ var $4442=$count;
+ var $4443=((($4442)-(1))|0);
+ $count=$4443;
+ var $4444=$x;
+ var $4445=((($4444)+(1))|0);
+ $x=$4445;
+ var $4446=$x;
+ var $4447=((($4446)*(3))&-1);
+ var $4448=$line;
+ var $4449=(($4448+$4447)|0);
+ HEAP8[($4449)]=0;
+ var $4450=$x;
+ var $4451=((($4450)*(3))&-1);
+ var $4452=((($4451)+(1))|0);
+ var $4453=$line;
+ var $4454=(($4453+$4452)|0);
+ HEAP8[($4454)]=0;
+ var $4455=$x;
+ var $4456=((($4455)*(3))&-1);
+ var $4457=((($4456)+(2))|0);
+ var $4458=$line;
+ var $4459=(($4458+$4457)|0);
+ HEAP8[($4459)]=0;
+ var $4460=$count;
+ var $4461=((($4460)-(1))|0);
+ $count=$4461;
+ var $4462=$x;
+ var $4463=((($4462)+(1))|0);
+ $x=$4463;
+ var $4464=$x;
+ var $4465=((($4464)*(3))&-1);
+ var $4466=$line;
+ var $4467=(($4466+$4465)|0);
+ HEAP8[($4467)]=0;
+ var $4468=$x;
+ var $4469=((($4468)*(3))&-1);
+ var $4470=((($4469)+(1))|0);
+ var $4471=$line;
+ var $4472=(($4471+$4470)|0);
+ HEAP8[($4472)]=0;
+ var $4473=$x;
+ var $4474=((($4473)*(3))&-1);
+ var $4475=((($4474)+(2))|0);
+ var $4476=$line;
+ var $4477=(($4476+$4475)|0);
+ HEAP8[($4477)]=0;
+ var $4478=$count;
+ var $4479=((($4478)-(1))|0);
+ $count=$4479;
+ var $4480=$x;
+ var $4481=((($4480)+(1))|0);
+ $x=$4481;
+ var $4482=$x;
+ var $4483=((($4482)*(3))&-1);
+ var $4484=$line;
+ var $4485=(($4484+$4483)|0);
+ HEAP8[($4485)]=0;
+ var $4486=$x;
+ var $4487=((($4486)*(3))&-1);
+ var $4488=((($4487)+(1))|0);
+ var $4489=$line;
+ var $4490=(($4489+$4488)|0);
+ HEAP8[($4490)]=0;
+ var $4491=$x;
+ var $4492=((($4491)*(3))&-1);
+ var $4493=((($4492)+(2))|0);
+ var $4494=$line;
+ var $4495=(($4494+$4493)|0);
+ HEAP8[($4495)]=0;
+ var $4496=$count;
+ var $4497=((($4496)-(1))|0);
+ $count=$4497;
+ var $4498=$x;
+ var $4499=((($4498)+(1))|0);
+ $x=$4499;
+ var $4500=$x;
+ var $4501=((($4500)*(3))&-1);
+ var $4502=$line;
+ var $4503=(($4502+$4501)|0);
+ HEAP8[($4503)]=0;
+ var $4504=$x;
+ var $4505=((($4504)*(3))&-1);
+ var $4506=((($4505)+(1))|0);
+ var $4507=$line;
+ var $4508=(($4507+$4506)|0);
+ HEAP8[($4508)]=0;
+ var $4509=$x;
+ var $4510=((($4509)*(3))&-1);
+ var $4511=((($4510)+(2))|0);
+ var $4512=$line;
+ var $4513=(($4512+$4511)|0);
+ HEAP8[($4513)]=0;
+ var $4514=$count;
+ var $4515=((($4514)-(1))|0);
+ $count=$4515;
+ var $4516=$x;
+ var $4517=((($4516)+(1))|0);
+ $x=$4517;
+ var $4518=$x;
+ var $4519=((($4518)*(3))&-1);
+ var $4520=$line;
+ var $4521=(($4520+$4519)|0);
+ HEAP8[($4521)]=0;
+ var $4522=$x;
+ var $4523=((($4522)*(3))&-1);
+ var $4524=((($4523)+(1))|0);
+ var $4525=$line;
+ var $4526=(($4525+$4524)|0);
+ HEAP8[($4526)]=0;
+ var $4527=$x;
+ var $4528=((($4527)*(3))&-1);
+ var $4529=((($4528)+(2))|0);
+ var $4530=$line;
+ var $4531=(($4530+$4529)|0);
+ HEAP8[($4531)]=0;
+ var $4532=$count;
+ var $4533=((($4532)-(1))|0);
+ $count=$4533;
+ var $4534=$x;
+ var $4535=((($4534)+(1))|0);
+ $x=$4535;
+ var $4536=$x;
+ var $4537=((($4536)*(3))&-1);
+ var $4538=$line;
+ var $4539=(($4538+$4537)|0);
+ HEAP8[($4539)]=0;
+ var $4540=$x;
+ var $4541=((($4540)*(3))&-1);
+ var $4542=((($4541)+(1))|0);
+ var $4543=$line;
+ var $4544=(($4543+$4542)|0);
+ HEAP8[($4544)]=0;
+ var $4545=$x;
+ var $4546=((($4545)*(3))&-1);
+ var $4547=((($4546)+(2))|0);
+ var $4548=$line;
+ var $4549=(($4548+$4547)|0);
+ HEAP8[($4549)]=0;
+ var $4550=$count;
+ var $4551=((($4550)-(1))|0);
+ $count=$4551;
+ var $4552=$x;
+ var $4553=((($4552)+(1))|0);
+ $x=$4553;
+ var $4554=$x;
+ var $4555=((($4554)*(3))&-1);
+ var $4556=$line;
+ var $4557=(($4556+$4555)|0);
+ HEAP8[($4557)]=0;
+ var $4558=$x;
+ var $4559=((($4558)*(3))&-1);
+ var $4560=((($4559)+(1))|0);
+ var $4561=$line;
+ var $4562=(($4561+$4560)|0);
+ HEAP8[($4562)]=0;
+ var $4563=$x;
+ var $4564=((($4563)*(3))&-1);
+ var $4565=((($4564)+(2))|0);
+ var $4566=$line;
+ var $4567=(($4566+$4565)|0);
+ HEAP8[($4567)]=0;
+ var $4568=$count;
+ var $4569=((($4568)-(1))|0);
+ $count=$4569;
+ var $4570=$x;
+ var $4571=((($4570)+(1))|0);
+ $x=$4571;
+ label=333;break;
+ case 337:
+ label=338;break;
+ case 338:
+ var $4574=$count;
+ var $4575=($4574|0)>0;
+ if($4575){label=339;break;}else{var $4581=0;label=340;break;}
+ case 339:
+ var $4577=$x;
+ var $4578=$3;
+ var $4579=($4577|0)<($4578|0);
+ var $4581=$4579;label=340;break;
+ case 340:
+ var $4581;
+ if($4581){label=341;break;}else{label=342;break;}
+ case 341:
+ var $4583=$x;
+ var $4584=((($4583)*(3))&-1);
+ var $4585=$line;
+ var $4586=(($4585+$4584)|0);
+ HEAP8[($4586)]=0;
+ var $4587=$x;
+ var $4588=((($4587)*(3))&-1);
+ var $4589=((($4588)+(1))|0);
+ var $4590=$line;
+ var $4591=(($4590+$4589)|0);
+ HEAP8[($4591)]=0;
+ var $4592=$x;
+ var $4593=((($4592)*(3))&-1);
+ var $4594=((($4593)+(2))|0);
+ var $4595=$line;
+ var $4596=(($4595+$4594)|0);
+ HEAP8[($4596)]=0;
+ var $4597=$count;
+ var $4598=((($4597)-(1))|0);
+ $count=$4598;
+ var $4599=$x;
+ var $4600=((($4599)+(1))|0);
+ $x=$4600;
+ label=338;break;
+ case 342:
+ label=344;break;
+ case 343:
+ $1=0;
+ label=347;break;
+ case 344:
+ label=34;break;
+ case 345:
+ label=2;break;
+ case 346:
+ $1=1;
+ label=347;break;
+ case 347:
+ var $4607=$1;
+ STACKTOP=sp;return $4607;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+
+
+function _bitmap_decompress_32($output,$output_width,$output_height,$input_width,$input_height,$input,$size){
+ var label=0;
+ var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1;
+ var $2;
+ var $3;
+ var $4;
+ var $5;
+ var $6;
+ var $7;
+ var $temp;
+ var $rv;
+ var $y;
+ var $x;
+ var $r;
+ var $g;
+ var $b;
+ var $a;
+ $1=$output;
+ $2=$output_width;
+ $3=$output_height;
+ $4=$input_width;
+ $5=$input_height;
+ $6=$input;
+ $7=$size;
+ var $8=$4;
+ var $9=$5;
+ var $10=(Math_imul($8,$9)|0);
+ var $11=($10<<2);
+ var $12=_malloc($11);
+ $temp=$12;
+ var $13=$temp;
+ var $14=$4;
+ var $15=$5;
+ var $16=$6;
+ var $17=$7;
+ var $18=_bitmap_decompress4($13,$14,$15,$16,$17);
+ $rv=$18;
+ $y=0;
+ label=2;break;
+ case 2:
+ var $20=$y;
+ var $21=$3;
+ var $22=($20|0)<($21|0);
+ if($22){label=3;break;}else{label=9;break;}
+ case 3:
+ $x=0;
+ label=4;break;
+ case 4:
+ var $25=$x;
+ var $26=$2;
+ var $27=($25|0)<($26|0);
+ if($27){label=5;break;}else{label=7;break;}
+ case 5:
+ var $29=$y;
+ var $30=$4;
+ var $31=(Math_imul($29,$30)|0);
+ var $32=$x;
+ var $33=((($31)+($32))|0);
+ var $34=($33<<2);
+ var $35=$temp;
+ var $36=(($35+$34)|0);
+ var $37=HEAP8[($36)];
+ $r=$37;
+ var $38=$y;
+ var $39=$4;
+ var $40=(Math_imul($38,$39)|0);
+ var $41=$x;
+ var $42=((($40)+($41))|0);
+ var $43=($42<<2);
+ var $44=((($43)+(1))|0);
+ var $45=$temp;
+ var $46=(($45+$44)|0);
+ var $47=HEAP8[($46)];
+ $g=$47;
+ var $48=$y;
+ var $49=$4;
+ var $50=(Math_imul($48,$49)|0);
+ var $51=$x;
+ var $52=((($50)+($51))|0);
+ var $53=($52<<2);
+ var $54=((($53)+(2))|0);
+ var $55=$temp;
+ var $56=(($55+$54)|0);
+ var $57=HEAP8[($56)];
+ $b=$57;
+ var $58=$y;
+ var $59=$4;
+ var $60=(Math_imul($58,$59)|0);
+ var $61=$x;
+ var $62=((($60)+($61))|0);
+ var $63=($62<<2);
+ var $64=((($63)+(3))|0);
+ var $65=$temp;
+ var $66=(($65+$64)|0);
+ var $67=HEAP8[($66)];
+ $a=$67;
+ var $68=$r;
+ var $69=($68&255);
+ var $70=$69<<16;
+ var $71=-16777216|$70;
+ var $72=$g;
+ var $73=($72&255);
+ var $74=$73<<8;
+ var $75=$71|$74;
+ var $76=$b;
+ var $77=($76&255);
+ var $78=$75|$77;
+ var $79=$y;
+ var $80=$2;
+ var $81=(Math_imul($79,$80)|0);
+ var $82=$x;
+ var $83=((($81)+($82))|0);
+ var $84=$1;
+ var $85=$84;
+ var $86=(($85+($83<<2))|0);
+ HEAP32[(($86)>>2)]=$78;
+ label=6;break;
+ case 6:
+ var $88=$x;
+ var $89=((($88)+(1))|0);
+ $x=$89;
+ label=4;break;
+ case 7:
+ label=8;break;
+ case 8:
+ var $92=$y;
+ var $93=((($92)+(1))|0);
+ $y=$93;
+ label=2;break;
+ case 9:
+ var $95=$temp;
+ _free($95);
+ var $96=$rv;
+ STACKTOP=sp;return $96;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+Module["_bitmap_decompress_32"] = _bitmap_decompress_32;
+
+function _bitmap_decompress4($output,$width,$height,$input,$size){
+ var label=0;
+ var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1;
+ var $2;
+ var $3;
+ var $4;
+ var $5;
+ var $6;
+ var $code;
+ var $bytes_pro;
+ var $total_pro;
+ $2=$output;
+ $3=$width;
+ $4=$height;
+ $5=$input;
+ $6=$size;
+ var $7=$5;
+ var $8=(($7+1)|0);
+ $5=$8;
+ var $9=HEAP8[($7)];
+ var $10=($9&255);
+ $code=$10;
+ var $11=$code;
+ var $12=($11|0)!=16;
+ if($12){label=2;break;}else{label=3;break;}
+ case 2:
+ $1=0;
+ label=4;break;
+ case 3:
+ $total_pro=1;
+ var $15=$5;
+ var $16=$3;
+ var $17=$4;
+ var $18=$2;
+ var $19=(($18+3)|0);
+ var $20=$6;
+ var $21=$total_pro;
+ var $22=((($20)-($21))|0);
+ var $23=_process_plane($15,$16,$17,$19,$22);
+ $bytes_pro=$23;
+ var $24=$bytes_pro;
+ var $25=$total_pro;
+ var $26=((($25)+($24))|0);
+ $total_pro=$26;
+ var $27=$bytes_pro;
+ var $28=$5;
+ var $29=(($28+$27)|0);
+ $5=$29;
+ var $30=$5;
+ var $31=$3;
+ var $32=$4;
+ var $33=$2;
+ var $34=(($33+2)|0);
+ var $35=$6;
+ var $36=$total_pro;
+ var $37=((($35)-($36))|0);
+ var $38=_process_plane($30,$31,$32,$34,$37);
+ $bytes_pro=$38;
+ var $39=$bytes_pro;
+ var $40=$total_pro;
+ var $41=((($40)+($39))|0);
+ $total_pro=$41;
+ var $42=$bytes_pro;
+ var $43=$5;
+ var $44=(($43+$42)|0);
+ $5=$44;
+ var $45=$5;
+ var $46=$3;
+ var $47=$4;
+ var $48=$2;
+ var $49=(($48+1)|0);
+ var $50=$6;
+ var $51=$total_pro;
+ var $52=((($50)-($51))|0);
+ var $53=_process_plane($45,$46,$47,$49,$52);
+ $bytes_pro=$53;
+ var $54=$bytes_pro;
+ var $55=$total_pro;
+ var $56=((($55)+($54))|0);
+ $total_pro=$56;
+ var $57=$bytes_pro;
+ var $58=$5;
+ var $59=(($58+$57)|0);
+ $5=$59;
+ var $60=$5;
+ var $61=$3;
+ var $62=$4;
+ var $63=$2;
+ var $64=(($63)|0);
+ var $65=$6;
+ var $66=$total_pro;
+ var $67=((($65)-($66))|0);
+ var $68=_process_plane($60,$61,$62,$64,$67);
+ $bytes_pro=$68;
+ var $69=$bytes_pro;
+ var $70=$total_pro;
+ var $71=((($70)+($69))|0);
+ $total_pro=$71;
+ var $72=$6;
+ var $73=$total_pro;
+ var $74=($72|0)==($73|0);
+ var $75=($74&1);
+ $1=$75;
+ label=4;break;
+ case 4:
+ var $77=$1;
+ STACKTOP=sp;return $77;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+
+
+function _process_plane($in,$width,$height,$out,$size){
+ var label=0;
+ var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1;
+ var $2;
+ var $3;
+ var $4;
+ var $5;
+ var $indexw;
+ var $indexh;
+ var $code;
+ var $collen;
+ var $replen;
+ var $color;
+ var $x;
+ var $revcode;
+ var $last_line;
+ var $this_line;
+ var $org_in;
+ var $org_out;
+ $1=$in;
+ $2=$width;
+ $3=$height;
+ $4=$out;
+ $5=$size;
+ var $6=$1;
+ $org_in=$6;
+ var $7=$4;
+ $org_out=$7;
+ $last_line=0;
+ $indexh=0;
+ label=2;break;
+ case 2:
+ var $9=$indexh;
+ var $10=$3;
+ var $11=($9|0)<($10|0);
+ if($11){label=3;break;}else{label=34;break;}
+ case 3:
+ var $13=$org_out;
+ var $14=$2;
+ var $15=$3;
+ var $16=(Math_imul($14,$15)|0);
+ var $17=($16<<2);
+ var $18=(($13+$17)|0);
+ var $19=$indexh;
+ var $20=((($19)+(1))|0);
+ var $21=$2;
+ var $22=(Math_imul($20,$21)|0);
+ var $23=($22<<2);
+ var $24=(((-$23))|0);
+ var $25=(($18+$24)|0);
+ $4=$25;
+ $color=0;
+ var $26=$4;
+ $this_line=$26;
+ $indexw=0;
+ var $27=$last_line;
+ var $28=($27|0)==0;
+ if($28){label=4;break;}else{label=17;break;}
+ case 4:
+ label=5;break;
+ case 5:
+ var $31=$indexw;
+ var $32=$2;
+ var $33=($31|0)<($32|0);
+ if($33){label=6;break;}else{label=16;break;}
+ case 6:
+ var $35=$1;
+ var $36=(($35+1)|0);
+ $1=$36;
+ var $37=HEAP8[($35)];
+ var $38=($37&255);
+ $code=$38;
+ var $39=$code;
+ var $40=$39&15;
+ $replen=$40;
+ var $41=$code;
+ var $42=$41>>4;
+ var $43=$42&15;
+ $collen=$43;
+ var $44=$replen;
+ var $45=$44<<4;
+ var $46=$collen;
+ var $47=$45|$46;
+ $revcode=$47;
+ var $48=$revcode;
+ var $49=($48|0)<=47;
+ if($49){label=7;break;}else{label=9;break;}
+ case 7:
+ var $51=$revcode;
+ var $52=($51|0)>=16;
+ if($52){label=8;break;}else{label=9;break;}
+ case 8:
+ var $54=$revcode;
+ $replen=$54;
+ $collen=0;
+ label=9;break;
+ case 9:
+ label=10;break;
+ case 10:
+ var $57=$collen;
+ var $58=($57|0)>0;
+ if($58){label=11;break;}else{label=12;break;}
+ case 11:
+ var $60=$1;
+ var $61=(($60+1)|0);
+ $1=$61;
+ var $62=HEAP8[($60)];
+ var $63=($62&255);
+ $color=$63;
+ var $64=$color;
+ var $65=(($64)&255);
+ var $66=$4;
+ HEAP8[($66)]=$65;
+ var $67=$4;
+ var $68=(($67+4)|0);
+ $4=$68;
+ var $69=$indexw;
+ var $70=((($69)+(1))|0);
+ $indexw=$70;
+ var $71=$collen;
+ var $72=((($71)-(1))|0);
+ $collen=$72;
+ label=10;break;
+ case 12:
+ label=13;break;
+ case 13:
+ var $75=$replen;
+ var $76=($75|0)>0;
+ if($76){label=14;break;}else{label=15;break;}
+ case 14:
+ var $78=$color;
+ var $79=(($78)&255);
+ var $80=$4;
+ HEAP8[($80)]=$79;
+ var $81=$4;
+ var $82=(($81+4)|0);
+ $4=$82;
+ var $83=$indexw;
+ var $84=((($83)+(1))|0);
+ $indexw=$84;
+ var $85=$replen;
+ var $86=((($85)-(1))|0);
+ $replen=$86;
+ label=13;break;
+ case 15:
+ label=5;break;
+ case 16:
+ label=33;break;
+ case 17:
+ label=18;break;
+ case 18:
+ var $91=$indexw;
+ var $92=$2;
+ var $93=($91|0)<($92|0);
+ if($93){label=19;break;}else{label=32;break;}
+ case 19:
+ var $95=$1;
+ var $96=(($95+1)|0);
+ $1=$96;
+ var $97=HEAP8[($95)];
+ var $98=($97&255);
+ $code=$98;
+ var $99=$code;
+ var $100=$99&15;
+ $replen=$100;
+ var $101=$code;
+ var $102=$101>>4;
+ var $103=$102&15;
+ $collen=$103;
+ var $104=$replen;
+ var $105=$104<<4;
+ var $106=$collen;
+ var $107=$105|$106;
+ $revcode=$107;
+ var $108=$revcode;
+ var $109=($108|0)<=47;
+ if($109){label=20;break;}else{label=22;break;}
+ case 20:
+ var $111=$revcode;
+ var $112=($111|0)>=16;
+ if($112){label=21;break;}else{label=22;break;}
+ case 21:
+ var $114=$revcode;
+ $replen=$114;
+ $collen=0;
+ label=22;break;
+ case 22:
+ label=23;break;
+ case 23:
+ var $117=$collen;
+ var $118=($117|0)>0;
+ if($118){label=24;break;}else{label=28;break;}
+ case 24:
+ var $120=$1;
+ var $121=(($120+1)|0);
+ $1=$121;
+ var $122=HEAP8[($120)];
+ var $123=($122&255);
+ $x=$123;
+ var $124=$x;
+ var $125=$124&1;
+ var $126=($125|0)!=0;
+ if($126){label=25;break;}else{label=26;break;}
+ case 25:
+ var $128=$x;
+ var $129=$128>>1;
+ $x=$129;
+ var $130=$x;
+ var $131=((($130)+(1))|0);
+ $x=$131;
+ var $132=$x;
+ var $133=(((-$132))|0);
+ $color=$133;
+ label=27;break;
+ case 26:
+ var $135=$x;
+ var $136=$135>>1;
+ $x=$136;
+ var $137=$x;
+ $color=$137;
+ label=27;break;
+ case 27:
+ var $139=$indexw;
+ var $140=($139<<2);
+ var $141=$last_line;
+ var $142=(($141+$140)|0);
+ var $143=HEAP8[($142)];
+ var $144=($143&255);
+ var $145=$color;
+ var $146=((($144)+($145))|0);
+ $x=$146;
+ var $147=$x;
+ var $148=(($147)&255);
+ var $149=$4;
+ HEAP8[($149)]=$148;
+ var $150=$4;
+ var $151=(($150+4)|0);
+ $4=$151;
+ var $152=$indexw;
+ var $153=((($152)+(1))|0);
+ $indexw=$153;
+ var $154=$collen;
+ var $155=((($154)-(1))|0);
+ $collen=$155;
+ label=23;break;
+ case 28:
+ label=29;break;
+ case 29:
+ var $158=$replen;
+ var $159=($158|0)>0;
+ if($159){label=30;break;}else{label=31;break;}
+ case 30:
+ var $161=$indexw;
+ var $162=($161<<2);
+ var $163=$last_line;
+ var $164=(($163+$162)|0);
+ var $165=HEAP8[($164)];
+ var $166=($165&255);
+ var $167=$color;
+ var $168=((($166)+($167))|0);
+ $x=$168;
+ var $169=$x;
+ var $170=(($169)&255);
+ var $171=$4;
+ HEAP8[($171)]=$170;
+ var $172=$4;
+ var $173=(($172+4)|0);
+ $4=$173;
+ var $174=$indexw;
+ var $175=((($174)+(1))|0);
+ $indexw=$175;
+ var $176=$replen;
+ var $177=((($176)-(1))|0);
+ $replen=$177;
+ label=29;break;
+ case 31:
+ label=18;break;
+ case 32:
+ label=33;break;
+ case 33:
+ var $181=$indexh;
+ var $182=((($181)+(1))|0);
+ $indexh=$182;
+ var $183=$this_line;
+ $last_line=$183;
+ label=2;break;
+ case 34:
+ var $185=$1;
+ var $186=$org_in;
+ var $187=$185;
+ var $188=$186;
+ var $189=((($187)-($188))|0);
+ STACKTOP=sp;return $189;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+
+
+function _malloc($bytes){
+ var label=0;
+
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1=($bytes>>>0)<245;
+ if($1){label=2;break;}else{label=78;break;}
+ case 2:
+ var $3=($bytes>>>0)<11;
+ if($3){var $8=16;label=4;break;}else{label=3;break;}
+ case 3:
+ var $5=((($bytes)+(11))|0);
+ var $6=$5&-8;
+ var $8=$6;label=4;break;
+ case 4:
+ var $8;
+ var $9=$8>>>3;
+ var $10=HEAP32[((40)>>2)];
+ var $11=$10>>>($9>>>0);
+ var $12=$11&3;
+ var $13=($12|0)==0;
+ if($13){label=12;break;}else{label=5;break;}
+ case 5:
+ var $15=$11&1;
+ var $16=$15^1;
+ var $17=((($16)+($9))|0);
+ var $18=$17<<1;
+ var $19=((80+($18<<2))|0);
+ var $20=$19;
+ var $_sum11=((($18)+(2))|0);
+ var $21=((80+($_sum11<<2))|0);
+ var $22=HEAP32[(($21)>>2)];
+ var $23=(($22+8)|0);
+ var $24=HEAP32[(($23)>>2)];
+ var $25=($20|0)==($24|0);
+ if($25){label=6;break;}else{label=7;break;}
+ case 6:
+ var $27=1<<$17;
+ var $28=$27^-1;
+ var $29=$10&$28;
+ HEAP32[((40)>>2)]=$29;
+ label=11;break;
+ case 7:
+ var $31=$24;
+ var $32=HEAP32[((56)>>2)];
+ var $33=($31>>>0)<($32>>>0);
+ if($33){label=10;break;}else{label=8;break;}
+ case 8:
+ var $35=(($24+12)|0);
+ var $36=HEAP32[(($35)>>2)];
+ var $37=($36|0)==($22|0);
+ if($37){label=9;break;}else{label=10;break;}
+ case 9:
+ HEAP32[(($35)>>2)]=$20;
+ HEAP32[(($21)>>2)]=$24;
+ label=11;break;
+ case 10:
+ _abort();
+ throw "Reached an unreachable!";
+ case 11:
+ var $40=$17<<3;
+ var $41=$40|3;
+ var $42=(($22+4)|0);
+ HEAP32[(($42)>>2)]=$41;
+ var $43=$22;
+ var $_sum1314=$40|4;
+ var $44=(($43+$_sum1314)|0);
+ var $45=$44;
+ var $46=HEAP32[(($45)>>2)];
+ var $47=$46|1;
+ HEAP32[(($45)>>2)]=$47;
+ var $48=$23;
+ var $mem_0=$48;label=341;break;
+ case 12:
+ var $50=HEAP32[((48)>>2)];
+ var $51=($8>>>0)>($50>>>0);
+ if($51){label=13;break;}else{var $nb_0=$8;label=160;break;}
+ case 13:
+ var $53=($11|0)==0;
+ if($53){label=27;break;}else{label=14;break;}
+ case 14:
+ var $55=$11<<$9;
+ var $56=2<<$9;
+ var $57=(((-$56))|0);
+ var $58=$56|$57;
+ var $59=$55&$58;
+ var $60=(((-$59))|0);
+ var $61=$59&$60;
+ var $62=((($61)-(1))|0);
+ var $63=$62>>>12;
+ var $64=$63&16;
+ var $65=$62>>>($64>>>0);
+ var $66=$65>>>5;
+ var $67=$66&8;
+ var $68=$67|$64;
+ var $69=$65>>>($67>>>0);
+ var $70=$69>>>2;
+ var $71=$70&4;
+ var $72=$68|$71;
+ var $73=$69>>>($71>>>0);
+ var $74=$73>>>1;
+ var $75=$74&2;
+ var $76=$72|$75;
+ var $77=$73>>>($75>>>0);
+ var $78=$77>>>1;
+ var $79=$78&1;
+ var $80=$76|$79;
+ var $81=$77>>>($79>>>0);
+ var $82=((($80)+($81))|0);
+ var $83=$82<<1;
+ var $84=((80+($83<<2))|0);
+ var $85=$84;
+ var $_sum4=((($83)+(2))|0);
+ var $86=((80+($_sum4<<2))|0);
+ var $87=HEAP32[(($86)>>2)];
+ var $88=(($87+8)|0);
+ var $89=HEAP32[(($88)>>2)];
+ var $90=($85|0)==($89|0);
+ if($90){label=15;break;}else{label=16;break;}
+ case 15:
+ var $92=1<<$82;
+ var $93=$92^-1;
+ var $94=$10&$93;
+ HEAP32[((40)>>2)]=$94;
+ label=20;break;
+ case 16:
+ var $96=$89;
+ var $97=HEAP32[((56)>>2)];
+ var $98=($96>>>0)<($97>>>0);
+ if($98){label=19;break;}else{label=17;break;}
+ case 17:
+ var $100=(($89+12)|0);
+ var $101=HEAP32[(($100)>>2)];
+ var $102=($101|0)==($87|0);
+ if($102){label=18;break;}else{label=19;break;}
+ case 18:
+ HEAP32[(($100)>>2)]=$85;
+ HEAP32[(($86)>>2)]=$89;
+ label=20;break;
+ case 19:
+ _abort();
+ throw "Reached an unreachable!";
+ case 20:
+ var $105=$82<<3;
+ var $106=((($105)-($8))|0);
+ var $107=$8|3;
+ var $108=(($87+4)|0);
+ HEAP32[(($108)>>2)]=$107;
+ var $109=$87;
+ var $110=(($109+$8)|0);
+ var $111=$110;
+ var $112=$106|1;
+ var $_sum67=$8|4;
+ var $113=(($109+$_sum67)|0);
+ var $114=$113;
+ HEAP32[(($114)>>2)]=$112;
+ var $115=(($109+$105)|0);
+ var $116=$115;
+ HEAP32[(($116)>>2)]=$106;
+ var $117=HEAP32[((48)>>2)];
+ var $118=($117|0)==0;
+ if($118){label=26;break;}else{label=21;break;}
+ case 21:
+ var $120=HEAP32[((60)>>2)];
+ var $121=$117>>>3;
+ var $122=$121<<1;
+ var $123=((80+($122<<2))|0);
+ var $124=$123;
+ var $125=HEAP32[((40)>>2)];
+ var $126=1<<$121;
+ var $127=$125&$126;
+ var $128=($127|0)==0;
+ if($128){label=22;break;}else{label=23;break;}
+ case 22:
+ var $130=$125|$126;
+ HEAP32[((40)>>2)]=$130;
+ var $_sum9_pre=((($122)+(2))|0);
+ var $_pre=((80+($_sum9_pre<<2))|0);
+ var $F4_0=$124;var $_pre_phi=$_pre;label=25;break;
+ case 23:
+ var $_sum10=((($122)+(2))|0);
+ var $132=((80+($_sum10<<2))|0);
+ var $133=HEAP32[(($132)>>2)];
+ var $134=$133;
+ var $135=HEAP32[((56)>>2)];
+ var $136=($134>>>0)<($135>>>0);
+ if($136){label=24;break;}else{var $F4_0=$133;var $_pre_phi=$132;label=25;break;}
+ case 24:
+ _abort();
+ throw "Reached an unreachable!";
+ case 25:
+ var $_pre_phi;
+ var $F4_0;
+ HEAP32[(($_pre_phi)>>2)]=$120;
+ var $139=(($F4_0+12)|0);
+ HEAP32[(($139)>>2)]=$120;
+ var $140=(($120+8)|0);
+ HEAP32[(($140)>>2)]=$F4_0;
+ var $141=(($120+12)|0);
+ HEAP32[(($141)>>2)]=$124;
+ label=26;break;
+ case 26:
+ HEAP32[((48)>>2)]=$106;
+ HEAP32[((60)>>2)]=$111;
+ var $143=$88;
+ var $mem_0=$143;label=341;break;
+ case 27:
+ var $145=HEAP32[((44)>>2)];
+ var $146=($145|0)==0;
+ if($146){var $nb_0=$8;label=160;break;}else{label=28;break;}
+ case 28:
+ var $148=(((-$145))|0);
+ var $149=$145&$148;
+ var $150=((($149)-(1))|0);
+ var $151=$150>>>12;
+ var $152=$151&16;
+ var $153=$150>>>($152>>>0);
+ var $154=$153>>>5;
+ var $155=$154&8;
+ var $156=$155|$152;
+ var $157=$153>>>($155>>>0);
+ var $158=$157>>>2;
+ var $159=$158&4;
+ var $160=$156|$159;
+ var $161=$157>>>($159>>>0);
+ var $162=$161>>>1;
+ var $163=$162&2;
+ var $164=$160|$163;
+ var $165=$161>>>($163>>>0);
+ var $166=$165>>>1;
+ var $167=$166&1;
+ var $168=$164|$167;
+ var $169=$165>>>($167>>>0);
+ var $170=((($168)+($169))|0);
+ var $171=((344+($170<<2))|0);
+ var $172=HEAP32[(($171)>>2)];
+ var $173=(($172+4)|0);
+ var $174=HEAP32[(($173)>>2)];
+ var $175=$174&-8;
+ var $176=((($175)-($8))|0);
+ var $t_0_i=$172;var $v_0_i=$172;var $rsize_0_i=$176;label=29;break;
+ case 29:
+ var $rsize_0_i;
+ var $v_0_i;
+ var $t_0_i;
+ var $178=(($t_0_i+16)|0);
+ var $179=HEAP32[(($178)>>2)];
+ var $180=($179|0)==0;
+ if($180){label=30;break;}else{var $185=$179;label=31;break;}
+ case 30:
+ var $182=(($t_0_i+20)|0);
+ var $183=HEAP32[(($182)>>2)];
+ var $184=($183|0)==0;
+ if($184){label=32;break;}else{var $185=$183;label=31;break;}
+ case 31:
+ var $185;
+ var $186=(($185+4)|0);
+ var $187=HEAP32[(($186)>>2)];
+ var $188=$187&-8;
+ var $189=((($188)-($8))|0);
+ var $190=($189>>>0)<($rsize_0_i>>>0);
+ var $_rsize_0_i=($190?$189:$rsize_0_i);
+ var $_v_0_i=($190?$185:$v_0_i);
+ var $t_0_i=$185;var $v_0_i=$_v_0_i;var $rsize_0_i=$_rsize_0_i;label=29;break;
+ case 32:
+ var $192=$v_0_i;
+ var $193=HEAP32[((56)>>2)];
+ var $194=($192>>>0)<($193>>>0);
+ if($194){label=76;break;}else{label=33;break;}
+ case 33:
+ var $196=(($192+$8)|0);
+ var $197=$196;
+ var $198=($192>>>0)<($196>>>0);
+ if($198){label=34;break;}else{label=76;break;}
+ case 34:
+ var $200=(($v_0_i+24)|0);
+ var $201=HEAP32[(($200)>>2)];
+ var $202=(($v_0_i+12)|0);
+ var $203=HEAP32[(($202)>>2)];
+ var $204=($203|0)==($v_0_i|0);
+ if($204){label=40;break;}else{label=35;break;}
+ case 35:
+ var $206=(($v_0_i+8)|0);
+ var $207=HEAP32[(($206)>>2)];
+ var $208=$207;
+ var $209=($208>>>0)<($193>>>0);
+ if($209){label=39;break;}else{label=36;break;}
+ case 36:
+ var $211=(($207+12)|0);
+ var $212=HEAP32[(($211)>>2)];
+ var $213=($212|0)==($v_0_i|0);
+ if($213){label=37;break;}else{label=39;break;}
+ case 37:
+ var $215=(($203+8)|0);
+ var $216=HEAP32[(($215)>>2)];
+ var $217=($216|0)==($v_0_i|0);
+ if($217){label=38;break;}else{label=39;break;}
+ case 38:
+ HEAP32[(($211)>>2)]=$203;
+ HEAP32[(($215)>>2)]=$207;
+ var $R_1_i=$203;label=47;break;
+ case 39:
+ _abort();
+ throw "Reached an unreachable!";
+ case 40:
+ var $220=(($v_0_i+20)|0);
+ var $221=HEAP32[(($220)>>2)];
+ var $222=($221|0)==0;
+ if($222){label=41;break;}else{var $R_0_i=$221;var $RP_0_i=$220;label=42;break;}
+ case 41:
+ var $224=(($v_0_i+16)|0);
+ var $225=HEAP32[(($224)>>2)];
+ var $226=($225|0)==0;
+ if($226){var $R_1_i=0;label=47;break;}else{var $R_0_i=$225;var $RP_0_i=$224;label=42;break;}
+ case 42:
+ var $RP_0_i;
+ var $R_0_i;
+ var $227=(($R_0_i+20)|0);
+ var $228=HEAP32[(($227)>>2)];
+ var $229=($228|0)==0;
+ if($229){label=43;break;}else{var $R_0_i=$228;var $RP_0_i=$227;label=42;break;}
+ case 43:
+ var $231=(($R_0_i+16)|0);
+ var $232=HEAP32[(($231)>>2)];
+ var $233=($232|0)==0;
+ if($233){label=44;break;}else{var $R_0_i=$232;var $RP_0_i=$231;label=42;break;}
+ case 44:
+ var $235=$RP_0_i;
+ var $236=($235>>>0)<($193>>>0);
+ if($236){label=46;break;}else{label=45;break;}
+ case 45:
+ HEAP32[(($RP_0_i)>>2)]=0;
+ var $R_1_i=$R_0_i;label=47;break;
+ case 46:
+ _abort();
+ throw "Reached an unreachable!";
+ case 47:
+ var $R_1_i;
+ var $240=($201|0)==0;
+ if($240){label=67;break;}else{label=48;break;}
+ case 48:
+ var $242=(($v_0_i+28)|0);
+ var $243=HEAP32[(($242)>>2)];
+ var $244=((344+($243<<2))|0);
+ var $245=HEAP32[(($244)>>2)];
+ var $246=($v_0_i|0)==($245|0);
+ if($246){label=49;break;}else{label=51;break;}
+ case 49:
+ HEAP32[(($244)>>2)]=$R_1_i;
+ var $cond_i=($R_1_i|0)==0;
+ if($cond_i){label=50;break;}else{label=57;break;}
+ case 50:
+ var $248=HEAP32[(($242)>>2)];
+ var $249=1<<$248;
+ var $250=$249^-1;
+ var $251=HEAP32[((44)>>2)];
+ var $252=$251&$250;
+ HEAP32[((44)>>2)]=$252;
+ label=67;break;
+ case 51:
+ var $254=$201;
+ var $255=HEAP32[((56)>>2)];
+ var $256=($254>>>0)<($255>>>0);
+ if($256){label=55;break;}else{label=52;break;}
+ case 52:
+ var $258=(($201+16)|0);
+ var $259=HEAP32[(($258)>>2)];
+ var $260=($259|0)==($v_0_i|0);
+ if($260){label=53;break;}else{label=54;break;}
+ case 53:
+ HEAP32[(($258)>>2)]=$R_1_i;
+ label=56;break;
+ case 54:
+ var $263=(($201+20)|0);
+ HEAP32[(($263)>>2)]=$R_1_i;
+ label=56;break;
+ case 55:
+ _abort();
+ throw "Reached an unreachable!";
+ case 56:
+ var $266=($R_1_i|0)==0;
+ if($266){label=67;break;}else{label=57;break;}
+ case 57:
+ var $268=$R_1_i;
+ var $269=HEAP32[((56)>>2)];
+ var $270=($268>>>0)<($269>>>0);
+ if($270){label=66;break;}else{label=58;break;}
+ case 58:
+ var $272=(($R_1_i+24)|0);
+ HEAP32[(($272)>>2)]=$201;
+ var $273=(($v_0_i+16)|0);
+ var $274=HEAP32[(($273)>>2)];
+ var $275=($274|0)==0;
+ if($275){label=62;break;}else{label=59;break;}
+ case 59:
+ var $277=$274;
+ var $278=HEAP32[((56)>>2)];
+ var $279=($277>>>0)<($278>>>0);
+ if($279){label=61;break;}else{label=60;break;}
+ case 60:
+ var $281=(($R_1_i+16)|0);
+ HEAP32[(($281)>>2)]=$274;
+ var $282=(($274+24)|0);
+ HEAP32[(($282)>>2)]=$R_1_i;
+ label=62;break;
+ case 61:
+ _abort();
+ throw "Reached an unreachable!";
+ case 62:
+ var $285=(($v_0_i+20)|0);
+ var $286=HEAP32[(($285)>>2)];
+ var $287=($286|0)==0;
+ if($287){label=67;break;}else{label=63;break;}
+ case 63:
+ var $289=$286;
+ var $290=HEAP32[((56)>>2)];
+ var $291=($289>>>0)<($290>>>0);
+ if($291){label=65;break;}else{label=64;break;}
+ case 64:
+ var $293=(($R_1_i+20)|0);
+ HEAP32[(($293)>>2)]=$286;
+ var $294=(($286+24)|0);
+ HEAP32[(($294)>>2)]=$R_1_i;
+ label=67;break;
+ case 65:
+ _abort();
+ throw "Reached an unreachable!";
+ case 66:
+ _abort();
+ throw "Reached an unreachable!";
+ case 67:
+ var $298=($rsize_0_i>>>0)<16;
+ if($298){label=68;break;}else{label=69;break;}
+ case 68:
+ var $300=((($rsize_0_i)+($8))|0);
+ var $301=$300|3;
+ var $302=(($v_0_i+4)|0);
+ HEAP32[(($302)>>2)]=$301;
+ var $_sum4_i=((($300)+(4))|0);
+ var $303=(($192+$_sum4_i)|0);
+ var $304=$303;
+ var $305=HEAP32[(($304)>>2)];
+ var $306=$305|1;
+ HEAP32[(($304)>>2)]=$306;
+ label=77;break;
+ case 69:
+ var $308=$8|3;
+ var $309=(($v_0_i+4)|0);
+ HEAP32[(($309)>>2)]=$308;
+ var $310=$rsize_0_i|1;
+ var $_sum_i41=$8|4;
+ var $311=(($192+$_sum_i41)|0);
+ var $312=$311;
+ HEAP32[(($312)>>2)]=$310;
+ var $_sum1_i=((($rsize_0_i)+($8))|0);
+ var $313=(($192+$_sum1_i)|0);
+ var $314=$313;
+ HEAP32[(($314)>>2)]=$rsize_0_i;
+ var $315=HEAP32[((48)>>2)];
+ var $316=($315|0)==0;
+ if($316){label=75;break;}else{label=70;break;}
+ case 70:
+ var $318=HEAP32[((60)>>2)];
+ var $319=$315>>>3;
+ var $320=$319<<1;
+ var $321=((80+($320<<2))|0);
+ var $322=$321;
+ var $323=HEAP32[((40)>>2)];
+ var $324=1<<$319;
+ var $325=$323&$324;
+ var $326=($325|0)==0;
+ if($326){label=71;break;}else{label=72;break;}
+ case 71:
+ var $328=$323|$324;
+ HEAP32[((40)>>2)]=$328;
+ var $_sum2_pre_i=((($320)+(2))|0);
+ var $_pre_i=((80+($_sum2_pre_i<<2))|0);
+ var $F1_0_i=$322;var $_pre_phi_i=$_pre_i;label=74;break;
+ case 72:
+ var $_sum3_i=((($320)+(2))|0);
+ var $330=((80+($_sum3_i<<2))|0);
+ var $331=HEAP32[(($330)>>2)];
+ var $332=$331;
+ var $333=HEAP32[((56)>>2)];
+ var $334=($332>>>0)<($333>>>0);
+ if($334){label=73;break;}else{var $F1_0_i=$331;var $_pre_phi_i=$330;label=74;break;}
+ case 73:
+ _abort();
+ throw "Reached an unreachable!";
+ case 74:
+ var $_pre_phi_i;
+ var $F1_0_i;
+ HEAP32[(($_pre_phi_i)>>2)]=$318;
+ var $337=(($F1_0_i+12)|0);
+ HEAP32[(($337)>>2)]=$318;
+ var $338=(($318+8)|0);
+ HEAP32[(($338)>>2)]=$F1_0_i;
+ var $339=(($318+12)|0);
+ HEAP32[(($339)>>2)]=$322;
+ label=75;break;
+ case 75:
+ HEAP32[((48)>>2)]=$rsize_0_i;
+ HEAP32[((60)>>2)]=$197;
+ label=77;break;
+ case 76:
+ _abort();
+ throw "Reached an unreachable!";
+ case 77:
+ var $342=(($v_0_i+8)|0);
+ var $343=$342;
+ var $mem_0=$343;label=341;break;
+ case 78:
+ var $345=($bytes>>>0)>4294967231;
+ if($345){var $nb_0=-1;label=160;break;}else{label=79;break;}
+ case 79:
+ var $347=((($bytes)+(11))|0);
+ var $348=$347&-8;
+ var $349=HEAP32[((44)>>2)];
+ var $350=($349|0)==0;
+ if($350){var $nb_0=$348;label=160;break;}else{label=80;break;}
+ case 80:
+ var $352=(((-$348))|0);
+ var $353=$347>>>8;
+ var $354=($353|0)==0;
+ if($354){var $idx_0_i=0;label=83;break;}else{label=81;break;}
+ case 81:
+ var $356=($348>>>0)>16777215;
+ if($356){var $idx_0_i=31;label=83;break;}else{label=82;break;}
+ case 82:
+ var $358=((($353)+(1048320))|0);
+ var $359=$358>>>16;
+ var $360=$359&8;
+ var $361=$353<<$360;
+ var $362=((($361)+(520192))|0);
+ var $363=$362>>>16;
+ var $364=$363&4;
+ var $365=$364|$360;
+ var $366=$361<<$364;
+ var $367=((($366)+(245760))|0);
+ var $368=$367>>>16;
+ var $369=$368&2;
+ var $370=$365|$369;
+ var $371=(((14)-($370))|0);
+ var $372=$366<<$369;
+ var $373=$372>>>15;
+ var $374=((($371)+($373))|0);
+ var $375=$374<<1;
+ var $376=((($374)+(7))|0);
+ var $377=$348>>>($376>>>0);
+ var $378=$377&1;
+ var $379=$378|$375;
+ var $idx_0_i=$379;label=83;break;
+ case 83:
+ var $idx_0_i;
+ var $381=((344+($idx_0_i<<2))|0);
+ var $382=HEAP32[(($381)>>2)];
+ var $383=($382|0)==0;
+ if($383){var $v_2_i=0;var $rsize_2_i=$352;var $t_1_i=0;label=90;break;}else{label=84;break;}
+ case 84:
+ var $385=($idx_0_i|0)==31;
+ if($385){var $390=0;label=86;break;}else{label=85;break;}
+ case 85:
+ var $387=$idx_0_i>>>1;
+ var $388=(((25)-($387))|0);
+ var $390=$388;label=86;break;
+ case 86:
+ var $390;
+ var $391=$348<<$390;
+ var $v_0_i18=0;var $rsize_0_i17=$352;var $t_0_i16=$382;var $sizebits_0_i=$391;var $rst_0_i=0;label=87;break;
+ case 87:
+ var $rst_0_i;
+ var $sizebits_0_i;
+ var $t_0_i16;
+ var $rsize_0_i17;
+ var $v_0_i18;
+ var $393=(($t_0_i16+4)|0);
+ var $394=HEAP32[(($393)>>2)];
+ var $395=$394&-8;
+ var $396=((($395)-($348))|0);
+ var $397=($396>>>0)<($rsize_0_i17>>>0);
+ if($397){label=88;break;}else{var $v_1_i=$v_0_i18;var $rsize_1_i=$rsize_0_i17;label=89;break;}
+ case 88:
+ var $399=($395|0)==($348|0);
+ if($399){var $v_2_i=$t_0_i16;var $rsize_2_i=$396;var $t_1_i=$t_0_i16;label=90;break;}else{var $v_1_i=$t_0_i16;var $rsize_1_i=$396;label=89;break;}
+ case 89:
+ var $rsize_1_i;
+ var $v_1_i;
+ var $401=(($t_0_i16+20)|0);
+ var $402=HEAP32[(($401)>>2)];
+ var $403=$sizebits_0_i>>>31;
+ var $404=(($t_0_i16+16+($403<<2))|0);
+ var $405=HEAP32[(($404)>>2)];
+ var $406=($402|0)==0;
+ var $407=($402|0)==($405|0);
+ var $or_cond21_i=$406|$407;
+ var $rst_1_i=($or_cond21_i?$rst_0_i:$402);
+ var $408=($405|0)==0;
+ var $409=$sizebits_0_i<<1;
+ if($408){var $v_2_i=$v_1_i;var $rsize_2_i=$rsize_1_i;var $t_1_i=$rst_1_i;label=90;break;}else{var $v_0_i18=$v_1_i;var $rsize_0_i17=$rsize_1_i;var $t_0_i16=$405;var $sizebits_0_i=$409;var $rst_0_i=$rst_1_i;label=87;break;}
+ case 90:
+ var $t_1_i;
+ var $rsize_2_i;
+ var $v_2_i;
+ var $410=($t_1_i|0)==0;
+ var $411=($v_2_i|0)==0;
+ var $or_cond_i=$410&$411;
+ if($or_cond_i){label=91;break;}else{var $t_2_ph_i=$t_1_i;label=93;break;}
+ case 91:
+ var $413=2<<$idx_0_i;
+ var $414=(((-$413))|0);
+ var $415=$413|$414;
+ var $416=$349&$415;
+ var $417=($416|0)==0;
+ if($417){var $nb_0=$348;label=160;break;}else{label=92;break;}
+ case 92:
+ var $419=(((-$416))|0);
+ var $420=$416&$419;
+ var $421=((($420)-(1))|0);
+ var $422=$421>>>12;
+ var $423=$422&16;
+ var $424=$421>>>($423>>>0);
+ var $425=$424>>>5;
+ var $426=$425&8;
+ var $427=$426|$423;
+ var $428=$424>>>($426>>>0);
+ var $429=$428>>>2;
+ var $430=$429&4;
+ var $431=$427|$430;
+ var $432=$428>>>($430>>>0);
+ var $433=$432>>>1;
+ var $434=$433&2;
+ var $435=$431|$434;
+ var $436=$432>>>($434>>>0);
+ var $437=$436>>>1;
+ var $438=$437&1;
+ var $439=$435|$438;
+ var $440=$436>>>($438>>>0);
+ var $441=((($439)+($440))|0);
+ var $442=((344+($441<<2))|0);
+ var $443=HEAP32[(($442)>>2)];
+ var $t_2_ph_i=$443;label=93;break;
+ case 93:
+ var $t_2_ph_i;
+ var $444=($t_2_ph_i|0)==0;
+ if($444){var $rsize_3_lcssa_i=$rsize_2_i;var $v_3_lcssa_i=$v_2_i;label=96;break;}else{var $t_232_i=$t_2_ph_i;var $rsize_333_i=$rsize_2_i;var $v_334_i=$v_2_i;label=94;break;}
+ case 94:
+ var $v_334_i;
+ var $rsize_333_i;
+ var $t_232_i;
+ var $445=(($t_232_i+4)|0);
+ var $446=HEAP32[(($445)>>2)];
+ var $447=$446&-8;
+ var $448=((($447)-($348))|0);
+ var $449=($448>>>0)<($rsize_333_i>>>0);
+ var $_rsize_3_i=($449?$448:$rsize_333_i);
+ var $t_2_v_3_i=($449?$t_232_i:$v_334_i);
+ var $450=(($t_232_i+16)|0);
+ var $451=HEAP32[(($450)>>2)];
+ var $452=($451|0)==0;
+ if($452){label=95;break;}else{var $t_232_i=$451;var $rsize_333_i=$_rsize_3_i;var $v_334_i=$t_2_v_3_i;label=94;break;}
+ case 95:
+ var $453=(($t_232_i+20)|0);
+ var $454=HEAP32[(($453)>>2)];
+ var $455=($454|0)==0;
+ if($455){var $rsize_3_lcssa_i=$_rsize_3_i;var $v_3_lcssa_i=$t_2_v_3_i;label=96;break;}else{var $t_232_i=$454;var $rsize_333_i=$_rsize_3_i;var $v_334_i=$t_2_v_3_i;label=94;break;}
+ case 96:
+ var $v_3_lcssa_i;
+ var $rsize_3_lcssa_i;
+ var $456=($v_3_lcssa_i|0)==0;
+ if($456){var $nb_0=$348;label=160;break;}else{label=97;break;}
+ case 97:
+ var $458=HEAP32[((48)>>2)];
+ var $459=((($458)-($348))|0);
+ var $460=($rsize_3_lcssa_i>>>0)<($459>>>0);
+ if($460){label=98;break;}else{var $nb_0=$348;label=160;break;}
+ case 98:
+ var $462=$v_3_lcssa_i;
+ var $463=HEAP32[((56)>>2)];
+ var $464=($462>>>0)<($463>>>0);
+ if($464){label=158;break;}else{label=99;break;}
+ case 99:
+ var $466=(($462+$348)|0);
+ var $467=$466;
+ var $468=($462>>>0)<($466>>>0);
+ if($468){label=100;break;}else{label=158;break;}
+ case 100:
+ var $470=(($v_3_lcssa_i+24)|0);
+ var $471=HEAP32[(($470)>>2)];
+ var $472=(($v_3_lcssa_i+12)|0);
+ var $473=HEAP32[(($472)>>2)];
+ var $474=($473|0)==($v_3_lcssa_i|0);
+ if($474){label=106;break;}else{label=101;break;}
+ case 101:
+ var $476=(($v_3_lcssa_i+8)|0);
+ var $477=HEAP32[(($476)>>2)];
+ var $478=$477;
+ var $479=($478>>>0)<($463>>>0);
+ if($479){label=105;break;}else{label=102;break;}
+ case 102:
+ var $481=(($477+12)|0);
+ var $482=HEAP32[(($481)>>2)];
+ var $483=($482|0)==($v_3_lcssa_i|0);
+ if($483){label=103;break;}else{label=105;break;}
+ case 103:
+ var $485=(($473+8)|0);
+ var $486=HEAP32[(($485)>>2)];
+ var $487=($486|0)==($v_3_lcssa_i|0);
+ if($487){label=104;break;}else{label=105;break;}
+ case 104:
+ HEAP32[(($481)>>2)]=$473;
+ HEAP32[(($485)>>2)]=$477;
+ var $R_1_i22=$473;label=113;break;
+ case 105:
+ _abort();
+ throw "Reached an unreachable!";
+ case 106:
+ var $490=(($v_3_lcssa_i+20)|0);
+ var $491=HEAP32[(($490)>>2)];
+ var $492=($491|0)==0;
+ if($492){label=107;break;}else{var $R_0_i20=$491;var $RP_0_i19=$490;label=108;break;}
+ case 107:
+ var $494=(($v_3_lcssa_i+16)|0);
+ var $495=HEAP32[(($494)>>2)];
+ var $496=($495|0)==0;
+ if($496){var $R_1_i22=0;label=113;break;}else{var $R_0_i20=$495;var $RP_0_i19=$494;label=108;break;}
+ case 108:
+ var $RP_0_i19;
+ var $R_0_i20;
+ var $497=(($R_0_i20+20)|0);
+ var $498=HEAP32[(($497)>>2)];
+ var $499=($498|0)==0;
+ if($499){label=109;break;}else{var $R_0_i20=$498;var $RP_0_i19=$497;label=108;break;}
+ case 109:
+ var $501=(($R_0_i20+16)|0);
+ var $502=HEAP32[(($501)>>2)];
+ var $503=($502|0)==0;
+ if($503){label=110;break;}else{var $R_0_i20=$502;var $RP_0_i19=$501;label=108;break;}
+ case 110:
+ var $505=$RP_0_i19;
+ var $506=($505>>>0)<($463>>>0);
+ if($506){label=112;break;}else{label=111;break;}
+ case 111:
+ HEAP32[(($RP_0_i19)>>2)]=0;
+ var $R_1_i22=$R_0_i20;label=113;break;
+ case 112:
+ _abort();
+ throw "Reached an unreachable!";
+ case 113:
+ var $R_1_i22;
+ var $510=($471|0)==0;
+ if($510){label=133;break;}else{label=114;break;}
+ case 114:
+ var $512=(($v_3_lcssa_i+28)|0);
+ var $513=HEAP32[(($512)>>2)];
+ var $514=((344+($513<<2))|0);
+ var $515=HEAP32[(($514)>>2)];
+ var $516=($v_3_lcssa_i|0)==($515|0);
+ if($516){label=115;break;}else{label=117;break;}
+ case 115:
+ HEAP32[(($514)>>2)]=$R_1_i22;
+ var $cond_i23=($R_1_i22|0)==0;
+ if($cond_i23){label=116;break;}else{label=123;break;}
+ case 116:
+ var $518=HEAP32[(($512)>>2)];
+ var $519=1<<$518;
+ var $520=$519^-1;
+ var $521=HEAP32[((44)>>2)];
+ var $522=$521&$520;
+ HEAP32[((44)>>2)]=$522;
+ label=133;break;
+ case 117:
+ var $524=$471;
+ var $525=HEAP32[((56)>>2)];
+ var $526=($524>>>0)<($525>>>0);
+ if($526){label=121;break;}else{label=118;break;}
+ case 118:
+ var $528=(($471+16)|0);
+ var $529=HEAP32[(($528)>>2)];
+ var $530=($529|0)==($v_3_lcssa_i|0);
+ if($530){label=119;break;}else{label=120;break;}
+ case 119:
+ HEAP32[(($528)>>2)]=$R_1_i22;
+ label=122;break;
+ case 120:
+ var $533=(($471+20)|0);
+ HEAP32[(($533)>>2)]=$R_1_i22;
+ label=122;break;
+ case 121:
+ _abort();
+ throw "Reached an unreachable!";
+ case 122:
+ var $536=($R_1_i22|0)==0;
+ if($536){label=133;break;}else{label=123;break;}
+ case 123:
+ var $538=$R_1_i22;
+ var $539=HEAP32[((56)>>2)];
+ var $540=($538>>>0)<($539>>>0);
+ if($540){label=132;break;}else{label=124;break;}
+ case 124:
+ var $542=(($R_1_i22+24)|0);
+ HEAP32[(($542)>>2)]=$471;
+ var $543=(($v_3_lcssa_i+16)|0);
+ var $544=HEAP32[(($543)>>2)];
+ var $545=($544|0)==0;
+ if($545){label=128;break;}else{label=125;break;}
+ case 125:
+ var $547=$544;
+ var $548=HEAP32[((56)>>2)];
+ var $549=($547>>>0)<($548>>>0);
+ if($549){label=127;break;}else{label=126;break;}
+ case 126:
+ var $551=(($R_1_i22+16)|0);
+ HEAP32[(($551)>>2)]=$544;
+ var $552=(($544+24)|0);
+ HEAP32[(($552)>>2)]=$R_1_i22;
+ label=128;break;
+ case 127:
+ _abort();
+ throw "Reached an unreachable!";
+ case 128:
+ var $555=(($v_3_lcssa_i+20)|0);
+ var $556=HEAP32[(($555)>>2)];
+ var $557=($556|0)==0;
+ if($557){label=133;break;}else{label=129;break;}
+ case 129:
+ var $559=$556;
+ var $560=HEAP32[((56)>>2)];
+ var $561=($559>>>0)<($560>>>0);
+ if($561){label=131;break;}else{label=130;break;}
+ case 130:
+ var $563=(($R_1_i22+20)|0);
+ HEAP32[(($563)>>2)]=$556;
+ var $564=(($556+24)|0);
+ HEAP32[(($564)>>2)]=$R_1_i22;
+ label=133;break;
+ case 131:
+ _abort();
+ throw "Reached an unreachable!";
+ case 132:
+ _abort();
+ throw "Reached an unreachable!";
+ case 133:
+ var $568=($rsize_3_lcssa_i>>>0)<16;
+ if($568){label=134;break;}else{label=135;break;}
+ case 134:
+ var $570=((($rsize_3_lcssa_i)+($348))|0);
+ var $571=$570|3;
+ var $572=(($v_3_lcssa_i+4)|0);
+ HEAP32[(($572)>>2)]=$571;
+ var $_sum19_i=((($570)+(4))|0);
+ var $573=(($462+$_sum19_i)|0);
+ var $574=$573;
+ var $575=HEAP32[(($574)>>2)];
+ var $576=$575|1;
+ HEAP32[(($574)>>2)]=$576;
+ label=159;break;
+ case 135:
+ var $578=$348|3;
+ var $579=(($v_3_lcssa_i+4)|0);
+ HEAP32[(($579)>>2)]=$578;
+ var $580=$rsize_3_lcssa_i|1;
+ var $_sum_i2540=$348|4;
+ var $581=(($462+$_sum_i2540)|0);
+ var $582=$581;
+ HEAP32[(($582)>>2)]=$580;
+ var $_sum1_i26=((($rsize_3_lcssa_i)+($348))|0);
+ var $583=(($462+$_sum1_i26)|0);
+ var $584=$583;
+ HEAP32[(($584)>>2)]=$rsize_3_lcssa_i;
+ var $585=$rsize_3_lcssa_i>>>3;
+ var $586=($rsize_3_lcssa_i>>>0)<256;
+ if($586){label=136;break;}else{label=141;break;}
+ case 136:
+ var $588=$585<<1;
+ var $589=((80+($588<<2))|0);
+ var $590=$589;
+ var $591=HEAP32[((40)>>2)];
+ var $592=1<<$585;
+ var $593=$591&$592;
+ var $594=($593|0)==0;
+ if($594){label=137;break;}else{label=138;break;}
+ case 137:
+ var $596=$591|$592;
+ HEAP32[((40)>>2)]=$596;
+ var $_sum15_pre_i=((($588)+(2))|0);
+ var $_pre_i27=((80+($_sum15_pre_i<<2))|0);
+ var $F5_0_i=$590;var $_pre_phi_i28=$_pre_i27;label=140;break;
+ case 138:
+ var $_sum18_i=((($588)+(2))|0);
+ var $598=((80+($_sum18_i<<2))|0);
+ var $599=HEAP32[(($598)>>2)];
+ var $600=$599;
+ var $601=HEAP32[((56)>>2)];
+ var $602=($600>>>0)<($601>>>0);
+ if($602){label=139;break;}else{var $F5_0_i=$599;var $_pre_phi_i28=$598;label=140;break;}
+ case 139:
+ _abort();
+ throw "Reached an unreachable!";
+ case 140:
+ var $_pre_phi_i28;
+ var $F5_0_i;
+ HEAP32[(($_pre_phi_i28)>>2)]=$467;
+ var $605=(($F5_0_i+12)|0);
+ HEAP32[(($605)>>2)]=$467;
+ var $_sum16_i=((($348)+(8))|0);
+ var $606=(($462+$_sum16_i)|0);
+ var $607=$606;
+ HEAP32[(($607)>>2)]=$F5_0_i;
+ var $_sum17_i=((($348)+(12))|0);
+ var $608=(($462+$_sum17_i)|0);
+ var $609=$608;
+ HEAP32[(($609)>>2)]=$590;
+ label=159;break;
+ case 141:
+ var $611=$466;
+ var $612=$rsize_3_lcssa_i>>>8;
+ var $613=($612|0)==0;
+ if($613){var $I7_0_i=0;label=144;break;}else{label=142;break;}
+ case 142:
+ var $615=($rsize_3_lcssa_i>>>0)>16777215;
+ if($615){var $I7_0_i=31;label=144;break;}else{label=143;break;}
+ case 143:
+ var $617=((($612)+(1048320))|0);
+ var $618=$617>>>16;
+ var $619=$618&8;
+ var $620=$612<<$619;
+ var $621=((($620)+(520192))|0);
+ var $622=$621>>>16;
+ var $623=$622&4;
+ var $624=$623|$619;
+ var $625=$620<<$623;
+ var $626=((($625)+(245760))|0);
+ var $627=$626>>>16;
+ var $628=$627&2;
+ var $629=$624|$628;
+ var $630=(((14)-($629))|0);
+ var $631=$625<<$628;
+ var $632=$631>>>15;
+ var $633=((($630)+($632))|0);
+ var $634=$633<<1;
+ var $635=((($633)+(7))|0);
+ var $636=$rsize_3_lcssa_i>>>($635>>>0);
+ var $637=$636&1;
+ var $638=$637|$634;
+ var $I7_0_i=$638;label=144;break;
+ case 144:
+ var $I7_0_i;
+ var $640=((344+($I7_0_i<<2))|0);
+ var $_sum2_i=((($348)+(28))|0);
+ var $641=(($462+$_sum2_i)|0);
+ var $642=$641;
+ HEAP32[(($642)>>2)]=$I7_0_i;
+ var $_sum3_i29=((($348)+(16))|0);
+ var $643=(($462+$_sum3_i29)|0);
+ var $_sum4_i30=((($348)+(20))|0);
+ var $644=(($462+$_sum4_i30)|0);
+ var $645=$644;
+ HEAP32[(($645)>>2)]=0;
+ var $646=$643;
+ HEAP32[(($646)>>2)]=0;
+ var $647=HEAP32[((44)>>2)];
+ var $648=1<<$I7_0_i;
+ var $649=$647&$648;
+ var $650=($649|0)==0;
+ if($650){label=145;break;}else{label=146;break;}
+ case 145:
+ var $652=$647|$648;
+ HEAP32[((44)>>2)]=$652;
+ HEAP32[(($640)>>2)]=$611;
+ var $653=$640;
+ var $_sum5_i=((($348)+(24))|0);
+ var $654=(($462+$_sum5_i)|0);
+ var $655=$654;
+ HEAP32[(($655)>>2)]=$653;
+ var $_sum6_i=((($348)+(12))|0);
+ var $656=(($462+$_sum6_i)|0);
+ var $657=$656;
+ HEAP32[(($657)>>2)]=$611;
+ var $_sum7_i=((($348)+(8))|0);
+ var $658=(($462+$_sum7_i)|0);
+ var $659=$658;
+ HEAP32[(($659)>>2)]=$611;
+ label=159;break;
+ case 146:
+ var $661=HEAP32[(($640)>>2)];
+ var $662=($I7_0_i|0)==31;
+ if($662){var $667=0;label=148;break;}else{label=147;break;}
+ case 147:
+ var $664=$I7_0_i>>>1;
+ var $665=(((25)-($664))|0);
+ var $667=$665;label=148;break;
+ case 148:
+ var $667;
+ var $668=(($661+4)|0);
+ var $669=HEAP32[(($668)>>2)];
+ var $670=$669&-8;
+ var $671=($670|0)==($rsize_3_lcssa_i|0);
+ if($671){var $T_0_lcssa_i=$661;label=155;break;}else{label=149;break;}
+ case 149:
+ var $672=$rsize_3_lcssa_i<<$667;
+ var $T_028_i=$661;var $K12_029_i=$672;label=151;break;
+ case 150:
+ var $674=$K12_029_i<<1;
+ var $675=(($682+4)|0);
+ var $676=HEAP32[(($675)>>2)];
+ var $677=$676&-8;
+ var $678=($677|0)==($rsize_3_lcssa_i|0);
+ if($678){var $T_0_lcssa_i=$682;label=155;break;}else{var $T_028_i=$682;var $K12_029_i=$674;label=151;break;}
+ case 151:
+ var $K12_029_i;
+ var $T_028_i;
+ var $680=$K12_029_i>>>31;
+ var $681=(($T_028_i+16+($680<<2))|0);
+ var $682=HEAP32[(($681)>>2)];
+ var $683=($682|0)==0;
+ if($683){label=152;break;}else{label=150;break;}
+ case 152:
+ var $685=$681;
+ var $686=HEAP32[((56)>>2)];
+ var $687=($685>>>0)<($686>>>0);
+ if($687){label=154;break;}else{label=153;break;}
+ case 153:
+ HEAP32[(($681)>>2)]=$611;
+ var $_sum12_i=((($348)+(24))|0);
+ var $689=(($462+$_sum12_i)|0);
+ var $690=$689;
+ HEAP32[(($690)>>2)]=$T_028_i;
+ var $_sum13_i=((($348)+(12))|0);
+ var $691=(($462+$_sum13_i)|0);
+ var $692=$691;
+ HEAP32[(($692)>>2)]=$611;
+ var $_sum14_i=((($348)+(8))|0);
+ var $693=(($462+$_sum14_i)|0);
+ var $694=$693;
+ HEAP32[(($694)>>2)]=$611;
+ label=159;break;
+ case 154:
+ _abort();
+ throw "Reached an unreachable!";
+ case 155:
+ var $T_0_lcssa_i;
+ var $696=(($T_0_lcssa_i+8)|0);
+ var $697=HEAP32[(($696)>>2)];
+ var $698=$T_0_lcssa_i;
+ var $699=HEAP32[((56)>>2)];
+ var $700=($698>>>0)>=($699>>>0);
+ var $701=$697;
+ var $702=($701>>>0)>=($699>>>0);
+ var $or_cond26_i=$700&$702;
+ if($or_cond26_i){label=156;break;}else{label=157;break;}
+ case 156:
+ var $704=(($697+12)|0);
+ HEAP32[(($704)>>2)]=$611;
+ HEAP32[(($696)>>2)]=$611;
+ var $_sum9_i=((($348)+(8))|0);
+ var $705=(($462+$_sum9_i)|0);
+ var $706=$705;
+ HEAP32[(($706)>>2)]=$697;
+ var $_sum10_i=((($348)+(12))|0);
+ var $707=(($462+$_sum10_i)|0);
+ var $708=$707;
+ HEAP32[(($708)>>2)]=$T_0_lcssa_i;
+ var $_sum11_i=((($348)+(24))|0);
+ var $709=(($462+$_sum11_i)|0);
+ var $710=$709;
+ HEAP32[(($710)>>2)]=0;
+ label=159;break;
+ case 157:
+ _abort();
+ throw "Reached an unreachable!";
+ case 158:
+ _abort();
+ throw "Reached an unreachable!";
+ case 159:
+ var $712=(($v_3_lcssa_i+8)|0);
+ var $713=$712;
+ var $mem_0=$713;label=341;break;
+ case 160:
+ var $nb_0;
+ var $714=HEAP32[((48)>>2)];
+ var $715=($714>>>0)<($nb_0>>>0);
+ if($715){label=165;break;}else{label=161;break;}
+ case 161:
+ var $717=((($714)-($nb_0))|0);
+ var $718=HEAP32[((60)>>2)];
+ var $719=($717>>>0)>15;
+ if($719){label=162;break;}else{label=163;break;}
+ case 162:
+ var $721=$718;
+ var $722=(($721+$nb_0)|0);
+ var $723=$722;
+ HEAP32[((60)>>2)]=$723;
+ HEAP32[((48)>>2)]=$717;
+ var $724=$717|1;
+ var $_sum2=((($nb_0)+(4))|0);
+ var $725=(($721+$_sum2)|0);
+ var $726=$725;
+ HEAP32[(($726)>>2)]=$724;
+ var $727=(($721+$714)|0);
+ var $728=$727;
+ HEAP32[(($728)>>2)]=$717;
+ var $729=$nb_0|3;
+ var $730=(($718+4)|0);
+ HEAP32[(($730)>>2)]=$729;
+ label=164;break;
+ case 163:
+ HEAP32[((48)>>2)]=0;
+ HEAP32[((60)>>2)]=0;
+ var $732=$714|3;
+ var $733=(($718+4)|0);
+ HEAP32[(($733)>>2)]=$732;
+ var $734=$718;
+ var $_sum1=((($714)+(4))|0);
+ var $735=(($734+$_sum1)|0);
+ var $736=$735;
+ var $737=HEAP32[(($736)>>2)];
+ var $738=$737|1;
+ HEAP32[(($736)>>2)]=$738;
+ label=164;break;
+ case 164:
+ var $740=(($718+8)|0);
+ var $741=$740;
+ var $mem_0=$741;label=341;break;
+ case 165:
+ var $743=HEAP32[((52)>>2)];
+ var $744=($743>>>0)>($nb_0>>>0);
+ if($744){label=166;break;}else{label=167;break;}
+ case 166:
+ var $746=((($743)-($nb_0))|0);
+ HEAP32[((52)>>2)]=$746;
+ var $747=HEAP32[((64)>>2)];
+ var $748=$747;
+ var $749=(($748+$nb_0)|0);
+ var $750=$749;
+ HEAP32[((64)>>2)]=$750;
+ var $751=$746|1;
+ var $_sum=((($nb_0)+(4))|0);
+ var $752=(($748+$_sum)|0);
+ var $753=$752;
+ HEAP32[(($753)>>2)]=$751;
+ var $754=$nb_0|3;
+ var $755=(($747+4)|0);
+ HEAP32[(($755)>>2)]=$754;
+ var $756=(($747+8)|0);
+ var $757=$756;
+ var $mem_0=$757;label=341;break;
+ case 167:
+ var $759=HEAP32[((16)>>2)];
+ var $760=($759|0)==0;
+ if($760){label=168;break;}else{label=171;break;}
+ case 168:
+ var $762=_sysconf(30);
+ var $763=((($762)-(1))|0);
+ var $764=$763&$762;
+ var $765=($764|0)==0;
+ if($765){label=170;break;}else{label=169;break;}
+ case 169:
+ _abort();
+ throw "Reached an unreachable!";
+ case 170:
+ HEAP32[((24)>>2)]=$762;
+ HEAP32[((20)>>2)]=$762;
+ HEAP32[((28)>>2)]=-1;
+ HEAP32[((32)>>2)]=-1;
+ HEAP32[((36)>>2)]=0;
+ HEAP32[((484)>>2)]=0;
+ var $767=_time(0);
+ var $768=$767&-16;
+ var $769=$768^1431655768;
+ HEAP32[((16)>>2)]=$769;
+ label=171;break;
+ case 171:
+ var $771=((($nb_0)+(48))|0);
+ var $772=HEAP32[((24)>>2)];
+ var $773=((($nb_0)+(47))|0);
+ var $774=((($772)+($773))|0);
+ var $775=(((-$772))|0);
+ var $776=$774&$775;
+ var $777=($776>>>0)>($nb_0>>>0);
+ if($777){label=172;break;}else{var $mem_0=0;label=341;break;}
+ case 172:
+ var $779=HEAP32[((480)>>2)];
+ var $780=($779|0)==0;
+ if($780){label=174;break;}else{label=173;break;}
+ case 173:
+ var $782=HEAP32[((472)>>2)];
+ var $783=((($782)+($776))|0);
+ var $784=($783>>>0)<=($782>>>0);
+ var $785=($783>>>0)>($779>>>0);
+ var $or_cond1_i=$784|$785;
+ if($or_cond1_i){var $mem_0=0;label=341;break;}else{label=174;break;}
+ case 174:
+ var $787=HEAP32[((484)>>2)];
+ var $788=$787&4;
+ var $789=($788|0)==0;
+ if($789){label=175;break;}else{var $tsize_1_i=0;label=198;break;}
+ case 175:
+ var $791=HEAP32[((64)>>2)];
+ var $792=($791|0)==0;
+ if($792){label=181;break;}else{label=176;break;}
+ case 176:
+ var $794=$791;
+ var $sp_0_i_i=488;label=177;break;
+ case 177:
+ var $sp_0_i_i;
+ var $796=(($sp_0_i_i)|0);
+ var $797=HEAP32[(($796)>>2)];
+ var $798=($797>>>0)>($794>>>0);
+ if($798){label=179;break;}else{label=178;break;}
+ case 178:
+ var $800=(($sp_0_i_i+4)|0);
+ var $801=HEAP32[(($800)>>2)];
+ var $802=(($797+$801)|0);
+ var $803=($802>>>0)>($794>>>0);
+ if($803){label=180;break;}else{label=179;break;}
+ case 179:
+ var $805=(($sp_0_i_i+8)|0);
+ var $806=HEAP32[(($805)>>2)];
+ var $807=($806|0)==0;
+ if($807){label=181;break;}else{var $sp_0_i_i=$806;label=177;break;}
+ case 180:
+ var $808=($sp_0_i_i|0)==0;
+ if($808){label=181;break;}else{label=188;break;}
+ case 181:
+ var $809=_sbrk(0);
+ var $810=($809|0)==-1;
+ if($810){var $tsize_03141_i=0;label=197;break;}else{label=182;break;}
+ case 182:
+ var $812=$809;
+ var $813=HEAP32[((20)>>2)];
+ var $814=((($813)-(1))|0);
+ var $815=$814&$812;
+ var $816=($815|0)==0;
+ if($816){var $ssize_0_i=$776;label=184;break;}else{label=183;break;}
+ case 183:
+ var $818=((($814)+($812))|0);
+ var $819=(((-$813))|0);
+ var $820=$818&$819;
+ var $821=((($776)-($812))|0);
+ var $822=((($821)+($820))|0);
+ var $ssize_0_i=$822;label=184;break;
+ case 184:
+ var $ssize_0_i;
+ var $824=HEAP32[((472)>>2)];
+ var $825=((($824)+($ssize_0_i))|0);
+ var $826=($ssize_0_i>>>0)>($nb_0>>>0);
+ var $827=($ssize_0_i>>>0)<2147483647;
+ var $or_cond_i31=$826&$827;
+ if($or_cond_i31){label=185;break;}else{var $tsize_03141_i=0;label=197;break;}
+ case 185:
+ var $829=HEAP32[((480)>>2)];
+ var $830=($829|0)==0;
+ if($830){label=187;break;}else{label=186;break;}
+ case 186:
+ var $832=($825>>>0)<=($824>>>0);
+ var $833=($825>>>0)>($829>>>0);
+ var $or_cond2_i=$832|$833;
+ if($or_cond2_i){var $tsize_03141_i=0;label=197;break;}else{label=187;break;}
+ case 187:
+ var $835=_sbrk($ssize_0_i);
+ var $836=($835|0)==($809|0);
+ if($836){var $br_0_i=$809;var $ssize_1_i=$ssize_0_i;label=190;break;}else{var $ssize_129_i=$ssize_0_i;var $br_030_i=$835;label=191;break;}
+ case 188:
+ var $838=HEAP32[((52)>>2)];
+ var $839=((($774)-($838))|0);
+ var $840=$839&$775;
+ var $841=($840>>>0)<2147483647;
+ if($841){label=189;break;}else{var $tsize_03141_i=0;label=197;break;}
+ case 189:
+ var $843=_sbrk($840);
+ var $844=HEAP32[(($796)>>2)];
+ var $845=HEAP32[(($800)>>2)];
+ var $846=(($844+$845)|0);
+ var $847=($843|0)==($846|0);
+ if($847){var $br_0_i=$843;var $ssize_1_i=$840;label=190;break;}else{var $ssize_129_i=$840;var $br_030_i=$843;label=191;break;}
+ case 190:
+ var $ssize_1_i;
+ var $br_0_i;
+ var $849=($br_0_i|0)==-1;
+ if($849){var $tsize_03141_i=$ssize_1_i;label=197;break;}else{var $tsize_244_i=$ssize_1_i;var $tbase_245_i=$br_0_i;label=201;break;}
+ case 191:
+ var $br_030_i;
+ var $ssize_129_i;
+ var $850=(((-$ssize_129_i))|0);
+ var $851=($br_030_i|0)!=-1;
+ var $852=($ssize_129_i>>>0)<2147483647;
+ var $or_cond5_i=$851&$852;
+ var $853=($771>>>0)>($ssize_129_i>>>0);
+ var $or_cond4_i=$or_cond5_i&$853;
+ if($or_cond4_i){label=192;break;}else{var $ssize_2_i=$ssize_129_i;label=196;break;}
+ case 192:
+ var $855=HEAP32[((24)>>2)];
+ var $856=((($773)-($ssize_129_i))|0);
+ var $857=((($856)+($855))|0);
+ var $858=(((-$855))|0);
+ var $859=$857&$858;
+ var $860=($859>>>0)<2147483647;
+ if($860){label=193;break;}else{var $ssize_2_i=$ssize_129_i;label=196;break;}
+ case 193:
+ var $862=_sbrk($859);
+ var $863=($862|0)==-1;
+ if($863){label=195;break;}else{label=194;break;}
+ case 194:
+ var $865=((($859)+($ssize_129_i))|0);
+ var $ssize_2_i=$865;label=196;break;
+ case 195:
+ var $866=_sbrk($850);
+ var $tsize_03141_i=0;label=197;break;
+ case 196:
+ var $ssize_2_i;
+ var $868=($br_030_i|0)==-1;
+ if($868){var $tsize_03141_i=0;label=197;break;}else{var $tsize_244_i=$ssize_2_i;var $tbase_245_i=$br_030_i;label=201;break;}
+ case 197:
+ var $tsize_03141_i;
+ var $869=HEAP32[((484)>>2)];
+ var $870=$869|4;
+ HEAP32[((484)>>2)]=$870;
+ var $tsize_1_i=$tsize_03141_i;label=198;break;
+ case 198:
+ var $tsize_1_i;
+ var $872=($776>>>0)<2147483647;
+ if($872){label=199;break;}else{label=340;break;}
+ case 199:
+ var $874=_sbrk($776);
+ var $875=_sbrk(0);
+ var $876=($874|0)!=-1;
+ var $877=($875|0)!=-1;
+ var $or_cond3_i=$876&$877;
+ var $878=($874>>>0)<($875>>>0);
+ var $or_cond6_i=$or_cond3_i&$878;
+ if($or_cond6_i){label=200;break;}else{label=340;break;}
+ case 200:
+ var $880=$875;
+ var $881=$874;
+ var $882=((($880)-($881))|0);
+ var $883=((($nb_0)+(40))|0);
+ var $884=($882>>>0)>($883>>>0);
+ var $_tsize_1_i=($884?$882:$tsize_1_i);
+ if($884){var $tsize_244_i=$_tsize_1_i;var $tbase_245_i=$874;label=201;break;}else{label=340;break;}
+ case 201:
+ var $tbase_245_i;
+ var $tsize_244_i;
+ var $885=HEAP32[((472)>>2)];
+ var $886=((($885)+($tsize_244_i))|0);
+ HEAP32[((472)>>2)]=$886;
+ var $887=HEAP32[((476)>>2)];
+ var $888=($886>>>0)>($887>>>0);
+ if($888){label=202;break;}else{label=203;break;}
+ case 202:
+ HEAP32[((476)>>2)]=$886;
+ label=203;break;
+ case 203:
+ var $891=HEAP32[((64)>>2)];
+ var $892=($891|0)==0;
+ if($892){label=204;break;}else{var $sp_073_i=488;label=211;break;}
+ case 204:
+ var $894=HEAP32[((56)>>2)];
+ var $895=($894|0)==0;
+ var $896=($tbase_245_i>>>0)<($894>>>0);
+ var $or_cond8_i=$895|$896;
+ if($or_cond8_i){label=205;break;}else{label=206;break;}
+ case 205:
+ HEAP32[((56)>>2)]=$tbase_245_i;
+ label=206;break;
+ case 206:
+ HEAP32[((488)>>2)]=$tbase_245_i;
+ HEAP32[((492)>>2)]=$tsize_244_i;
+ HEAP32[((500)>>2)]=0;
+ var $899=HEAP32[((16)>>2)];
+ HEAP32[((76)>>2)]=$899;
+ HEAP32[((72)>>2)]=-1;
+ var $i_02_i_i=0;label=207;break;
+ case 207:
+ var $i_02_i_i;
+ var $901=$i_02_i_i<<1;
+ var $902=((80+($901<<2))|0);
+ var $903=$902;
+ var $_sum_i_i=((($901)+(3))|0);
+ var $904=((80+($_sum_i_i<<2))|0);
+ HEAP32[(($904)>>2)]=$903;
+ var $_sum1_i_i=((($901)+(2))|0);
+ var $905=((80+($_sum1_i_i<<2))|0);
+ HEAP32[(($905)>>2)]=$903;
+ var $906=((($i_02_i_i)+(1))|0);
+ var $907=($906>>>0)<32;
+ if($907){var $i_02_i_i=$906;label=207;break;}else{label=208;break;}
+ case 208:
+ var $908=((($tsize_244_i)-(40))|0);
+ var $909=(($tbase_245_i+8)|0);
+ var $910=$909;
+ var $911=$910&7;
+ var $912=($911|0)==0;
+ if($912){var $916=0;label=210;break;}else{label=209;break;}
+ case 209:
+ var $914=(((-$910))|0);
+ var $915=$914&7;
+ var $916=$915;label=210;break;
+ case 210:
+ var $916;
+ var $917=(($tbase_245_i+$916)|0);
+ var $918=$917;
+ var $919=((($908)-($916))|0);
+ HEAP32[((64)>>2)]=$918;
+ HEAP32[((52)>>2)]=$919;
+ var $920=$919|1;
+ var $_sum_i12_i=((($916)+(4))|0);
+ var $921=(($tbase_245_i+$_sum_i12_i)|0);
+ var $922=$921;
+ HEAP32[(($922)>>2)]=$920;
+ var $_sum2_i_i=((($tsize_244_i)-(36))|0);
+ var $923=(($tbase_245_i+$_sum2_i_i)|0);
+ var $924=$923;
+ HEAP32[(($924)>>2)]=40;
+ var $925=HEAP32[((32)>>2)];
+ HEAP32[((68)>>2)]=$925;
+ label=338;break;
+ case 211:
+ var $sp_073_i;
+ var $926=(($sp_073_i)|0);
+ var $927=HEAP32[(($926)>>2)];
+ var $928=(($sp_073_i+4)|0);
+ var $929=HEAP32[(($928)>>2)];
+ var $930=(($927+$929)|0);
+ var $931=($tbase_245_i|0)==($930|0);
+ if($931){label=213;break;}else{label=212;break;}
+ case 212:
+ var $933=(($sp_073_i+8)|0);
+ var $934=HEAP32[(($933)>>2)];
+ var $935=($934|0)==0;
+ if($935){label=218;break;}else{var $sp_073_i=$934;label=211;break;}
+ case 213:
+ var $936=(($sp_073_i+12)|0);
+ var $937=HEAP32[(($936)>>2)];
+ var $938=$937&8;
+ var $939=($938|0)==0;
+ if($939){label=214;break;}else{label=218;break;}
+ case 214:
+ var $941=$891;
+ var $942=($941>>>0)>=($927>>>0);
+ var $943=($941>>>0)<($tbase_245_i>>>0);
+ var $or_cond47_i=$942&$943;
+ if($or_cond47_i){label=215;break;}else{label=218;break;}
+ case 215:
+ var $945=((($929)+($tsize_244_i))|0);
+ HEAP32[(($928)>>2)]=$945;
+ var $946=HEAP32[((64)>>2)];
+ var $947=HEAP32[((52)>>2)];
+ var $948=((($947)+($tsize_244_i))|0);
+ var $949=$946;
+ var $950=(($946+8)|0);
+ var $951=$950;
+ var $952=$951&7;
+ var $953=($952|0)==0;
+ if($953){var $957=0;label=217;break;}else{label=216;break;}
+ case 216:
+ var $955=(((-$951))|0);
+ var $956=$955&7;
+ var $957=$956;label=217;break;
+ case 217:
+ var $957;
+ var $958=(($949+$957)|0);
+ var $959=$958;
+ var $960=((($948)-($957))|0);
+ HEAP32[((64)>>2)]=$959;
+ HEAP32[((52)>>2)]=$960;
+ var $961=$960|1;
+ var $_sum_i16_i=((($957)+(4))|0);
+ var $962=(($949+$_sum_i16_i)|0);
+ var $963=$962;
+ HEAP32[(($963)>>2)]=$961;
+ var $_sum2_i17_i=((($948)+(4))|0);
+ var $964=(($949+$_sum2_i17_i)|0);
+ var $965=$964;
+ HEAP32[(($965)>>2)]=40;
+ var $966=HEAP32[((32)>>2)];
+ HEAP32[((68)>>2)]=$966;
+ label=338;break;
+ case 218:
+ var $967=HEAP32[((56)>>2)];
+ var $968=($tbase_245_i>>>0)<($967>>>0);
+ if($968){label=219;break;}else{label=220;break;}
+ case 219:
+ HEAP32[((56)>>2)]=$tbase_245_i;
+ label=220;break;
+ case 220:
+ var $970=(($tbase_245_i+$tsize_244_i)|0);
+ var $sp_166_i=488;label=221;break;
+ case 221:
+ var $sp_166_i;
+ var $972=(($sp_166_i)|0);
+ var $973=HEAP32[(($972)>>2)];
+ var $974=($973|0)==($970|0);
+ if($974){label=223;break;}else{label=222;break;}
+ case 222:
+ var $976=(($sp_166_i+8)|0);
+ var $977=HEAP32[(($976)>>2)];
+ var $978=($977|0)==0;
+ if($978){label=304;break;}else{var $sp_166_i=$977;label=221;break;}
+ case 223:
+ var $979=(($sp_166_i+12)|0);
+ var $980=HEAP32[(($979)>>2)];
+ var $981=$980&8;
+ var $982=($981|0)==0;
+ if($982){label=224;break;}else{label=304;break;}
+ case 224:
+ HEAP32[(($972)>>2)]=$tbase_245_i;
+ var $984=(($sp_166_i+4)|0);
+ var $985=HEAP32[(($984)>>2)];
+ var $986=((($985)+($tsize_244_i))|0);
+ HEAP32[(($984)>>2)]=$986;
+ var $987=(($tbase_245_i+8)|0);
+ var $988=$987;
+ var $989=$988&7;
+ var $990=($989|0)==0;
+ if($990){var $995=0;label=226;break;}else{label=225;break;}
+ case 225:
+ var $992=(((-$988))|0);
+ var $993=$992&7;
+ var $995=$993;label=226;break;
+ case 226:
+ var $995;
+ var $996=(($tbase_245_i+$995)|0);
+ var $_sum102_i=((($tsize_244_i)+(8))|0);
+ var $997=(($tbase_245_i+$_sum102_i)|0);
+ var $998=$997;
+ var $999=$998&7;
+ var $1000=($999|0)==0;
+ if($1000){var $1005=0;label=228;break;}else{label=227;break;}
+ case 227:
+ var $1002=(((-$998))|0);
+ var $1003=$1002&7;
+ var $1005=$1003;label=228;break;
+ case 228:
+ var $1005;
+ var $_sum103_i=((($1005)+($tsize_244_i))|0);
+ var $1006=(($tbase_245_i+$_sum103_i)|0);
+ var $1007=$1006;
+ var $1008=$1006;
+ var $1009=$996;
+ var $1010=((($1008)-($1009))|0);
+ var $_sum_i19_i=((($995)+($nb_0))|0);
+ var $1011=(($tbase_245_i+$_sum_i19_i)|0);
+ var $1012=$1011;
+ var $1013=((($1010)-($nb_0))|0);
+ var $1014=$nb_0|3;
+ var $_sum1_i20_i=((($995)+(4))|0);
+ var $1015=(($tbase_245_i+$_sum1_i20_i)|0);
+ var $1016=$1015;
+ HEAP32[(($1016)>>2)]=$1014;
+ var $1017=HEAP32[((64)>>2)];
+ var $1018=($1007|0)==($1017|0);
+ if($1018){label=229;break;}else{label=230;break;}
+ case 229:
+ var $1020=HEAP32[((52)>>2)];
+ var $1021=((($1020)+($1013))|0);
+ HEAP32[((52)>>2)]=$1021;
+ HEAP32[((64)>>2)]=$1012;
+ var $1022=$1021|1;
+ var $_sum46_i_i=((($_sum_i19_i)+(4))|0);
+ var $1023=(($tbase_245_i+$_sum46_i_i)|0);
+ var $1024=$1023;
+ HEAP32[(($1024)>>2)]=$1022;
+ label=303;break;
+ case 230:
+ var $1026=HEAP32[((60)>>2)];
+ var $1027=($1007|0)==($1026|0);
+ if($1027){label=231;break;}else{label=232;break;}
+ case 231:
+ var $1029=HEAP32[((48)>>2)];
+ var $1030=((($1029)+($1013))|0);
+ HEAP32[((48)>>2)]=$1030;
+ HEAP32[((60)>>2)]=$1012;
+ var $1031=$1030|1;
+ var $_sum44_i_i=((($_sum_i19_i)+(4))|0);
+ var $1032=(($tbase_245_i+$_sum44_i_i)|0);
+ var $1033=$1032;
+ HEAP32[(($1033)>>2)]=$1031;
+ var $_sum45_i_i=((($1030)+($_sum_i19_i))|0);
+ var $1034=(($tbase_245_i+$_sum45_i_i)|0);
+ var $1035=$1034;
+ HEAP32[(($1035)>>2)]=$1030;
+ label=303;break;
+ case 232:
+ var $_sum2_i21_i=((($tsize_244_i)+(4))|0);
+ var $_sum104_i=((($_sum2_i21_i)+($1005))|0);
+ var $1037=(($tbase_245_i+$_sum104_i)|0);
+ var $1038=$1037;
+ var $1039=HEAP32[(($1038)>>2)];
+ var $1040=$1039&3;
+ var $1041=($1040|0)==1;
+ if($1041){label=233;break;}else{var $oldfirst_0_i_i=$1007;var $qsize_0_i_i=$1013;label=280;break;}
+ case 233:
+ var $1043=$1039&-8;
+ var $1044=$1039>>>3;
+ var $1045=($1039>>>0)<256;
+ if($1045){label=234;break;}else{label=246;break;}
+ case 234:
+ var $_sum3940_i_i=$1005|8;
+ var $_sum114_i=((($_sum3940_i_i)+($tsize_244_i))|0);
+ var $1047=(($tbase_245_i+$_sum114_i)|0);
+ var $1048=$1047;
+ var $1049=HEAP32[(($1048)>>2)];
+ var $_sum41_i_i=((($tsize_244_i)+(12))|0);
+ var $_sum115_i=((($_sum41_i_i)+($1005))|0);
+ var $1050=(($tbase_245_i+$_sum115_i)|0);
+ var $1051=$1050;
+ var $1052=HEAP32[(($1051)>>2)];
+ var $1053=$1044<<1;
+ var $1054=((80+($1053<<2))|0);
+ var $1055=$1054;
+ var $1056=($1049|0)==($1055|0);
+ if($1056){label=237;break;}else{label=235;break;}
+ case 235:
+ var $1058=$1049;
+ var $1059=HEAP32[((56)>>2)];
+ var $1060=($1058>>>0)<($1059>>>0);
+ if($1060){label=245;break;}else{label=236;break;}
+ case 236:
+ var $1062=(($1049+12)|0);
+ var $1063=HEAP32[(($1062)>>2)];
+ var $1064=($1063|0)==($1007|0);
+ if($1064){label=237;break;}else{label=245;break;}
+ case 237:
+ var $1065=($1052|0)==($1049|0);
+ if($1065){label=238;break;}else{label=239;break;}
+ case 238:
+ var $1067=1<<$1044;
+ var $1068=$1067^-1;
+ var $1069=HEAP32[((40)>>2)];
+ var $1070=$1069&$1068;
+ HEAP32[((40)>>2)]=$1070;
+ label=279;break;
+ case 239:
+ var $1072=($1052|0)==($1055|0);
+ if($1072){label=240;break;}else{label=241;break;}
+ case 240:
+ var $_pre62_i_i=(($1052+8)|0);
+ var $_pre_phi63_i_i=$_pre62_i_i;label=243;break;
+ case 241:
+ var $1074=$1052;
+ var $1075=HEAP32[((56)>>2)];
+ var $1076=($1074>>>0)<($1075>>>0);
+ if($1076){label=244;break;}else{label=242;break;}
+ case 242:
+ var $1078=(($1052+8)|0);
+ var $1079=HEAP32[(($1078)>>2)];
+ var $1080=($1079|0)==($1007|0);
+ if($1080){var $_pre_phi63_i_i=$1078;label=243;break;}else{label=244;break;}
+ case 243:
+ var $_pre_phi63_i_i;
+ var $1081=(($1049+12)|0);
+ HEAP32[(($1081)>>2)]=$1052;
+ HEAP32[(($_pre_phi63_i_i)>>2)]=$1049;
+ label=279;break;
+ case 244:
+ _abort();
+ throw "Reached an unreachable!";
+ case 245:
+ _abort();
+ throw "Reached an unreachable!";
+ case 246:
+ var $1083=$1006;
+ var $_sum34_i_i=$1005|24;
+ var $_sum105_i=((($_sum34_i_i)+($tsize_244_i))|0);
+ var $1084=(($tbase_245_i+$_sum105_i)|0);
+ var $1085=$1084;
+ var $1086=HEAP32[(($1085)>>2)];
+ var $_sum5_i_i=((($tsize_244_i)+(12))|0);
+ var $_sum106_i=((($_sum5_i_i)+($1005))|0);
+ var $1087=(($tbase_245_i+$_sum106_i)|0);
+ var $1088=$1087;
+ var $1089=HEAP32[(($1088)>>2)];
+ var $1090=($1089|0)==($1083|0);
+ if($1090){label=252;break;}else{label=247;break;}
+ case 247:
+ var $_sum3637_i_i=$1005|8;
+ var $_sum107_i=((($_sum3637_i_i)+($tsize_244_i))|0);
+ var $1092=(($tbase_245_i+$_sum107_i)|0);
+ var $1093=$1092;
+ var $1094=HEAP32[(($1093)>>2)];
+ var $1095=$1094;
+ var $1096=HEAP32[((56)>>2)];
+ var $1097=($1095>>>0)<($1096>>>0);
+ if($1097){label=251;break;}else{label=248;break;}
+ case 248:
+ var $1099=(($1094+12)|0);
+ var $1100=HEAP32[(($1099)>>2)];
+ var $1101=($1100|0)==($1083|0);
+ if($1101){label=249;break;}else{label=251;break;}
+ case 249:
+ var $1103=(($1089+8)|0);
+ var $1104=HEAP32[(($1103)>>2)];
+ var $1105=($1104|0)==($1083|0);
+ if($1105){label=250;break;}else{label=251;break;}
+ case 250:
+ HEAP32[(($1099)>>2)]=$1089;
+ HEAP32[(($1103)>>2)]=$1094;
+ var $R_1_i_i=$1089;label=259;break;
+ case 251:
+ _abort();
+ throw "Reached an unreachable!";
+ case 252:
+ var $_sum67_i_i=$1005|16;
+ var $_sum112_i=((($_sum2_i21_i)+($_sum67_i_i))|0);
+ var $1108=(($tbase_245_i+$_sum112_i)|0);
+ var $1109=$1108;
+ var $1110=HEAP32[(($1109)>>2)];
+ var $1111=($1110|0)==0;
+ if($1111){label=253;break;}else{var $R_0_i_i=$1110;var $RP_0_i_i=$1109;label=254;break;}
+ case 253:
+ var $_sum113_i=((($_sum67_i_i)+($tsize_244_i))|0);
+ var $1113=(($tbase_245_i+$_sum113_i)|0);
+ var $1114=$1113;
+ var $1115=HEAP32[(($1114)>>2)];
+ var $1116=($1115|0)==0;
+ if($1116){var $R_1_i_i=0;label=259;break;}else{var $R_0_i_i=$1115;var $RP_0_i_i=$1114;label=254;break;}
+ case 254:
+ var $RP_0_i_i;
+ var $R_0_i_i;
+ var $1117=(($R_0_i_i+20)|0);
+ var $1118=HEAP32[(($1117)>>2)];
+ var $1119=($1118|0)==0;
+ if($1119){label=255;break;}else{var $R_0_i_i=$1118;var $RP_0_i_i=$1117;label=254;break;}
+ case 255:
+ var $1121=(($R_0_i_i+16)|0);
+ var $1122=HEAP32[(($1121)>>2)];
+ var $1123=($1122|0)==0;
+ if($1123){label=256;break;}else{var $R_0_i_i=$1122;var $RP_0_i_i=$1121;label=254;break;}
+ case 256:
+ var $1125=$RP_0_i_i;
+ var $1126=HEAP32[((56)>>2)];
+ var $1127=($1125>>>0)<($1126>>>0);
+ if($1127){label=258;break;}else{label=257;break;}
+ case 257:
+ HEAP32[(($RP_0_i_i)>>2)]=0;
+ var $R_1_i_i=$R_0_i_i;label=259;break;
+ case 258:
+ _abort();
+ throw "Reached an unreachable!";
+ case 259:
+ var $R_1_i_i;
+ var $1131=($1086|0)==0;
+ if($1131){label=279;break;}else{label=260;break;}
+ case 260:
+ var $_sum31_i_i=((($tsize_244_i)+(28))|0);
+ var $_sum108_i=((($_sum31_i_i)+($1005))|0);
+ var $1133=(($tbase_245_i+$_sum108_i)|0);
+ var $1134=$1133;
+ var $1135=HEAP32[(($1134)>>2)];
+ var $1136=((344+($1135<<2))|0);
+ var $1137=HEAP32[(($1136)>>2)];
+ var $1138=($1083|0)==($1137|0);
+ if($1138){label=261;break;}else{label=263;break;}
+ case 261:
+ HEAP32[(($1136)>>2)]=$R_1_i_i;
+ var $cond_i_i=($R_1_i_i|0)==0;
+ if($cond_i_i){label=262;break;}else{label=269;break;}
+ case 262:
+ var $1140=HEAP32[(($1134)>>2)];
+ var $1141=1<<$1140;
+ var $1142=$1141^-1;
+ var $1143=HEAP32[((44)>>2)];
+ var $1144=$1143&$1142;
+ HEAP32[((44)>>2)]=$1144;
+ label=279;break;
+ case 263:
+ var $1146=$1086;
+ var $1147=HEAP32[((56)>>2)];
+ var $1148=($1146>>>0)<($1147>>>0);
+ if($1148){label=267;break;}else{label=264;break;}
+ case 264:
+ var $1150=(($1086+16)|0);
+ var $1151=HEAP32[(($1150)>>2)];
+ var $1152=($1151|0)==($1083|0);
+ if($1152){label=265;break;}else{label=266;break;}
+ case 265:
+ HEAP32[(($1150)>>2)]=$R_1_i_i;
+ label=268;break;
+ case 266:
+ var $1155=(($1086+20)|0);
+ HEAP32[(($1155)>>2)]=$R_1_i_i;
+ label=268;break;
+ case 267:
+ _abort();
+ throw "Reached an unreachable!";
+ case 268:
+ var $1158=($R_1_i_i|0)==0;
+ if($1158){label=279;break;}else{label=269;break;}
+ case 269:
+ var $1160=$R_1_i_i;
+ var $1161=HEAP32[((56)>>2)];
+ var $1162=($1160>>>0)<($1161>>>0);
+ if($1162){label=278;break;}else{label=270;break;}
+ case 270:
+ var $1164=(($R_1_i_i+24)|0);
+ HEAP32[(($1164)>>2)]=$1086;
+ var $_sum3233_i_i=$1005|16;
+ var $_sum109_i=((($_sum3233_i_i)+($tsize_244_i))|0);
+ var $1165=(($tbase_245_i+$_sum109_i)|0);
+ var $1166=$1165;
+ var $1167=HEAP32[(($1166)>>2)];
+ var $1168=($1167|0)==0;
+ if($1168){label=274;break;}else{label=271;break;}
+ case 271:
+ var $1170=$1167;
+ var $1171=HEAP32[((56)>>2)];
+ var $1172=($1170>>>0)<($1171>>>0);
+ if($1172){label=273;break;}else{label=272;break;}
+ case 272:
+ var $1174=(($R_1_i_i+16)|0);
+ HEAP32[(($1174)>>2)]=$1167;
+ var $1175=(($1167+24)|0);
+ HEAP32[(($1175)>>2)]=$R_1_i_i;
+ label=274;break;
+ case 273:
+ _abort();
+ throw "Reached an unreachable!";
+ case 274:
+ var $_sum110_i=((($_sum2_i21_i)+($_sum3233_i_i))|0);
+ var $1178=(($tbase_245_i+$_sum110_i)|0);
+ var $1179=$1178;
+ var $1180=HEAP32[(($1179)>>2)];
+ var $1181=($1180|0)==0;
+ if($1181){label=279;break;}else{label=275;break;}
+ case 275:
+ var $1183=$1180;
+ var $1184=HEAP32[((56)>>2)];
+ var $1185=($1183>>>0)<($1184>>>0);
+ if($1185){label=277;break;}else{label=276;break;}
+ case 276:
+ var $1187=(($R_1_i_i+20)|0);
+ HEAP32[(($1187)>>2)]=$1180;
+ var $1188=(($1180+24)|0);
+ HEAP32[(($1188)>>2)]=$R_1_i_i;
+ label=279;break;
+ case 277:
+ _abort();
+ throw "Reached an unreachable!";
+ case 278:
+ _abort();
+ throw "Reached an unreachable!";
+ case 279:
+ var $_sum9_i_i=$1043|$1005;
+ var $_sum111_i=((($_sum9_i_i)+($tsize_244_i))|0);
+ var $1192=(($tbase_245_i+$_sum111_i)|0);
+ var $1193=$1192;
+ var $1194=((($1043)+($1013))|0);
+ var $oldfirst_0_i_i=$1193;var $qsize_0_i_i=$1194;label=280;break;
+ case 280:
+ var $qsize_0_i_i;
+ var $oldfirst_0_i_i;
+ var $1196=(($oldfirst_0_i_i+4)|0);
+ var $1197=HEAP32[(($1196)>>2)];
+ var $1198=$1197&-2;
+ HEAP32[(($1196)>>2)]=$1198;
+ var $1199=$qsize_0_i_i|1;
+ var $_sum10_i_i=((($_sum_i19_i)+(4))|0);
+ var $1200=(($tbase_245_i+$_sum10_i_i)|0);
+ var $1201=$1200;
+ HEAP32[(($1201)>>2)]=$1199;
+ var $_sum11_i_i=((($qsize_0_i_i)+($_sum_i19_i))|0);
+ var $1202=(($tbase_245_i+$_sum11_i_i)|0);
+ var $1203=$1202;
+ HEAP32[(($1203)>>2)]=$qsize_0_i_i;
+ var $1204=$qsize_0_i_i>>>3;
+ var $1205=($qsize_0_i_i>>>0)<256;
+ if($1205){label=281;break;}else{label=286;break;}
+ case 281:
+ var $1207=$1204<<1;
+ var $1208=((80+($1207<<2))|0);
+ var $1209=$1208;
+ var $1210=HEAP32[((40)>>2)];
+ var $1211=1<<$1204;
+ var $1212=$1210&$1211;
+ var $1213=($1212|0)==0;
+ if($1213){label=282;break;}else{label=283;break;}
+ case 282:
+ var $1215=$1210|$1211;
+ HEAP32[((40)>>2)]=$1215;
+ var $_sum27_pre_i_i=((($1207)+(2))|0);
+ var $_pre_i22_i=((80+($_sum27_pre_i_i<<2))|0);
+ var $F4_0_i_i=$1209;var $_pre_phi_i23_i=$_pre_i22_i;label=285;break;
+ case 283:
+ var $_sum30_i_i=((($1207)+(2))|0);
+ var $1217=((80+($_sum30_i_i<<2))|0);
+ var $1218=HEAP32[(($1217)>>2)];
+ var $1219=$1218;
+ var $1220=HEAP32[((56)>>2)];
+ var $1221=($1219>>>0)<($1220>>>0);
+ if($1221){label=284;break;}else{var $F4_0_i_i=$1218;var $_pre_phi_i23_i=$1217;label=285;break;}
+ case 284:
+ _abort();
+ throw "Reached an unreachable!";
+ case 285:
+ var $_pre_phi_i23_i;
+ var $F4_0_i_i;
+ HEAP32[(($_pre_phi_i23_i)>>2)]=$1012;
+ var $1224=(($F4_0_i_i+12)|0);
+ HEAP32[(($1224)>>2)]=$1012;
+ var $_sum28_i_i=((($_sum_i19_i)+(8))|0);
+ var $1225=(($tbase_245_i+$_sum28_i_i)|0);
+ var $1226=$1225;
+ HEAP32[(($1226)>>2)]=$F4_0_i_i;
+ var $_sum29_i_i=((($_sum_i19_i)+(12))|0);
+ var $1227=(($tbase_245_i+$_sum29_i_i)|0);
+ var $1228=$1227;
+ HEAP32[(($1228)>>2)]=$1209;
+ label=303;break;
+ case 286:
+ var $1230=$1011;
+ var $1231=$qsize_0_i_i>>>8;
+ var $1232=($1231|0)==0;
+ if($1232){var $I7_0_i_i=0;label=289;break;}else{label=287;break;}
+ case 287:
+ var $1234=($qsize_0_i_i>>>0)>16777215;
+ if($1234){var $I7_0_i_i=31;label=289;break;}else{label=288;break;}
+ case 288:
+ var $1236=((($1231)+(1048320))|0);
+ var $1237=$1236>>>16;
+ var $1238=$1237&8;
+ var $1239=$1231<<$1238;
+ var $1240=((($1239)+(520192))|0);
+ var $1241=$1240>>>16;
+ var $1242=$1241&4;
+ var $1243=$1242|$1238;
+ var $1244=$1239<<$1242;
+ var $1245=((($1244)+(245760))|0);
+ var $1246=$1245>>>16;
+ var $1247=$1246&2;
+ var $1248=$1243|$1247;
+ var $1249=(((14)-($1248))|0);
+ var $1250=$1244<<$1247;
+ var $1251=$1250>>>15;
+ var $1252=((($1249)+($1251))|0);
+ var $1253=$1252<<1;
+ var $1254=((($1252)+(7))|0);
+ var $1255=$qsize_0_i_i>>>($1254>>>0);
+ var $1256=$1255&1;
+ var $1257=$1256|$1253;
+ var $I7_0_i_i=$1257;label=289;break;
+ case 289:
+ var $I7_0_i_i;
+ var $1259=((344+($I7_0_i_i<<2))|0);
+ var $_sum12_i24_i=((($_sum_i19_i)+(28))|0);
+ var $1260=(($tbase_245_i+$_sum12_i24_i)|0);
+ var $1261=$1260;
+ HEAP32[(($1261)>>2)]=$I7_0_i_i;
+ var $_sum13_i_i=((($_sum_i19_i)+(16))|0);
+ var $1262=(($tbase_245_i+$_sum13_i_i)|0);
+ var $_sum14_i_i=((($_sum_i19_i)+(20))|0);
+ var $1263=(($tbase_245_i+$_sum14_i_i)|0);
+ var $1264=$1263;
+ HEAP32[(($1264)>>2)]=0;
+ var $1265=$1262;
+ HEAP32[(($1265)>>2)]=0;
+ var $1266=HEAP32[((44)>>2)];
+ var $1267=1<<$I7_0_i_i;
+ var $1268=$1266&$1267;
+ var $1269=($1268|0)==0;
+ if($1269){label=290;break;}else{label=291;break;}
+ case 290:
+ var $1271=$1266|$1267;
+ HEAP32[((44)>>2)]=$1271;
+ HEAP32[(($1259)>>2)]=$1230;
+ var $1272=$1259;
+ var $_sum15_i_i=((($_sum_i19_i)+(24))|0);
+ var $1273=(($tbase_245_i+$_sum15_i_i)|0);
+ var $1274=$1273;
+ HEAP32[(($1274)>>2)]=$1272;
+ var $_sum16_i_i=((($_sum_i19_i)+(12))|0);
+ var $1275=(($tbase_245_i+$_sum16_i_i)|0);
+ var $1276=$1275;
+ HEAP32[(($1276)>>2)]=$1230;
+ var $_sum17_i_i=((($_sum_i19_i)+(8))|0);
+ var $1277=(($tbase_245_i+$_sum17_i_i)|0);
+ var $1278=$1277;
+ HEAP32[(($1278)>>2)]=$1230;
+ label=303;break;
+ case 291:
+ var $1280=HEAP32[(($1259)>>2)];
+ var $1281=($I7_0_i_i|0)==31;
+ if($1281){var $1286=0;label=293;break;}else{label=292;break;}
+ case 292:
+ var $1283=$I7_0_i_i>>>1;
+ var $1284=(((25)-($1283))|0);
+ var $1286=$1284;label=293;break;
+ case 293:
+ var $1286;
+ var $1287=(($1280+4)|0);
+ var $1288=HEAP32[(($1287)>>2)];
+ var $1289=$1288&-8;
+ var $1290=($1289|0)==($qsize_0_i_i|0);
+ if($1290){var $T_0_lcssa_i26_i=$1280;label=300;break;}else{label=294;break;}
+ case 294:
+ var $1291=$qsize_0_i_i<<$1286;
+ var $T_056_i_i=$1280;var $K8_057_i_i=$1291;label=296;break;
+ case 295:
+ var $1293=$K8_057_i_i<<1;
+ var $1294=(($1301+4)|0);
+ var $1295=HEAP32[(($1294)>>2)];
+ var $1296=$1295&-8;
+ var $1297=($1296|0)==($qsize_0_i_i|0);
+ if($1297){var $T_0_lcssa_i26_i=$1301;label=300;break;}else{var $T_056_i_i=$1301;var $K8_057_i_i=$1293;label=296;break;}
+ case 296:
+ var $K8_057_i_i;
+ var $T_056_i_i;
+ var $1299=$K8_057_i_i>>>31;
+ var $1300=(($T_056_i_i+16+($1299<<2))|0);
+ var $1301=HEAP32[(($1300)>>2)];
+ var $1302=($1301|0)==0;
+ if($1302){label=297;break;}else{label=295;break;}
+ case 297:
+ var $1304=$1300;
+ var $1305=HEAP32[((56)>>2)];
+ var $1306=($1304>>>0)<($1305>>>0);
+ if($1306){label=299;break;}else{label=298;break;}
+ case 298:
+ HEAP32[(($1300)>>2)]=$1230;
+ var $_sum24_i_i=((($_sum_i19_i)+(24))|0);
+ var $1308=(($tbase_245_i+$_sum24_i_i)|0);
+ var $1309=$1308;
+ HEAP32[(($1309)>>2)]=$T_056_i_i;
+ var $_sum25_i_i=((($_sum_i19_i)+(12))|0);
+ var $1310=(($tbase_245_i+$_sum25_i_i)|0);
+ var $1311=$1310;
+ HEAP32[(($1311)>>2)]=$1230;
+ var $_sum26_i_i=((($_sum_i19_i)+(8))|0);
+ var $1312=(($tbase_245_i+$_sum26_i_i)|0);
+ var $1313=$1312;
+ HEAP32[(($1313)>>2)]=$1230;
+ label=303;break;
+ case 299:
+ _abort();
+ throw "Reached an unreachable!";
+ case 300:
+ var $T_0_lcssa_i26_i;
+ var $1315=(($T_0_lcssa_i26_i+8)|0);
+ var $1316=HEAP32[(($1315)>>2)];
+ var $1317=$T_0_lcssa_i26_i;
+ var $1318=HEAP32[((56)>>2)];
+ var $1319=($1317>>>0)>=($1318>>>0);
+ var $1320=$1316;
+ var $1321=($1320>>>0)>=($1318>>>0);
+ var $or_cond_i27_i=$1319&$1321;
+ if($or_cond_i27_i){label=301;break;}else{label=302;break;}
+ case 301:
+ var $1323=(($1316+12)|0);
+ HEAP32[(($1323)>>2)]=$1230;
+ HEAP32[(($1315)>>2)]=$1230;
+ var $_sum21_i_i=((($_sum_i19_i)+(8))|0);
+ var $1324=(($tbase_245_i+$_sum21_i_i)|0);
+ var $1325=$1324;
+ HEAP32[(($1325)>>2)]=$1316;
+ var $_sum22_i_i=((($_sum_i19_i)+(12))|0);
+ var $1326=(($tbase_245_i+$_sum22_i_i)|0);
+ var $1327=$1326;
+ HEAP32[(($1327)>>2)]=$T_0_lcssa_i26_i;
+ var $_sum23_i_i=((($_sum_i19_i)+(24))|0);
+ var $1328=(($tbase_245_i+$_sum23_i_i)|0);
+ var $1329=$1328;
+ HEAP32[(($1329)>>2)]=0;
+ label=303;break;
+ case 302:
+ _abort();
+ throw "Reached an unreachable!";
+ case 303:
+ var $_sum1819_i_i=$995|8;
+ var $1330=(($tbase_245_i+$_sum1819_i_i)|0);
+ var $mem_0=$1330;label=341;break;
+ case 304:
+ var $1331=$891;
+ var $sp_0_i_i_i=488;label=305;break;
+ case 305:
+ var $sp_0_i_i_i;
+ var $1333=(($sp_0_i_i_i)|0);
+ var $1334=HEAP32[(($1333)>>2)];
+ var $1335=($1334>>>0)>($1331>>>0);
+ if($1335){label=307;break;}else{label=306;break;}
+ case 306:
+ var $1337=(($sp_0_i_i_i+4)|0);
+ var $1338=HEAP32[(($1337)>>2)];
+ var $1339=(($1334+$1338)|0);
+ var $1340=($1339>>>0)>($1331>>>0);
+ if($1340){label=308;break;}else{label=307;break;}
+ case 307:
+ var $1342=(($sp_0_i_i_i+8)|0);
+ var $1343=HEAP32[(($1342)>>2)];
+ var $sp_0_i_i_i=$1343;label=305;break;
+ case 308:
+ var $_sum_i13_i=((($1338)-(47))|0);
+ var $_sum1_i14_i=((($1338)-(39))|0);
+ var $1344=(($1334+$_sum1_i14_i)|0);
+ var $1345=$1344;
+ var $1346=$1345&7;
+ var $1347=($1346|0)==0;
+ if($1347){var $1352=0;label=310;break;}else{label=309;break;}
+ case 309:
+ var $1349=(((-$1345))|0);
+ var $1350=$1349&7;
+ var $1352=$1350;label=310;break;
+ case 310:
+ var $1352;
+ var $_sum2_i15_i=((($_sum_i13_i)+($1352))|0);
+ var $1353=(($1334+$_sum2_i15_i)|0);
+ var $1354=(($891+16)|0);
+ var $1355=$1354;
+ var $1356=($1353>>>0)<($1355>>>0);
+ var $1357=($1356?$1331:$1353);
+ var $1358=(($1357+8)|0);
+ var $1359=$1358;
+ var $1360=((($tsize_244_i)-(40))|0);
+ var $1361=(($tbase_245_i+8)|0);
+ var $1362=$1361;
+ var $1363=$1362&7;
+ var $1364=($1363|0)==0;
+ if($1364){var $1368=0;label=312;break;}else{label=311;break;}
+ case 311:
+ var $1366=(((-$1362))|0);
+ var $1367=$1366&7;
+ var $1368=$1367;label=312;break;
+ case 312:
+ var $1368;
+ var $1369=(($tbase_245_i+$1368)|0);
+ var $1370=$1369;
+ var $1371=((($1360)-($1368))|0);
+ HEAP32[((64)>>2)]=$1370;
+ HEAP32[((52)>>2)]=$1371;
+ var $1372=$1371|1;
+ var $_sum_i_i_i=((($1368)+(4))|0);
+ var $1373=(($tbase_245_i+$_sum_i_i_i)|0);
+ var $1374=$1373;
+ HEAP32[(($1374)>>2)]=$1372;
+ var $_sum2_i_i_i=((($tsize_244_i)-(36))|0);
+ var $1375=(($tbase_245_i+$_sum2_i_i_i)|0);
+ var $1376=$1375;
+ HEAP32[(($1376)>>2)]=40;
+ var $1377=HEAP32[((32)>>2)];
+ HEAP32[((68)>>2)]=$1377;
+ var $1378=(($1357+4)|0);
+ var $1379=$1378;
+ HEAP32[(($1379)>>2)]=27;
+ assert(16 % 1 === 0);HEAP32[(($1358)>>2)]=HEAP32[((488)>>2)];HEAP32[((($1358)+(4))>>2)]=HEAP32[((492)>>2)];HEAP32[((($1358)+(8))>>2)]=HEAP32[((496)>>2)];HEAP32[((($1358)+(12))>>2)]=HEAP32[((500)>>2)];
+ HEAP32[((488)>>2)]=$tbase_245_i;
+ HEAP32[((492)>>2)]=$tsize_244_i;
+ HEAP32[((500)>>2)]=0;
+ HEAP32[((496)>>2)]=$1359;
+ var $1380=(($1357+28)|0);
+ var $1381=$1380;
+ HEAP32[(($1381)>>2)]=7;
+ var $1382=(($1357+32)|0);
+ var $1383=($1382>>>0)<($1339>>>0);
+ if($1383){var $1384=$1381;label=313;break;}else{label=314;break;}
+ case 313:
+ var $1384;
+ var $1385=(($1384+4)|0);
+ HEAP32[(($1385)>>2)]=7;
+ var $1386=(($1384+8)|0);
+ var $1387=$1386;
+ var $1388=($1387>>>0)<($1339>>>0);
+ if($1388){var $1384=$1385;label=313;break;}else{label=314;break;}
+ case 314:
+ var $1389=($1357|0)==($1331|0);
+ if($1389){label=338;break;}else{label=315;break;}
+ case 315:
+ var $1391=$1357;
+ var $1392=$891;
+ var $1393=((($1391)-($1392))|0);
+ var $1394=(($1331+$1393)|0);
+ var $_sum3_i_i=((($1393)+(4))|0);
+ var $1395=(($1331+$_sum3_i_i)|0);
+ var $1396=$1395;
+ var $1397=HEAP32[(($1396)>>2)];
+ var $1398=$1397&-2;
+ HEAP32[(($1396)>>2)]=$1398;
+ var $1399=$1393|1;
+ var $1400=(($891+4)|0);
+ HEAP32[(($1400)>>2)]=$1399;
+ var $1401=$1394;
+ HEAP32[(($1401)>>2)]=$1393;
+ var $1402=$1393>>>3;
+ var $1403=($1393>>>0)<256;
+ if($1403){label=316;break;}else{label=321;break;}
+ case 316:
+ var $1405=$1402<<1;
+ var $1406=((80+($1405<<2))|0);
+ var $1407=$1406;
+ var $1408=HEAP32[((40)>>2)];
+ var $1409=1<<$1402;
+ var $1410=$1408&$1409;
+ var $1411=($1410|0)==0;
+ if($1411){label=317;break;}else{label=318;break;}
+ case 317:
+ var $1413=$1408|$1409;
+ HEAP32[((40)>>2)]=$1413;
+ var $_sum11_pre_i_i=((($1405)+(2))|0);
+ var $_pre_i_i=((80+($_sum11_pre_i_i<<2))|0);
+ var $F_0_i_i=$1407;var $_pre_phi_i_i=$_pre_i_i;label=320;break;
+ case 318:
+ var $_sum12_i_i=((($1405)+(2))|0);
+ var $1415=((80+($_sum12_i_i<<2))|0);
+ var $1416=HEAP32[(($1415)>>2)];
+ var $1417=$1416;
+ var $1418=HEAP32[((56)>>2)];
+ var $1419=($1417>>>0)<($1418>>>0);
+ if($1419){label=319;break;}else{var $F_0_i_i=$1416;var $_pre_phi_i_i=$1415;label=320;break;}
+ case 319:
+ _abort();
+ throw "Reached an unreachable!";
+ case 320:
+ var $_pre_phi_i_i;
+ var $F_0_i_i;
+ HEAP32[(($_pre_phi_i_i)>>2)]=$891;
+ var $1422=(($F_0_i_i+12)|0);
+ HEAP32[(($1422)>>2)]=$891;
+ var $1423=(($891+8)|0);
+ HEAP32[(($1423)>>2)]=$F_0_i_i;
+ var $1424=(($891+12)|0);
+ HEAP32[(($1424)>>2)]=$1407;
+ label=338;break;
+ case 321:
+ var $1426=$891;
+ var $1427=$1393>>>8;
+ var $1428=($1427|0)==0;
+ if($1428){var $I1_0_i_i=0;label=324;break;}else{label=322;break;}
+ case 322:
+ var $1430=($1393>>>0)>16777215;
+ if($1430){var $I1_0_i_i=31;label=324;break;}else{label=323;break;}
+ case 323:
+ var $1432=((($1427)+(1048320))|0);
+ var $1433=$1432>>>16;
+ var $1434=$1433&8;
+ var $1435=$1427<<$1434;
+ var $1436=((($1435)+(520192))|0);
+ var $1437=$1436>>>16;
+ var $1438=$1437&4;
+ var $1439=$1438|$1434;
+ var $1440=$1435<<$1438;
+ var $1441=((($1440)+(245760))|0);
+ var $1442=$1441>>>16;
+ var $1443=$1442&2;
+ var $1444=$1439|$1443;
+ var $1445=(((14)-($1444))|0);
+ var $1446=$1440<<$1443;
+ var $1447=$1446>>>15;
+ var $1448=((($1445)+($1447))|0);
+ var $1449=$1448<<1;
+ var $1450=((($1448)+(7))|0);
+ var $1451=$1393>>>($1450>>>0);
+ var $1452=$1451&1;
+ var $1453=$1452|$1449;
+ var $I1_0_i_i=$1453;label=324;break;
+ case 324:
+ var $I1_0_i_i;
+ var $1455=((344+($I1_0_i_i<<2))|0);
+ var $1456=(($891+28)|0);
+ var $I1_0_c_i_i=$I1_0_i_i;
+ HEAP32[(($1456)>>2)]=$I1_0_c_i_i;
+ var $1457=(($891+20)|0);
+ HEAP32[(($1457)>>2)]=0;
+ var $1458=(($891+16)|0);
+ HEAP32[(($1458)>>2)]=0;
+ var $1459=HEAP32[((44)>>2)];
+ var $1460=1<<$I1_0_i_i;
+ var $1461=$1459&$1460;
+ var $1462=($1461|0)==0;
+ if($1462){label=325;break;}else{label=326;break;}
+ case 325:
+ var $1464=$1459|$1460;
+ HEAP32[((44)>>2)]=$1464;
+ HEAP32[(($1455)>>2)]=$1426;
+ var $1465=(($891+24)|0);
+ var $_c_i_i=$1455;
+ HEAP32[(($1465)>>2)]=$_c_i_i;
+ var $1466=(($891+12)|0);
+ HEAP32[(($1466)>>2)]=$891;
+ var $1467=(($891+8)|0);
+ HEAP32[(($1467)>>2)]=$891;
+ label=338;break;
+ case 326:
+ var $1469=HEAP32[(($1455)>>2)];
+ var $1470=($I1_0_i_i|0)==31;
+ if($1470){var $1475=0;label=328;break;}else{label=327;break;}
+ case 327:
+ var $1472=$I1_0_i_i>>>1;
+ var $1473=(((25)-($1472))|0);
+ var $1475=$1473;label=328;break;
+ case 328:
+ var $1475;
+ var $1476=(($1469+4)|0);
+ var $1477=HEAP32[(($1476)>>2)];
+ var $1478=$1477&-8;
+ var $1479=($1478|0)==($1393|0);
+ if($1479){var $T_0_lcssa_i_i=$1469;label=335;break;}else{label=329;break;}
+ case 329:
+ var $1480=$1393<<$1475;
+ var $T_015_i_i=$1469;var $K2_016_i_i=$1480;label=331;break;
+ case 330:
+ var $1482=$K2_016_i_i<<1;
+ var $1483=(($1490+4)|0);
+ var $1484=HEAP32[(($1483)>>2)];
+ var $1485=$1484&-8;
+ var $1486=($1485|0)==($1393|0);
+ if($1486){var $T_0_lcssa_i_i=$1490;label=335;break;}else{var $T_015_i_i=$1490;var $K2_016_i_i=$1482;label=331;break;}
+ case 331:
+ var $K2_016_i_i;
+ var $T_015_i_i;
+ var $1488=$K2_016_i_i>>>31;
+ var $1489=(($T_015_i_i+16+($1488<<2))|0);
+ var $1490=HEAP32[(($1489)>>2)];
+ var $1491=($1490|0)==0;
+ if($1491){label=332;break;}else{label=330;break;}
+ case 332:
+ var $1493=$1489;
+ var $1494=HEAP32[((56)>>2)];
+ var $1495=($1493>>>0)<($1494>>>0);
+ if($1495){label=334;break;}else{label=333;break;}
+ case 333:
+ HEAP32[(($1489)>>2)]=$1426;
+ var $1497=(($891+24)|0);
+ var $T_0_c8_i_i=$T_015_i_i;
+ HEAP32[(($1497)>>2)]=$T_0_c8_i_i;
+ var $1498=(($891+12)|0);
+ HEAP32[(($1498)>>2)]=$891;
+ var $1499=(($891+8)|0);
+ HEAP32[(($1499)>>2)]=$891;
+ label=338;break;
+ case 334:
+ _abort();
+ throw "Reached an unreachable!";
+ case 335:
+ var $T_0_lcssa_i_i;
+ var $1501=(($T_0_lcssa_i_i+8)|0);
+ var $1502=HEAP32[(($1501)>>2)];
+ var $1503=$T_0_lcssa_i_i;
+ var $1504=HEAP32[((56)>>2)];
+ var $1505=($1503>>>0)>=($1504>>>0);
+ var $1506=$1502;
+ var $1507=($1506>>>0)>=($1504>>>0);
+ var $or_cond_i_i=$1505&$1507;
+ if($or_cond_i_i){label=336;break;}else{label=337;break;}
+ case 336:
+ var $1509=(($1502+12)|0);
+ HEAP32[(($1509)>>2)]=$1426;
+ HEAP32[(($1501)>>2)]=$1426;
+ var $1510=(($891+8)|0);
+ var $_c7_i_i=$1502;
+ HEAP32[(($1510)>>2)]=$_c7_i_i;
+ var $1511=(($891+12)|0);
+ var $T_0_c_i_i=$T_0_lcssa_i_i;
+ HEAP32[(($1511)>>2)]=$T_0_c_i_i;
+ var $1512=(($891+24)|0);
+ HEAP32[(($1512)>>2)]=0;
+ label=338;break;
+ case 337:
+ _abort();
+ throw "Reached an unreachable!";
+ case 338:
+ var $1513=HEAP32[((52)>>2)];
+ var $1514=($1513>>>0)>($nb_0>>>0);
+ if($1514){label=339;break;}else{label=340;break;}
+ case 339:
+ var $1516=((($1513)-($nb_0))|0);
+ HEAP32[((52)>>2)]=$1516;
+ var $1517=HEAP32[((64)>>2)];
+ var $1518=$1517;
+ var $1519=(($1518+$nb_0)|0);
+ var $1520=$1519;
+ HEAP32[((64)>>2)]=$1520;
+ var $1521=$1516|1;
+ var $_sum_i34=((($nb_0)+(4))|0);
+ var $1522=(($1518+$_sum_i34)|0);
+ var $1523=$1522;
+ HEAP32[(($1523)>>2)]=$1521;
+ var $1524=$nb_0|3;
+ var $1525=(($1517+4)|0);
+ HEAP32[(($1525)>>2)]=$1524;
+ var $1526=(($1517+8)|0);
+ var $1527=$1526;
+ var $mem_0=$1527;label=341;break;
+ case 340:
+ var $1528=___errno_location();
+ HEAP32[(($1528)>>2)]=12;
+ var $mem_0=0;label=341;break;
+ case 341:
+ var $mem_0;
+ return $mem_0;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+Module["_malloc"] = _malloc;
+
+function _free($mem){
+ var label=0;
+
+ label = 1;
+ while(1)switch(label){
+ case 1:
+ var $1=($mem|0)==0;
+ if($1){label=140;break;}else{label=2;break;}
+ case 2:
+ var $3=((($mem)-(8))|0);
+ var $4=$3;
+ var $5=HEAP32[((56)>>2)];
+ var $6=($3>>>0)<($5>>>0);
+ if($6){label=139;break;}else{label=3;break;}
+ case 3:
+ var $8=((($mem)-(4))|0);
+ var $9=$8;
+ var $10=HEAP32[(($9)>>2)];
+ var $11=$10&3;
+ var $12=($11|0)==1;
+ if($12){label=139;break;}else{label=4;break;}
+ case 4:
+ var $14=$10&-8;
+ var $_sum=((($14)-(8))|0);
+ var $15=(($mem+$_sum)|0);
+ var $16=$15;
+ var $17=$10&1;
+ var $18=($17|0)==0;
+ if($18){label=5;break;}else{var $p_0=$4;var $psize_0=$14;label=56;break;}
+ case 5:
+ var $20=$3;
+ var $21=HEAP32[(($20)>>2)];
+ var $22=($11|0)==0;
+ if($22){label=140;break;}else{label=6;break;}
+ case 6:
+ var $_sum3=(((-8)-($21))|0);
+ var $24=(($mem+$_sum3)|0);
+ var $25=$24;
+ var $26=((($21)+($14))|0);
+ var $27=($24>>>0)<($5>>>0);
+ if($27){label=139;break;}else{label=7;break;}
+ case 7:
+ var $29=HEAP32[((60)>>2)];
+ var $30=($25|0)==($29|0);
+ if($30){label=54;break;}else{label=8;break;}
+ case 8:
+ var $32=$21>>>3;
+ var $33=($21>>>0)<256;
+ if($33){label=9;break;}else{label=21;break;}
+ case 9:
+ var $_sum47=((($_sum3)+(8))|0);
+ var $35=(($mem+$_sum47)|0);
+ var $36=$35;
+ var $37=HEAP32[(($36)>>2)];
+ var $_sum48=((($_sum3)+(12))|0);
+ var $38=(($mem+$_sum48)|0);
+ var $39=$38;
+ var $40=HEAP32[(($39)>>2)];
+ var $41=$32<<1;
+ var $42=((80+($41<<2))|0);
+ var $43=$42;
+ var $44=($37|0)==($43|0);
+ if($44){label=12;break;}else{label=10;break;}
+ case 10:
+ var $46=$37;
+ var $47=($46>>>0)<($5>>>0);
+ if($47){label=20;break;}else{label=11;break;}
+ case 11:
+ var $49=(($37+12)|0);
+ var $50=HEAP32[(($49)>>2)];
+ var $51=($50|0)==($25|0);
+ if($51){label=12;break;}else{label=20;break;}
+ case 12:
+ var $52=($40|0)==($37|0);
+ if($52){label=13;break;}else{label=14;break;}
+ case 13:
+ var $54=1<<$32;
+ var $55=$54^-1;
+ var $56=HEAP32[((40)>>2)];
+ var $57=$56&$55;
+ HEAP32[((40)>>2)]=$57;
+ var $p_0=$25;var $psize_0=$26;label=56;break;
+ case 14:
+ var $59=($40|0)==($43|0);
+ if($59){label=15;break;}else{label=16;break;}
+ case 15:
+ var $_pre82=(($40+8)|0);
+ var $_pre_phi83=$_pre82;label=18;break;
+ case 16:
+ var $61=$40;
+ var $62=($61>>>0)<($5>>>0);
+ if($62){label=19;break;}else{label=17;break;}
+ case 17:
+ var $64=(($40+8)|0);
+ var $65=HEAP32[(($64)>>2)];
+ var $66=($65|0)==($25|0);
+ if($66){var $_pre_phi83=$64;label=18;break;}else{label=19;break;}
+ case 18:
+ var $_pre_phi83;
+ var $67=(($37+12)|0);
+ HEAP32[(($67)>>2)]=$40;
+ HEAP32[(($_pre_phi83)>>2)]=$37;
+ var $p_0=$25;var $psize_0=$26;label=56;break;
+ case 19:
+ _abort();
+ throw "Reached an unreachable!";
+ case 20:
+ _abort();
+ throw "Reached an unreachable!";
+ case 21:
+ var $69=$24;
+ var $_sum37=((($_sum3)+(24))|0);
+ var $70=(($mem+$_sum37)|0);
+ var $71=$70;
+ var $72=HEAP32[(($71)>>2)];
+ var $_sum38=((($_sum3)+(12))|0);
+ var $73=(($mem+$_sum38)|0);
+ var $74=$73;
+ var $75=HEAP32[(($74)>>2)];
+ var $76=($75|0)==($69|0);
+ if($76){label=27;break;}else{label=22;break;}
+ case 22:
+ var $_sum44=((($_sum3)+(8))|0);
+ var $78=(($mem+$_sum44)|0);
+ var $79=$78;
+ var $80=HEAP32[(($79)>>2)];
+ var $81=$80;
+ var $82=($81>>>0)<($5>>>0);
+ if($82){label=26;break;}else{label=23;break;}
+ case 23:
+ var $84=(($80+12)|0);
+ var $85=HEAP32[(($84)>>2)];
+ var $86=($85|0)==($69|0);
+ if($86){label=24;break;}else{label=26;break;}
+ case 24:
+ var $88=(($75+8)|0);
+ var $89=HEAP32[(($88)>>2)];
+ var $90=($89|0)==($69|0);
+ if($90){label=25;break;}else{label=26;break;}
+ case 25:
+ HEAP32[(($84)>>2)]=$75;
+ HEAP32[(($88)>>2)]=$80;
+ var $R_1=$75;label=34;break;
+ case 26:
+ _abort();
+ throw "Reached an unreachable!";
+ case 27:
+ var $_sum40=((($_sum3)+(20))|0);
+ var $93=(($mem+$_sum40)|0);
+ var $94=$93;
+ var $95=HEAP32[(($94)>>2)];
+ var $96=($95|0)==0;
+ if($96){label=28;break;}else{var $R_0=$95;var $RP_0=$94;label=29;break;}
+ case 28:
+ var $_sum39=((($_sum3)+(16))|0);
+ var $98=(($mem+$_sum39)|0);
+ var $99=$98;
+ var $100=HEAP32[(($99)>>2)];
+ var $101=($100|0)==0;
+ if($101){var $R_1=0;label=34;break;}else{var $R_0=$100;var $RP_0=$99;label=29;break;}
+ case 29:
+ var $RP_0;
+ var $R_0;
+ var $102=(($R_0+20)|0);
+ var $103=HEAP32[(($102)>>2)];
+ var $104=($103|0)==0;
+ if($104){label=30;break;}else{var $R_0=$103;var $RP_0=$102;label=29;break;}
+ case 30:
+ var $106=(($R_0+16)|0);
+ var $107=HEAP32[(($106)>>2)];
+ var $108=($107|0)==0;
+ if($108){label=31;break;}else{var $R_0=$107;var $RP_0=$106;label=29;break;}
+ case 31:
+ var $110=$RP_0;
+ var $111=($110>>>0)<($5>>>0);
+ if($111){label=33;break;}else{label=32;break;}
+ case 32:
+ HEAP32[(($RP_0)>>2)]=0;
+ var $R_1=$R_0;label=34;break;
+ case 33:
+ _abort();
+ throw "Reached an unreachable!";
+ case 34:
+ var $R_1;
+ var $115=($72|0)==0;
+ if($115){var $p_0=$25;var $psize_0=$26;label=56;break;}else{label=35;break;}
+ case 35:
+ var $_sum41=((($_sum3)+(28))|0);
+ var $117=(($mem+$_sum41)|0);
+ var $118=$117;
+ var $119=HEAP32[(($118)>>2)];
+ var $120=((344+($119<<2))|0);
+ var $121=HEAP32[(($120)>>2)];
+ var $122=($69|0)==($121|0);
+ if($122){label=36;break;}else{label=38;break;}
+ case 36:
+ HEAP32[(($120)>>2)]=$R_1;
+ var $cond=($R_1|0)==0;
+ if($cond){label=37;break;}else{label=44;break;}
+ case 37:
+ var $124=HEAP32[(($118)>>2)];
+ var $125=1<<$124;
+ var $126=$125^-1;
+ var $127=HEAP32[((44)>>2)];
+ var $128=$127&$126;
+ HEAP32[((44)>>2)]=$128;
+ var $p_0=$25;var $psize_0=$26;label=56;break;
+ case 38:
+ var $130=$72;
+ var $131=HEAP32[((56)>>2)];
+ var $132=($130>>>0)<($131>>>0);
+ if($132){label=42;break;}else{label=39;break;}
+ case 39:
+ var $134=(($72+16)|0);
+ var $135=HEAP32[(($134)>>2)];
+ var $136=($135|0)==($69|0);
+ if($136){label=40;break;}else{label=41;break;}
+ case 40:
+ HEAP32[(($134)>>2)]=$R_1;
+ label=43;break;
+ case 41:
+ var $139=(($72+20)|0);
+ HEAP32[(($139)>>2)]=$R_1;
+ label=43;break;
+ case 42:
+ _abort();
+ throw "Reached an unreachable!";
+ case 43:
+ var $142=($R_1|0)==0;
+ if($142){var $p_0=$25;var $psize_0=$26;label=56;break;}else{label=44;break;}
+ case 44:
+ var $144=$R_1;
+ var $145=HEAP32[((56)>>2)];
+ var $146=($144>>>0)<($145>>>0);
+ if($146){label=53;break;}else{label=45;break;}
+ case 45:
+ var $148=(($R_1+24)|0);
+ HEAP32[(($148)>>2)]=$72;
+ var $_sum42=((($_sum3)+(16))|0);
+ var $149=(($mem+$_sum42)|0);
+ var $150=$149;
+ var $151=HEAP32[(($150)>>2)];
+ var $152=($151|0)==0;
+ if($152){label=49;break;}else{label=46;break;}
+ case 46:
+ var $154=$151;
+ var $155=HEAP32[((56)>>2)];
+ var $156=($154>>>0)<($155>>>0);
+ if($156){label=48;break;}else{label=47;break;}
+ case 47:
+ var $158=(($R_1+16)|0);
+ HEAP32[(($158)>>2)]=$151;
+ var $159=(($151+24)|0);
+ HEAP32[(($159)>>2)]=$R_1;
+ label=49;break;
+ case 48:
+ _abort();
+ throw "Reached an unreachable!";
+ case 49:
+ var $_sum43=((($_sum3)+(20))|0);
+ var $162=(($mem+$_sum43)|0);
+ var $163=$162;
+ var $164=HEAP32[(($163)>>2)];
+ var $165=($164|0)==0;
+ if($165){var $p_0=$25;var $psize_0=$26;label=56;break;}else{label=50;break;}
+ case 50:
+ var $167=$164;
+ var $168=HEAP32[((56)>>2)];
+ var $169=($167>>>0)<($168>>>0);
+ if($169){label=52;break;}else{label=51;break;}
+ case 51:
+ var $171=(($R_1+20)|0);
+ HEAP32[(($171)>>2)]=$164;
+ var $172=(($164+24)|0);
+ HEAP32[(($172)>>2)]=$R_1;
+ var $p_0=$25;var $psize_0=$26;label=56;break;
+ case 52:
+ _abort();
+ throw "Reached an unreachable!";
+ case 53:
+ _abort();
+ throw "Reached an unreachable!";
+ case 54:
+ var $_sum4=((($14)-(4))|0);
+ var $176=(($mem+$_sum4)|0);
+ var $177=$176;
+ var $178=HEAP32[(($177)>>2)];
+ var $179=$178&3;
+ var $180=($179|0)==3;
+ if($180){label=55;break;}else{var $p_0=$25;var $psize_0=$26;label=56;break;}
+ case 55:
+ HEAP32[((48)>>2)]=$26;
+ var $182=HEAP32[(($177)>>2)];
+ var $183=$182&-2;
+ HEAP32[(($177)>>2)]=$183;
+ var $184=$26|1;
+ var $_sum35=((($_sum3)+(4))|0);
+ var $185=(($mem+$_sum35)|0);
+ var $186=$185;
+ HEAP32[(($186)>>2)]=$184;
+ var $187=$15;
+ HEAP32[(($187)>>2)]=$26;
+ label=140;break;
+ case 56:
+ var $psize_0;
+ var $p_0;
+ var $189=$p_0;
+ var $190=($189>>>0)<($15>>>0);
+ if($190){label=57;break;}else{label=139;break;}
+ case 57:
+ var $_sum34=((($14)-(4))|0);
+ var $192=(($mem+$_sum34)|0);
+ var $193=$192;
+ var $194=HEAP32[(($193)>>2)];
+ var $195=$194&1;
+ var $phitmp=($195|0)==0;
+ if($phitmp){label=139;break;}else{label=58;break;}
+ case 58:
+ var $197=$194&2;
+ var $198=($197|0)==0;
+ if($198){label=59;break;}else{label=112;break;}
+ case 59:
+ var $200=HEAP32[((64)>>2)];
+ var $201=($16|0)==($200|0);
+ if($201){label=60;break;}else{label=62;break;}
+ case 60:
+ var $203=HEAP32[((52)>>2)];
+ var $204=((($203)+($psize_0))|0);
+ HEAP32[((52)>>2)]=$204;
+ HEAP32[((64)>>2)]=$p_0;
+ var $205=$204|1;
+ var $206=(($p_0+4)|0);
+ HEAP32[(($206)>>2)]=$205;
+ var $207=HEAP32[((60)>>2)];
+ var $208=($p_0|0)==($207|0);
+ if($208){label=61;break;}else{label=140;break;}
+ case 61:
+ HEAP32[((60)>>2)]=0;
+ HEAP32[((48)>>2)]=0;
+ label=140;break;
+ case 62:
+ var $211=HEAP32[((60)>>2)];
+ var $212=($16|0)==($211|0);
+ if($212){label=63;break;}else{label=64;break;}
+ case 63:
+ var $214=HEAP32[((48)>>2)];
+ var $215=((($214)+($psize_0))|0);
+ HEAP32[((48)>>2)]=$215;
+ HEAP32[((60)>>2)]=$p_0;
+ var $216=$215|1;
+ var $217=(($p_0+4)|0);
+ HEAP32[(($217)>>2)]=$216;
+ var $218=(($189+$215)|0);
+ var $219=$218;
+ HEAP32[(($219)>>2)]=$215;
+ label=140;break;
+ case 64:
+ var $221=$194&-8;
+ var $222=((($221)+($psize_0))|0);
+ var $223=$194>>>3;
+ var $224=($194>>>0)<256;
+ if($224){label=65;break;}else{label=77;break;}
+ case 65:
+ var $226=(($mem+$14)|0);
+ var $227=$226;
+ var $228=HEAP32[(($227)>>2)];
+ var $_sum2829=$14|4;
+ var $229=(($mem+$_sum2829)|0);
+ var $230=$229;
+ var $231=HEAP32[(($230)>>2)];
+ var $232=$223<<1;
+ var $233=((80+($232<<2))|0);
+ var $234=$233;
+ var $235=($228|0)==($234|0);
+ if($235){label=68;break;}else{label=66;break;}
+ case 66:
+ var $237=$228;
+ var $238=HEAP32[((56)>>2)];
+ var $239=($237>>>0)<($238>>>0);
+ if($239){label=76;break;}else{label=67;break;}
+ case 67:
+ var $241=(($228+12)|0);
+ var $242=HEAP32[(($241)>>2)];
+ var $243=($242|0)==($16|0);
+ if($243){label=68;break;}else{label=76;break;}
+ case 68:
+ var $244=($231|0)==($228|0);
+ if($244){label=69;break;}else{label=70;break;}
+ case 69:
+ var $246=1<<$223;
+ var $247=$246^-1;
+ var $248=HEAP32[((40)>>2)];
+ var $249=$248&$247;
+ HEAP32[((40)>>2)]=$249;
+ label=110;break;
+ case 70:
+ var $251=($231|0)==($234|0);
+ if($251){label=71;break;}else{label=72;break;}
+ case 71:
+ var $_pre80=(($231+8)|0);
+ var $_pre_phi81=$_pre80;label=74;break;
+ case 72:
+ var $253=$231;
+ var $254=HEAP32[((56)>>2)];
+ var $255=($253>>>0)<($254>>>0);
+ if($255){label=75;break;}else{label=73;break;}
+ case 73:
+ var $257=(($231+8)|0);
+ var $258=HEAP32[(($257)>>2)];
+ var $259=($258|0)==($16|0);
+ if($259){var $_pre_phi81=$257;label=74;break;}else{label=75;break;}
+ case 74:
+ var $_pre_phi81;
+ var $260=(($228+12)|0);
+ HEAP32[(($260)>>2)]=$231;
+ HEAP32[(($_pre_phi81)>>2)]=$228;
+ label=110;break;
+ case 75:
+ _abort();
+ throw "Reached an unreachable!";
+ case 76:
+ _abort();
+ throw "Reached an unreachable!";
+ case 77:
+ var $262=$15;
+ var $_sum6=((($14)+(16))|0);
+ var $263=(($mem+$_sum6)|0);
+ var $264=$263;
+ var $265=HEAP32[(($264)>>2)];
+ var $_sum78=$14|4;
+ var $266=(($mem+$_sum78)|0);
+ var $267=$266;
+ var $268=HEAP32[(($267)>>2)];
+ var $269=($268|0)==($262|0);
+ if($269){label=83;break;}else{label=78;break;}
+ case 78:
+ var $271=(($mem+$14)|0);
+ var $272=$271;
+ var $273=HEAP32[(($272)>>2)];
+ var $274=$273;
+ var $275=HEAP32[((56)>>2)];
+ var $276=($274>>>0)<($275>>>0);
+ if($276){label=82;break;}else{label=79;break;}
+ case 79:
+ var $278=(($273+12)|0);
+ var $279=HEAP32[(($278)>>2)];
+ var $280=($279|0)==($262|0);
+ if($280){label=80;break;}else{label=82;break;}
+ case 80:
+ var $282=(($268+8)|0);
+ var $283=HEAP32[(($282)>>2)];
+ var $284=($283|0)==($262|0);
+ if($284){label=81;break;}else{label=82;break;}
+ case 81:
+ HEAP32[(($278)>>2)]=$268;
+ HEAP32[(($282)>>2)]=$273;
+ var $R7_1=$268;label=90;break;
+ case 82:
+ _abort();
+ throw "Reached an unreachable!";
+ case 83:
+ var $_sum10=((($14)+(12))|0);
+ var $287=(($mem+$_sum10)|0);
+ var $288=$287;
+ var $289=HEAP32[(($288)>>2)];
+ var $290=($289|0)==0;
+ if($290){label=84;break;}else{var $R7_0=$289;var $RP9_0=$288;label=85;break;}
+ case 84:
+ var $_sum9=((($14)+(8))|0);
+ var $292=(($mem+$_sum9)|0);
+ var $293=$292;
+ var $294=HEAP32[(($293)>>2)];
+ var $295=($294|0)==0;
+ if($295){var $R7_1=0;label=90;break;}else{var $R7_0=$294;var $RP9_0=$293;label=85;break;}
+ case 85:
+ var $RP9_0;
+ var $R7_0;
+ var $296=(($R7_0+20)|0);
+ var $297=HEAP32[(($296)>>2)];
+ var $298=($297|0)==0;
+ if($298){label=86;break;}else{var $R7_0=$297;var $RP9_0=$296;label=85;break;}
+ case 86:
+ var $300=(($R7_0+16)|0);
+ var $301=HEAP32[(($300)>>2)];
+ var $302=($301|0)==0;
+ if($302){label=87;break;}else{var $R7_0=$301;var $RP9_0=$300;label=85;break;}
+ case 87:
+ var $304=$RP9_0;
+ var $305=HEAP32[((56)>>2)];
+ var $306=($304>>>0)<($305>>>0);
+ if($306){label=89;break;}else{label=88;break;}
+ case 88:
+ HEAP32[(($RP9_0)>>2)]=0;
+ var $R7_1=$R7_0;label=90;break;
+ case 89:
+ _abort();
+ throw "Reached an unreachable!";
+ case 90:
+ var $R7_1;
+ var $310=($265|0)==0;
+ if($310){label=110;break;}else{label=91;break;}
+ case 91:
+ var $_sum21=((($14)+(20))|0);
+ var $312=(($mem+$_sum21)|0);
+ var $313=$312;
+ var $314=HEAP32[(($313)>>2)];
+ var $315=((344+($314<<2))|0);
+ var $316=HEAP32[(($315)>>2)];
+ var $317=($262|0)==($316|0);
+ if($317){label=92;break;}else{label=94;break;}
+ case 92:
+ HEAP32[(($315)>>2)]=$R7_1;
+ var $cond69=($R7_1|0)==0;
+ if($cond69){label=93;break;}else{label=100;break;}
+ case 93:
+ var $319=HEAP32[(($313)>>2)];
+ var $320=1<<$319;
+ var $321=$320^-1;
+ var $322=HEAP32[((44)>>2)];
+ var $323=$322&$321;
+ HEAP32[((44)>>2)]=$323;
+ label=110;break;
+ case 94:
+ var $325=$265;
+ var $326=HEAP32[((56)>>2)];
+ var $327=($325>>>0)<($326>>>0);
+ if($327){label=98;break;}else{label=95;break;}
+ case 95:
+ var $329=(($265+16)|0);
+ var $330=HEAP32[(($329)>>2)];
+ var $331=($330|0)==($262|0);
+ if($331){label=96;break;}else{label=97;break;}
+ case 96:
+ HEAP32[(($329)>>2)]=$R7_1;
+ label=99;break;
+ case 97:
+ var $334=(($265+20)|0);
+ HEAP32[(($334)>>2)]=$R7_1;
+ label=99;break;
+ case 98:
+ _abort();
+ throw "Reached an unreachable!";
+ case 99:
+ var $337=($R7_1|0)==0;
+ if($337){label=110;break;}else{label=100;break;}
+ case 100:
+ var $339=$R7_1;
+ var $340=HEAP32[((56)>>2)];
+ var $341=($339>>>0)<($340>>>0);
+ if($341){label=109;break;}else{label=101;break;}
+ case 101:
+ var $343=(($R7_1+24)|0);
+ HEAP32[(($343)>>2)]=$265;
+ var $_sum22=((($14)+(8))|0);
+ var $344=(($mem+$_sum22)|0);
+ var $345=$344;
+ var $346=HEAP32[(($345)>>2)];
+ var $347=($346|0)==0;
+ if($347){label=105;break;}else{label=102;break;}
+ case 102:
+ var $349=$346;
+ var $350=HEAP32[((56)>>2)];
+ var $351=($349>>>0)<($350>>>0);
+ if($351){label=104;break;}else{label=103;break;}
+ case 103:
+ var $353=(($R7_1+16)|0);
+ HEAP32[(($353)>>2)]=$346;
+ var $354=(($346+24)|0);
+ HEAP32[(($354)>>2)]=$R7_1;
+ label=105;break;
+ case 104:
+ _abort();
+ throw "Reached an unreachable!";
+ case 105:
+ var $_sum23=((($14)+(12))|0);
+ var $357=(($mem+$_sum23)|0);
+ var $358=$357;
+ var $359=HEAP32[(($358)>>2)];
+ var $360=($359|0)==0;
+ if($360){label=110;break;}else{label=106;break;}
+ case 106:
+ var $362=$359;
+ var $363=HEAP32[((56)>>2)];
+ var $364=($362>>>0)<($363>>>0);
+ if($364){label=108;break;}else{label=107;break;}
+ case 107:
+ var $366=(($R7_1+20)|0);
+ HEAP32[(($366)>>2)]=$359;
+ var $367=(($359+24)|0);
+ HEAP32[(($367)>>2)]=$R7_1;
+ label=110;break;
+ case 108:
+ _abort();
+ throw "Reached an unreachable!";
+ case 109:
+ _abort();
+ throw "Reached an unreachable!";
+ case 110:
+ var $371=$222|1;
+ var $372=(($p_0+4)|0);
+ HEAP32[(($372)>>2)]=$371;
+ var $373=(($189+$222)|0);
+ var $374=$373;
+ HEAP32[(($374)>>2)]=$222;
+ var $375=HEAP32[((60)>>2)];
+ var $376=($p_0|0)==($375|0);
+ if($376){label=111;break;}else{var $psize_1=$222;label=113;break;}
+ case 111:
+ HEAP32[((48)>>2)]=$222;
+ label=140;break;
+ case 112:
+ var $379=$194&-2;
+ HEAP32[(($193)>>2)]=$379;
+ var $380=$psize_0|1;
+ var $381=(($p_0+4)|0);
+ HEAP32[(($381)>>2)]=$380;
+ var $382=(($189+$psize_0)|0);
+ var $383=$382;
+ HEAP32[(($383)>>2)]=$psize_0;
+ var $psize_1=$psize_0;label=113;break;
+ case 113:
+ var $psize_1;
+ var $385=$psize_1>>>3;
+ var $386=($psize_1>>>0)<256;
+ if($386){label=114;break;}else{label=119;break;}
+ case 114:
+ var $388=$385<<1;
+ var $389=((80+($388<<2))|0);
+ var $390=$389;
+ var $391=HEAP32[((40)>>2)];
+ var $392=1<<$385;
+ var $393=$391&$392;
+ var $394=($393|0)==0;
+ if($394){label=115;break;}else{label=116;break;}
+ case 115:
+ var $396=$391|$392;
+ HEAP32[((40)>>2)]=$396;
+ var $_sum19_pre=((($388)+(2))|0);
+ var $_pre=((80+($_sum19_pre<<2))|0);
+ var $F16_0=$390;var $_pre_phi=$_pre;label=118;break;
+ case 116:
+ var $_sum20=((($388)+(2))|0);
+ var $398=((80+($_sum20<<2))|0);
+ var $399=HEAP32[(($398)>>2)];
+ var $400=$399;
+ var $401=HEAP32[((56)>>2)];
+ var $402=($400>>>0)<($401>>>0);
+ if($402){label=117;break;}else{var $F16_0=$399;var $_pre_phi=$398;label=118;break;}
+ case 117:
+ _abort();
+ throw "Reached an unreachable!";
+ case 118:
+ var $_pre_phi;
+ var $F16_0;
+ HEAP32[(($_pre_phi)>>2)]=$p_0;
+ var $405=(($F16_0+12)|0);
+ HEAP32[(($405)>>2)]=$p_0;
+ var $406=(($p_0+8)|0);
+ HEAP32[(($406)>>2)]=$F16_0;
+ var $407=(($p_0+12)|0);
+ HEAP32[(($407)>>2)]=$390;
+ label=140;break;
+ case 119:
+ var $409=$p_0;
+ var $410=$psize_1>>>8;
+ var $411=($410|0)==0;
+ if($411){var $I18_0=0;label=122;break;}else{label=120;break;}
+ case 120:
+ var $413=($psize_1>>>0)>16777215;
+ if($413){var $I18_0=31;label=122;break;}else{label=121;break;}
+ case 121:
+ var $415=((($410)+(1048320))|0);
+ var $416=$415>>>16;
+ var $417=$416&8;
+ var $418=$410<<$417;
+ var $419=((($418)+(520192))|0);
+ var $420=$419>>>16;
+ var $421=$420&4;
+ var $422=$421|$417;
+ var $423=$418<<$421;
+ var $424=((($423)+(245760))|0);
+ var $425=$424>>>16;
+ var $426=$425&2;
+ var $427=$422|$426;
+ var $428=(((14)-($427))|0);
+ var $429=$423<<$426;
+ var $430=$429>>>15;
+ var $431=((($428)+($430))|0);
+ var $432=$431<<1;
+ var $433=((($431)+(7))|0);
+ var $434=$psize_1>>>($433>>>0);
+ var $435=$434&1;
+ var $436=$435|$432;
+ var $I18_0=$436;label=122;break;
+ case 122:
+ var $I18_0;
+ var $438=((344+($I18_0<<2))|0);
+ var $439=(($p_0+28)|0);
+ var $I18_0_c=$I18_0;
+ HEAP32[(($439)>>2)]=$I18_0_c;
+ var $440=(($p_0+20)|0);
+ HEAP32[(($440)>>2)]=0;
+ var $441=(($p_0+16)|0);
+ HEAP32[(($441)>>2)]=0;
+ var $442=HEAP32[((44)>>2)];
+ var $443=1<<$I18_0;
+ var $444=$442&$443;
+ var $445=($444|0)==0;
+ if($445){label=123;break;}else{label=124;break;}
+ case 123:
+ var $447=$442|$443;
+ HEAP32[((44)>>2)]=$447;
+ HEAP32[(($438)>>2)]=$409;
+ var $448=(($p_0+24)|0);
+ var $_c=$438;
+ HEAP32[(($448)>>2)]=$_c;
+ var $449=(($p_0+12)|0);
+ HEAP32[(($449)>>2)]=$p_0;
+ var $450=(($p_0+8)|0);
+ HEAP32[(($450)>>2)]=$p_0;
+ label=136;break;
+ case 124:
+ var $452=HEAP32[(($438)>>2)];
+ var $453=($I18_0|0)==31;
+ if($453){var $458=0;label=126;break;}else{label=125;break;}
+ case 125:
+ var $455=$I18_0>>>1;
+ var $456=(((25)-($455))|0);
+ var $458=$456;label=126;break;
+ case 126:
+ var $458;
+ var $459=(($452+4)|0);
+ var $460=HEAP32[(($459)>>2)];
+ var $461=$460&-8;
+ var $462=($461|0)==($psize_1|0);
+ if($462){var $T_0_lcssa=$452;label=133;break;}else{label=127;break;}
+ case 127:
+ var $463=$psize_1<<$458;
+ var $T_072=$452;var $K19_073=$463;label=129;break;
+ case 128:
+ var $465=$K19_073<<1;
+ var $466=(($473+4)|0);
+ var $467=HEAP32[(($466)>>2)];
+ var $468=$467&-8;
+ var $469=($468|0)==($psize_1|0);
+ if($469){var $T_0_lcssa=$473;label=133;break;}else{var $T_072=$473;var $K19_073=$465;label=129;break;}
+ case 129:
+ var $K19_073;
+ var $T_072;
+ var $471=$K19_073>>>31;
+ var $472=(($T_072+16+($471<<2))|0);
+ var $473=HEAP32[(($472)>>2)];
+ var $474=($473|0)==0;
+ if($474){label=130;break;}else{label=128;break;}
+ case 130:
+ var $476=$472;
+ var $477=HEAP32[((56)>>2)];
+ var $478=($476>>>0)<($477>>>0);
+ if($478){label=132;break;}else{label=131;break;}
+ case 131:
+ HEAP32[(($472)>>2)]=$409;
+ var $480=(($p_0+24)|0);
+ var $T_0_c16=$T_072;
+ HEAP32[(($480)>>2)]=$T_0_c16;
+ var $481=(($p_0+12)|0);
+ HEAP32[(($481)>>2)]=$p_0;
+ var $482=(($p_0+8)|0);
+ HEAP32[(($482)>>2)]=$p_0;
+ label=136;break;
+ case 132:
+ _abort();
+ throw "Reached an unreachable!";
+ case 133:
+ var $T_0_lcssa;
+ var $484=(($T_0_lcssa+8)|0);
+ var $485=HEAP32[(($484)>>2)];
+ var $486=$T_0_lcssa;
+ var $487=HEAP32[((56)>>2)];
+ var $488=($486>>>0)>=($487>>>0);
+ var $489=$485;
+ var $490=($489>>>0)>=($487>>>0);
+ var $or_cond=$488&$490;
+ if($or_cond){label=134;break;}else{label=135;break;}
+ case 134:
+ var $492=(($485+12)|0);
+ HEAP32[(($492)>>2)]=$409;
+ HEAP32[(($484)>>2)]=$409;
+ var $493=(($p_0+8)|0);
+ var $_c15=$485;
+ HEAP32[(($493)>>2)]=$_c15;
+ var $494=(($p_0+12)|0);
+ var $T_0_c=$T_0_lcssa;
+ HEAP32[(($494)>>2)]=$T_0_c;
+ var $495=(($p_0+24)|0);
+ HEAP32[(($495)>>2)]=0;
+ label=136;break;
+ case 135:
+ _abort();
+ throw "Reached an unreachable!";
+ case 136:
+ var $497=HEAP32[((72)>>2)];
+ var $498=((($497)-(1))|0);
+ HEAP32[((72)>>2)]=$498;
+ var $499=($498|0)==0;
+ if($499){var $sp_0_in_i=496;label=137;break;}else{label=140;break;}
+ case 137:
+ var $sp_0_in_i;
+ var $sp_0_i=HEAP32[(($sp_0_in_i)>>2)];
+ var $500=($sp_0_i|0)==0;
+ var $501=(($sp_0_i+8)|0);
+ if($500){label=138;break;}else{var $sp_0_in_i=$501;label=137;break;}
+ case 138:
+ HEAP32[((72)>>2)]=-1;
+ label=140;break;
+ case 139:
+ _abort();
+ throw "Reached an unreachable!";
+ case 140:
+ return;
+ default: assert(0, "bad label: " + label);
+ }
+
+}
+Module["_free"] = _free;
+
+
+// EMSCRIPTEN_END_FUNCS
+// EMSCRIPTEN_END_FUNCS
+
+// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included
+var i64Math = null;
+
+// === Auto-generated postamble setup entry stuff ===
+
+if (memoryInitializer) {
+ function applyData(data) {
+ HEAPU8.set(data, STATIC_BASE);
+ }
+ if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
+ applyData(Module['readBinary'](memoryInitializer));
+ } else {
+ addRunDependency('memory initializer');
+ Browser.asyncLoad(memoryInitializer, function(data) {
+ applyData(data);
+ removeRunDependency('memory initializer');
+ }, function(data) {
+ throw 'could not load memory initializer ' + memoryInitializer;
+ });
+ }
+}
+
+function ExitStatus(status) {
+ this.name = "ExitStatus";
+ this.message = "Program terminated with exit(" + status + ")";
+ this.status = status;
+};
+ExitStatus.prototype = new Error();
+ExitStatus.prototype.constructor = ExitStatus;
+
+var initialStackTop;
+var preloadStartTime = null;
+var calledMain = false;
+
+dependenciesFulfilled = function runCaller() {
+ // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
+ if (!Module['calledRun'] && shouldRunNow) run();
+ if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled
+}
+
+Module['callMain'] = Module.callMain = function callMain(args) {
+ assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');
+ assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');
+
+ args = args || [];
+
+ if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
+ Module.printErr('preload time: ' + (Date.now() - preloadStartTime) + ' ms');
+ }
+
+ ensureInitRuntime();
+
+ var argc = args.length+1;
+ function pad() {
+ for (var i = 0; i < 4-1; i++) {
+ argv.push(0);
+ }
+ }
+ var argv = [allocate(intArrayFromString("/bin/this.program"), 'i8', ALLOC_NORMAL) ];
+ pad();
+ for (var i = 0; i < argc-1; i = i + 1) {
+ argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));
+ pad();
+ }
+ argv.push(0);
+ argv = allocate(argv, 'i32', ALLOC_NORMAL);
+
+ initialStackTop = STACKTOP;
+
+ try {
+
+ var ret = Module['_main'](argc, argv, 0);
+
+
+ // if we're not running an evented main loop, it's time to exit
+ if (!Module['noExitRuntime']) {
+ exit(ret);
+ }
+ }
+ catch(e) {
+ if (e instanceof ExitStatus) {
+ // exit() throws this once it's done to make sure execution
+ // has been stopped completely
+ return;
+ } else if (e == 'SimulateInfiniteLoop') {
+ // running an evented main loop, don't immediately exit
+ Module['noExitRuntime'] = true;
+ return;
+ } else {
+ if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
+ throw e;
+ }
+ } finally {
+ calledMain = true;
+ }
+}
+
+
+
+
+function run(args) {
+ args = args || Module['arguments'];
+
+ if (preloadStartTime === null) preloadStartTime = Date.now();
+
+ if (runDependencies > 0) {
+ Module.printErr('run() called, but dependencies remain, so not running');
+ return;
+ }
+
+ preRun();
+
+ if (runDependencies > 0) return; // a preRun added a dependency, run will be called later
+ if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame
+
+ function doRun() {
+ if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening
+ Module['calledRun'] = true;
+
+ ensureInitRuntime();
+
+ preMain();
+
+ if (Module['_main'] && shouldRunNow) {
+ Module['callMain'](args);
+ }
+
+ postRun();
+ }
+
+ if (Module['setStatus']) {
+ Module['setStatus']('Running...');
+ setTimeout(function() {
+ setTimeout(function() {
+ Module['setStatus']('');
+ }, 1);
+ if (!ABORT) doRun();
+ }, 1);
+ } else {
+ doRun();
+ }
+}
+Module['run'] = Module.run = run;
+
+function exit(status) {
+ ABORT = true;
+ EXITSTATUS = status;
+ STACKTOP = initialStackTop;
+
+ // exit the runtime
+ exitRuntime();
+
+ // TODO We should handle this differently based on environment.
+ // In the browser, the best we can do is throw an exception
+ // to halt execution, but in node we could process.exit and
+ // I'd imagine SM shell would have something equivalent.
+ // This would let us set a proper exit status (which
+ // would be great for checking test exit statuses).
+ // https://github.com/kripken/emscripten/issues/1371
+
+ // throw an exception to halt the current execution
+ throw new ExitStatus(status);
+}
+Module['exit'] = Module.exit = exit;
+
+function abort(text) {
+ if (text) {
+ Module.print(text);
+ Module.printErr(text);
+ }
+
+ ABORT = true;
+ EXITSTATUS = 1;
+
+ throw 'abort() at ' + stackTrace();
+}
+Module['abort'] = Module.abort = abort;
+
+// {{PRE_RUN_ADDITIONS}}
+
+if (Module['preInit']) {
+ if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];
+ while (Module['preInit'].length > 0) {
+ Module['preInit'].pop()();
+ }
+}
+
+// shouldRunNow refers to calling main(), not run().
+var shouldRunNow = true;
+if (Module['noInitialRun']) {
+ shouldRunNow = false;
+}
+
+run();
+
+// {{POST_RUN_ADDITIONS}}
+
+
+
+
+
+
+// {{MODULE_ADDITIONS}}
diff --git a/public/mstsc/keymap.html b/public/mstsc/keymap.html
new file mode 100644
index 00000000..02ccc8da
--- /dev/null
+++ b/public/mstsc/keymap.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/scripts/amt-wsman-0.2.0-min.js b/public/scripts/amt-wsman-0.2.0-min.js
index 293387e7..389c6296 100644
--- a/public/scripts/amt-wsman-0.2.0-min.js
+++ b/public/scripts/amt-wsman-0.2.0-min.js
@@ -1 +1 @@
-var WsmanStackCreateService=function(e,s,r,a,o,t){var p={};function l(e){if(!e)return"";var s=" ";for(var r in e)e.hasOwnProperty(r)&&0===r.indexOf("@")&&(s+=r.substring(1)+'="'+e[r]+'" ');return s}function w(e){if(!e)return"";if("string"==typeof e)return e;if(e.InstanceID)return''+e.InstanceID+" ";var s="";for(var r in e)if(e.hasOwnProperty(r)){if(s+='',e[r].ReferenceParameters){s+="",s+=""+e[r].Address+" "+e[r].ReferenceParameters.ResourceURI+" ";var a=e[r].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(a))for(var o=0;o"+a[o].Value+" ";else s+=""+a.Value+" ";s+=" "}else s+=e[r];s+=""}return s+=""}return p.NextMessageId=1,p.Address="/wsman",p.comm=CreateWsmanComm(e,s,r,a,o,t),p.PerformAjax=function(e,o,s,r,a){null==a&&(a=""),p.comm.PerformAjax('"+e,function(e,s,r){if(200==s){var a=p.ParseWsman(e);a&&null!=a?o(p,a.Header.ResourceURI,a,200,r):o(p,null,{Header:{HttpError:s}},601,r)}else o(p,null,{Header:{HttpError:s}},s,r)},s,r)},p.CancelAllQueries=function(e){p.comm.CancelAllQueries(e)},p.GetNameFromUrl=function(e){var s=e.lastIndexOf("/");return-1==s?e:e.substring(s+1)},p.ExecSubscribe=function(e,s,r,a,o,t,n,l,d,c){var m="",i="";null!=d&&null!=c&&(m="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken "+d+' '+c+" ",i=' '),l=null!=l&&null!=l?""+l+" ":"";var u="http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe "+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous "+w(n)+m+''+r+" "+i+"PT0.000000S ";p.PerformAjax(u+" ",a,o,t,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:m="http://x.com"')},p.ExecUnSubscribe=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous "+w(o)+" ";p.PerformAjax(t+"",s,r,a,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"')},p.ExecPut=function(e,s,r,a,o,t){var n="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60.000S "+w(t)+""+function(e,s){if(!e||null==s)return"";var r=p.GetNameFromUrl(e),a="';for(var o in s)if(s.hasOwnProperty(o)&&0!==o.indexOf("__")&&0!==o.indexOf("@")&&void 0!==s[o]&&null!==s[o]&&"function"!=typeof s[o])if("object"==typeof s[o]&&s[o].ReferenceParameters){a+=""+s[o].Address+" "+s[o].ReferenceParameters.ResourceURI+" ";var t=s[o].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(t))for(var n=0;n"+t[n].Value+"";else a+=""+t.Value+" ";a+=" "}else if(Array.isArray(s[o]))for(n=0;n"+s[o][n].toString()+" ";else a+=""+s[o].toString()+" ";return a+=""}(e,s);p.PerformAjax(n+"",r,a,o)},p.ExecCreate=function(e,s,r,a,o,t){var n=p.GetNameFromUrl(e),l="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S "+w(t)+"';for(var d in s)l+=""+s[d]+" ";p.PerformAjax(l+" ",r,a,o)},p.ExecCreateXml=function(e,s,r,a,o){var t=p.GetNameFromUrl(e);p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Create"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60.000S '+s+" ",r,a,o)},p.ExecDelete=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S "+w(s)+" ";p.PerformAjax(t,r,a,o)},p.ExecGet=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S ",s,r,a)},p.ExecMethod=function(e,s,r,a,o,t,n){var l="";for(var d in r)if(null!=r[d])if(Array.isArray(r[d]))for(var c in r[d])l+=""+r[d][c]+" ";else l+=""+r[d]+" ";p.ExecMethodXml(e,s,l,a,o,t,n)},p.ExecMethodXml=function(e,s,r,a,o,t,n){p.PerformAjax(e+"/"+s+""+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S "+w(n)+"'+r+" ",a,o,t)},p.ExecEnum=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate"+p.Address+" "+e+" "+p.NextMessageId+++' http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S ',s,r,a)},p.ExecPull=function(e,s,r,a,o){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull"+p.Address+" "+e+" "+p.NextMessageId+++' http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S '+s+" 999 99999 ",r,a,o)},p.ParseWsman=function(s){try{s.childNodes||(s=function(e){{if(window.DOMParser)return(new DOMParser).parseFromString(e,"text/xml");var s=new ActiveXObject("Microsoft.XMLDOM");return s.async=!1,s.loadXML(e),s}}(s));var e,r={Header:{}},a=s.getElementsByTagName("Header")[0];if(!(a=a||s.getElementsByTagName("a:Header")[0]))return null;for(var o=0;o'+e.InstanceID+" ";var s="";for(var r in e)if(e.hasOwnProperty(r)){if(s+='',e[r].ReferenceParameters){s+="",s+=""+e[r].Address+" "+e[r].ReferenceParameters.ResourceURI+" ";var a=e[r].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(a))for(var o=0;o"+a[o].Value+" ";else s+=""+a.Value+" ";s+=" "}else s+=e[r];s+=""}return s+=""}return p.NextMessageId=1,p.Address="/wsman",p.comm=CreateWsmanComm(e,s,r,a,o,t),p.PerformAjax=function(e,o,s,r,a){null==a&&(a=""),p.comm.PerformAjax('"+e,function(e,s,r){if(200==s){var a=p.ParseWsman(e);a&&null!=a?o(p,a.Header.ResourceURI,a,200,r):o(p,null,{Header:{HttpError:s}},601,r)}else o(p,null,{Header:{HttpError:s}},s,r)},s,r)},p.CancelAllQueries=function(e){p.comm.CancelAllQueries(e)},p.GetNameFromUrl=function(e){var s=e.lastIndexOf("/");return-1==s?e:e.substring(s+1)},p.ExecSubscribe=function(e,s,r,a,o,t,n,l,c,d){var m="",i="";null!=c&&null!=d&&(m="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken "+c+' '+d+" ",i=' '),l=null!=l&&null!=l?""+l+" ":"";var u="http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe "+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous "+w(n)+m+''+r+" "+i+"PT0.000000S ";p.PerformAjax(u+" ",a,o,t,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:m="http://x.com"')},p.ExecUnSubscribe=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous "+w(o)+" ";p.PerformAjax(t+"",s,r,a,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"')},p.ExecPut=function(e,s,r,a,o,t){var n="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60.000S "+w(t)+""+function(e,s){if(!e||null==s)return"";var r=p.GetNameFromUrl(e),a="';for(var o in s)if(s.hasOwnProperty(o)&&0!==o.indexOf("__")&&0!==o.indexOf("@")&&void 0!==s[o]&&null!==s[o]&&"function"!=typeof s[o])if("object"==typeof s[o]&&s[o].ReferenceParameters){a+=""+s[o].Address+" "+s[o].ReferenceParameters.ResourceURI+" ";var t=s[o].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(t))for(var n=0;n"+t[n].Value+"";else a+=""+t.Value+" ";a+=" "}else if(Array.isArray(s[o]))for(n=0;n"+s[o][n].toString()+" ";else a+=""+s[o].toString()+" ";return a+=""}(e,s);p.PerformAjax(n+"",r,a,o)},p.ExecCreate=function(e,s,r,a,o,t){var n=p.GetNameFromUrl(e),l="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S "+w(t)+"';for(var c in s)l+=""+s[c]+" ";p.PerformAjax(l+" ",r,a,o)},p.ExecCreateXml=function(e,s,r,a,o){var t=p.GetNameFromUrl(e);p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Create"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60.000S '+s+" ",r,a,o)},p.ExecDelete=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S "+w(s)+" ";p.PerformAjax(t,r,a,o)},p.ExecGet=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get"+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S ",s,r,a)},p.ExecMethod=function(e,s,r,a,o,t,n){var l="";for(var c in r)if(null!=r[c])if(Array.isArray(r[c]))for(var d in r[c])l+=""+r[c][d]+" ";else l+=""+r[c]+" ";p.ExecMethodXml(e,s,l,a,o,t,n)},p.ExecMethodXml=function(e,s,r,a,o,t,n){p.PerformAjax(e+"/"+s+""+p.Address+" "+e+" "+p.NextMessageId+++" http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S "+w(n)+"
'+r+" ",a,o,t)},p.ExecEnum=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate"+p.Address+" "+e+" "+p.NextMessageId+++' http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S ',s,r,a)},p.ExecPull=function(e,s,r,a,o){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull"+p.Address+" "+e+" "+p.NextMessageId+++' http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous PT60S '+s+" 999 99999 ",r,a,o)},p.ParseWsman=function(s){try{s.childNodes||(s=function(e){{if(window.DOMParser)return(new DOMParser).parseFromString(e,"text/xml");var s=new ActiveXObject("Microsoft.XMLDOM");return s.async=!1,s.loadXML(e),s}}(s));var e,r={Header:{}},a=s.getElementsByTagName("Header")[0];if(!(a=a||s.getElementsByTagName("a:Header")[0]))return null;for(var o=0;o27->1193",
- "default.handlebars->27->1195"
+ "default.handlebars->27->1195",
+ "default.handlebars->27->1197"
]
},
{
@@ -174,7 +174,7 @@
"ru": " Может быть использована подсказка пароля, но не рекоммендуется.",
"zh-chs": " 可以使用密碼提示,但不建議使用。",
"xloc": [
- "default.handlebars->27->1119"
+ "default.handlebars->27->1121"
]
},
{
@@ -191,8 +191,8 @@
"ru": " Для добавления в группу устройств, пользователь должен зайти на сервер хотя бы один раз.",
"zh-chs": " 用戶需要先登錄到該服務器一次,然後才能將其添加到設備組。",
"xloc": [
- "default.handlebars->27->1268",
- "default.handlebars->27->1581"
+ "default.handlebars->27->1270",
+ "default.handlebars->27->1583"
]
},
{
@@ -377,7 +377,7 @@
"ru": "* Оставьте пустым для установления случайного пароля каждому устройству.",
"zh-chs": "*保留空白以為每個設備分配一個隨機密碼。",
"xloc": [
- "default.handlebars->27->1240"
+ "default.handlebars->27->1242"
]
},
{
@@ -411,7 +411,7 @@
"zh-chs": ",",
"xloc": [
"default-mobile.handlebars->9->435",
- "default.handlebars->27->1334"
+ "default.handlebars->27->1336"
]
},
{
@@ -446,7 +446,7 @@
"ru": ", MQTT онлайн",
"zh-chs": ",MQTT在線",
"xloc": [
- "default.handlebars->27->862"
+ "default.handlebars->27->864"
]
},
{
@@ -463,7 +463,7 @@
"ru": ", Soft-KVM",
"zh-chs": ",軟KVM",
"xloc": [
- "default.handlebars->27->708"
+ "default.handlebars->27->710"
]
},
{
@@ -482,9 +482,9 @@
"xloc": [
"default-mobile.handlebars->9->277",
"default-mobile.handlebars->9->286",
- "default.handlebars->27->715",
- "default.handlebars->27->746",
- "default.handlebars->27->758",
+ "default.handlebars->27->717",
+ "default.handlebars->27->748",
+ "default.handlebars->27->760",
"xterm.handlebars->9->6"
]
},
@@ -510,7 +510,7 @@
"en": ", for this link to work you must download MeshCentral Router run it and click the install button.",
"nl": ", om deze link te laten werken, moet u MeshCentral Router downloaden, het uitvoeren en op de installatieknop klikken.",
"xloc": [
- "default.handlebars->27->672"
+ "default.handlebars->27->674"
]
},
{
@@ -568,7 +568,7 @@
"en": ", {0} watching",
"nl": ", {0} kijken",
"xloc": [
- "default.handlebars->27->709"
+ "default.handlebars->27->711"
]
},
{
@@ -625,9 +625,9 @@
"xloc": [
"default-mobile.handlebars->9->108",
"default-mobile.handlebars->9->288",
- "default.handlebars->27->1375",
- "default.handlebars->27->1729",
- "default.handlebars->27->760"
+ "default.handlebars->27->1377",
+ "default.handlebars->27->1731",
+ "default.handlebars->27->762"
]
},
{
@@ -676,7 +676,7 @@
"ru": "1 активная сессия",
"zh-chs": "1個活動會話",
"xloc": [
- "default.handlebars->27->1647"
+ "default.handlebars->27->1649"
]
},
{
@@ -695,14 +695,14 @@
"xloc": [
"default-mobile.handlebars->9->118",
"default-mobile.handlebars->9->439",
- "default.handlebars->27->1394"
+ "default.handlebars->27->1396"
]
},
{
"en": "1 connection",
"nl": "1 verbinding",
"xloc": [
- "default.handlebars->27->711"
+ "default.handlebars->27->713"
]
},
{
@@ -738,7 +738,7 @@
"ru": "1 группа",
"zh-chs": "1組",
"xloc": [
- "default.handlebars->27->1612"
+ "default.handlebars->27->1614"
]
},
{
@@ -810,7 +810,7 @@
"ru": "Еще 1 пользователь не показан, используйте поиск чтобы найти пользователей...",
"zh-chs": "未再顯示1個用戶,請使用搜索框查找用戶...",
"xloc": [
- "default.handlebars->27->1429"
+ "default.handlebars->27->1431"
]
},
{
@@ -865,7 +865,7 @@
"default-mobile.handlebars->9->162",
"default-mobile.handlebars->9->165",
"default-mobile.handlebars->9->168",
- "default.handlebars->27->1433",
+ "default.handlebars->27->1435",
"default.handlebars->27->212",
"default.handlebars->27->215",
"default.handlebars->27->218",
@@ -1137,8 +1137,8 @@
"ru": "двухфакторная аутентификация включена",
"zh-chs": "啟用第二因素身份驗證",
"xloc": [
- "default.handlebars->27->1446",
- "default.handlebars->27->1634"
+ "default.handlebars->27->1448",
+ "default.handlebars->27->1636"
]
},
{
@@ -1503,7 +1503,7 @@
"ru": "7-дневная статистика работы",
"zh-chs": "7天電源狀態",
"xloc": [
- "default.handlebars->27->641"
+ "default.handlebars->27->643"
]
},
{
@@ -1850,7 +1850,7 @@
"ru": "Отказано в доступе",
"zh-chs": "拒絕訪問",
"xloc": [
- "default.handlebars->27->863"
+ "default.handlebars->27->865"
]
},
{
@@ -1885,7 +1885,7 @@
"ru": "Доступ к файлам сервера",
"zh-chs": "訪問服務器文件",
"xloc": [
- "default.handlebars->27->1587"
+ "default.handlebars->27->1589"
]
},
{
@@ -1960,8 +1960,8 @@
"default-mobile.handlebars->9->93",
"default-mobile.handlebars->9->95",
"default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->p2AccountSecurity->1->0",
- "default.handlebars->27->1128",
"default.handlebars->27->1130",
+ "default.handlebars->27->1132",
"default.handlebars->27->464",
"default.handlebars->27->466"
]
@@ -2009,8 +2009,8 @@
"ru": "Аккаунт заблокирован",
"zh-chs": "帐户已被锁定",
"xloc": [
- "default.handlebars->27->1448",
- "default.handlebars->27->1584"
+ "default.handlebars->27->1450",
+ "default.handlebars->27->1586"
]
},
{
@@ -2098,7 +2098,7 @@
"ru": "Действиe",
"zh-chs": "行動",
"xloc": [
- "default.handlebars->27->868",
+ "default.handlebars->27->870",
"default.handlebars->container->column_l->p42->p42tbl->1->0->8"
]
},
@@ -2116,8 +2116,8 @@
"ru": "Файл действий",
"zh-chs": "動作文件",
"xloc": [
- "default.handlebars->27->684",
- "default.handlebars->27->686"
+ "default.handlebars->27->686",
+ "default.handlebars->27->688"
]
},
{
@@ -2196,7 +2196,7 @@
"default-mobile.handlebars->9->344",
"default.handlebars->27->488",
"default.handlebars->27->490",
- "default.handlebars->27->826"
+ "default.handlebars->27->828"
]
},
{
@@ -2213,8 +2213,8 @@
"ru": "Активация",
"zh-chs": "激活",
"xloc": [
- "default.handlebars->27->1206",
"default.handlebars->27->1208",
+ "default.handlebars->27->1210",
"default.handlebars->27->238",
"default.handlebars->27->240"
]
@@ -2250,7 +2250,7 @@
"ru": "Добавить агент",
"zh-chs": "添加代理",
"xloc": [
- "default.handlebars->27->1210",
+ "default.handlebars->27->1212",
"default.handlebars->27->242"
]
},
@@ -2285,8 +2285,8 @@
"ru": "Добавить устройство",
"zh-chs": "添加設備",
"xloc": [
- "default.handlebars->27->1561",
- "default.handlebars->27->1680"
+ "default.handlebars->27->1563",
+ "default.handlebars->27->1682"
]
},
{
@@ -2303,7 +2303,7 @@
"ru": "Добавить событие к устройству",
"zh-chs": "添加設備事件",
"xloc": [
- "default.handlebars->27->622"
+ "default.handlebars->27->624"
]
},
{
@@ -2320,9 +2320,9 @@
"ru": "Добавить группу устройств",
"zh-chs": "添加設備組",
"xloc": [
- "default.handlebars->27->1300",
- "default.handlebars->27->1555",
- "default.handlebars->27->1668",
+ "default.handlebars->27->1302",
+ "default.handlebars->27->1557",
+ "default.handlebars->27->1670",
"default.handlebars->27->200"
]
},
@@ -2337,7 +2337,7 @@
"nl": "Machtigingen voor apparaatgroep toevoegen",
"zh-chs": "添加设备组权限",
"xloc": [
- "default.handlebars->27->1297"
+ "default.handlebars->27->1299"
]
},
{
@@ -2353,8 +2353,8 @@
"ru": "Добавить разрешения для устройства",
"zh-chs": "添加设备权限",
"xloc": [
- "default.handlebars->27->1302",
- "default.handlebars->27->1304"
+ "default.handlebars->27->1304",
+ "default.handlebars->27->1306"
]
},
{
@@ -2439,7 +2439,7 @@
"ru": "Добавить участие",
"zh-chs": "添加會員",
"xloc": [
- "default.handlebars->27->1698"
+ "default.handlebars->27->1700"
]
},
{
@@ -2477,8 +2477,8 @@
"default.handlebars->27->135",
"default.handlebars->27->138",
"default.handlebars->27->139",
- "default.handlebars->27->896",
- "default.handlebars->27->897"
+ "default.handlebars->27->898",
+ "default.handlebars->27->899"
]
},
{
@@ -2496,7 +2496,7 @@
"zh-chs": "添加用戶",
"xloc": [
"default-mobile.handlebars->9->384",
- "default.handlebars->27->579"
+ "default.handlebars->27->581"
]
},
{
@@ -2512,7 +2512,7 @@
"ru": "Добавить разрешения для пользовательских устройств",
"zh-chs": "添加用户设备权限",
"xloc": [
- "default.handlebars->27->1307"
+ "default.handlebars->27->1309"
]
},
{
@@ -2529,10 +2529,10 @@
"ru": "Добавить группу пользователей",
"zh-chs": "添加用戶組",
"xloc": [
- "default.handlebars->27->1200",
- "default.handlebars->27->1299",
- "default.handlebars->27->1674",
- "default.handlebars->27->580"
+ "default.handlebars->27->1202",
+ "default.handlebars->27->1301",
+ "default.handlebars->27->1676",
+ "default.handlebars->27->582"
]
},
{
@@ -2546,7 +2546,7 @@
"nl": "Gebruikersmachtigingen voor apparaatgroep toevoegen",
"zh-chs": "添加用户组设备权限",
"xloc": [
- "default.handlebars->27->1309"
+ "default.handlebars->27->1311"
]
},
{
@@ -2591,8 +2591,8 @@
"ru": "Добавить пользователей",
"zh-chs": "添加用戶",
"xloc": [
- "default.handlebars->27->1199",
- "default.handlebars->27->1550"
+ "default.handlebars->27->1201",
+ "default.handlebars->27->1552"
]
},
{
@@ -2609,7 +2609,7 @@
"ru": "Добавить пользователей в группу устройств",
"zh-chs": "將用戶添加到設備組",
"xloc": [
- "default.handlebars->27->1296"
+ "default.handlebars->27->1298"
]
},
{
@@ -2626,7 +2626,7 @@
"ru": "Добавить пользователей в группу",
"zh-chs": "將用戶添加到用戶組",
"xloc": [
- "default.handlebars->27->1583"
+ "default.handlebars->27->1585"
]
},
{
@@ -2677,7 +2677,7 @@
"ru": "Добавить новый Intel® AMT компьютер, находящийся в интернете.",
"zh-chs": "添加位於互聯網上的新英特爾®AMT計算機。",
"xloc": [
- "default.handlebars->27->1201",
+ "default.handlebars->27->1203",
"default.handlebars->27->231"
]
},
@@ -2695,7 +2695,7 @@
"ru": "Добавить новый Intel® AMT компьютер, находящийся в локальной сети.",
"zh-chs": "添加位於本地網絡上的新英特爾®AMT計算機。",
"xloc": [
- "default.handlebars->27->1203",
+ "default.handlebars->27->1205",
"default.handlebars->27->233"
]
},
@@ -2727,7 +2727,7 @@
"nl": "Voeg een nieuwe computer toe aan deze apparaatgroep door de mesh-agent te installeren.",
"zh-chs": "通过安装网状代理,将新计算机添加到该设备组。",
"xloc": [
- "default.handlebars->27->1209",
+ "default.handlebars->27->1211",
"default.handlebars->27->241"
]
},
@@ -2780,7 +2780,7 @@
"zh-chs": "管理員控制模式(ACM)",
"xloc": [
"default-mobile.handlebars->9->346",
- "default.handlebars->27->828"
+ "default.handlebars->27->830"
]
},
{
@@ -2798,7 +2798,7 @@
"zh-chs": "管理員憑證",
"xloc": [
"default-mobile.handlebars->9->352",
- "default.handlebars->27->834"
+ "default.handlebars->27->836"
]
},
{
@@ -2833,7 +2833,7 @@
"ru": "Области администратора",
"zh-chs": "管理領域",
"xloc": [
- "default.handlebars->27->1616"
+ "default.handlebars->27->1618"
]
},
{
@@ -2868,7 +2868,7 @@
"ru": "Административные области",
"zh-chs": "行政領域",
"xloc": [
- "default.handlebars->27->1501"
+ "default.handlebars->27->1503"
]
},
{
@@ -2885,7 +2885,7 @@
"ru": "Администратор",
"zh-chs": "管理員",
"xloc": [
- "default.handlebars->27->1440"
+ "default.handlebars->27->1442"
]
},
{
@@ -2902,7 +2902,7 @@
"ru": "Африканский",
"zh-chs": "南非語",
"xloc": [
- "default.handlebars->27->899"
+ "default.handlebars->27->901"
]
},
{
@@ -2922,8 +2922,8 @@
"default-mobile.handlebars->9->192",
"default-mobile.handlebars->9->216",
"default-mobile.handlebars->9->232",
- "default.handlebars->27->1361",
- "default.handlebars->27->1369",
+ "default.handlebars->27->1363",
+ "default.handlebars->27->1371",
"default.handlebars->27->179",
"default.handlebars->27->385",
"default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->1"
@@ -2943,8 +2943,8 @@
"ru": "Агент + Intel AMT",
"zh-chs": "代理+英特爾AMT",
"xloc": [
- "default.handlebars->27->1363",
- "default.handlebars->27->1371"
+ "default.handlebars->27->1365",
+ "default.handlebars->27->1373"
]
},
{
@@ -2979,7 +2979,7 @@
"zh-chs": "代理控制台",
"xloc": [
"default-mobile.handlebars->9->419",
- "default.handlebars->27->1317"
+ "default.handlebars->27->1319"
]
},
{
@@ -2996,7 +2996,7 @@
"ru": "Счетчик ошибок агента",
"zh-chs": "座席錯誤計數器",
"xloc": [
- "default.handlebars->27->1739"
+ "default.handlebars->27->1741"
]
},
{
@@ -3065,7 +3065,7 @@
"ru": "Сессии агентов",
"zh-chs": "座席會議",
"xloc": [
- "default.handlebars->27->1755"
+ "default.handlebars->27->1757"
]
},
{
@@ -3100,7 +3100,7 @@
"ru": "Типы агента",
"zh-chs": "代理類型",
"xloc": [
- "default.handlebars->27->1367",
+ "default.handlebars->27->1369",
"default.handlebars->container->column_l->p21->3->1->meshOsChartDiv->1"
]
},
@@ -3119,8 +3119,8 @@
"zh-chs": "代理已連接",
"xloc": [
"default.handlebars->27->144",
- "default.handlebars->27->570",
- "default.handlebars->27->571"
+ "default.handlebars->27->572",
+ "default.handlebars->27->573"
]
},
{
@@ -3154,7 +3154,7 @@
"ru": "Агент оффлайн",
"zh-chs": "代理離線",
"xloc": [
- "default.handlebars->27->861"
+ "default.handlebars->27->863"
]
},
{
@@ -3171,7 +3171,7 @@
"ru": "Агент онлайн",
"zh-chs": "代理在線",
"xloc": [
- "default.handlebars->27->860"
+ "default.handlebars->27->862"
]
},
{
@@ -3188,7 +3188,7 @@
"ru": "Агенты",
"zh-chs": "代理商",
"xloc": [
- "default.handlebars->27->1768"
+ "default.handlebars->27->1770"
]
},
{
@@ -3205,7 +3205,7 @@
"ru": "Албанский",
"zh-chs": "阿爾巴尼亞語",
"xloc": [
- "default.handlebars->27->900"
+ "default.handlebars->27->902"
]
},
{
@@ -3255,9 +3255,9 @@
"ru": "Фокусирование всех",
"zh-chs": "全部聚焦",
"xloc": [
- "default.handlebars->27->716",
"default.handlebars->27->718",
- "default.handlebars->27->719"
+ "default.handlebars->27->720",
+ "default.handlebars->27->721"
]
},
{
@@ -3274,8 +3274,8 @@
"ru": "Разрешить пользователям управлять этой группой и устройствами этой группы.",
"zh-chs": "允許用戶管理此設備組和該組中的設備。",
"xloc": [
- "default.handlebars->27->1266",
- "default.handlebars->27->1580"
+ "default.handlebars->27->1268",
+ "default.handlebars->27->1582"
]
},
{
@@ -3291,7 +3291,7 @@
"ru": "Разрешить пользователям управлять этим устройством.",
"zh-chs": "允许用户管理此设备。",
"xloc": [
- "default.handlebars->27->1267"
+ "default.handlebars->27->1269"
]
},
{
@@ -3344,7 +3344,7 @@
"ru": "Поменять (F10 = ESC+0)",
"zh-chs": "備用(F10 = ESC + 0)",
"xloc": [
- "default.handlebars->27->751"
+ "default.handlebars->27->753"
]
},
{
@@ -3379,8 +3379,8 @@
"ru": "Всегда уведомлять",
"zh-chs": "始終通知",
"xloc": [
- "default.handlebars->27->1180",
- "default.handlebars->27->1625",
+ "default.handlebars->27->1182",
+ "default.handlebars->27->1627",
"default.handlebars->27->524"
]
},
@@ -3398,8 +3398,8 @@
"ru": "Всегда запрашивать",
"zh-chs": "總是提示",
"xloc": [
- "default.handlebars->27->1181",
- "default.handlebars->27->1626",
+ "default.handlebars->27->1183",
+ "default.handlebars->27->1628",
"default.handlebars->27->525"
]
},
@@ -3599,7 +3599,7 @@
"ru": "Арабский (Алжир)",
"zh-chs": "阿拉伯文(阿爾及利亞)",
"xloc": [
- "default.handlebars->27->902"
+ "default.handlebars->27->904"
]
},
{
@@ -3616,7 +3616,7 @@
"ru": "Арабский (Бахрейн)",
"zh-chs": "阿拉伯文(巴林)",
"xloc": [
- "default.handlebars->27->903"
+ "default.handlebars->27->905"
]
},
{
@@ -3633,7 +3633,7 @@
"ru": "Арабский (Египет)",
"zh-chs": "阿拉伯文(埃及)",
"xloc": [
- "default.handlebars->27->904"
+ "default.handlebars->27->906"
]
},
{
@@ -3650,7 +3650,7 @@
"ru": "Арабский (Ирак)",
"zh-chs": "阿拉伯文(伊拉克)",
"xloc": [
- "default.handlebars->27->905"
+ "default.handlebars->27->907"
]
},
{
@@ -3667,7 +3667,7 @@
"ru": "Арабский (Иордания)",
"zh-chs": "阿拉伯語(約旦)",
"xloc": [
- "default.handlebars->27->906"
+ "default.handlebars->27->908"
]
},
{
@@ -3684,7 +3684,7 @@
"ru": "Арабский (Кувейт)",
"zh-chs": "阿拉伯文(科威特)",
"xloc": [
- "default.handlebars->27->907"
+ "default.handlebars->27->909"
]
},
{
@@ -3701,7 +3701,7 @@
"ru": "Арабский (Ливан)",
"zh-chs": "阿拉伯語(黎巴嫩)",
"xloc": [
- "default.handlebars->27->908"
+ "default.handlebars->27->910"
]
},
{
@@ -3718,7 +3718,7 @@
"ru": "Арабский (Ливия)",
"zh-chs": "阿拉伯文(利比亞)",
"xloc": [
- "default.handlebars->27->909"
+ "default.handlebars->27->911"
]
},
{
@@ -3735,7 +3735,7 @@
"ru": "Арабский (Марокко)",
"zh-chs": "阿拉伯文(摩洛哥)",
"xloc": [
- "default.handlebars->27->910"
+ "default.handlebars->27->912"
]
},
{
@@ -3752,7 +3752,7 @@
"ru": "Арабский (Оман)",
"zh-chs": "阿拉伯文(阿曼)",
"xloc": [
- "default.handlebars->27->911"
+ "default.handlebars->27->913"
]
},
{
@@ -3769,7 +3769,7 @@
"ru": "Арабский (Катар)",
"zh-chs": "阿拉伯語(卡塔爾)",
"xloc": [
- "default.handlebars->27->912"
+ "default.handlebars->27->914"
]
},
{
@@ -3786,7 +3786,7 @@
"ru": "Арабский (Саудовская Аравия)",
"zh-chs": "阿拉伯語(沙特阿拉伯)",
"xloc": [
- "default.handlebars->27->913"
+ "default.handlebars->27->915"
]
},
{
@@ -3803,7 +3803,7 @@
"ru": "Арабский (стандартный)",
"zh-chs": "阿拉伯語(標準)",
"xloc": [
- "default.handlebars->27->901"
+ "default.handlebars->27->903"
]
},
{
@@ -3820,7 +3820,7 @@
"ru": "Арабский (Сирия)",
"zh-chs": "阿拉伯語(敘利亞)",
"xloc": [
- "default.handlebars->27->914"
+ "default.handlebars->27->916"
]
},
{
@@ -3837,7 +3837,7 @@
"ru": "Арабский (Тунис)",
"zh-chs": "阿拉伯文(突尼斯)",
"xloc": [
- "default.handlebars->27->915"
+ "default.handlebars->27->917"
]
},
{
@@ -3854,7 +3854,7 @@
"ru": "Арабский (О.А.Э.)",
"zh-chs": "阿拉伯文(阿聯酋)",
"xloc": [
- "default.handlebars->27->916"
+ "default.handlebars->27->918"
]
},
{
@@ -3871,7 +3871,7 @@
"ru": "Арабский (Йемен)",
"zh-chs": "阿拉伯文(也門)",
"xloc": [
- "default.handlebars->27->917"
+ "default.handlebars->27->919"
]
},
{
@@ -3888,7 +3888,7 @@
"ru": "Арагонский",
"zh-chs": "阿拉貢人",
"xloc": [
- "default.handlebars->27->918"
+ "default.handlebars->27->920"
]
},
{
@@ -3906,7 +3906,7 @@
"zh-chs": "建築",
"xloc": [
"default-mobile.handlebars->9->320",
- "default.handlebars->27->802"
+ "default.handlebars->27->804"
]
},
{
@@ -3941,7 +3941,7 @@
"zh-chs": "您確定要刪除組{0}嗎?刪除設備組還將刪除該組中有關設備的所有信息。",
"xloc": [
"default-mobile.handlebars->9->390",
- "default.handlebars->27->1244"
+ "default.handlebars->27->1246"
]
},
{
@@ -3958,7 +3958,7 @@
"ru": "Вы действительно хотите удалить устройство \\\"{0}\\\"?",
"zh-chs": "您確定要刪除節點{0}嗎?",
"xloc": [
- "default.handlebars->27->663"
+ "default.handlebars->27->665"
]
},
{
@@ -3975,7 +3975,7 @@
"ru": "Вы действительно хотите деинсталировать выбранного агента?",
"zh-chs": "您確定要卸載所選代理嗎?",
"xloc": [
- "default.handlebars->27->652"
+ "default.handlebars->27->654"
]
},
{
@@ -3992,7 +3992,7 @@
"ru": "Вы действительно хотите деинсталлировать выбранных {0} агентов?",
"zh-chs": "您確定要卸載所選的{0}代理嗎?",
"xloc": [
- "default.handlebars->27->651"
+ "default.handlebars->27->653"
]
},
{
@@ -4009,7 +4009,7 @@
"ru": "Вы уверенны, что {0} плагин: {1}",
"zh-chs": "您確定要{0}插件嗎:{1}",
"xloc": [
- "default.handlebars->27->1808"
+ "default.handlebars->27->1810"
]
},
{
@@ -4026,7 +4026,7 @@
"ru": "Армянский",
"zh-chs": "亞美尼亞人",
"xloc": [
- "default.handlebars->27->919"
+ "default.handlebars->27->921"
]
},
{
@@ -4071,7 +4071,7 @@
"ru": "Ассамский",
"zh-chs": "阿薩姆語",
"xloc": [
- "default.handlebars->27->920"
+ "default.handlebars->27->922"
]
},
{
@@ -4088,7 +4088,7 @@
"ru": "Астурии",
"zh-chs": "阿斯圖里亞斯人",
"xloc": [
- "default.handlebars->27->921"
+ "default.handlebars->27->923"
]
},
{
@@ -4105,7 +4105,7 @@
"ru": "Приложение аутентификации",
"zh-chs": "身份驗證應用",
"xloc": [
- "default.handlebars->27->1629"
+ "default.handlebars->27->1631"
]
},
{
@@ -4128,8 +4128,8 @@
"default-mobile.handlebars->9->73",
"default.handlebars->27->109",
"default.handlebars->27->114",
- "default.handlebars->27->885",
- "default.handlebars->27->887"
+ "default.handlebars->27->887",
+ "default.handlebars->27->889"
]
},
{
@@ -4197,7 +4197,7 @@
"ru": "Автоудаление",
"zh-chs": "自動刪除",
"xloc": [
- "default.handlebars->27->1168"
+ "default.handlebars->27->1170"
]
},
{
@@ -4251,7 +4251,7 @@
"ru": "Азербайджанский",
"zh-chs": "阿塞拜疆",
"xloc": [
- "default.handlebars->27->922"
+ "default.handlebars->27->924"
]
},
{
@@ -4269,7 +4269,7 @@
"zh-chs": "的BIOS",
"xloc": [
"default-mobile.handlebars->9->358",
- "default.handlebars->27->840"
+ "default.handlebars->27->842"
]
},
{
@@ -4366,8 +4366,8 @@
"ru": "Фоновый и интерактивный",
"zh-chs": "背景與互動",
"xloc": [
- "default.handlebars->27->1344",
- "default.handlebars->27->1351",
+ "default.handlebars->27->1346",
+ "default.handlebars->27->1353",
"default.handlebars->27->310"
]
},
@@ -4385,8 +4385,8 @@
"ru": "Только фоновый",
"zh-chs": "僅背景",
"xloc": [
- "default.handlebars->27->1345",
- "default.handlebars->27->1352",
+ "default.handlebars->27->1347",
+ "default.handlebars->27->1354",
"default.handlebars->27->311",
"default.handlebars->27->333"
]
@@ -4422,7 +4422,7 @@
"ru": "Резервные коды",
"zh-chs": "備用碼",
"xloc": [
- "default.handlebars->27->1631"
+ "default.handlebars->27->1633"
]
},
{
@@ -4439,7 +4439,7 @@
"ru": "Плохой ключ",
"zh-chs": "錯誤的簽名",
"xloc": [
- "default.handlebars->27->1746"
+ "default.handlebars->27->1748"
]
},
{
@@ -4456,7 +4456,7 @@
"ru": "Плохой веб-сертификат",
"zh-chs": "錯誤的網絡證書",
"xloc": [
- "default.handlebars->27->1745"
+ "default.handlebars->27->1747"
]
},
{
@@ -4473,7 +4473,7 @@
"ru": "Баскский",
"zh-chs": "巴斯克",
"xloc": [
- "default.handlebars->27->923"
+ "default.handlebars->27->925"
]
},
{
@@ -4507,7 +4507,7 @@
"ru": "Белорусский",
"zh-chs": "白俄羅斯語",
"xloc": [
- "default.handlebars->27->925"
+ "default.handlebars->27->927"
]
},
{
@@ -4524,7 +4524,7 @@
"ru": "Бенгальский",
"zh-chs": "孟加拉",
"xloc": [
- "default.handlebars->27->926"
+ "default.handlebars->27->928"
]
},
{
@@ -4560,7 +4560,7 @@
"ru": "Боснийский",
"zh-chs": "波斯尼亞人",
"xloc": [
- "default.handlebars->27->927"
+ "default.handlebars->27->929"
]
},
{
@@ -4577,7 +4577,7 @@
"ru": "Бретонский",
"zh-chs": "布列塔尼",
"xloc": [
- "default.handlebars->27->928"
+ "default.handlebars->27->930"
]
},
{
@@ -4594,7 +4594,7 @@
"ru": "Отправить сообщение",
"zh-chs": "廣播",
"xloc": [
- "default.handlebars->27->1548",
+ "default.handlebars->27->1550",
"default.handlebars->container->column_l->p4->3->1->0->3->1"
]
},
@@ -4612,7 +4612,7 @@
"ru": "Отправить сообщение",
"zh-chs": "廣播消息",
"xloc": [
- "default.handlebars->27->1483"
+ "default.handlebars->27->1485"
]
},
{
@@ -4629,7 +4629,7 @@
"ru": "Отправить сообщение всем подключенным пользователям.",
"zh-chs": "向所有連接的用戶廣播消息。",
"xloc": [
- "default.handlebars->27->1482"
+ "default.handlebars->27->1484"
]
},
{
@@ -4646,7 +4646,7 @@
"ru": "Болгарский",
"zh-chs": "保加利亞語",
"xloc": [
- "default.handlebars->27->924"
+ "default.handlebars->27->926"
]
},
{
@@ -4663,7 +4663,7 @@
"ru": "Бирманский",
"zh-chs": "緬甸人",
"xloc": [
- "default.handlebars->27->929"
+ "default.handlebars->27->931"
]
},
{
@@ -4699,8 +4699,8 @@
"zh-chs": "CIRA",
"xloc": [
"default-mobile.handlebars->9->193",
- "default.handlebars->27->1232",
- "default.handlebars->27->1237",
+ "default.handlebars->27->1234",
+ "default.handlebars->27->1239",
"default.handlebars->27->181",
"default.handlebars->27->387"
]
@@ -4719,7 +4719,7 @@
"ru": "CIRA Сервер",
"zh-chs": "CIRA服務器",
"xloc": [
- "default.handlebars->27->1796"
+ "default.handlebars->27->1798"
]
},
{
@@ -4736,7 +4736,7 @@
"ru": "CIRA Сервер команды",
"zh-chs": "CIRA服務器命令",
"xloc": [
- "default.handlebars->27->1797"
+ "default.handlebars->27->1799"
]
},
{
@@ -4753,7 +4753,7 @@
"zh-chs": "CPU",
"xloc": [
"default-mobile.handlebars->9->364",
- "default.handlebars->27->846"
+ "default.handlebars->27->848"
]
},
{
@@ -4770,7 +4770,7 @@
"ru": "Загрузка CPU",
"zh-chs": "CPU負載",
"xloc": [
- "default.handlebars->27->1760"
+ "default.handlebars->27->1762"
]
},
{
@@ -4787,7 +4787,7 @@
"ru": "Загрузка CPU за последние 15 минут",
"zh-chs": "最近15分鐘的CPU負載",
"xloc": [
- "default.handlebars->27->1763"
+ "default.handlebars->27->1765"
]
},
{
@@ -4804,7 +4804,7 @@
"ru": "Загрузка CPU за последние 5 минут",
"zh-chs": "最近5分鐘的CPU負載",
"xloc": [
- "default.handlebars->27->1762"
+ "default.handlebars->27->1764"
]
},
{
@@ -4821,7 +4821,7 @@
"ru": "Загрузка CPU за последнюю минуту",
"zh-chs": "最後一分鐘的CPU負載",
"xloc": [
- "default.handlebars->27->1761"
+ "default.handlebars->27->1763"
]
},
{
@@ -4838,8 +4838,8 @@
"ru": "CR+LF",
"zh-chs": "CR +低頻",
"xloc": [
- "default.handlebars->27->744",
- "default.handlebars->27->753",
+ "default.handlebars->27->746",
+ "default.handlebars->27->755",
"default.handlebars->container->column_l->p12->termTable->1->1->6->1->1->terminalSettingsButtons"
]
},
@@ -4857,8 +4857,8 @@
"ru": "Формат CSV",
"zh-chs": "CSV格式",
"xloc": [
- "default.handlebars->27->1415",
- "default.handlebars->27->1474",
+ "default.handlebars->27->1417",
+ "default.handlebars->27->1476",
"default.handlebars->27->413"
]
},
@@ -4876,7 +4876,7 @@
"ru": "Ошибка вызова",
"zh-chs": "通話錯誤",
"xloc": [
- "default.handlebars->27->1809"
+ "default.handlebars->27->1811"
]
},
{
@@ -4895,7 +4895,7 @@
"xloc": [
"default-mobile.handlebars->9->82",
"default-mobile.handlebars->dialog->idx_dlgButtonBar",
- "default.handlebars->27->1149",
+ "default.handlebars->27->1151",
"default.handlebars->container->dialog->idx_dlgButtonBar",
"login-mobile.handlebars->dialog->idx_dlgButtonBar",
"login.handlebars->dialog->idx_dlgButtonBar",
@@ -4915,8 +4915,8 @@
"xloc": [
"default-mobile.handlebars->9->372",
"default-mobile.handlebars->9->374",
- "default.handlebars->27->854",
- "default.handlebars->27->856"
+ "default.handlebars->27->856",
+ "default.handlebars->27->858"
]
},
{
@@ -4934,7 +4934,7 @@
"zh-chs": "容量/速度",
"xloc": [
"default-mobile.handlebars->9->367",
- "default.handlebars->27->849"
+ "default.handlebars->27->851"
]
},
{
@@ -4951,7 +4951,7 @@
"ru": "Каталонский",
"zh-chs": "加泰羅尼亞語",
"xloc": [
- "default.handlebars->27->930"
+ "default.handlebars->27->932"
]
},
{
@@ -4985,7 +4985,7 @@
"ru": "Чаморро",
"zh-chs": "查莫羅",
"xloc": [
- "default.handlebars->27->931"
+ "default.handlebars->27->933"
]
},
{
@@ -5016,7 +5016,7 @@
"ru": "Смена email для {0}",
"zh-chs": "更改{0}的電子郵件",
"xloc": [
- "default.handlebars->27->1657"
+ "default.handlebars->27->1659"
]
},
{
@@ -5034,8 +5034,8 @@
"zh-chs": "變更組",
"xloc": [
"default.handlebars->27->549",
- "default.handlebars->27->660",
- "default.handlebars->27->661"
+ "default.handlebars->27->662",
+ "default.handlebars->27->663"
]
},
{
@@ -5053,8 +5053,8 @@
"zh-chs": "更改密碼",
"xloc": [
"default-mobile.handlebars->9->90",
- "default.handlebars->27->1125",
- "default.handlebars->27->1646"
+ "default.handlebars->27->1127",
+ "default.handlebars->27->1648"
]
},
{
@@ -5071,7 +5071,7 @@
"ru": "Смена пароля для {0}",
"zh-chs": "更改{0}的密碼",
"xloc": [
- "default.handlebars->27->1664"
+ "default.handlebars->27->1666"
]
},
{
@@ -5141,7 +5141,7 @@
"ru": "Изменить пароль для этого пользователя",
"zh-chs": "更改該用戶的密碼",
"xloc": [
- "default.handlebars->27->1645"
+ "default.handlebars->27->1647"
]
},
{
@@ -5175,7 +5175,7 @@
"ru": "Измените адрес электронной почты вашей учетной записи здесь.",
"zh-chs": "在此處更改您的帳戶電子郵件地址。",
"xloc": [
- "default.handlebars->27->1112"
+ "default.handlebars->27->1114"
]
},
{
@@ -5192,7 +5192,7 @@
"ru": "Измените пароль своей учетной записи, введя старый пароль и дважды новый пароль в поля ниже.",
"zh-chs": "在下面的框中兩次輸入舊密碼和新密碼,以更改帳戶密碼。",
"xloc": [
- "default.handlebars->27->1118"
+ "default.handlebars->27->1120"
]
},
{
@@ -5209,7 +5209,7 @@
"ru": "Изменение языка потребует перезагрузить страницу.",
"zh-chs": "更改語言將需要刷新頁面。",
"xloc": [
- "default.handlebars->27->1097"
+ "default.handlebars->27->1099"
]
},
{
@@ -5226,9 +5226,9 @@
"ru": "Чат",
"zh-chs": "聊天室",
"xloc": [
- "default.handlebars->27->1432",
- "default.handlebars->27->600",
- "default.handlebars->27->619"
+ "default.handlebars->27->1434",
+ "default.handlebars->27->602",
+ "default.handlebars->27->621"
]
},
{
@@ -5247,8 +5247,8 @@
"xloc": [
"default-mobile.handlebars->9->411",
"default-mobile.handlebars->9->429",
- "default.handlebars->27->1294",
- "default.handlebars->27->1328"
+ "default.handlebars->27->1296",
+ "default.handlebars->27->1330"
]
},
{
@@ -5265,7 +5265,7 @@
"ru": "Чеченский",
"zh-chs": "車臣",
"xloc": [
- "default.handlebars->27->932"
+ "default.handlebars->27->934"
]
},
{
@@ -5346,8 +5346,8 @@
"ru": "Проверка...",
"zh-chs": "檢查...",
"xloc": [
- "default.handlebars->27->1803",
- "default.handlebars->27->898"
+ "default.handlebars->27->1805",
+ "default.handlebars->27->900"
]
},
{
@@ -5364,7 +5364,7 @@
"ru": "Китайский",
"zh-chs": "中文",
"xloc": [
- "default.handlebars->27->933"
+ "default.handlebars->27->935"
]
},
{
@@ -5381,7 +5381,7 @@
"ru": "Китайский (Гонконг)",
"zh-chs": "中文(香港)",
"xloc": [
- "default.handlebars->27->934"
+ "default.handlebars->27->936"
]
},
{
@@ -5398,7 +5398,7 @@
"ru": "Китайский (КНР)",
"zh-chs": "中文(中國)",
"xloc": [
- "default.handlebars->27->935"
+ "default.handlebars->27->937"
]
},
{
@@ -5415,7 +5415,7 @@
"ru": "Упрощенный китайский)",
"zh-chs": "简体中文)",
"xloc": [
- "default.handlebars->27->1095"
+ "default.handlebars->27->1097"
]
},
{
@@ -5432,7 +5432,7 @@
"ru": "Китайский (Сингапур)",
"zh-chs": "中文(新加坡)",
"xloc": [
- "default.handlebars->27->936"
+ "default.handlebars->27->938"
]
},
{
@@ -5449,7 +5449,7 @@
"ru": "Китайский (Тайвань)",
"zh-chs": "中文(台灣)",
"xloc": [
- "default.handlebars->27->937"
+ "default.handlebars->27->939"
]
},
{
@@ -5484,7 +5484,7 @@
"ru": "Чувашский",
"zh-chs": "楚瓦什",
"xloc": [
- "default.handlebars->27->938"
+ "default.handlebars->27->940"
]
},
{
@@ -5524,11 +5524,11 @@
"default-mobile.handlebars->9->311",
"default-mobile.handlebars->9->313",
"default-mobile.handlebars->9->59",
- "default.handlebars->27->1409",
- "default.handlebars->27->779",
+ "default.handlebars->27->1411",
"default.handlebars->27->781",
"default.handlebars->27->783",
"default.handlebars->27->785",
+ "default.handlebars->27->787",
"default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->7",
"default.handlebars->container->column_l->p41->3->1",
"messenger.handlebars->xbottom"
@@ -5562,7 +5562,7 @@
"nl": "Wis alle meldingen",
"zh-chs": "全部清除",
"xloc": [
- "default.handlebars->27->1733"
+ "default.handlebars->27->1735"
]
},
{
@@ -5579,7 +5579,7 @@
"ru": "Очистить ядро",
"zh-chs": "清除核心",
"xloc": [
- "default.handlebars->27->870"
+ "default.handlebars->27->872"
]
},
{
@@ -5612,7 +5612,7 @@
"ru": "Очистить это уведомление",
"zh-chs": "清除此通知",
"xloc": [
- "default.handlebars->27->1732"
+ "default.handlebars->27->1734"
]
},
{
@@ -5657,8 +5657,8 @@
"nl": "Klik hier om de apparaatgroepsnaam te bewerken",
"zh-chs": "单击此处编辑设备组名称",
"xloc": [
- "default.handlebars->27->1160",
- "default.handlebars->27->1365"
+ "default.handlebars->27->1162",
+ "default.handlebars->27->1367"
]
},
{
@@ -5688,7 +5688,7 @@
"nl": "Klik hier om de gebruikersgroepsnaam te bewerken",
"zh-chs": "单击此处编辑用户组名称",
"xloc": [
- "default.handlebars->27->1537"
+ "default.handlebars->27->1539"
]
},
{
@@ -5738,7 +5738,7 @@
"zh-chs": "單擊確定將驗證郵件發送到:",
"xloc": [
"default-mobile.handlebars->9->75",
- "default.handlebars->27->1109"
+ "default.handlebars->27->1111"
]
},
{
@@ -5773,7 +5773,7 @@
"zh-chs": "客戶端控制模式(CCM)",
"xloc": [
"default-mobile.handlebars->9->345",
- "default.handlebars->27->827"
+ "default.handlebars->27->829"
]
},
{
@@ -5790,8 +5790,8 @@
"ru": "Клиент инициировал удаленный доступ",
"zh-chs": "客戶端啟動的遠程訪問",
"xloc": [
- "default.handlebars->27->1231",
- "default.handlebars->27->1236"
+ "default.handlebars->27->1233",
+ "default.handlebars->27->1238"
]
},
{
@@ -5828,7 +5828,7 @@
"default-mobile.handlebars->9->57",
"default.handlebars->27->121",
"default.handlebars->27->129",
- "default.handlebars->27->737"
+ "default.handlebars->27->739"
]
},
{
@@ -5863,8 +5863,8 @@
"ru": "Общие группы устройств",
"zh-chs": "通用設備組",
"xloc": [
- "default.handlebars->27->1556",
- "default.handlebars->27->1669"
+ "default.handlebars->27->1558",
+ "default.handlebars->27->1671"
]
},
{
@@ -5881,8 +5881,8 @@
"ru": "Общие устройства",
"zh-chs": "通用設備",
"xloc": [
- "default.handlebars->27->1562",
- "default.handlebars->27->1681"
+ "default.handlebars->27->1564",
+ "default.handlebars->27->1683"
]
},
{
@@ -5900,7 +5900,7 @@
"zh-chs": "將{1}入口{2}中的{0}限製到此位置?",
"xloc": [
"default-mobile.handlebars->9->127",
- "default.handlebars->27->1404"
+ "default.handlebars->27->1406"
]
},
{
@@ -5919,14 +5919,14 @@
"xloc": [
"default-mobile.handlebars->9->269",
"default-mobile.handlebars->9->391",
- "default.handlebars->27->1245",
- "default.handlebars->27->1458",
- "default.handlebars->27->1527",
- "default.handlebars->27->1576",
- "default.handlebars->27->1667",
+ "default.handlebars->27->1247",
+ "default.handlebars->27->1460",
+ "default.handlebars->27->1529",
+ "default.handlebars->27->1578",
+ "default.handlebars->27->1669",
"default.handlebars->27->410",
- "default.handlebars->27->655",
- "default.handlebars->27->664"
+ "default.handlebars->27->657",
+ "default.handlebars->27->666"
]
},
{
@@ -5944,7 +5944,7 @@
"zh-chs": "確認將1個副本複製到此位置?",
"xloc": [
"default-mobile.handlebars->9->302",
- "default.handlebars->27->774"
+ "default.handlebars->27->776"
]
},
{
@@ -5962,7 +5962,7 @@
"zh-chs": "確認{0}個條目的副本到此位置?",
"xloc": [
"default-mobile.handlebars->9->301",
- "default.handlebars->27->773"
+ "default.handlebars->27->775"
]
},
{
@@ -5976,7 +5976,7 @@
"nl": "Bevestig verwijdering geselecteerde account(s)?",
"zh-chs": "确认删除选定的帐户?",
"xloc": [
- "default.handlebars->27->1457"
+ "default.handlebars->27->1459"
]
},
{
@@ -6007,7 +6007,7 @@
"nl": "Bevestig verwijdering geselecteerde gebruikersgroep(en)?",
"zh-chs": "确认删除选定的用户组?",
"xloc": [
- "default.handlebars->27->1526"
+ "default.handlebars->27->1528"
]
},
{
@@ -6024,7 +6024,7 @@
"ru": "Подтвердить удаление пользователя {0}?",
"zh-chs": "確認刪除用戶{0}?",
"xloc": [
- "default.handlebars->27->1666"
+ "default.handlebars->27->1668"
]
},
{
@@ -6038,7 +6038,7 @@
"nl": "Bevestig lidmaatschap verwijderen van gebruiker \\\"{0}\\\"?",
"zh-chs": "确认删除用户\\“ {0} \\”的成员身份?",
"xloc": [
- "default.handlebars->27->1579"
+ "default.handlebars->27->1581"
]
},
{
@@ -6052,7 +6052,7 @@
"nl": "Bevestig lidmaatschap verwijdering van gebruikergroep \\\"{0}\\\"?",
"zh-chs": "确认删除用户组 “{0}” 的成员身份?",
"xloc": [
- "default.handlebars->27->1696"
+ "default.handlebars->27->1698"
]
},
{
@@ -6070,7 +6070,7 @@
"zh-chs": "確認將1個入口移動到此位置?",
"xloc": [
"default-mobile.handlebars->9->304",
- "default.handlebars->27->776"
+ "default.handlebars->27->778"
]
},
{
@@ -6088,7 +6088,7 @@
"zh-chs": "確認將{0}個條目移到此位置?",
"xloc": [
"default-mobile.handlebars->9->303",
- "default.handlebars->27->775"
+ "default.handlebars->27->777"
]
},
{
@@ -6105,7 +6105,7 @@
"ru": "Подтвердить перезапись?",
"zh-chs": "確認覆蓋?",
"xloc": [
- "default.handlebars->27->1403"
+ "default.handlebars->27->1405"
]
},
{
@@ -6119,8 +6119,8 @@
"nl": "Bevestig verwijdering van toegangsrechten voor apparaat \\\"{0}\\\"?",
"zh-chs": "确认删除设备“ {0} ”的访问权限?",
"xloc": [
- "default.handlebars->27->1569",
- "default.handlebars->27->1687"
+ "default.handlebars->27->1571",
+ "default.handlebars->27->1689"
]
},
{
@@ -6134,8 +6134,8 @@
"nl": "Bevestig verwijdering van toegangsrechten voor apparaatgroep \\\"{0}\\\"?",
"zh-chs": "是否确认删除设备组“ {0}”的访问权限?",
"xloc": [
- "default.handlebars->27->1571",
- "default.handlebars->27->1700"
+ "default.handlebars->27->1573",
+ "default.handlebars->27->1702"
]
},
{
@@ -6149,7 +6149,7 @@
"nl": "Bevestig verwijdering van toegangsrechten voor gebruiker \\\"{0}\\\"?",
"zh-chs": "确认删除用户\\“ {0} \\”的访问权限?",
"xloc": [
- "default.handlebars->27->1689"
+ "default.handlebars->27->1691"
]
},
{
@@ -6163,7 +6163,7 @@
"nl": "Bevestig verwijdering van toegangsrechten voor gebruikergroep \\\"{0}\\\"?",
"zh-chs": "确认删除用户组“ {0}”的访问权限?",
"xloc": [
- "default.handlebars->27->1692"
+ "default.handlebars->27->1694"
]
},
{
@@ -6177,8 +6177,8 @@
"nl": "Verwijdering van toegangsrechten bevestigen?",
"zh-chs": "确认删除访问权限?",
"xloc": [
- "default.handlebars->27->1690",
- "default.handlebars->27->1693"
+ "default.handlebars->27->1692",
+ "default.handlebars->27->1695"
]
},
{
@@ -6196,7 +6196,7 @@
"zh-chs": "確認刪除身份驗證器應用程序兩步登錄?",
"xloc": [
"default-mobile.handlebars->9->74",
- "default.handlebars->27->888"
+ "default.handlebars->27->890"
]
},
{
@@ -6251,7 +6251,7 @@
"nl": "Bevestig de verwijdering van rechten voor gebruiker \\\"{0}\\\"?",
"zh-chs": "确认删除用户“ {0} ”的权限?",
"xloc": [
- "default.handlebars->27->1337"
+ "default.handlebars->27->1339"
]
},
{
@@ -6265,7 +6265,7 @@
"nl": "Bevestig de verwijdering van rechten voor de gebruikergroep \\\"{0}\\\"?",
"zh-chs": "确认删除用户组“ {0} ”的权限?",
"xloc": [
- "default.handlebars->27->1339"
+ "default.handlebars->27->1341"
]
},
{
@@ -6313,8 +6313,8 @@
"default-mobile.handlebars->9->284",
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
- "default.handlebars->27->1184",
- "default.handlebars->27->756",
+ "default.handlebars->27->1186",
+ "default.handlebars->27->758",
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span",
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2span",
"default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3",
@@ -6353,8 +6353,8 @@
"ru": "Подключиться к серверу",
"zh-chs": "連接到服務器",
"xloc": [
- "default.handlebars->27->1235",
- "default.handlebars->27->1239"
+ "default.handlebars->27->1237",
+ "default.handlebars->27->1241"
]
},
{
@@ -6425,7 +6425,7 @@
"ru": "Подключено Intel® AMT",
"zh-chs": "連接的英特爾®AMT",
"xloc": [
- "default.handlebars->27->1751"
+ "default.handlebars->27->1753"
]
},
{
@@ -6442,7 +6442,7 @@
"ru": "Подключенные пользователи",
"zh-chs": "關聯用戶",
"xloc": [
- "default.handlebars->27->1756"
+ "default.handlebars->27->1758"
]
},
{
@@ -6460,7 +6460,7 @@
"zh-chs": "現在已連接",
"xloc": [
"default-mobile.handlebars->9->324",
- "default.handlebars->27->806"
+ "default.handlebars->27->808"
]
},
{
@@ -6500,7 +6500,7 @@
"default.handlebars->27->206",
"default.handlebars->27->209",
"default.handlebars->27->228",
- "default.handlebars->27->797",
+ "default.handlebars->27->799",
"default.handlebars->27->9",
"xterm.handlebars->9->2"
]
@@ -6519,7 +6519,7 @@
"ru": "Подключений ",
"zh-chs": "連接數",
"xloc": [
- "default.handlebars->27->1767"
+ "default.handlebars->27->1769"
]
},
{
@@ -6536,7 +6536,7 @@
"ru": "Ретранслятор подключения",
"zh-chs": "連接繼電器",
"xloc": [
- "default.handlebars->27->1795"
+ "default.handlebars->27->1797"
]
},
{
@@ -6588,7 +6588,7 @@
"zh-chs": "連接性",
"xloc": [
"default-mobile.handlebars->9->237",
- "default.handlebars->27->1372",
+ "default.handlebars->27->1374",
"default.handlebars->27->197",
"default.handlebars->27->538",
"default.handlebars->container->column_l->p21->3->1->meshConnChartDiv->1"
@@ -6608,8 +6608,8 @@
"ru": "Консоль",
"zh-chs": "安慰",
"xloc": [
- "default.handlebars->27->595",
- "default.handlebars->27->614",
+ "default.handlebars->27->597",
+ "default.handlebars->27->616",
"default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevConsole",
"default.handlebars->container->topbar->1->1->ServerSubMenuSpan->ServerSubMenu->1->0->ServerConsole",
"default.handlebars->contextMenu->cxconsole"
@@ -6645,8 +6645,8 @@
"ru": "контроль",
"zh-chs": "控制",
"xloc": [
- "default.handlebars->27->594",
- "default.handlebars->27->613"
+ "default.handlebars->27->596",
+ "default.handlebars->27->615"
]
},
{
@@ -6663,7 +6663,7 @@
"ru": "Cookie-кодировщик",
"zh-chs": "Cookie編碼器",
"xloc": [
- "default.handlebars->27->1781"
+ "default.handlebars->27->1783"
]
},
{
@@ -6789,8 +6789,8 @@
"ru": "Скопировать ссылку в буфер обмена",
"zh-chs": "複製鏈接到剪貼板",
"xloc": [
- "default.handlebars->27->1377",
- "default.handlebars->27->1391",
+ "default.handlebars->27->1379",
+ "default.handlebars->27->1393",
"default.handlebars->27->323"
]
},
@@ -6968,7 +6968,7 @@
"ru": "Основной сервер",
"zh-chs": "核心服務器",
"xloc": [
- "default.handlebars->27->1780"
+ "default.handlebars->27->1782"
]
},
{
@@ -6985,7 +6985,7 @@
"ru": "Kорсиканский",
"zh-chs": "科西嘉人",
"xloc": [
- "default.handlebars->27->939"
+ "default.handlebars->27->941"
]
},
{
@@ -7002,7 +7002,7 @@
"ru": "Создать учетную запись",
"zh-chs": "創建帳號",
"xloc": [
- "default.handlebars->27->1497",
+ "default.handlebars->27->1499",
"login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1",
"login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1"
]
@@ -7038,7 +7038,7 @@
"ru": "Создать группу пользователей",
"zh-chs": "創建用戶組",
"xloc": [
- "default.handlebars->27->1534"
+ "default.handlebars->27->1536"
]
},
{
@@ -7055,7 +7055,7 @@
"ru": "Создайте новую группу устройств, используя параметры ниже.",
"zh-chs": "使用以下選項創建一個新的設備組。",
"xloc": [
- "default.handlebars->27->1132"
+ "default.handlebars->27->1134"
]
},
{
@@ -7089,7 +7089,7 @@
"ru": "Создайте сразу несколько учетных записей, импортировав файл JSON в следующем формате:",
"zh-chs": "通過導入以下格式的JSON文件一次創建多個帳戶:",
"xloc": [
- "default.handlebars->27->1465"
+ "default.handlebars->27->1467"
]
},
{
@@ -7124,7 +7124,7 @@
"ru": "Создано",
"zh-chs": "創建",
"xloc": [
- "default.handlebars->27->1605"
+ "default.handlebars->27->1607"
]
},
{
@@ -7159,7 +7159,7 @@
"ru": "Кри (Канадский язык)",
"zh-chs": "克里",
"xloc": [
- "default.handlebars->27->940"
+ "default.handlebars->27->942"
]
},
{
@@ -7176,7 +7176,7 @@
"ru": "Хорватский",
"zh-chs": "克羅地亞語",
"xloc": [
- "default.handlebars->27->941"
+ "default.handlebars->27->943"
]
},
{
@@ -7317,7 +7317,7 @@
"ru": "Чешский",
"zh-chs": "捷克文",
"xloc": [
- "default.handlebars->27->942"
+ "default.handlebars->27->944"
]
},
{
@@ -7351,7 +7351,7 @@
"ru": "Датский",
"zh-chs": "丹麥文",
"xloc": [
- "default.handlebars->27->943"
+ "default.handlebars->27->945"
]
},
{
@@ -7368,7 +7368,7 @@
"ru": "DataChannel",
"zh-chs": "數據通道",
"xloc": [
- "default.handlebars->27->707"
+ "default.handlebars->27->709"
]
},
{
@@ -7385,7 +7385,7 @@
"ru": "Дата & Время",
"zh-chs": "日期和時間",
"xloc": [
- "default.handlebars->27->1100"
+ "default.handlebars->27->1102"
]
},
{
@@ -7403,7 +7403,7 @@
"zh-chs": "天",
"xloc": [
"default-mobile.handlebars->9->259",
- "default.handlebars->27->639"
+ "default.handlebars->27->641"
]
},
{
@@ -7420,7 +7420,7 @@
"ru": "Деактивировать режим управления клиентом (CCM)",
"zh-chs": "停用客戶端控制模式(CCM)",
"xloc": [
- "default.handlebars->27->1223"
+ "default.handlebars->27->1225"
]
},
{
@@ -7445,10 +7445,10 @@
"en": "Default",
"nl": "Standaard",
"xloc": [
- "default.handlebars->27->1484",
- "default.handlebars->27->1530",
- "default.handlebars->27->1541",
- "default.handlebars->27->1596"
+ "default.handlebars->27->1486",
+ "default.handlebars->27->1532",
+ "default.handlebars->27->1543",
+ "default.handlebars->27->1598"
]
},
{
@@ -7469,9 +7469,9 @@
"default-mobile.handlebars->9->294",
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
"default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
- "default.handlebars->27->1398",
+ "default.handlebars->27->1400",
"default.handlebars->27->442",
- "default.handlebars->27->766",
+ "default.handlebars->27->768",
"default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
"default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3",
"default.handlebars->container->dialog->idx_dlgButtonBar->5",
@@ -7495,7 +7495,7 @@
"zh-chs": "刪除帳戶",
"xloc": [
"default-mobile.handlebars->9->84",
- "default.handlebars->27->1117"
+ "default.handlebars->27->1119"
]
},
{
@@ -7509,7 +7509,7 @@
"nl": "Verwijder accounts",
"zh-chs": "删除帐号",
"xloc": [
- "default.handlebars->27->1459"
+ "default.handlebars->27->1461"
]
},
{
@@ -7546,8 +7546,8 @@
"xloc": [
"default-mobile.handlebars->9->389",
"default-mobile.handlebars->9->392",
- "default.handlebars->27->1216",
- "default.handlebars->27->1246"
+ "default.handlebars->27->1218",
+ "default.handlebars->27->1248"
]
},
{
@@ -7565,7 +7565,7 @@
"zh-chs": "刪除節點",
"xloc": [
"default-mobile.handlebars->9->267",
- "default.handlebars->27->665"
+ "default.handlebars->27->667"
]
},
{
@@ -7599,7 +7599,7 @@
"ru": "Удалить пользователя",
"zh-chs": "刪除用戶",
"xloc": [
- "default.handlebars->27->1644"
+ "default.handlebars->27->1646"
]
},
{
@@ -7616,8 +7616,8 @@
"ru": "Удалить группу пользователей",
"zh-chs": "刪除用戶組",
"xloc": [
- "default.handlebars->27->1567",
- "default.handlebars->27->1577"
+ "default.handlebars->27->1569",
+ "default.handlebars->27->1579"
]
},
{
@@ -7631,7 +7631,7 @@
"nl": "Gebruikersgroepen verwijderen",
"zh-chs": "删除用户组",
"xloc": [
- "default.handlebars->27->1528"
+ "default.handlebars->27->1530"
]
},
{
@@ -7648,7 +7648,7 @@
"ru": "Удалить пользователя {0}",
"zh-chs": "刪除用戶{0}",
"xloc": [
- "default.handlebars->27->1665"
+ "default.handlebars->27->1667"
]
},
{
@@ -7666,7 +7666,7 @@
"zh-chs": "刪除帳戶",
"xloc": [
"default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->p2AccountActions->3->9->0",
- "default.handlebars->27->1455",
+ "default.handlebars->27->1457",
"default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->7"
]
},
@@ -7698,7 +7698,7 @@
"nl": "Verwijder groep",
"zh-chs": "删除群组",
"xloc": [
- "default.handlebars->27->1524"
+ "default.handlebars->27->1526"
]
},
{
@@ -7734,8 +7734,8 @@
"xloc": [
"default-mobile.handlebars->9->124",
"default-mobile.handlebars->9->296",
- "default.handlebars->27->1400",
- "default.handlebars->27->768"
+ "default.handlebars->27->1402",
+ "default.handlebars->27->770"
]
},
{
@@ -7752,7 +7752,7 @@
"ru": "Удалить группу пользователей {0}?",
"zh-chs": "刪除用戶組{0}?",
"xloc": [
- "default.handlebars->27->1575"
+ "default.handlebars->27->1577"
]
},
{
@@ -7771,8 +7771,8 @@
"xloc": [
"default-mobile.handlebars->9->123",
"default-mobile.handlebars->9->295",
- "default.handlebars->27->1399",
- "default.handlebars->27->767"
+ "default.handlebars->27->1401",
+ "default.handlebars->27->769"
]
},
{
@@ -7802,7 +7802,7 @@
"ko": "거부",
"zh-chs": "被拒绝",
"xloc": [
- "default.handlebars->27->703"
+ "default.handlebars->27->705"
]
},
{
@@ -7886,18 +7886,18 @@
"default-mobile.handlebars->9->330",
"default-mobile.handlebars->9->381",
"default-mobile.handlebars->9->394",
- "default.handlebars->27->1137",
- "default.handlebars->27->1165",
- "default.handlebars->27->1248",
- "default.handlebars->27->1533",
- "default.handlebars->27->1543",
- "default.handlebars->27->1544",
- "default.handlebars->27->1573",
+ "default.handlebars->27->1139",
+ "default.handlebars->27->1167",
+ "default.handlebars->27->1250",
+ "default.handlebars->27->1535",
+ "default.handlebars->27->1545",
+ "default.handlebars->27->1546",
+ "default.handlebars->27->1575",
"default.handlebars->27->483",
"default.handlebars->27->484",
- "default.handlebars->27->698",
+ "default.handlebars->27->700",
"default.handlebars->27->78",
- "default.handlebars->27->812",
+ "default.handlebars->27->814",
"default.handlebars->container->column_l->p42->p42tbl->1->0->3"
]
},
@@ -7930,8 +7930,8 @@
"zh-chs": "桌面",
"xloc": [
"default-mobile.handlebars->9->249",
- "default.handlebars->27->1253",
- "default.handlebars->27->1710",
+ "default.handlebars->27->1255",
+ "default.handlebars->27->1712",
"default.handlebars->27->448",
"default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevDesktop",
"default.handlebars->contextMenu->cxdesktop"
@@ -7968,8 +7968,8 @@
"ru": "Уведомление на рабочем столе",
"zh-chs": "桌面通知",
"xloc": [
- "default.handlebars->27->1175",
- "default.handlebars->27->1620",
+ "default.handlebars->27->1177",
+ "default.handlebars->27->1622",
"default.handlebars->27->519"
]
},
@@ -7987,8 +7987,8 @@
"ru": "Запрос рабочего стола",
"zh-chs": "桌面提示",
"xloc": [
- "default.handlebars->27->1174",
- "default.handlebars->27->1619",
+ "default.handlebars->27->1176",
+ "default.handlebars->27->1621",
"default.handlebars->27->518"
]
},
@@ -8006,8 +8006,8 @@
"ru": "Запрос рабочего стола + панель инструментов",
"zh-chs": "桌面提示+工具欄",
"xloc": [
- "default.handlebars->27->1172",
- "default.handlebars->27->1617",
+ "default.handlebars->27->1174",
+ "default.handlebars->27->1619",
"default.handlebars->27->516"
]
},
@@ -8039,8 +8039,8 @@
"ru": "Панель инструментов рабочего стола",
"zh-chs": "桌面工具欄",
"xloc": [
- "default.handlebars->27->1173",
- "default.handlebars->27->1618",
+ "default.handlebars->27->1175",
+ "default.handlebars->27->1620",
"default.handlebars->27->517"
]
},
@@ -8112,8 +8112,8 @@
"ru": "Устройство",
"zh-chs": "設備",
"xloc": [
- "default.handlebars->27->1275",
- "default.handlebars->27->1684",
+ "default.handlebars->27->1277",
+ "default.handlebars->27->1686",
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5"
]
},
@@ -8132,7 +8132,7 @@
"zh-chs": "設備動作",
"xloc": [
"default-mobile.handlebars->9->258",
- "default.handlebars->27->638"
+ "default.handlebars->27->640"
]
},
{
@@ -8149,13 +8149,13 @@
"ru": "Группа устройства",
"zh-chs": "設備組",
"xloc": [
- "default.handlebars->27->1270",
- "default.handlebars->27->1273",
- "default.handlebars->27->1274",
- "default.handlebars->27->1559",
- "default.handlebars->27->1565",
- "default.handlebars->27->1672",
- "default.handlebars->27->1719"
+ "default.handlebars->27->1272",
+ "default.handlebars->27->1275",
+ "default.handlebars->27->1276",
+ "default.handlebars->27->1561",
+ "default.handlebars->27->1567",
+ "default.handlebars->27->1674",
+ "default.handlebars->27->1721"
]
},
{
@@ -8173,7 +8173,7 @@
"zh-chs": "設備組用戶",
"xloc": [
"default-mobile.handlebars->9->436",
- "default.handlebars->27->1335"
+ "default.handlebars->27->1337"
]
},
{
@@ -8191,11 +8191,11 @@
"zh-chs": "設備組",
"xloc": [
"default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->3",
- "default.handlebars->27->1424",
- "default.handlebars->27->1518",
- "default.handlebars->27->1546",
- "default.handlebars->27->1614",
- "default.handlebars->27->1754",
+ "default.handlebars->27->1426",
+ "default.handlebars->27->1520",
+ "default.handlebars->27->1548",
+ "default.handlebars->27->1616",
+ "default.handlebars->27->1756",
"default.handlebars->container->column_l->p2->p2info->7"
]
},
@@ -8230,7 +8230,7 @@
"ru": "Местонахождение устройства",
"zh-chs": "設備位置",
"xloc": [
- "default.handlebars->27->666"
+ "default.handlebars->27->668"
]
},
{
@@ -8238,7 +8238,7 @@
"nl": "Apparaatbericht",
"fr": "Message de Service\r\n",
"xloc": [
- "default.handlebars->27->627"
+ "default.handlebars->27->629"
]
},
{
@@ -8256,9 +8256,9 @@
"zh-chs": "設備名稱",
"xloc": [
"default-mobile.handlebars->9->271",
- "default.handlebars->27->1718",
+ "default.handlebars->27->1720",
"default.handlebars->27->246",
- "default.handlebars->27->696",
+ "default.handlebars->27->698",
"player.handlebars->3->9"
]
},
@@ -8276,7 +8276,7 @@
"ru": "Уведомление устройства",
"zh-chs": "設備通知",
"xloc": [
- "default.handlebars->27->629"
+ "default.handlebars->27->631"
]
},
{
@@ -8310,8 +8310,8 @@
"ru": "Подключения устройств.",
"zh-chs": "設備連接。",
"xloc": [
- "default.handlebars->27->1105",
- "default.handlebars->27->1356"
+ "default.handlebars->27->1107",
+ "default.handlebars->27->1358"
]
},
{
@@ -8328,8 +8328,8 @@
"ru": "Отключения устройств.",
"zh-chs": "設備斷開連接。",
"xloc": [
- "default.handlebars->27->1106",
- "default.handlebars->27->1357"
+ "default.handlebars->27->1108",
+ "default.handlebars->27->1359"
]
},
{
@@ -8346,7 +8346,7 @@
"ru": "Примечания могут быть просмотрены и изменены другими администраторами.",
"zh-chs": "其他設備組管理員可以查看和更改設備組註釋。",
"xloc": [
- "default.handlebars->27->625"
+ "default.handlebars->27->627"
]
},
{
@@ -8656,8 +8656,8 @@
"nl": "Apparaten",
"zh-chs": "设备",
"xloc": [
- "default.handlebars->27->1519",
- "default.handlebars->27->1547"
+ "default.handlebars->27->1521",
+ "default.handlebars->27->1549"
]
},
{
@@ -8693,8 +8693,8 @@
"xloc": [
"default-mobile.handlebars->9->285",
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
- "default.handlebars->27->1185",
- "default.handlebars->27->757",
+ "default.handlebars->27->1187",
+ "default.handlebars->27->759",
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->disconnectbutton1span",
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->disconnectbutton2span",
"xterm.handlebars->p11->deskarea0->deskarea1->3"
@@ -8750,7 +8750,7 @@
"nl": "Geef een berichtvenster weer op het externe apparaat.",
"fr": "Afficher un message sur le poste distant",
"xloc": [
- "default.handlebars->27->628"
+ "default.handlebars->27->630"
]
},
{
@@ -8792,7 +8792,7 @@
"ru": "Отобразить имя группы устройств",
"zh-chs": "顯示設備組名稱",
"xloc": [
- "default.handlebars->27->1104"
+ "default.handlebars->27->1106"
]
},
{
@@ -8809,7 +8809,7 @@
"ru": "Отображаемое имя",
"zh-chs": "顯示名稱",
"xloc": [
- "default.handlebars->27->728"
+ "default.handlebars->27->730"
]
},
{
@@ -8825,7 +8825,7 @@
"ru": "Показать публичную ссылку",
"zh-chs": "显示公共链接",
"xloc": [
- "default.handlebars->27->1376"
+ "default.handlebars->27->1378"
]
},
{
@@ -8842,17 +8842,17 @@
"ru": "Ничего не делать",
"zh-chs": "沒做什麼",
"xloc": [
- "default.handlebars->27->1229"
+ "default.handlebars->27->1231"
]
},
{
"en": "Domain",
"nl": "Domein",
"xloc": [
- "default.handlebars->27->1485",
- "default.handlebars->27->1531",
- "default.handlebars->27->1540",
- "default.handlebars->27->1595"
+ "default.handlebars->27->1487",
+ "default.handlebars->27->1533",
+ "default.handlebars->27->1542",
+ "default.handlebars->27->1597"
]
},
{
@@ -8865,8 +8865,8 @@
"nl": "Niet configureren",
"zh-chs": "不要配置",
"xloc": [
- "default.handlebars->27->1233",
- "default.handlebars->27->1238"
+ "default.handlebars->27->1235",
+ "default.handlebars->27->1240"
]
},
{
@@ -8879,7 +8879,7 @@
"nl": "Maak geen verbinding met de server",
"zh-chs": "不要连接到服务器",
"xloc": [
- "default.handlebars->27->1234"
+ "default.handlebars->27->1236"
]
},
{
@@ -8979,7 +8979,7 @@
"zh-chs": "下載文件",
"xloc": [
"default-mobile.handlebars->9->315",
- "default.handlebars->27->786"
+ "default.handlebars->27->788"
]
},
{
@@ -9013,7 +9013,7 @@
"ru": "Скачать MeshCmd",
"zh-chs": "下載MeshCmd",
"xloc": [
- "default.handlebars->27->688"
+ "default.handlebars->27->690"
]
},
{
@@ -9064,7 +9064,7 @@
"ru": "Скачайте \\\"meshcmd\\\" с файлом команд для маршрутизации трафика к этому устройству через сервер. Не забудьте указать пароль от своей учетной записи в meshaction.txt и сделать другие правки при необходимости.",
"zh-chs": "下載帶有動作文件的“ meshcmd”,以將通過此服務器的流量路由到該設備。確保編輯meshaction.txt並添加您的帳戶密碼或進行任何必要的更改。",
"xloc": [
- "default.handlebars->27->681"
+ "default.handlebars->27->683"
]
},
{
@@ -9132,7 +9132,7 @@
"ru": "Скачать события состояния питания",
"zh-chs": "下載電源事件",
"xloc": [
- "default.handlebars->27->640"
+ "default.handlebars->27->642"
]
},
{
@@ -9200,7 +9200,7 @@
"ru": "Скачать список событий в одном из форматов ниже.",
"zh-chs": "使用以下一種文件格式下載事件列表。",
"xloc": [
- "default.handlebars->27->1414"
+ "default.handlebars->27->1416"
]
},
{
@@ -9217,7 +9217,7 @@
"ru": "Скачать список пользователей в одном из форматов ниже.",
"zh-chs": "使用以下一種文件格式下載用戶列表。",
"xloc": [
- "default.handlebars->27->1473"
+ "default.handlebars->27->1475"
]
},
{
@@ -9300,7 +9300,7 @@
"nl": "Dubbele agent",
"zh-chs": "代理重复",
"xloc": [
- "default.handlebars->27->1750"
+ "default.handlebars->27->1752"
]
},
{
@@ -9334,7 +9334,7 @@
"ru": "Скопировать группу пользователей",
"zh-chs": "重複的用戶組",
"xloc": [
- "default.handlebars->27->1535"
+ "default.handlebars->27->1537"
]
},
{
@@ -9365,8 +9365,8 @@
"ru": "Длительность",
"zh-chs": "持續時間",
"xloc": [
- "default.handlebars->27->1704",
- "default.handlebars->27->1724",
+ "default.handlebars->27->1706",
+ "default.handlebars->27->1726",
"player.handlebars->3->2"
]
},
@@ -9384,7 +9384,7 @@
"ru": "Во время активации агент будет иметь доступ к паролю администратора.",
"zh-chs": "在激活期間,代理將有權訪問管理員密碼信息。",
"xloc": [
- "default.handlebars->27->1243"
+ "default.handlebars->27->1245"
]
},
{
@@ -9401,7 +9401,7 @@
"ru": "Голландский (Бельгийский)",
"zh-chs": "荷蘭語(比利時)",
"xloc": [
- "default.handlebars->27->945"
+ "default.handlebars->27->947"
]
},
{
@@ -9418,7 +9418,7 @@
"ru": "Голландский (Стандартный)",
"zh-chs": "荷蘭語(標準)",
"xloc": [
- "default.handlebars->27->944"
+ "default.handlebars->27->946"
]
},
{
@@ -9609,7 +9609,7 @@
"zh-chs": "編輯裝置",
"xloc": [
"default-mobile.handlebars->9->276",
- "default.handlebars->27->701"
+ "default.handlebars->27->703"
]
},
{
@@ -9629,10 +9629,10 @@
"default-mobile.handlebars->9->395",
"default-mobile.handlebars->9->397",
"default-mobile.handlebars->9->415",
- "default.handlebars->27->1249",
- "default.handlebars->27->1279",
- "default.handlebars->27->1301",
- "default.handlebars->27->1313"
+ "default.handlebars->27->1251",
+ "default.handlebars->27->1281",
+ "default.handlebars->27->1303",
+ "default.handlebars->27->1315"
]
},
{
@@ -9649,7 +9649,7 @@
"ru": "Редактировать функции группы устройств",
"zh-chs": "編輯設備組功能",
"xloc": [
- "default.handlebars->27->1265"
+ "default.handlebars->27->1267"
]
},
{
@@ -9666,8 +9666,8 @@
"ru": "Редактировать права группы устройств",
"zh-chs": "編輯設備組權限",
"xloc": [
- "default.handlebars->27->1298",
- "default.handlebars->27->1310"
+ "default.handlebars->27->1300",
+ "default.handlebars->27->1312"
]
},
{
@@ -9684,7 +9684,7 @@
"ru": "Редактировать согласие пользователя группы устройств",
"zh-chs": "編輯設備組用戶同意",
"xloc": [
- "default.handlebars->27->1250"
+ "default.handlebars->27->1252"
]
},
{
@@ -9702,7 +9702,7 @@
"zh-chs": "編輯設備說明",
"xloc": [
"default-mobile.handlebars->9->409",
- "default.handlebars->27->1292"
+ "default.handlebars->27->1294"
]
},
{
@@ -9718,8 +9718,8 @@
"ru": "Изменить разрешения устройства",
"zh-chs": "编辑设备权限",
"xloc": [
- "default.handlebars->27->1303",
- "default.handlebars->27->1305"
+ "default.handlebars->27->1305",
+ "default.handlebars->27->1307"
]
},
{
@@ -9733,7 +9733,7 @@
"nl": "Gebruikerstoestemming apparaat bewerken",
"zh-chs": "编辑设备用户同意",
"xloc": [
- "default.handlebars->27->1252"
+ "default.handlebars->27->1254"
]
},
{
@@ -9749,7 +9749,7 @@
"ru": "Редактировать группу",
"zh-chs": "编辑组",
"xloc": [
- "default.handlebars->27->604"
+ "default.handlebars->27->606"
]
},
{
@@ -9769,7 +9769,7 @@
"default-mobile.handlebars->9->266",
"default.handlebars->27->498",
"default.handlebars->27->501",
- "default.handlebars->27->647"
+ "default.handlebars->27->649"
]
},
{
@@ -9787,7 +9787,7 @@
"zh-chs": "編輯筆記",
"xloc": [
"default-mobile.handlebars->9->422",
- "default.handlebars->27->1320"
+ "default.handlebars->27->1322"
]
},
{
@@ -9801,7 +9801,7 @@
"nl": "Gebruikerstoestemming bewerken",
"zh-chs": "编辑用户同意",
"xloc": [
- "default.handlebars->27->1251"
+ "default.handlebars->27->1253"
]
},
{
@@ -9818,7 +9818,7 @@
"ru": "Редактировать права пользователя для группы устройств",
"zh-chs": "編輯用戶設備組權限",
"xloc": [
- "default.handlebars->27->1311"
+ "default.handlebars->27->1313"
]
},
{
@@ -9834,7 +9834,7 @@
"ru": "Изменить разрешения для пользовательских устройств",
"zh-chs": "编辑用户设备权限",
"xloc": [
- "default.handlebars->27->1306"
+ "default.handlebars->27->1308"
]
},
{
@@ -9851,7 +9851,7 @@
"ru": "Редактировать группу пользователей",
"zh-chs": "編輯用戶組",
"xloc": [
- "default.handlebars->27->1574"
+ "default.handlebars->27->1576"
]
},
{
@@ -9865,7 +9865,7 @@
"nl": "Gebruikersmachtigingen voor apparaatgroep bewerken",
"zh-chs": "编辑用户组设备权限",
"xloc": [
- "default.handlebars->27->1308"
+ "default.handlebars->27->1310"
]
},
{
@@ -9900,11 +9900,11 @@
"zh-chs": "電子郵件",
"xloc": [
"default-mobile.handlebars->9->78",
- "default.handlebars->27->1487",
- "default.handlebars->27->1599",
- "default.handlebars->27->1600",
- "default.handlebars->27->1639",
- "default.handlebars->27->1653",
+ "default.handlebars->27->1489",
+ "default.handlebars->27->1601",
+ "default.handlebars->27->1602",
+ "default.handlebars->27->1641",
+ "default.handlebars->27->1655",
"default.handlebars->27->294",
"login-mobile.handlebars->5->42",
"login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
@@ -9927,7 +9927,7 @@
"zh-chs": "電郵地址變更",
"xloc": [
"default-mobile.handlebars->9->79",
- "default.handlebars->27->1113"
+ "default.handlebars->27->1115"
]
},
{
@@ -9945,7 +9945,7 @@
"zh-chs": "郵件認證",
"xloc": [
"default-mobile.handlebars->9->68",
- "default.handlebars->27->882"
+ "default.handlebars->27->884"
]
},
{
@@ -9990,7 +9990,7 @@
"zh-chs": "電子郵件驗證",
"xloc": [
"default-mobile.handlebars->9->77",
- "default.handlebars->27->1111"
+ "default.handlebars->27->1113"
]
},
{
@@ -10020,7 +10020,7 @@
"ru": "Электронная почта не подтверждена",
"zh-chs": "邮件未验证",
"xloc": [
- "default.handlebars->27->1443"
+ "default.handlebars->27->1445"
]
},
{
@@ -10037,8 +10037,8 @@
"ru": "Email подтвержден",
"zh-chs": "電子郵件已驗證",
"xloc": [
- "default.handlebars->27->1444",
- "default.handlebars->27->1593"
+ "default.handlebars->27->1446",
+ "default.handlebars->27->1595"
]
},
{
@@ -10055,7 +10055,7 @@
"ru": "Email подтвержден.",
"zh-chs": "電子郵件已驗證。",
"xloc": [
- "default.handlebars->27->1493"
+ "default.handlebars->27->1495"
]
},
{
@@ -10072,7 +10072,7 @@
"ru": "Email не подтвержден",
"zh-chs": "電子郵件未驗證",
"xloc": [
- "default.handlebars->27->1594"
+ "default.handlebars->27->1596"
]
},
{
@@ -10111,7 +10111,7 @@
"en": "Email verified and forced password reset required.",
"nl": "E-mail geverifieerd en geforceerd opnieuw instellen van wachtwoord vereist.",
"xloc": [
- "default.handlebars->27->1494"
+ "default.handlebars->27->1496"
]
},
{
@@ -10124,7 +10124,7 @@
"nl": "Email/SMS verkeer",
"zh-chs": "电子邮件/短信流量",
"xloc": [
- "default.handlebars->27->1789"
+ "default.handlebars->27->1791"
]
},
{
@@ -10163,7 +10163,7 @@
"ru": "Включить коды приглашения",
"zh-chs": "啟用邀請代碼",
"xloc": [
- "default.handlebars->27->1341"
+ "default.handlebars->27->1343"
]
},
{
@@ -10198,7 +10198,7 @@
"zh-chs": "啟用電子郵件兩因素驗證。",
"xloc": [
"default-mobile.handlebars->9->70",
- "default.handlebars->27->884"
+ "default.handlebars->27->886"
]
},
{
@@ -10222,7 +10222,7 @@
"en": "Enabled",
"nl": "Ingeschakeld",
"xloc": [
- "default.handlebars->27->1726"
+ "default.handlebars->27->1728"
]
},
{
@@ -10246,7 +10246,7 @@
"en": "End Time",
"nl": "Eindtijd",
"xloc": [
- "default.handlebars->27->1723"
+ "default.handlebars->27->1725"
]
},
{
@@ -10263,7 +10263,7 @@
"ru": "Английский",
"zh-chs": "英語",
"xloc": [
- "default.handlebars->27->946"
+ "default.handlebars->27->948"
]
},
{
@@ -10280,7 +10280,7 @@
"ru": "Английский (Австралия)",
"zh-chs": "英文(澳洲)",
"xloc": [
- "default.handlebars->27->947"
+ "default.handlebars->27->949"
]
},
{
@@ -10297,7 +10297,7 @@
"ru": "Английский (Белиз)",
"zh-chs": "英語(伯利茲)",
"xloc": [
- "default.handlebars->27->948"
+ "default.handlebars->27->950"
]
},
{
@@ -10314,7 +10314,7 @@
"ru": "Английский (Канада)",
"zh-chs": "英文(加拿大)",
"xloc": [
- "default.handlebars->27->949"
+ "default.handlebars->27->951"
]
},
{
@@ -10331,7 +10331,7 @@
"ru": "Английский (Ирландия)",
"zh-chs": "英文(愛爾蘭)",
"xloc": [
- "default.handlebars->27->950"
+ "default.handlebars->27->952"
]
},
{
@@ -10348,7 +10348,7 @@
"ru": "Английский (Ямайка)",
"zh-chs": "英文(牙買加)",
"xloc": [
- "default.handlebars->27->951"
+ "default.handlebars->27->953"
]
},
{
@@ -10365,7 +10365,7 @@
"ru": "Английский (Новая Зеландия)",
"zh-chs": "英文(紐西蘭)",
"xloc": [
- "default.handlebars->27->952"
+ "default.handlebars->27->954"
]
},
{
@@ -10382,7 +10382,7 @@
"ru": "Английский (Филиппины)",
"zh-chs": "英文(菲律賓)",
"xloc": [
- "default.handlebars->27->953"
+ "default.handlebars->27->955"
]
},
{
@@ -10399,7 +10399,7 @@
"ru": "Английский (Южная Африка)",
"zh-chs": "英語(南非)",
"xloc": [
- "default.handlebars->27->954"
+ "default.handlebars->27->956"
]
},
{
@@ -10416,7 +10416,7 @@
"ru": "Английский (Тринидад и Тобаго)",
"zh-chs": "英文(特立尼達和多巴哥)",
"xloc": [
- "default.handlebars->27->955"
+ "default.handlebars->27->957"
]
},
{
@@ -10433,7 +10433,7 @@
"ru": "Английский (Великобритания)",
"zh-chs": "英文(英國)",
"xloc": [
- "default.handlebars->27->956"
+ "default.handlebars->27->958"
]
},
{
@@ -10450,7 +10450,7 @@
"ru": "Английский (Соединенные Штаты)",
"zh-chs": "美國英語)",
"xloc": [
- "default.handlebars->27->957"
+ "default.handlebars->27->959"
]
},
{
@@ -10467,7 +10467,7 @@
"ru": "Английский (Зимбабве)",
"zh-chs": "英文(津巴布韋)",
"xloc": [
- "default.handlebars->27->958"
+ "default.handlebars->27->960"
]
},
{
@@ -10484,8 +10484,8 @@
"ru": "Ввод",
"zh-chs": "輸入",
"xloc": [
- "default.handlebars->27->1139",
- "default.handlebars->27->1140"
+ "default.handlebars->27->1141",
+ "default.handlebars->27->1142"
]
},
{
@@ -10502,7 +10502,7 @@
"ru": "Введите разделенный запятыми список имен административных областей.",
"zh-chs": "輸入管理領域名稱的逗號分隔列表。",
"xloc": [
- "default.handlebars->27->1498"
+ "default.handlebars->27->1500"
]
},
{
@@ -10536,7 +10536,7 @@
"ru": "Для удаленного набора введите текст, используя английскую раскладку и нажмите OK. Перед продолжением убедитесь, что курсор на удаленном компьютере установлен в правильное положение.",
"zh-chs": "輸入文本,然後單擊“確定”以使用美式英語鍵盤遠程輸入文本。在繼續操作之前,請確保將遠程光標放置在正確的位置。",
"xloc": [
- "default.handlebars->27->722"
+ "default.handlebars->27->724"
]
},
{
@@ -10584,7 +10584,7 @@
"nl": "Voer uw telefoonnummer in dat geschikt is voor SMS. Na verificatie kan het nummer worden gebruikt voor inlogverificatie en andere meldingen.",
"zh-chs": "输入支持SMS的电话号码。验证后,该号码可用于登录验证和其他通知。",
"xloc": [
- "default.handlebars->27->879"
+ "default.handlebars->27->881"
]
},
{
@@ -10635,7 +10635,7 @@
"ru": "Эсперанто",
"zh-chs": "世界語",
"xloc": [
- "default.handlebars->27->959"
+ "default.handlebars->27->961"
]
},
{
@@ -10652,7 +10652,7 @@
"ru": "Эстонский",
"zh-chs": "愛沙尼亞語",
"xloc": [
- "default.handlebars->27->960"
+ "default.handlebars->27->962"
]
},
{
@@ -10669,7 +10669,7 @@
"ru": "Детали события",
"zh-chs": "活動詳情",
"xloc": [
- "default.handlebars->27->799"
+ "default.handlebars->27->801"
]
},
{
@@ -10686,7 +10686,7 @@
"ru": "Экспорт списка событий",
"zh-chs": "活動列表導出",
"xloc": [
- "default.handlebars->27->1419"
+ "default.handlebars->27->1421"
]
},
{
@@ -10775,7 +10775,7 @@
"ru": "Расширенный ASCII",
"zh-chs": "擴展ASCII",
"xloc": [
- "default.handlebars->27->748"
+ "default.handlebars->27->750"
]
},
{
@@ -10809,7 +10809,7 @@
"ru": "Внешний",
"zh-chs": "外部",
"xloc": [
- "default.handlebars->27->1774"
+ "default.handlebars->27->1776"
]
},
{
@@ -10826,7 +10826,7 @@
"ru": "Mакедонский (БЮР)",
"zh-chs": "FYRO馬其頓語",
"xloc": [
- "default.handlebars->27->1010"
+ "default.handlebars->27->1012"
]
},
{
@@ -10843,7 +10843,7 @@
"ru": "Фарерский",
"zh-chs": "法羅語",
"xloc": [
- "default.handlebars->27->961"
+ "default.handlebars->27->963"
]
},
{
@@ -10873,7 +10873,7 @@
"ko": "원격 터미널 세션을 시작하지 못했습니다 : {0} ({1})",
"zh-chs": "无法启动远程终端会话{0}({1})",
"xloc": [
- "default.handlebars->27->704"
+ "default.handlebars->27->706"
]
},
{
@@ -10890,7 +10890,7 @@
"ru": "Фарси (Персидский)",
"zh-chs": "波斯語(波斯語)",
"xloc": [
- "default.handlebars->27->962"
+ "default.handlebars->27->964"
]
},
{
@@ -10925,7 +10925,7 @@
"ru": "Функции",
"zh-chs": "特徵",
"xloc": [
- "default.handlebars->27->1171"
+ "default.handlebars->27->1173"
]
},
{
@@ -10942,7 +10942,7 @@
"ru": "Фиджи",
"zh-chs": "斐濟",
"xloc": [
- "default.handlebars->27->963"
+ "default.handlebars->27->965"
]
},
{
@@ -10961,7 +10961,7 @@
"xloc": [
"default-mobile.handlebars->9->299",
"default.handlebars->27->440",
- "default.handlebars->27->771"
+ "default.handlebars->27->773"
]
},
{
@@ -10995,7 +10995,7 @@
"ru": "Драйвер файловой системы",
"zh-chs": "FileSystemDriver",
"xloc": [
- "default.handlebars->27->731"
+ "default.handlebars->27->733"
]
},
{
@@ -11014,8 +11014,8 @@
"xloc": [
"default-mobile.handlebars->9->167",
"default-mobile.handlebars->9->250",
- "default.handlebars->27->1260",
- "default.handlebars->27->1711",
+ "default.handlebars->27->1262",
+ "default.handlebars->27->1713",
"default.handlebars->27->220",
"default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevFiles",
"default.handlebars->contextMenu->cxfiles"
@@ -11052,8 +11052,8 @@
"ru": "Уведомление файлов",
"zh-chs": "文件通知",
"xloc": [
- "default.handlebars->27->1179",
- "default.handlebars->27->1624",
+ "default.handlebars->27->1181",
+ "default.handlebars->27->1626",
"default.handlebars->27->523"
]
},
@@ -11071,8 +11071,8 @@
"ru": "Запрос файлов",
"zh-chs": "文件提示",
"xloc": [
- "default.handlebars->27->1178",
- "default.handlebars->27->1623",
+ "default.handlebars->27->1180",
+ "default.handlebars->27->1625",
"default.handlebars->27->522"
]
},
@@ -11110,7 +11110,7 @@
"ru": "Финский",
"zh-chs": "芬蘭",
"xloc": [
- "default.handlebars->27->964"
+ "default.handlebars->27->966"
]
},
{
@@ -11233,8 +11233,8 @@
"ru": "Принудительно сбросить пароль при следующем входе в систему.",
"zh-chs": "下次登錄時強制重置密碼。",
"xloc": [
- "default.handlebars->27->1492",
- "default.handlebars->27->1662"
+ "default.handlebars->27->1494",
+ "default.handlebars->27->1664"
]
},
{
@@ -11320,8 +11320,8 @@
"ru": "Свободно",
"zh-chs": "自由",
"xloc": [
- "default.handlebars->27->1735",
- "default.handlebars->27->1737"
+ "default.handlebars->27->1737",
+ "default.handlebars->27->1739"
]
},
{
@@ -11356,7 +11356,7 @@
"ru": "Французский (Бельгия)",
"zh-chs": "法語(比利時)",
"xloc": [
- "default.handlebars->27->966"
+ "default.handlebars->27->968"
]
},
{
@@ -11373,7 +11373,7 @@
"ru": "Французский (Канада)",
"zh-chs": "法語(加拿大)",
"xloc": [
- "default.handlebars->27->967"
+ "default.handlebars->27->969"
]
},
{
@@ -11390,7 +11390,7 @@
"ru": "Французский (Франция)",
"zh-chs": "法語(法國)",
"xloc": [
- "default.handlebars->27->968"
+ "default.handlebars->27->970"
]
},
{
@@ -11407,7 +11407,7 @@
"ru": "Французский (Люксембург)",
"zh-chs": "法語(盧森堡)",
"xloc": [
- "default.handlebars->27->969"
+ "default.handlebars->27->971"
]
},
{
@@ -11424,7 +11424,7 @@
"ru": "Французский (Монако)",
"zh-chs": "法語(摩納哥)",
"xloc": [
- "default.handlebars->27->970"
+ "default.handlebars->27->972"
]
},
{
@@ -11441,7 +11441,7 @@
"ru": "Французский (Стандартный)",
"zh-chs": "法語(標準)",
"xloc": [
- "default.handlebars->27->965"
+ "default.handlebars->27->967"
]
},
{
@@ -11458,7 +11458,7 @@
"ru": "Французский (Швейцария)",
"zh-chs": "法語(瑞士)",
"xloc": [
- "default.handlebars->27->971"
+ "default.handlebars->27->973"
]
},
{
@@ -11475,7 +11475,7 @@
"ru": "Фризский",
"zh-chs": "弗里斯蘭語",
"xloc": [
- "default.handlebars->27->972"
+ "default.handlebars->27->974"
]
},
{
@@ -11492,7 +11492,7 @@
"ru": "Фриульский",
"zh-chs": "弗留利",
"xloc": [
- "default.handlebars->27->973"
+ "default.handlebars->27->975"
]
},
{
@@ -11513,9 +11513,9 @@
"default-mobile.handlebars->9->387",
"default-mobile.handlebars->9->396",
"default-mobile.handlebars->9->414",
- "default.handlebars->27->1146",
- "default.handlebars->27->1278",
- "default.handlebars->27->1504"
+ "default.handlebars->27->1148",
+ "default.handlebars->27->1280",
+ "default.handlebars->27->1506"
]
},
{
@@ -11532,7 +11532,7 @@
"ru": "Администратор с полным доступом (все права)",
"zh-chs": "正式管理員(保留所有權利)",
"xloc": [
- "default.handlebars->27->1312"
+ "default.handlebars->27->1314"
]
},
{
@@ -11563,7 +11563,7 @@
"ru": "Полные права на устройство",
"zh-chs": "完整的設備權限",
"xloc": [
- "default.handlebars->27->587"
+ "default.handlebars->27->589"
]
},
{
@@ -11579,7 +11579,7 @@
"ru": "Полные права",
"zh-chs": "完全权利",
"xloc": [
- "default.handlebars->27->603"
+ "default.handlebars->27->605"
]
},
{
@@ -11615,7 +11615,7 @@
"ru": "Администратор с полным доступом",
"zh-chs": "正式管理員",
"xloc": [
- "default.handlebars->27->1588"
+ "default.handlebars->27->1590"
]
},
{
@@ -11629,7 +11629,7 @@
"zh-chs": "显卡",
"xloc": [
"default-mobile.handlebars->9->365",
- "default.handlebars->27->847"
+ "default.handlebars->27->849"
]
},
{
@@ -11646,7 +11646,7 @@
"ru": "Гэльский (Ирландский)",
"zh-chs": "蓋爾語(愛爾蘭)",
"xloc": [
- "default.handlebars->27->975"
+ "default.handlebars->27->977"
]
},
{
@@ -11663,7 +11663,7 @@
"ru": "Гэльский (Шотландия)",
"zh-chs": "蓋爾語(蘇格蘭語)",
"xloc": [
- "default.handlebars->27->974"
+ "default.handlebars->27->976"
]
},
{
@@ -11680,7 +11680,7 @@
"ru": "Галицкий",
"zh-chs": "加拉契人",
"xloc": [
- "default.handlebars->27->976"
+ "default.handlebars->27->978"
]
},
{
@@ -11788,7 +11788,7 @@
"ru": "Грузинский",
"zh-chs": "格魯吉亞人",
"xloc": [
- "default.handlebars->27->977"
+ "default.handlebars->27->979"
]
},
{
@@ -11805,7 +11805,7 @@
"ru": "Немецкий (Австрия)",
"zh-chs": "德語(奧地利)",
"xloc": [
- "default.handlebars->27->979"
+ "default.handlebars->27->981"
]
},
{
@@ -11822,7 +11822,7 @@
"ru": "Немецкий (Германия)",
"zh-chs": "德文(德國)",
"xloc": [
- "default.handlebars->27->980"
+ "default.handlebars->27->982"
]
},
{
@@ -11839,7 +11839,7 @@
"ru": "Немецкий (Лихтенштейн)",
"zh-chs": "德文(列支敦士登)",
"xloc": [
- "default.handlebars->27->981"
+ "default.handlebars->27->983"
]
},
{
@@ -11856,7 +11856,7 @@
"ru": "Немецкий (Люксембург)",
"zh-chs": "德語(盧森堡)",
"xloc": [
- "default.handlebars->27->982"
+ "default.handlebars->27->984"
]
},
{
@@ -11873,7 +11873,7 @@
"ru": "Немецкий (Стандартный)",
"zh-chs": "德語(標準)",
"xloc": [
- "default.handlebars->27->978"
+ "default.handlebars->27->980"
]
},
{
@@ -11890,7 +11890,7 @@
"ru": "Немецкий (Швейцария)",
"zh-chs": "德語(瑞士)",
"xloc": [
- "default.handlebars->27->983"
+ "default.handlebars->27->985"
]
},
{
@@ -11907,7 +11907,7 @@
"ru": "Получить учетные данные MQTT для этого устройства.",
"zh-chs": "獲取此設備的MQTT登錄憑據。",
"xloc": [
- "default.handlebars->27->568"
+ "default.handlebars->27->570"
]
},
{
@@ -11973,7 +11973,7 @@
"ru": "Хорошо",
"zh-chs": "好",
"xloc": [
- "default.handlebars->27->1142"
+ "default.handlebars->27->1144"
]
},
{
@@ -12010,7 +12010,7 @@
"ru": "Греческий",
"zh-chs": "希臘語",
"xloc": [
- "default.handlebars->27->984"
+ "default.handlebars->27->986"
]
},
{
@@ -12046,8 +12046,8 @@
"ru": "Групповое действие",
"zh-chs": "集體行動",
"xloc": [
- "default.handlebars->27->1456",
- "default.handlebars->27->1525",
+ "default.handlebars->27->1458",
+ "default.handlebars->27->1527",
"default.handlebars->27->408",
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar",
"default.handlebars->container->column_l->p4->3->1->0->3->3",
@@ -12058,7 +12058,7 @@
"en": "Group Identifier",
"nl": "Groepsidentificatie",
"xloc": [
- "default.handlebars->27->1542"
+ "default.handlebars->27->1544"
]
},
{
@@ -12075,7 +12075,7 @@
"ru": "Члены группы",
"zh-chs": "小組成員",
"xloc": [
- "default.handlebars->27->1551"
+ "default.handlebars->27->1553"
]
},
{
@@ -12092,7 +12092,7 @@
"ru": "Права на группу для пользователя {0}.",
"zh-chs": "用戶{0}的組權限。",
"xloc": [
- "default.handlebars->27->1277"
+ "default.handlebars->27->1279"
]
},
{
@@ -12109,7 +12109,7 @@
"ru": "Права на группу для {0}.",
"zh-chs": "{0}的組權限。",
"xloc": [
- "default.handlebars->27->1276"
+ "default.handlebars->27->1278"
]
},
{
@@ -12160,7 +12160,7 @@
"ru": "Гуджарати",
"zh-chs": "古久拉提",
"xloc": [
- "default.handlebars->27->985"
+ "default.handlebars->27->987"
]
},
{
@@ -12196,7 +12196,7 @@
"ru": "Гаитянский",
"zh-chs": "海地",
"xloc": [
- "default.handlebars->27->986"
+ "default.handlebars->27->988"
]
},
{
@@ -12230,7 +12230,7 @@
"ru": "Жесткое отключение агента",
"zh-chs": "硬斷開劑",
"xloc": [
- "default.handlebars->27->874"
+ "default.handlebars->27->876"
]
},
{
@@ -12247,7 +12247,7 @@
"ru": "Всего кучи",
"zh-chs": "堆總數",
"xloc": [
- "default.handlebars->27->1776"
+ "default.handlebars->27->1778"
]
},
{
@@ -12264,7 +12264,7 @@
"ru": "Куча используется",
"zh-chs": "堆使用",
"xloc": [
- "default.handlebars->27->1775"
+ "default.handlebars->27->1777"
]
},
{
@@ -12281,7 +12281,7 @@
"ru": "Иврит",
"zh-chs": "希伯來語",
"xloc": [
- "default.handlebars->27->987"
+ "default.handlebars->27->989"
]
},
{
@@ -12315,7 +12315,7 @@
"ru": "Помочь перевести MeshCentral",
"zh-chs": "幫助翻譯MeshCentral",
"xloc": [
- "default.handlebars->27->1101"
+ "default.handlebars->27->1103"
]
},
{
@@ -12401,7 +12401,7 @@
"ru": "Хинди",
"zh-chs": "印地語",
"xloc": [
- "default.handlebars->27->988"
+ "default.handlebars->27->990"
]
},
{
@@ -12437,7 +12437,7 @@
"zh-chs": "持有1份副本",
"xloc": [
"default-mobile.handlebars->9->308",
- "default.handlebars->27->780"
+ "default.handlebars->27->782"
]
},
{
@@ -12455,7 +12455,7 @@
"zh-chs": "持有1個搬家公司",
"xloc": [
"default-mobile.handlebars->9->312",
- "default.handlebars->27->784"
+ "default.handlebars->27->786"
]
},
{
@@ -12473,7 +12473,7 @@
"zh-chs": "保留{0}個條目進行複制",
"xloc": [
"default-mobile.handlebars->9->306",
- "default.handlebars->27->778"
+ "default.handlebars->27->780"
]
},
{
@@ -12491,7 +12491,7 @@
"zh-chs": "保留{0}個條目以進行移動",
"xloc": [
"default-mobile.handlebars->9->310",
- "default.handlebars->27->782"
+ "default.handlebars->27->784"
]
},
{
@@ -12509,7 +12509,7 @@
"zh-chs": "保持{2}的{0}入口{1}",
"xloc": [
"default-mobile.handlebars->9->129",
- "default.handlebars->27->1406"
+ "default.handlebars->27->1408"
]
},
{
@@ -12532,7 +12532,7 @@
"default-mobile.handlebars->9->272",
"default.handlebars->27->247",
"default.handlebars->27->480",
- "default.handlebars->27->697"
+ "default.handlebars->27->699"
]
},
{
@@ -12549,7 +12549,7 @@
"ru": "Синхронизация имени хоста",
"zh-chs": "主機名同步",
"xloc": [
- "default.handlebars->27->1169"
+ "default.handlebars->27->1171"
]
},
{
@@ -12566,7 +12566,7 @@
"ru": "Венгерский",
"zh-chs": "匈牙利",
"xloc": [
- "default.handlebars->27->989"
+ "default.handlebars->27->991"
]
},
{
@@ -12619,7 +12619,7 @@
"zh-chs": "IP:{0}",
"xloc": [
"default-mobile.handlebars->9->338",
- "default.handlebars->27->820"
+ "default.handlebars->27->822"
]
},
{
@@ -12637,7 +12637,7 @@
"zh-chs": "IP:{0},掩碼:{1},網關:{2}",
"xloc": [
"default-mobile.handlebars->9->336",
- "default.handlebars->27->818"
+ "default.handlebars->27->820"
]
},
{
@@ -12656,8 +12656,8 @@
"xloc": [
"default-mobile.handlebars->9->335",
"default-mobile.handlebars->9->337",
- "default.handlebars->27->817",
- "default.handlebars->27->819"
+ "default.handlebars->27->819",
+ "default.handlebars->27->821"
]
},
{
@@ -12725,7 +12725,7 @@
"ru": "Исландский",
"zh-chs": "冰島的",
"xloc": [
- "default.handlebars->27->990"
+ "default.handlebars->27->992"
]
},
{
@@ -12743,7 +12743,7 @@
"zh-chs": "圖標選擇",
"xloc": [
"default-mobile.handlebars->9->270",
- "default.handlebars->27->695"
+ "default.handlebars->27->697"
]
},
{
@@ -12761,7 +12761,7 @@
"zh-chs": "識別碼",
"xloc": [
"default-mobile.handlebars->9->363",
- "default.handlebars->27->845"
+ "default.handlebars->27->847"
]
},
{
@@ -12864,7 +12864,7 @@
"ru": "Индонезийский",
"zh-chs": "印度尼西亞",
"xloc": [
- "default.handlebars->27->991"
+ "default.handlebars->27->993"
]
},
{
@@ -12981,7 +12981,7 @@
"ru": "Установка CIRA",
"zh-chs": "安裝CIRA",
"xloc": [
- "default.handlebars->27->1202"
+ "default.handlebars->27->1204"
]
},
{
@@ -12998,7 +12998,7 @@
"ru": "Локальная установка",
"zh-chs": "安裝本地",
"xloc": [
- "default.handlebars->27->1204"
+ "default.handlebars->27->1206"
]
},
{
@@ -13015,8 +13015,8 @@
"ru": "Тип установки",
"zh-chs": "安裝類型",
"xloc": [
- "default.handlebars->27->1343",
- "default.handlebars->27->1350",
+ "default.handlebars->27->1345",
+ "default.handlebars->27->1352",
"default.handlebars->27->309",
"default.handlebars->27->331"
]
@@ -13035,7 +13035,7 @@
"ru": "Intel (F10 = ESC+[OM)",
"zh-chs": "英特爾(F10 = ESC + [OM)",
"xloc": [
- "default.handlebars->27->750",
+ "default.handlebars->27->752",
"default.handlebars->container->column_l->p12->termTable->1->1->6->1->1->terminalSettingsButtons"
]
},
@@ -13053,10 +13053,10 @@
"ru": "Intel AMT",
"zh-chs": "英特爾AMT",
"xloc": [
- "default.handlebars->27->1362",
- "default.handlebars->27->1370",
- "default.handlebars->27->1772",
- "default.handlebars->27->1794"
+ "default.handlebars->27->1364",
+ "default.handlebars->27->1372",
+ "default.handlebars->27->1774",
+ "default.handlebars->27->1796"
]
},
{
@@ -13097,14 +13097,14 @@
"en": "Intel AMT Redirection",
"nl": "Intel AMT omleiding",
"xloc": [
- "default.handlebars->27->1713"
+ "default.handlebars->27->1715"
]
},
{
"en": "Intel AMT WSMAN",
"nl": "Intel AMT WSMAN",
"xloc": [
- "default.handlebars->27->1712"
+ "default.handlebars->27->1714"
]
},
{
@@ -13223,7 +13223,7 @@
"ru": "Intel ASCII",
"zh-chs": "英特爾ASCII",
"xloc": [
- "default.handlebars->27->749"
+ "default.handlebars->27->751"
]
},
{
@@ -13243,8 +13243,8 @@
"default-mobile.handlebars->9->194",
"default-mobile.handlebars->9->229",
"default-mobile.handlebars->9->234",
- "default.handlebars->27->1186",
- "default.handlebars->27->1196",
+ "default.handlebars->27->1188",
+ "default.handlebars->27->1198",
"default.handlebars->27->450",
"default.handlebars->27->505",
"default.handlebars->27->533"
@@ -13320,7 +13320,7 @@
"ru": "Политика Intel® AMT",
"zh-chs": "英特爾®AMT政策",
"xloc": [
- "default.handlebars->27->1225"
+ "default.handlebars->27->1227"
]
},
{
@@ -13407,8 +13407,8 @@
"zh-chs": "英特爾®AMT已連接",
"xloc": [
"default-mobile.handlebars->9->244",
- "default.handlebars->27->572",
- "default.handlebars->27->573"
+ "default.handlebars->27->574",
+ "default.handlebars->27->575"
]
},
{
@@ -13425,8 +13425,8 @@
"ru": "События Intel® AMT desktop или serial.",
"zh-chs": "英特爾®AMT桌面和串行事件。",
"xloc": [
- "default.handlebars->27->1107",
- "default.handlebars->27->1358"
+ "default.handlebars->27->1109",
+ "default.handlebars->27->1360"
]
},
{
@@ -13444,8 +13444,8 @@
"zh-chs": "檢測到英特爾®AMT",
"xloc": [
"default-mobile.handlebars->9->245",
- "default.handlebars->27->574",
- "default.handlebars->27->575"
+ "default.handlebars->27->576",
+ "default.handlebars->27->577"
]
},
{
@@ -13515,8 +13515,8 @@
"zh-chs": "僅限英特爾®AMT,無代理",
"xloc": [
"default-mobile.handlebars->9->378",
- "default.handlebars->27->1136",
- "default.handlebars->27->1162"
+ "default.handlebars->27->1138",
+ "default.handlebars->27->1164"
]
},
{
@@ -13551,7 +13551,7 @@
"zh-chs": "英特爾®主動管理技術(英特爾®AMT)",
"xloc": [
"default-mobile.handlebars->9->355",
- "default.handlebars->27->837"
+ "default.handlebars->27->839"
]
},
{
@@ -13718,7 +13718,7 @@
"ru": "Интерактивный",
"zh-chs": "互動",
"xloc": [
- "default.handlebars->27->732"
+ "default.handlebars->27->734"
]
},
{
@@ -13735,8 +13735,8 @@
"ru": "Только интерактивный режим",
"zh-chs": "僅限互動",
"xloc": [
- "default.handlebars->27->1346",
- "default.handlebars->27->1353",
+ "default.handlebars->27->1348",
+ "default.handlebars->27->1355",
"default.handlebars->27->312",
"default.handlebars->27->334"
]
@@ -13772,7 +13772,7 @@
"ru": "Инуктитут",
"zh-chs": "因紐特人",
"xloc": [
- "default.handlebars->27->992"
+ "default.handlebars->27->994"
]
},
{
@@ -13789,7 +13789,7 @@
"ru": "Некорректный тип группы устройств",
"zh-chs": "無效的設備組類型",
"xloc": [
- "default.handlebars->27->1749"
+ "default.handlebars->27->1751"
]
},
{
@@ -13806,7 +13806,7 @@
"ru": "Некорректный JSON",
"zh-chs": "無效的JSON",
"xloc": [
- "default.handlebars->27->1743"
+ "default.handlebars->27->1745"
]
},
{
@@ -13823,8 +13823,8 @@
"ru": "Некорректный формат файла JSON.",
"zh-chs": "無效的JSON文件格式。",
"xloc": [
- "default.handlebars->27->1470",
- "default.handlebars->27->1472"
+ "default.handlebars->27->1472",
+ "default.handlebars->27->1474"
]
},
{
@@ -13841,7 +13841,7 @@
"ru": "Некорректный файл JSON: {0}.",
"zh-chs": "無效的JSON文件:{0}。",
"xloc": [
- "default.handlebars->27->1468"
+ "default.handlebars->27->1470"
]
},
{
@@ -13858,7 +13858,7 @@
"ru": "Некорректная сигнатура PKCS",
"zh-chs": "無效的PKCS簽名",
"xloc": [
- "default.handlebars->27->1741"
+ "default.handlebars->27->1743"
]
},
{
@@ -13875,7 +13875,7 @@
"ru": "Некорректная сигнатура RSA",
"zh-chs": "無效的RSA密碼",
"xloc": [
- "default.handlebars->27->1742"
+ "default.handlebars->27->1744"
]
},
{
@@ -14011,7 +14011,7 @@
"ru": "Коды приглашений могут использоваться любым пользователем для присоединения устройств к этой группе устройств по следующей общедоступной ссылке:",
"zh-chs": "任何人都可以使用邀請代碼通過以下公共鏈接將設備加入該設備組:",
"xloc": [
- "default.handlebars->27->1348"
+ "default.handlebars->27->1350"
]
},
{
@@ -14044,7 +14044,7 @@
"ru": "Пригласить",
"zh-chs": "邀請",
"xloc": [
- "default.handlebars->27->1212",
+ "default.handlebars->27->1214",
"default.handlebars->27->244",
"default.handlebars->27->324"
]
@@ -14063,11 +14063,11 @@
"ru": "Пригласительные коды",
"zh-chs": "邀請碼",
"xloc": [
- "default.handlebars->27->1190",
- "default.handlebars->27->1342",
- "default.handlebars->27->1347",
+ "default.handlebars->27->1192",
+ "default.handlebars->27->1344",
"default.handlebars->27->1349",
- "default.handlebars->27->1354"
+ "default.handlebars->27->1351",
+ "default.handlebars->27->1356"
]
},
{
@@ -14098,7 +14098,7 @@
"nl": "Nodig iemand uit om de mesh-agent in deze apparaatgroep te installeren.",
"zh-chs": "邀请某人在该设备组上安装网状代理。",
"xloc": [
- "default.handlebars->27->1211",
+ "default.handlebars->27->1213",
"default.handlebars->27->243"
]
},
@@ -14133,7 +14133,7 @@
"ru": "Ирландский",
"zh-chs": "愛爾蘭人",
"xloc": [
- "default.handlebars->27->993"
+ "default.handlebars->27->995"
]
},
{
@@ -14150,7 +14150,7 @@
"ru": "Итальянский (Стандартный)",
"zh-chs": "意大利語(標準)",
"xloc": [
- "default.handlebars->27->994"
+ "default.handlebars->27->996"
]
},
{
@@ -14167,7 +14167,7 @@
"ru": "Итальянский (Швейцария)",
"zh-chs": "義大利文(瑞士)",
"xloc": [
- "default.handlebars->27->995"
+ "default.handlebars->27->997"
]
},
{
@@ -14184,8 +14184,8 @@
"ru": "Формат JSON",
"zh-chs": "JSON格式",
"xloc": [
- "default.handlebars->27->1417",
- "default.handlebars->27->1476",
+ "default.handlebars->27->1419",
+ "default.handlebars->27->1478",
"default.handlebars->27->415"
]
},
@@ -14203,7 +14203,7 @@
"ru": "Японский",
"zh-chs": "日本",
"xloc": [
- "default.handlebars->27->996"
+ "default.handlebars->27->998"
]
},
{
@@ -14220,7 +14220,7 @@
"ru": "Каннада",
"zh-chs": "卡納達語",
"xloc": [
- "default.handlebars->27->997"
+ "default.handlebars->27->999"
]
},
{
@@ -14237,7 +14237,7 @@
"ru": "Кашмирский",
"zh-chs": "克什米爾語",
"xloc": [
- "default.handlebars->27->998"
+ "default.handlebars->27->1000"
]
},
{
@@ -14254,7 +14254,7 @@
"ru": "Казахский",
"zh-chs": "哈薩克語",
"xloc": [
- "default.handlebars->27->999"
+ "default.handlebars->27->1001"
]
},
{
@@ -14271,7 +14271,7 @@
"ru": "Драйвер ядра",
"zh-chs": "內核驅動程序",
"xloc": [
- "default.handlebars->27->733"
+ "default.handlebars->27->735"
]
},
{
@@ -14288,8 +14288,8 @@
"ru": "Имя ключа",
"zh-chs": "鍵名",
"xloc": [
- "default.handlebars->27->890",
- "default.handlebars->27->893"
+ "default.handlebars->27->892",
+ "default.handlebars->27->895"
]
},
{
@@ -14330,7 +14330,7 @@
"ru": "Кхмерский",
"zh-chs": "高棉語",
"xloc": [
- "default.handlebars->27->1000"
+ "default.handlebars->27->1002"
]
},
{
@@ -14347,7 +14347,7 @@
"ru": "Киргизский",
"zh-chs": "吉爾吉斯",
"xloc": [
- "default.handlebars->27->1001"
+ "default.handlebars->27->1003"
]
},
{
@@ -14364,7 +14364,7 @@
"ru": "Клингонский",
"zh-chs": "克林貢",
"xloc": [
- "default.handlebars->27->1002"
+ "default.handlebars->27->1004"
]
},
{
@@ -14382,7 +14382,7 @@
"zh-chs": "已知的",
"xloc": [
"default-mobile.handlebars->9->354",
- "default.handlebars->27->836"
+ "default.handlebars->27->838"
]
},
{
@@ -14399,7 +14399,7 @@
"ru": "Korean",
"zh-chs": "韓語",
"xloc": [
- "default.handlebars->27->1003"
+ "default.handlebars->27->1005"
]
},
{
@@ -14416,7 +14416,7 @@
"ru": "Корейский (Северная Корея)",
"zh-chs": "韓語(朝鮮)",
"xloc": [
- "default.handlebars->27->1004"
+ "default.handlebars->27->1006"
]
},
{
@@ -14433,7 +14433,7 @@
"ru": "Корейский (Южная Корея)",
"zh-chs": "韓語(韓國)",
"xloc": [
- "default.handlebars->27->1005"
+ "default.handlebars->27->1007"
]
},
{
@@ -14450,8 +14450,8 @@
"ru": "LF",
"zh-chs": "如果",
"xloc": [
- "default.handlebars->27->745",
- "default.handlebars->27->754"
+ "default.handlebars->27->747",
+ "default.handlebars->27->756"
]
},
{
@@ -14468,7 +14468,7 @@
"ru": "Язык",
"zh-chs": "語言",
"xloc": [
- "default.handlebars->27->1099"
+ "default.handlebars->27->1101"
]
},
{
@@ -14502,7 +14502,7 @@
"ru": "Большой Фокус",
"zh-chs": "大焦點",
"xloc": [
- "default.handlebars->27->721"
+ "default.handlebars->27->723"
]
},
{
@@ -14685,7 +14685,7 @@
"ru": "Последний доступ",
"zh-chs": "最後訪問",
"xloc": [
- "default.handlebars->27->1425"
+ "default.handlebars->27->1427"
]
},
{
@@ -14702,7 +14702,7 @@
"ru": "Последний вход в систему",
"zh-chs": "上次登錄",
"xloc": [
- "default.handlebars->27->1606"
+ "default.handlebars->27->1608"
]
},
{
@@ -14725,9 +14725,9 @@
"default.handlebars->27->70",
"default.handlebars->27->72",
"default.handlebars->27->74",
- "default.handlebars->27->808",
- "default.handlebars->27->809",
- "default.handlebars->27->810"
+ "default.handlebars->27->810",
+ "default.handlebars->27->811",
+ "default.handlebars->27->812"
]
},
{
@@ -14747,8 +14747,8 @@
"default-mobile.handlebars->9->323",
"default-mobile.handlebars->9->325",
"default.handlebars->27->69",
- "default.handlebars->27->805",
- "default.handlebars->27->807"
+ "default.handlebars->27->807",
+ "default.handlebars->27->809"
]
},
{
@@ -14765,7 +14765,7 @@
"ru": "Последнее изменение: {0}",
"zh-chs": "上次更改:{0}",
"xloc": [
- "default.handlebars->27->1610"
+ "default.handlebars->27->1612"
]
},
{
@@ -14816,7 +14816,7 @@
"ru": "Последний вход в систему: {0}",
"zh-chs": "上次登錄:{0}",
"xloc": [
- "default.handlebars->27->1435"
+ "default.handlebars->27->1437"
]
},
{
@@ -14833,7 +14833,7 @@
"ru": "Последнее посещение:",
"zh-chs": "最後一次露面:",
"xloc": [
- "default.handlebars->27->578",
+ "default.handlebars->27->580",
"default.handlebars->27->65"
]
},
@@ -14902,7 +14902,7 @@
"ru": "Латинский",
"zh-chs": "拉丁",
"xloc": [
- "default.handlebars->27->1006"
+ "default.handlebars->27->1008"
]
},
{
@@ -14919,7 +14919,13 @@
"ru": "Латышский",
"zh-chs": "拉脫維亞語",
"xloc": [
- "default.handlebars->27->1007"
+ "default.handlebars->27->1009"
+ ]
+ },
+ {
+ "en": "Launch RDP session to this device",
+ "xloc": [
+ "default.handlebars->27->568"
]
},
{
@@ -14939,7 +14945,7 @@
"nl": "Leeg laten voor geen.",
"zh-chs": "一无所有。",
"xloc": [
- "default.handlebars->27->1650"
+ "default.handlebars->27->1652"
]
},
{
@@ -14978,7 +14984,7 @@
"ru": "Меньше",
"zh-chs": "減",
"xloc": [
- "default.handlebars->27->1811"
+ "default.handlebars->27->1813"
]
},
{
@@ -14994,8 +15000,8 @@
"ru": "Предельные события",
"zh-chs": "极限赛事",
"xloc": [
- "default.handlebars->27->599",
- "default.handlebars->27->618"
+ "default.handlebars->27->601",
+ "default.handlebars->27->620"
]
},
{
@@ -15031,9 +15037,9 @@
"zh-chs": "有限輸入",
"xloc": [
"default-mobile.handlebars->9->427",
- "default.handlebars->27->1326",
- "default.handlebars->27->592",
- "default.handlebars->27->611"
+ "default.handlebars->27->1328",
+ "default.handlebars->27->594",
+ "default.handlebars->27->613"
]
},
{
@@ -15051,7 +15057,7 @@
"zh-chs": "僅限於輸入",
"xloc": [
"default-mobile.handlebars->9->402",
- "default.handlebars->27->1284"
+ "default.handlebars->27->1286"
]
},
{
@@ -15224,7 +15230,7 @@
"ru": "Linux ARM, Raspberry Pi (32bit)",
"zh-chs": "Linux ARM,Raspberry Pi(32位)",
"xloc": [
- "default.handlebars->27->679"
+ "default.handlebars->27->681"
]
},
{
@@ -15330,7 +15336,7 @@
"ru": "Linux x86 (32bit)",
"zh-chs": "Linux x86(32位)",
"xloc": [
- "default.handlebars->27->676"
+ "default.handlebars->27->678"
]
},
{
@@ -15347,7 +15353,7 @@
"ru": "Linux x86 (64bit)",
"zh-chs": "Linux x86(64位)",
"xloc": [
- "default.handlebars->27->677"
+ "default.handlebars->27->679"
]
},
{
@@ -15382,7 +15388,7 @@
"ru": "Литовский",
"zh-chs": "立陶宛語",
"xloc": [
- "default.handlebars->27->1008"
+ "default.handlebars->27->1010"
]
},
{
@@ -15400,10 +15406,10 @@
"zh-chs": "載入中...",
"xloc": [
"default-mobile.handlebars->9->72",
- "default.handlebars->27->1153",
- "default.handlebars->27->1157",
- "default.handlebars->27->668",
- "default.handlebars->27->886"
+ "default.handlebars->27->1155",
+ "default.handlebars->27->1159",
+ "default.handlebars->27->670",
+ "default.handlebars->27->888"
]
},
{
@@ -15471,7 +15477,7 @@
"ru": "Настройки локализации",
"zh-chs": "本地化設置",
"xloc": [
- "default.handlebars->27->1102",
+ "default.handlebars->27->1104",
"default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->7"
]
},
@@ -15523,7 +15529,7 @@
"ru": "Заблокировать учетную запись",
"zh-chs": "鎖定賬戶",
"xloc": [
- "default.handlebars->27->1511"
+ "default.handlebars->27->1513"
]
},
{
@@ -15540,7 +15546,7 @@
"ru": "Заблокировать учетную запись",
"zh-chs": "鎖定賬戶",
"xloc": [
- "default.handlebars->27->1453"
+ "default.handlebars->27->1455"
]
},
{
@@ -15557,7 +15563,7 @@
"ru": "Заблокирован",
"zh-chs": "已鎖定",
"xloc": [
- "default.handlebars->27->1436"
+ "default.handlebars->27->1438"
]
},
{
@@ -15574,7 +15580,7 @@
"ru": "Заблокированная учетная запись",
"zh-chs": "賬戶鎖定",
"xloc": [
- "default.handlebars->27->1585"
+ "default.handlebars->27->1587"
]
},
{
@@ -15761,7 +15767,7 @@
"ru": "Люксембургский",
"zh-chs": "盧森堡語",
"xloc": [
- "default.handlebars->27->1009"
+ "default.handlebars->27->1011"
]
},
{
@@ -15780,8 +15786,8 @@
"xloc": [
"default-mobile.handlebars->9->331",
"default-mobile.handlebars->9->333",
- "default.handlebars->27->813",
- "default.handlebars->27->815"
+ "default.handlebars->27->815",
+ "default.handlebars->27->817"
]
},
{
@@ -15816,7 +15822,7 @@
"zh-chs": "MAC:{0}",
"xloc": [
"default-mobile.handlebars->9->334",
- "default.handlebars->27->816"
+ "default.handlebars->27->818"
]
},
{
@@ -15834,7 +15840,7 @@
"zh-chs": "MAC:{0},網關:{1}",
"xloc": [
"default-mobile.handlebars->9->332",
- "default.handlebars->27->814"
+ "default.handlebars->27->816"
]
},
{
@@ -15892,8 +15898,8 @@
"default.handlebars->27->187",
"default.handlebars->27->393",
"default.handlebars->27->537",
- "default.handlebars->27->864",
- "default.handlebars->27->865",
+ "default.handlebars->27->866",
+ "default.handlebars->27->867",
"default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->3"
]
},
@@ -15928,7 +15934,7 @@
"ru": "MQTT Вход",
"zh-chs": "MQTT登錄",
"xloc": [
- "default.handlebars->27->569"
+ "default.handlebars->27->571"
]
},
{
@@ -15946,7 +15952,7 @@
"zh-chs": "MQTT通道已連接",
"xloc": [
"default-mobile.handlebars->9->246",
- "default.handlebars->27->577"
+ "default.handlebars->27->579"
]
},
{
@@ -15964,7 +15970,7 @@
"zh-chs": "MQTT已連接",
"xloc": [
"default.handlebars->27->147",
- "default.handlebars->27->576"
+ "default.handlebars->27->578"
]
},
{
@@ -16003,6 +16009,12 @@
"default.handlebars->27->151"
]
},
+ {
+ "en": "MSTSC",
+ "xloc": [
+ "default.handlebars->27->569"
+ ]
+ },
{
"cs": "macOS",
"de": "MacOS",
@@ -16034,7 +16046,7 @@
"ru": "MacOS (64bit)",
"zh-chs": "MacOS(64位)",
"xloc": [
- "default.handlebars->27->678"
+ "default.handlebars->27->680"
]
},
{
@@ -16087,7 +16099,7 @@
"ru": "Сообщения главного сервера",
"zh-chs": "主服務器消息",
"xloc": [
- "default.handlebars->27->1783"
+ "default.handlebars->27->1785"
]
},
{
@@ -16104,7 +16116,7 @@
"ru": "Малайский",
"zh-chs": "馬來語",
"xloc": [
- "default.handlebars->27->1011"
+ "default.handlebars->27->1013"
]
},
{
@@ -16121,7 +16133,7 @@
"ru": "Малаяламский",
"zh-chs": "馬拉雅拉姆語",
"xloc": [
- "default.handlebars->27->1012"
+ "default.handlebars->27->1014"
]
},
{
@@ -16138,7 +16150,7 @@
"ru": "Мальтийский",
"zh-chs": "馬耳他語",
"xloc": [
- "default.handlebars->27->1013"
+ "default.handlebars->27->1015"
]
},
{
@@ -16175,8 +16187,8 @@
"xloc": [
"default-mobile.handlebars->9->399",
"default-mobile.handlebars->9->417",
- "default.handlebars->27->1281",
- "default.handlebars->27->1315"
+ "default.handlebars->27->1283",
+ "default.handlebars->27->1317"
]
},
{
@@ -16195,8 +16207,8 @@
"xloc": [
"default-mobile.handlebars->9->398",
"default-mobile.handlebars->9->416",
- "default.handlebars->27->1280",
- "default.handlebars->27->1314"
+ "default.handlebars->27->1282",
+ "default.handlebars->27->1316"
]
},
{
@@ -16212,14 +16224,14 @@
"ru": "Управление устройствами",
"zh-chs": "管理设备",
"xloc": [
- "default.handlebars->27->606"
+ "default.handlebars->27->608"
]
},
{
"en": "Manage Recordings",
"nl": "Beheeer opnames",
"xloc": [
- "default.handlebars->27->1510"
+ "default.handlebars->27->1512"
]
},
{
@@ -16253,7 +16265,7 @@
"ru": "Управление группами пользователя",
"zh-chs": "管理用戶組",
"xloc": [
- "default.handlebars->27->1509"
+ "default.handlebars->27->1511"
]
},
{
@@ -16270,8 +16282,8 @@
"ru": "Управление пользователями",
"zh-chs": "管理用戶",
"xloc": [
- "default.handlebars->27->1508",
- "default.handlebars->27->605"
+ "default.handlebars->27->1510",
+ "default.handlebars->27->607"
]
},
{
@@ -16375,7 +16387,7 @@
"ru": "Управление с помощью программного агента",
"zh-chs": "使用軟件代理進行管理",
"xloc": [
- "default.handlebars->27->1135"
+ "default.handlebars->27->1137"
]
},
{
@@ -16393,7 +16405,7 @@
"zh-chs": "使用軟件代理進行管理",
"xloc": [
"default-mobile.handlebars->9->379",
- "default.handlebars->27->1163"
+ "default.handlebars->27->1165"
]
},
{
@@ -16410,7 +16422,7 @@
"ru": "Менеджер",
"zh-chs": "經理",
"xloc": [
- "default.handlebars->27->1441"
+ "default.handlebars->27->1443"
]
},
{
@@ -16461,7 +16473,7 @@
"ru": "Маори",
"zh-chs": "毛利人",
"xloc": [
- "default.handlebars->27->1014"
+ "default.handlebars->27->1016"
]
},
{
@@ -16496,7 +16508,7 @@
"ru": "Маратхи",
"zh-chs": "馬拉地語",
"xloc": [
- "default.handlebars->27->1015"
+ "default.handlebars->27->1017"
]
},
{
@@ -16513,7 +16525,7 @@
"ru": "Достигнуто максимальное число сессий",
"zh-chs": "達到的會話數上限",
"xloc": [
- "default.handlebars->27->1747"
+ "default.handlebars->27->1749"
]
},
{
@@ -16567,7 +16579,7 @@
"ru": "Мегабайт",
"zh-chs": "兆字節",
"xloc": [
- "default.handlebars->27->1773"
+ "default.handlebars->27->1775"
]
},
{
@@ -16585,8 +16597,8 @@
"zh-chs": "記憶",
"xloc": [
"default-mobile.handlebars->9->370",
- "default.handlebars->27->1764",
- "default.handlebars->27->852",
+ "default.handlebars->27->1766",
+ "default.handlebars->27->854",
"default.handlebars->container->column_l->p40->3->1->p40type->3"
]
},
@@ -16614,8 +16626,8 @@
"default.handlebars->27->356",
"default.handlebars->27->485",
"default.handlebars->27->529",
- "default.handlebars->27->804",
- "default.handlebars->27->811"
+ "default.handlebars->27->806",
+ "default.handlebars->27->813"
]
},
{
@@ -16633,7 +16645,7 @@
"zh-chs": "網格代理控制台",
"xloc": [
"default-mobile.handlebars->9->406",
- "default.handlebars->27->1289"
+ "default.handlebars->27->1291"
]
},
{
@@ -16705,8 +16717,8 @@
"ru": "MeshAction (.txt)",
"zh-chs": "MeshAction(.txt)",
"xloc": [
- "default.handlebars->27->685",
- "default.handlebars->27->687"
+ "default.handlebars->27->687",
+ "default.handlebars->27->689"
]
},
{
@@ -16723,7 +16735,7 @@
"ru": "Трафик MeshAgent",
"zh-chs": "MeshAgent流量",
"xloc": [
- "default.handlebars->27->1785"
+ "default.handlebars->27->1787"
]
},
{
@@ -16740,7 +16752,7 @@
"ru": "Обновление MeshAgent",
"zh-chs": "MeshAgent更新",
"xloc": [
- "default.handlebars->27->1786"
+ "default.handlebars->27->1788"
]
},
{
@@ -16774,7 +16786,7 @@
"ru": "Ошибки MeshCentral",
"zh-chs": "網格中心錯誤",
"xloc": [
- "default.handlebars->27->1156"
+ "default.handlebars->27->1158"
]
},
{
@@ -16791,7 +16803,7 @@
"ru": "MeshCentral Router ",
"zh-chs": "MeshCentral路由器",
"xloc": [
- "default.handlebars->27->673"
+ "default.handlebars->27->675"
]
},
{
@@ -16808,7 +16820,7 @@
"ru": "MeshCentral Router это инструмент Windows для сопоставления портов TCP. Например, через этот сервер можно установить подключение по RDP к удаленному устройству.",
"zh-chs": "MeshCentral Router是Windows工具,用於TCP端口映射。例如,您可以通過該服務器將RDP放入遠程設備。",
"xloc": [
- "default.handlebars->27->669"
+ "default.handlebars->27->671"
]
},
{
@@ -16843,7 +16855,7 @@
"ru": "Соединения сервера MeshCentral",
"zh-chs": "MeshCentral服務器對等",
"xloc": [
- "default.handlebars->27->1784"
+ "default.handlebars->27->1786"
]
},
{
@@ -16878,7 +16890,7 @@
"zh-chs": "MeshCentral版本",
"xloc": [
"default.handlebars->27->101",
- "default.handlebars->27->1152",
+ "default.handlebars->27->1154",
"default.handlebars->27->99"
]
},
@@ -16898,7 +16910,7 @@
"xloc": [
"default.handlebars->27->202",
"default.handlebars->27->557",
- "default.handlebars->27->683"
+ "default.handlebars->27->685"
]
},
{
@@ -16915,7 +16927,7 @@
"ru": "MeshCmd (Linux ARM, 32bit)",
"zh-chs": "MeshCmd(Linux ARM,32位)",
"xloc": [
- "default.handlebars->27->694"
+ "default.handlebars->27->696"
]
},
{
@@ -16932,7 +16944,7 @@
"ru": "MeshCmd (Linux x86, 32bit)",
"zh-chs": "MeshCmd(Linux x86,32bit)",
"xloc": [
- "default.handlebars->27->691"
+ "default.handlebars->27->693"
]
},
{
@@ -16949,7 +16961,7 @@
"ru": "MeshCmd (Linux x86, 64bit)",
"zh-chs": "MeshCmd(Linux x86,64bit)",
"xloc": [
- "default.handlebars->27->692"
+ "default.handlebars->27->694"
]
},
{
@@ -16966,7 +16978,7 @@
"ru": "MeshCmd (MacOS, 64bit)",
"zh-chs": "MeshCmd(MacOS,64位)",
"xloc": [
- "default.handlebars->27->693"
+ "default.handlebars->27->695"
]
},
{
@@ -16983,7 +16995,7 @@
"ru": "MeshCmd (приложение Win32)",
"zh-chs": "MeshCmd(Win32可執行文件)",
"xloc": [
- "default.handlebars->27->689"
+ "default.handlebars->27->691"
]
},
{
@@ -17000,7 +17012,7 @@
"ru": "MeshCmd (приложение Win64)",
"zh-chs": "MeshCmd(Win64可執行文件)",
"xloc": [
- "default.handlebars->27->690"
+ "default.handlebars->27->692"
]
},
{
@@ -17017,7 +17029,7 @@
"ru": "MeshCmd это утилита с командной строкой, которая позволяет выполнить множество операций. Файл с командами может быть опционально скачан и отредактирован для указания информации о сервере и учетных данных.",
"zh-chs": "MeshCmd是執行許多不同操作的命令行工具。可以選擇下載和編輯操作文件以提供服務器信息和憑據。",
"xloc": [
- "default.handlebars->27->680"
+ "default.handlebars->27->682"
]
},
{
@@ -17090,7 +17102,7 @@
"xloc": [
"default.handlebars->27->313",
"default.handlebars->27->546",
- "default.handlebars->27->649"
+ "default.handlebars->27->651"
]
},
{
@@ -17107,7 +17119,7 @@
"ru": "Диспетчер сообщения",
"zh-chs": "郵件調度程序",
"xloc": [
- "default.handlebars->27->1782"
+ "default.handlebars->27->1784"
]
},
{
@@ -17205,7 +17217,7 @@
"zh-chs": "模型",
"xloc": [
"default-mobile.handlebars->9->371",
- "default.handlebars->27->853"
+ "default.handlebars->27->855"
]
},
{
@@ -17239,7 +17251,7 @@
"ru": "Молдавский",
"zh-chs": "摩爾達維亞人",
"xloc": [
- "default.handlebars->27->1016"
+ "default.handlebars->27->1018"
]
},
{
@@ -17256,7 +17268,7 @@
"ru": "Еще",
"zh-chs": "更多",
"xloc": [
- "default.handlebars->27->1810"
+ "default.handlebars->27->1812"
]
},
{
@@ -17274,7 +17286,7 @@
"zh-chs": "母板",
"xloc": [
"default-mobile.handlebars->9->366",
- "default.handlebars->27->848"
+ "default.handlebars->27->850"
]
},
{
@@ -17332,7 +17344,7 @@
"en": "Multiplexor",
"nl": "Multiplexor",
"xloc": [
- "default.handlebars->27->1725"
+ "default.handlebars->27->1727"
]
},
{
@@ -17447,7 +17459,7 @@
"ru": "Консоль моего сервера",
"zh-chs": "我的服務器控制台",
"xloc": [
- "default.handlebars->27->859"
+ "default.handlebars->27->861"
]
},
{
@@ -17575,8 +17587,8 @@
"ru": "Мой ключ",
"zh-chs": "我的鑰匙",
"xloc": [
- "default.handlebars->27->891",
- "default.handlebars->27->894"
+ "default.handlebars->27->893",
+ "default.handlebars->27->896"
]
},
{
@@ -17600,20 +17612,20 @@
"default-mobile.handlebars->9->393",
"default-mobile.handlebars->9->97",
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea3->deskarea3x->DeskTools->5->1->1",
- "default.handlebars->27->1133",
- "default.handlebars->27->1164",
- "default.handlebars->27->1247",
- "default.handlebars->27->1423",
- "default.handlebars->27->1516",
- "default.handlebars->27->1532",
- "default.handlebars->27->1539",
- "default.handlebars->27->1572",
- "default.handlebars->27->1591",
+ "default.handlebars->27->1135",
+ "default.handlebars->27->1166",
+ "default.handlebars->27->1249",
+ "default.handlebars->27->1425",
+ "default.handlebars->27->1518",
+ "default.handlebars->27->1534",
+ "default.handlebars->27->1541",
+ "default.handlebars->27->1574",
+ "default.handlebars->27->1593",
"default.handlebars->27->473",
- "default.handlebars->27->727",
+ "default.handlebars->27->729",
"default.handlebars->27->77",
- "default.handlebars->27->800",
- "default.handlebars->27->842",
+ "default.handlebars->27->802",
+ "default.handlebars->27->844",
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->3",
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->3",
"default.handlebars->container->column_l->p42->p42tbl->1->0->2"
@@ -17650,7 +17662,7 @@
"ru": "Имя1, Имя2, Имя3",
"zh-chs": "名稱1,名稱2,名稱3",
"xloc": [
- "default.handlebars->27->1500"
+ "default.handlebars->27->1502"
]
},
{
@@ -17667,7 +17679,7 @@
"ru": "Навахо",
"zh-chs": "納瓦霍人",
"xloc": [
- "default.handlebars->27->1017"
+ "default.handlebars->27->1019"
]
},
{
@@ -17684,7 +17696,7 @@
"ru": "Ндонга",
"zh-chs": "恩東加",
"xloc": [
- "default.handlebars->27->1018"
+ "default.handlebars->27->1020"
]
},
{
@@ -17701,7 +17713,7 @@
"ru": "Непальский",
"zh-chs": "尼泊爾文",
"xloc": [
- "default.handlebars->27->1019"
+ "default.handlebars->27->1021"
]
},
{
@@ -17718,7 +17730,7 @@
"ru": "Сетевые интерфейсы",
"zh-chs": "網絡接口",
"xloc": [
- "default.handlebars->27->667"
+ "default.handlebars->27->669"
]
},
{
@@ -17750,7 +17762,7 @@
"zh-chs": "聯網",
"xloc": [
"default-mobile.handlebars->9->339",
- "default.handlebars->27->821"
+ "default.handlebars->27->823"
]
},
{
@@ -17803,9 +17815,9 @@
"zh-chs": "新設備組",
"xloc": [
"default-mobile.handlebars->9->91",
- "default.handlebars->27->1126",
- "default.handlebars->27->1138",
- "default.handlebars->27->659"
+ "default.handlebars->27->1128",
+ "default.handlebars->27->1140",
+ "default.handlebars->27->661"
]
},
{
@@ -17824,8 +17836,8 @@
"xloc": [
"default-mobile.handlebars->9->120",
"default-mobile.handlebars->9->292",
- "default.handlebars->27->1396",
- "default.handlebars->27->764",
+ "default.handlebars->27->1398",
+ "default.handlebars->27->766",
"default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
"default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3"
]
@@ -17880,8 +17892,8 @@
"xloc": [
"default-mobile.handlebars->9->86",
"default-mobile.handlebars->9->87",
- "default.handlebars->27->1121",
- "default.handlebars->27->1122"
+ "default.handlebars->27->1123",
+ "default.handlebars->27->1124"
]
},
{
@@ -17898,8 +17910,8 @@
"ru": "Нет AMT",
"zh-chs": "没有AMT",
"xloc": [
- "default.handlebars->27->591",
- "default.handlebars->27->610"
+ "default.handlebars->27->593",
+ "default.handlebars->27->612"
]
},
{
@@ -17967,9 +17979,9 @@
"ru": "Нет рабочего стола",
"zh-chs": "沒有桌面",
"xloc": [
- "default.handlebars->27->1322",
- "default.handlebars->27->593",
- "default.handlebars->27->612"
+ "default.handlebars->27->1324",
+ "default.handlebars->27->595",
+ "default.handlebars->27->614"
]
},
{
@@ -17986,7 +17998,7 @@
"ru": "Нет доступа к рабочему столу",
"zh-chs": "沒有桌面訪問",
"xloc": [
- "default.handlebars->27->1285"
+ "default.handlebars->27->1287"
]
},
{
@@ -18003,9 +18015,9 @@
"ru": "События не найдены",
"zh-chs": "找不到活動",
"xloc": [
- "default.handlebars->27->1413",
- "default.handlebars->27->1701",
- "default.handlebars->27->798"
+ "default.handlebars->27->1415",
+ "default.handlebars->27->1703",
+ "default.handlebars->27->800"
]
},
{
@@ -18023,7 +18035,7 @@
"zh-chs": "沒有文件訪問",
"xloc": [
"default-mobile.handlebars->9->404",
- "default.handlebars->27->1287"
+ "default.handlebars->27->1289"
]
},
{
@@ -18041,9 +18053,9 @@
"zh-chs": "沒有文件",
"xloc": [
"default-mobile.handlebars->9->425",
- "default.handlebars->27->1324",
- "default.handlebars->27->590",
- "default.handlebars->27->609"
+ "default.handlebars->27->1326",
+ "default.handlebars->27->592",
+ "default.handlebars->27->611"
]
},
{
@@ -18059,8 +18071,8 @@
"ru": "Нет ввода",
"zh-chs": "无输入",
"xloc": [
- "default.handlebars->27->588",
- "default.handlebars->27->607"
+ "default.handlebars->27->590",
+ "default.handlebars->27->609"
]
},
{
@@ -18079,8 +18091,8 @@
"xloc": [
"default-mobile.handlebars->9->405",
"default-mobile.handlebars->9->426",
- "default.handlebars->27->1288",
- "default.handlebars->27->1325"
+ "default.handlebars->27->1290",
+ "default.handlebars->27->1327"
]
},
{
@@ -18148,7 +18160,7 @@
"ru": "Нет членов",
"zh-chs": "沒有會員",
"xloc": [
- "default.handlebars->27->1554"
+ "default.handlebars->27->1556"
]
},
{
@@ -18165,7 +18177,7 @@
"ru": "Запретить создание групп устройств",
"zh-chs": "沒有新的設備組",
"xloc": [
- "default.handlebars->27->1512"
+ "default.handlebars->27->1514"
]
},
{
@@ -18182,9 +18194,9 @@
"ru": "Политик нет",
"zh-chs": "沒有政策",
"xloc": [
- "default.handlebars->27->1191",
- "default.handlebars->27->1219",
- "default.handlebars->27->1222"
+ "default.handlebars->27->1193",
+ "default.handlebars->27->1221",
+ "default.handlebars->27->1224"
]
},
{
@@ -18204,10 +18216,10 @@
"default-mobile.handlebars->9->106",
"default-mobile.handlebars->9->388",
"default-mobile.handlebars->9->431",
- "default.handlebars->27->1147",
- "default.handlebars->27->1330",
- "default.handlebars->27->602",
- "default.handlebars->27->621"
+ "default.handlebars->27->1149",
+ "default.handlebars->27->1332",
+ "default.handlebars->27->604",
+ "default.handlebars->27->623"
]
},
{
@@ -18226,7 +18238,7 @@
"xloc": [
"default-mobile.handlebars->9->264",
"default.handlebars->27->253",
- "default.handlebars->27->645"
+ "default.handlebars->27->647"
]
},
{
@@ -18244,9 +18256,9 @@
"zh-chs": "沒有終端",
"xloc": [
"default-mobile.handlebars->9->424",
- "default.handlebars->27->1323",
- "default.handlebars->27->589",
- "default.handlebars->27->608"
+ "default.handlebars->27->1325",
+ "default.handlebars->27->591",
+ "default.handlebars->27->610"
]
},
{
@@ -18264,7 +18276,7 @@
"zh-chs": "沒有終端訪問",
"xloc": [
"default-mobile.handlebars->9->403",
- "default.handlebars->27->1286"
+ "default.handlebars->27->1288"
]
},
{
@@ -18281,7 +18293,7 @@
"ru": "Нет инструментов (MeshCmd/Router)",
"zh-chs": "沒有工具(MeshCmd /路由器)",
"xloc": [
- "default.handlebars->27->1513"
+ "default.handlebars->27->1515"
]
},
{
@@ -18298,8 +18310,8 @@
"ru": "Нет общих групп устройств",
"zh-chs": "沒有共同的設備組",
"xloc": [
- "default.handlebars->27->1560",
- "default.handlebars->27->1673"
+ "default.handlebars->27->1562",
+ "default.handlebars->27->1675"
]
},
{
@@ -18395,8 +18407,8 @@
"ru": "Нет общих устройств",
"zh-chs": "沒有共同的設備",
"xloc": [
- "default.handlebars->27->1566",
- "default.handlebars->27->1685"
+ "default.handlebars->27->1568",
+ "default.handlebars->27->1687"
]
},
{
@@ -18413,7 +18425,7 @@
"ru": "В группе нет устройств.",
"zh-chs": "該設備組中沒有設備。",
"xloc": [
- "default.handlebars->27->1373"
+ "default.handlebars->27->1375"
]
},
{
@@ -18483,7 +18495,7 @@
"ru": "Группы не найдены.",
"zh-chs": "找不到群組。",
"xloc": [
- "default.handlebars->27->1515"
+ "default.handlebars->27->1517"
]
},
{
@@ -18501,7 +18513,7 @@
"zh-chs": "沒有此設備的信息。",
"xloc": [
"default-mobile.handlebars->9->376",
- "default.handlebars->27->858"
+ "default.handlebars->27->860"
]
},
{
@@ -18552,7 +18564,7 @@
"ru": "Других групп устройств такого же типа не существует.",
"zh-chs": "沒有其他相同類型的設備組。",
"xloc": [
- "default.handlebars->27->662"
+ "default.handlebars->27->664"
]
},
{
@@ -18586,7 +18598,7 @@
"ru": "Нет серверных прав",
"zh-chs": "沒有服務器權限",
"xloc": [
- "default.handlebars->27->1586"
+ "default.handlebars->27->1588"
]
},
{
@@ -18603,7 +18615,7 @@
"ru": "Нет членства в группах пользователей",
"zh-chs": "沒有用戶組成員身份",
"xloc": [
- "default.handlebars->27->1679"
+ "default.handlebars->27->1681"
]
},
{
@@ -18620,7 +18632,7 @@
"ru": "Пользователи не найдены.",
"zh-chs": "未找到相應的用戶。",
"xloc": [
- "default.handlebars->27->1431"
+ "default.handlebars->27->1433"
]
},
{
@@ -18636,7 +18648,7 @@
"ru": "Нет пользователей со специальными правами доступа к устройству",
"zh-chs": "没有拥有特殊设备权限的用户",
"xloc": [
- "default.handlebars->27->586"
+ "default.handlebars->27->588"
]
},
{
@@ -18697,21 +18709,21 @@
"default-mobile.handlebars->9->238",
"default-mobile.handlebars->9->290",
"default-mobile.handlebars->9->382",
- "default.handlebars->27->1159",
- "default.handlebars->27->1166",
- "default.handlebars->27->1170",
- "default.handlebars->27->1182",
- "default.handlebars->27->1187",
+ "default.handlebars->27->1161",
+ "default.handlebars->27->1168",
+ "default.handlebars->27->1172",
+ "default.handlebars->27->1184",
"default.handlebars->27->1189",
- "default.handlebars->27->1364",
- "default.handlebars->27->1383",
- "default.handlebars->27->1536",
+ "default.handlebars->27->1191",
+ "default.handlebars->27->1366",
+ "default.handlebars->27->1385",
"default.handlebars->27->1538",
+ "default.handlebars->27->1540",
"default.handlebars->27->158",
- "default.handlebars->27->1602",
- "default.handlebars->27->1611",
- "default.handlebars->27->1615",
- "default.handlebars->27->1627",
+ "default.handlebars->27->1604",
+ "default.handlebars->27->1613",
+ "default.handlebars->27->1617",
+ "default.handlebars->27->1629",
"default.handlebars->27->174",
"default.handlebars->27->175",
"default.handlebars->27->470",
@@ -18754,7 +18766,7 @@
"ru": "Норвежский",
"zh-chs": "挪威",
"xloc": [
- "default.handlebars->27->1020"
+ "default.handlebars->27->1022"
]
},
{
@@ -18771,7 +18783,7 @@
"ru": "Норвежский (Букмол)",
"zh-chs": "挪威文(Bokmal)",
"xloc": [
- "default.handlebars->27->1021"
+ "default.handlebars->27->1023"
]
},
{
@@ -18788,7 +18800,7 @@
"ru": "Норвежский (Нюнорск)",
"zh-chs": "挪威文(尼諾斯克)",
"xloc": [
- "default.handlebars->27->1022"
+ "default.handlebars->27->1024"
]
},
{
@@ -18808,7 +18820,7 @@
"default-mobile.handlebars->9->218",
"default-mobile.handlebars->9->343",
"default.handlebars->27->487",
- "default.handlebars->27->825"
+ "default.handlebars->27->827"
]
},
{
@@ -18828,7 +18840,7 @@
"default-mobile.handlebars->9->217",
"default-mobile.handlebars->9->342",
"default.handlebars->27->486",
- "default.handlebars->27->824"
+ "default.handlebars->27->826"
]
},
{
@@ -18845,8 +18857,8 @@
"ru": "Не подключен",
"zh-chs": "未連接",
"xloc": [
- "default.handlebars->27->1360",
- "default.handlebars->27->1368"
+ "default.handlebars->27->1362",
+ "default.handlebars->27->1370"
]
},
{
@@ -18864,14 +18876,14 @@
"zh-chs": "未知",
"xloc": [
"default-mobile.handlebars->9->353",
- "default.handlebars->27->835"
+ "default.handlebars->27->837"
]
},
{
"en": "Not on server",
"nl": "Niet op de server",
"xloc": [
- "default.handlebars->27->1717"
+ "default.handlebars->27->1719"
]
},
{
@@ -18888,7 +18900,7 @@
"ru": "Не задано",
"zh-chs": "沒有設置",
"xloc": [
- "default.handlebars->27->1592"
+ "default.handlebars->27->1594"
]
},
{
@@ -18905,7 +18917,7 @@
"ru": "не подтверждено",
"zh-chs": "未經審核的",
"xloc": [
- "default.handlebars->27->1655"
+ "default.handlebars->27->1657"
]
},
{
@@ -18922,12 +18934,12 @@
"ru": "Примечания",
"zh-chs": "筆記",
"xloc": [
- "default.handlebars->27->1197",
- "default.handlebars->27->1635",
+ "default.handlebars->27->1199",
+ "default.handlebars->27->1637",
"default.handlebars->27->542",
- "default.handlebars->27->598",
- "default.handlebars->27->617",
- "default.handlebars->27->624"
+ "default.handlebars->27->600",
+ "default.handlebars->27->619",
+ "default.handlebars->27->626"
]
},
{
@@ -18961,8 +18973,8 @@
"ru": "Настройки уведомлений",
"zh-chs": "通知設置",
"xloc": [
- "default.handlebars->27->1108",
- "default.handlebars->27->1359",
+ "default.handlebars->27->1110",
+ "default.handlebars->27->1361",
"default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->10"
]
},
@@ -18980,7 +18992,7 @@
"ru": "Уведомления также должны быть включены в настройках учетной записи.",
"zh-chs": "通知設置還必須在帳戶設置中啟用。",
"xloc": [
- "default.handlebars->27->1355"
+ "default.handlebars->27->1357"
]
},
{
@@ -18997,7 +19009,7 @@
"ru": "Звук уведомления",
"zh-chs": "通知聲音。",
"xloc": [
- "default.handlebars->27->1103"
+ "default.handlebars->27->1105"
]
},
{
@@ -19014,7 +19026,7 @@
"ru": "Уведомления",
"zh-chs": "通知事項",
"xloc": [
- "default.handlebars->27->1188"
+ "default.handlebars->27->1190"
]
},
{
@@ -19031,7 +19043,7 @@
"ru": "Уведомить",
"zh-chs": "通知",
"xloc": [
- "default.handlebars->27->1641"
+ "default.handlebars->27->1643"
]
},
{
@@ -19048,9 +19060,9 @@
"ru": "Уведомить пользователя",
"zh-chs": "通知使用者",
"xloc": [
- "default.handlebars->27->1254",
- "default.handlebars->27->1258",
- "default.handlebars->27->1261"
+ "default.handlebars->27->1256",
+ "default.handlebars->27->1260",
+ "default.handlebars->27->1263"
]
},
{
@@ -19067,7 +19079,7 @@
"ru": "Уведомить {0}",
"zh-chs": "通知{0}",
"xloc": [
- "default.handlebars->27->1463"
+ "default.handlebars->27->1465"
]
},
{
@@ -19086,7 +19098,7 @@
"xloc": [
"default-mobile.handlebars->9->83",
"default-mobile.handlebars->dialog->idx_dlgButtonBar",
- "default.handlebars->27->1150",
+ "default.handlebars->27->1152",
"default.handlebars->27->513",
"default.handlebars->container->dialog->idx_dlgButtonBar",
"login-mobile.handlebars->dialog->idx_dlgButtonBar",
@@ -19128,7 +19140,7 @@
"ru": "Окситанский",
"zh-chs": "歐舒丹",
"xloc": [
- "default.handlebars->27->1023"
+ "default.handlebars->27->1025"
]
},
{
@@ -19145,7 +19157,7 @@
"ru": "Произошло в {0}",
"zh-chs": "發生在{0}",
"xloc": [
- "default.handlebars->27->1731"
+ "default.handlebars->27->1733"
]
},
{
@@ -19162,7 +19174,7 @@
"ru": "Оффлайн пользователи",
"zh-chs": "離線用戶",
"xloc": [
- "default.handlebars->27->1428"
+ "default.handlebars->27->1430"
]
},
{
@@ -19180,7 +19192,7 @@
"zh-chs": "舊密碼:",
"xloc": [
"default-mobile.handlebars->9->85",
- "default.handlebars->27->1120"
+ "default.handlebars->27->1122"
]
},
{
@@ -19223,7 +19235,7 @@
"ru": "Онлайн пользователи",
"zh-chs": "在線用戶",
"xloc": [
- "default.handlebars->27->1427"
+ "default.handlebars->27->1429"
]
},
{
@@ -19242,7 +19254,7 @@
"xloc": [
"default-mobile.handlebars->9->300",
"default.handlebars->27->441",
- "default.handlebars->27->772"
+ "default.handlebars->27->774"
]
},
{
@@ -19284,7 +19296,7 @@
"ru": "Открыть страницу на устройстве",
"zh-chs": "在設備上打開頁面",
"xloc": [
- "default.handlebars->27->626"
+ "default.handlebars->27->628"
]
},
{
@@ -19370,8 +19382,8 @@
"default.handlebars->27->296",
"default.handlebars->27->325",
"default.handlebars->27->510",
- "default.handlebars->27->682",
- "default.handlebars->27->803"
+ "default.handlebars->27->684",
+ "default.handlebars->27->805"
]
},
{
@@ -19389,10 +19401,10 @@
"zh-chs": "運作方式",
"xloc": [
"default-mobile.handlebars->9->257",
- "default.handlebars->27->1452",
- "default.handlebars->27->1523",
+ "default.handlebars->27->1454",
+ "default.handlebars->27->1525",
"default.handlebars->27->400",
- "default.handlebars->27->637"
+ "default.handlebars->27->639"
]
},
{
@@ -19426,7 +19438,7 @@
"ru": "Ория",
"zh-chs": "奧里亞",
"xloc": [
- "default.handlebars->27->1024"
+ "default.handlebars->27->1026"
]
},
{
@@ -19443,7 +19455,7 @@
"ru": "Оромо",
"zh-chs": "奧羅莫",
"xloc": [
- "default.handlebars->27->1025"
+ "default.handlebars->27->1027"
]
},
{
@@ -19511,7 +19523,7 @@
"ru": "Собственный процесс",
"zh-chs": "自己的過程",
"xloc": [
- "default.handlebars->27->734"
+ "default.handlebars->27->736"
]
},
{
@@ -19529,7 +19541,7 @@
"zh-chs": "PID",
"xloc": [
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea3->deskarea3x->DeskTools->5->1->0",
- "default.handlebars->27->730",
+ "default.handlebars->27->732",
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsProcessTab->deskToolsHeader->1"
]
},
@@ -19548,7 +19560,7 @@
"zh-chs": "零件號",
"xloc": [
"default-mobile.handlebars->9->369",
- "default.handlebars->27->851"
+ "default.handlebars->27->853"
]
},
{
@@ -19565,7 +19577,7 @@
"ru": "Частично",
"zh-chs": "部分的",
"xloc": [
- "default.handlebars->27->1442"
+ "default.handlebars->27->1444"
]
},
{
@@ -19612,7 +19624,7 @@
"xloc": [
"default-mobile.handlebars->9->104",
"default-mobile.handlebars->9->386",
- "default.handlebars->27->1145"
+ "default.handlebars->27->1147"
]
},
{
@@ -19629,7 +19641,7 @@
"ru": "Частичные права",
"zh-chs": "部分權利",
"xloc": [
- "default.handlebars->27->1589"
+ "default.handlebars->27->1591"
]
},
{
@@ -19664,15 +19676,15 @@
"zh-chs": "密碼",
"xloc": [
"default-mobile.handlebars->9->262",
- "default.handlebars->27->1488",
- "default.handlebars->27->1489",
- "default.handlebars->27->1607",
+ "default.handlebars->27->1490",
+ "default.handlebars->27->1491",
"default.handlebars->27->1609",
- "default.handlebars->27->1658",
- "default.handlebars->27->1659",
+ "default.handlebars->27->1611",
+ "default.handlebars->27->1660",
+ "default.handlebars->27->1661",
"default.handlebars->27->251",
"default.handlebars->27->280",
- "default.handlebars->27->643"
+ "default.handlebars->27->645"
]
},
{
@@ -19778,7 +19790,7 @@
"ru": "Подсказка пароля",
"zh-chs": "密碼提示",
"xloc": [
- "default.handlebars->27->1660"
+ "default.handlebars->27->1662"
]
},
{
@@ -19796,7 +19808,7 @@
"zh-chs": "密碼提示:",
"xloc": [
"default-mobile.handlebars->9->88",
- "default.handlebars->27->1123"
+ "default.handlebars->27->1125"
]
},
{
@@ -19813,7 +19825,7 @@
"ru": "Пароль не совпадает",
"zh-chs": "密碼不符合",
"xloc": [
- "default.handlebars->27->1228"
+ "default.handlebars->27->1230"
]
},
{
@@ -19848,8 +19860,8 @@
"ru": "Пароль*",
"zh-chs": "密碼*",
"xloc": [
- "default.handlebars->27->1226",
- "default.handlebars->27->1227"
+ "default.handlebars->27->1228",
+ "default.handlebars->27->1229"
]
},
{
@@ -19869,8 +19881,8 @@
"account-invite.html->2->5",
"default-mobile.handlebars->9->80",
"default-mobile.handlebars->9->81",
- "default.handlebars->27->1115",
- "default.handlebars->27->1116",
+ "default.handlebars->27->1117",
+ "default.handlebars->27->1118",
"login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->4->1",
"login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->6->1",
"login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->7->1->2->1",
@@ -19901,9 +19913,9 @@
"default-mobile.handlebars->9->305",
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3",
"default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3",
- "default.handlebars->27->1405",
- "default.handlebars->27->755",
- "default.handlebars->27->777",
+ "default.handlebars->27->1407",
+ "default.handlebars->27->757",
+ "default.handlebars->27->779",
"default.handlebars->container->column_l->p12->termTable->1->1->6->1->3",
"default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
"default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3"
@@ -19957,7 +19969,7 @@
"ru": "Произвести действие агента",
"zh-chs": "執行代理動作",
"xloc": [
- "default.handlebars->27->867"
+ "default.handlebars->27->869"
]
},
{
@@ -19991,7 +20003,7 @@
"ru": "Выполнить активацию Intel AMT в режиме управления администратора (ACM).",
"zh-chs": "執行英特爾AMT管理員控制模式(ACM)激活。",
"xloc": [
- "default.handlebars->27->1207",
+ "default.handlebars->27->1209",
"default.handlebars->27->239"
]
},
@@ -20026,7 +20038,7 @@
"ru": "Выполнить активацию Intel AMT в режиме управления клиента (CCM).",
"zh-chs": "執行英特爾AMT客戶端控制模式(CCM)激活。",
"xloc": [
- "default.handlebars->27->1205",
+ "default.handlebars->27->1207",
"default.handlebars->27->237"
]
},
@@ -20065,8 +20077,8 @@
"zh-chs": "權限",
"xloc": [
"default-mobile.handlebars->9->434",
- "default.handlebars->27->1333",
- "default.handlebars->27->1426"
+ "default.handlebars->27->1335",
+ "default.handlebars->27->1428"
]
},
{
@@ -20083,7 +20095,7 @@
"ru": "Персидский/Иран",
"zh-chs": "波斯/伊朗",
"xloc": [
- "default.handlebars->27->1026"
+ "default.handlebars->27->1028"
]
},
{
@@ -20100,9 +20112,9 @@
"default-mobile.handlebars->9->65",
"default-mobile.handlebars->9->67",
"default.handlebars->27->143",
- "default.handlebars->27->1652",
- "default.handlebars->27->878",
- "default.handlebars->27->881"
+ "default.handlebars->27->1654",
+ "default.handlebars->27->880",
+ "default.handlebars->27->883"
]
},
{
@@ -20115,7 +20127,7 @@
"nl": "Telefoonnummer",
"zh-chs": "电话号码",
"xloc": [
- "default.handlebars->27->1601"
+ "default.handlebars->27->1603"
]
},
{
@@ -20129,8 +20141,8 @@
"zh-chs": "电话号码:",
"xloc": [
"default-mobile.handlebars->9->66",
- "default.handlebars->27->1651",
- "default.handlebars->27->880"
+ "default.handlebars->27->1653",
+ "default.handlebars->27->882"
]
},
{
@@ -20248,7 +20260,7 @@
"zh-chs": "請等待幾分鐘以接收驗證。",
"xloc": [
"default-mobile.handlebars->9->76",
- "default.handlebars->27->1110"
+ "default.handlebars->27->1112"
]
},
{
@@ -20266,7 +20278,7 @@
"zh-chs": "插件動作",
"xloc": [
"default.handlebars->27->169",
- "default.handlebars->27->1807"
+ "default.handlebars->27->1809"
]
},
{
@@ -20389,7 +20401,7 @@
"zh-chs": "政策",
"xloc": [
"default-mobile.handlebars->9->103",
- "default.handlebars->27->1144"
+ "default.handlebars->27->1146"
]
},
{
@@ -20406,7 +20418,7 @@
"ru": "Польский",
"zh-chs": "拋光",
"xloc": [
- "default.handlebars->27->1027"
+ "default.handlebars->27->1029"
]
},
{
@@ -20423,7 +20435,7 @@
"ru": "Португальский",
"zh-chs": "葡萄牙語",
"xloc": [
- "default.handlebars->27->1028"
+ "default.handlebars->27->1030"
]
},
{
@@ -20440,7 +20452,7 @@
"ru": "Португальский (Бразилия)",
"zh-chs": "葡萄牙語(巴西)",
"xloc": [
- "default.handlebars->27->1029"
+ "default.handlebars->27->1031"
]
},
{
@@ -20499,7 +20511,7 @@
"ru": "Состояния питания",
"zh-chs": "電力國",
"xloc": [
- "default.handlebars->27->1366",
+ "default.handlebars->27->1368",
"default.handlebars->container->column_l->p21->3->1->meshPowerChartDiv->1"
]
},
@@ -20520,7 +20532,7 @@
"default-mobile.handlebars->9->176",
"default-mobile.handlebars->9->256",
"default.handlebars->27->6",
- "default.handlebars->27->634"
+ "default.handlebars->27->636"
]
},
{
@@ -20584,7 +20596,7 @@
"en": "Present on server",
"nl": "Aanwezig op de server",
"xloc": [
- "default.handlebars->27->1716"
+ "default.handlebars->27->1718"
]
},
{
@@ -20644,7 +20656,7 @@
"zh-chs": "過程控制",
"xloc": [
"default-mobile.handlebars->9->282",
- "default.handlebars->27->742"
+ "default.handlebars->27->744"
]
},
{
@@ -20679,9 +20691,9 @@
"ru": "Запрос согласия пользователя",
"zh-chs": "提示用戶同意",
"xloc": [
- "default.handlebars->27->1255",
- "default.handlebars->27->1259",
- "default.handlebars->27->1262"
+ "default.handlebars->27->1257",
+ "default.handlebars->27->1261",
+ "default.handlebars->27->1264"
]
},
{
@@ -20698,7 +20710,7 @@
"ru": "Протокол",
"zh-chs": "協議",
"xloc": [
- "default.handlebars->27->1714",
+ "default.handlebars->27->1716",
"player.handlebars->3->15"
]
},
@@ -20731,7 +20743,7 @@
"zh-chs": "供應國",
"xloc": [
"default-mobile.handlebars->9->347",
- "default.handlebars->27->829"
+ "default.handlebars->27->831"
]
},
{
@@ -20749,7 +20761,7 @@
"zh-chs": "公開連結",
"xloc": [
"default-mobile.handlebars->9->115",
- "default.handlebars->27->1390"
+ "default.handlebars->27->1392"
]
},
{
@@ -20766,7 +20778,7 @@
"ru": "Пенджаби",
"zh-chs": "旁遮普語",
"xloc": [
- "default.handlebars->27->1030"
+ "default.handlebars->27->1032"
]
},
{
@@ -20783,7 +20795,7 @@
"ru": "Пенджаби (Индия)",
"zh-chs": "旁遮普(印度)",
"xloc": [
- "default.handlebars->27->1031"
+ "default.handlebars->27->1033"
]
},
{
@@ -20800,7 +20812,7 @@
"ru": "Пенджаби (Пакистан)",
"zh-chs": "旁遮普(巴基斯坦)",
"xloc": [
- "default.handlebars->27->1032"
+ "default.handlebars->27->1034"
]
},
{
@@ -20852,7 +20864,7 @@
"ru": "Кечуа",
"zh-chs": "蓋丘亞族",
"xloc": [
- "default.handlebars->27->1033"
+ "default.handlebars->27->1035"
]
},
{
@@ -21006,7 +21018,7 @@
"ru": "RSS",
"zh-chs": "的RSS",
"xloc": [
- "default.handlebars->27->1777"
+ "default.handlebars->27->1779"
]
},
{
@@ -21023,7 +21035,7 @@
"ru": "Случайный пароль.",
"zh-chs": "隨機化密碼。",
"xloc": [
- "default.handlebars->27->1490"
+ "default.handlebars->27->1492"
]
},
{
@@ -21057,7 +21069,7 @@
"ru": "Реактивировать Intel® AMT",
"zh-chs": "重新激活英特爾®AMT",
"xloc": [
- "default.handlebars->27->1230"
+ "default.handlebars->27->1232"
]
},
{
@@ -21074,14 +21086,14 @@
"ru": "Области",
"zh-chs": "境界",
"xloc": [
- "default.handlebars->27->1499"
+ "default.handlebars->27->1501"
]
},
{
"en": "Received invalid network data",
"nl": "Ongeldige netwerkgegevens ontvangen",
"xloc": [
- "default.handlebars->27->706"
+ "default.handlebars->27->708"
]
},
{
@@ -21101,7 +21113,7 @@
"en": "Recording Details",
"nl": "Opname details",
"xloc": [
- "default.handlebars->27->1728"
+ "default.handlebars->27->1730"
]
},
{
@@ -21127,8 +21139,8 @@
"xloc": [
"default-mobile.handlebars->9->121",
"default-mobile.handlebars->9->293",
- "default.handlebars->27->1397",
- "default.handlebars->27->765"
+ "default.handlebars->27->1399",
+ "default.handlebars->27->767"
]
},
{
@@ -21225,7 +21237,7 @@
"ru": "Число ретрансляций",
"zh-chs": "中繼計數",
"xloc": [
- "default.handlebars->27->1759"
+ "default.handlebars->27->1761"
]
},
{
@@ -21242,7 +21254,7 @@
"ru": "Ошибки ретранслятора",
"zh-chs": "中繼錯誤",
"xloc": [
- "default.handlebars->27->1752"
+ "default.handlebars->27->1754"
]
},
{
@@ -21259,8 +21271,8 @@
"ru": "Сессии ретранслятора",
"zh-chs": "接力會議",
"xloc": [
- "default.handlebars->27->1758",
- "default.handlebars->27->1771"
+ "default.handlebars->27->1760",
+ "default.handlebars->27->1773"
]
},
{
@@ -21370,7 +21382,7 @@
"ru": "Удаленный буфер обмена",
"zh-chs": "遠程剪貼板",
"xloc": [
- "default.handlebars->27->725"
+ "default.handlebars->27->727"
]
},
{
@@ -21389,8 +21401,8 @@
"xloc": [
"default-mobile.handlebars->9->400",
"default-mobile.handlebars->9->418",
- "default.handlebars->27->1282",
- "default.handlebars->27->1316"
+ "default.handlebars->27->1284",
+ "default.handlebars->27->1318"
]
},
{
@@ -21419,7 +21431,7 @@
"xloc": [
"default-mobile.handlebars->9->278",
"default.handlebars->27->230",
- "default.handlebars->27->717"
+ "default.handlebars->27->719"
]
},
{
@@ -21436,7 +21448,7 @@
"ru": "Ввод с удаленной клавиатуры",
"zh-chs": "遠程鍵盤輸入",
"xloc": [
- "default.handlebars->27->723"
+ "default.handlebars->27->725"
]
},
{
@@ -21486,8 +21498,8 @@
"xloc": [
"default-mobile.handlebars->9->401",
"default-mobile.handlebars->9->423",
- "default.handlebars->27->1283",
- "default.handlebars->27->1321"
+ "default.handlebars->27->1285",
+ "default.handlebars->27->1323"
]
},
{
@@ -21504,7 +21516,7 @@
"ru": "Удаленный буфер обмена действителен в течении 60 секунд.",
"zh-chs": "遠程剪貼板的有效期為60秒。",
"xloc": [
- "default.handlebars->27->724"
+ "default.handlebars->27->726"
]
},
{
@@ -21580,8 +21592,8 @@
"nl": "Apparaatgroepmachtigingen verwijderen",
"zh-chs": "删除设备组权限",
"xloc": [
- "default.handlebars->27->1570",
- "default.handlebars->27->1699"
+ "default.handlebars->27->1572",
+ "default.handlebars->27->1701"
]
},
{
@@ -21595,8 +21607,8 @@
"nl": "Apparaatmachtigingen verwijderen",
"zh-chs": "删除设备权限",
"xloc": [
- "default.handlebars->27->1568",
- "default.handlebars->27->1686"
+ "default.handlebars->27->1570",
+ "default.handlebars->27->1688"
]
},
{
@@ -21624,7 +21636,7 @@
"nl": "Lidmaatschap van gebruikersgroep verwijderen",
"zh-chs": "删除用户组成员身份",
"xloc": [
- "default.handlebars->27->1695"
+ "default.handlebars->27->1697"
]
},
{
@@ -21638,8 +21650,8 @@
"nl": "Gebruikersgroepmachtigingen verwijderen",
"zh-chs": "删除用户组权限",
"xloc": [
- "default.handlebars->27->1338",
- "default.handlebars->27->1691"
+ "default.handlebars->27->1340",
+ "default.handlebars->27->1693"
]
},
{
@@ -21653,7 +21665,7 @@
"nl": "Gebruikerslidmaatschap verwijderen",
"zh-chs": "删除用户成员资格",
"xloc": [
- "default.handlebars->27->1578"
+ "default.handlebars->27->1580"
]
},
{
@@ -21667,8 +21679,8 @@
"nl": "Gebruikersmachtigingen verwijderen",
"zh-chs": "删除用户权限",
"xloc": [
- "default.handlebars->27->1336",
- "default.handlebars->27->1688"
+ "default.handlebars->27->1338",
+ "default.handlebars->27->1690"
]
},
{
@@ -21685,7 +21697,7 @@
"ru": "Удалить все двухфакторные аутентификации.",
"zh-chs": "刪除所有第二因素驗證。",
"xloc": [
- "default.handlebars->27->1663"
+ "default.handlebars->27->1665"
]
},
{
@@ -21702,7 +21714,7 @@
"ru": "Удалить все прошлые события для этого userid.",
"zh-chs": "刪除此用戶標識的所有先前事件。",
"xloc": [
- "default.handlebars->27->1491"
+ "default.handlebars->27->1493"
]
},
{
@@ -21719,7 +21731,7 @@
"ru": "Удалить устройство при отключении",
"zh-chs": "斷開連接後移除設備",
"xloc": [
- "default.handlebars->27->1263"
+ "default.handlebars->27->1265"
]
},
{
@@ -21750,7 +21762,7 @@
"zh-chs": "删除电话号码",
"xloc": [
"default-mobile.handlebars->9->64",
- "default.handlebars->27->877"
+ "default.handlebars->27->879"
]
},
{
@@ -21783,7 +21795,7 @@
"ru": "Удалить этого пользователя",
"zh-chs": "删除该用户",
"xloc": [
- "default.handlebars->27->1643"
+ "default.handlebars->27->1645"
]
},
{
@@ -21800,7 +21812,7 @@
"ru": "Удалить членство пользователя в группе",
"zh-chs": "刪除用戶組成員身份",
"xloc": [
- "default.handlebars->27->1677"
+ "default.handlebars->27->1679"
]
},
{
@@ -21814,7 +21826,7 @@
"nl": "Gebruikersrechten voor dit apparaat verwijderen",
"zh-chs": "删除此设备的用户组权限",
"xloc": [
- "default.handlebars->27->1564"
+ "default.handlebars->27->1566"
]
},
{
@@ -21831,8 +21843,8 @@
"ru": "Удалить права группы пользователей для этой группы устройств",
"zh-chs": "刪除該設備組的用戶組權限",
"xloc": [
- "default.handlebars->27->1558",
- "default.handlebars->27->582"
+ "default.handlebars->27->1560",
+ "default.handlebars->27->584"
]
},
{
@@ -21849,11 +21861,11 @@
"ru": "Удалить права пользователя для этой группы устройств",
"zh-chs": "刪除此設備組的用戶權限",
"xloc": [
- "default.handlebars->27->1214",
- "default.handlebars->27->1552",
- "default.handlebars->27->1671",
- "default.handlebars->27->1683",
- "default.handlebars->27->583"
+ "default.handlebars->27->1216",
+ "default.handlebars->27->1554",
+ "default.handlebars->27->1673",
+ "default.handlebars->27->1685",
+ "default.handlebars->27->585"
]
},
{
@@ -21874,9 +21886,9 @@
"default-mobile.handlebars->9->297",
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
"default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
- "default.handlebars->27->1401",
+ "default.handlebars->27->1403",
"default.handlebars->27->439",
- "default.handlebars->27->769",
+ "default.handlebars->27->771",
"default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
"default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3",
"default.handlebars->filesContextMenu->1"
@@ -21896,7 +21908,7 @@
"ru": "Требования: ",
"zh-chs": "要求:",
"xloc": [
- "default.handlebars->27->1124"
+ "default.handlebars->27->1126"
]
},
{
@@ -21914,8 +21926,8 @@
"zh-chs": "要求:{0}。",
"xloc": [
"default-mobile.handlebars->9->89",
- "default.handlebars->27->1496",
- "default.handlebars->27->1661"
+ "default.handlebars->27->1498",
+ "default.handlebars->27->1663"
]
},
{
@@ -21982,7 +21994,7 @@
"zh-chs": "重啟",
"xloc": [
"default-mobile.handlebars->9->255",
- "default.handlebars->27->633",
+ "default.handlebars->27->635",
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devMapToolbar"
]
},
@@ -22088,7 +22100,7 @@
"ru": "Перезапуск",
"zh-chs": "重新開始",
"xloc": [
- "default.handlebars->27->740",
+ "default.handlebars->27->742",
"player.handlebars->p11->deskarea0->deskarea4->3"
]
},
@@ -22106,7 +22118,7 @@
"ru": "Восстановить сервер",
"zh-chs": "還原伺服器",
"xloc": [
- "default.handlebars->27->1151"
+ "default.handlebars->27->1153"
]
},
{
@@ -22140,7 +22152,7 @@
"ru": "Восстановить сервер из резервной копии, это удалит существующие данные сервера . Продолжайте дальше только если знаете, что делаете.",
"zh-chs": "使用備份還原服務器,這將刪除現有服務器數據 span>。僅當您知道自己在做什麼時才這樣做。",
"xloc": [
- "default.handlebars->27->1148"
+ "default.handlebars->27->1150"
]
},
{
@@ -22157,7 +22169,7 @@
"ru": "Ограничения",
"zh-chs": "限制條件",
"xloc": [
- "default.handlebars->27->1590"
+ "default.handlebars->27->1592"
]
},
{
@@ -22174,7 +22186,7 @@
"ru": "Ретороманский",
"zh-chs": "修羅羅馬式",
"xloc": [
- "default.handlebars->27->1034"
+ "default.handlebars->27->1036"
]
},
{
@@ -22191,7 +22203,7 @@
"ru": "Румынский",
"zh-chs": "羅馬尼亞語",
"xloc": [
- "default.handlebars->27->1035"
+ "default.handlebars->27->1037"
]
},
{
@@ -22208,7 +22220,7 @@
"ru": "Румынский (Молдавия)",
"zh-chs": "羅馬尼亞文(摩爾達維亞)",
"xloc": [
- "default.handlebars->27->1036"
+ "default.handlebars->27->1038"
]
},
{
@@ -22227,8 +22239,8 @@
"xloc": [
"default-mobile.handlebars->9->107",
"default-mobile.handlebars->9->287",
- "default.handlebars->27->1374",
- "default.handlebars->27->759"
+ "default.handlebars->27->1376",
+ "default.handlebars->27->761"
]
},
{
@@ -22350,7 +22362,7 @@
"ru": "Русский",
"zh-chs": "俄語",
"xloc": [
- "default.handlebars->27->1037"
+ "default.handlebars->27->1039"
]
},
{
@@ -22367,7 +22379,7 @@
"ru": "Русский (Молдавия)",
"zh-chs": "俄文(摩爾達維亞)",
"xloc": [
- "default.handlebars->27->1038"
+ "default.handlebars->27->1040"
]
},
{
@@ -22380,8 +22392,8 @@
"nl": "SMS",
"zh-chs": "短信",
"xloc": [
- "default.handlebars->27->1632",
- "default.handlebars->27->1637",
+ "default.handlebars->27->1634",
+ "default.handlebars->27->1639",
"login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
"login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3"
]
@@ -22396,7 +22408,7 @@
"nl": "SMS geschikt telefoonnummer voor deze gebruiker.",
"zh-chs": "此用户的短信功能电话号码。",
"xloc": [
- "default.handlebars->27->1649"
+ "default.handlebars->27->1651"
]
},
{
@@ -22444,7 +22456,7 @@
"ru": "Саамский",
"zh-chs": "薩米(拉普蘭)",
"xloc": [
- "default.handlebars->27->1039"
+ "default.handlebars->27->1041"
]
},
{
@@ -22489,7 +22501,7 @@
"ru": "Санго",
"zh-chs": "三鄉",
"xloc": [
- "default.handlebars->27->1040"
+ "default.handlebars->27->1042"
]
},
{
@@ -22506,7 +22518,7 @@
"ru": "Санскритский",
"zh-chs": "梵文",
"xloc": [
- "default.handlebars->27->1041"
+ "default.handlebars->27->1043"
]
},
{
@@ -22523,7 +22535,7 @@
"ru": "Сардинский",
"zh-chs": "撒丁島",
"xloc": [
- "default.handlebars->27->1042"
+ "default.handlebars->27->1044"
]
},
{
@@ -22781,7 +22793,7 @@
"zh-chs": "使用TLS保護",
"xloc": [
"default-mobile.handlebars->9->350",
- "default.handlebars->27->832"
+ "default.handlebars->27->834"
]
},
{
@@ -22800,10 +22812,10 @@
"xloc": [
"default-mobile.handlebars->9->263",
"default-mobile.handlebars->9->349",
- "default.handlebars->27->1633",
+ "default.handlebars->27->1635",
"default.handlebars->27->252",
- "default.handlebars->27->644",
- "default.handlebars->27->831"
+ "default.handlebars->27->646",
+ "default.handlebars->27->833"
]
},
{
@@ -22820,7 +22832,7 @@
"ru": "Ключ безопасности",
"zh-chs": "安全密鑰",
"xloc": [
- "default.handlebars->27->1630"
+ "default.handlebars->27->1632"
]
},
{
@@ -22854,12 +22866,12 @@
"ru": "Выбрать все",
"zh-chs": "全選",
"xloc": [
- "default.handlebars->27->1393",
- "default.handlebars->27->1450",
- "default.handlebars->27->1521",
+ "default.handlebars->27->1395",
+ "default.handlebars->27->1452",
+ "default.handlebars->27->1523",
"default.handlebars->27->396",
- "default.handlebars->27->761",
"default.handlebars->27->763",
+ "default.handlebars->27->765",
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar",
"default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
"default.handlebars->container->column_l->p4->3->1->0->3->3",
@@ -22882,11 +22894,11 @@
"ru": "Очистить все",
"zh-chs": "選擇無",
"xloc": [
- "default.handlebars->27->1392",
- "default.handlebars->27->1449",
- "default.handlebars->27->1520",
+ "default.handlebars->27->1394",
+ "default.handlebars->27->1451",
+ "default.handlebars->27->1522",
"default.handlebars->27->395",
- "default.handlebars->27->762",
+ "default.handlebars->27->764",
"default.handlebars->meshContextMenu->cxselectnone"
]
},
@@ -22904,7 +22916,7 @@
"ru": "Выберите новую группу для выбранных устройств",
"zh-chs": "為所選設備選擇一個新組",
"xloc": [
- "default.handlebars->27->658"
+ "default.handlebars->27->660"
]
},
{
@@ -22921,7 +22933,7 @@
"ru": "Выберите новую группу для этого устройства",
"zh-chs": "選擇此設備的新組",
"xloc": [
- "default.handlebars->27->657"
+ "default.handlebars->27->659"
]
},
{
@@ -22969,8 +22981,8 @@
"nl": "Selecteer een bewerking die u op alle geselecteerde gebruikers wilt uitvoeren.",
"zh-chs": "选择要对所有选定用户执行的操作。",
"xloc": [
- "default.handlebars->27->1451",
- "default.handlebars->27->1522"
+ "default.handlebars->27->1453",
+ "default.handlebars->27->1524"
]
},
{
@@ -22988,7 +23000,7 @@
"zh-chs": "選擇要在此設備上執行的操作。",
"xloc": [
"default-mobile.handlebars->9->252",
- "default.handlebars->27->630"
+ "default.handlebars->27->632"
]
},
{
@@ -23024,7 +23036,7 @@
"zh-chs": "僅自我事件",
"xloc": [
"default-mobile.handlebars->9->428",
- "default.handlebars->27->1327"
+ "default.handlebars->27->1329"
]
},
{
@@ -23050,7 +23062,7 @@
"en": "Send Email",
"nl": "E-mail verzenden",
"xloc": [
- "default.handlebars->27->1462"
+ "default.handlebars->27->1464"
]
},
{
@@ -23068,7 +23080,7 @@
"zh-chs": "發送MQTT消息",
"xloc": [
"default.handlebars->27->397",
- "default.handlebars->27->635"
+ "default.handlebars->27->637"
]
},
{
@@ -23085,7 +23097,7 @@
"ru": "Отправить MQTT сообщение",
"zh-chs": "發送MQTT消息",
"xloc": [
- "default.handlebars->27->650"
+ "default.handlebars->27->652"
]
},
{
@@ -23098,7 +23110,7 @@
"nl": "verstuur SMS",
"zh-chs": "发送短信",
"xloc": [
- "default.handlebars->27->1460"
+ "default.handlebars->27->1462"
]
},
{
@@ -23111,7 +23123,7 @@
"nl": "Stuur een SMS bericht naar deze gebruiker",
"zh-chs": "发送短信给该用户",
"xloc": [
- "default.handlebars->27->1638"
+ "default.handlebars->27->1640"
]
},
{
@@ -23119,7 +23131,7 @@
"nl": "Stuur een e-mailbericht naar deze gebruiker",
"fr": "Envoyer un Mail à cet utilisateur",
"xloc": [
- "default.handlebars->27->1640"
+ "default.handlebars->27->1642"
]
},
{
@@ -23136,7 +23148,7 @@
"ru": "Отправить уведомление всем пользователям этой группы.",
"zh-chs": "向該組中的所有用戶發送通知。",
"xloc": [
- "default.handlebars->27->1549"
+ "default.handlebars->27->1551"
]
},
{
@@ -23153,7 +23165,7 @@
"ru": "Отправить текстовое уведомление этому пользователю.",
"zh-chs": "向該用戶發送文本通知。",
"xloc": [
- "default.handlebars->27->1464"
+ "default.handlebars->27->1466"
]
},
{
@@ -23169,7 +23181,7 @@
"ru": "Отправить письмо пользователю",
"zh-chs": "发送电子邮件给用户",
"xloc": [
- "default.handlebars->27->1445"
+ "default.handlebars->27->1447"
]
},
{
@@ -23203,7 +23215,7 @@
"ru": "Отправить приглашение по email.",
"zh-chs": "發送邀請電子郵件。",
"xloc": [
- "default.handlebars->27->1495"
+ "default.handlebars->27->1497"
]
},
{
@@ -23269,7 +23281,7 @@
"ru": "Отправить уведомление пользователю",
"zh-chs": "發送用戶通知",
"xloc": [
- "default.handlebars->27->1642"
+ "default.handlebars->27->1644"
]
},
{
@@ -23286,7 +23298,7 @@
"ru": "Сербский",
"zh-chs": "塞爾維亞",
"xloc": [
- "default.handlebars->27->1045"
+ "default.handlebars->27->1047"
]
},
{
@@ -23304,7 +23316,7 @@
"zh-chs": "序列號",
"xloc": [
"default-mobile.handlebars->9->361",
- "default.handlebars->27->843"
+ "default.handlebars->27->845"
]
},
{
@@ -23321,7 +23333,7 @@
"ru": "Резервное копирование сервера",
"zh-chs": "服務器備份",
"xloc": [
- "default.handlebars->27->1505"
+ "default.handlebars->27->1507"
]
},
{
@@ -23338,7 +23350,7 @@
"ru": "Сертификат сервера",
"zh-chs": "服務器證書",
"xloc": [
- "default.handlebars->27->1787"
+ "default.handlebars->27->1789"
]
},
{
@@ -23355,7 +23367,7 @@
"ru": "База данных сервера",
"zh-chs": "服務器數據庫",
"xloc": [
- "default.handlebars->27->1788"
+ "default.handlebars->27->1790"
]
},
{
@@ -23374,11 +23386,11 @@
"xloc": [
"default-mobile.handlebars->9->407",
"default-mobile.handlebars->9->420",
- "default.handlebars->27->1290",
- "default.handlebars->27->1318",
- "default.handlebars->27->1502",
- "default.handlebars->27->596",
- "default.handlebars->27->615"
+ "default.handlebars->27->1292",
+ "default.handlebars->27->1320",
+ "default.handlebars->27->1504",
+ "default.handlebars->27->598",
+ "default.handlebars->27->617"
]
},
{
@@ -23395,8 +23407,8 @@
"ru": "Разрешения сервера",
"zh-chs": "服務器權限",
"xloc": [
- "default.handlebars->27->1437",
- "default.handlebars->27->1514"
+ "default.handlebars->27->1439",
+ "default.handlebars->27->1516"
]
},
{
@@ -23413,7 +23425,7 @@
"ru": "Квота сервера",
"zh-chs": "服務器配額",
"xloc": [
- "default.handlebars->27->1604"
+ "default.handlebars->27->1606"
]
},
{
@@ -23430,7 +23442,7 @@
"ru": "Восстановление сервера",
"zh-chs": "服務器還原",
"xloc": [
- "default.handlebars->27->1506"
+ "default.handlebars->27->1508"
]
},
{
@@ -23447,7 +23459,7 @@
"ru": "Права",
"zh-chs": "服務器權限",
"xloc": [
- "default.handlebars->27->1603"
+ "default.handlebars->27->1605"
]
},
{
@@ -23464,7 +23476,7 @@
"ru": "Состояние сервера",
"zh-chs": "服務器狀態",
"xloc": [
- "default.handlebars->27->1738"
+ "default.handlebars->27->1740"
]
},
{
@@ -23498,7 +23510,7 @@
"ru": "Трассировка сервера",
"zh-chs": "服務器跟踪",
"xloc": [
- "default.handlebars->27->1798"
+ "default.handlebars->27->1800"
]
},
{
@@ -23515,7 +23527,7 @@
"ru": "Обновление сервера",
"zh-chs": "服務器更新",
"xloc": [
- "default.handlebars->27->1507"
+ "default.handlebars->27->1509"
]
},
{
@@ -23637,7 +23649,7 @@
"ru": "ServerStats.csv",
"zh-chs": "ServerStats.csv",
"xloc": [
- "default.handlebars->27->1779"
+ "default.handlebars->27->1781"
]
},
{
@@ -23654,7 +23666,7 @@
"ru": "Детали службы",
"zh-chs": "服務詳情",
"xloc": [
- "default.handlebars->27->741"
+ "default.handlebars->27->743"
]
},
{
@@ -23678,14 +23690,14 @@
"en": "Session",
"nl": "Sessie",
"xloc": [
- "default.handlebars->27->1702"
+ "default.handlebars->27->1704"
]
},
{
"en": "Session Information",
"nl": "Sessie informatie",
"xloc": [
- "default.handlebars->27->714"
+ "default.handlebars->27->716"
]
},
{
@@ -23870,7 +23882,7 @@
"ru": "Общий процесс",
"zh-chs": "共享過程",
"xloc": [
- "default.handlebars->27->735"
+ "default.handlebars->27->737"
]
},
{
@@ -23980,7 +23992,7 @@
"zh-chs": "只顯示自己的事件",
"xloc": [
"default-mobile.handlebars->9->410",
- "default.handlebars->27->1293"
+ "default.handlebars->27->1295"
]
},
{
@@ -23997,7 +24009,7 @@
"ru": "Показывать панель-уведомление",
"zh-chs": "顯示連接工具欄",
"xloc": [
- "default.handlebars->27->1256"
+ "default.handlebars->27->1258"
]
},
{
@@ -24138,8 +24150,8 @@
"ru": "Простой режим управления администратора (ACM)",
"zh-chs": "簡單管理員控制模式(ACM)",
"xloc": [
- "default.handlebars->27->1194",
- "default.handlebars->27->1217"
+ "default.handlebars->27->1196",
+ "default.handlebars->27->1219"
]
},
{
@@ -24156,9 +24168,9 @@
"ru": "Простой режим управления клиента (CCM)",
"zh-chs": "簡單客戶端控制模式(CCM)",
"xloc": [
- "default.handlebars->27->1192",
- "default.handlebars->27->1220",
- "default.handlebars->27->1224"
+ "default.handlebars->27->1194",
+ "default.handlebars->27->1222",
+ "default.handlebars->27->1226"
]
},
{
@@ -24175,7 +24187,7 @@
"ru": "Синдхи",
"zh-chs": "信地",
"xloc": [
- "default.handlebars->27->1043"
+ "default.handlebars->27->1045"
]
},
{
@@ -24192,7 +24204,7 @@
"ru": "Сингальский",
"zh-chs": "僧伽羅語",
"xloc": [
- "default.handlebars->27->1044"
+ "default.handlebars->27->1046"
]
},
{
@@ -24217,8 +24229,8 @@
"ru": "Размер",
"zh-chs": "尺寸",
"xloc": [
- "default.handlebars->27->1705",
- "default.handlebars->27->1720",
+ "default.handlebars->27->1707",
+ "default.handlebars->27->1722",
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSize"
]
},
@@ -24236,7 +24248,7 @@
"ru": "Размер: 100%",
"zh-chs": "尺寸:100%",
"xloc": [
- "default.handlebars->27->789"
+ "default.handlebars->27->791"
]
},
{
@@ -24253,7 +24265,7 @@
"ru": "Размер: 125%",
"zh-chs": "尺寸:125%",
"xloc": [
- "default.handlebars->27->790"
+ "default.handlebars->27->792"
]
},
{
@@ -24270,7 +24282,7 @@
"ru": "Размер: 150%",
"zh-chs": "尺寸:150%",
"xloc": [
- "default.handlebars->27->791"
+ "default.handlebars->27->793"
]
},
{
@@ -24287,7 +24299,7 @@
"ru": "Размер: 200%",
"zh-chs": "尺寸:200%",
"xloc": [
- "default.handlebars->27->792"
+ "default.handlebars->27->794"
]
},
{
@@ -24311,7 +24323,7 @@
"default.handlebars->27->2",
"default.handlebars->27->3",
"default.handlebars->27->4",
- "default.handlebars->27->632"
+ "default.handlebars->27->634"
]
},
{
@@ -24365,7 +24377,7 @@
"ru": "Словацкий",
"zh-chs": "斯洛伐克文",
"xloc": [
- "default.handlebars->27->1046"
+ "default.handlebars->27->1048"
]
},
{
@@ -24382,7 +24394,7 @@
"ru": "Словенский",
"zh-chs": "斯洛文尼亞文",
"xloc": [
- "default.handlebars->27->1047"
+ "default.handlebars->27->1049"
]
},
{
@@ -24435,7 +24447,7 @@
"ru": "Малая фокусировка",
"zh-chs": "小焦點",
"xloc": [
- "default.handlebars->27->720"
+ "default.handlebars->27->722"
]
},
{
@@ -24452,7 +24464,7 @@
"ru": "Програмное отключение агента",
"zh-chs": "軟斷開劑",
"xloc": [
- "default.handlebars->27->873"
+ "default.handlebars->27->875"
]
},
{
@@ -24504,7 +24516,7 @@
"ru": "Сомани",
"zh-chs": "索馬尼",
"xloc": [
- "default.handlebars->27->1048"
+ "default.handlebars->27->1050"
]
},
{
@@ -24521,7 +24533,7 @@
"ru": "Сорбский",
"zh-chs": "索比亞人",
"xloc": [
- "default.handlebars->27->1049"
+ "default.handlebars->27->1051"
]
},
{
@@ -24651,7 +24663,7 @@
"ru": "Испанский",
"zh-chs": "西班牙文",
"xloc": [
- "default.handlebars->27->1050"
+ "default.handlebars->27->1052"
]
},
{
@@ -24668,7 +24680,7 @@
"ru": "Испанский (Аргентина)",
"zh-chs": "西班牙文(阿根廷)",
"xloc": [
- "default.handlebars->27->1051"
+ "default.handlebars->27->1053"
]
},
{
@@ -24685,7 +24697,7 @@
"ru": "Испанский (Боливия)",
"zh-chs": "西班牙語(玻利維亞)",
"xloc": [
- "default.handlebars->27->1052"
+ "default.handlebars->27->1054"
]
},
{
@@ -24702,7 +24714,7 @@
"ru": "Испанский (Чили)",
"zh-chs": "西班牙語(智利)",
"xloc": [
- "default.handlebars->27->1053"
+ "default.handlebars->27->1055"
]
},
{
@@ -24719,7 +24731,7 @@
"ru": "Испанский (Колумбия)",
"zh-chs": "西班牙語(哥倫比亞)",
"xloc": [
- "default.handlebars->27->1054"
+ "default.handlebars->27->1056"
]
},
{
@@ -24736,7 +24748,7 @@
"ru": "Испанский (Коста-Рика)",
"zh-chs": "西班牙語(哥斯達黎加)",
"xloc": [
- "default.handlebars->27->1055"
+ "default.handlebars->27->1057"
]
},
{
@@ -24753,7 +24765,7 @@
"ru": "Испанский (Доминиканская Республика)",
"zh-chs": "西班牙語(多米尼加共和國)",
"xloc": [
- "default.handlebars->27->1056"
+ "default.handlebars->27->1058"
]
},
{
@@ -24770,7 +24782,7 @@
"ru": "Испанский (Эквадор)",
"zh-chs": "西班牙語(厄瓜多爾)",
"xloc": [
- "default.handlebars->27->1057"
+ "default.handlebars->27->1059"
]
},
{
@@ -24787,7 +24799,7 @@
"ru": "Испанский (Сальвадор)",
"zh-chs": "西班牙語(薩爾瓦多)",
"xloc": [
- "default.handlebars->27->1058"
+ "default.handlebars->27->1060"
]
},
{
@@ -24804,7 +24816,7 @@
"ru": "Испанский (Гватемала)",
"zh-chs": "西班牙語(危地馬拉)",
"xloc": [
- "default.handlebars->27->1059"
+ "default.handlebars->27->1061"
]
},
{
@@ -24821,7 +24833,7 @@
"ru": "Испанский (Гондурас)",
"zh-chs": "西班牙語(洪都拉斯)",
"xloc": [
- "default.handlebars->27->1060"
+ "default.handlebars->27->1062"
]
},
{
@@ -24838,7 +24850,7 @@
"ru": "Испанский (Мексика)",
"zh-chs": "西班牙語(墨西哥)",
"xloc": [
- "default.handlebars->27->1061"
+ "default.handlebars->27->1063"
]
},
{
@@ -24855,7 +24867,7 @@
"ru": "Испанский (Никарагуа)",
"zh-chs": "西班牙語(尼加拉瓜)",
"xloc": [
- "default.handlebars->27->1062"
+ "default.handlebars->27->1064"
]
},
{
@@ -24872,7 +24884,7 @@
"ru": "Испанский (Панама)",
"zh-chs": "西班牙語(巴拿馬)",
"xloc": [
- "default.handlebars->27->1063"
+ "default.handlebars->27->1065"
]
},
{
@@ -24889,7 +24901,7 @@
"ru": "Испанский (Парагвай)",
"zh-chs": "西班牙語(巴拉圭)",
"xloc": [
- "default.handlebars->27->1064"
+ "default.handlebars->27->1066"
]
},
{
@@ -24906,7 +24918,7 @@
"ru": "Испанский (Перу)",
"zh-chs": "西班牙語(秘魯)",
"xloc": [
- "default.handlebars->27->1065"
+ "default.handlebars->27->1067"
]
},
{
@@ -24923,7 +24935,7 @@
"ru": "Испанский (Пуэрто-Рико)",
"zh-chs": "西班牙語(波多黎各)",
"xloc": [
- "default.handlebars->27->1066"
+ "default.handlebars->27->1068"
]
},
{
@@ -24940,7 +24952,7 @@
"ru": "Испанский (Испания)",
"zh-chs": "西班牙語(西班牙)",
"xloc": [
- "default.handlebars->27->1067"
+ "default.handlebars->27->1069"
]
},
{
@@ -24957,7 +24969,7 @@
"ru": "Испанский (Уругвай)",
"zh-chs": "西班牙語(烏拉圭)",
"xloc": [
- "default.handlebars->27->1068"
+ "default.handlebars->27->1070"
]
},
{
@@ -24974,7 +24986,7 @@
"ru": "Испанский (Венесуэла)",
"zh-chs": "西班牙語(委內瑞拉)",
"xloc": [
- "default.handlebars->27->1069"
+ "default.handlebars->27->1071"
]
},
{
@@ -25022,23 +25034,23 @@
"ru": "Старт",
"zh-chs": "開始",
"xloc": [
- "default.handlebars->27->738"
+ "default.handlebars->27->740"
]
},
{
"en": "Start MeshCentral Router",
"nl": "Start MeshCentral Router",
"xloc": [
- "default.handlebars->27->671"
+ "default.handlebars->27->673"
]
},
{
"en": "Start Time",
"nl": "Start tijd",
"xloc": [
- "default.handlebars->27->1703",
- "default.handlebars->27->1722",
- "default.handlebars->27->710"
+ "default.handlebars->27->1705",
+ "default.handlebars->27->1724",
+ "default.handlebars->27->712"
]
},
{
@@ -25055,7 +25067,7 @@
"ru": "Состояние",
"zh-chs": "州",
"xloc": [
- "default.handlebars->27->729",
+ "default.handlebars->27->731",
"default.handlebars->container->column_l->p11->deskarea0->deskarea3x->DeskTools->deskToolsArea->DeskToolsServiceTab->deskToolsServiceHeader->1"
]
},
@@ -25090,8 +25102,8 @@
"ru": "Статус",
"zh-chs": "狀態",
"xloc": [
- "default.handlebars->27->1654",
- "default.handlebars->27->1715",
+ "default.handlebars->27->1656",
+ "default.handlebars->27->1717",
"default.handlebars->container->column_l->p42->p42tbl->1->0->7"
]
},
@@ -25109,7 +25121,7 @@
"ru": "Стоп",
"zh-chs": "停止",
"xloc": [
- "default.handlebars->27->739"
+ "default.handlebars->27->741"
]
},
{
@@ -25125,7 +25137,7 @@
"ru": "Остановить процесс",
"zh-chs": "停止程序",
"xloc": [
- "default.handlebars->27->726"
+ "default.handlebars->27->728"
]
},
{
@@ -25143,7 +25155,7 @@
"zh-chs": "停止進程#{0} \\“ {1} \\”?",
"xloc": [
"default-mobile.handlebars->9->283",
- "default.handlebars->27->743"
+ "default.handlebars->27->745"
]
},
{
@@ -25157,7 +25169,7 @@
"zh-chs": "存储",
"xloc": [
"default-mobile.handlebars->9->375",
- "default.handlebars->27->857"
+ "default.handlebars->27->859"
]
},
{
@@ -25191,7 +25203,7 @@
"ru": "Превышен лимит места для хранения",
"zh-chs": "儲存空間超過",
"xloc": [
- "default.handlebars->27->1378"
+ "default.handlebars->27->1380"
]
},
{
@@ -25208,7 +25220,7 @@
"ru": "Надежный",
"zh-chs": "強大",
"xloc": [
- "default.handlebars->27->1141"
+ "default.handlebars->27->1143"
]
},
{
@@ -25235,7 +25247,7 @@
"en": "Subject",
"nl": "Onderwerp",
"xloc": [
- "default.handlebars->27->1461"
+ "default.handlebars->27->1463"
]
},
{
@@ -25320,7 +25332,7 @@
"ru": "Суту",
"zh-chs": "蘇圖",
"xloc": [
- "default.handlebars->27->1070"
+ "default.handlebars->27->1072"
]
},
{
@@ -25337,7 +25349,7 @@
"ru": "Суахили",
"zh-chs": "斯瓦希里語",
"xloc": [
- "default.handlebars->27->1071"
+ "default.handlebars->27->1073"
]
},
{
@@ -25354,7 +25366,7 @@
"ru": "Шведский",
"zh-chs": "瑞典",
"xloc": [
- "default.handlebars->27->1072"
+ "default.handlebars->27->1074"
]
},
{
@@ -25371,7 +25383,7 @@
"ru": "Шведский (Финляндия)",
"zh-chs": "瑞典語(芬蘭)",
"xloc": [
- "default.handlebars->27->1073"
+ "default.handlebars->27->1075"
]
},
{
@@ -25388,7 +25400,7 @@
"ru": "Шведский (Швеция)",
"zh-chs": "瑞典文(瑞典)",
"xloc": [
- "default.handlebars->27->1074"
+ "default.handlebars->27->1076"
]
},
{
@@ -25405,7 +25417,7 @@
"ru": "Синхронизировать имя устройства на сервере с именем хоста",
"zh-chs": "將服務器設備名稱同步到主機名",
"xloc": [
- "default.handlebars->27->1264"
+ "default.handlebars->27->1266"
]
},
{
@@ -25499,7 +25511,7 @@
"zh-chs": "未設置TLS",
"xloc": [
"default-mobile.handlebars->9->351",
- "default.handlebars->27->833"
+ "default.handlebars->27->835"
]
},
{
@@ -25518,7 +25530,7 @@
"xloc": [
"default-mobile.handlebars->9->265",
"default.handlebars->27->254",
- "default.handlebars->27->646"
+ "default.handlebars->27->648"
]
},
{
@@ -25552,7 +25564,7 @@
"ru": "Тег1, Тег2, Тег3",
"zh-chs": "標籤1,標籤2,標籤3",
"xloc": [
- "default.handlebars->27->700"
+ "default.handlebars->27->702"
]
},
{
@@ -25572,7 +25584,7 @@
"default-mobile.handlebars->9->239",
"default-mobile.handlebars->9->240",
"default-mobile.handlebars->9->274",
- "default.handlebars->27->699",
+ "default.handlebars->27->701",
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->7"
]
},
@@ -25590,7 +25602,7 @@
"ru": "Тамильский",
"zh-chs": "泰米爾語",
"xloc": [
- "default.handlebars->27->1075"
+ "default.handlebars->27->1077"
]
},
{
@@ -25607,7 +25619,7 @@
"ru": "Татарский",
"zh-chs": "塔塔爾族",
"xloc": [
- "default.handlebars->27->1076"
+ "default.handlebars->27->1078"
]
},
{
@@ -25624,7 +25636,7 @@
"ru": "Телугу",
"zh-chs": "泰盧加",
"xloc": [
- "default.handlebars->27->1077"
+ "default.handlebars->27->1079"
]
},
{
@@ -25642,8 +25654,8 @@
"zh-chs": "終奌站",
"xloc": [
"default-mobile.handlebars->9->164",
- "default.handlebars->27->1257",
- "default.handlebars->27->1709",
+ "default.handlebars->27->1259",
+ "default.handlebars->27->1711",
"default.handlebars->27->217",
"default.handlebars->27->449",
"default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevTerminal",
@@ -25681,8 +25693,8 @@
"ru": "Терминал уведомление",
"zh-chs": "終端通知",
"xloc": [
- "default.handlebars->27->1177",
- "default.handlebars->27->1622",
+ "default.handlebars->27->1179",
+ "default.handlebars->27->1624",
"default.handlebars->27->521"
]
},
@@ -25700,8 +25712,8 @@
"ru": "Запрос терминала",
"zh-chs": "終端提示",
"xloc": [
- "default.handlebars->27->1176",
- "default.handlebars->27->1621",
+ "default.handlebars->27->1178",
+ "default.handlebars->27->1623",
"default.handlebars->27->520"
]
},
@@ -25758,7 +25770,7 @@
"ru": "Тайский",
"zh-chs": "泰國",
"xloc": [
- "default.handlebars->27->1078"
+ "default.handlebars->27->1080"
]
},
{
@@ -25845,7 +25857,7 @@
"ru": "На данный момент уведомлений нет",
"zh-chs": "目前沒有任何通知",
"xloc": [
- "default.handlebars->27->1730"
+ "default.handlebars->27->1732"
]
},
{
@@ -25897,7 +25909,7 @@
"zh-chs": "該帳戶無權創建新的設備組。",
"xloc": [
"default-mobile.handlebars->9->92",
- "default.handlebars->27->1127"
+ "default.handlebars->27->1129"
]
},
{
@@ -25931,7 +25943,7 @@
"ru": "Это не безопасная политика, так как агенты будут выполнять активацию.",
"zh-chs": "這不是安全的策略,因為代理將執行激活。",
"xloc": [
- "default.handlebars->27->1242"
+ "default.handlebars->27->1244"
]
},
{
@@ -25966,7 +25978,7 @@
"ru": "Эта политика не повлияет на устройства с Intel® AMT в режиме ACM.",
"zh-chs": "該策略不會影響採用ACM模式的英特爾®AMT的設備。",
"xloc": [
- "default.handlebars->27->1241"
+ "default.handlebars->27->1243"
]
},
{
@@ -26032,7 +26044,7 @@
"nl": "Hiermee wordt een vermelding toegevoegd aan het gebeurtenislogboek van dit apparaat.",
"zh-chs": "这会将条目添加到该设备的事件日志中。",
"xloc": [
- "default.handlebars->27->623"
+ "default.handlebars->27->625"
]
},
{
@@ -26063,7 +26075,7 @@
"ru": "Это не приведет к удалению устройств с сервера, но они больше не смогут подключаться к серверу. Весь удаленный доступ к устройствам будет потерян. Устройства должны быть подключены, чтобы эта команда работала.",
"zh-chs": "這不會從服務器上刪除設備,但是設備將不再能夠連接到服務器。對設備的所有遠程訪問都將丟失。必須連接設備,此命令才能起作用。",
"xloc": [
- "default.handlebars->27->653"
+ "default.handlebars->27->655"
]
},
{
@@ -26080,7 +26092,7 @@
"ru": "Это не приведет к удалению этого устройства с сервера, но оно больше не сможет подключаться к серверу. Весь удаленный доступ к устройству будет потерян. Для работы этой команды устройство должно быть подключено.",
"zh-chs": "這不會將該設備從服務器上刪除,但是該設備將不再能夠連接到服務器。對設備的所有遠程訪問都將丟失。必須連接設備,此命令才能起作用。",
"xloc": [
- "default.handlebars->27->654"
+ "default.handlebars->27->656"
]
},
{
@@ -26097,7 +26109,7 @@
"ru": "Тигровый",
"zh-chs": "蒂格雷",
"xloc": [
- "default.handlebars->27->1079"
+ "default.handlebars->27->1081"
]
},
{
@@ -26121,7 +26133,7 @@
"en": "Timeout",
"nl": "Time-out",
"xloc": [
- "default.handlebars->27->705"
+ "default.handlebars->27->707"
]
},
{
@@ -26240,7 +26252,7 @@
"ru": "Чтобы удалить эту учетную запись, введите пароль учетной записи в оба поля и нажмите ОК.",
"zh-chs": "要刪除此帳戶,請在下面的兩個框中鍵入帳戶密碼,然後單擊確定。",
"xloc": [
- "default.handlebars->27->1114"
+ "default.handlebars->27->1116"
]
},
{
@@ -26589,7 +26601,7 @@
"ru": "Тема",
"zh-chs": "話題",
"xloc": [
- "default.handlebars->27->648"
+ "default.handlebars->27->650"
]
},
{
@@ -26674,7 +26686,7 @@
"ru": "Тсонга",
"zh-chs": "特松加",
"xloc": [
- "default.handlebars->27->1080"
+ "default.handlebars->27->1082"
]
},
{
@@ -26691,7 +26703,7 @@
"ru": "Тсвана",
"zh-chs": "茨瓦納",
"xloc": [
- "default.handlebars->27->1081"
+ "default.handlebars->27->1083"
]
},
{
@@ -26708,7 +26720,7 @@
"ru": "Турецкий",
"zh-chs": "土耳其",
"xloc": [
- "default.handlebars->27->1082"
+ "default.handlebars->27->1084"
]
},
{
@@ -26725,7 +26737,7 @@
"ru": "Туркменский",
"zh-chs": "土庫曼人",
"xloc": [
- "default.handlebars->27->1083"
+ "default.handlebars->27->1085"
]
},
{
@@ -26761,11 +26773,11 @@
"xloc": [
"default-mobile.handlebars->9->383",
"default-mobile.handlebars->9->98",
- "default.handlebars->27->1134",
- "default.handlebars->27->1167",
- "default.handlebars->27->1218",
- "default.handlebars->27->1221",
- "default.handlebars->27->736",
+ "default.handlebars->27->1136",
+ "default.handlebars->27->1169",
+ "default.handlebars->27->1220",
+ "default.handlebars->27->1223",
+ "default.handlebars->27->738",
"default.handlebars->container->column_l->p11->deskarea0->deskarea4->3"
]
},
@@ -26783,7 +26795,7 @@
"ru": "Введите имя ключа, выберите поле OTP и нажмите кнопку на YubiKey™.",
"zh-chs": "輸入密鑰名稱,選擇OTP框,然後按YubiKey™上的按鈕。",
"xloc": [
- "default.handlebars->27->892"
+ "default.handlebars->27->894"
]
},
{
@@ -26800,7 +26812,7 @@
"ru": "Введите имя ключа для добавления.",
"zh-chs": "輸入要添加的密鑰的名稱。",
"xloc": [
- "default.handlebars->27->889"
+ "default.handlebars->27->891"
]
},
{
@@ -26817,7 +26829,7 @@
"ru": "Терминал UTF8",
"zh-chs": "UTF8終端",
"xloc": [
- "default.handlebars->27->747"
+ "default.handlebars->27->749"
]
},
{
@@ -26834,7 +26846,7 @@
"ru": "Украинский",
"zh-chs": "烏克蘭",
"xloc": [
- "default.handlebars->27->1084"
+ "default.handlebars->27->1086"
]
},
{
@@ -26851,7 +26863,7 @@
"ru": "Невозможно получить доступ к устройству, пока адрес email не подтвержден. Это необходимо для восстановления пароля. Перейдите на вкладку \\\"Моя учетная запись\\\", чтобы изменить и подтвердить адрес email.",
"zh-chs": "在驗證電子郵件地址之前,無法訪問設備。這是密碼恢復所必需的。轉到“我的帳戶”標籤以更改和驗證電子郵件地址。",
"xloc": [
- "default.handlebars->27->1129",
+ "default.handlebars->27->1131",
"default.handlebars->27->465"
]
},
@@ -26905,7 +26917,7 @@
"ru": "Невозможно получить доступ к устройству, пока не включена двухфакторная аутентификация. Это требуется для дополнительной безопасности. Перейдите на вкладку \\\"Моя учетная запись\\\" и посмотрите \\\"Безопасность учетной записи\\\".",
"zh-chs": "在啟用兩因素身份驗證之前,無法訪問設備。這是額外的安全性所必需的。轉到“我的帳戶”標籤,然後查看“帳戶安全性”部分。",
"xloc": [
- "default.handlebars->27->1131",
+ "default.handlebars->27->1133",
"default.handlebars->27->467"
]
},
@@ -27013,9 +27025,9 @@
"zh-chs": "卸載",
"xloc": [
"default-mobile.handlebars->9->430",
- "default.handlebars->27->1329",
- "default.handlebars->27->601",
- "default.handlebars->27->620"
+ "default.handlebars->27->1331",
+ "default.handlebars->27->603",
+ "default.handlebars->27->622"
]
},
{
@@ -27033,9 +27045,9 @@
"zh-chs": "卸載代理",
"xloc": [
"default-mobile.handlebars->9->412",
- "default.handlebars->27->1295",
+ "default.handlebars->27->1297",
"default.handlebars->27->398",
- "default.handlebars->27->636"
+ "default.handlebars->27->638"
]
},
{
@@ -27052,7 +27064,7 @@
"ru": "Удалить агент",
"zh-chs": "卸載代理",
"xloc": [
- "default.handlebars->27->656"
+ "default.handlebars->27->658"
]
},
{
@@ -27075,17 +27087,17 @@
"default-mobile.handlebars->9->348",
"default-mobile.handlebars->9->35",
"default-mobile.handlebars->9->6",
- "default.handlebars->27->1154",
- "default.handlebars->27->1155",
+ "default.handlebars->27->1156",
+ "default.handlebars->27->1157",
"default.handlebars->27->13",
- "default.handlebars->27->1694",
- "default.handlebars->27->1707",
- "default.handlebars->27->1708",
+ "default.handlebars->27->1696",
+ "default.handlebars->27->1709",
+ "default.handlebars->27->1710",
"default.handlebars->27->394",
"default.handlebars->27->41",
"default.handlebars->27->42",
- "default.handlebars->27->823",
- "default.handlebars->27->830",
+ "default.handlebars->27->825",
+ "default.handlebars->27->832",
"default.handlebars->27->91",
"default.handlebars->27->92",
"default.handlebars->27->93",
@@ -27108,7 +27120,7 @@
"zh-chs": "未知#{0}",
"xloc": [
"default-mobile.handlebars->9->377",
- "default.handlebars->27->1161"
+ "default.handlebars->27->1163"
]
},
{
@@ -27125,7 +27137,7 @@
"ru": "Неизвестное действие",
"zh-chs": "未知動作",
"xloc": [
- "default.handlebars->27->1744"
+ "default.handlebars->27->1746"
]
},
{
@@ -27142,8 +27154,8 @@
"ru": "Неизвестное устройство",
"zh-chs": "未知設備",
"xloc": [
- "default.handlebars->27->1563",
- "default.handlebars->27->1682"
+ "default.handlebars->27->1565",
+ "default.handlebars->27->1684"
]
},
{
@@ -27160,9 +27172,9 @@
"ru": "Неизвестная группа устройств",
"zh-chs": "未知設備組",
"xloc": [
- "default.handlebars->27->1557",
- "default.handlebars->27->1670",
- "default.handlebars->27->1748"
+ "default.handlebars->27->1559",
+ "default.handlebars->27->1672",
+ "default.handlebars->27->1750"
]
},
{
@@ -27179,7 +27191,7 @@
"ru": "Неизвестная группа",
"zh-chs": "未知群組",
"xloc": [
- "default.handlebars->27->1740"
+ "default.handlebars->27->1742"
]
},
{
@@ -27214,7 +27226,7 @@
"ru": "Неизвестная группа пользователей",
"zh-chs": "未知用戶組",
"xloc": [
- "default.handlebars->27->1676"
+ "default.handlebars->27->1678"
]
},
{
@@ -27265,7 +27277,7 @@
"nl": "Account ontgrendelen",
"zh-chs": "解锁帐号",
"xloc": [
- "default.handlebars->27->1454"
+ "default.handlebars->27->1456"
]
},
{
@@ -27303,7 +27315,7 @@
"ru": "Актуально",
"zh-chs": "最新",
"xloc": [
- "default.handlebars->27->1805"
+ "default.handlebars->27->1807"
]
},
{
@@ -27343,11 +27355,11 @@
"default-mobile.handlebars->9->126",
"default-mobile.handlebars->9->298",
"default-mobile.handlebars->9->316",
- "default.handlebars->27->1402",
- "default.handlebars->27->1410",
- "default.handlebars->27->770",
- "default.handlebars->27->793",
- "default.handlebars->27->796",
+ "default.handlebars->27->1404",
+ "default.handlebars->27->1412",
+ "default.handlebars->27->772",
+ "default.handlebars->27->795",
+ "default.handlebars->27->798",
"default.handlebars->container->dialog->dialogBody->dialog3->d3localmode->1"
]
},
@@ -27365,7 +27377,7 @@
"ru": "Загрузить ядро Mesh Agent",
"zh-chs": "上傳網格代理核心",
"xloc": [
- "default.handlebars->27->875"
+ "default.handlebars->27->877"
]
},
{
@@ -27382,7 +27394,7 @@
"ru": "Загрузить файл ядра",
"zh-chs": "上載核心文件",
"xloc": [
- "default.handlebars->27->872"
+ "default.handlebars->27->874"
]
},
{
@@ -27399,7 +27411,7 @@
"ru": "Загрузить ядро по умолчанию с сервера ",
"zh-chs": "上載默認服務器核心",
"xloc": [
- "default.handlebars->27->869"
+ "default.handlebars->27->871"
]
},
{
@@ -27416,7 +27428,7 @@
"ru": "Загрузить ядро восстановления",
"zh-chs": "上傳恢復核心",
"xloc": [
- "default.handlebars->27->871"
+ "default.handlebars->27->873"
]
},
{
@@ -27433,8 +27445,8 @@
"ru": "Загрузка перезапишет 1 файл. Продолжить?",
"zh-chs": "上傳將覆蓋1個文件。繼續?",
"xloc": [
- "default.handlebars->27->1411",
- "default.handlebars->27->794"
+ "default.handlebars->27->1413",
+ "default.handlebars->27->796"
]
},
{
@@ -27451,8 +27463,8 @@
"ru": "Загрузка перезапишет {0} файлов. Продолжить?",
"zh-chs": "上傳將覆蓋{0}個文件。繼續?",
"xloc": [
- "default.handlebars->27->1412",
- "default.handlebars->27->795"
+ "default.handlebars->27->1414",
+ "default.handlebars->27->797"
]
},
{
@@ -27483,7 +27495,7 @@
"ru": "Верхний Сорбский",
"zh-chs": "上索布族",
"xloc": [
- "default.handlebars->27->1085"
+ "default.handlebars->27->1087"
]
},
{
@@ -27500,7 +27512,7 @@
"ru": "Урду",
"zh-chs": "烏爾都語",
"xloc": [
- "default.handlebars->27->1086"
+ "default.handlebars->27->1088"
]
},
{
@@ -27552,8 +27564,8 @@
"ru": "Использовано",
"zh-chs": "用過的",
"xloc": [
- "default.handlebars->27->1734",
- "default.handlebars->27->1736"
+ "default.handlebars->27->1736",
+ "default.handlebars->27->1738"
]
},
{
@@ -27570,12 +27582,12 @@
"ru": "Пользователь",
"zh-chs": "用戶",
"xloc": [
- "default.handlebars->27->1215",
- "default.handlebars->27->1438",
- "default.handlebars->27->1553",
- "default.handlebars->27->1727",
+ "default.handlebars->27->1217",
+ "default.handlebars->27->1440",
+ "default.handlebars->27->1555",
+ "default.handlebars->27->1729",
"default.handlebars->27->195",
- "default.handlebars->27->585"
+ "default.handlebars->27->587"
]
},
{
@@ -27592,7 +27604,7 @@
"ru": "Пользователь + Файлы",
"zh-chs": "用戶+文件",
"xloc": [
- "default.handlebars->27->1439"
+ "default.handlebars->27->1441"
]
},
{
@@ -27609,10 +27621,10 @@
"ru": "Импорт учетной записи пользователя",
"zh-chs": "用戶帳戶導入",
"xloc": [
- "default.handlebars->27->1466",
- "default.handlebars->27->1467",
+ "default.handlebars->27->1468",
"default.handlebars->27->1469",
- "default.handlebars->27->1471"
+ "default.handlebars->27->1471",
+ "default.handlebars->27->1473"
]
},
{
@@ -27629,7 +27641,7 @@
"ru": "Учетные записи пользователей",
"zh-chs": "用戶帳號",
"xloc": [
- "default.handlebars->27->1753"
+ "default.handlebars->27->1755"
]
},
{
@@ -27647,8 +27659,8 @@
"zh-chs": "用戶授權",
"xloc": [
"default-mobile.handlebars->9->385",
- "default.handlebars->27->1213",
- "default.handlebars->27->581"
+ "default.handlebars->27->1215",
+ "default.handlebars->27->583"
]
},
{
@@ -27665,8 +27677,8 @@
"ru": "Согласие пользователя",
"zh-chs": "用戶同意",
"xloc": [
- "default.handlebars->27->1183",
- "default.handlebars->27->1628",
+ "default.handlebars->27->1185",
+ "default.handlebars->27->1630",
"default.handlebars->27->527"
]
},
@@ -27684,12 +27696,12 @@
"ru": "Группа пользователей",
"zh-chs": "用戶組",
"xloc": [
- "default.handlebars->27->1271",
- "default.handlebars->27->1272",
- "default.handlebars->27->1529",
- "default.handlebars->27->1678",
- "default.handlebars->27->1697",
- "default.handlebars->27->584"
+ "default.handlebars->27->1273",
+ "default.handlebars->27->1274",
+ "default.handlebars->27->1531",
+ "default.handlebars->27->1680",
+ "default.handlebars->27->1699",
+ "default.handlebars->27->586"
]
},
{
@@ -27723,7 +27735,7 @@
"ru": "Членство в группах пользователей",
"zh-chs": "用戶組成員資格",
"xloc": [
- "default.handlebars->27->1675"
+ "default.handlebars->27->1677"
]
},
{
@@ -27747,17 +27759,17 @@
"ru": "Идентификатор пользователя",
"zh-chs": "用戶標識",
"xloc": [
- "default.handlebars->27->1332",
- "default.handlebars->27->1597",
- "default.handlebars->27->1598"
+ "default.handlebars->27->1334",
+ "default.handlebars->27->1599",
+ "default.handlebars->27->1600"
]
},
{
"en": "User Identifiers",
"nl": "Gebruikers-ID's",
"xloc": [
- "default.handlebars->27->1269",
- "default.handlebars->27->1582"
+ "default.handlebars->27->1271",
+ "default.handlebars->27->1584"
]
},
{
@@ -27774,7 +27786,7 @@
"ru": "Экспортировать список пользователей",
"zh-chs": "用戶列表導出",
"xloc": [
- "default.handlebars->27->1478"
+ "default.handlebars->27->1480"
]
},
{
@@ -27792,7 +27804,7 @@
"zh-chs": "用戶名",
"xloc": [
"default-mobile.handlebars->9->432",
- "default.handlebars->27->1331"
+ "default.handlebars->27->1333"
]
},
{
@@ -27854,7 +27866,7 @@
"ru": "Сессии пользователя",
"zh-chs": "用戶會話",
"xloc": [
- "default.handlebars->27->1770"
+ "default.handlebars->27->1772"
]
},
{
@@ -27913,7 +27925,7 @@
"en": "User \\\"{0}\\\"",
"nl": "Gebuiker \\\"{0}\\\"",
"xloc": [
- "default.handlebars->27->713"
+ "default.handlebars->27->715"
]
},
{
@@ -27930,8 +27942,8 @@
"ru": "Использовать настройки браузера",
"zh-chs": "用戶瀏覽器價值",
"xloc": [
- "default.handlebars->27->1096",
- "default.handlebars->27->1098"
+ "default.handlebars->27->1098",
+ "default.handlebars->27->1100"
]
},
{
@@ -27988,10 +28000,10 @@
"zh-chs": "用戶名",
"xloc": [
"default-mobile.handlebars->9->261",
- "default.handlebars->27->1486",
+ "default.handlebars->27->1488",
"default.handlebars->27->249",
"default.handlebars->27->279",
- "default.handlebars->27->642",
+ "default.handlebars->27->644",
"player.handlebars->3->4"
]
},
@@ -28048,9 +28060,9 @@
"ru": "Пользователи",
"zh-chs": "用戶數",
"xloc": [
- "default.handlebars->27->1517",
- "default.handlebars->27->1545",
- "default.handlebars->27->1769",
+ "default.handlebars->27->1519",
+ "default.handlebars->27->1547",
+ "default.handlebars->27->1771",
"default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGeneral"
]
},
@@ -28068,7 +28080,7 @@
"ru": "Сессии пользователей",
"zh-chs": "用戶會話",
"xloc": [
- "default.handlebars->27->1757"
+ "default.handlebars->27->1759"
]
},
{
@@ -28085,7 +28097,7 @@
"ru": "VT100+ (F10 = ESC+[OY)",
"zh-chs": "VT100 +(F10 = ESC + [OY)",
"xloc": [
- "default.handlebars->27->752"
+ "default.handlebars->27->754"
]
},
{
@@ -28102,7 +28114,7 @@
"ru": "Венда",
"zh-chs": "文達",
"xloc": [
- "default.handlebars->27->1087"
+ "default.handlebars->27->1089"
]
},
{
@@ -28121,8 +28133,8 @@
"xloc": [
"default-mobile.handlebars->9->356",
"default-mobile.handlebars->9->359",
- "default.handlebars->27->838",
- "default.handlebars->27->841"
+ "default.handlebars->27->840",
+ "default.handlebars->27->843"
]
},
{
@@ -28153,7 +28165,7 @@
"ru": "Проверенный",
"zh-chs": "已驗證",
"xloc": [
- "default.handlebars->27->1656"
+ "default.handlebars->27->1658"
]
},
{
@@ -28180,8 +28192,8 @@
"zh-chs": "验证电话号码",
"xloc": [
"default-mobile.handlebars->9->63",
- "default.handlebars->27->1447",
- "default.handlebars->27->876"
+ "default.handlebars->27->1449",
+ "default.handlebars->27->878"
]
},
{
@@ -28237,10 +28249,10 @@
"default-mobile.handlebars->9->340",
"default-mobile.handlebars->9->357",
"default-mobile.handlebars->9->362",
- "default.handlebars->27->801",
- "default.handlebars->27->822",
- "default.handlebars->27->839",
- "default.handlebars->27->844",
+ "default.handlebars->27->803",
+ "default.handlebars->27->824",
+ "default.handlebars->27->841",
+ "default.handlebars->27->846",
"default.handlebars->container->column_l->p42->p42tbl->1->0->5"
]
},
@@ -28257,7 +28269,7 @@
"ru": "Версия несовместима, пожалуйста, сначала обновите установку MeshCentral",
"zh-chs": "版本不兼容,请先升级您的MeshCentral安装",
"xloc": [
- "default.handlebars->27->1801"
+ "default.handlebars->27->1803"
]
},
{
@@ -28292,7 +28304,7 @@
"ru": "Вьетнамский",
"zh-chs": "越南文",
"xloc": [
- "default.handlebars->27->1088"
+ "default.handlebars->27->1090"
]
},
{
@@ -28325,8 +28337,8 @@
"ru": "Просмотр журнала изменений",
"zh-chs": "查看变更日志",
"xloc": [
- "default.handlebars->27->1804",
- "default.handlebars->27->1806"
+ "default.handlebars->27->1806",
+ "default.handlebars->27->1808"
]
},
{
@@ -28360,7 +28372,7 @@
"ru": "Посмотреть примечания этой группы устройств",
"zh-chs": "查看有關此設備組的註釋",
"xloc": [
- "default.handlebars->27->1198"
+ "default.handlebars->27->1200"
]
},
{
@@ -28377,7 +28389,7 @@
"ru": "Посмотреть примечания об этом пользователе",
"zh-chs": "查看有關此用戶的註釋",
"xloc": [
- "default.handlebars->27->1636"
+ "default.handlebars->27->1638"
]
},
{
@@ -28394,7 +28406,7 @@
"ru": "Волапукский",
"zh-chs": "沃拉普克",
"xloc": [
- "default.handlebars->27->1089"
+ "default.handlebars->27->1091"
]
},
{
@@ -28441,7 +28453,7 @@
"ko": "사용자가 액세스 권한을 부여하기를 기다리는 중 ...",
"zh-chs": "正在等待用户授予访问权限...",
"xloc": [
- "default.handlebars->27->702"
+ "default.handlebars->27->704"
]
},
{
@@ -28457,8 +28469,8 @@
"ru": "Услуга",
"zh-chs": "唤醒",
"xloc": [
- "default.handlebars->27->597",
- "default.handlebars->27->616"
+ "default.handlebars->27->599",
+ "default.handlebars->27->618"
]
},
{
@@ -28477,8 +28489,8 @@
"xloc": [
"default-mobile.handlebars->9->408",
"default-mobile.handlebars->9->421",
- "default.handlebars->27->1291",
- "default.handlebars->27->1319"
+ "default.handlebars->27->1293",
+ "default.handlebars->27->1321"
]
},
{
@@ -28496,7 +28508,7 @@
"zh-chs": "醒來",
"xloc": [
"default-mobile.handlebars->9->253",
- "default.handlebars->27->631"
+ "default.handlebars->27->633"
]
},
{
@@ -28530,7 +28542,7 @@
"ru": "Валлонский",
"zh-chs": "瓦隆",
"xloc": [
- "default.handlebars->27->1090"
+ "default.handlebars->27->1092"
]
},
{
@@ -28547,7 +28559,7 @@
"ru": "Слабый",
"zh-chs": "弱",
"xloc": [
- "default.handlebars->27->1143"
+ "default.handlebars->27->1145"
]
},
{
@@ -28584,8 +28596,8 @@
"ru": "Веб-сервер",
"zh-chs": "網絡服務器",
"xloc": [
- "default.handlebars->27->1790",
- "default.handlebars->27->1791"
+ "default.handlebars->27->1792",
+ "default.handlebars->27->1793"
]
},
{
@@ -28602,7 +28614,7 @@
"ru": "Запросы веб-сервера",
"zh-chs": "Web服務器請求",
"xloc": [
- "default.handlebars->27->1792"
+ "default.handlebars->27->1794"
]
},
{
@@ -28619,7 +28631,7 @@
"ru": "Ретранслятор Web Socket",
"zh-chs": "Web套接字中繼",
"xloc": [
- "default.handlebars->27->1793"
+ "default.handlebars->27->1795"
]
},
{
@@ -28672,7 +28684,7 @@
"ru": "Уэльский",
"zh-chs": "威爾士語",
"xloc": [
- "default.handlebars->27->1091"
+ "default.handlebars->27->1093"
]
},
{
@@ -28689,7 +28701,7 @@
"ru": "Когда этот параметр включен, коды приглашений могут использоваться любым пользователем для присоединения устройств к этой группе устройств по следующей общедоступной ссылке:",
"zh-chs": "啟用後,任何人都可以使用邀請代碼通過以下公共鏈接將設備加入該設備組:",
"xloc": [
- "default.handlebars->27->1340"
+ "default.handlebars->27->1342"
]
},
{
@@ -28707,7 +28719,7 @@
"zh-chs": "啟用後,每次登錄時,您都可以選擇向電子郵件帳戶接收登錄令牌,以提高安全性。",
"xloc": [
"default-mobile.handlebars->9->69",
- "default.handlebars->27->883"
+ "default.handlebars->27->885"
]
},
{
@@ -28724,7 +28736,7 @@
"ru": "Будет изменено при следующем входе в систему.",
"zh-chs": "下次登錄時將更改。",
"xloc": [
- "default.handlebars->27->1608"
+ "default.handlebars->27->1610"
]
},
{
@@ -28883,7 +28895,7 @@
"ru": "Исполняемый файл Win32",
"zh-chs": "Win32可執行文件",
"xloc": [
- "default.handlebars->27->670"
+ "default.handlebars->27->672"
]
},
{
@@ -28952,7 +28964,7 @@
"ru": "Windows (32bit)",
"zh-chs": "Windows(32位)",
"xloc": [
- "default.handlebars->27->674"
+ "default.handlebars->27->676"
]
},
{
@@ -28969,7 +28981,7 @@
"ru": "Windows (64bit)",
"zh-chs": "Windows(64位)",
"xloc": [
- "default.handlebars->27->675"
+ "default.handlebars->27->677"
]
},
{
@@ -29197,7 +29209,7 @@
"ru": "Перенос строк: ВЫКЛ",
"zh-chs": "包裝:關閉",
"xloc": [
- "default.handlebars->27->788"
+ "default.handlebars->27->790"
]
},
{
@@ -29214,7 +29226,7 @@
"ru": "Перенос строк: ВКЛ",
"zh-chs": "包裝:開",
"xloc": [
- "default.handlebars->27->787"
+ "default.handlebars->27->789"
]
},
{
@@ -29302,7 +29314,7 @@
"ru": "Кос",
"zh-chs": "科薩",
"xloc": [
- "default.handlebars->27->1092"
+ "default.handlebars->27->1094"
]
},
{
@@ -29319,7 +29331,7 @@
"ru": "Идиш",
"zh-chs": "意第緒語",
"xloc": [
- "default.handlebars->27->1093"
+ "default.handlebars->27->1095"
]
},
{
@@ -29394,7 +29406,7 @@
"ru": "YubiKey™ OTP",
"zh-chs": "YubiKey™ OTP",
"xloc": [
- "default.handlebars->27->895"
+ "default.handlebars->27->897"
]
},
{
@@ -29464,7 +29476,7 @@
"ru": "Зулусский",
"zh-chs": "祖魯族",
"xloc": [
- "default.handlebars->27->1094"
+ "default.handlebars->27->1096"
]
},
{
@@ -29677,7 +29689,7 @@
"ru": "\\\\'",
"zh-chs": "\\\\'",
"xloc": [
- "default.handlebars->27->1802"
+ "default.handlebars->27->1804"
]
},
{
@@ -29814,7 +29826,7 @@
"ru": "console.txt",
"zh-chs": "console.txt",
"xloc": [
- "default.handlebars->27->866"
+ "default.handlebars->27->868"
]
},
{
@@ -29832,7 +29844,7 @@
"zh-chs": "複製",
"xloc": [
"default-mobile.handlebars->9->130",
- "default.handlebars->27->1407"
+ "default.handlebars->27->1409"
]
},
{
@@ -29899,8 +29911,8 @@
"ru": "eventslist.csv",
"zh-chs": "eventslist.csv",
"xloc": [
- "default.handlebars->27->1416",
- "default.handlebars->27->1421"
+ "default.handlebars->27->1418",
+ "default.handlebars->27->1423"
]
},
{
@@ -29917,8 +29929,8 @@
"ru": "eventslist.json",
"zh-chs": "eventslist.json",
"xloc": [
- "default.handlebars->27->1418",
- "default.handlebars->27->1422"
+ "default.handlebars->27->1420",
+ "default.handlebars->27->1424"
]
},
{
@@ -29952,7 +29964,7 @@
"ru": "свободно",
"zh-chs": "自由",
"xloc": [
- "default.handlebars->27->1765"
+ "default.handlebars->27->1767"
]
},
{
@@ -30137,7 +30149,7 @@
"ru": "id, name, email, creation, lastlogin, groups, authfactors",
"zh-chs": "id,名稱,電子郵件,創建,lastlogin,組,authfactors",
"xloc": [
- "default.handlebars->27->1479"
+ "default.handlebars->27->1481"
]
},
{
@@ -30238,7 +30250,7 @@
"ru": "k max, пусто по умолчанию",
"zh-chs": "k max,默认为空白",
"xloc": [
- "default.handlebars->27->1503"
+ "default.handlebars->27->1505"
]
},
{
@@ -30274,7 +30286,7 @@
"zh-chs": "移動",
"xloc": [
"default-mobile.handlebars->9->131",
- "default.handlebars->27->1408"
+ "default.handlebars->27->1410"
]
},
{
@@ -30326,7 +30338,7 @@
"ru": "servererrors.txt",
"zh-chs": "servererrors.txt",
"xloc": [
- "default.handlebars->27->1158"
+ "default.handlebars->27->1160"
]
},
{
@@ -30343,7 +30355,7 @@
"ru": "servertrace.csv",
"zh-chs": "servertrace.csv",
"xloc": [
- "default.handlebars->27->1800"
+ "default.handlebars->27->1802"
]
},
{
@@ -30400,7 +30412,7 @@
"ru": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss",
"zh-chs": "時間,conn.agent,conn.users,conn.usersessions,conn.relaysession,conn.intelamt,mem.external,mem.heapused,mem.heaptotal,mem.rss",
"xloc": [
- "default.handlebars->27->1778"
+ "default.handlebars->27->1780"
]
},
{
@@ -30417,7 +30429,7 @@
"ru": "time, source, message",
"zh-chs": "時間,來源,訊息",
"xloc": [
- "default.handlebars->27->1799"
+ "default.handlebars->27->1801"
]
},
{
@@ -30448,7 +30460,7 @@
"ru": "всего",
"zh-chs": "總",
"xloc": [
- "default.handlebars->27->1766"
+ "default.handlebars->27->1768"
]
},
{
@@ -30519,8 +30531,8 @@
"ru": "userlist.csv",
"zh-chs": "userlist.csv",
"xloc": [
- "default.handlebars->27->1475",
- "default.handlebars->27->1480"
+ "default.handlebars->27->1477",
+ "default.handlebars->27->1482"
]
},
{
@@ -30537,8 +30549,8 @@
"ru": "userlist.json",
"zh-chs": "userlist.json",
"xloc": [
- "default.handlebars->27->1477",
- "default.handlebars->27->1481"
+ "default.handlebars->27->1479",
+ "default.handlebars->27->1483"
]
},
{
@@ -30555,7 +30567,7 @@
"ru": "utc, время, тип, действие, пользователь, устройство, сообщение",
"zh-chs": "utc,時間,類型,操作,用戶,設備,消息",
"xloc": [
- "default.handlebars->27->1420"
+ "default.handlebars->27->1422"
]
},
{
@@ -30589,7 +30601,7 @@
"ru": "{0} Гб",
"zh-chs": "{0} Gb",
"xloc": [
- "default.handlebars->27->1387"
+ "default.handlebars->27->1389"
]
},
{
@@ -30606,8 +30618,8 @@
"ru": "{0} Kб",
"zh-chs": "{0} Kb",
"xloc": [
- "default.handlebars->27->1385",
- "default.handlebars->27->1706"
+ "default.handlebars->27->1387",
+ "default.handlebars->27->1708"
]
},
{
@@ -30625,8 +30637,8 @@
"zh-chs": "{0} Mb",
"xloc": [
"default-mobile.handlebars->9->373",
- "default.handlebars->27->1386",
- "default.handlebars->27->855"
+ "default.handlebars->27->1388",
+ "default.handlebars->27->857"
]
},
{
@@ -30644,7 +30656,7 @@
"zh-chs": "{0} Mb,{1} Mhz",
"xloc": [
"default-mobile.handlebars->9->368",
- "default.handlebars->27->850"
+ "default.handlebars->27->852"
]
},
{
@@ -30661,7 +30673,7 @@
"ru": "{0} активных сессий",
"zh-chs": "{0}個活動會話",
"xloc": [
- "default.handlebars->27->1648"
+ "default.handlebars->27->1650"
]
},
{
@@ -30678,7 +30690,7 @@
"ru": "{0} байт",
"zh-chs": "{0} b",
"xloc": [
- "default.handlebars->27->1384"
+ "default.handlebars->27->1386"
]
},
{
@@ -30696,8 +30708,8 @@
"zh-chs": "{0}個字節",
"xloc": [
"default-mobile.handlebars->9->119",
- "default.handlebars->27->1395",
- "default.handlebars->27->1721"
+ "default.handlebars->27->1397",
+ "default.handlebars->27->1723"
]
},
{
@@ -30714,14 +30726,14 @@
"ru": "{0} байт осталось",
"zh-chs": "剩餘{0}個字節",
"xloc": [
- "default.handlebars->27->1379"
+ "default.handlebars->27->1381"
]
},
{
"en": "{0} connections",
"nl": "{0} verbindingen",
"xloc": [
- "default.handlebars->27->712"
+ "default.handlebars->27->714"
]
},
{
@@ -30738,7 +30750,7 @@
"ru": "{0} гигабайт осталось",
"zh-chs": "剩餘{0} GB",
"xloc": [
- "default.handlebars->27->1382"
+ "default.handlebars->27->1384"
]
},
{
@@ -30755,7 +30767,7 @@
"ru": "{0} групп",
"zh-chs": "{0}個群組",
"xloc": [
- "default.handlebars->27->1613"
+ "default.handlebars->27->1615"
]
},
{
@@ -30803,7 +30815,7 @@
"ru": "{0} килобайт осталось",
"zh-chs": "剩餘{0}千字節",
"xloc": [
- "default.handlebars->27->1380"
+ "default.handlebars->27->1382"
]
},
{
@@ -30838,7 +30850,7 @@
"ru": "{0} мегабайт осталось",
"zh-chs": "剩餘{0}兆字節",
"xloc": [
- "default.handlebars->27->1381"
+ "default.handlebars->27->1383"
]
},
{
@@ -30872,7 +30884,7 @@
"ru": "Еще {0} пользователей не показаны, используйте поиск для нахождения пользователей...",
"zh-chs": "{0}未顯示更多用戶,請使用搜索框查找用戶...",
"xloc": [
- "default.handlebars->27->1430"
+ "default.handlebars->27->1432"
]
},
{
@@ -31008,7 +31020,7 @@
"default-mobile.handlebars->9->163",
"default-mobile.handlebars->9->166",
"default-mobile.handlebars->9->169",
- "default.handlebars->27->1434",
+ "default.handlebars->27->1436",
"default.handlebars->27->213",
"default.handlebars->27->216",
"default.handlebars->27->219",
@@ -31132,7 +31144,7 @@
"ru": "{0}k в 1 файле. {1}k максимум",
"zh-chs": "{0} k合1檔案。最多{1} k",
"xloc": [
- "default.handlebars->27->1389"
+ "default.handlebars->27->1391"
]
},
{
@@ -31149,7 +31161,7 @@
"ru": "{0}k в {1} файлах. {2}k максимум",
"zh-chs": "{1}個文件中有{0}個。最多{2} k",
"xloc": [
- "default.handlebars->27->1388"
+ "default.handlebars->27->1390"
]
},
{
diff --git a/views/default.handlebars b/views/default.handlebars
index 1af5a18b..88939731 100644
--- a/views/default.handlebars
+++ b/views/default.handlebars
@@ -2195,13 +2195,19 @@
var newWindow = window.open(rdpurl, '_blank');
newWindow.opener = null;
}
- }
- if (message.tag == 'novnc') {
+ } else if (message.tag == 'novnc') {
var vncurl = window.location.origin + domainUrl + 'novnc/vnc.html?ws=wss%3A%2F%2F' + window.location.host + '%2Fmeshrelay.ashx%3Fauth%3D' + message.cookie + '&show_dot=1';
var node = getNodeFromId(message.nodeid);
if (node != null) { vncurl += '&name=' + encodeURIComponentEx(node.name); }
var newWindow = window.open(vncurl, 'mcnovnc/' + message.nodeid);
newWindow.opener = null;
+ } else if (message.tag == 'mstsc') {
+ //var rdpurl = window.location.origin + domainUrl + 'mstsc/index.html?ws=wss%3A%2F%2F' + window.location.host + '%2Fmeshrelay.ashx%3Fauth%3D' + message.cookie;
+ var rdpurl = window.location.origin + domainUrl + 'mstsc/index.html?ws=' + message.cookie;
+ var node = getNodeFromId(message.nodeid);
+ if (node != null) { rdpurl += '&name=' + encodeURIComponentEx(node.name); }
+ var newWindow = window.open(rdpurl, 'mcmstsc/' + message.nodeid);
+ newWindow.opener = null;
}
break;
}
@@ -5367,6 +5373,11 @@
x += '' + "noVNC" + ' ';
}
+ // MSTSC.js link
+ if (((connectivity & 1) != 0) && (node.agent) && ((meshrights & 8) != 0) && ((features & 0x40000000) == 0)) {
+ x += '' + "MSTSC" + ' ';
+ }
+
// MQTT options
if ((meshrights == 0xFFFFFFFF) && (features & 0x00400000)) { x += '' + "MQTT Login" + ' '; }
x += ' '
@@ -5880,6 +5891,11 @@
meshserver.send({ action: 'getcookie', nodeid: nodeid, tcpport: port, tag: 'novnc' });
}
+ function p10mstsc(nodeid, port) {
+ if (port == null) { if (currentNode.rdpport != null) { port = currentNode.rdpport; } else { port = 3389; } }
+ meshserver.send({ action: 'getcookie', nodeid: nodeid, tcpport: port, tag: 'mstsc' });
+ }
+
// Show current location
var d2map = null;
function p10showNodeLocationDialog() {
diff --git a/webserver.js b/webserver.js
index 9d2201ef..fa69e5ae 100644
--- a/webserver.js
+++ b/webserver.js
@@ -2157,6 +2157,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
if (domain.sessionrecording != null) { features += 0x08000000; } // Server recordings enabled
if (domain.urlswitching === false) { features += 0x10000000; } // Disables the URL switching feature
if (domain.novnc === false) { features += 0x20000000; } // Disables noVNC
+ if (domain.mstsc !== true) { features += 0x40000000; } // Disables MSTSC.js
// Create a authentication cookie
const authCookie = obj.parent.encodeCookie({ userid: user._id, domainid: domain.id, ip: req.clientIp }, obj.parent.loginCookieEncryptionKey);
@@ -4342,6 +4343,15 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
obj.app.get(url + 'pluginHandler.js', obj.handlePluginJS);
}
+ // Setup MSTSC.js if needed
+ if (domain.mstsc === true) {
+ obj.app.ws(url + 'mstsc/relay.ashx', function (ws, req) {
+ PerformWSSessionAuth(ws, req, false, function (ws1, req1, domain, user) {
+ require('./mstsc.js').CreateMstscRelay(obj, obj.db, ws1, req1, obj.args, domain, user);
+ });
+ });
+ }
+
// Setup auth strategies using passport if needed
if (typeof domain.authstrategies == 'object') {
const passport = domain.passport = require('passport');