var Guacamole;(Guacamole=Guacamole||{}).ArrayBufferReader=function(e){var t=this;e.onblob=function(e){for(var n=window.atob(e),a=new ArrayBuffer(n.length),o=new Uint8Array(a),i=0;i=e.size)t.oncomplete&&t.oncomplete(e);else{var i=function(e,t,n){var a=(e.slice||e.webkitSlice||e.mozSlice).bind(e),o=n-t;if(o!==n){var i=a(t,o);if(i.size===o)return i}return a(t,n)}(e,a,a+n.blobLength);a+=n.blobLength,o.readAsArrayBuffer(i)}};o.onload=function(){n.sendData(o.result),n.onack=function(o){t.onack&&t.onack(o),o.isError()||(t.onprogress&&t.onprogress(e,a-n.blobLength),i())}},o.onerror=function(){t.onerror&&t.onerror(e,a,o.error)},i()},this.sendEnd=function(){n.sendEnd()},this.onack=null,this.onerror=null,this.onprogress=null,this.oncomplete=null},(Guacamole=Guacamole||{}).Client=function(e){var t=this,n=Guacamole.Client.State.IDLE,a=0,o=null,i=0,r={0:"butt",1:"round",2:"square"},s={0:"bevel",1:"miter",2:"round"},u=new Guacamole.Display,l={},c={},h={},d=[],f=[],m=[],p=new Guacamole.IntegerPool,v=[];function g(e){e!=n&&(n=e,t.onstatechange&&t.onstatechange(n))}function y(){return n==Guacamole.Client.State.CONNECTED||n==Guacamole.Client.State.WAITING}this.exportState=function(e){var t={currentState:n,currentTimestamp:a,layers:{}},o={};for(var i in l)o[i]=l[i];u.flush((function(){for(var n in o){var a=parseInt(n),i=o[n],r=i.toCanvas(),s={width:i.width,height:i.height};i.width&&i.height&&(s.url=r.toDataURL("image/png")),a>0&&(s.x=i.x,s.y=i.y,s.z=i.z,s.alpha=i.alpha,s.matrix=i.matrix,s.parent=S(i.parent)),t.layers[n]=s}e(t)}))},this.importState=function(e,t){var o,i;for(o in n=e.currentState,a=e.currentTimestamp,u.cancel(),l)(i=parseInt(o))>0&&l[o].dispose();for(o in l={},e.layers){i=parseInt(o);var r=e.layers[o],s=w(i);if(u.resize(s,r.width,r.height),r.url&&(u.setChannelMask(s,Guacamole.Layer.SRC),u.draw(s,0,0,r.url)),i>0&&r.parent>=0){var c=w(r.parent);u.move(s,c,r.x,r.y,r.z),u.shade(s,r.alpha);var h=r.matrix;u.distort(s,h[0],h[1],h[2],h[3],h[4],h[5])}}u.flush(t)},this.getDisplay=function(){return u},this.sendSize=function(t,n){y()&&e.sendMessage("size",t,n)},this.sendKeyEvent=function(t,n){y()&&e.sendMessage("key",n,t)},this.sendMouseState=function(t,n){if(y()){var a=t.x,o=t.y;n&&(a/=u.getScale(),o/=u.getScale()),u.moveCursor(Math.floor(a),Math.floor(o));var i=0;t.left&&(i|=1),t.middle&&(i|=2),t.right&&(i|=4),t.up&&(i|=8),t.down&&(i|=16),e.sendMessage("mouse",Math.floor(a),Math.floor(o),i)}},this.sendTouchState=function(t,n){if(y()){var a=t.x,o=t.y;n&&(a/=u.getScale(),o/=u.getScale()),e.sendMessage("touch",t.id,Math.floor(a),Math.floor(o),Math.floor(t.radiusX),Math.floor(t.radiusY),t.angle,t.force)}},this.createOutputStream=function(){var e=p.next();return v[e]=new Guacamole.OutputStream(t,e)},this.createAudioStream=function(n){var a=t.createOutputStream();return e.sendMessage("audio",a.index,n),a},this.createFileStream=function(n,a){var o=t.createOutputStream();return e.sendMessage("file",o.index,n,a),o},this.createPipeStream=function(n,a){var o=t.createOutputStream();return e.sendMessage("pipe",o.index,n,a),o},this.createClipboardStream=function(n){var a=t.createOutputStream();return e.sendMessage("clipboard",a.index,n),a},this.createArgumentValueStream=function(n,a){var o=t.createOutputStream();return e.sendMessage("argv",o.index,n,a),o},this.createObjectOutputStream=function(n,a,o){var i=t.createOutputStream();return e.sendMessage("put",n,i.index,a,o),i},this.requestObjectInputStream=function(t,n){y()&&e.sendMessage("get",t,n)},this.sendAck=function(t,n,a){y()&&e.sendMessage("ack",t,n,a)},this.sendBlob=function(t,n){y()&&e.sendMessage("blob",t,n)},this.endStream=function(t){y()&&(e.sendMessage("end",t),v[t]&&(p.free(t),delete v[t]))},this.onstatechange=null,this.onname=null,this.onerror=null,this.onmsg=null,this.onjoin=null,this.onleave=null,this.onaudio=null,this.onvideo=null,this.onmultitouch=null,this.onargv=null,this.onclipboard=null,this.onfile=null,this.onfilesystem=null,this.onpipe=null,this.onrequired=null,this.onsync=null;var w=function(e){var t=l[e];return t||(t=0===e?u.getDefaultLayer():e>0?u.createLayer():u.createBuffer(),l[e]=t),t},S=function(e){if(!e)return null;for(var t in l)if(e===l[t])return parseInt(t);return null};var G={"miter-limit":function(e,t){u.setMiterLimit(e,parseFloat(t))},"multi-touch":function(e,n){t.onmultitouch&&e instanceof Guacamole.Display.VisibleLayer&&t.onmultitouch(e,parseInt(n))}},T={ack:function(e){var t=parseInt(e[0]),n=e[1],a=parseInt(e[2]),o=v[t];o&&(o.onack&&o.onack(new Guacamole.Status(a,n)),a>=256&&v[t]===o&&(p.free(t),delete v[t]))},arc:function(e){var t=w(parseInt(e[0])),n=parseInt(e[1]),a=parseInt(e[2]),o=parseInt(e[3]),i=parseFloat(e[4]),r=parseFloat(e[5]),s=parseInt(e[6]);u.arc(t,n,a,o,i,r,0!=s)},argv:function(e){var n=parseInt(e[0]),a=e[1],o=e[2];if(t.onargv){var i=f[n]=new Guacamole.InputStream(t,n);t.onargv(i,a,o)}else t.sendAck(n,"Receiving argument values unsupported",256)},audio:function(e){var n=parseInt(e[0]),a=e[1],o=f[n]=new Guacamole.InputStream(t,n),i=null;t.onaudio&&(i=t.onaudio(o,a)),i||(i=Guacamole.AudioPlayer.getInstance(o,a)),i?(c[n]=i,t.sendAck(n,"OK",0)):t.sendAck(n,"BAD TYPE",783)},blob:function(e){var t=parseInt(e[0]),n=e[1],a=f[t];a&&a.onblob&&a.onblob(n)},body:function(e){var n=parseInt(e[0]),a=m[n],o=parseInt(e[1]),i=e[2],r=e[3];if(a&&a.onbody){var s=f[o]=new Guacamole.InputStream(t,o);a.onbody(s,i,r)}else t.sendAck(o,"Receipt of body unsupported",256)},cfill:function(e){var t=parseInt(e[0]),n=w(parseInt(e[1])),a=parseInt(e[2]),o=parseInt(e[3]),i=parseInt(e[4]),r=parseInt(e[5]);u.setChannelMask(n,t),u.fillColor(n,a,o,i,r)},clip:function(e){var t=w(parseInt(e[0]));u.clip(t)},clipboard:function(e){var n=parseInt(e[0]),a=e[1];if(t.onclipboard){var o=f[n]=new Guacamole.InputStream(t,n);t.onclipboard(o,a)}else t.sendAck(n,"Clipboard unsupported",256)},close:function(e){var t=w(parseInt(e[0]));u.close(t)},copy:function(e){var t=w(parseInt(e[0])),n=parseInt(e[1]),a=parseInt(e[2]),o=parseInt(e[3]),i=parseInt(e[4]),r=parseInt(e[5]),s=w(parseInt(e[6])),l=parseInt(e[7]),c=parseInt(e[8]);u.setChannelMask(s,r),u.copy(t,n,a,o,i,s,l,c)},cstroke:function(e){var t=parseInt(e[0]),n=w(parseInt(e[1])),a=r[parseInt(e[2])],o=s[parseInt(e[3])],i=parseInt(e[4]),l=parseInt(e[5]),c=parseInt(e[6]),h=parseInt(e[7]),d=parseInt(e[8]);u.setChannelMask(n,t),u.strokeColor(n,a,o,i,l,c,h,d)},cursor:function(e){var t=parseInt(e[0]),n=parseInt(e[1]),a=w(parseInt(e[2])),o=parseInt(e[3]),i=parseInt(e[4]),r=parseInt(e[5]),s=parseInt(e[6]);u.setCursor(t,n,a,o,i,r,s)},curve:function(e){var t=w(parseInt(e[0])),n=parseInt(e[1]),a=parseInt(e[2]),o=parseInt(e[3]),i=parseInt(e[4]),r=parseInt(e[5]),s=parseInt(e[6]);u.curveTo(t,n,a,o,i,r,s)},disconnect:function(e){t.disconnect()},dispose:function(e){var t=parseInt(e[0]);if(t>0){var n=w(t);u.dispose(n),delete l[t]}else t<0&&delete l[t]},distort:function(e){var t=parseInt(e[0]),n=parseFloat(e[1]),a=parseFloat(e[2]),o=parseFloat(e[3]),i=parseFloat(e[4]),r=parseFloat(e[5]),s=parseFloat(e[6]);if(t>=0){var l=w(t);u.distort(l,n,a,o,i,r,s)}},error:function(e){var n=e[0],a=parseInt(e[1]);t.onerror&&t.onerror(new Guacamole.Status(a,n)),t.disconnect()},end:function(e){var t=parseInt(e[0]),n=f[t];n&&(n.onend&&n.onend(),delete f[t])},file:function(e){var n=parseInt(e[0]),a=e[1],o=e[2];if(t.onfile){var i=f[n]=new Guacamole.InputStream(t,n);t.onfile(i,a,o)}else t.sendAck(n,"File transfer unsupported",256)},filesystem:function(e){var n=parseInt(e[0]),a=e[1];if(t.onfilesystem){var o=m[n]=new Guacamole.Object(t,n);t.onfilesystem(o,a)}},identity:function(e){var t=w(parseInt(e[0]));u.setTransform(t,1,0,0,1,0,0)},img:function(e){var n=parseInt(e[0]),a=parseInt(e[1]),o=w(parseInt(e[2])),i=e[3],r=parseInt(e[4]),s=parseInt(e[5]),l=f[n]=new Guacamole.InputStream(t,n);u.setChannelMask(o,a),u.drawStream(o,r,s,l,i)},jpeg:function(e){var t=parseInt(e[0]),n=w(parseInt(e[1])),a=parseInt(e[2]),o=parseInt(e[3]),i=e[4];u.setChannelMask(n,t),u.draw(n,a,o,"data:image/jpeg;base64,"+i)},lfill:function(e){var t=parseInt(e[0]),n=w(parseInt(e[1])),a=w(parseInt(e[2]));u.setChannelMask(n,t),u.fillLayer(n,a)},line:function(e){var t=w(parseInt(e[0])),n=parseInt(e[1]),a=parseInt(e[2]);u.lineTo(t,n,a)},lstroke:function(e){var t=parseInt(e[0]),n=w(parseInt(e[1])),a=w(parseInt(e[2]));u.setChannelMask(n,t),u.strokeLayer(n,a)},mouse:function(e){var t=parseInt(e[0]),n=parseInt(e[1]);u.showCursor(!0),u.moveCursor(t,n)},move:function(e){var t=parseInt(e[0]),n=parseInt(e[1]),a=parseInt(e[2]),o=parseInt(e[3]),i=parseInt(e[4]);if(t>0&&n>=0){var r=w(t),s=w(n);u.move(r,s,a,o,i)}},msg:function(e){var n,a,o=!0,i=parseInt(e[0]);if(t.onmsg&&void 0===(o=t.onmsg(i,e.slice(1)))&&(o=!0),o)switch(i){case Guacamole.Client.Message.USER_JOINED:n=e[1],a=e[2],t.onjoin&&t.onjoin(n,a);break;case Guacamole.Client.Message.USER_LEFT:n=e[1],a=e[2],t.onleave&&t.onleave(n,a)}},name:function(e){t.onname&&t.onname(e[0])},nest:function(t){(function(t){var n=d[t];return null==n&&((n=d[t]=new Guacamole.Parser).oninstruction=e.oninstruction),n})(parseInt(t[0])).receive(t[1])},pipe:function(e){var n=parseInt(e[0]),a=e[1],o=e[2];if(t.onpipe){var i=f[n]=new Guacamole.InputStream(t,n);t.onpipe(i,a,o)}else t.sendAck(n,"Named pipes unsupported",256)},png:function(e){var t=parseInt(e[0]),n=w(parseInt(e[1])),a=parseInt(e[2]),o=parseInt(e[3]),i=e[4];u.setChannelMask(n,t),u.draw(n,a,o,"data:image/png;base64,"+i)},pop:function(e){var t=w(parseInt(e[0]));u.pop(t)},push:function(e){var t=w(parseInt(e[0]));u.push(t)},rect:function(e){var t=w(parseInt(e[0])),n=parseInt(e[1]),a=parseInt(e[2]),o=parseInt(e[3]),i=parseInt(e[4]);u.rect(t,n,a,o,i)},required:function(e){t.onrequired&&t.onrequired(e)},reset:function(e){var t=w(parseInt(e[0]));u.reset(t)},set:function(e){var t=w(parseInt(e[0])),n=e[1],a=e[2],o=G[n];o&&o(t,a)},shade:function(e){var t=parseInt(e[0]),n=parseInt(e[1]);if(t>=0){var a=w(t);u.shade(a,n)}},size:function(e){var t=parseInt(e[0]),n=w(t),a=parseInt(e[1]),o=parseInt(e[2]);u.resize(n,a,o)},start:function(e){var t=w(parseInt(e[0])),n=parseInt(e[1]),a=parseInt(e[2]);u.moveTo(t,n,a)},sync:function(o){var i=parseInt(o[0]),r=o[1]?parseInt(o[1]):0;u.flush((function(){for(var t in c){var n=c[t];n&&n.sync()}i!==a&&(e.sendMessage("sync",i),a=i)}),i,r),n===Guacamole.Client.State.WAITING&&g(Guacamole.Client.State.CONNECTED),t.onsync&&t.onsync(i,r)},transfer:function(e){var t=w(parseInt(e[0])),n=parseInt(e[1]),a=parseInt(e[2]),o=parseInt(e[3]),i=parseInt(e[4]),r=parseInt(e[5]),s=w(parseInt(e[6])),l=parseInt(e[7]),c=parseInt(e[8]);3===r?u.put(t,n,a,o,i,s,l,c):5!==r&&u.transfer(t,n,a,o,i,s,l,c,Guacamole.Client.DefaultTransferFunction[r])},transform:function(e){var t=w(parseInt(e[0])),n=parseFloat(e[1]),a=parseFloat(e[2]),o=parseFloat(e[3]),i=parseFloat(e[4]),r=parseFloat(e[5]),s=parseFloat(e[6]);u.transform(t,n,a,o,i,r,s)},undefine:function(e){var t=parseInt(e[0]),n=m[t];n&&n.onundefine&&n.onundefine()},video:function(e){var n=parseInt(e[0]),a=w(parseInt(e[1])),o=e[2],i=f[n]=new Guacamole.InputStream(t,n),r=null;t.onvideo&&(r=t.onvideo(i,a,o)),r||(r=Guacamole.VideoPlayer.getInstance(i,a,o)),r?(h[n]=r,t.sendAck(n,"OK",0)):t.sendAck(n,"BAD TYPE",783)}},E=function(){e.sendMessage("nop"),i=(new Date).getTime()},I=function(){window.clearTimeout(o);var e=(new Date).getTime(),t=Math.max(i+5e3-e,0);t>0?o=window.setTimeout(E,t):E()};e.oninstruction=function(e,t){var n=T[e];n&&n(t),I()},this.disconnect=function(){n!=Guacamole.Client.State.DISCONNECTED&&n!=Guacamole.Client.State.DISCONNECTING&&(g(Guacamole.Client.State.DISCONNECTING),window.clearTimeout(o),e.sendMessage("disconnect"),e.disconnect(),g(Guacamole.Client.State.DISCONNECTED))},this.connect=function(t){g(Guacamole.Client.State.CONNECTING);try{e.connect(t)}catch(e){throw g(Guacamole.Client.State.IDLE),e}I(),g(Guacamole.Client.State.WAITING)}},Guacamole.Client.State={IDLE:0,CONNECTING:1,WAITING:2,CONNECTED:3,DISCONNECTING:4,DISCONNECTED:5},Guacamole.Client.DefaultTransferFunction={0:function(e,t){t.red=t.green=t.blue=0},15:function(e,t){t.red=t.green=t.blue=255},3:function(e,t){t.red=e.red,t.green=e.green,t.blue=e.blue,t.alpha=e.alpha},5:function(e,t){},12:function(e,t){t.red=255&~e.red,t.green=255&~e.green,t.blue=255&~e.blue,t.alpha=e.alpha},10:function(e,t){t.red=255&~t.red,t.green=255&~t.green,t.blue=255&~t.blue},1:function(e,t){t.red=e.red&t.red,t.green=e.green&t.green,t.blue=e.blue&t.blue},14:function(e,t){t.red=255&~(e.red&t.red),t.green=255&~(e.green&t.green),t.blue=255&~(e.blue&t.blue)},7:function(e,t){t.red=e.red|t.red,t.green=e.green|t.green,t.blue=e.blue|t.blue},8:function(e,t){t.red=255&~(e.red|t.red),t.green=255&~(e.green|t.green),t.blue=255&~(e.blue|t.blue)},6:function(e,t){t.red=e.red^t.red,t.green=e.green^t.green,t.blue=e.blue^t.blue},9:function(e,t){t.red=255&~(e.red^t.red),t.green=255&~(e.green^t.green),t.blue=255&~(e.blue^t.blue)},4:function(e,t){t.red=~e.red&t.red&255,t.green=~e.green&t.green&255,t.blue=~e.blue&t.blue&255},13:function(e,t){t.red=255&(~e.red|t.red),t.green=255&(~e.green|t.green),t.blue=255&(~e.blue|t.blue)},2:function(e,t){t.red=e.red&~t.red&255,t.green=e.green&~t.green&255,t.blue=e.blue&~t.blue&255},11:function(e,t){t.red=255&(e.red|~t.red),t.green=255&(e.green|~t.green),t.blue=255&(e.blue|~t.blue)}},Guacamole.Client.Message={USER_JOINED:1,USER_LEFT:2},(Guacamole=Guacamole||{}).DataURIReader=function(e,t){var n=this,a="data:"+t+";base64,";e.onblob=function(e){a+=e},e.onend=function(){n.onend&&n.onend()},this.getURI=function(){return a},this.onend=null},(Guacamole=Guacamole||{}).Display=function(){var e=this,t=0,n=0,a=1,o=document.createElement("div");o.style.position="relative",o.style.width=t+"px",o.style.height=n+"px",o.style.transformOrigin=o.style.webkitTransformOrigin=o.style.MozTransformOrigin=o.style.OTransformOrigin=o.style.msTransformOrigin="0 0";var i=new Guacamole.Display.VisibleLayer(t,n),r=new Guacamole.Display.VisibleLayer(0,0);r.setChannelMask(Guacamole.Layer.SRC),o.appendChild(i.getElement()),o.appendChild(r.getElement());var s=document.createElement("div");s.style.position="relative",s.style.width=t*a+"px",s.style.height=n*a+"px",s.appendChild(o),this.cursorHotspotX=0,this.cursorHotspotY=0,this.cursorX=0,this.cursorY=0,this.statisticWindow=0,this.onresize=null,this.oncursor=null,this.onstatistics=null;var u=[],l=[],c=null,h=function(){for(var e=0,t=0,n=0,a=0;a0&&n.height>0){var i=t.globalAlpha;t.globalAlpha*=n.alpha/255,t.drawImage(n.getCanvas(),a,o);for(var r=function(e){var t=[];for(var n in e.children)t.push(e.children[n]);return t.sort((function(e,t){var n=e.z-t.z;if(0!==n)return n;var a=e.getElement(),o=t.getElement().compareDocumentPosition(a);return o&Node.DOCUMENT_POSITION_PRECEDING?-1:o&Node.DOCUMENT_POSITION_FOLLOWING?1:0})),t}(n),s=0;s0&&a.top+a.height>0)return}e.focus()}),!0)},(Guacamole=Guacamole||{}).InputStream=function(e,t){var n=this;this.index=t,this.onblob=null,this.onend=null,this.sendAck=function(t,a){e.sendAck(n.index,t,a)}},(Guacamole=Guacamole||{}).IntegerPool=function(){var e=this,t=[];this.next_int=0,this.next=function(){return t.length>0?t.shift():e.next_int++},this.free=function(e){t.push(e)}},(Guacamole=Guacamole||{}).JSONReader=function(e){var t=this,n=new Guacamole.StringReader(e),a="";this.getLength=function(){return a.length},this.getJSON=function(){return JSON.parse(a)},n.ontext=function(e){a+=e,t.onprogress&&t.onprogress(e.length)},n.onend=function(){t.onend&&t.onend()},this.onprogress=null,this.onend=null},(Guacamole=Guacamole||{}).Keyboard=function(e){var t=this,n="_GUAC_KEYBOARD_HANDLED_BY_"+Guacamole.Keyboard._nextID++;this.onkeydown=null,this.onkeyup=null;var a={keyupUnreliable:!1,altIsTypableOnly:!1,capsLockKeyupUnreliable:!1};navigator&&navigator.platform&&(navigator.platform.match(/ipad|iphone|ipod/i)?a.keyupUnreliable=!0:navigator.platform.match(/^mac/i)&&(a.altIsTypableOnly=!0,a.capsLockKeyupUnreliable=!0));var o=function(e){var t=this;this.keyCode=e?e.which||e.keyCode:0,this.keyIdentifier=e&&e.keyIdentifier,this.key=e&&e.key,this.location=e?A(e):0,this.modifiers=e?Guacamole.Keyboard.ModifierState.fromKeyboardEvent(e):new Guacamole.Keyboard.ModifierState,this.timestamp=(new Date).getTime(),this.defaultPrevented=!1,this.keysym=null,this.reliable=!1,this.getAge=function(){return(new Date).getTime()-t.timestamp}},i=function(e){o.call(this,e),this.keysym=w(this.key,this.location)||G(this.keyCode,this.location),this.keyupReliable=!a.keyupUnreliable,this.keysym&&!y(this.keysym)&&(this.reliable=!0),!this.keysym&&T(this.keyCode,this.keyIdentifier)&&(this.keysym=w(this.keyIdentifier,this.location,this.modifiers.shift)),(this.modifiers.meta&&65511!==this.keysym&&65512!==this.keysym||65509===this.keysym&&a.capsLockKeyupUnreliable)&&(this.keyupReliable=!1);var t=!this.modifiers.ctrl&&!a.altIsTypableOnly;(!this.modifiers.alt&&this.modifiers.ctrl||t&&this.modifiers.alt||this.modifiers.meta||this.modifiers.hyper)&&(this.reliable=!0),m[this.keyCode]=this.keysym};i.prototype=new o;var r=function(e){o.call(this,e),this.keysym=S(this.keyCode),this.reliable=!0};r.prototype=new o;var s=function(e){o.call(this,e),this.keysym=G(this.keyCode,this.location)||w(this.key,this.location),t.pressed[this.keysym]||(this.keysym=m[this.keyCode]||this.keysym),this.reliable=!0};s.prototype=new o;var u=[],l={8:[65288],9:[65289],12:[65291,65291,65291,65461],13:[65293],16:[65505,65505,65506],17:[65507,65507,65508],18:[65513,65513,65027],19:[65299],20:[65509],27:[65307],32:[32],33:[65365,65365,65365,65465],34:[65366,65366,65366,65459],35:[65367,65367,65367,65457],36:[65360,65360,65360,65463],37:[65361,65361,65361,65460],38:[65362,65362,65362,65464],39:[65363,65363,65363,65462],40:[65364,65364,65364,65458],45:[65379,65379,65379,65456],46:[65535,65535,65535,65454],91:[65511],92:[65512],93:[65383],96:[65456],97:[65457],98:[65458],99:[65459],100:[65460],101:[65461],102:[65462],103:[65463],104:[65464],105:[65465],106:[65450],107:[65451],109:[65453],110:[65454],111:[65455],112:[65470],113:[65471],114:[65472],115:[65473],116:[65474],117:[65475],118:[65476],119:[65477],120:[65478],121:[65479],122:[65480],123:[65481],144:[65407],145:[65300],225:[65027]},c={Again:[65382],AllCandidates:[65341],Alphanumeric:[65328],Alt:[65513,65513,65027],Attn:[64782],AltGraph:[65027],ArrowDown:[65364],ArrowLeft:[65361],ArrowRight:[65363],ArrowUp:[65362],Backspace:[65288],CapsLock:[65509],Cancel:[65385],Clear:[65291],Convert:[65313],Copy:[64789],Crsel:[64796],CrSel:[64796],CodeInput:[65335],Compose:[65312],Control:[65507,65507,65508],ContextMenu:[65383],Delete:[65535],Down:[65364],End:[65367],Enter:[65293],EraseEof:[64774],Escape:[65307],Execute:[65378],Exsel:[64797],ExSel:[64797],F1:[65470],F2:[65471],F3:[65472],F4:[65473],F5:[65474],F6:[65475],F7:[65476],F8:[65477],F9:[65478],F10:[65479],F11:[65480],F12:[65481],F13:[65482],F14:[65483],F15:[65484],F16:[65485],F17:[65486],F18:[65487],F19:[65488],F20:[65489],F21:[65490],F22:[65491],F23:[65492],F24:[65493],Find:[65384],GroupFirst:[65036],GroupLast:[65038],GroupNext:[65032],GroupPrevious:[65034],FullWidth:null,HalfWidth:null,HangulMode:[65329],Hankaku:[65321],HanjaMode:[65332],Help:[65386],Hiragana:[65317],HiraganaKatakana:[65319],Home:[65360],Hyper:[65517,65517,65518],Insert:[65379],JapaneseHiragana:[65317],JapaneseKatakana:[65318],JapaneseRomaji:[65316],JunjaMode:[65336],KanaMode:[65325],KanjiMode:[65313],Katakana:[65318],Left:[65361],Meta:[65511,65511,65512],ModeChange:[65406],NumLock:[65407],PageDown:[65366],PageUp:[65365],Pause:[65299],Play:[64790],PreviousCandidate:[65342],PrintScreen:[65377],Redo:[65382],Right:[65363],RomanCharacters:null,Scroll:[65300],Select:[65376],Separator:[65452],Shift:[65505,65505,65506],SingleCandidate:[65340],Super:[65515,65515,65516],Tab:[65289],UIKeyInputDownArrow:[65364],UIKeyInputEscape:[65307],UIKeyInputLeftArrow:[65361],UIKeyInputRightArrow:[65363],UIKeyInputUpArrow:[65362],Up:[65362],Undo:[65381],Win:[65511,65511,65512],Zenkaku:[65320],ZenkakuHankaku:[65322]},h={65027:!0,65505:!0,65506:!0,65507:!0,65508:!0,65509:!0,65511:!0,65512:!0,65513:!0,65514:!0,65515:!0,65516:!0};this.modifiers=new Guacamole.Keyboard.ModifierState,this.pressed={};var d={},f={},m={},p=null,v=null,g=function(e,t){return e?e[t]||e[0]:null},y=function(e){return e>=0&&e<=255||16777216==(4294901760&e)};function w(e,t,n){if(!e)return null;var a,o=e.indexOf("U+");if(o>=0){var i=e.substring(o+2);a=String.fromCharCode(parseInt(i,16))}else{if(1!==e.length||3===t)return g(c[e],t);a=e}return!0===n?a=a.toUpperCase():!1===n&&(a=a.toLowerCase()),S(a.charCodeAt(0))}function S(e){return function(e){return e<=31||e>=127&&e<=159}(e)?65280|e:e>=0&&e<=255?e:e>=256&&e<=1114111?16777216|e:null}function G(e,t){return g(l[e],t)}var T=function(e,t){if(!t)return!1;var n=t.indexOf("U+");return-1===n||(e!==parseInt(t.substring(n+2),16)||(e>=65&&e<=90||e>=48&&e<=57))};this.press=function(e){if(null!==e){if(!t.pressed[e]&&(t.pressed[e]=!0,t.onkeydown)){var n=t.onkeydown(e);return f[e]=n,window.clearTimeout(p),window.clearInterval(v),h[e]||(p=window.setTimeout((function(){v=window.setInterval((function(){t.onkeyup(e),t.onkeydown(e)}),50)}),500)),n}return f[e]||!1}},this.release=function(e){t.pressed[e]&&(delete t.pressed[e],delete d[e],window.clearTimeout(p),window.clearInterval(v),null!==e&&t.onkeyup&&t.onkeyup(e))},this.type=function(e){for(var n=0;n0){if(I(e),n){!function(e){t.modifiers.ctrl&&t.modifiers.alt&&(e>=65&&e<=90||e>=97&&e<=122||(e<=255||16777216==(4278190080&e))&&(t.release(65507),t.release(65508),t.release(65513),t.release(65514)))}(n);var l=!t.press(n);m[e.keyCode]=n,e.keyupReliable||t.release(n);for(var c=0;cn.width?s:n.width,r=u>n.height?u:n.height,n.resize(i,r)}this.autosize=!1,this.width=e,this.height=t,this.getCanvas=function(){return a},this.toCanvas=function(){var e=document.createElement("canvas");return e.width=n.width,e.height=n.height,e.getContext("2d").drawImage(n.getCanvas(),0,0),e},this.resize=function(e,t){e===n.width&&t===n.height||l(e,t)},this.drawImage=function(e,t,a){n.autosize&&c(e,t,a.width,a.height),o.drawImage(a,e,t),i=!1},this.transfer=function(e,t,a,r,s,u,l,h){var d=e.getCanvas();if(!(t>=d.width||a>=d.height)&&(t+r>d.width&&(r=d.width-t),a+s>d.height&&(s=d.height-a),0!==r&&0!==s)){n.autosize&&c(u,l,r,s);for(var f=e.getCanvas().getContext("2d").getImageData(t,a,r,s),m=o.getImageData(u,l,r,s),p=0;p=h.width||a>=h.height)&&(t+r>h.width&&(r=h.width-t),a+s>h.height&&(s=h.height-a),0!==r&&0!==s)){n.autosize&&c(u,l,r,s);var d=e.getCanvas().getContext("2d").getImageData(t,a,r,s);o.putImageData(d,u,l),i=!1}},this.copy=function(e,t,a,r,s,u,l){var h=e.getCanvas();t>=h.width||a>=h.height||(t+r>h.width&&(r=h.width-t),a+s>h.height&&(s=h.height-a),0!==r&&0!==s&&(n.autosize&&c(u,l,r,s),o.drawImage(h,t,a,r,s,u,l,r,s),i=!1))},this.moveTo=function(e,t){r&&(o.beginPath(),r=!1),n.autosize&&c(e,t,0,0),o.moveTo(e,t)},this.lineTo=function(e,t){r&&(o.beginPath(),r=!1),n.autosize&&c(e,t,0,0),o.lineTo(e,t)},this.arc=function(e,t,a,i,s,u){r&&(o.beginPath(),r=!1),n.autosize&&c(e,t,0,0),o.arc(e,t,a,i,s,u)},this.curveTo=function(e,t,a,i,s,u){r&&(o.beginPath(),r=!1),n.autosize&&c(s,u,0,0),o.bezierCurveTo(e,t,a,i,s,u)},this.close=function(){o.closePath(),r=!0},this.rect=function(e,t,a,i){r&&(o.beginPath(),r=!1),n.autosize&&c(e,t,a,i),o.rect(e,t,a,i)},this.clip=function(){o.clip(),r=!0},this.strokeColor=function(e,t,n,a,s,u,l){o.lineCap=e,o.lineJoin=t,o.lineWidth=n,o.strokeStyle="rgba("+a+","+s+","+u+","+l/255+")",o.stroke(),i=!1,r=!0},this.fillColor=function(e,t,n,a){o.fillStyle="rgba("+e+","+t+","+n+","+a/255+")",o.fill(),i=!1,r=!0},this.strokeLayer=function(e,t,n,a){o.lineCap=e,o.lineJoin=t,o.lineWidth=n,o.strokeStyle=o.createPattern(a.getCanvas(),"repeat"),o.stroke(),i=!1,r=!0},this.fillLayer=function(e){o.fillStyle=o.createPattern(e.getCanvas(),"repeat"),o.fill(),i=!1,r=!0},this.push=function(){o.save(),s++},this.pop=function(){s>0&&(o.restore(),s--)},this.reset=function(){for(;s>0;)o.restore(),s--;o.restore(),o.save(),o.beginPath(),r=!1},this.setTransform=function(e,t,n,a,i,r){o.setTransform(e,t,n,a,i,r)},this.transform=function(e,t,n,a,i,r){o.transform(e,t,n,a,i,r)},this.setChannelMask=function(e){o.globalCompositeOperation=u[e]},this.setMiterLimit=function(e){o.miterLimit=e},l(e,t),a.style.zIndex=-1},Guacamole.Layer.ROUT=2,Guacamole.Layer.ATOP=6,Guacamole.Layer.XOR=10,Guacamole.Layer.ROVER=11,Guacamole.Layer.OVER=14,Guacamole.Layer.PLUS=15,Guacamole.Layer.RIN=1,Guacamole.Layer.IN=4,Guacamole.Layer.OUT=8,Guacamole.Layer.RATOP=9,Guacamole.Layer.SRC=12,Guacamole.Layer.Pixel=function(e,t,n,a){this.red=e,this.green=t,this.blue=n,this.alpha=a},(Guacamole=Guacamole||{}).Mouse=function(e){Guacamole.Mouse.Event.Target.call(this);var t=this;this.touchMouseThreshold=3,this.scrollThreshold=53,this.PIXELS_PER_LINE=18,this.PIXELS_PER_PAGE=16*this.PIXELS_PER_LINE;var n=[Guacamole.Mouse.State.Buttons.LEFT,Guacamole.Mouse.State.Buttons.MIDDLE,Guacamole.Mouse.State.Buttons.RIGHT],a=0,o=0;function i(){a=t.touchMouseThreshold}function r(e){var n=e.deltaY||-e.wheelDeltaY||-e.wheelDelta;if(n?1===e.deltaMode?n=e.deltaY*t.PIXELS_PER_LINE:2===e.deltaMode&&(n=e.deltaY*t.PIXELS_PER_PAGE):n=e.detail*t.PIXELS_PER_LINE,(o+=n)<=-t.scrollThreshold){do{t.click(Guacamole.Mouse.State.Buttons.UP),o+=t.scrollThreshold}while(o<=-t.scrollThreshold);o=0}if(o>=t.scrollThreshold){do{t.click(Guacamole.Mouse.State.Buttons.DOWN),o-=t.scrollThreshold}while(o>=t.scrollThreshold);o=0}Guacamole.Event.DOMEvent.cancelEvent(e)}e.addEventListener("contextmenu",(function(e){Guacamole.Event.DOMEvent.cancelEvent(e)}),!1),e.addEventListener("mousemove",(function(n){if(a)return Guacamole.Event.DOMEvent.cancelEvent(n),void a--;t.move(Guacamole.Position.fromClientPosition(e,n.clientX,n.clientY),n)}),!1),e.addEventListener("mousedown",(function(e){if(a)Guacamole.Event.DOMEvent.cancelEvent(e);else{var o=n[e.button];o&&t.press(o,e)}}),!1),e.addEventListener("mouseup",(function(e){if(a)Guacamole.Event.DOMEvent.cancelEvent(e);else{var o=n[e.button];o&&t.release(o,e)}}),!1),e.addEventListener("mouseout",(function(n){n||(n=window.event);for(var a=n.relatedTarget||n.toElement;a;){if(a===e)return;a=a.parentNode}t.reset(n),t.out(n)}),!1),e.addEventListener("selectstart",(function(e){Guacamole.Event.DOMEvent.cancelEvent(e)}),!1),e.addEventListener("touchmove",i,!1),e.addEventListener("touchstart",i,!1),e.addEventListener("touchend",i,!1),e.addEventListener("DOMMouseScroll",r,!1),e.addEventListener("mousewheel",r,!1),e.addEventListener("wheel",r,!1);var s=function(){var e=document.createElement("div");if(!("cursor"in e.style))return!1;try{e.style.cursor="url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX///+nxBvIAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==) 0 0, auto"}catch(e){return!1}return/\burl\([^()]*\)\s+0\s+0\b/.test(e.style.cursor||"")}();this.setCursor=function(t,n,a){if(s){var o=t.toDataURL("image/png");return e.style.cursor="url("+o+") "+n+" "+a+", auto",!0}return!1}},Guacamole.Mouse.State=function(e){e=arguments.length>1?function(e,t,n,a,o,i,r){return{x:e,y:t,left:n,middle:a,right:o,up:i,down:r}}.apply(this,arguments):e||{},Guacamole.Position.call(this,e),this.left=e.left||!1,this.middle=e.middle||!1,this.right=e.right||!1,this.up=e.up||!1,this.down=e.down||!1},Guacamole.Mouse.State.Buttons={LEFT:"left",MIDDLE:"middle",RIGHT:"right",UP:"up",DOWN:"down"},Guacamole.Mouse.Event=function(e,t,n){Guacamole.Event.DOMEvent.call(this,e,n);var a="on"+this.type;this.state=t,this.invokeLegacyHandler=function(e){e[a]&&(this.preventDefault(),this.stopPropagation(),e[a](this.state))}},Guacamole.Mouse.Event.Target=function(){Guacamole.Event.Target.call(this),this.currentState=new Guacamole.Mouse.State,this.press=function(e,t){this.currentState[e]||(this.currentState[e]=!0,this.dispatch(new Guacamole.Mouse.Event("mousedown",this.currentState,t)))},this.release=function(e,t){this.currentState[e]&&(this.currentState[e]=!1,this.dispatch(new Guacamole.Mouse.Event("mouseup",this.currentState,t)))},this.click=function(e,t){this.press(e,t),this.release(e,t)},this.move=function(e,t){this.currentState.x===e.x&&this.currentState.y===e.y||(this.currentState.x=e.x,this.currentState.y=e.y,this.dispatch(new Guacamole.Mouse.Event("mousemove",this.currentState,t)))},this.out=function(e){this.dispatch(new Guacamole.Mouse.Event("mouseout",this.currentState,e))},this.reset=function(e){for(var t in Guacamole.Mouse.State.Buttons)this.release(Guacamole.Mouse.State.Buttons[t],e)}},Guacamole.Mouse.Touchpad=function(e){Guacamole.Mouse.Event.Target.call(this);var t=this;this.scrollThreshold=20*(window.devicePixelRatio||1),this.clickTimingThreshold=250,this.clickMoveThreshold=10*(window.devicePixelRatio||1),this.currentState=new Guacamole.Mouse.State;var n=0,a=0,o=0,i=0,r=0,s={1:"left",2:"right",3:"middle"},u=!1,l=null;e.addEventListener("touchend",(function(e){if(e.preventDefault(),u&&0===e.touches.length){var a=(new Date).getTime(),o=s[n];t.currentState[o]&&(t.release(o,e),l&&(window.clearTimeout(l),l=null)),a-i<=t.clickTimingThreshold&&r=t.scrollThreshold)f=c>0?"down":"up",t.click(f,s),a=u.clientX,o=u.clientY}}),!1)},Guacamole.Mouse.Touchscreen=function(e){Guacamole.Mouse.Event.Target.call(this);var t=this,n=!1,a=null,o=null,i=null,r=null;function s(e){var n=e.touches[0]||e.changedTouches[0],i=n.clientX-a,r=n.clientY-o;return Math.sqrt(i*i+r*r)>=t.clickMoveThreshold}function u(){window.clearTimeout(i),window.clearTimeout(r),n=!1}this.scrollThreshold=20*(window.devicePixelRatio||1),this.clickTimingThreshold=250,this.clickMoveThreshold=16*(window.devicePixelRatio||1),this.longPressThreshold=500,e.addEventListener("touchend",(function(a){if(n)if(0===a.touches.length&&1===a.changedTouches.length){if(window.clearTimeout(r),t.release(Guacamole.Mouse.State.Buttons.LEFT,a),!s(a)&&(a.preventDefault(),!t.currentState.left)){var o=a.changedTouches[0];t.move(Guacamole.Position.fromClientPosition(e,o.clientX,o.clientY)),t.press(Guacamole.Mouse.State.Buttons.LEFT,a),i=window.setTimeout((function(){t.release(Guacamole.Mouse.State.Buttons.LEFT,a),u()}),t.clickTimingThreshold)}}else u()}),!1),e.addEventListener("touchstart",(function(s){1===s.touches.length?(s.preventDefault(),function(e){var t=e.touches[0];n=!0,a=t.clientX,o=t.clientY}(s),window.clearTimeout(i),r=window.setTimeout((function(){var n=s.touches[0];t.move(Guacamole.Position.fromClientPosition(e,n.clientX,n.clientY)),t.click(Guacamole.Mouse.State.Buttons.RIGHT,s),u()}),t.longPressThreshold)):u()}),!1),e.addEventListener("touchmove",(function(a){if(n)if(s(a)&&window.clearTimeout(r),1===a.touches.length){if(t.currentState.left){a.preventDefault();var o=a.touches[0];t.move(Guacamole.Position.fromClientPosition(e,o.clientX,o.clientY),a)}}else u()}),!1)},(Guacamole=(Guacamole=Guacamole||{})||{}).Object=function(e,t){var n=this,a={};this.index=t,this.onbody=function(e,t,n){var o=function(e){var t=a[e];if(!t)return null;var n=t.shift();return 0===t.length&&delete a[e],n}(n);o&&o(e,t)},this.onundefine=null,this.requestInputStream=function(t,o){o&&function(e,t){var n=a[e];n||(n=[],a[e]=n),n.push(t)}(t,o),e.requestObjectInputStream(n.index,t)},this.createOutputStream=function(t,a){return e.createObjectOutputStream(n.index,t,a)}},Guacamole.Object.ROOT_STREAM="/",Guacamole.Object.STREAM_INDEX_MIMETYPE="application/vnd.glyptodon.guacamole.stream-index+json",(Guacamole=Guacamole||{}).OnScreenKeyboard=function(e){var t=this,n={},a={},o=[],i=function(e,t){e.classList?e.classList.add(t):e.className+=" "+t},r=function(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(/([^ ]+)[ ]*/g,(function(e,n){return n===t?"":e}))},s=0,u=function(e,t,n,a){this.width=t,this.height=n,this.scale=function(o){e.style.width=t*o+"px",e.style.height=n*o+"px",a&&(e.style.lineHeight=n*o+"px",e.style.fontSize=o+"px")}},l=function(e){for(var t=0;t=0;a--){var o=n[a];if(l(o.requires))return o}return null},h=function(e,o){if(!a[e]){i(o,"guac-keyboard-pressed");var s=c(e);if(s.modifier){var u="guac-keyboard-modifier-"+p(s.modifier),l=n[s.modifier];void 0===l?(i(f,u),n[s.modifier]=s.keysym,s.keysym&&t.onkeydown&&t.onkeydown(s.keysym)):(r(f,u),delete n[s.modifier],l&&t.onkeyup&&t.onkeyup(l))}else t.onkeydown&&t.onkeydown(s.keysym);a[e]=!0}},d=function(e,n){if(a[e]){r(n,"guac-keyboard-pressed");var o=c(e);!o.modifier&&t.onkeyup&&t.onkeyup(o.keysym),a[e]=!1}},f=document.createElement("div");f.className="guac-keyboard",f.onselectstart=f.onmousemove=f.onmouseup=f.onmousedown=function(e){return s&&s--,e.stopPropagation(),!1},this.touchMouseThreshold=3,this.onkeydown=null,this.onkeyup=null,this.layout=new Guacamole.OnScreenKeyboard.Layout(e),this.getElement=function(){return f},this.resize=function(e){for(var n=Math.floor(10*e/t.layout.width)/10,a=0;a=0&&t<=255?t:t>=256&&t<=1114111?16777216|t:null}(this.title),this.modifier=e.modifier,this.requires=e.requires||[]},(Guacamole=Guacamole||{}).OutputStream=function(e,t){var n=this;this.index=t,this.onack=null,this.sendBlob=function(t){e.sendBlob(n.index,t)},this.sendEnd=function(){e.endStream(n.index)}},(Guacamole=Guacamole||{}).Parser=function(){var e=this,t="",n=[],a=-1,o=0;this.receive=function(i){for(o>4096&&a>=o&&(t=t.substring(o),a-=o,o=0),t+=i;a=o){var r=t.substring(o,a),s=t.substring(a,a+1);if(n.push(r),";"==s){var u=n.shift();null!=e.oninstruction&&e.oninstruction(u,n),n.length=0}else if(","!=s)throw new Error("Illegal terminator.");o=a+1}var l=t.indexOf(".",o);if(-1==l){o=t.length;break}var c=parseInt(t.substring(a+1,l));if(isNaN(c))throw new Error("Non-numeric character in element length.");a=(o=l+1)+c}},this.oninstruction=null},(Guacamole=Guacamole||{}).Position=function(e){e=e||{},this.x=e.x||0,this.y=e.y||0,this.fromClientPosition=function(e,t,n){this.x=t-e.offsetLeft,this.y=n-e.offsetTop;for(var a=e.offsetParent;a&&a!==document.body;)this.x-=a.offsetLeft-a.scrollLeft,this.y-=a.offsetTop-a.scrollTop,a=a.offsetParent;if(a){var o=document.body.scrollLeft||document.documentElement.scrollLeft,i=document.body.scrollTop||document.documentElement.scrollTop;this.x-=a.offsetLeft-o,this.y-=a.offsetTop-i}}},Guacamole.Position.fromClientPosition=function(e,t,n){var a=new Guacamole.Position;return a.fromClientPosition(e,t,n),a},(Guacamole=Guacamole||{}).RawAudioFormat=function(e){this.bytesPerSample=e.bytesPerSample,this.channels=e.channels,this.rate=e.rate},Guacamole.RawAudioFormat.parse=function(e){var t,n=null,a=1;if("audio/L8;"===e.substring(0,9))e=e.substring(9),t=1;else{if("audio/L16;"!==e.substring(0,10))return null;e=e.substring(10),t=2}for(var o=e.split(","),i=0;i=e.size)i&&i();else{var a=e.slice(s,s+o);s+=a.size,u.readAsText(a)}}};u.onload=l,l()}},y=function(e){for(var t=e.length,n=t+3;t>=10;)n++,t=Math.floor(t/10);return n};u.connect(),u.getDisplay().showCursor(!1);var w=function(e,t){m+=y(e);for(var a=0;a=16384&&o-i[r].timestamp>=5e3)&&(s.keyframe=!0,r=i.length-1),n.onprogress&&n.onprogress(n.getDuration(),m)}},S=function(){n.onload&&n.onload()};if(e instanceof Blob)g(t,w,S);else{a=e,t=new Blob;var G=!1,T="";a.oninstruction=function(e,n){T+=e.length+"."+e,n.forEach((function(e){T+=","+e.length+"."+e})),(T+=";").length>=o&&(t=new Blob([t,T]),T=""),w(e,n)},a.onerror=function(e){G=!0,n.onerror&&n.onerror(e.message)},a.onstatechange=function(e){e===Guacamole.Tunnel.State.CLOSED&&(T.length&&(t=new Blob([t,T]),T=""),G||S())}}var E=function(e){return 0===i.length?0:e-i[0].timestamp},I=function e(t,n,a){if(t===n)return t;var o=Math.floor((t+n)/2),r=E(i[o].timestamp);return at?e(t,o-1,a):a>r&&oc&&n.onseek(E(i[l].timestamp),l-c,e-c),r.aborted||(l=0;c--){var m=i[c];if(c===l)break;if(m.clientState)return void m.clientState.text().then((function(e){u.importState(JSON.parse(e)),l=c,f()}))}f()},C=function(){d&&(d.aborted=!0,d=null)},k=function e(){if(l+1255}},Guacamole.Status.Code={SUCCESS:0,UNSUPPORTED:256,SERVER_ERROR:512,SERVER_BUSY:513,UPSTREAM_TIMEOUT:514,UPSTREAM_ERROR:515,RESOURCE_NOT_FOUND:516,RESOURCE_CONFLICT:517,RESOURCE_CLOSED:518,UPSTREAM_NOT_FOUND:519,UPSTREAM_UNAVAILABLE:520,SESSION_CONFLICT:521,SESSION_TIMEOUT:522,SESSION_CLOSED:523,CLIENT_BAD_REQUEST:768,CLIENT_UNAUTHORIZED:769,CLIENT_FORBIDDEN:771,CLIENT_TIMEOUT:776,CLIENT_OVERRUN:781,CLIENT_BAD_TYPE:783,CLIENT_TOO_MANY:797},Guacamole.Status.Code.fromHTTPCode=function(e){switch(e){case 400:return Guacamole.Status.Code.CLIENT_BAD_REQUEST;case 403:return Guacamole.Status.Code.CLIENT_FORBIDDEN;case 404:return Guacamole.Status.Code.RESOURCE_NOT_FOUND;case 429:return Guacamole.Status.Code.CLIENT_TOO_MANY;case 503:return Guacamole.Status.Code.SERVER_BUSY}return Guacamole.Status.Code.SERVER_ERROR},Guacamole.Status.Code.fromWebSocketCode=function(e){switch(e){case 1e3:return Guacamole.Status.Code.SUCCESS;case 1006:case 1015:return Guacamole.Status.Code.UPSTREAM_NOT_FOUND;case 1001:case 1012:case 1013:case 1014:return Guacamole.Status.Code.UPSTREAM_UNAVAILABLE}return Guacamole.Status.Code.SERVER_ERROR},(Guacamole=Guacamole||{}).StringReader=function(e){var t=this,n=new Guacamole.UTF8Parser,a=new Guacamole.ArrayBufferReader(e);a.ondata=function(e){var a=n.decode(e);t.ontext&&t.ontext(a)},a.onend=function(){t.onend&&t.onend()},this.ontext=null,this.onend=null},(Guacamole=Guacamole||{}).StringWriter=function(e){var t=this,n=new Guacamole.ArrayBufferWriter(e),a=new Uint8Array(8192),o=0;function i(e){var t,n;if(e<=127)t=0,n=1;else if(e<=2047)t=192,n=2;else if(e<=65535)t=224,n=3;else{if(!(e<=2097151))return void i(65533);t=240,n=4}!function(e){if(o+e>=a.length){var t=new Uint8Array(2*(o+e));t.set(a),a=t}o+=e}(n);for(var r=o-1,s=1;s>=6;a[r]=t|e}n.onack=function(e){t.onack&&t.onack(e)},this.sendText=function(e){e.length&&n.sendData(function(e){for(var t=0;t0){var n=a.subarray(0,o);return o=0,n}}(e))},this.sendEnd=function(){n.sendEnd()},this.onack=null},(Guacamole=Guacamole||{}).Touch=function(e){Guacamole.Event.Target.call(this);var t=this,n=Math.floor(16*window.devicePixelRatio);this.touches={},this.activeTouches=0,e.addEventListener("touchstart",(function(a){for(var o=0;o0){c=!0;var e=new XMLHttpRequest;e.open("POST",r+a.uuid),e.withCredentials=d,w(e,v),e.setRequestHeader("Content-type","application/octet-stream"),e.setRequestHeader(g,y),e.onreadystatechange=function(){4===e.readyState&&(S(),200!==e.status?E(e):T())},e.send(h),h=""}else c=!1}function E(e){var t=parseInt(e.getResponseHeader("Guacamole-Status-Code"));if(t){var n=e.getResponseHeader("Guacamole-Error-Message");G(new Guacamole.Status(t,n))}else e.status?G(new Guacamole.Status(Guacamole.Status.Code.fromHTTPCode(e.status),e.statusText)):G(new Guacamole.Status(Guacamole.Status.Code.UPSTREAM_NOT_FOUND))}function I(e){var t=null,n=null,o=0,i=-1,r=0,c=new Array;function h(){if(a.isConnected()){if(!(e.readyState<2)){var o;try{o=e.status}catch(e){o=200}if(n||200!==o||(n=C()),3===e.readyState||4===e.readyState){if(S(),l===s&&(3!==e.readyState||t?4===e.readyState&&t&&clearInterval(t):t=setInterval(h,30)),0===e.status)return void a.disconnect();if(200!==e.status)return void E(e);var u;try{u=e.responseText}catch(e){return}for(;i=r){var d=u.substring(r,i),f=u.substring(i,i+1);if(c.push(d),";"===f){var m=c.shift();a.oninstruction&&a.oninstruction(m,c),c.length=0}r=i+1}var p=u.indexOf(".",r);if(-1===p){r=u.length;break}var v=parseInt(u.substring(i+1,p));if(0===v){t&&clearInterval(t),e.onreadystatechange=null,e.abort(),n&&I(n);break}i=(r=p+1)+v}}}}else null!==t&&clearInterval(t)}e.onreadystatechange=l===s?function(){3===e.readyState&&++o>=2&&(l=u,e.onreadystatechange=h),h()}:h,h()}this.sendMessage=function(){if(a.isConnected()&&0!==arguments.length){for(var e=n(arguments[0]),t=1;t0?i=window.setTimeout(c,n):c()};function d(e){window.clearTimeout(a),window.clearTimeout(o),window.clearTimeout(i),t.state!==Guacamole.Tunnel.State.CLOSED&&(e.code!==Guacamole.Status.Code.SUCCESS&&t.onerror&&t.onerror(e),t.setState(Guacamole.Tunnel.State.CLOSED),n.close())}this.sendMessage=function(e){if(t.isConnected()&&0!==arguments.length){for(var a=i(arguments[0]),o=1;o