From c28e08137554ad5ed0a5db90666d30607e609800 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 14 Jul 2021 14:57:26 -0700 Subject: [PATCH 1/3] Fixed $ in device group on Linux when meshcmd amtconfig is used. --- agents/MeshCmd-signed.exe | Bin 4185344 -> 4187048 bytes agents/MeshCmd64-signed.exe | Bin 3799808 -> 3801512 bytes agents/MeshService-signed.exe | Bin 3398472 -> 3392512 bytes agents/MeshService64-signed.exe | Bin 3012936 -> 3012936 bytes agents/meshcmd.js | 37 +++++++++++++++++++++----------- amtmanager.js | 2 +- views/default.handlebars | 2 +- 7 files changed, 26 insertions(+), 15 deletions(-) diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index 66a99f3868f6b2f41047f7f95a9551bab3d88fe1..57a9f9fa46a35b4341dca10541f3cfeb1581d800 100644 GIT binary patch delta 9240 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 AYybcN delta 7723 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 QF5k3$&~;DCkGl^14>z0lV*mgE diff --git a/agents/MeshCmd64-signed.exe b/agents/MeshCmd64-signed.exe index 11fd3f6c72cc75b653af25be7a40a79936a07a3e..9567e958e0dda22702dfe4e71d44838870184c3c 100644 GIT binary patch delta 9223 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 delta 6226 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 R>W&2=FDLL>kH delta 735 zcmWl|3oz3G8~|XO=Y%mEW|)nQyeE@(I-MMMhNO93>(o4Q9?9dhGJjTXMV{rh^SU~( zuF#x3;-(CD;$*~fWbJf1dR}t~MZdngZ&EXWnuO9~6nbIkwh$!}qW(uiZKwlvp&rzS z1`q=c;W20gjiCv|LQ`l4anKy%Apu%IOK1g&&>E7U4YY-JkPPi11yZ2{bc8fWhfdHL z9)~W_6}k-wQSM3G7@ref3_l-lhPU|Vj(ar1Eq66G>j}*t-`!q2zt%FlFV;*o-3<6V z9Vm$5#Rc#8IeP|HW-T20FfqTzg1!EZZyNUtXUHpxN_AL_MEmLe0*{5DDq^%LcBUd* z(L$wDD`@MF%Ux33nZDQy+>^GM!)L<%RB9fj-TP{F15bt%vFE(fS~*)9fF?OiJEBNh_;?-3A0W;h0?qLlF{VpQUGC4NM$U|qB$%yEuiHcME#Y~=DtE9$l zl#`R{&@GV1va`-f!<-2l$*SZ*R&7!w74zeR>e`;LFoj%@Th2#v8}yKfg0K#`0FNHM zPAIp|Q=DcED7#ej44tpJh@@tuR4k><;+$T)rmH%U3`F{@V=hP8=;yj#~%1ukRkGSmd%d6pjDUy^y^J`ZG)O&4}WTI$!czR(;u$*lI|U zzEF;hKb$9Ds!c1!JG8V1rJ}LiqmA%&97fl+aj|c;hek>0UaH$?4<_eDH4!*FD)t0V zRwX#Q_eeyVVB|WQeIjGGN{81>#Ij*Yo3hm6P-7FftTke8_ue-#@o=FUo4^-gqBDC7 QDSQ@T*&txW-$V=i16nLQ=Kufz diff --git a/agents/meshcmd.js b/agents/meshcmd.js index 29ca12c9..659e1d91 100644 --- a/agents/meshcmd.js +++ b/agents/meshcmd.js @@ -110,7 +110,7 @@ function run(argv) { //console.log('addedModules = ' + JSON.stringify(addedModules)); var actionpath = 'meshaction.txt'; if (args.actionfile != null) { actionpath = args.actionfile; } - var actions = ['HELP', 'ROUTE', 'MICROLMS', 'AMTCONFIG', 'AMTSCAN', 'AMTPOWER', 'AMTFEATURES', 'AMTNETWORK', 'AMTINFO', 'AMTINFODEBUG', 'AMTVERSIONS', 'AMTHASHES', 'AMTSAVESTATE', 'AMTUUID', 'AMTCCM', 'AMTDEACTIVATE', 'AMTACMDEACTIVATE', 'SMBIOS', 'RAWSMBIOS', 'MESHCOMMANDER', 'AMTAUDITLOG', 'AMTEVENTLOG', 'AMTPRESENCE', 'AMTWIFI', 'AMTWAKE', 'AMTSTARTCONFIG', 'AMTSTOPCONFIG']; + var actions = ['HELP', 'ROUTE', 'MICROLMS', 'AMTCONFIG', 'AMTSCAN', 'AMTPOWER', 'AMTFEATURES', 'AMTNETWORK', 'AMTINFO', 'AMTINFOJSON', 'AMTVERSIONS', 'AMTHASHES', 'AMTSAVESTATE', 'AMTUUID', 'AMTCCM', 'AMTDEACTIVATE', 'AMTACMDEACTIVATE', 'SMBIOS', 'RAWSMBIOS', 'MESHCOMMANDER', 'AMTAUDITLOG', 'AMTEVENTLOG', 'AMTPRESENCE', 'AMTWIFI', 'AMTWAKE', 'AMTSTARTCONFIG', 'AMTSTOPCONFIG']; // Load the action file var actionfile = null; @@ -223,8 +223,12 @@ function run(argv) { console.log(' --output [filename] Optional filename to write the results to.'); } else if (action == 'amtinfo') { console.log('AmtInfo action will get the version and activation state of Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Example usage:\r\n\r\n meshcmd amtinfo'); + console.log('\r\nPossible arguments:\r\n'); + console.log(' --json Display all Intel AMT state in JSON format.'); } else if ((action == 'amtversion') || (action == 'amtversions')) { console.log('AmtVersions will display all version information about Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Example usage:\r\n\r\n meshcmd amtversions'); + console.log('\r\nPossible arguments:\r\n'); + console.log(' --json Display all Intel AMT state in JSON format.'); } else if (action == 'amthashes') { console.log('Amthashes will display all trusted activations hashes for Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. These certificates hashes are used by Intel AMT when performing activation into ACM mode. Example usage:\r\n\r\n meshcmd amthashes'); } else if ((action == 'microlms') || (action == 'lms') || (action == 'amtlms')) { @@ -485,15 +489,19 @@ function run(argv) { try { amtMeiModule = require('amt-mei'); amtMei = new amtMeiModule(); } catch (ex) { console.log(ex); exit(1); return; } amtMei.on('error', function (e) { console.log('ERROR: ' + e); exit(1); return; }); amtMei.getVersion(function (val) { - console.log("BIOS Version = " + val.BiosVersion.toString()); - for (var version in val.Versions) { - var extras = '', skuBits = ['', 'iQST', 'ASF', 'AMT', 'ISM', 'TPM', '', '', 'HomeIT', '', 'WOX', '', '', 'AT-p', 'Corporate', 'L3 Mgt Upgrade']; - if (val.Versions[version].Description == 'Sku') { - var n = parseInt(val.Versions[version].Version), x = [], xx = 1; - for (var i = 0; i < skuBits.length; i++) { if ((n & xx) != 0) { x.push(skuBits[i]); } xx = xx << 1; } - if (x.length > 0) { extras = ' (' + x.join(', ') + ')' } + if (args.json) { + console.log(JSON.stringify(val, null, 2)); + } else { + console.log("BIOS Version = " + val.BiosVersion.toString()); + for (var version in val.Versions) { + var extras = '', skuBits = ['', 'iQST', 'ASF', 'AMT', 'ISM', 'TPM', '', '', 'HomeIT', '', 'WOX', '', '', 'AT-p', 'Corporate', 'L3 Mgt Upgrade']; + if (val.Versions[version].Description == 'Sku') { + var n = parseInt(val.Versions[version].Version), x = [], xx = 1; + for (var i = 0; i < skuBits.length; i++) { if ((n & xx) != 0) { x.push(skuBits[i]); } xx = xx << 1; } + if (x.length > 0) { extras = ' (' + x.join(', ') + ')' } + } + console.log(val.Versions[version].Description + " = " + val.Versions[version].Version + extras); } - console.log(val.Versions[version].Description + " = " + val.Versions[version].Version + extras); } exit(1); return; }); @@ -534,7 +542,7 @@ function run(argv) { } amtMei.getProvisioningState(function (result) { if (result) { mestate.ProvisioningState = result; } }); amtMei.getProvisioningMode(function (result) { if (result) { mestate.ProvisioningMode = result; } }); - amtMei.getEHBCState(function (result) { if (result) { mestate.ehbc = result; } }); + amtMei.getEHBCState(function (result) { mestate.ehbc = ((result === true) || (typeof result == 'object') && (result.EHBC === true)); }); amtMei.getControlMode(function (result) { if (result) { mestate.controlmode = result; } }); amtMei.getMACAddresses(function (result) { if (result) { mestate.mac = result; } }); amtMei.getLanInterfaceSettings(0, function (result) { if (result) { mestate.net0 = result; } }); @@ -543,7 +551,9 @@ function run(argv) { amtMei.getRemoteAccessConnectionStatus(function (result) { if ((result != null) && (result.status == 0)) { mestate.networkStatus = result.networkStatus; mestate.remoteAccessStatus = result.remoteAccessStatus; mestate.remoteAccessTrigger = result.remoteAccessTrigger; mestate.mpsHostname = result.mpsHostname; } }); amtMei.getDnsSuffix(function (result) { if (result) { mestate.DnsSuffix = result; } - if (mestate.ver && mestate.ProvisioningState && mestate.ProvisioningMode) { + if (args.json) { + console.log(JSON.stringify(mestate, null, 2)); + } else if (mestate.ver && mestate.ProvisioningState && mestate.ProvisioningMode) { var str = 'Intel ME v' + mestate.ver; if (mestate.sku & 8) { str = 'Intel AMT v' + mestate.ver } else if (mestate.sku & 16) { str = 'Intel SM v' + mestate.ver } @@ -558,7 +568,7 @@ function run(argv) { } } } - if ((mestate.ehbc) && (mestate.ehbc.EHBC == true)) { str += ', EHBC enabled'; } + if (mestate.ehbc) { str += ', EHBC enabled'; } str += '.'; if (mestate.net0 != null) { str += '\r\nWired ' + ((mestate.net0.enabled == 1) ? 'Enabled' : 'Disabled') + ((mestate.net0.dhcpEnabled == 1) ? ', DHCP' : ', Static') + ', ' + mestate.net0.mac + (mestate.net0.address == '0.0.0.0' ? '' : (', ' + mestate.net0.address)); } if (mestate.net1 != null) { str += '\r\nWireless ' + ((mestate.net1.enabled == 1) ? 'Enabled' : 'Disabled') + ((mestate.net1.dhcpEnabled == 1) ? ', DHCP' : ', Static') + ', ' + mestate.net1.mac + (mestate.net1.address == '0.0.0.0' ? '' : (', ' + mestate.net1.address)); } @@ -596,7 +606,7 @@ function run(argv) { } }); } catch (ex) { console.log("Unable to perform MEI operations, try running as " + ((process.platform == 'win32')?"administrator.":"root.")); exit(1); return; } - } else if (settings.action == 'amtinfodebug') { + } else if (settings.action == 'amtinfojson') { // Display Intel AMT version and activation state getMeiState(15, function (state) { console.log(JSON.stringify(state, null, 2)); exit(1); }); // Flags: 1 = Versions, 2 = OsAdmin, 4 = Hashes, 8 = Network } else if (settings.action == 'amtsavestate') { @@ -639,6 +649,7 @@ function run(argv) { // Start Intel AMT configuration if ((settings.url == null) || (typeof settings.url != 'string') || (settings.url == '')) { console.log('No MeshCentral server URL specified, use --url [url].'); exit(1); return; } if ((settings.id == null) || (typeof settings.id != 'string') || (settings.id == '')) { console.log('No device group identifier specified, use --id [identifier].'); exit(1); return; } + settings.id = settings.id.replace('\'', ''); // Remove single quote. debug(1, "Settings: " + JSON.stringify(settings)); configureAmt(); } else if (settings.action == 'amtccm') { diff --git a/amtmanager.js b/amtmanager.js index af76aa9e..9e8eb2cf 100644 --- a/amtmanager.js +++ b/amtmanager.js @@ -1875,7 +1875,7 @@ module.exports.CreateAmtManager = function (parent) { function activateIntelAmt(dev) { // Find the Intel AMT policy const mesh = parent.webserver.meshes[dev.meshid]; - if (mesh == null) { dev.consoleMsg("Unable to find device group."); removeAmtDevice(dev, 36); return false; } + if (mesh == null) { dev.consoleMsg("Unable to find device group (" + dev.meshid + ")."); removeAmtDevice(dev, 36); return false; } var amtPolicy = 0; // 0 = Do nothing, 1 = Deactivate CCM, 2 = CCM, 3 = ACM var ccmPolicy = 0; // Only used when in ACM policy: 0 = Do nothing, 1 = Deactivate CCM, 2 = CCM is ACM fails if (mesh.amt != null) { if (typeof mesh.amt.type == 'number') { amtPolicy = mesh.amt.type; } if (typeof mesh.amt.ccm == 'number') { ccmPolicy = mesh.amt.ccm; } } diff --git a/views/default.handlebars b/views/default.handlebars index 8807e66b..8d7d58e1 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -4575,7 +4575,7 @@ url = 'ws://' + servername + portStr + domainUrl; } var x = format("Add, activate and configure Intel® AMT to group \"{0}\" by periodically running MeshCmd as administrator on the remote device.", EscapeHtml(mesh.name)) + '

'; - x += ''; + x += ''; if (serverinfo.amtAcmFqdn != null) { x += ('
' + "For ACM activation, Intel® AMT will need to be set to the following trusted FQDN:" + ' ' + serverinfo.amtAcmFqdn.join(', ') + '
'); } From 5b1b33a59020db55d3e37f292d416c7ca5349f52 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Wed, 14 Jul 2021 15:11:19 -0700 Subject: [PATCH 2/3] Updated PTHI error handling, to retry for up to 5 seconds --- agents/modules_meshcmd/amt-mei.js | 41 +++++++++++++++--------------- agents/modules_meshcore/amt-mei.js | 41 +++++++++++++++--------------- 2 files changed, 40 insertions(+), 42 deletions(-) diff --git a/agents/modules_meshcmd/amt-mei.js b/agents/modules_meshcmd/amt-mei.js index 8387049f..49811a42 100644 --- a/agents/modules_meshcmd/amt-mei.js +++ b/agents/modules_meshcmd/amt-mei.js @@ -17,6 +17,21 @@ limitations under the License. var Q = require('queue'); var g_internal = null; +function retry_pthi_later() +{ + if (++g_internal.errorCount < 20) + { + g_internal.timeout = setTimeout(function (p) + { + p.connect(require('heci').GUIDS.AMT, { noPipeline: 1 }); + }, 250, this); + } + else + { + this.Parent.emit('error', 'PTHI Connection could not be established'); + } +} + function amt_heci() { var emitterUtils = require('events').inherits(this); @@ -29,7 +44,7 @@ function amt_heci() var that = this; if (g_internal == null) { - g_internal = { _rq: new Q(), _amt: null }; + g_internal = { _rq: new Q(), _amt: null, errorCount: 0 }; g_internal._setupPTHI = function _g_setupPTHI() { console.info1('setupPTHI()'); @@ -42,7 +57,7 @@ function amt_heci() this._amt.on('error', function _amtOnError(e) { console.info1('PTHIError: ' + e); - if (this.Parent._rq.isEmpty()) + if (g_internal._rq.isEmpty()) { console.info1(' Queue is empty'); this.Parent.emit('error', e); // No pending requests, so propagate the error up @@ -51,22 +66,13 @@ function amt_heci() { console.info1(' Queue is NOT empty'); - // There is a pending request, so fail the pending request - var user = this.Parent._rq.deQueue(); - var params = user.optional; - var callback = user.func; - params.unshift({ Status: -1 }); // Relay an error - callback.apply(this.Parent, params); - - if (!this.Parent._rq.isEmpty()) - { - // There are still more pending requests, so try to re-helpconnect MEI - this.connect(heci.GUIDS.AMT, { noPipeline: 1 }); - } + // Try again + retry_pthi_later.call(this); } }); this._amt.on('connect', function _amtOnConnect() { + g_internal.errorCount = 0; this.on('data', function _amtOnData(chunk) { //console.log("Received: " + chunk.length + " bytes"); @@ -125,13 +131,6 @@ function amt_heci() header.writeUInt32LE(arguments[0] | 0x04000000, 4); header.writeUInt32LE(arguments[1] == null ? 0 : arguments[1].length, 8); - //this._rq.enQueue({ cmd: arguments[0], func: arguments[2], optional: args, send: (arguments[1] == null ? header : Buffer.concat([header, arguments[1]])) }); - //if(!this._amt) - //{ - // this._setupPTHI(); - // this._amt.connect(heci.GUIDS.AMT, { noPipeline: 1 }); - //} - g_internal._rq.enQueue({ cmd: arguments[0], func: arguments[2], optional: args, send: (arguments[1] == null ? header : Buffer.concat([header, arguments[1]])) }); if (!g_internal._amt) { diff --git a/agents/modules_meshcore/amt-mei.js b/agents/modules_meshcore/amt-mei.js index 8387049f..49811a42 100644 --- a/agents/modules_meshcore/amt-mei.js +++ b/agents/modules_meshcore/amt-mei.js @@ -17,6 +17,21 @@ limitations under the License. var Q = require('queue'); var g_internal = null; +function retry_pthi_later() +{ + if (++g_internal.errorCount < 20) + { + g_internal.timeout = setTimeout(function (p) + { + p.connect(require('heci').GUIDS.AMT, { noPipeline: 1 }); + }, 250, this); + } + else + { + this.Parent.emit('error', 'PTHI Connection could not be established'); + } +} + function amt_heci() { var emitterUtils = require('events').inherits(this); @@ -29,7 +44,7 @@ function amt_heci() var that = this; if (g_internal == null) { - g_internal = { _rq: new Q(), _amt: null }; + g_internal = { _rq: new Q(), _amt: null, errorCount: 0 }; g_internal._setupPTHI = function _g_setupPTHI() { console.info1('setupPTHI()'); @@ -42,7 +57,7 @@ function amt_heci() this._amt.on('error', function _amtOnError(e) { console.info1('PTHIError: ' + e); - if (this.Parent._rq.isEmpty()) + if (g_internal._rq.isEmpty()) { console.info1(' Queue is empty'); this.Parent.emit('error', e); // No pending requests, so propagate the error up @@ -51,22 +66,13 @@ function amt_heci() { console.info1(' Queue is NOT empty'); - // There is a pending request, so fail the pending request - var user = this.Parent._rq.deQueue(); - var params = user.optional; - var callback = user.func; - params.unshift({ Status: -1 }); // Relay an error - callback.apply(this.Parent, params); - - if (!this.Parent._rq.isEmpty()) - { - // There are still more pending requests, so try to re-helpconnect MEI - this.connect(heci.GUIDS.AMT, { noPipeline: 1 }); - } + // Try again + retry_pthi_later.call(this); } }); this._amt.on('connect', function _amtOnConnect() { + g_internal.errorCount = 0; this.on('data', function _amtOnData(chunk) { //console.log("Received: " + chunk.length + " bytes"); @@ -125,13 +131,6 @@ function amt_heci() header.writeUInt32LE(arguments[0] | 0x04000000, 4); header.writeUInt32LE(arguments[1] == null ? 0 : arguments[1].length, 8); - //this._rq.enQueue({ cmd: arguments[0], func: arguments[2], optional: args, send: (arguments[1] == null ? header : Buffer.concat([header, arguments[1]])) }); - //if(!this._amt) - //{ - // this._setupPTHI(); - // this._amt.connect(heci.GUIDS.AMT, { noPipeline: 1 }); - //} - g_internal._rq.enQueue({ cmd: arguments[0], func: arguments[2], optional: args, send: (arguments[1] == null ? header : Buffer.concat([header, arguments[1]])) }); if (!g_internal._amt) { From 47a8952c19302a9f692ef5bbd8624cede65dd66c Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 14 Jul 2021 15:22:17 -0700 Subject: [PATCH 3/3] Version 0.8.78 --- agents/MeshCmd-signed.exe | Bin 4187048 -> 4187176 bytes agents/MeshCmd64-signed.exe | Bin 3801512 -> 3801640 bytes package.json | 2 +- public/scripts/agent-desktop-0.0.2-min.js | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index 57a9f9fa46a35b4341dca10541f3cfeb1581d800..30ead8cb0a1e13a6eeff304472bf666982b298cc 100644 GIT binary patch delta 1564 zcmZ9{dpOf;8~|`Xy38%Nxoc)7+sq7e$!(=#Q$mO%(aevH+1N%;q@i+osGbrlw{tp2 zxpZ+GqoYDf9cPDf>B&hdNk!5elGAeD&iSLB^T+3TpZEKH-|wZiZxyP&w+b~TLr`*Y z3PgqGk2XPhP0&}$fC{h%SPQHJ)&mGY6;K1z0S!PC*Z^n&+JFwA3+MqzKp!vw3;`p+ z7%%}$0W)ADfC9_`G++T>080Q1SOJ>=YXAq}0RmtH5CL0&1lR#&z#eb_9HmVV1=--q zhlTt@(aAyW2F_+E z20nv9V)D3Lm?^~Z;gnQ1AI3#uSTK_viNT9)B@|O_qJtBe2$~4+nJ`BHXNdh;D5iFi zn7|Mk9lhukz#710~-#ACA zBcqG)T1H_{AqrZYBHVGU(xrt2b-c>8}P*4Ob9g>j541$T;QJu8guQonMHvM()$)t0K;2#L|O!Elb)u5t5+AeHkA#Q<2{N7Z(-0(M2%9?uu3LLSGrIdfbUpDT@Qen$b)gl zGSv^~iKpNG(G}|~Iyq3^Upta3m;ESIxHuUUmQx?AXA`akmGTv(%UZW(T&FuaM^}9G z>ZjVy2W6q64us9^-;HQ&W*O2aQ@xsVWLaHq62YqkZAHu8AZt34T$g@u)N{-1iLAeg zXG%le^leLq3O7xB-fcd4dFa^MTuklj_E19hHNELm>Q_F8iQXf>Z+@>2@o)$eisUqHeH5;?GjY#x@_^L)u{)NK zBa8{Aau)ktyGOlU)m5A^Z0Z~y=R delta 1492 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 aT`#@vMLcni-1)M&M*oM(0E=XAtpC5$ESoU^ diff --git a/package.json b/package.json index 3b1bb2fb..68e4d8e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "0.8.77", + "version": "0.8.78", "keywords": [ "Remote Device Management", "Remote Device Monitoring", diff --git a/public/scripts/agent-desktop-0.0.2-min.js b/public/scripts/agent-desktop-0.0.2-min.js index 70e31535..7187e059 100644 --- a/public/scripts/agent-desktop-0.0.2-min.js +++ b/public/scripts/agent-desktop-0.0.2-min.js @@ -1 +1 @@ -Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(e,t){return new Uint8Array(Array.prototype.slice.call(this,e,t))}});var CreateAgentRemoteDesktop=function(e,t){var p={};"string"==typeof(p.CanvasId=e)&&(p.CanvasId=Q(e)),p.Canvas=p.CanvasId.getContext("2d"),p.scrolldiv=t,p.State=0,p.PendingOperations=[],p.tilesReceived=0,p.TilesDrawn=0,p.KillDraw=0,p.ipad=!1,p.tabletKeyboardVisible=!1,p.LastX=0,p.LastY=0,p.touchenabled=0,p.submenuoffset=0,p.touchtimer=null,p.TouchArray={},p.connectmode=0,p.connectioncount=0,p.rotation=0,p.protocol=2,p.debugmode=0,p.firstUpKeys=[],p.stopInput=!1,p.localKeyMap=!0,p.remoteKeyMap=!1,p.pressedKeys=[],p.sessionid=0,p.username,p.oldie=!1,p.CompressionLevel=50,p.ScalingLevel=1024,p.FrameRateTimer=100,p.SwapMouse=!1,p.FirstDraw=!1,p.onRemoteInputLockChanged=null,p.RemoteInputLock=null,p.ScreenWidth=960,p.ScreenHeight=701,p.width=960,p.height=960,p.displays=null,p.selectedDisplay=null,p.onScreenSizeChange=null,p.onMessage=null,p.onConnectCountChanged=null,p.onDebugMessage=null,p.onTouchEnabledChanged=null,p.onDisplayinfo=null;var S=!(p.accumulator=null),v="default";p.mouseCursorActive=function(e){S!=e&&(S=e,p.CanvasId.style.cursor=1==e?v:"default")};var C=["default","progress","crosshair","pointer","help","text","no-drop","move","nesw-resize","ns-resize","nwse-resize","w-resize","alias","wait","none","not-allowed","col-resize","row-resize","copy","zoom-in","zoom-out"];p.Start=function(){p.State=0,p.accumulator=null},p.Stop=function(){p.setRotation(0),p.UnGrabKeyInput(),p.UnGrabMouseInput(),p.touchenabled=0,null!=p.onScreenSizeChange&&p.onScreenSizeChange(p,p.ScreenWidth,p.ScreenHeight,p.CanvasId),p.Canvas.clearRect(0,0,p.CanvasId.width,p.CanvasId.height)},p.xxStateChange=function(e){p.State!=e&&(p.State=e,p.CanvasId.style.cursor="default",0===e&&p.Stop())},p.send=function(e){2>32)+p.intToStr(32&o)):(p.recordedSize+=n.length,p.shortToStr(e)+p.shortToStr(t)+p.intToStr(n.length)+p.intToStr(o>>32)+p.intToStr(32&o)+n)}return p.SendKeyMsg=function(e,t){var n;null!=e&&((t=t||window.event).code&&0==p.localKeyMap?null!=(n=(n=t).code.startsWith("Key")&&4==n.code.length?n.code.charCodeAt(3):n.code.startsWith("Digit")&&6==n.code.length?n.code.charCodeAt(5):n.code.startsWith("Numpad")&&7==n.code.length?n.code.charCodeAt(6)+48:o[n.code])&&p.SendKeyMsgKC(e,n):(59==(n=t.keyCode)?n=186:173==n?n=189:61==n&&(n=187),p.SendKeyMsgKC(e,n)))},p.SendRemoteInputLock=function(e){p.send(String.fromCharCode(0,87,0,5,e))},p.SendMessage=function(e){3==p.State&&p.send(String.fromCharCode(0,17)+p.shortToStr(4+e.length)+e)},p.SendKeyMsgKC=function(e,t){if(3==p.State)if("object"==typeof e)for(var n in e)p.SendKeyMsgKC(e[n][0],e[n][1]);else 1==e?-1==p.pressedKeys.indexOf(t)&&p.pressedKeys.unshift(t):2==e&&-1!=(n=p.pressedKeys.indexOf(t))&&p.pressedKeys.splice(n,1),0>8),255-(255&Math.abs(r))):(s=r>>8,255&r),String.fromCharCode(0,p.InputType.MOUSE,0,12,0,0,n/256&255,255&n,o/256&255,255&o,s,t)):String.fromCharCode(0,p.InputType.MOUSE,0,10,0,e==p.KeyAction.DOWN?a:2*a&255,n/256&255,255&n,o/256&255,255&o),p.Action==p.KeyAction.NONE?0==p.Alternate||p.ipad?(p.send(i),p.Alternate=1):p.Alternate=0:p.send(i)))},p.GetDisplayNumbers=function(){p.send(String.fromCharCode(0,11,0,4))},p.SetDisplay=function(e){p.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},p.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},p.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},p.onResize=function(){0!=p.ScreenWidth&&0!=p.ScreenHeight&&(p.Canvas.canvas.width==p.ScreenWidth&&p.Canvas.canvas.height==p.ScreenHeight||(p.FirstDraw&&(p.Canvas.canvas.width=p.ScreenWidth,p.Canvas.canvas.height=p.ScreenHeight,p.Canvas.fillRect(0,0,p.ScreenWidth,p.ScreenHeight),null!=p.onScreenSizeChange&&p.onScreenSizeChange(p,p.ScreenWidth,p.ScreenHeight,p.CanvasId)),p.FirstDraw=!1,1>32)+p.intToStr(32&o)):(p.recordedSize+=n.length,p.shortToStr(e)+p.shortToStr(t)+p.intToStr(n.length)+p.intToStr(o>>32)+p.intToStr(32&o)+n)}return p.SendKeyMsg=function(e,t){var n;null!=e&&((t=t||window.event).code&&0==p.localKeyMap?null!=(n=(n=t).code.startsWith("Key")&&4==n.code.length?n.code.charCodeAt(3):n.code.startsWith("Digit")&&6==n.code.length?n.code.charCodeAt(5):n.code.startsWith("Numpad")&&7==n.code.length?n.code.charCodeAt(6)+48:o[n.code])&&p.SendKeyMsgKC(e,n):(59==(n=t.keyCode)?n=186:173==n?n=189:61==n&&(n=187),p.SendKeyMsgKC(e,n)))},p.SendRemoteInputLock=function(e){p.send(String.fromCharCode(0,87,0,5,e))},p.SendMessage=function(e){3==p.State&&p.send(String.fromCharCode(0,17)+p.shortToStr(4+e.length)+e)},p.SendKeyMsgKC=function(e,t){if(3==p.State)if("object"==typeof e)for(var n in e)p.SendKeyMsgKC(e[n][0],e[n][1]);else 1==e?-1==p.pressedKeys.indexOf(t)&&p.pressedKeys.unshift(t):2==e&&-1!=(n=p.pressedKeys.indexOf(t))&&p.pressedKeys.splice(n,1),0>8),255-(255&Math.abs(r))):(s=r>>8,255&r),String.fromCharCode(0,p.InputType.MOUSE,0,12,0,0,n/256&255,255&n,o/256&255,255&o,s,t)):String.fromCharCode(0,p.InputType.MOUSE,0,10,0,e==p.KeyAction.DOWN?a:2*a&255,n/256&255,255&n,o/256&255,255&o),p.Action==p.KeyAction.NONE?0==p.Alternate||p.ipad?(p.send(i),p.Alternate=1):p.Alternate=0:p.send(i)))},p.GetDisplayNumbers=function(){p.send(String.fromCharCode(0,11,0,4))},p.SetDisplay=function(e){p.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},p.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},p.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},p.onResize=function(){0!=p.ScreenWidth&&0!=p.ScreenHeight&&(p.Canvas.canvas.width==p.ScreenWidth&&p.Canvas.canvas.height==p.ScreenHeight||(p.FirstDraw&&(p.Canvas.canvas.width=p.ScreenWidth,p.Canvas.canvas.height=p.ScreenHeight,p.Canvas.fillRect(0,0,p.ScreenWidth,p.ScreenHeight),null!=p.onScreenSizeChange&&p.onScreenSizeChange(p,p.ScreenWidth,p.ScreenHeight,p.CanvasId)),p.FirstDraw=!1,1