1083 lines
753 KiB
JavaScript
1083 lines
753 KiB
JavaScript
/*
|
|
*****************************************************************************
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
this file except in compliance with the License. You may obtain a copy of the
|
|
License at http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
|
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
|
MERCHANTABLITY OR NON-INFRINGEMENT.
|
|
|
|
See the Apache Version 2.0 License for specific language governing permissions
|
|
and limitations under the License.
|
|
*****************************************************************************/
|
|
function aa(b){return b&&b.__esModule&&Object.prototype.hasOwnProperty.call(b,"default")?b["default"]:b}function ba(b,a){return a={exports:{}},b(a,a.exports),a.exports}
|
|
var ca=ba(function(b){!function(a,c){b.exports=c()}(window,function(){return function(a){function b(c){if(d[c])return d[c].exports;var e=d[c]={i:c,l:!1,exports:{}};return a[c].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var d={};return b.m=a,b.c=d,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{enumerable:!0,get:d})},b.r=function(a){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"});Object.defineProperty(a,"__esModule",{value:!0})},
|
|
b.t=function(a,c){if((1&c&&(a=b(a)),8&c)||4&c&&"object"==typeof a&&a&&a.__esModule)return a;var d=Object.create(null);if(b.r(d),Object.defineProperty(d,"default",{enumerable:!0,value:a}),2&c&&"string"!=typeof a)for(var e in a)b.d(d,e,function(b){return a[b]}.bind(null,e));return d},b.n=function(a){var c=a&&a.__esModule?function(){return a.default}:function(){return a};return b.d(c,"a",c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p="",b(b.s=33)}([function(a,b,d){Object.defineProperty(b,
|
|
"__esModule",{value:!0});a=d(14);b.IBufferService=a.createDecorator("BufferService");b.ICoreMouseService=a.createDecorator("CoreMouseService");b.ICoreService=a.createDecorator("CoreService");b.IDirtyRowService=a.createDecorator("DirtyRowService");b.IInstantiationService=a.createDecorator("InstantiationService");b.ILogService=a.createDecorator("LogService");b.IOptionsService=a.createDecorator("OptionsService")},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(){this._listeners=
|
|
[];this._disposed=!1}return Object.defineProperty(a.prototype,"event",{get:function(){var a=this;return this._event||(this._event=function(b){return a._listeners.push(b),{dispose:function(){if(!a._disposed)for(var c=0;c<a._listeners.length;c++)if(a._listeners[c]===b)return void a._listeners.splice(c,1)}}}),this._event},enumerable:!0,configurable:!0}),a.prototype.fire=function(a){for(var b=[],c=0;c<this._listeners.length;c++)b.push(this._listeners[c]);for(c=0;c<b.length;c++)b[c].call(void 0,a)},a.prototype.dispose=
|
|
function(){this._listeners&&(this._listeners.length=0);this._disposed=!0},a}();b.EventEmitter=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(){this._disposables=[];this._isDisposed=!1}return a.prototype.dispose=function(){this._isDisposed=!0;this._disposables.forEach(function(a){return a.dispose()});this._disposables.length=0},a.prototype.register=function(a){this._disposables.push(a)},a.prototype.unregister=function(a){a=this._disposables.indexOf(a);-1!==
|
|
a&&this._disposables.splice(a,1)},a}();b.Disposable=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});b.DEFAULT_COLOR=256;b.DEFAULT_ATTR=256|b.DEFAULT_COLOR<<9;b.CHAR_DATA_ATTR_INDEX=0;b.CHAR_DATA_CHAR_INDEX=1;b.CHAR_DATA_WIDTH_INDEX=2;b.CHAR_DATA_CODE_INDEX=3;b.NULL_CELL_CHAR="";b.NULL_CELL_WIDTH=1;b.NULL_CELL_CODE=0;b.WHITESPACE_CELL_CHAR=" ";b.WHITESPACE_CELL_WIDTH=1;b.WHITESPACE_CELL_CODE=32},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});a=d(14);b.ICharSizeService=
|
|
a.createDecorator("CharSizeService");b.ICoreBrowserService=a.createDecorator("CoreBrowserService");b.IMouseService=a.createDecorator("MouseService");b.IRenderService=a.createDecorator("RenderService");b.ISelectionService=a.createDecorator("SelectionService");b.ISoundService=a.createDecorator("SoundService")},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&
|
|
(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});var f=d(8),h=d(3);a=function(a){function b(){var b=null!==a&&a.apply(this,arguments)||this;return b.content=0,b.fg=0,b.bg=0,b.combinedData="",b}return g(b,a),b.fromCharData=function(a){var c=new b;return c.setFromCharData(a),c},b.prototype.isCombined=function(){return 2097152&this.content},b.prototype.getWidth=
|
|
function(){return this.content>>22},b.prototype.getChars=function(){return 2097152&this.content?this.combinedData:2097151&this.content?f.stringFromCodePoint(2097151&this.content):""},b.prototype.getCode=function(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content},b.prototype.setFromCharData=function(a){this.fg=a[h.CHAR_DATA_ATTR_INDEX];this.bg=0;var b=!1;if(2<a[h.CHAR_DATA_CHAR_INDEX].length)b=!0;else if(2===a[h.CHAR_DATA_CHAR_INDEX].length){var c=
|
|
a[h.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=c&&56319>=c){var d=a[h.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=d&&57343>=d?this.content=1024*(c-55296)+d-56320+65536|a[h.CHAR_DATA_WIDTH_INDEX]<<22:b=!0}else b=!0}else this.content=a[h.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|a[h.CHAR_DATA_WIDTH_INDEX]<<22;b&&(this.combinedData=a[h.CHAR_DATA_CHAR_INDEX],this.content=2097152|a[h.CHAR_DATA_WIDTH_INDEX]<<22)},b.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},
|
|
b}(d(6).AttributeData);b.CellData=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(){this.bg=this.fg=0}return a.toColorRGB=function(a){return[a>>>16&255,a>>>8&255,255&a]},a.fromColorRGB=function(a){return(255&a[0])<<16|(255&a[1])<<8|255&a[2]},a.prototype.clone=function(){var b=new a;return b.fg=this.fg,b.bg=this.bg,b},a.prototype.isInverse=function(){return 67108864&this.fg},a.prototype.isBold=function(){return 134217728&this.fg},a.prototype.isUnderline=function(){return 268435456&
|
|
this.fg},a.prototype.isBlink=function(){return 536870912&this.fg},a.prototype.isInvisible=function(){return 1073741824&this.fg},a.prototype.isItalic=function(){return 67108864&this.bg},a.prototype.isDim=function(){return 134217728&this.bg},a.prototype.getFgColorMode=function(){return 50331648&this.fg},a.prototype.getBgColorMode=function(){return 50331648&this.bg},a.prototype.isFgRGB=function(){return 50331648==(50331648&this.fg)},a.prototype.isBgRGB=function(){return 50331648==(50331648&this.bg)},
|
|
a.prototype.isFgPalette=function(){return 16777216==(50331648&this.fg)||33554432==(50331648&this.fg)},a.prototype.isBgPalette=function(){return 16777216==(50331648&this.bg)||33554432==(50331648&this.bg)},a.prototype.isFgDefault=function(){return 0==(50331648&this.fg)},a.prototype.isBgDefault=function(){return 0==(50331648&this.bg)},a.prototype.getFgColor=function(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}},a.prototype.getBgColor=
|
|
function(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}},a}();b.AttributeData=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});b.addDisposableDomListener=function(a,b,c,f){return a.addEventListener(b,c,f),{dispose:function(){c&&a.removeEventListener(b,c,f)}}}},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});b.stringFromCodePoint=function(a){return 65535<a?(a-=65536,String.fromCharCode(55296+
|
|
(a>>10))+String.fromCharCode(a%1024+56320)):String.fromCharCode(a)};b.utf32ToString=function(a,b,c){void 0===b&&(b=0);void 0===c&&(c=a.length);for(var d="";b<c;++b){var e=a[b];65535<e?(e-=65536,d+=String.fromCharCode(55296+(e>>10))+String.fromCharCode(e%1024+56320)):d+=String.fromCharCode(e)}return d};a=function(){function a(){this._interim=0}return a.prototype.clear=function(){this._interim=0},a.prototype.decode=function(a,b){var c=a.length;if(!c)return 0;var d=0,e=0;for(this._interim&&(56320<=(q=
|
|
a.charCodeAt(e++))&&57343>=q?b[d++]=1024*(this._interim-55296)+q-56320+65536:(b[d++]=this._interim,b[d++]=q),this._interim=0);e<c;++e){var g=a.charCodeAt(e);if(55296<=g&&56319>=g){if(++e>=c)return this._interim=g,d;var q;56320<=(q=a.charCodeAt(e))&&57343>=q?b[d++]=1024*(g-55296)+q-56320+65536:(b[d++]=g,b[d++]=q)}else b[d++]=g}return d},a}();b.StringToUtf32=a;a=function(){function a(){this.interim=new Uint8Array(3)}return a.prototype.clear=function(){this.interim.fill(0)},a.prototype.decode=function(a,
|
|
b){var c=a.length;if(!c)return 0;var d,e,g,q,t=0,v=0,l=0;if(this.interim[0]){var n=!1,y=this.interim[0];y&=192==(224&y)?31:224==(240&y)?15:7;for(var B=0,O;(O=63&this.interim[++B])&&4>B;)y<<=6,y|=O;for(var X=192==(224&this.interim[0])?2:224==(240&this.interim[0])?3:4,M=X-B;l<M;){if(l>=c)return 0;if(128!=(192&(O=a[l++]))){l--;n=!0;break}this.interim[B++]=O;y<<=6;y|=63&O}n||(2===X?128>y?l--:b[t++]=y:3===X?2048>y||55296<=y&&57343>=y||(b[t++]=y):65536>y||1114111<y||(b[t++]=y));this.interim.fill(0)}for(n=
|
|
c-4;l<c;){for(;!(!(l<n)||128&(d=a[l])||128&(e=a[l+1])||128&(g=a[l+2])||128&(q=a[l+3]));)b[t++]=d,b[t++]=e,b[t++]=g,b[t++]=q,l+=4;if(128>(d=a[l++]))b[t++]=d;else if(192==(224&d)){if(l>=c)return this.interim[0]=d,t;128!=(192&(e=a[l++]))?l--:128>(v=(31&d)<<6|63&e)?l--:b[t++]=v}else if(224==(240&d)){if(l>=c)return this.interim[0]=d,t;if(128!=(192&(e=a[l++])))l--;else{if(l>=c)return this.interim[0]=d,this.interim[1]=e,t;128!=(192&(g=a[l++]))?l--:2048>(v=(15&d)<<12|(63&e)<<6|63&g)||55296<=v&&57343>=v||
|
|
(b[t++]=v)}}else if(240==(248&d)){if(l>=c)return this.interim[0]=d,t;if(128!=(192&(e=a[l++])))l--;else{if(l>=c)return this.interim[0]=d,this.interim[1]=e,t;if(128!=(192&(g=a[l++])))l--;else{if(l>=c)return this.interim[0]=d,this.interim[1]=e,this.interim[2]=g,t;128!=(192&(q=a[l++]))?l--:65536>(v=(7&d)<<18|(63&e)<<12|(63&g)<<6|63&q)||1114111<v||(b[t++]=v)}}}}return t},a}();b.Utf8ToUtf32=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});b.INVERTED_DEFAULT_COLOR=257;b.DIM_OPACITY=.5;b.CHAR_ATLAS_CELL_SPACING=
|
|
1},function(a,b){function c(a){a=a.toString(16);return 2>a.length?"0"+a:a}function e(a,b,d,e){return void 0!==e?"#"+c(a)+c(b)+c(d)+c(e):"#"+c(a)+c(b)+c(d)}function g(a,b,c,d){return void 0===d&&(d=255),(a<<24|b<<16|c<<8|d)>>>0}function f(a){return[a>>24&255,a>>16&255,a>>8&255,255&a]}function h(a){return k(a>>16&255,a>>8&255,255&a)}function k(a,b,c){a/=255;b/=255;c/=255;return.2126*(.03928>=a?a/12.92:Math.pow((a+.055)/1.055,2.4))+.7152*(.03928>=b?b/12.92:Math.pow((b+.055)/1.055,2.4))+.0722*(.03928>=
|
|
c?c/12.92:Math.pow((c+.055)/1.055,2.4))}function r(a,b){return a<b?(b+.05)/(a+.05):(a+.05)/(b+.05)}function q(a,b,c){return{css:e(a,b,c),rgba:g(a,b,c)}}function t(a,b,c){var d=h(a>>8),e=h(b>>8);if(r(d,e)<c)return e<d?v(a,b,c):l(a,b,c)}function v(a,b,c){var d=a>>24&255,e=a>>16&255;a=a>>8&255;var g=b>>24&255,f=b>>16&255;b=b>>8&255;for(var l=r(k(g,b,f),k(d,e,a));l<c&&(0<g||0<f||0<b);)g-=Math.max(0,Math.ceil(.1*g)),f-=Math.max(0,Math.ceil(.1*f)),l=r(k(g,b-=Math.max(0,Math.ceil(.1*b)),f),k(d,e,a));return(g<<
|
|
24|f<<16|b<<8|255)>>>0}function l(a,b,c){var d=a>>24&255,e=a>>16&255;a=a>>8&255;var g=b>>24&255,f=b>>16&255;b=b>>8&255;for(var l=r(k(g,b,f),k(d,e,a));l<c&&(255>g||255>f||255>b);)g=Math.min(255,g+Math.ceil(.1*(255-g))),f=Math.min(255,f+Math.ceil(.1*(255-f))),l=r(k(g,b=Math.min(255,b+Math.ceil(.1*(255-b))),f),k(d,e,a));return(g<<24|f<<16|b<<8|255)>>>0}Object.defineProperty(b,"__esModule",{value:!0});b.blend=function(a,b){var c=(255&b.rgba)/255;if(1===c)return{css:b.css,rgba:b.rgba};var d=a.rgba>>24&
|
|
255,f=a.rgba>>16&255;a=a.rgba>>8&255;d+=Math.round(((b.rgba>>24&255)-d)*c);f+=Math.round(((b.rgba>>16&255)-f)*c);b=a+Math.round(((b.rgba>>8&255)-a)*c);return{css:e(d,f,b),rgba:g(d,f,b)}};b.fromCss=function(a){return{css:a,rgba:(parseInt(a.slice(1),16)<<8|255)>>>0}};b.toPaddedHex=c;b.toCss=e;b.toRgba=g;b.fromRgba=f;b.opaque=function(a){a=(255|a.rgba)>>>0;var b=f(a);return{css:e(b[0],b[1],b[2]),rgba:a}};b.rgbRelativeLuminance=h;b.rgbRelativeLuminance2=k;b.contrastRatio=r;b.rgbaToColor=q;b.ensureContrastRatioRgba=
|
|
t;b.ensureContrastRatio=function(a,b,c){if(a=t(a.rgba,b.rgba,c))return q(a>>24&255,a>>16&255,a>>8&255)};b.reduceLuminance=v;b.increaseLuminance=l},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});var c=(a="undefined"==typeof navigator)?"node":navigator.userAgent;a=a?"node":navigator.platform;b.isFirefox=!!~c.indexOf("Firefox");b.isSafari=/^((?!chrome|android).)*safari/i.test(c);c=0<=["Macintosh","MacIntel","MacPPC","Mac68K"].indexOf(a);b.isMac=c;b.isIpad="iPad"===a;b.isIphone="iPhone"===
|
|
a;c=0<=["Windows","Win16","Win32","WinCE"].indexOf(a);b.isWindows=c;b.isLinux=0<=a.indexOf("Linux")},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});(function(a){a.NUL="\x00";a.SOH="\u0001";a.STX="\u0002";a.ETX="\u0003";a.EOT="\u0004";a.ENQ="\u0005";a.ACK="\u0006";a.BEL="\u0007";a.BS="\b";a.HT="\t";a.LF="\n";a.VT="\v";a.FF="\f";a.CR="\r";a.SO="\u000e";a.SI="\u000f";a.DLE="\u0010";a.DC1="\u0011";a.DC2="\u0012";a.DC3="\u0013";a.DC4="\u0014";a.NAK="\u0015";a.SYN="\u0016";a.ETB="\u0017";
|
|
a.CAN="\u0018";a.EM="\u0019";a.SUB="\u001a";a.ESC="\u001b";a.FS="\u001c";a.GS="\u001d";a.RS="\u001e";a.US="\u001f";a.SP=" ";a.DEL="\u007f"})(b.C0||(b.C0={}));(function(a){a.PAD="\u0080";a.HOP="\u0081";a.BPH="\u0082";a.NBH="\u0083";a.IND="\u0084";a.NEL="\u0085";a.SSA="\u0086";a.ESA="\u0087";a.HTS="\u0088";a.HTJ="\u0089";a.VTS="\u008a";a.PLD="\u008b";a.PLU="\u008c";a.RI="\u008d";a.SS2="\u008e";a.SS3="\u008f";a.DCS="\u0090";a.PU1="\u0091";a.PU2="\u0092";a.STS="\u0093";a.CCH="\u0094";a.MW="\u0095";a.SPA=
|
|
"\u0096";a.EPA="\u0097";a.SOS="\u0098";a.SGCI="\u0099";a.SCI="\u009a";a.CSI="\u009b";a.ST="\u009c";a.OSC="\u009d";a.PM="\u009e";a.APC="\u009f"})(b.C1||(b.C1={}))},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(3),g=d(9),f=d(24),h=d(6),k=d(27),r=d(10);a=function(){function a(a,b,c,d,e,g,f,k){this._container=a;this._alpha=d;this._colors=e;this._rendererId=g;this._bufferService=f;this._optionsService=k;this._scaledCharTop=this._scaledCharLeft=this._scaledCellHeight=this._scaledCellWidth=
|
|
this._scaledCharHeight=this._scaledCharWidth=0;this._currentGlyphIdentifier={chars:"",code:0,bg:0,fg:0,bold:!1,dim:!1,italic:!1};this._canvas=document.createElement("canvas");this._canvas.classList.add("xterm-"+b+"-layer");this._canvas.style.zIndex=c.toString();this._initCanvas();this._container.appendChild(this._canvas)}return a.prototype.dispose=function(){var a;this._container.removeChild(this._canvas);null===(a=this._charAtlas)||void 0===a||a.dispose()},a.prototype._initCanvas=function(){this._ctx=
|
|
k.throwIfFalsy(this._canvas.getContext("2d",{alpha:this._alpha}));this._alpha||this._clearAll()},a.prototype.onOptionsChanged=function(){},a.prototype.onBlur=function(){},a.prototype.onFocus=function(){},a.prototype.onCursorMove=function(){},a.prototype.onGridChanged=function(){},a.prototype.onSelectionChanged=function(){},a.prototype.setColors=function(a){this._refreshCharAtlas(a)},a.prototype._setTransparency=function(a){if(a!==this._alpha){var b=this._canvas;this._alpha=a;this._canvas=this._canvas.cloneNode();
|
|
this._initCanvas();this._container.replaceChild(this._canvas,b);this._refreshCharAtlas(this._colors);this.onGridChanged(0,this._bufferService.rows-1)}},a.prototype._refreshCharAtlas=function(a){0>=this._scaledCharWidth&&0>=this._scaledCharHeight||(this._charAtlas=f.acquireCharAtlas(this._optionsService.options,this._rendererId,a,this._scaledCharWidth,this._scaledCharHeight),this._charAtlas.warmUp())},a.prototype.resize=function(a){this._scaledCellWidth=a.scaledCellWidth;this._scaledCellHeight=a.scaledCellHeight;
|
|
this._scaledCharWidth=a.scaledCharWidth;this._scaledCharHeight=a.scaledCharHeight;this._scaledCharLeft=a.scaledCharLeft;this._scaledCharTop=a.scaledCharTop;this._canvas.width=a.scaledCanvasWidth;this._canvas.height=a.scaledCanvasHeight;this._canvas.style.width=a.canvasWidth+"px";this._canvas.style.height=a.canvasHeight+"px";this._alpha||this._clearAll();this._refreshCharAtlas(this._colors)},a.prototype._fillCells=function(a,b,c,d){this._ctx.fillRect(a*this._scaledCellWidth,b*this._scaledCellHeight,
|
|
c*this._scaledCellWidth,d*this._scaledCellHeight)},a.prototype._fillBottomLineAtCells=function(a,b,c){void 0===c&&(c=1);this._ctx.fillRect(a*this._scaledCellWidth,(b+1)*this._scaledCellHeight-window.devicePixelRatio-1,c*this._scaledCellWidth,window.devicePixelRatio)},a.prototype._fillLeftLineAtCell=function(a,b){this._ctx.fillRect(a*this._scaledCellWidth,b*this._scaledCellHeight,window.devicePixelRatio,this._scaledCellHeight)},a.prototype._strokeRectAtCell=function(a,b,c,d){this._ctx.lineWidth=window.devicePixelRatio;
|
|
this._ctx.strokeRect(a*this._scaledCellWidth+window.devicePixelRatio/2,b*this._scaledCellHeight+window.devicePixelRatio/2,c*this._scaledCellWidth-window.devicePixelRatio,d*this._scaledCellHeight-window.devicePixelRatio)},a.prototype._clearAll=function(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))},a.prototype._clearCells=function(a,b,c,d){this._alpha?this._ctx.clearRect(a*
|
|
this._scaledCellWidth,b*this._scaledCellHeight,c*this._scaledCellWidth,d*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(a*this._scaledCellWidth,b*this._scaledCellHeight,c*this._scaledCellWidth,d*this._scaledCellHeight))},a.prototype._fillCharTrueColor=function(a,b,c){this._ctx.font=this._getFont(!1,!1);this._ctx.textBaseline="middle";this._clipRow(c);this._ctx.fillText(a.getChars(),b*this._scaledCellWidth+this._scaledCharLeft,c*this._scaledCellHeight+this._scaledCharTop+
|
|
this._scaledCharHeight/2)},a.prototype._drawChars=function(a,b,d){var e,f,l=this._getContrastColor(a);l||a.isFgRGB()||a.isBgRGB()?this._drawUncachedChars(a,b,d,l):(a.isInverse()?(e=a.isBgDefault()?g.INVERTED_DEFAULT_COLOR:a.getBgColor(),f=a.isFgDefault()?g.INVERTED_DEFAULT_COLOR:a.getFgColor()):(f=a.isBgDefault()?c.DEFAULT_COLOR:a.getBgColor(),e=a.isFgDefault()?c.DEFAULT_COLOR:a.getFgColor()),e+=this._optionsService.options.drawBoldTextInBrightColors&&a.isBold()&&8>e?8:0,this._currentGlyphIdentifier.chars=
|
|
a.getChars()||c.WHITESPACE_CELL_CHAR,this._currentGlyphIdentifier.code=a.getCode()||c.WHITESPACE_CELL_CODE,this._currentGlyphIdentifier.bg=f,this._currentGlyphIdentifier.fg=e,this._currentGlyphIdentifier.bold=!!a.isBold(),this._currentGlyphIdentifier.dim=!!a.isDim(),this._currentGlyphIdentifier.italic=!!a.isItalic(),this._charAtlas&&this._charAtlas.draw(this._ctx,this._currentGlyphIdentifier,b*this._scaledCellWidth+this._scaledCharLeft,d*this._scaledCellHeight+this._scaledCharTop)||this._drawUncachedChars(a,
|
|
b,d))},a.prototype._drawUncachedChars=function(a,b,c,d){(this._ctx.save(),this._ctx.font=this._getFont(!!a.isBold(),!!a.isItalic()),this._ctx.textBaseline="middle",a.isInverse())?d?this._ctx.fillStyle=d.css:a.isBgDefault()?this._ctx.fillStyle=r.opaque(this._colors.background).css:a.isBgRGB()?this._ctx.fillStyle="rgb("+h.AttributeData.toColorRGB(a.getBgColor()).join(",")+")":(d=a.getBgColor(),this._optionsService.options.drawBoldTextInBrightColors&&a.isBold()&&8>d&&(d+=8),this._ctx.fillStyle=this._colors.ansi[d].css):
|
|
d?this._ctx.fillStyle=d.css:a.isFgDefault()?this._ctx.fillStyle=this._colors.foreground.css:a.isFgRGB()?this._ctx.fillStyle="rgb("+h.AttributeData.toColorRGB(a.getFgColor()).join(",")+")":(d=a.getFgColor(),this._optionsService.options.drawBoldTextInBrightColors&&a.isBold()&&8>d&&(d+=8),this._ctx.fillStyle=this._colors.ansi[d].css);this._clipRow(c);a.isDim()&&(this._ctx.globalAlpha=g.DIM_OPACITY);this._ctx.fillText(a.getChars(),b*this._scaledCellWidth+this._scaledCharLeft,c*this._scaledCellHeight+
|
|
this._scaledCharTop+this._scaledCharHeight/2);this._ctx.restore()},a.prototype._clipRow=function(a){this._ctx.beginPath();this._ctx.rect(0,a*this._scaledCellHeight,this._bufferService.cols*this._scaledCellWidth,this._scaledCellHeight);this._ctx.clip()},a.prototype._getFont=function(a,b){return(b?"italic":"")+" "+(a?this._optionsService.options.fontWeightBold:this._optionsService.options.fontWeight)+" "+this._optionsService.options.fontSize*window.devicePixelRatio+"px "+this._optionsService.options.fontFamily},
|
|
a.prototype._getContrastColor=function(a){if(1!==this._optionsService.options.minimumContrastRatio){var b=this._colors.contrastCache.getColor(a.bg,a.fg);if(void 0!==b)return b||void 0;b=a.getFgColor();var c=a.getFgColorMode(),d=a.getBgColor(),e=a.getBgColorMode(),g=!!a.isInverse(),f=!!a.isInverse();if(g){var k=b;b=d;d=k;k=c;c=e;e=k}d=this._resolveBackgroundRgba(e,d,g);b=this._resolveForegroundRgba(c,b,g,f);if(b=r.ensureContrastRatioRgba(d,b,this._optionsService.options.minimumContrastRatio))return b=
|
|
{css:r.toCss(b>>24&255,b>>16&255,b>>8&255),rgba:b},this._colors.contrastCache.setColor(a.bg,a.fg,b),b;this._colors.contrastCache.setColor(a.bg,a.fg,null)}},a.prototype._resolveBackgroundRgba=function(a,b,c){switch(a){case 16777216:case 33554432:return this._colors.ansi[b].rgba;case 50331648:return b<<8;default:return c?this._colors.foreground.rgba:this._colors.background.rgba}},a.prototype._resolveForegroundRgba=function(a,b,c,d){switch(a){case 16777216:case 33554432:return this._optionsService.options.drawBoldTextInBrightColors&&
|
|
d&&8>b&&(b+=8),this._colors.ansi[b].rgba;case 50331648:return b<<8;default:return c?this._colors.background.rgba:this._colors.foreground.rgba}},a}();b.BaseRenderLayer=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});b.serviceRegistry=new Map;b.getServiceDependencies=function(a){return a.di$dependencies||[]};b.createDecorator=function(a){function c(a,b,d){if(3!==arguments.length)throw Error("@IServiceName-decorator can only be used to decorate a parameter");var e=c;a.di$target===a?
|
|
a.di$dependencies.push({id:e,index:d}):(a.di$dependencies=[{id:e,index:d}],a.di$target=a)}return b.serviceRegistry.has(a)?b.serviceRegistry.get(a):(c.toString=function(){return a},b.serviceRegistry.set(a,c),c)}},function(a,b){function c(a,b,c,d){if(void 0===c&&(c=0),void 0===d&&(d=a.length),c>=a.length)return a;c=(a.length+c)%a.length;for(d=d>=a.length?a.length:(a.length+d)%a.length;c<d;++c)a[c]=b;return a}Object.defineProperty(b,"__esModule",{value:!0});b.fill=function(a,b,d,h){return a.fill?a.fill(b,
|
|
d,h):c(a,b,d,h)};b.fillFallback=c;b.concat=function(a,b){var c=new a.constructor(a.length+b.length);return c.set(a),c.set(b,a.length),c}},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(8),g=d(3),f=d(5);a=d(6);b.DEFAULT_ATTR_DATA=Object.freeze(new a.AttributeData);a=function(){function a(a,b,c){void 0===c&&(c=!1);this.isWrapped=c;this._combined={};this._data=new Uint32Array(3*a);b=b||f.CellData.fromCharData([0,g.NULL_CELL_CHAR,g.NULL_CELL_WIDTH,g.NULL_CELL_CODE]);for(c=0;c<
|
|
a;++c)this.setCell(c,b);this.length=a}return a.prototype.get=function(a){var b=this._data[3*a],d=2097151&b;return[this._data[3*a+1],2097152&b?this._combined[a]:d?c.stringFromCodePoint(d):"",b>>22,2097152&b?this._combined[a].charCodeAt(this._combined[a].length-1):d]},a.prototype.set=function(a,b){this._data[3*a+1]=b[g.CHAR_DATA_ATTR_INDEX];1<b[g.CHAR_DATA_CHAR_INDEX].length?(this._combined[a]=b[1],this._data[3*a]=2097152|a|b[g.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*a]=b[g.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|
|
|
b[g.CHAR_DATA_WIDTH_INDEX]<<22},a.prototype.getWidth=function(a){return this._data[3*a]>>22},a.prototype.hasWidth=function(a){return 12582912&this._data[3*a]},a.prototype.getFg=function(a){return this._data[3*a+1]},a.prototype.getBg=function(a){return this._data[3*a+2]},a.prototype.hasContent=function(a){return 4194303&this._data[3*a]},a.prototype.getCodePoint=function(a){var b=this._data[3*a];return 2097152&b?this._combined[a].charCodeAt(this._combined[a].length-1):2097151&b},a.prototype.isCombined=
|
|
function(a){return 2097152&this._data[3*a]},a.prototype.getString=function(a){var b=this._data[3*a];return 2097152&b?this._combined[a]:2097151&b?c.stringFromCodePoint(2097151&b):""},a.prototype.loadCell=function(a,b){var c=3*a;return b.content=this._data[c+0],b.fg=this._data[c+1],b.bg=this._data[c+2],2097152&b.content&&(b.combinedData=this._combined[a]),b},a.prototype.setCell=function(a,b){2097152&b.content&&(this._combined[a]=b.combinedData);this._data[3*a]=b.content;this._data[3*a+1]=b.fg;this._data[3*
|
|
a+2]=b.bg},a.prototype.setCellFromCodePoint=function(a,b,c,d,e){this._data[3*a]=b|c<<22;this._data[3*a+1]=d;this._data[3*a+2]=e},a.prototype.addCodepointToCell=function(a,b){var d=this._data[3*a];2097152&d?this._combined[a]+=c.stringFromCodePoint(b):(2097151&d?(this._combined[a]=c.stringFromCodePoint(2097151&d)+c.stringFromCodePoint(b),d&=-2097152,d|=2097152):d=b|4194304,this._data[3*a]=d)},a.prototype.insertCells=function(a,b,c){if(a%=this.length,b<this.length-a){for(var d=new f.CellData,e=this.length-
|
|
a-b-1;0<=e;--e)this.setCell(a+b+e,this.loadCell(a+e,d));for(e=0;e<b;++e)this.setCell(a+e,c)}else for(e=a;e<this.length;++e)this.setCell(e,c)},a.prototype.deleteCells=function(a,b,c){if(a%=this.length,b<this.length-a){for(var d=new f.CellData,e=0;e<this.length-a-b;++e)this.setCell(a+e,this.loadCell(a+b+e,d));e=this.length-b}else e=a;for(;e<this.length;++e)this.setCell(e,c)},a.prototype.replaceCells=function(a,b,c){for(;a<b&&a<this.length;)this.setCell(a++,c)},a.prototype.resize=function(a,b){if(a!==
|
|
this.length){if(a>this.length){var c=new Uint32Array(3*a);this.length&&(3*a<this._data.length?c.set(this._data.subarray(0,3*a)):c.set(this._data));this._data=c;for(c=this.length;c<a;++c)this.setCell(c,b)}else if(a)for((c=new Uint32Array(3*a)).set(this._data.subarray(0,3*a)),this._data=c,b=Object.keys(this._combined),c=0;c<b.length;c++){var d=parseInt(b[c],10);d>=a&&delete this._combined[d]}else this._data=new Uint32Array(0),this._combined={};this.length=a}},a.prototype.fill=function(a){this._combined=
|
|
{};for(var b=0;b<this.length;++b)this.setCell(b,a)},a.prototype.copyFrom=function(a){for(var b in this.length!==a.length?this._data=new Uint32Array(a._data):this._data.set(a._data),this.length=a.length,this._combined={},a._combined)this._combined[b]=a._combined[b];this.isWrapped=a.isWrapped},a.prototype.clone=function(){var b=new a(0),c;for(c in b._data=new Uint32Array(this._data),b.length=this.length,this._combined)b._combined[c]=this._combined[c];return b.isWrapped=this.isWrapped,b},a.prototype.getTrimmedLength=
|
|
function(){for(var a=this.length-1;0<=a;--a)if(4194303&this._data[3*a])return a+(this._data[3*a]>>22);return 0},a.prototype.copyCellsFrom=function(a,b,c,d,e){var g=a._data;if(e)for(var f=d-1;0<=f;f--)for(e=0;3>e;e++)this._data[3*(c+f)+e]=g[3*(b+f)+e];else for(f=0;f<d;f++)for(e=0;3>e;e++)this._data[3*(c+f)+e]=g[3*(b+f)+e];d=Object.keys(a._combined);for(e=0;e<d.length;e++)g=parseInt(d[e],10),g>=b&&(this._combined[g-b+c]=a._combined[g])},a.prototype.translateToString=function(a,b,d){void 0===a&&(a=!1);
|
|
void 0===b&&(b=0);void 0===d&&(d=this.length);a&&(d=Math.min(d,this.getTrimmedLength()));for(a="";b<d;){var e=this._data[3*b],f=2097151&e;a+=2097152&e?this._combined[b]:f?c.stringFromCodePoint(f):g.WHITESPACE_CELL_CHAR;b+=e>>22||1}return a},a}();b.BufferLine=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});b.promptLabel="Terminal input";b.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});
|
|
b.CHARSETS={};b.DEFAULT_CHARSET=b.CHARSETS.B;b.CHARSETS[0]={"`":"\u25c6",a:"\u2592",b:"\t",c:"\f",d:"\r",e:"\n",f:"\u00b0",g:"\u00b1",h:"\u2424",i:"\v",j:"\u2518",k:"\u2510",l:"\u250c",m:"\u2514",n:"\u253c",o:"\u23ba",p:"\u23bb",q:"\u2500",r:"\u23bc",s:"\u23bd",t:"\u251c",u:"\u2524",v:"\u2534",w:"\u252c",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03c0","|":"\u2260","}":"\u00a3","~":"\u00b7"};b.CHARSETS.A={"#":"\u00a3"};b.CHARSETS.B=null;b.CHARSETS[4]={"#":"\u00a3","@":"\u00be","[":"ij","\\":"\u00bd",
|
|
"]":"|","{":"\u00a8","|":"f","}":"\u00bc","~":"\u00b4"};b.CHARSETS.C=b.CHARSETS[5]={"[":"\u00c4","\\":"\u00d6","]":"\u00c5","^":"\u00dc","`":"\u00e9","{":"\u00e4","|":"\u00f6","}":"\u00e5","~":"\u00fc"};b.CHARSETS.R={"#":"\u00a3","@":"\u00e0","[":"\u00b0","\\":"\u00e7","]":"\u00a7","{":"\u00e9","|":"\u00f9","}":"\u00e8","~":"\u00a8"};b.CHARSETS.Q={"@":"\u00e0","[":"\u00e2","\\":"\u00e7","]":"\u00ea","^":"\u00ee","`":"\u00f4","{":"\u00e9","|":"\u00f9","}":"\u00e8","~":"\u00fb"};b.CHARSETS.K={"@":"\u00a7",
|
|
"[":"\u00c4","\\":"\u00d6","]":"\u00dc","{":"\u00e4","|":"\u00f6","}":"\u00fc","~":"\u00df"};b.CHARSETS.Y={"#":"\u00a3","@":"\u00a7","[":"\u00b0","\\":"\u00e7","]":"\u00e9","`":"\u00f9","{":"\u00e0","|":"\u00f2","}":"\u00e8","~":"\u00ec"};b.CHARSETS.E=b.CHARSETS[6]={"@":"\u00c4","[":"\u00c6","\\":"\u00d8","]":"\u00c5","^":"\u00dc","`":"\u00e4","{":"\u00e6","|":"\u00f8","}":"\u00e5","~":"\u00fc"};b.CHARSETS.Z={"#":"\u00a3","@":"\u00a7","[":"\u00a1","\\":"\u00d1","]":"\u00bf","{":"\u00b0","|":"\u00f1",
|
|
"}":"\u00e7"};b.CHARSETS.H=b.CHARSETS[7]={"@":"\u00c9","[":"\u00c4","\\":"\u00d6","]":"\u00c5","^":"\u00dc","`":"\u00e9","{":"\u00e4","|":"\u00f6","}":"\u00e5","~":"\u00fc"};b.CHARSETS["="]={"#":"\u00f9","@":"\u00e0","[":"\u00e9","\\":"\u00e7","]":"\u00ea","^":"\u00ee",_:"\u00e8","`":"\u00f4","{":"\u00e4","|":"\u00f6","}":"\u00fc","~":"\u00fb"}},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(15);b.wcwidth=function(a){var b=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,
|
|
1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,
|
|
2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,
|
|
4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],
|
|
d=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],e=0|a.control,g=new Uint8Array(65536);c.fill(g,1);g[0]=a.nul;c.fill(g,a.control,1,32);c.fill(g,a.control,127,160);c.fill(g,2,4352,4448);g[9001]=2;g[9002]=2;c.fill(g,2,11904,42192);g[12351]=1;c.fill(g,2,44032,55204);c.fill(g,2,63744,64256);c.fill(g,2,65040,65050);c.fill(g,2,65072,65136);c.fill(g,2,65280,
|
|
65377);c.fill(g,2,65504,65511);for(a=0;a<b.length;++a)c.fill(g,0,b[a][0],b[a][1]+1);return function(a){if(32>a)a=0|e;else if(127>a)a=1;else if(65536>a)a=g[a];else{a:{var b=a;var c,f=0,q=d.length-1;if(!(b<d[0][0]||b>d[q][1]))for(;q>=f;)if(b>d[c=f+q>>1][1])f=c+1;else{if(!(b<d[c][0])){b=!0;break a}q=c-1}b=!1}a=b?0:131072<=a&&196605>=a||196608<=a&&262141>=a?2:1}return a}}({nul:0,control:0});b.getStringCellWidth=function(a){for(var c=0,d=a.length,e=0;e<d;++e){var g=a.charCodeAt(e);if(55296<=g&&56319>=
|
|
g){if(++e>=d)return c+b.wcwidth(g);var q=a.charCodeAt(e);56320<=q&&57343>=q?g=1024*(g-55296)+q-56320+65536:c+=b.wcwidth(q)}c+=b.wcwidth(g)}return c}},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(a,b){if(void 0===a&&(a=32),void 0===b&&(b=32),this.maxLength=a,this.maxSubParamsLength=b,256<b)throw Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(a);this.length=0;this._subParams=new Int32Array(b);this._subParamsLength=0;this._subParamsIdx=
|
|
new Uint16Array(a);this._digitIsSub=this._rejectSubDigits=this._rejectDigits=!1}return a.fromArray=function(b){var c=new a;if(!b.length)return c;for(var d=b[0]instanceof Array?1:0;d<b.length;++d){var e=b[d];if(e instanceof Array)for(var k=0;k<e.length;++k)c.addSubParam(e[k]);else c.addParam(e)}return c},a.prototype.clone=function(){var b=new a(this.maxLength,this.maxSubParamsLength);return b.params.set(this.params),b.length=this.length,b._subParams.set(this._subParams),b._subParamsLength=this._subParamsLength,
|
|
b._subParamsIdx.set(this._subParamsIdx),b._rejectDigits=this._rejectDigits,b._rejectSubDigits=this._rejectSubDigits,b._digitIsSub=this._digitIsSub,b},a.prototype.toArray=function(){for(var a=[],b=0;b<this.length;++b){a.push(this.params[b]);var c=this._subParamsIdx[b]>>8,d=255&this._subParamsIdx[b];0<d-c&&a.push(Array.prototype.slice.call(this._subParams,c,d))}return a},a.prototype.reset=function(){this._subParamsLength=this.length=0;this._digitIsSub=this._rejectSubDigits=this._rejectDigits=!1},a.prototype.addParam=
|
|
function(a){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(-1>a)throw Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength;this.params[this.length++]=2147483647<a?2147483647:a}},a.prototype.addSubParam=function(a){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(-1>a)throw Error("values lesser than -1 are not allowed");
|
|
this._subParams[this._subParamsLength++]=2147483647<a?2147483647:a;this._subParamsIdx[this.length-1]++}},a.prototype.hasSubParams=function(a){return 0<(255&this._subParamsIdx[a])-(this._subParamsIdx[a]>>8)},a.prototype.getSubParams=function(a){var b=this._subParamsIdx[a]>>8;a=255&this._subParamsIdx[a];return 0<a-b?this._subParams.subarray(b,a):null},a.prototype.getSubParamsAll=function(){for(var a={},b=0;b<this.length;++b){var c=this._subParamsIdx[b]>>8,d=255&this._subParamsIdx[b];0<d-c&&(a[b]=this._subParams.slice(c,
|
|
d))}return a},a.prototype.addDigit=function(a){var b;if(!(this._rejectDigits||!(b=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)){var c=this._digitIsSub?this._subParams:this.params,d=c[b-1];c[b-1]=~d?Math.min(10*d+a,2147483647):a}},a}();b.Params=a},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(22),g=d(8);a=function(){function a(){this._state=0;this._id=-1;this._handlers=Object.create(null);this._handlerFb=function(){}}return a.prototype.addHandler=
|
|
function(a,b){void 0===this._handlers[a]&&(this._handlers[a]=[]);var c=this._handlers[a];return c.push(b),{dispose:function(){var a=c.indexOf(b);-1!==a&&c.splice(a,1)}}},a.prototype.setHandler=function(a,b){this._handlers[a]=[b]},a.prototype.clearHandler=function(a){this._handlers[a]&&delete this._handlers[a]},a.prototype.setHandlerFallback=function(a){this._handlerFb=a},a.prototype.dispose=function(){this._handlers=Object.create(null);this._handlerFb=function(){}},a.prototype.reset=function(){2===
|
|
this._state&&this.end(!1);this._id=-1;this._state=0},a.prototype._start=function(){var a=this._handlers[this._id];if(a)for(var b=a.length-1;0<=b;b--)a[b].start();else this._handlerFb(this._id,"START")},a.prototype._put=function(a,b,c){var d=this._handlers[this._id];if(d)for(var e=d.length-1;0<=e;e--)d[e].put(a,b,c);else this._handlerFb(this._id,"PUT",g.utf32ToString(a,b,c))},a.prototype._end=function(a){var b=this._handlers[this._id];if(b){for(var c=b.length-1;0<=c&&!1===b[c].end(a);c--);for(c--;0<=
|
|
c;c--)b[c].end(!1)}else this._handlerFb(this._id,"END",a)},a.prototype.start=function(){this.reset();this._id=-1;this._state=1},a.prototype.put=function(a,b,c){if(3!==this._state){if(1===this._state)for(;b<c;){var d=a[b++];if(59===d){this._state=2;this._start();break}if(48>d||57<d)return void(this._state=3);-1===this._id&&(this._id=0);this._id=10*this._id+d-48}2===this._state&&0<c-b&&this._put(a,b,c)}},a.prototype.end=function(a){0!==this._state&&(3!==this._state&&(1===this._state&&this._start(),
|
|
this._end(a)),this._id=-1,this._state=0)},a}();b.OscParser=a;a=function(){function a(a){this._handler=a;this._data="";this._hitLimit=!1}return a.prototype.start=function(){this._data="";this._hitLimit=!1},a.prototype.put=function(a,b,d){this._hitLimit||(this._data+=g.utf32ToString(a,b,d),this._data.length>c.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},a.prototype.end=function(a){var b;return this._hitLimit?b=!1:a&&(b=this._handler(this._data)),this._data="",this._hitLimit=!1,b},a}();b.OscHandler=
|
|
a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});b.PAYLOAD_LIMIT=1E7},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(8),g=d(20),f=d(22),h=[];a=function(){function a(){this._handlers=Object.create(null);this._active=h;this._ident=0;this._handlerFb=function(){}}return a.prototype.dispose=function(){this._handlers=Object.create(null);this._handlerFb=function(){}},a.prototype.addHandler=function(a,b){void 0===this._handlers[a]&&(this._handlers[a]=[]);var c=this._handlers[a];
|
|
return c.push(b),{dispose:function(){var a=c.indexOf(b);-1!==a&&c.splice(a,1)}}},a.prototype.setHandler=function(a,b){this._handlers[a]=[b]},a.prototype.clearHandler=function(a){this._handlers[a]&&delete this._handlers[a]},a.prototype.setHandlerFallback=function(a){this._handlerFb=a},a.prototype.reset=function(){this._active.length&&this.unhook(!1);this._active=h;this._ident=0},a.prototype.hook=function(a,b){if(this.reset(),this._ident=a,this._active=this._handlers[a]||h,this._active.length)for(a=
|
|
this._active.length-1;0<=a;a--)this._active[a].hook(b);else this._handlerFb(this._ident,"HOOK",b)},a.prototype.put=function(a,b,d){if(this._active.length)for(var e=this._active.length-1;0<=e;e--)this._active[e].put(a,b,d);else this._handlerFb(this._ident,"PUT",c.utf32ToString(a,b,d))},a.prototype.unhook=function(a){if(this._active.length){for(var b=this._active.length-1;0<=b&&!1===this._active[b].unhook(a);b--);for(b--;0<=b;b--)this._active[b].unhook(!1)}else this._handlerFb(this._ident,"UNHOOK",
|
|
a);this._active=h;this._ident=0},a}();b.DcsParser=a;a=function(){function a(a){this._handler=a;this._data="";this._hitLimit=!1}return a.prototype.hook=function(a){this._params=a.clone();this._data="";this._hitLimit=!1},a.prototype.put=function(a,b,d){this._hitLimit||(this._data+=c.utf32ToString(a,b,d),this._data.length>f.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},a.prototype.unhook=function(a){var b;return this._hitLimit?b=!1:a&&(b=this._handler(this._data,this._params?this._params:new g.Params)),
|
|
this._params=void 0,this._data="",this._hitLimit=!1,b},a}();b.DcsHandler=a},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(25),g=d(43),f=[];b.acquireCharAtlas=function(a,b,d,e,t){a=c.generateConfig(e,t,a,d);for(d=0;d<f.length;d++)if(e=(t=f[d]).ownedBy.indexOf(b),0<=e){if(c.configEquals(t.config,a))return t.atlas;1===t.ownedBy.length?(t.atlas.dispose(),f.splice(d,1)):t.ownedBy.splice(e,1);break}for(d=0;d<f.length;d++)if(t=f[d],c.configEquals(t.config,a))return t.ownedBy.push(b),
|
|
t.atlas;b={atlas:new g.DynamicCharAtlas(document,a),config:a,ownedBy:[b]};return f.push(b),b.atlas};b.removeTerminalFromCache=function(a){for(var b=0;b<f.length;b++){var c=f[b].ownedBy.indexOf(a);if(-1!==c){1===f[b].ownedBy.length?(f[b].atlas.dispose(),f.splice(b,1)):f[b].ownedBy.splice(c,1);break}}}},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(3);b.generateConfig=function(a,b,c,d){d={foreground:d.foreground,background:d.background,cursor:void 0,cursorAccent:void 0,selection:void 0,
|
|
ansi:d.ansi.slice(0,16)};return{devicePixelRatio:window.devicePixelRatio,scaledCharWidth:a,scaledCharHeight:b,fontFamily:c.fontFamily,fontSize:c.fontSize,fontWeight:c.fontWeight,fontWeightBold:c.fontWeightBold,allowTransparency:c.allowTransparency,colors:d}};b.configEquals=function(a,b){for(var c=0;c<a.colors.ansi.length;c++)if(a.colors.ansi[c].rgba!==b.colors.ansi[c].rgba)return!1;return a.devicePixelRatio===b.devicePixelRatio&&a.fontFamily===b.fontFamily&&a.fontSize===b.fontSize&&a.fontWeight===
|
|
b.fontWeight&&a.fontWeightBold===b.fontWeightBold&&a.allowTransparency===b.allowTransparency&&a.scaledCharWidth===b.scaledCharWidth&&a.scaledCharHeight===b.scaledCharHeight&&a.colors.foreground===b.colors.foreground&&a.colors.background===b.colors.background};b.is256Color=function(a){return a<c.DEFAULT_COLOR}},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(10),g=d(45),f=c.fromCss("#ffffff"),h=c.fromCss("#000000"),k=c.fromCss("#ffffff"),r=c.fromCss("#000000"),q={css:"rgba(255, 255, 255, 0.3)",
|
|
rgba:4294967117};b.DEFAULT_ANSI_COLORS=function(){for(var a=[c.fromCss("#2e3436"),c.fromCss("#cc0000"),c.fromCss("#4e9a06"),c.fromCss("#c4a000"),c.fromCss("#3465a4"),c.fromCss("#75507b"),c.fromCss("#06989a"),c.fromCss("#d3d7cf"),c.fromCss("#555753"),c.fromCss("#ef2929"),c.fromCss("#8ae234"),c.fromCss("#fce94f"),c.fromCss("#729fcf"),c.fromCss("#ad7fa8"),c.fromCss("#34e2e2"),c.fromCss("#eeeeec")],b=[0,95,135,175,215,255],d=0;216>d;d++){var e=b[d/36%6|0],g=b[d/6%6|0],f=b[d%6];a.push({css:c.toCss(e,g,
|
|
f),rgba:c.toRgba(e,g,f)})}for(d=0;24>d;d++)b=8+10*d,a.push({css:c.toCss(b,b,b),rgba:c.toRgba(b,b,b)});return a}();a=function(){function a(a,d){this.allowTransparency=d;a=a.createElement("canvas");a.width=1;a.height=1;a=a.getContext("2d");if(!a)throw Error("Could not get rendering context");this._ctx=a;this._ctx.globalCompositeOperation="copy";this._litmusColor=this._ctx.createLinearGradient(0,0,1,1);this._contrastCache=new g.ColorContrastCache;this.colors={foreground:f,background:h,cursor:k,cursorAccent:r,
|
|
selection:q,selectionOpaque:c.blend(h,q),ansi:b.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache}}return a.prototype.onOptionsChange=function(a){"minimumContrastRatio"===a&&this._contrastCache.clear()},a.prototype.setTheme=function(a){void 0===a&&(a={});this.colors.foreground=this._parseColor(a.foreground,f);this.colors.background=this._parseColor(a.background,h);this.colors.cursor=this._parseColor(a.cursor,k,!0);this.colors.cursorAccent=this._parseColor(a.cursorAccent,r,!0);this.colors.selection=
|
|
this._parseColor(a.selection,q,!0);this.colors.selectionOpaque=c.blend(this.colors.background,this.colors.selection);this.colors.ansi[0]=this._parseColor(a.black,b.DEFAULT_ANSI_COLORS[0]);this.colors.ansi[1]=this._parseColor(a.red,b.DEFAULT_ANSI_COLORS[1]);this.colors.ansi[2]=this._parseColor(a.green,b.DEFAULT_ANSI_COLORS[2]);this.colors.ansi[3]=this._parseColor(a.yellow,b.DEFAULT_ANSI_COLORS[3]);this.colors.ansi[4]=this._parseColor(a.blue,b.DEFAULT_ANSI_COLORS[4]);this.colors.ansi[5]=this._parseColor(a.magenta,
|
|
b.DEFAULT_ANSI_COLORS[5]);this.colors.ansi[6]=this._parseColor(a.cyan,b.DEFAULT_ANSI_COLORS[6]);this.colors.ansi[7]=this._parseColor(a.white,b.DEFAULT_ANSI_COLORS[7]);this.colors.ansi[8]=this._parseColor(a.brightBlack,b.DEFAULT_ANSI_COLORS[8]);this.colors.ansi[9]=this._parseColor(a.brightRed,b.DEFAULT_ANSI_COLORS[9]);this.colors.ansi[10]=this._parseColor(a.brightGreen,b.DEFAULT_ANSI_COLORS[10]);this.colors.ansi[11]=this._parseColor(a.brightYellow,b.DEFAULT_ANSI_COLORS[11]);this.colors.ansi[12]=this._parseColor(a.brightBlue,
|
|
b.DEFAULT_ANSI_COLORS[12]);this.colors.ansi[13]=this._parseColor(a.brightMagenta,b.DEFAULT_ANSI_COLORS[13]);this.colors.ansi[14]=this._parseColor(a.brightCyan,b.DEFAULT_ANSI_COLORS[14]);this.colors.ansi[15]=this._parseColor(a.brightWhite,b.DEFAULT_ANSI_COLORS[15]);this._contrastCache.clear()},a.prototype._parseColor=function(a,b,d){if(void 0===d&&(d=this.allowTransparency),void 0===a)return b;if(this._ctx.fillStyle=this._litmusColor,this._ctx.fillStyle=a,"string"!=typeof this._ctx.fillStyle)return console.warn("Color: "+
|
|
a+" is invalid using fallback "+b.css),b;this._ctx.fillRect(0,0,1,1);var e=this._ctx.getImageData(0,0,1,1).data;if(255!==e[3]){if(!d)return console.warn("Color: "+a+" is using transparency, but allowTransparency is false. Using fallback "+b.css+"."),b;if(5===a.length){e=parseInt(a.substr(1),16);a=16*(e>>12&15);b=16*(e>>8&15);d=16*(e>>4&15);e=16*(15&e);var g=c.toRgba(a,b,d,e)}else a=(g=parseInt(a.substr(1),16))>>24&255,b=g>>16&255,d=g>>8&255,e=255&g;return{rgba:g,css:c.toCss(a,b,d,e)}}return{css:a,
|
|
rgba:c.toRgba(e[0],e[1],e[2],e[3])}},a}();b.ColorManager=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});b.throwIfFalsy=function(a){if(!a)throw Error("value must not be falsy");return a}},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===
|
|
b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});a=d(6);var f=d(3),h=d(5);d=function(a){function b(b,c,d){var e=a.call(this)||this;return e.content=0,e.fg=b.fg,e.bg=b.bg,e.combinedData=c,e._width=d,e}return g(b,a),b.prototype.isCombined=function(){return 2097152},b.prototype.getWidth=function(){return this._width},b.prototype.getChars=function(){return this.combinedData},b.prototype.getCode=function(){return 2097151},b.prototype.setFromCharData=
|
|
function(){throw Error("not implemented");},b.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},b}(a.AttributeData);b.JoinedCellData=d;d=function(){function a(a){this._bufferService=a;this._characterJoiners=[];this._nextCharacterJoinerId=0;this._workCell=new h.CellData}return a.prototype.registerCharacterJoiner=function(a){a={id:this._nextCharacterJoinerId++,handler:a};return this._characterJoiners.push(a),a.id},a.prototype.deregisterCharacterJoiner=
|
|
function(a){for(var b=0;b<this._characterJoiners.length;b++)if(this._characterJoiners[b].id===a)return this._characterJoiners.splice(b,1),!0;return!1},a.prototype.getJoinedCharacters=function(a){if(0===this._characterJoiners.length)return[];a=this._bufferService.buffer.lines.get(a);if(!a||0===a.length)return[];for(var b=[],c=a.translateToString(!0),d=0,e=0,g=0,k=a.getFg(0),h=a.getBg(0),r=0;r<a.getTrimmedLength();r++)if(a.loadCell(r,this._workCell),0!==this._workCell.getWidth()){if(this._workCell.fg!==
|
|
k||this._workCell.bg!==h){if(1<r-d)for(d=this._getJoinedRanges(c,g,e,a,d),g=0;g<d.length;g++)b.push(d[g]);d=r;g=e;k=this._workCell.fg;h=this._workCell.bg}e+=this._workCell.getChars().length||f.WHITESPACE_CELL_CHAR.length}if(1<this._bufferService.cols-d)for(d=this._getJoinedRanges(c,g,e,a,d),g=0;g<d.length;g++)b.push(d[g]);return b},a.prototype._getJoinedRanges=function(b,c,d,e,g){b=b.substring(c,d);c=this._characterJoiners[0].handler(b);for(d=1;d<this._characterJoiners.length;d++)for(var f=this._characterJoiners[d].handler(b),
|
|
l=0;l<f.length;l++)a._mergeRanges(c,f[l]);return this._stringRangesToCellRanges(c,e,g),c},a.prototype._stringRangesToCellRanges=function(a,b,c){var d=0,e=!1,g=0,q=a[d];if(q){for(;c<this._bufferService.cols;c++){var t=b.getWidth(c),k=b.getString(c).length||f.WHITESPACE_CELL_CHAR.length;if(0!==t){if(!e&&q[0]<=g&&(q[0]=c,e=!0),q[1]<=g){if(q[1]=c,!(q=a[++d]))break;q[0]<=g?(q[0]=c,e=!0):e=!1}g+=k}}q&&(q[1]=this._bufferService.cols)}},a._mergeRanges=function(a,b){for(var c=!1,d=0;d<a.length;d++){var e=
|
|
a[d];if(c){if(b[1]<=e[0])return a[d-1][1]=b[1],a;if(b[1]<=e[1])return a[d-1][1]=Math.max(b[1],e[1]),a.splice(d,1),a;a.splice(d,1);d--}else{if(b[1]<=e[0])return a.splice(d,0,b),a;if(b[1]<=e[1])return e[0]=Math.min(b[0],e[0]),a;b[0]<e[1]&&(e[0]=Math.min(b[0],e[0]),c=!0)}}return c?a[a.length-1][1]=b[1]:a.push(b),a},a}();b.CharacterJoinerRegistry=d},function(a,b){function c(a,b){b=b.getBoundingClientRect();return[a.clientX-b.left,a.clientY-b.top]}Object.defineProperty(b,"__esModule",{value:!0});b.getCoordsRelativeToElement=
|
|
c;b.getCoords=function(a,b,d,h,k,r,q,t){if(k&&(a=c(a,b)))return a[0]=Math.ceil((a[0]+(t?r/2:0))/r),a[1]=Math.ceil(a[1]/q),a[0]=Math.min(Math.max(a[0],1),d+(t?1:0)),a[1]=Math.min(Math.max(a[1],1),h),a};b.getRawByteCoords=function(a){if(a)return{x:a[0]+32,y:a[1]+32}}},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(a){this._renderCallback=a}return a.prototype.dispose=function(){this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=
|
|
void 0)},a.prototype.refresh=function(a,b,c){var d=this;this._rowCount=c;a=void 0!==a?a:0;b=void 0!==b?b:this._rowCount-1;this._rowStart=void 0!==this._rowStart?Math.min(this._rowStart,a):a;this._rowEnd=void 0!==this._rowEnd?Math.max(this._rowEnd,b):b;this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){return d._innerRefresh()}))},a.prototype._innerRefresh=function(){void 0!==this._rowStart&&void 0!==this._rowEnd&&void 0!==this._rowCount&&(this._rowStart=Math.max(this._rowStart,
|
|
0),this._rowEnd=Math.min(this._rowEnd,this._rowCount-1),this._renderCallback(this._rowStart,this._rowEnd),this._rowStart=void 0,this._rowEnd=void 0,this._animationFrame=void 0)},a}();b.RenderDebouncer=a},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===
|
|
b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});a=function(a){function b(){var b=null!==a&&a.apply(this,arguments)||this;return b._currentDevicePixelRatio=window.devicePixelRatio,b}return g(b,a),b.prototype.setListener=function(a){var b=this;this._listener&&this.clearListener();this._listener=a;this._outerListener=function(){b._listener&&(b._listener(window.devicePixelRatio,b._currentDevicePixelRatio),b._updateDpr())};this._updateDpr()},b.prototype.dispose=
|
|
function(){a.prototype.dispose.call(this);this.clearListener()},b.prototype._updateDpr=function(){this._resolutionMediaMatchList&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._currentDevicePixelRatio=window.devicePixelRatio,this._resolutionMediaMatchList=window.matchMedia("screen and (resolution: "+window.devicePixelRatio+"dppx)"),this._resolutionMediaMatchList.addListener(this._outerListener))},b.prototype.clearListener=function(){this._resolutionMediaMatchList&&
|
|
this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)},b}(d(2).Disposable);b.ScreenDprMonitor=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});b.clone=function f(a,b){if(void 0===b&&(b=5),"object"!=typeof a)return a;var c=Array.isArray(a)?[]:{},e;for(e in a)c[e]=1>=b?a[e]:a[e]?f(a[e],b-1):a[e];return c}},function(a,b,d){Object.defineProperty(b,
|
|
"__esModule",{value:!0});var c=d(34),g=d(17),f=d(78);a=function(){function a(a){this._core=new c.Terminal(a);this._addonManager=new f.AddonManager}return Object.defineProperty(a.prototype,"onCursorMove",{get:function(){return this._core.onCursorMove},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onLineFeed",{get:function(){return this._core.onLineFeed},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onSelectionChange",{get:function(){return this._core.onSelectionChange},
|
|
enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onData",{get:function(){return this._core.onData},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onBinary",{get:function(){return this._core.onBinary},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onTitleChange",{get:function(){return this._core.onTitleChange},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onScroll",{get:function(){return this._core.onScroll},enumerable:!0,
|
|
configurable:!0}),Object.defineProperty(a.prototype,"onKey",{get:function(){return this._core.onKey},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onRender",{get:function(){return this._core.onRender},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onResize",{get:function(){return this._core.onResize},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"element",{get:function(){return this._core.element},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,
|
|
"parser",{get:function(){return this._parser||(this._parser=new q(this._core)),this._parser},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"textarea",{get:function(){return this._core.textarea},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"rows",{get:function(){return this._core.rows},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"cols",{get:function(){return this._core.cols},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,
|
|
"buffer",{get:function(){return new h(this._core.buffer)},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"markers",{get:function(){return this._core.markers},enumerable:!0,configurable:!0}),a.prototype.blur=function(){this._core.blur()},a.prototype.focus=function(){this._core.focus()},a.prototype.resize=function(a,b){this._verifyIntegers(a,b);this._core.resize(a,b)},a.prototype.open=function(a){this._core.open(a)},a.prototype.attachCustomKeyEventHandler=function(a){this._core.attachCustomKeyEventHandler(a)},
|
|
a.prototype.registerLinkMatcher=function(a,b,c){return this._core.registerLinkMatcher(a,b,c)},a.prototype.deregisterLinkMatcher=function(a){this._core.deregisterLinkMatcher(a)},a.prototype.registerCharacterJoiner=function(a){return this._core.registerCharacterJoiner(a)},a.prototype.deregisterCharacterJoiner=function(a){this._core.deregisterCharacterJoiner(a)},a.prototype.addMarker=function(a){return this._verifyIntegers(a),this._core.addMarker(a)},a.prototype.hasSelection=function(){return this._core.hasSelection()},
|
|
a.prototype.select=function(a,b,c){this._verifyIntegers(a,b,c);this._core.select(a,b,c)},a.prototype.getSelection=function(){return this._core.getSelection()},a.prototype.getSelectionPosition=function(){return this._core.getSelectionPosition()},a.prototype.clearSelection=function(){this._core.clearSelection()},a.prototype.selectAll=function(){this._core.selectAll()},a.prototype.selectLines=function(a,b){this._verifyIntegers(a,b);this._core.selectLines(a,b)},a.prototype.dispose=function(){this._addonManager.dispose();
|
|
this._core.dispose()},a.prototype.scrollLines=function(a){this._verifyIntegers(a);this._core.scrollLines(a)},a.prototype.scrollPages=function(a){this._verifyIntegers(a);this._core.scrollPages(a)},a.prototype.scrollToTop=function(){this._core.scrollToTop()},a.prototype.scrollToBottom=function(){this._core.scrollToBottom()},a.prototype.scrollToLine=function(a){this._verifyIntegers(a);this._core.scrollToLine(a)},a.prototype.clear=function(){this._core.clear()},a.prototype.write=function(a,b){this._core.write(a,
|
|
b)},a.prototype.writeUtf8=function(a,b){this._core.write(a,b)},a.prototype.writeln=function(a,b){this._core.write(a);this._core.write("\r\n",b)},a.prototype.paste=function(a){this._core.paste(a)},a.prototype.getOption=function(a){return this._core.optionsService.getOption(a)},a.prototype.setOption=function(a,b){this._core.optionsService.setOption(a,b)},a.prototype.refresh=function(a,b){this._verifyIntegers(a,b);this._core.refresh(a,b)},a.prototype.reset=function(){this._core.reset()},a.prototype.loadAddon=
|
|
function(a){return this._addonManager.loadAddon(this,a)},Object.defineProperty(a,"strings",{get:function(){return g},enumerable:!0,configurable:!0}),a.prototype._verifyIntegers=function(){for(var a=[],b=0;b<arguments.length;b++)a[b]=arguments[b];a.forEach(function(a){if(a===1/0||isNaN(a)||0!=a%1)throw Error("This API only accepts integers");})},a}();b.Terminal=a;var h=function(){function a(a){this._buffer=a}return Object.defineProperty(a.prototype,"cursorY",{get:function(){return this._buffer.y},
|
|
enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"cursorX",{get:function(){return this._buffer.x},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"viewportY",{get:function(){return this._buffer.ydisp},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"baseY",{get:function(){return this._buffer.ybase},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"length",{get:function(){return this._buffer.lines.length},enumerable:!0,configurable:!0}),
|
|
a.prototype.getLine=function(a){if(a=this._buffer.lines.get(a))return new k(a)},a}(),k=function(){function a(a){this._line=a}return Object.defineProperty(a.prototype,"isWrapped",{get:function(){return this._line.isWrapped},enumerable:!0,configurable:!0}),a.prototype.getCell=function(a){if(!(0>a||a>=this._line.length))return new r(this._line,a)},a.prototype.translateToString=function(a,b,c){return this._line.translateToString(a,b,c)},a}(),r=function(){function a(a,b){this._line=a;this._x=b}return Object.defineProperty(a.prototype,
|
|
"char",{get:function(){return this._line.getString(this._x)},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"width",{get:function(){return this._line.getWidth(this._x)},enumerable:!0,configurable:!0}),a}(),q=function(){function a(a){this._core=a}return a.prototype.addCsiHandler=function(a,b){return this._core.addCsiHandler(a,function(a){return b(a.toArray())})},a.prototype.addDcsHandler=function(a,b){return this._core.addDcsHandler(a,function(a,c){return b(a,c.toArray())})},a.prototype.addEscHandler=
|
|
function(a,b){return this._core.addEscHandler(a,b)},a.prototype.addOscHandler=function(a,b){return this._core.addOscHandler(a,b)},a}()},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,
|
|
"__esModule",{value:!0});var f=d(35),h=d(36),k=d(37),r=d(12),q=d(38),t=d(40),v=d(50),l=d(51),n=d(11),y=d(7),B=d(17),O=d(54),X=d(55),M=d(56),ha=d(57),R=d(59),C=d(1),H=d(16),qa=d(60),V=d(26),ra=d(61),I=d(0),sa=d(62),ta=d(4),ja=d(63),Fa=d(64);a=d(2);var Sa=d(70),xa=d(71),ma=d(72),P=d(73),ya=d(74),ua=d(75),J=d(76),G=d(77),da="undefined"!=typeof window?window.document:null;d=function(a){function b(b){void 0===b&&(b={});var c=a.call(this)||this;return c.browser=n,c.mouseEvents=0,c._keyDownHandled=!1,c._blankLine=
|
|
null,c._onCursorMove=new C.EventEmitter,c._onData=new C.EventEmitter,c._onBinary=new C.EventEmitter,c._onKey=new C.EventEmitter,c._onLineFeed=new C.EventEmitter,c._onRender=new C.EventEmitter,c._onResize=new C.EventEmitter,c._onScroll=new C.EventEmitter,c._onSelectionChange=new C.EventEmitter,c._onTitleChange=new C.EventEmitter,c._onFocus=new C.EventEmitter,c._onBlur=new C.EventEmitter,c.onA11yCharEmitter=new C.EventEmitter,c.onA11yTabEmitter=new C.EventEmitter,c._instantiationService=new ya.InstantiationService,
|
|
c.optionsService=new sa.OptionsService(b),c._instantiationService.setService(I.IOptionsService,c.optionsService),c._bufferService=c._instantiationService.createInstance(Fa.BufferService),c._instantiationService.setService(I.IBufferService,c._bufferService),c._logService=c._instantiationService.createInstance(ma.LogService),c._instantiationService.setService(I.ILogService,c._logService),c._coreService=c._instantiationService.createInstance(xa.CoreService,function(){return c.scrollToBottom()}),c._instantiationService.setService(I.ICoreService,
|
|
c._coreService),c._coreService.onData(function(a){return c._onData.fire(a)}),c._coreService.onBinary(function(a){return c._onBinary.fire(a)}),c._coreMouseService=c._instantiationService.createInstance(ua.CoreMouseService),c._instantiationService.setService(I.ICoreMouseService,c._coreMouseService),c._dirtyRowService=c._instantiationService.createInstance(P.DirtyRowService),c._instantiationService.setService(I.IDirtyRowService,c._dirtyRowService),c._setupOptionsListeners(),c._setup(),c._writeBuffer=
|
|
new J.WriteBuffer(function(a){return c._inputHandler.parse(a)}),c}return g(b,a),Object.defineProperty(b.prototype,"options",{get:function(){return this.optionsService.options},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"cols",{get:function(){return this._bufferService.cols},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"rows",{get:function(){return this._bufferService.rows},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onCursorMove",
|
|
{get:function(){return this._onCursorMove.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onData",{get:function(){return this._onData.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onKey",{get:function(){return this._onKey.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},
|
|
enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},
|
|
enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onFocus",{get:function(){return this._onFocus.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onBlur",{get:function(){return this._onBlur.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onA11yChar",{get:function(){return this.onA11yCharEmitter.event},
|
|
enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onA11yTab",{get:function(){return this.onA11yTabEmitter.event},enumerable:!0,configurable:!0}),b.prototype.dispose=function(){var b,c,d,e;this._isDisposed||(a.prototype.dispose.call(this),null===(b=this._windowsMode)||void 0===b||b.dispose(),this._windowsMode=void 0,null===(c=this._renderService)||void 0===c||c.dispose(),this._customKeyEventHandler=null,this.write=function(){},null===(e=null===(d=this.element)||void 0===d?void 0:d.parentNode)||
|
|
void 0===e||e.removeChild(this.element))},b.prototype._setup=function(){var a=this;this._parent=da?da.body:null;this._customKeyEventHandler=null;this.insertMode=this.originMode=this.applicationKeypad=!1;this.wraparoundMode=!0;this.bracketedPasteMode=!1;this.gcharset=this.charset=null;this.glevel=0;this.charsets=[null];this.curAttrData=H.DEFAULT_ATTR_DATA.clone();this._eraseAttrData=H.DEFAULT_ATTR_DATA.clone();this.params=[];this.currentParam=0;this._userScrolling=!1;this._inputHandler=new q.InputHandler(this,
|
|
this._bufferService,this._coreService,this._dirtyRowService,this._logService,this.optionsService,this._coreMouseService);this._inputHandler.onCursorMove(function(){return a._onCursorMove.fire()});this._inputHandler.onLineFeed(function(){return a._onLineFeed.fire()});this.register(this._inputHandler);this.linkifier=this.linkifier||new v.Linkifier(this._bufferService,this._logService);this.options.windowsMode&&this._enableWindowsMode()},b.prototype._enableWindowsMode=function(){this._windowsMode||(this._windowsMode=
|
|
this.onLineFeed(qa.handleWindowsModeLineFeed.bind(null,this._bufferService)))},Object.defineProperty(b.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"buffers",{get:function(){return this._bufferService.buffers},enumerable:!0,configurable:!0}),b.prototype.eraseAttrData=function(){return this._eraseAttrData.bg&=-67108864,this._eraseAttrData.bg|=67108863&this.curAttrData.bg,this._eraseAttrData},b.prototype.focus=function(){this.textarea&&
|
|
this.textarea.focus({preventScroll:!0})},b.prototype._setupOptionsListeners=function(){var a=this;this.optionsService.onOptionChange(function(b){var c,d,e,g,f;switch(b){case "fontFamily":case "fontSize":null===(c=a._renderService)||void 0===c||c.clear();null===(d=a._charSizeService)||void 0===d||d.measure();break;case "drawBoldTextInBrightColors":case "letterSpacing":case "lineHeight":case "fontWeight":case "fontWeightBold":case "minimumContrastRatio":a._renderService&&(a._renderService.clear(),a._renderService.onResize(a.cols,
|
|
a.rows),a.refresh(0,a.rows-1));break;case "rendererType":a._renderService&&(a._renderService.setRenderer(a._createRenderer()),a._renderService.onResize(a.cols,a.rows));break;case "scrollback":a.buffers.resize(a.cols,a.rows);null===(e=a.viewport)||void 0===e||e.syncScrollArea();break;case "screenReaderMode":a.optionsService.options.screenReaderMode?!a._accessibilityManager&&a._renderService&&(a._accessibilityManager=new M.AccessibilityManager(a,a._renderService)):(null===(g=a._accessibilityManager)||
|
|
void 0===g||g.dispose(),a._accessibilityManager=null);break;case "tabStopWidth":a.buffers.setupTabStops();break;case "theme":a._setTheme(a.optionsService.options.theme);break;case "windowsMode":a.optionsService.options.windowsMode?a._enableWindowsMode():(null===(f=a._windowsMode)||void 0===f||f.dispose(),a._windowsMode=void 0)}})},b.prototype._onTextAreaFocus=function(a){this.sendFocus&&this._coreService.triggerDataEvent(r.C0.ESC+"[I");this.updateCursorStyle(a);this.element.classList.add("focus");
|
|
this.showCursor();this._onFocus.fire()},b.prototype.blur=function(){return this.textarea.blur()},b.prototype._onTextAreaBlur=function(){this.textarea.value="";this.refresh(this.buffer.y,this.buffer.y);this.sendFocus&&this._coreService.triggerDataEvent(r.C0.ESC+"[O");this.element.classList.remove("focus");this._onBlur.fire()},b.prototype._initGlobal=function(){function a(a){return k.handlePasteEvent(a,b.textarea,b.bracketedPasteMode,b._coreService)}var b=this;this._bindKeys();this.register(y.addDisposableDomListener(this.element,
|
|
"copy",function(a){b.hasSelection()&&k.copyHandler(a,b._selectionService)}));this.register(y.addDisposableDomListener(this.textarea,"paste",a));this.register(y.addDisposableDomListener(this.element,"paste",a));n.isFirefox?this.register(y.addDisposableDomListener(this.element,"mousedown",function(a){2===a.button&&k.rightClickHandler(a,b.textarea,b.screenElement,b._selectionService,b.options.rightClickSelectsWord)})):this.register(y.addDisposableDomListener(this.element,"contextmenu",function(a){k.rightClickHandler(a,
|
|
b.textarea,b.screenElement,b._selectionService,b.options.rightClickSelectsWord)}));n.isLinux&&this.register(y.addDisposableDomListener(this.element,"auxclick",function(a){1===a.button&&k.moveTextAreaUnderMouseCursor(a,b.textarea,b.screenElement)}))},b.prototype._bindKeys=function(){var a=this;this.register(y.addDisposableDomListener(this.textarea,"keyup",function(b){return a._keyUp(b)},!0));this.register(y.addDisposableDomListener(this.textarea,"keydown",function(b){return a._keyDown(b)},!0));this.register(y.addDisposableDomListener(this.textarea,
|
|
"keypress",function(b){return a._keyPress(b)},!0));this.register(y.addDisposableDomListener(this.textarea,"compositionstart",function(){return a._compositionHelper.compositionstart()}));this.register(y.addDisposableDomListener(this.textarea,"compositionupdate",function(b){return a._compositionHelper.compositionupdate(b)}));this.register(y.addDisposableDomListener(this.textarea,"compositionend",function(){return a._compositionHelper.compositionend()}));this.register(this.onRender(function(){return a._compositionHelper.updateCompositionElements()}));
|
|
this.register(this.onRender(function(b){return a._queueLinkification(b.start,b.end)}))},b.prototype.open=function(a){var b=this;if(this._parent=a||this._parent,!this._parent)throw Error("Terminal requires a parent element.");da.body.contains(a)||this._logService.warn("Terminal.open was called on an element that was not attached to the DOM");this._document=this._parent.ownerDocument;this.element=this._document.createElement("div");this.element.dir="ltr";this.element.classList.add("terminal");this.element.classList.add("xterm");
|
|
this.element.setAttribute("tabindex","0");this._parent.appendChild(this.element);a=da.createDocumentFragment();this._viewportElement=da.createElement("div");this._viewportElement.classList.add("xterm-viewport");a.appendChild(this._viewportElement);this._viewportScrollArea=da.createElement("div");this._viewportScrollArea.classList.add("xterm-scroll-area");this._viewportElement.appendChild(this._viewportScrollArea);this.screenElement=da.createElement("div");this.screenElement.classList.add("xterm-screen");
|
|
this._helperContainer=da.createElement("div");this._helperContainer.classList.add("xterm-helpers");this.screenElement.appendChild(this._helperContainer);a.appendChild(this.screenElement);this.textarea=da.createElement("textarea");this.textarea.classList.add("xterm-helper-textarea");this.textarea.setAttribute("aria-label",B.promptLabel);this.textarea.setAttribute("aria-multiline","false");this.textarea.setAttribute("autocorrect","off");this.textarea.setAttribute("autocapitalize","off");this.textarea.setAttribute("spellcheck",
|
|
"false");this.textarea.tabIndex=0;this.register(y.addDisposableDomListener(this.textarea,"focus",function(a){return b._onTextAreaFocus(a)}));this.register(y.addDisposableDomListener(this.textarea,"blur",function(){return b._onTextAreaBlur()}));this._helperContainer.appendChild(this.textarea);var c=this._instantiationService.createInstance(G.CoreBrowserService,this.textarea);this._instantiationService.setService(ta.ICoreBrowserService,c);this._charSizeService=this._instantiationService.createInstance(ja.CharSizeService,
|
|
this._document,this._helperContainer);this._instantiationService.setService(ta.ICharSizeService,this._charSizeService);this._compositionView=da.createElement("div");this._compositionView.classList.add("composition-view");this._compositionHelper=this._instantiationService.createInstance(f.CompositionHelper,this.textarea,this._compositionView);this._helperContainer.appendChild(this._compositionView);this.element.appendChild(a);this._theme=this.options.theme||this._theme;this.options.theme=void 0;this._colorManager=
|
|
new V.ColorManager(da,this.options.allowTransparency);this.optionsService.onOptionChange(function(a){return b._colorManager.onOptionsChange(a)});this._colorManager.setTheme(this._theme);a=this._createRenderer();this._renderService=this._instantiationService.createInstance(ra.RenderService,a,this.rows,this.screenElement);this._instantiationService.setService(ta.IRenderService,this._renderService);this._renderService.onRender(function(a){return b._onRender.fire(a)});this.onResize(function(a){return b._renderService.resize(a.cols,
|
|
a.rows)});this._soundService=this._instantiationService.createInstance(O.SoundService);this._instantiationService.setService(ta.ISoundService,this._soundService);this._mouseService=this._instantiationService.createInstance(Sa.MouseService);this._instantiationService.setService(ta.IMouseService,this._mouseService);this.viewport=this._instantiationService.createInstance(h.Viewport,function(a,c){return b.scrollLines(a,c)},this._viewportElement,this._viewportScrollArea);this.viewport.onThemeChange(this._colorManager.colors);
|
|
this.register(this.viewport);this.register(this.onCursorMove(function(){return b._renderService.onCursorMove()}));this.register(this.onResize(function(){return b._renderService.onResize(b.cols,b.rows)}));this.register(this.onBlur(function(){return b._renderService.onBlur()}));this.register(this.onFocus(function(){return b._renderService.onFocus()}));this.register(this._renderService.onDimensionsChange(function(){return b.viewport.syncScrollArea()}));this._selectionService=this._instantiationService.createInstance(l.SelectionService,
|
|
function(a,c){return b.scrollLines(a,c)},this.element,this.screenElement);this._instantiationService.setService(ta.ISelectionService,this._selectionService);this.register(this._selectionService.onSelectionChange(function(){return b._onSelectionChange.fire()}));this.register(this._selectionService.onRedrawRequest(function(a){return b._renderService.onSelectionChanged(a.start,a.end,a.columnSelectMode)}));this.register(this._selectionService.onLinuxMouseSelection(function(a){b.textarea.value=a;b.textarea.focus();
|
|
b.textarea.select()}));this.register(this.onScroll(function(){b.viewport.syncScrollArea();b._selectionService.refresh()}));this.register(y.addDisposableDomListener(this._viewportElement,"scroll",function(){return b._selectionService.refresh()}));this._mouseZoneManager=this._instantiationService.createInstance(X.MouseZoneManager,this.element,this.screenElement);this.register(this._mouseZoneManager);this.register(this.onScroll(function(){return b._mouseZoneManager.clearAll()}));this.linkifier.attachToDom(this.element,
|
|
this._mouseZoneManager);this.register(y.addDisposableDomListener(this.element,"mousedown",function(a){return b._selectionService.onMouseDown(a)}));this.mouseEvents?(this._selectionService.disable(),this.element.classList.add("enable-mouse-events")):this._selectionService.enable();this.options.screenReaderMode&&(this._accessibilityManager=new M.AccessibilityManager(this,this._renderService));this._charSizeService.measure();this.refresh(0,this.rows-1);this._initGlobal();this.bindMouse()},b.prototype._createRenderer=
|
|
function(){switch(this.options.rendererType){case "canvas":return this._instantiationService.createInstance(t.Renderer,this._colorManager.colors,this.screenElement,this.linkifier);case "dom":return this._instantiationService.createInstance(ha.DomRenderer,this._colorManager.colors,this.element,this.screenElement,this._viewportElement,this.linkifier);default:throw Error('Unrecognized rendererType "'+this.options.rendererType+'"');}},b.prototype._setTheme=function(a){var b,c,d;this._theme=a;null===(b=
|
|
this._colorManager)||void 0===b||b.setTheme(a);null===(c=this._renderService)||void 0===c||c.setColors(this._colorManager.colors);null===(d=this.viewport)||void 0===d||d.onThemeChange(this._colorManager.colors)},b.prototype.bindMouse=function(){function a(a){a.buttons||e(a)}function b(a){a.buttons&&e(a)}function c(a){return e(a),a.preventDefault(),g.cancel(a)}function d(a){return e(a),a.buttons||(g._document.removeEventListener("mouseup",q),h&&g._document.removeEventListener("mousemove",h)),g.cancel(a)}
|
|
function e(a){var b,c;if(!(b=f._mouseService.getRawByteCoords(a,f.screenElement,f.cols,f.rows)))return!1;switch(a.overrideType||a.type){case "mousemove":var d=32;void 0===a.buttons?(c=3,void 0!==a.button&&(c=3>a.button?a.button:3)):c=1&a.buttons?0:4&a.buttons?1:2&a.buttons?2:3;break;case "mouseup":d=0;c=3>a.button?a.button:3;break;case "mousedown":d=1;c=3>a.button?a.button:3;break;case "wheel":0!==a.deltaY&&(d=0>a.deltaY?0:1);c=4;break;default:return!1}return!(void 0===d||void 0===c||4<c)&&f._coreMouseService.triggerMouseEvent({col:b.x-
|
|
33,row:b.y-33,button:c,action:d,ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey})}var g=this,f=this,l=this.element,q=null,k=null,h=null,v=null;this._coreMouseService.onProtocolChange(function(e){(g.mouseEvents=e)?("debug"===g.optionsService.options.logLevel&&g._logService.debug("Binding to mouse events:",g._coreMouseService.explainEvents(e)),g.element.classList.add("enable-mouse-events"),g._selectionService.disable()):(g._logService.debug("Unbinding from mouse events."),g.element.classList.remove("enable-mouse-events"),
|
|
g._selectionService.enable());8&e?v||(l.addEventListener("mousemove",a),v=a):(l.removeEventListener("mousemove",v),v=null);16&e?k||(l.addEventListener("wheel",c),k=c):(l.removeEventListener("wheel",k),k=null);2&e?q||(q=d):(g._document.removeEventListener("mouseup",q),q=null);4&e?h||(h=b):(g._document.removeEventListener("mousemove",h),h=null)});this._coreMouseService.activeProtocol=this._coreMouseService.activeProtocol;this.register(y.addDisposableDomListener(l,"mousedown",function(a){if(a.preventDefault(),
|
|
g.focus(),g.mouseEvents&&!g._selectionService.shouldForceSelection(a))return e(a),q&&g._document.addEventListener("mouseup",q),h&&g._document.addEventListener("mousemove",h),g.cancel(a)}));this.register(y.addDisposableDomListener(l,"wheel",function(a){if(!k&&!g.buffer.hasScrollback){var b=g.viewport.getLinesScrolled(a);if(0!==b){a=r.C0.ESC+(g._coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(0>a.deltaY?"A":"B");for(var c="",d=0;d<Math.abs(b);d++)c+=a;g._coreService.triggerDataEvent(c,!0)}}}));
|
|
this.register(y.addDisposableDomListener(l,"wheel",function(a){if(!k)return g.viewport.onWheel(a)?void 0:g.cancel(a)}));this.register(y.addDisposableDomListener(l,"touchstart",function(a){if(!g.mouseEvents)return g.viewport.onTouchStart(a),g.cancel(a)}));this.register(y.addDisposableDomListener(l,"touchmove",function(a){if(!g.mouseEvents)return g.viewport.onTouchMove(a)?void 0:g.cancel(a)}))},b.prototype.refresh=function(a,b){var c;null===(c=this._renderService)||void 0===c||c.refreshRows(a,b)},b.prototype._queueLinkification=
|
|
function(a,b){var c;null===(c=this.linkifier)||void 0===c||c.linkifyRows(a,b)},b.prototype.updateCursorStyle=function(a){this._selectionService&&this._selectionService.shouldColumnSelect(a)?this.element.classList.add("column-select"):this.element.classList.remove("column-select")},b.prototype.showCursor=function(){this._coreService.isCursorInitialized||(this._coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))},b.prototype.scroll=function(a){void 0===a&&(a=!1);var b=this._blankLine;
|
|
var c=this.eraseAttrData();b&&b.length===this.cols&&b.getFg(0)===c.fg&&b.getBg(0)===c.bg||(b=this.buffer.getBlankLine(c,a),this._blankLine=b);b.isWrapped=a;c=this.buffer.ybase+this.buffer.scrollTop;a=this.buffer.ybase+this.buffer.scrollBottom;0===this.buffer.scrollTop?(c=this.buffer.lines.isFull,a===this.buffer.lines.length-1?c?this.buffer.lines.recycle().copyFrom(b):this.buffer.lines.push(b.clone()):this.buffer.lines.splice(a+1,0,b.clone()),c?this._userScrolling&&(this.buffer.ydisp=Math.max(this.buffer.ydisp-
|
|
1,0)):(this.buffer.ybase++,this._userScrolling||this.buffer.ydisp++)):(this.buffer.lines.shiftElements(c+1,a-c+1-1,-1),this.buffer.lines.set(a,b.clone()));this._userScrolling||(this.buffer.ydisp=this.buffer.ybase);this._dirtyRowService.markRangeDirty(this.buffer.scrollTop,this.buffer.scrollBottom);this._onScroll.fire(this.buffer.ydisp)},b.prototype.scrollLines=function(a,b){if(0>a){if(0===this.buffer.ydisp)return;this._userScrolling=!0}else a+this.buffer.ydisp>=this.buffer.ybase&&(this._userScrolling=
|
|
!1);var c=this.buffer.ydisp;this.buffer.ydisp=Math.max(Math.min(this.buffer.ydisp+a,this.buffer.ybase),0);c!==this.buffer.ydisp&&(b||this._onScroll.fire(this.buffer.ydisp),this.refresh(0,this.rows-1))},b.prototype.scrollPages=function(a){this.scrollLines(a*(this.rows-1))},b.prototype.scrollToTop=function(){this.scrollLines(-this.buffer.ydisp)},b.prototype.scrollToBottom=function(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)},b.prototype.scrollToLine=function(a){a-=this.buffer.ydisp;0!==
|
|
a&&this.scrollLines(a)},b.prototype.paste=function(a){k.paste(a,this.textarea,this.bracketedPasteMode,this._coreService)},b.prototype.attachCustomKeyEventHandler=function(a){this._customKeyEventHandler=a},b.prototype.addEscHandler=function(a,b){return this._inputHandler.addEscHandler(a,b)},b.prototype.addDcsHandler=function(a,b){return this._inputHandler.addDcsHandler(a,b)},b.prototype.addCsiHandler=function(a,b){return this._inputHandler.addCsiHandler(a,b)},b.prototype.addOscHandler=function(a,b){return this._inputHandler.addOscHandler(a,
|
|
b)},b.prototype.registerLinkMatcher=function(a,b,c){a=this.linkifier.registerLinkMatcher(a,b,c);return this.refresh(0,this.rows-1),a},b.prototype.deregisterLinkMatcher=function(a){this.linkifier.deregisterLinkMatcher(a)&&this.refresh(0,this.rows-1)},b.prototype.registerCharacterJoiner=function(a){a=this._renderService.registerCharacterJoiner(a);return this.refresh(0,this.rows-1),a},b.prototype.deregisterCharacterJoiner=function(a){this._renderService.deregisterCharacterJoiner(a)&&this.refresh(0,this.rows-
|
|
1)},Object.defineProperty(b.prototype,"markers",{get:function(){return this.buffer.markers},enumerable:!0,configurable:!0}),b.prototype.addMarker=function(a){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+a)},b.prototype.hasSelection=function(){return!!this._selectionService&&this._selectionService.hasSelection},b.prototype.select=function(a,b,c){this._selectionService.setSelection(a,b,c)},b.prototype.getSelection=function(){return this._selectionService?
|
|
this._selectionService.selectionText:""},b.prototype.getSelectionPosition=function(){if(this._selectionService.hasSelection)return{startColumn:this._selectionService.selectionStart[0],startRow:this._selectionService.selectionStart[1],endColumn:this._selectionService.selectionEnd[0],endRow:this._selectionService.selectionEnd[1]}},b.prototype.clearSelection=function(){var a;null===(a=this._selectionService)||void 0===a||a.clearSelection()},b.prototype.selectAll=function(){var a;null===(a=this._selectionService)||
|
|
void 0===a||a.selectAll()},b.prototype.selectLines=function(a,b){var c;null===(c=this._selectionService)||void 0===c||c.selectLines(a,b)},b.prototype._keyDown=function(a){if(this._keyDownHandled=!1,this._customKeyEventHandler&&!1===this._customKeyEventHandler(a))return!1;if(!this._compositionHelper.keydown(a))return this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(),!1;var b=R.evaluateKeyboardEvent(a,this._coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);
|
|
if(this.updateCursorStyle(a),3===b.type||2===b.type){var c=this.rows-1;return this.scrollLines(2===b.type?-c:c),this.cancel(a,!0)}return 1===b.type&&this.selectAll(),!!this._isThirdLevelShift(this.browser,a)||(b.cancel&&this.cancel(a,!0),!b.key||(b.key!==r.C0.ETX&&b.key!==r.C0.CR||(this.textarea.value=""),this._onKey.fire({key:b.key,domEvent:a}),this.showCursor(),this._coreService.triggerDataEvent(b.key,!0),this.optionsService.options.screenReaderMode?void(this._keyDownHandled=!0):this.cancel(a,!0)))},
|
|
b.prototype._isThirdLevelShift=function(a,b){a=a.isMac&&!this.options.macOptionIsMeta&&b.altKey&&!b.ctrlKey&&!b.metaKey||a.isWindows&&b.altKey&&b.ctrlKey&&!b.metaKey;return"keypress"===b.type?a:a&&(!b.keyCode||47<b.keyCode)},b.prototype.setgLevel=function(a){this.glevel=a;this.charset=this.charsets[a]},b.prototype.setgCharset=function(a,b){this.charsets[a]=b;this.glevel===a&&(this.charset=b)},b.prototype._keyUp=function(a){this._customKeyEventHandler&&!1===this._customKeyEventHandler(a)||(16===a.keyCode||
|
|
17===a.keyCode||18===a.keyCode||this.focus(),this.updateCursorStyle(a))},b.prototype._keyPress=function(a){if(this._keyDownHandled||this._customKeyEventHandler&&!1===this._customKeyEventHandler(a))return!1;if(this.cancel(a),a.charCode)var b=a.charCode;else if(null===a.which||void 0===a.which)b=a.keyCode;else{if(0===a.which||0===a.charCode)return!1;b=a.which}return!(!b||(a.altKey||a.ctrlKey||a.metaKey)&&!this._isThirdLevelShift(this.browser,a))&&(b=String.fromCharCode(b),this._onKey.fire({key:b,domEvent:a}),
|
|
this.showCursor(),this._coreService.triggerDataEvent(b,!0),!0)},b.prototype.bell=function(){var a=this;this._soundBell()&&this._soundService.playBellSound();this._visualBell()&&(this.element.classList.add("visual-bell-active"),clearTimeout(this._visualBellTimer),this._visualBellTimer=window.setTimeout(function(){a.element.classList.remove("visual-bell-active")},200))},b.prototype.resize=function(a,b){var c;isNaN(a)||isNaN(b)||(a!==this.cols||b!==this.rows?(a<Fa.MINIMUM_COLS&&(a=Fa.MINIMUM_COLS),b<
|
|
Fa.MINIMUM_ROWS&&(b=Fa.MINIMUM_ROWS),this.buffers.resize(a,b),this._bufferService.resize(a,b),this.buffers.setupTabStops(this.cols),null===(c=this._charSizeService)||void 0===c||c.measure(),this.viewport.syncScrollArea(!0),this.refresh(0,this.rows-1),this._onResize.fire({cols:a,rows:b})):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure())},b.prototype.clear=function(){if(0!==this.buffer.ybase||0!==this.buffer.y){this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+
|
|
this.buffer.y));this.buffer.lines.length=1;this.buffer.ydisp=0;this.buffer.ybase=0;this.buffer.y=0;for(var a=1;a<this.rows;a++)this.buffer.lines.push(this.buffer.getBlankLine(H.DEFAULT_ATTR_DATA));this.refresh(0,this.rows-1);this._onScroll.fire(this.buffer.ydisp)}},b.prototype.is=function(a){return 0===(this.options.termName+"").indexOf(a)},b.prototype.handleTitle=function(a){this._onTitleChange.fire(a)},b.prototype.reset=function(){var a,b;this.options.rows=this.rows;this.options.cols=this.cols;
|
|
var c=this._customKeyEventHandler,d=this._inputHandler,e=this._userScrolling;this._setup();this._bufferService.reset();this._coreService.reset();this._coreMouseService.reset();null===(a=this._selectionService)||void 0===a||a.reset();this._customKeyEventHandler=c;this._inputHandler=d;this._userScrolling=e;this.refresh(0,this.rows-1);null===(b=this.viewport)||void 0===b||b.syncScrollArea()},b.prototype.cancel=function(a,b){if(this.options.cancelEvents||b)return a.preventDefault(),a.stopPropagation(),
|
|
!1},b.prototype._visualBell=function(){return!1},b.prototype._soundBell=function(){return"sound"===this.options.bellStyle},b.prototype.write=function(a,b){this._writeBuffer.write(a,b)},b.prototype.writeSync=function(a){this._writeBuffer.writeSync(a)},b}(a.Disposable);b.Terminal=d},function(a,b,d){var c=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,
|
|
b,c,d);else for(var q=a.length-1;0<=q;q--)(e=a[q])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},g=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var f=d(4),h=d(0);a=function(){function a(a,b,c,d,e,g){this._textarea=a;this._compositionView=b;this._bufferService=c;this._optionsService=d;this._charSizeService=e;this._coreService=g;this._isSendingComposition=this._isComposing=!1;this._compositionPosition=
|
|
{start:0,end:0}}return a.prototype.compositionstart=function(){this._isComposing=!0;this._compositionPosition.start=this._textarea.value.length;this._compositionView.textContent="";this._compositionView.classList.add("active")},a.prototype.compositionupdate=function(a){var b=this;this._compositionView.textContent=a.data;this.updateCompositionElements();setTimeout(function(){b._compositionPosition.end=b._textarea.value.length},0)},a.prototype.compositionend=function(){this._finalizeComposition(!0)},
|
|
a.prototype.keydown=function(a){if(this._isComposing||this._isSendingComposition){if(229===a.keyCode||16===a.keyCode||17===a.keyCode||18===a.keyCode)return!1;this._finalizeComposition(!1)}return 229!==a.keyCode||(this._handleAnyTextareaChanges(),!1)},a.prototype._finalizeComposition=function(a){var b=this;if(this._compositionView.classList.remove("active"),this._isComposing=!1,this._clearTextareaPosition(),a){var c=this._compositionPosition.start,d=this._compositionPosition.end;this._isSendingComposition=
|
|
!0;setTimeout(function(){if(b._isSendingComposition){b._isSendingComposition=!1;var a=b._isComposing?b._textarea.value.substring(c,d):b._textarea.value.substring(c);b._coreService.triggerDataEvent(a,!0)}},0)}else this._isSendingComposition=!1,a=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end),this._coreService.triggerDataEvent(a,!0)},a.prototype._handleAnyTextareaChanges=function(){var a=this,b=this._textarea.value;setTimeout(function(){if(!a._isComposing){var c=
|
|
a._textarea.value.replace(b,"");0<c.length&&a._coreService.triggerDataEvent(c,!0)}},0)},a.prototype.updateCompositionElements=function(a){var b=this;if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){var c=Math.ceil(this._charSizeService.height*this._optionsService.options.lineHeight),d=this._bufferService.buffer.y*c,e=this._bufferService.buffer.x*this._charSizeService.width;this._compositionView.style.left=e+"px";this._compositionView.style.top=d+"px";this._compositionView.style.height=
|
|
c+"px";this._compositionView.style.lineHeight=c+"px";this._compositionView.style.fontFamily=this._optionsService.options.fontFamily;this._compositionView.style.fontSize=this._optionsService.options.fontSize+"px";c=this._compositionView.getBoundingClientRect();this._textarea.style.left=e+"px";this._textarea.style.top=d+"px";this._textarea.style.width=c.width+"px";this._textarea.style.height=c.height+"px";this._textarea.style.lineHeight=c.height+"px"}a||setTimeout(function(){return b.updateCompositionElements(!0)},
|
|
0)}},a.prototype._clearTextareaPosition=function(){this._textarea.style.left="";this._textarea.style.top=""},a=c([g(2,h.IBufferService),g(3,h.IOptionsService),g(4,f.ICharSizeService),g(5,h.ICoreService)],a)}();b.CompositionHelper=a},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=
|
|
a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)}),f=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var l=a.length-1;0<=l;l--)(e=a[l])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},h=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,
|
|
"__esModule",{value:!0});a=d(2);var k=d(7),r=d(4),q=d(0);d=function(a){function b(b,c,d,e,g,f,q){var l=a.call(this)||this;return l._scrollLines=b,l._viewportElement=c,l._scrollArea=d,l._bufferService=e,l._optionsService=g,l._charSizeService=f,l._renderService=q,l.scrollBarWidth=0,l._currentRowHeight=0,l._lastRecordedBufferLength=0,l._lastRecordedViewportHeight=0,l._lastRecordedBufferHeight=0,l._lastTouchY=0,l._lastScrollTop=0,l._wheelPartialScroll=0,l._refreshAnimationFrame=null,l._ignoreNextScrollEvent=
|
|
!1,l.scrollBarWidth=l._viewportElement.offsetWidth-l._scrollArea.offsetWidth||15,l.register(k.addDisposableDomListener(l._viewportElement,"scroll",l._onScroll.bind(l))),setTimeout(function(){return l.syncScrollArea()},0),l}return g(b,a),b.prototype.onThemeChange=function(a){this._viewportElement.style.backgroundColor=a.background.css},b.prototype._refresh=function(a){var b=this;if(a)return this._innerRefresh(),void(null!==this._refreshAnimationFrame&&cancelAnimationFrame(this._refreshAnimationFrame));
|
|
null===this._refreshAnimationFrame&&(this._refreshAnimationFrame=requestAnimationFrame(function(){return b._innerRefresh()}))},b.prototype._innerRefresh=function(){if(0<this._charSizeService.height){this._currentRowHeight=this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio;this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;var a=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.canvasHeight);
|
|
this._lastRecordedBufferHeight!==a&&(this._lastRecordedBufferHeight=a,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}a=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==a&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=a);this._refreshAnimationFrame=null},b.prototype.syncScrollArea=function(a){if(void 0===a&&(a=!1),this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=
|
|
this._bufferService.buffer.lines.length,void this._refresh(a);this._lastRecordedViewportHeight===this._renderService.dimensions.canvasHeight?this._lastScrollTop===this._bufferService.buffer.ydisp*this._currentRowHeight&&this._lastScrollTop===this._viewportElement.scrollTop&&this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio===this._currentRowHeight||this._refresh(a):this._refresh(a)},b.prototype._onScroll=function(){if(this._lastScrollTop=this._viewportElement.scrollTop,this._viewportElement.offsetParent)this._ignoreNextScrollEvent?
|
|
this._ignoreNextScrollEvent=!1:this._scrollLines(Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp,!0)},b.prototype._bubbleScroll=function(a,b){var c=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(0>b&&0!==this._viewportElement.scrollTop||0<b&&c<this._lastRecordedBufferHeight)||(a.cancelable&&a.preventDefault(),!1)},b.prototype.onWheel=function(a){var b=this._getPixelsScrolled(a);return 0!==b&&(this._viewportElement.scrollTop+=b,this._bubbleScroll(a,
|
|
b))},b.prototype._getPixelsScrolled=function(a){if(0===a.deltaY)return 0;var b=this._applyScrollModifier(a.deltaY,a);return a.deltaMode===WheelEvent.DOM_DELTA_LINE?b*=this._currentRowHeight:a.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(b*=this._currentRowHeight*this._bufferService.rows),b},b.prototype.getLinesScrolled=function(a){if(0===a.deltaY)return 0;var b=this._applyScrollModifier(a.deltaY,a);return a.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(b/=this._currentRowHeight+0,this._wheelPartialScroll+=b,
|
|
b=Math.floor(Math.abs(this._wheelPartialScroll))*(0<this._wheelPartialScroll?1:-1),this._wheelPartialScroll%=1):a.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(b*=this._bufferService.rows),b},b.prototype._applyScrollModifier=function(a,b){var c=this._optionsService.options.fastScrollModifier;return"alt"===c&&b.altKey||"ctrl"===c&&b.ctrlKey||"shift"===c&&b.shiftKey?a*this._optionsService.options.fastScrollSensitivity*this._optionsService.options.scrollSensitivity:a*this._optionsService.options.scrollSensitivity},
|
|
b.prototype.onTouchStart=function(a){this._lastTouchY=a.touches[0].pageY},b.prototype.onTouchMove=function(a){var b=this._lastTouchY-a.touches[0].pageY;return this._lastTouchY=a.touches[0].pageY,0!==b&&(this._viewportElement.scrollTop+=b,this._bubbleScroll(a,b))},b=f([h(3,q.IBufferService),h(4,q.IOptionsService),h(5,r.ICharSizeService),h(6,r.IRenderService)],b)}(a.Disposable);b.Viewport=d},function(a,b){function c(a){return a.replace(/\r?\n/g,"\r")}function e(a,b){return b?"\u001b[200~"+a+"\u001b[201~":
|
|
a}function g(a,b,d,g){a=e(a=c(a),d);g.triggerDataEvent(a,!0);b.value=""}function f(a,b,c){var d=c.getBoundingClientRect();c=a.clientX-d.left-10;a=a.clientY-d.top-10;b.style.position="absolute";b.style.width="20px";b.style.height="20px";b.style.left=c+"px";b.style.top=a+"px";b.style.zIndex="1000";b.focus();setTimeout(function(){b.style.position="";b.style.width="";b.style.height="";b.style.left="";b.style.top="";b.style.zIndex=""},200)}Object.defineProperty(b,"__esModule",{value:!0});b.prepareTextForTerminal=
|
|
c;b.bracketTextForPaste=e;b.copyHandler=function(a,b){a.clipboardData&&a.clipboardData.setData("text/plain",b.selectionText);a.preventDefault()};b.handlePasteEvent=function(a,b,c,d){a.stopPropagation();a.clipboardData&&g(a.clipboardData.getData("text/plain"),b,c,d)};b.paste=g;b.moveTextAreaUnderMouseCursor=f;b.rightClickHandler=function(a,b,c,d,e){f(a,b,c);e&&!d.isClickInSelection(a)&&d.selectWordAtCursor(a);b.value=d.selectionText;b.select()}},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,
|
|
b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});var f=d(12),h=d(18),k=d(19),r=d(39);a=d(2);var q=d(15),t=d(8),v=d(16),l=d(1),n=d(3),y=d(5),B=d(6),O=d(21),X=d(23),M={"(":0,")":1,"*":2,"+":3,"-":1,".":2},ha=function(){function a(a,
|
|
b,c,d){this._bufferService=a;this._coreService=b;this._logService=c;this._optionsService=d;this._data=new Uint32Array(0)}return a.prototype.hook=function(){this._data=new Uint32Array(0)},a.prototype.put=function(a,b,c){this._data=q.concat(this._data,a.subarray(b,c))},a.prototype.unhook=function(a){if(a)switch(a=t.utf32ToString(this._data),this._data=new Uint32Array(0),a){case '"q':return this._coreService.triggerDataEvent(f.C0.ESC+'P1$r0"q'+f.C0.ESC+"\\");case '"p':return this._coreService.triggerDataEvent(f.C0.ESC+
|
|
'P1$r61"p'+f.C0.ESC+"\\");case "r":return this._coreService.triggerDataEvent(f.C0.ESC+"P1$r"+(this._bufferService.buffer.scrollTop+1+";"+(this._bufferService.buffer.scrollBottom+1)+"r")+f.C0.ESC+"\\");case "m":return this._coreService.triggerDataEvent(f.C0.ESC+"P1$r0m"+f.C0.ESC+"\\");case " q":return a={block:2,underline:4,bar:6}[this._optionsService.options.cursorStyle],a-=this._optionsService.options.cursorBlink?1:0,this._coreService.triggerDataEvent(f.C0.ESC+"P1$r"+a+" q"+f.C0.ESC+"\\");default:this._logService.debug("Unknown DCS $q %s",
|
|
a),this._coreService.triggerDataEvent(f.C0.ESC+"P0$r"+f.C0.ESC+"\\")}else this._data=new Uint32Array(0)},a}();d=function(a){function b(b,c,d,e,g,q,k,v){function B(a){H._parser.setEscHandler({intermediates:"(",final:a},function(){return n.selectCharset("("+a)});H._parser.setEscHandler({intermediates:")",final:a},function(){return n.selectCharset(")"+a)});H._parser.setEscHandler({intermediates:"*",final:a},function(){return n.selectCharset("*"+a)});H._parser.setEscHandler({intermediates:"+",final:a},
|
|
function(){return n.selectCharset("+"+a)});H._parser.setEscHandler({intermediates:"-",final:a},function(){return n.selectCharset("-"+a)});H._parser.setEscHandler({intermediates:".",final:a},function(){return n.selectCharset("."+a)});H._parser.setEscHandler({intermediates:"/",final:a},function(){return n.selectCharset("/"+a)})}void 0===v&&(v=new r.EscapeSequenceParser);var n=a.call(this)||this;n._terminal=b;n._bufferService=c;n._coreService=d;n._dirtyRowService=e;n._logService=g;n._optionsService=
|
|
q;n._coreMouseService=k;n._parser=v;n._parseBuffer=new Uint32Array(4096);n._stringDecoder=new t.StringToUtf32;n._utf8Decoder=new t.Utf8ToUtf32;n._workCell=new y.CellData;n._onCursorMove=new l.EventEmitter;n._onLineFeed=new l.EventEmitter;n._onScroll=new l.EventEmitter;n.register(n._parser);n._parser.setCsiHandlerFallback(function(a,b){n._logService.debug("Unknown CSI code: ",{identifier:n._parser.identToString(a),params:b.toArray()})});n._parser.setEscHandlerFallback(function(a){n._logService.debug("Unknown ESC code: ",
|
|
{identifier:n._parser.identToString(a)})});n._parser.setExecuteHandlerFallback(function(a){n._logService.debug("Unknown EXECUTE code: ",{code:a})});n._parser.setOscHandlerFallback(function(a,b,c){n._logService.debug("Unknown OSC code: ",{identifier:a,action:b,data:c})});n._parser.setDcsHandlerFallback(function(a,b,c){"HOOK"===b&&(c=c.toArray());n._logService.debug("Unknown DCS code: ",{identifier:n._parser.identToString(a),action:b,payload:c})});n._parser.setPrintHandler(function(a,b,c){return n.print(a,
|
|
b,c)});n._parser.setCsiHandler({final:"@"},function(a){return n.insertChars(a)});n._parser.setCsiHandler({intermediates:" ",final:"@"},function(a){return n.scrollLeft(a)});n._parser.setCsiHandler({final:"A"},function(a){return n.cursorUp(a)});n._parser.setCsiHandler({intermediates:" ",final:"A"},function(a){return n.scrollRight(a)});n._parser.setCsiHandler({final:"B"},function(a){return n.cursorDown(a)});n._parser.setCsiHandler({final:"C"},function(a){return n.cursorForward(a)});n._parser.setCsiHandler({final:"D"},
|
|
function(a){return n.cursorBackward(a)});n._parser.setCsiHandler({final:"E"},function(a){return n.cursorNextLine(a)});n._parser.setCsiHandler({final:"F"},function(a){return n.cursorPrecedingLine(a)});n._parser.setCsiHandler({final:"G"},function(a){return n.cursorCharAbsolute(a)});n._parser.setCsiHandler({final:"H"},function(a){return n.cursorPosition(a)});n._parser.setCsiHandler({final:"I"},function(a){return n.cursorForwardTab(a)});n._parser.setCsiHandler({final:"J"},function(a){return n.eraseInDisplay(a)});
|
|
n._parser.setCsiHandler({prefix:"?",final:"J"},function(a){return n.eraseInDisplay(a)});n._parser.setCsiHandler({final:"K"},function(a){return n.eraseInLine(a)});n._parser.setCsiHandler({prefix:"?",final:"K"},function(a){return n.eraseInLine(a)});n._parser.setCsiHandler({final:"L"},function(a){return n.insertLines(a)});n._parser.setCsiHandler({final:"M"},function(a){return n.deleteLines(a)});n._parser.setCsiHandler({final:"P"},function(a){return n.deleteChars(a)});n._parser.setCsiHandler({final:"S"},
|
|
function(a){return n.scrollUp(a)});n._parser.setCsiHandler({final:"T"},function(a){return n.scrollDown(a)});n._parser.setCsiHandler({final:"X"},function(a){return n.eraseChars(a)});n._parser.setCsiHandler({final:"Z"},function(a){return n.cursorBackwardTab(a)});n._parser.setCsiHandler({final:"`"},function(a){return n.charPosAbsolute(a)});n._parser.setCsiHandler({final:"a"},function(a){return n.hPositionRelative(a)});n._parser.setCsiHandler({final:"b"},function(a){return n.repeatPrecedingCharacter(a)});
|
|
n._parser.setCsiHandler({final:"c"},function(a){return n.sendDeviceAttributesPrimary(a)});n._parser.setCsiHandler({prefix:">",final:"c"},function(a){return n.sendDeviceAttributesSecondary(a)});n._parser.setCsiHandler({final:"d"},function(a){return n.linePosAbsolute(a)});n._parser.setCsiHandler({final:"e"},function(a){return n.vPositionRelative(a)});n._parser.setCsiHandler({final:"f"},function(a){return n.hVPosition(a)});n._parser.setCsiHandler({final:"g"},function(a){return n.tabClear(a)});n._parser.setCsiHandler({final:"h"},
|
|
function(a){return n.setMode(a)});n._parser.setCsiHandler({prefix:"?",final:"h"},function(a){return n.setModePrivate(a)});n._parser.setCsiHandler({final:"l"},function(a){return n.resetMode(a)});n._parser.setCsiHandler({prefix:"?",final:"l"},function(a){return n.resetModePrivate(a)});n._parser.setCsiHandler({final:"m"},function(a){return n.charAttributes(a)});n._parser.setCsiHandler({final:"n"},function(a){return n.deviceStatus(a)});n._parser.setCsiHandler({prefix:"?",final:"n"},function(a){return n.deviceStatusPrivate(a)});
|
|
n._parser.setCsiHandler({intermediates:"!",final:"p"},function(a){return n.softReset(a)});n._parser.setCsiHandler({intermediates:" ",final:"q"},function(a){return n.setCursorStyle(a)});n._parser.setCsiHandler({final:"r"},function(a){return n.setScrollRegion(a)});n._parser.setCsiHandler({final:"s"},function(a){return n.saveCursor(a)});n._parser.setCsiHandler({final:"u"},function(a){return n.restoreCursor(a)});n._parser.setCsiHandler({intermediates:"'",final:"}"},function(a){return n.insertColumns(a)});
|
|
n._parser.setCsiHandler({intermediates:"'",final:"~"},function(a){return n.deleteColumns(a)});n._parser.setExecuteHandler(f.C0.BEL,function(){return n.bell()});n._parser.setExecuteHandler(f.C0.LF,function(){return n.lineFeed()});n._parser.setExecuteHandler(f.C0.VT,function(){return n.lineFeed()});n._parser.setExecuteHandler(f.C0.FF,function(){return n.lineFeed()});n._parser.setExecuteHandler(f.C0.CR,function(){return n.carriageReturn()});n._parser.setExecuteHandler(f.C0.BS,function(){return n.backspace()});
|
|
n._parser.setExecuteHandler(f.C0.HT,function(){return n.tab()});n._parser.setExecuteHandler(f.C0.SO,function(){return n.shiftOut()});n._parser.setExecuteHandler(f.C0.SI,function(){return n.shiftIn()});n._parser.setExecuteHandler(f.C1.IND,function(){return n.index()});n._parser.setExecuteHandler(f.C1.NEL,function(){return n.nextLine()});n._parser.setExecuteHandler(f.C1.HTS,function(){return n.tabSet()});n._parser.setOscHandler(0,new O.OscHandler(function(a){return n.setTitle(a)}));n._parser.setOscHandler(2,
|
|
new O.OscHandler(function(a){return n.setTitle(a)}));n._parser.setEscHandler({final:"7"},function(){return n.saveCursor()});n._parser.setEscHandler({final:"8"},function(){return n.restoreCursor()});n._parser.setEscHandler({final:"D"},function(){return n.index()});n._parser.setEscHandler({final:"E"},function(){return n.nextLine()});n._parser.setEscHandler({final:"H"},function(){return n.tabSet()});n._parser.setEscHandler({final:"M"},function(){return n.reverseIndex()});n._parser.setEscHandler({final:"="},
|
|
function(){return n.keypadApplicationMode()});n._parser.setEscHandler({final:">"},function(){return n.keypadNumericMode()});n._parser.setEscHandler({final:"c"},function(){return n.reset()});n._parser.setEscHandler({final:"n"},function(){return n.setgLevel(2)});n._parser.setEscHandler({final:"o"},function(){return n.setgLevel(3)});n._parser.setEscHandler({final:"|"},function(){return n.setgLevel(3)});n._parser.setEscHandler({final:"}"},function(){return n.setgLevel(2)});n._parser.setEscHandler({final:"~"},
|
|
function(){return n.setgLevel(1)});n._parser.setEscHandler({intermediates:"%",final:"@"},function(){return n.selectDefaultCharset()});n._parser.setEscHandler({intermediates:"%",final:"G"},function(){return n.selectDefaultCharset()});var H=this,qa;for(qa in h.CHARSETS)B(qa);return n._parser.setEscHandler({intermediates:"#",final:"8"},function(){return n.screenAlignmentPattern()}),n._parser.setErrorHandler(function(a){return n._logService.error("Parsing error: ",a),a}),n._parser.setDcsHandler({intermediates:"$",
|
|
final:"q"},new ha(n._bufferService,n._coreService,n._logService,n._optionsService)),n}return g(b,a),Object.defineProperty(b.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!0,configurable:!0}),b.prototype.dispose=function(){a.prototype.dispose.call(this)},
|
|
b.prototype.parse=function(a){var b=this._bufferService.buffer,c=b.x,d=b.y;if(this._logService.debug("parsing data",a),this._parseBuffer.length<a.length&&131072>this._parseBuffer.length&&(this._parseBuffer=new Uint32Array(Math.min(a.length,131072))),this._dirtyRowService.clearRange(),131072<a.length)for(var e=0;e<a.length;e+=131072){var g=e+131072<a.length?e+131072:a.length;g="string"==typeof a?this._stringDecoder.decode(a.substring(e,g),this._parseBuffer):this._utf8Decoder.decode(a.subarray(e,g),
|
|
this._parseBuffer);this._parser.parse(this._parseBuffer,g)}else g="string"==typeof a?this._stringDecoder.decode(a,this._parseBuffer):this._utf8Decoder.decode(a,this._parseBuffer),this._parser.parse(this._parseBuffer,g);(b=this._bufferService.buffer).x===c&&b.y===d||this._onCursorMove.fire();this._terminal.refresh(this._dirtyRowService.start,this._dirtyRowService.end)},b.prototype.print=function(a,b,c){var d,e=this._bufferService.buffer,g=this._terminal.charset,f=this._optionsService.options.screenReaderMode,
|
|
l=this._bufferService.cols,q=this._terminal.wraparoundMode,h=this._terminal.insertMode,v=this._terminal.curAttrData,r=e.lines.get(e.y+e.ybase);this._dirtyRowService.markDirty(e.y);for(var y=b;y<c;++y){if(d=a[y],b=k.wcwidth(d),127>d&&g){var B=g[String.fromCharCode(d)];B&&(d=B.charCodeAt(0))}if(f&&this._terminal.onA11yCharEmitter.fire(t.stringFromCodePoint(d)),b||!e.x){if(e.x+b-1>=l)if(q)e.x=0,e.y++,e.y===e.scrollBottom+1?(e.y--,this._terminal.scroll(!0)):(e.y>=this._bufferService.rows&&(e.y=this._bufferService.rows-
|
|
1),e.lines.get(e.y).isWrapped=!0),r=e.lines.get(e.y+e.ybase);else if(e.x=l-1,2===b)continue;if(h&&(r.insertCells(e.x,b,e.getNullCell(v)),2===r.getWidth(l-1)&&r.setCellFromCodePoint(l-1,n.NULL_CELL_CODE,n.NULL_CELL_WIDTH,v.fg,v.bg)),r.setCellFromCodePoint(e.x++,d,b,v.fg,v.bg),0<b)for(;--b;)r.setCellFromCodePoint(e.x++,0,0,v.fg,v.bg)}else r.getWidth(e.x-1)?r.addCodepointToCell(e.x-1,d):r.addCodepointToCell(e.x-2,d)}c&&(r.loadCell(e.x-1,this._workCell),2===this._workCell.getWidth()||65535<this._workCell.getCode()?
|
|
this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content);this._dirtyRowService.markDirty(e.y)},b.prototype.addCsiHandler=function(a,b){return this._parser.addCsiHandler(a,b)},b.prototype.addDcsHandler=function(a,b){return this._parser.addDcsHandler(a,new X.DcsHandler(b))},b.prototype.addEscHandler=function(a,b){return this._parser.addEscHandler(a,b)},b.prototype.addOscHandler=
|
|
function(a,b){return this._parser.addOscHandler(a,new O.OscHandler(b))},b.prototype.bell=function(){this._terminal.bell()},b.prototype.lineFeed=function(){var a=this._bufferService.buffer;this._dirtyRowService.markDirty(a.y);this._optionsService.options.convertEol&&(a.x=0);a.y++;a.y===a.scrollBottom+1?(a.y--,this._terminal.scroll()):a.y>=this._bufferService.rows&&(a.y=this._bufferService.rows-1);a.x>=this._bufferService.cols&&a.x--;this._dirtyRowService.markDirty(a.y);this._onLineFeed.fire()},b.prototype.carriageReturn=
|
|
function(){this._bufferService.buffer.x=0},b.prototype.backspace=function(){this._restrictCursor();0<this._bufferService.buffer.x&&this._bufferService.buffer.x--},b.prototype.tab=function(){if(!(this._bufferService.buffer.x>=this._bufferService.cols)){var a=this._bufferService.buffer.x;this._bufferService.buffer.x=this._bufferService.buffer.nextStop();this._optionsService.options.screenReaderMode&&this._terminal.onA11yTabEmitter.fire(this._bufferService.buffer.x-a)}},b.prototype.shiftOut=function(){this._terminal.setgLevel(1)},
|
|
b.prototype.shiftIn=function(){this._terminal.setgLevel(0)},b.prototype._restrictCursor=function(){this._bufferService.buffer.x=Math.min(this._bufferService.cols-1,Math.max(0,this._bufferService.buffer.x));this._bufferService.buffer.y=this._terminal.originMode?Math.min(this._bufferService.buffer.scrollBottom,Math.max(this._bufferService.buffer.scrollTop,this._bufferService.buffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._bufferService.buffer.y));this._dirtyRowService.markDirty(this._bufferService.buffer.y)},
|
|
b.prototype._setCursor=function(a,b){this._dirtyRowService.markDirty(this._bufferService.buffer.y);this._terminal.originMode?(this._bufferService.buffer.x=a,this._bufferService.buffer.y=this._bufferService.buffer.scrollTop+b):(this._bufferService.buffer.x=a,this._bufferService.buffer.y=b);this._restrictCursor();this._dirtyRowService.markDirty(this._bufferService.buffer.y)},b.prototype._moveCursor=function(a,b){this._restrictCursor();this._setCursor(this._bufferService.buffer.x+a,this._bufferService.buffer.y+
|
|
b)},b.prototype.cursorUp=function(a){var b=this._bufferService.buffer.y-this._bufferService.buffer.scrollTop;0<=b?this._moveCursor(0,-Math.min(b,a.params[0]||1)):this._moveCursor(0,-(a.params[0]||1))},b.prototype.cursorDown=function(a){var b=this._bufferService.buffer.scrollBottom-this._bufferService.buffer.y;0<=b?this._moveCursor(0,Math.min(b,a.params[0]||1)):this._moveCursor(0,a.params[0]||1)},b.prototype.cursorForward=function(a){this._moveCursor(a.params[0]||1,0)},b.prototype.cursorBackward=function(a){this._moveCursor(-(a.params[0]||
|
|
1),0)},b.prototype.cursorNextLine=function(a){this.cursorDown(a);this._bufferService.buffer.x=0},b.prototype.cursorPrecedingLine=function(a){this.cursorUp(a);this._bufferService.buffer.x=0},b.prototype.cursorCharAbsolute=function(a){this._setCursor((a.params[0]||1)-1,this._bufferService.buffer.y)},b.prototype.cursorPosition=function(a){this._setCursor(2<=a.length?(a.params[1]||1)-1:0,(a.params[0]||1)-1)},b.prototype.charPosAbsolute=function(a){this._setCursor((a.params[0]||1)-1,this._bufferService.buffer.y)},
|
|
b.prototype.hPositionRelative=function(a){this._moveCursor(a.params[0]||1,0)},b.prototype.linePosAbsolute=function(a){this._setCursor(this._bufferService.buffer.x,(a.params[0]||1)-1)},b.prototype.vPositionRelative=function(a){this._moveCursor(0,a.params[0]||1)},b.prototype.hVPosition=function(a){this.cursorPosition(a)},b.prototype.tabClear=function(a){a=a.params[0];0===a?delete this._bufferService.buffer.tabs[this._bufferService.buffer.x]:3===a&&(this._bufferService.buffer.tabs={})},b.prototype.cursorForwardTab=
|
|
function(a){if(!(this._bufferService.buffer.x>=this._bufferService.cols))for(a=a.params[0]||1;a--;)this._bufferService.buffer.x=this._bufferService.buffer.nextStop()},b.prototype.cursorBackwardTab=function(a){if(!(this._bufferService.buffer.x>=this._bufferService.cols)){a=a.params[0]||1;for(var b=this._bufferService.buffer;a--;)b.x=b.prevStop()}},b.prototype._eraseInBufferLine=function(a,b,c,d){void 0===d&&(d=!1);a=this._bufferService.buffer.lines.get(this._bufferService.buffer.ybase+a);a.replaceCells(b,
|
|
c,this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData()));d&&(a.isWrapped=!1)},b.prototype._resetBufferLine=function(a){a=this._bufferService.buffer.lines.get(this._bufferService.buffer.ybase+a);a.fill(this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData()));a.isWrapped=!1},b.prototype.eraseInDisplay=function(a){switch(this._restrictCursor(),a.params[0]){case 0:a=this._bufferService.buffer.y;this._dirtyRowService.markDirty(a);for(this._eraseInBufferLine(a++,this._bufferService.buffer.x,
|
|
this._bufferService.cols,0===this._bufferService.buffer.x);a<this._bufferService.rows;a++)this._resetBufferLine(a);this._dirtyRowService.markDirty(a);break;case 1:a=this._bufferService.buffer.y;this._dirtyRowService.markDirty(a);this._eraseInBufferLine(a,0,this._bufferService.buffer.x+1,!0);for(this._bufferService.buffer.x+1>=this._bufferService.cols&&(this._bufferService.buffer.lines.get(a+1).isWrapped=!1);a--;)this._resetBufferLine(a);this._dirtyRowService.markDirty(0);break;case 2:a=this._bufferService.rows;
|
|
for(this._dirtyRowService.markDirty(a-1);a--;)this._resetBufferLine(a);this._dirtyRowService.markDirty(0);break;case 3:a=this._bufferService.buffer.lines.length-this._bufferService.rows,0<a&&(this._bufferService.buffer.lines.trimStart(a),this._bufferService.buffer.ybase=Math.max(this._bufferService.buffer.ybase-a,0),this._bufferService.buffer.ydisp=Math.max(this._bufferService.buffer.ydisp-a,0),this._onScroll.fire(0))}},b.prototype.eraseInLine=function(a){switch(this._restrictCursor(),a.params[0]){case 0:this._eraseInBufferLine(this._bufferService.buffer.y,
|
|
this._bufferService.buffer.x,this._bufferService.cols);break;case 1:this._eraseInBufferLine(this._bufferService.buffer.y,0,this._bufferService.buffer.x+1);break;case 2:this._eraseInBufferLine(this._bufferService.buffer.y,0,this._bufferService.cols)}this._dirtyRowService.markDirty(this._bufferService.buffer.y)},b.prototype.insertLines=function(a){this._restrictCursor();a=a.params[0]||1;var b=this._bufferService.buffer;if(!(b.y>b.scrollBottom||b.y<b.scrollTop)){for(var c=b.y+b.ybase,d=this._bufferService.rows-
|
|
1+b.ybase-(this._bufferService.rows-1-b.scrollBottom)+1;a--;)b.lines.splice(d-1,1),b.lines.splice(c,0,b.getBlankLine(this._terminal.eraseAttrData()));this._dirtyRowService.markRangeDirty(b.y,b.scrollBottom);b.x=0}},b.prototype.deleteLines=function(a){this._restrictCursor();a=a.params[0]||1;var b=this._bufferService.buffer;if(!(b.y>b.scrollBottom||b.y<b.scrollTop)){var c=b.y+b.ybase;var d=this._bufferService.rows-1-b.scrollBottom;for(d=this._bufferService.rows-1+b.ybase-d;a--;)b.lines.splice(c,1),
|
|
b.lines.splice(d,0,b.getBlankLine(this._terminal.eraseAttrData()));this._dirtyRowService.markRangeDirty(b.y,b.scrollBottom);b.x=0}},b.prototype.insertChars=function(a){this._restrictCursor();var b=this._bufferService.buffer.lines.get(this._bufferService.buffer.y+this._bufferService.buffer.ybase);b&&(b.insertCells(this._bufferService.buffer.x,a.params[0]||1,this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData())),this._dirtyRowService.markDirty(this._bufferService.buffer.y))},b.prototype.deleteChars=
|
|
function(a){this._restrictCursor();var b=this._bufferService.buffer.lines.get(this._bufferService.buffer.y+this._bufferService.buffer.ybase);b&&(b.deleteCells(this._bufferService.buffer.x,a.params[0]||1,this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData())),this._dirtyRowService.markDirty(this._bufferService.buffer.y))},b.prototype.scrollUp=function(a){a=a.params[0]||1;for(var b=this._bufferService.buffer;a--;)b.lines.splice(b.ybase+b.scrollTop,1),b.lines.splice(b.ybase+b.scrollBottom,
|
|
0,b.getBlankLine(this._terminal.eraseAttrData()));this._dirtyRowService.markRangeDirty(b.scrollTop,b.scrollBottom)},b.prototype.scrollDown=function(a){a=a.params[0]||1;for(var b=this._bufferService.buffer;a--;)b.lines.splice(b.ybase+b.scrollBottom,1),b.lines.splice(b.ybase+b.scrollTop,0,b.getBlankLine(v.DEFAULT_ATTR_DATA));this._dirtyRowService.markRangeDirty(b.scrollTop,b.scrollBottom)},b.prototype.scrollLeft=function(a){var b=this._bufferService.buffer;if(!(b.y>b.scrollBottom||b.y<b.scrollTop)){a=
|
|
a.params[0]||1;for(var c=b.scrollTop;c<=b.scrollBottom;++c){var d=b.lines.get(b.ybase+c);d.deleteCells(0,a,b.getNullCell(this._terminal.eraseAttrData()));d.isWrapped=!1}this._dirtyRowService.markRangeDirty(b.scrollTop,b.scrollBottom)}},b.prototype.scrollRight=function(a){var b=this._bufferService.buffer;if(!(b.y>b.scrollBottom||b.y<b.scrollTop)){a=a.params[0]||1;for(var c=b.scrollTop;c<=b.scrollBottom;++c){var d=b.lines.get(b.ybase+c);d.insertCells(0,a,b.getNullCell(this._terminal.eraseAttrData()));
|
|
d.isWrapped=!1}this._dirtyRowService.markRangeDirty(b.scrollTop,b.scrollBottom)}},b.prototype.insertColumns=function(a){var b=this._bufferService.buffer;if(!(b.y>b.scrollBottom||b.y<b.scrollTop)){a=a.params[0]||1;for(var c=b.scrollTop;c<=b.scrollBottom;++c){var d=this._bufferService.buffer.lines.get(b.ybase+c);d.insertCells(b.x,a,b.getNullCell(this._terminal.eraseAttrData()));d.isWrapped=!1}this._dirtyRowService.markRangeDirty(b.scrollTop,b.scrollBottom)}},b.prototype.deleteColumns=function(a){var b=
|
|
this._bufferService.buffer;if(!(b.y>b.scrollBottom||b.y<b.scrollTop)){a=a.params[0]||1;for(var c=b.scrollTop;c<=b.scrollBottom;++c){var d=b.lines.get(b.ybase+c);d.deleteCells(b.x,a,b.getNullCell(this._terminal.eraseAttrData()));d.isWrapped=!1}this._dirtyRowService.markRangeDirty(b.scrollTop,b.scrollBottom)}},b.prototype.eraseChars=function(a){this._restrictCursor();var b=this._bufferService.buffer.lines.get(this._bufferService.buffer.y+this._bufferService.buffer.ybase);b&&(b.replaceCells(this._bufferService.buffer.x,
|
|
this._bufferService.buffer.x+(a.params[0]||1),this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData())),this._dirtyRowService.markDirty(this._bufferService.buffer.y))},b.prototype.repeatPrecedingCharacter=function(a){if(this._parser.precedingCodepoint){a=a.params[0]||1;for(var b=new Uint32Array(a),c=0;c<a;++c)b[c]=this._parser.precedingCodepoint;this.print(b,0,b.length)}},b.prototype.sendDeviceAttributesPrimary=function(a){0<a.params[0]||(this._terminal.is("xterm")||this._terminal.is("rxvt-unicode")||
|
|
this._terminal.is("screen")?this._coreService.triggerDataEvent(f.C0.ESC+"[?1;2c"):this._terminal.is("linux")&&this._coreService.triggerDataEvent(f.C0.ESC+"[?6c"))},b.prototype.sendDeviceAttributesSecondary=function(a){0<a.params[0]||(this._terminal.is("xterm")?this._coreService.triggerDataEvent(f.C0.ESC+"[>0;276;0c"):this._terminal.is("rxvt-unicode")?this._coreService.triggerDataEvent(f.C0.ESC+"[>85;95;0c"):this._terminal.is("linux")?this._coreService.triggerDataEvent(a.params[0]+"c"):this._terminal.is("screen")&&
|
|
this._coreService.triggerDataEvent(f.C0.ESC+"[>83;40003;0c"))},b.prototype.setMode=function(a){for(var b=0;b<a.length;b++)switch(a.params[b]){case 4:this._terminal.insertMode=!0}},b.prototype.setModePrivate=function(a){for(var b=0;b<a.length;b++)switch(a.params[b]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._terminal.setgCharset(0,h.DEFAULT_CHARSET);this._terminal.setgCharset(1,h.DEFAULT_CHARSET);this._terminal.setgCharset(2,h.DEFAULT_CHARSET);this._terminal.setgCharset(3,
|
|
h.DEFAULT_CHARSET);break;case 3:this._terminal.savedCols=this._bufferService.cols;this._terminal.resize(132,this._bufferService.rows);this._terminal.reset();break;case 6:this._terminal.originMode=!0;this._setCursor(0,0);break;case 7:this._terminal.wraparoundMode=!0;break;case 66:this._logService.debug("Serial port requested application keypad.");this._terminal.applicationKeypad=!0;this._terminal.viewport&&this._terminal.viewport.syncScrollArea();break;case 9:this._coreMouseService.activeProtocol=
|
|
"X10";break;case 1E3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._terminal.sendFocus=!0;break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!1;
|
|
break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._terminal.eraseAttrData());this._terminal.refresh(0,this._bufferService.rows-1);this._terminal.viewport&&this._terminal.viewport.syncScrollArea();this._terminal.showCursor();break;case 2004:this._terminal.bracketedPasteMode=!0}},b.prototype.resetMode=function(a){for(var b=0;b<a.length;b++)switch(a.params[b]){case 4:this._terminal.insertMode=!1}},b.prototype.resetModePrivate=
|
|
function(a){for(var b=0;b<a.length;b++)switch(a.params[b]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:132===this._bufferService.cols&&this._terminal.savedCols&&this._terminal.resize(this._terminal.savedCols,this._bufferService.rows);delete this._terminal.savedCols;this._terminal.reset();break;case 6:this._terminal.originMode=!1;this._setCursor(0,0);break;case 7:this._terminal.wraparoundMode=!1;break;case 66:this._logService.debug("Switching back to normal keypad.");
|
|
this._terminal.applicationKeypad=!1;this._terminal.viewport&&this._terminal.viewport.syncScrollArea();break;case 9:case 1E3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._terminal.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=
|
|
!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer();1049===a.params[b]&&this.restoreCursor();this._terminal.refresh(0,this._bufferService.rows-1);this._terminal.viewport&&this._terminal.viewport.syncScrollArea();this._terminal.showCursor();break;case 2004:this._terminal.bracketedPasteMode=!1}},b.prototype._extractColor=function(a,b,c){var d=[0,0,-1,0,0,0],e=0,g=0;do{if(d[g+e]=a.params[b+g],a.hasSubParams(b+g)){a=a.getSubParams(b+
|
|
g);b=0;do 5===d[1]&&(e=1),d[g+b+1+e]=a[b];while(++b<a.length&&b+g+1+e<d.length);break}if(5===d[1]&&2<=g+e||2===d[1]&&5<=g+e)break;d[1]&&(e=1)}while(++g+b<a.length&&g+e<d.length);for(b=2;b<d.length;++b)-1===d[b]&&(d[b]=0);return 38===d[0]?2===d[1]?(c.fg|=50331648,c.fg&=-16777216,c.fg|=B.AttributeData.fromColorRGB([d[3],d[4],d[5]])):5===d[1]&&(c.fg&=-50331904,c.fg=c.fg|33554432|255&d[3]):48===d[0]&&(2===d[1]?(c.bg|=50331648,c.bg&=-16777216,c.bg|=B.AttributeData.fromColorRGB([d[3],d[4],d[5]])):5===d[1]&&
|
|
(c.bg&=-50331904,c.bg=c.bg|33554432|255&d[3])),g},b.prototype.charAttributes=function(a){if(1===a.length&&0===a.params[0])return this._terminal.curAttrData.fg=v.DEFAULT_ATTR_DATA.fg,void(this._terminal.curAttrData.bg=v.DEFAULT_ATTR_DATA.bg);for(var b,c=a.length,d=this._terminal.curAttrData,e=0;e<c;e++)30<=(b=a.params[e])&&37>=b?(d.fg&=-50331904,d.fg=d.fg|16777216|b-30):40<=b&&47>=b?(d.bg&=-50331904,d.bg=d.bg|16777216|b-40):90<=b&&97>=b?(d.fg&=-50331904,d.fg=d.fg|16777224|b-90):100<=b&&107>=b?(d.bg&=
|
|
-50331904,d.bg=d.bg|16777224|b-100):0===b?(d.fg=v.DEFAULT_ATTR_DATA.fg,d.bg=v.DEFAULT_ATTR_DATA.bg):1===b?d.fg|=134217728:3===b?d.bg|=67108864:4===b?d.fg|=268435456:5===b?d.fg|=536870912:7===b?d.fg|=67108864:8===b?d.fg|=1073741824:2===b?d.bg|=134217728:22===b?(d.fg&=-134217729,d.bg&=-134217729):23===b?d.bg&=-67108865:24===b?d.fg&=-268435457:25===b?d.fg&=-536870913:27===b?d.fg&=-67108865:28===b?d.fg&=-1073741825:39===b?(d.fg&=-67108864,d.fg|=16777215&v.DEFAULT_ATTR_DATA.fg):49===b?(d.bg&=-67108864,
|
|
d.bg|=16777215&v.DEFAULT_ATTR_DATA.bg):38===b||48===b?e+=this._extractColor(a,e,d):100===b?(d.fg&=-67108864,d.fg|=16777215&v.DEFAULT_ATTR_DATA.fg,d.bg&=-67108864,d.bg|=16777215&v.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",b)},b.prototype.deviceStatus=function(a){switch(a.params[0]){case 5:this._coreService.triggerDataEvent(f.C0.ESC+"[0n");break;case 6:this._coreService.triggerDataEvent(f.C0.ESC+"["+(this._bufferService.buffer.y+1)+";"+(this._bufferService.buffer.x+1)+
|
|
"R")}},b.prototype.deviceStatusPrivate=function(a){switch(a.params[0]){case 6:this._coreService.triggerDataEvent(f.C0.ESC+"[?"+(this._bufferService.buffer.y+1)+";"+(this._bufferService.buffer.x+1)+"R")}},b.prototype.softReset=function(){this._coreService.isCursorHidden=!1;this._terminal.insertMode=!1;this._terminal.originMode=!1;this._terminal.wraparoundMode=!0;this._terminal.applicationKeypad=!1;this._terminal.viewport&&this._terminal.viewport.syncScrollArea();this._coreService.decPrivateModes.applicationCursorKeys=
|
|
!1;this._bufferService.buffer.scrollTop=0;this._bufferService.buffer.scrollBottom=this._bufferService.rows-1;this._terminal.curAttrData=v.DEFAULT_ATTR_DATA.clone();this._bufferService.buffer.x=this._bufferService.buffer.y=0;this._terminal.charset=null;this._terminal.glevel=0;this._terminal.charsets=[null]},b.prototype.setCursorStyle=function(a){a=a.params[0]||1;switch(a){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";
|
|
break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}this._optionsService.options.cursorBlink=1==a%2},b.prototype.setScrollRegion=function(a){var b,c=a.params[0]||1;(2>a.length||(b=a.params[1])>this._bufferService.rows||0===b)&&(b=this._bufferService.rows);b>c&&(this._bufferService.buffer.scrollTop=c-1,this._bufferService.buffer.scrollBottom=b-1,this._setCursor(0,0))},b.prototype.saveCursor=function(){this._bufferService.buffer.savedX=this._bufferService.buffer.x;this._bufferService.buffer.savedY=
|
|
this._bufferService.buffer.ybase+this._bufferService.buffer.y;this._bufferService.buffer.savedCurAttrData.fg=this._terminal.curAttrData.fg;this._bufferService.buffer.savedCurAttrData.bg=this._terminal.curAttrData.bg;this._bufferService.buffer.savedCharset=this._terminal.charset},b.prototype.restoreCursor=function(){this._bufferService.buffer.x=this._bufferService.buffer.savedX||0;this._bufferService.buffer.y=Math.max(this._bufferService.buffer.savedY-this._bufferService.buffer.ybase,0);this._terminal.curAttrData.fg=
|
|
this._bufferService.buffer.savedCurAttrData.fg;this._terminal.curAttrData.bg=this._bufferService.buffer.savedCurAttrData.bg;this._terminal.charset=this._savedCharset;this._bufferService.buffer.savedCharset&&(this._terminal.charset=this._bufferService.buffer.savedCharset);this._restrictCursor()},b.prototype.setTitle=function(a){this._terminal.handleTitle(a)},b.prototype.nextLine=function(){this._bufferService.buffer.x=0;this.index()},b.prototype.keypadApplicationMode=function(){this._logService.debug("Serial port requested application keypad.");
|
|
this._terminal.applicationKeypad=!0;this._terminal.viewport&&this._terminal.viewport.syncScrollArea()},b.prototype.keypadNumericMode=function(){this._logService.debug("Switching back to normal keypad.");this._terminal.applicationKeypad=!1;this._terminal.viewport&&this._terminal.viewport.syncScrollArea()},b.prototype.selectDefaultCharset=function(){this._terminal.setgLevel(0);this._terminal.setgCharset(0,h.DEFAULT_CHARSET)},b.prototype.selectCharset=function(a){2===a.length?"/"!==a[0]&&this._terminal.setgCharset(M[a[0]],
|
|
h.CHARSETS[a[1]]||h.DEFAULT_CHARSET):this.selectDefaultCharset()},b.prototype.index=function(){this._restrictCursor();var a=this._bufferService.buffer;this._bufferService.buffer.y++;a.y===a.scrollBottom+1?(a.y--,this._terminal.scroll()):a.y>=this._bufferService.rows&&(a.y=this._bufferService.rows-1);this._restrictCursor()},b.prototype.tabSet=function(){this._bufferService.buffer.tabs[this._bufferService.buffer.x]=!0},b.prototype.reverseIndex=function(){this._restrictCursor();var a=this._bufferService.buffer;
|
|
a.y===a.scrollTop?(a.lines.shiftElements(a.y+a.ybase,a.scrollBottom-a.scrollTop,1),a.lines.set(a.y+a.ybase,a.getBlankLine(this._terminal.eraseAttrData())),this._dirtyRowService.markRangeDirty(a.scrollTop,a.scrollBottom)):(a.y--,this._restrictCursor())},b.prototype.reset=function(){this._parser.reset();this._terminal.reset()},b.prototype.setgLevel=function(a){this._terminal.setgLevel(a)},b.prototype.screenAlignmentPattern=function(){var a=new y.CellData;a.content=4194373;a.fg=this._terminal.curAttrData.fg;
|
|
a.bg=this._terminal.curAttrData.bg;var b=this._bufferService.buffer;this._setCursor(0,0);for(var c=0;c<this._bufferService.rows;++c){var d=b.y+b.ybase+c;b.lines.get(d).fill(a);b.lines.get(d).isWrapped=!1}this._dirtyRowService.markAllDirty();this._setCursor(0,0)},b}(a.Disposable);b.InputHandler=d},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&
|
|
(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});a=d(2);var f=d(15),h=d(20),k=d(21),r=d(23),q=function(){function a(a){this.table=new Uint8Array(a)}return a.prototype.setDefault=function(a,b){f.fill(this.table,a<<4|b)},a.prototype.add=function(a,b,c,d){this.table[b<<8|a]=c<<4|d},a.prototype.addMany=function(a,b,c,d){for(var e=0;e<a.length;e++)this.table[b<<
|
|
8|a[e]]=c<<4|d},a}();b.TransitionTable=q;b.VT500_TRANSITION_TABLE=function(){function a(a,b){return c.slice(a,b)}var b=new q(4095),c=Array.apply(null,Array(256)).map(function(a,b){return b}),d=a(32,127),e=a(0,24);e.push(25);e.push.apply(e,a(28,32));var g,f=a(0,14);for(g in b.setDefault(1,0),b.addMany(d,0,2,0),f)b.addMany([24,26,153,154],g,3,0),b.addMany(a(128,144),g,3,0),b.addMany(a(144,152),g,3,0),b.add(156,g,0,0),b.add(27,g,11,1),b.add(157,g,4,8),b.addMany([152,158,159],g,0,7),b.add(155,g,11,3),
|
|
b.add(144,g,11,9);return b.addMany(e,0,3,0),b.addMany(e,1,3,1),b.add(127,1,0,1),b.addMany(e,8,0,8),b.addMany(e,3,3,3),b.add(127,3,0,3),b.addMany(e,4,3,4),b.add(127,4,0,4),b.addMany(e,6,3,6),b.addMany(e,5,3,5),b.add(127,5,0,5),b.addMany(e,2,3,2),b.add(127,2,0,2),b.add(93,1,4,8),b.addMany(d,8,5,8),b.add(127,8,5,8),b.addMany([156,27,24,26,7],8,6,0),b.addMany(a(28,32),8,0,8),b.addMany([88,94,95],1,0,7),b.addMany(d,7,0,7),b.addMany(e,7,0,7),b.add(156,7,0,0),b.add(127,7,0,7),b.add(91,1,11,3),b.addMany(a(64,
|
|
127),3,7,0),b.addMany(a(48,60),3,8,4),b.addMany([60,61,62,63],3,9,4),b.addMany(a(48,60),4,8,4),b.addMany(a(64,127),4,7,0),b.addMany([60,61,62,63],4,0,6),b.addMany(a(32,64),6,0,6),b.add(127,6,0,6),b.addMany(a(64,127),6,0,0),b.addMany(a(32,48),3,9,5),b.addMany(a(32,48),5,9,5),b.addMany(a(48,64),5,0,6),b.addMany(a(64,127),5,7,0),b.addMany(a(32,48),4,9,5),b.addMany(a(32,48),1,9,2),b.addMany(a(32,48),2,9,2),b.addMany(a(48,127),2,10,0),b.addMany(a(48,80),1,10,0),b.addMany(a(81,88),1,10,0),b.addMany([89,
|
|
90,92],1,10,0),b.addMany(a(96,127),1,10,0),b.add(80,1,11,9),b.addMany(e,9,0,9),b.add(127,9,0,9),b.addMany(a(28,32),9,0,9),b.addMany(a(32,48),9,9,12),b.addMany(a(48,60),9,8,10),b.addMany([60,61,62,63],9,9,10),b.addMany(e,11,0,11),b.addMany(a(32,128),11,0,11),b.addMany(a(28,32),11,0,11),b.addMany(e,10,0,10),b.add(127,10,0,10),b.addMany(a(28,32),10,0,10),b.addMany(a(48,60),10,8,10),b.addMany([60,61,62,63],10,0,11),b.addMany(a(32,48),10,9,12),b.addMany(e,12,0,12),b.add(127,12,0,12),b.addMany(a(28,32),
|
|
12,0,12),b.addMany(a(32,48),12,9,12),b.addMany(a(48,64),12,0,11),b.addMany(a(64,127),12,12,13),b.addMany(a(64,127),10,12,13),b.addMany(a(64,127),9,12,13),b.addMany(e,13,13,13),b.addMany(d,13,13,13),b.add(127,13,0,13),b.addMany([27,156,24,26],13,14,0),b.add(160,0,2,0),b.add(160,8,5,8),b.add(160,6,0,6),b.add(160,11,0,11),b.add(160,13,13,13),b}();d=function(a){function c(c){void 0===c&&(c=b.VT500_TRANSITION_TABLE);var d=a.call(this)||this;return d.TRANSITIONS=c,d.initialState=0,d.currentState=d.initialState,
|
|
d._params=new h.Params,d._params.addParam(0),d._collect=0,d.precedingCodepoint=0,d._printHandlerFb=function(){},d._executeHandlerFb=function(){},d._csiHandlerFb=function(){},d._escHandlerFb=function(){},d._errorHandlerFb=function(a){return a},d._printHandler=d._printHandlerFb,d._executeHandlers=Object.create(null),d._csiHandlers=Object.create(null),d._escHandlers=Object.create(null),d._oscParser=new k.OscParser,d._dcsParser=new r.DcsParser,d._errorHandler=d._errorHandlerFb,d.setEscHandler({final:"\\"},
|
|
function(){}),d}return g(c,a),c.prototype._identifier=function(a,b){void 0===b&&(b=[64,126]);var c=0;if(a.prefix){if(1<a.prefix.length)throw Error("only one byte as prefix supported");if((c=a.prefix.charCodeAt(0))&&60>c||63<c)throw Error("prefix must be in range 0x3c .. 0x3f");}if(a.intermediates){if(2<a.intermediates.length)throw Error("only two bytes as intermediates are supported");for(var d=0;d<a.intermediates.length;++d){var e=a.intermediates.charCodeAt(d);if(32>e||47<e)throw Error("intermediate must be in range 0x20 .. 0x2f");
|
|
c<<=8;c|=e}}if(1!==a.final.length)throw Error("final must be a single byte");a=a.final.charCodeAt(0);if(b[0]>a||a>b[1])throw Error("final must be in range "+b[0]+" .. "+b[1]);return c<<=8,c|a},c.prototype.identToString=function(a){for(var b=[];a;)b.push(String.fromCharCode(255&a)),a>>=8;return b.reverse().join("")},c.prototype.dispose=function(){this._csiHandlers=Object.create(null);this._executeHandlers=Object.create(null);this._escHandlers=Object.create(null);this._oscParser.dispose();this._dcsParser.dispose()},
|
|
c.prototype.setPrintHandler=function(a){this._printHandler=a},c.prototype.clearPrintHandler=function(){this._printHandler=this._printHandlerFb},c.prototype.addEscHandler=function(a,b){a=this._identifier(a,[48,126]);void 0===this._escHandlers[a]&&(this._escHandlers[a]=[]);var c=this._escHandlers[a];return c.push(b),{dispose:function(){var a=c.indexOf(b);-1!==a&&c.splice(a,1)}}},c.prototype.setEscHandler=function(a,b){this._escHandlers[this._identifier(a,[48,126])]=[b]},c.prototype.clearEscHandler=
|
|
function(a){this._escHandlers[this._identifier(a,[48,126])]&&delete this._escHandlers[this._identifier(a,[48,126])]},c.prototype.setEscHandlerFallback=function(a){this._escHandlerFb=a},c.prototype.setExecuteHandler=function(a,b){this._executeHandlers[a.charCodeAt(0)]=b},c.prototype.clearExecuteHandler=function(a){this._executeHandlers[a.charCodeAt(0)]&&delete this._executeHandlers[a.charCodeAt(0)]},c.prototype.setExecuteHandlerFallback=function(a){this._executeHandlerFb=a},c.prototype.addCsiHandler=
|
|
function(a,b){a=this._identifier(a);void 0===this._csiHandlers[a]&&(this._csiHandlers[a]=[]);var c=this._csiHandlers[a];return c.push(b),{dispose:function(){var a=c.indexOf(b);-1!==a&&c.splice(a,1)}}},c.prototype.setCsiHandler=function(a,b){this._csiHandlers[this._identifier(a)]=[b]},c.prototype.clearCsiHandler=function(a){this._csiHandlers[this._identifier(a)]&&delete this._csiHandlers[this._identifier(a)]},c.prototype.setCsiHandlerFallback=function(a){this._csiHandlerFb=a},c.prototype.addDcsHandler=
|
|
function(a,b){return this._dcsParser.addHandler(this._identifier(a),b)},c.prototype.setDcsHandler=function(a,b){this._dcsParser.setHandler(this._identifier(a),b)},c.prototype.clearDcsHandler=function(a){this._dcsParser.clearHandler(this._identifier(a))},c.prototype.setDcsHandlerFallback=function(a){this._dcsParser.setHandlerFallback(a)},c.prototype.addOscHandler=function(a,b){return this._oscParser.addHandler(a,b)},c.prototype.setOscHandler=function(a,b){this._oscParser.setHandler(a,b)},c.prototype.clearOscHandler=
|
|
function(a){this._oscParser.clearHandler(a)},c.prototype.setOscHandlerFallback=function(a){this._oscParser.setHandlerFallback(a)},c.prototype.setErrorHandler=function(a){this._errorHandler=a},c.prototype.clearErrorHandler=function(){this._errorHandler=this._errorHandlerFb},c.prototype.reset=function(){this.currentState=this.initialState;this._oscParser.reset();this._dcsParser.reset();this._params.reset();this._params.addParam(0);this.precedingCodepoint=this._collect=0},c.prototype.parse=function(a,
|
|
b){for(var c=0,d,e=this.currentState,g=this._oscParser,f=this._dcsParser,q=this._collect,l=this._params,h=this.TRANSITIONS.table,k=0;k<b;++k){switch((d=h[e<<8|(160>(c=a[k])?c:160)])>>4){case 2:for(e=k+1;;++e){if(e>=b||32>(c=a[e])||126<c&&160>c){this._printHandler(a,k,e);k=e-1;break}if(++e>=b||32>(c=a[e])||126<c&&160>c){this._printHandler(a,k,e);k=e-1;break}if(++e>=b||32>(c=a[e])||126<c&&160>c){this._printHandler(a,k,e);k=e-1;break}if(++e>=b||32>(c=a[e])||126<c&&160>c){this._printHandler(a,k,e);k=
|
|
e-1;break}}break;case 3:this._executeHandlers[c]?this._executeHandlers[c]():this._executeHandlerFb(c);this.precedingCodepoint=0;break;case 1:if(this._errorHandler({position:k,code:c,currentState:e,collect:q,params:l,abort:!1}).abort)return;break;case 7:for(var r=(e=this._csiHandlers[q<<8|c])?e.length-1:-1;0<=r&&!1===e[r](l);r--);0>r&&this._csiHandlerFb(q<<8|c,l);this.precedingCodepoint=0;break;case 8:do switch(c){case 59:l.addParam(0);break;case 58:l.addSubParam(-1);break;default:l.addDigit(c-48)}while(++k<
|
|
b&&47<(c=a[k])&&60>c);k--;break;case 9:q<<=8;q|=c;break;case 10:for(r=(e=this._escHandlers[q<<8|c])?e.length-1:-1;0<=r&&!1===e[r]();r--);0>r&&this._escHandlerFb(q<<8|c);this.precedingCodepoint=0;break;case 11:l.reset();l.addParam(0);q=0;break;case 12:f.hook(q<<8|c,l);break;case 13:for(e=k+1;;++e)if(e>=b||24===(c=a[e])||26===c||27===c||127<c&&160>c){f.put(a,k,e);k=e-1;break}break;case 14:f.unhook(24!==c&&26!==c);27===c&&(d|=1);l.reset();l.addParam(0);this.precedingCodepoint=q=0;break;case 4:g.start();
|
|
break;case 5:for(e=k+1;;e++)if(e>=b||32>(c=a[e])||127<c&&159>=c){g.put(a,k,e);k=e-1;break}break;case 6:g.end(24!==c&&26!==c),27===c&&(d|=1),l.reset(),l.addParam(0),this.precedingCodepoint=q=0}e=15&d}this._collect=q;this.currentState=e},c}(a.Disposable);b.EscapeSequenceParser=d},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,
|
|
b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)}),f=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var q=a.length-1;0<=q;q--)(e=a[q])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},h=this&&this.__param||function(a,
|
|
b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var k=d(41),r=d(47),q=d(48),t=d(49),v=d(28);a=d(2);var l=d(4),n=d(0),y=d(24),B=d(1),O=1;d=function(a){function b(b,c,d,e,g,f,l,h){var n=a.call(this)||this;n._colors=b;n._screenElement=c;n._linkifier=d;n._bufferService=e;n._charSizeService=g;n._optionsService=f;n.coreService=l;n.coreBrowserService=h;n._id=O++;n._onRequestRefreshRows=new B.EventEmitter;b=n._optionsService.options.allowTransparency;return n._characterJoinerRegistry=
|
|
new v.CharacterJoinerRegistry(n._bufferService),n._renderLayers=[new k.TextRenderLayer(n._screenElement,0,n._colors,n._characterJoinerRegistry,b,n._id,n._bufferService,f),new r.SelectionRenderLayer(n._screenElement,1,n._colors,n._id,n._bufferService,f),new t.LinkRenderLayer(n._screenElement,2,n._colors,n._id,n._linkifier,n._bufferService,f),new q.CursorRenderLayer(n._screenElement,3,n._colors,n._id,n._onRequestRefreshRows,n._bufferService,f,l,h)],n.dimensions={scaledCharWidth:0,scaledCharHeight:0,
|
|
scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},n._devicePixelRatio=window.devicePixelRatio,n._updateDimensions(),n.onOptionsChanged(),n}return g(b,a),Object.defineProperty(b.prototype,"onRequestRefreshRows",{get:function(){return this._onRequestRefreshRows.event},enumerable:!0,configurable:!0}),b.prototype.dispose=function(){a.prototype.dispose.call(this);this._renderLayers.forEach(function(a){return a.dispose()});
|
|
y.removeTerminalFromCache(this._id)},b.prototype.onDevicePixelRatioChange=function(){this._devicePixelRatio!==window.devicePixelRatio&&(this._devicePixelRatio=window.devicePixelRatio,this.onResize(this._bufferService.cols,this._bufferService.rows))},b.prototype.setColors=function(a){var b=this;this._colors=a;this._renderLayers.forEach(function(a){a.setColors(b._colors);a.reset()})},b.prototype.onResize=function(){var a=this;this._updateDimensions();this._renderLayers.forEach(function(b){return b.resize(a.dimensions)});
|
|
this._screenElement.style.width=this.dimensions.canvasWidth+"px";this._screenElement.style.height=this.dimensions.canvasHeight+"px"},b.prototype.onCharSizeChanged=function(){this.onResize(this._bufferService.cols,this._bufferService.rows)},b.prototype.onBlur=function(){this._runOperation(function(a){return a.onBlur()})},b.prototype.onFocus=function(){this._runOperation(function(a){return a.onFocus()})},b.prototype.onSelectionChanged=function(a,b,c){void 0===c&&(c=!1);this._runOperation(function(d){return d.onSelectionChanged(a,
|
|
b,c)})},b.prototype.onCursorMove=function(){this._runOperation(function(a){return a.onCursorMove()})},b.prototype.onOptionsChanged=function(){this._runOperation(function(a){return a.onOptionsChanged()})},b.prototype.clear=function(){this._runOperation(function(a){return a.reset()})},b.prototype._runOperation=function(a){this._renderLayers.forEach(function(b){return a(b)})},b.prototype.renderRows=function(a,b){this._renderLayers.forEach(function(c){return c.onGridChanged(a,b)})},b.prototype._updateDimensions=
|
|
function(){this._charSizeService.hasValidSize&&(this.dimensions.scaledCharWidth=Math.floor(this._charSizeService.width*window.devicePixelRatio),this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.options.lineHeight),this.dimensions.scaledCharTop=1===this._optionsService.options.lineHeight?0:Math.round((this.dimensions.scaledCellHeight-this.dimensions.scaledCharHeight)/
|
|
2),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.options.letterSpacing),this.dimensions.scaledCharLeft=Math.floor(this._optionsService.options.letterSpacing/2),this.dimensions.scaledCanvasHeight=this._bufferService.rows*this.dimensions.scaledCellHeight,this.dimensions.scaledCanvasWidth=this._bufferService.cols*this.dimensions.scaledCellWidth,this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.canvasWidth=
|
|
Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows,this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols)},b.prototype.registerCharacterJoiner=function(a){return this._characterJoinerRegistry.registerCharacterJoiner(a)},b.prototype.deregisterCharacterJoiner=function(a){return this._characterJoinerRegistry.deregisterCharacterJoiner(a)},b=f([h(3,n.IBufferService),
|
|
h(4,l.ICharSizeService),h(5,n.IOptionsService),h(6,n.ICoreService),h(7,l.ICoreBrowserService)],b)}(a.Disposable);b.Renderer=d},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,
|
|
"__esModule",{value:!0});var f=d(42);a=d(13);var h=d(6),k=d(3),r=d(28),q=d(5);d=function(a){function b(b,c,d,e,g,k,h,r){b=a.call(this,b,"text",c,g,d,k,h,r)||this;return b.bufferService=h,b.optionsService=r,b._characterWidth=0,b._characterFont="",b._characterOverlapCache={},b._workCell=new q.CellData,b._state=new f.GridCache,b._characterJoinerRegistry=e,b}return g(b,a),b.prototype.resize=function(b){a.prototype.resize.call(this,b);var c=this._getFont(!1,!1);this._characterWidth===b.scaledCharWidth&&
|
|
this._characterFont===c||(this._characterWidth=b.scaledCharWidth,this._characterFont=c,this._characterOverlapCache={});this._state.clear();this._state.resize(this._bufferService.cols,this._bufferService.rows)},b.prototype.reset=function(){this._state.clear();this._clearAll()},b.prototype._forEachCell=function(a,b,c,d){for(;a<=b;a++){var e=a+this._bufferService.buffer.ydisp,g=this._bufferService.buffer.lines.get(e);e=c?c.getJoinedCharacters(e):[];for(var f=0;f<this._bufferService.cols;f++){g.loadCell(f,
|
|
this._workCell);var q=this._workCell,l=!1,h=f;0!==q.getWidth()&&(0<e.length&&f===e[0][0]&&(l=!0,h=e.shift(),q=new r.JoinedCellData(this._workCell,g.translateToString(!0,h[0],h[1]),h[1]-h[0]),h=h[1]-1),!l&&this._isOverlapping(q)&&h<g.length-1&&g.getCodePoint(h+1)===k.NULL_CELL_CODE&&(q.content&=-12582913,q.content|=8388608),d(q,f,a),f=h)}}},b.prototype._drawBackground=function(a,b){var c=this,d=this._ctx,e=this._bufferService.cols,g=0,f=0,q=null;d.save();this._forEachCell(a,b,null,function(a,b,l){var k=
|
|
null;a.isInverse()?k=a.isFgDefault()?c._colors.foreground.css:a.isFgRGB()?"rgb("+h.AttributeData.toColorRGB(a.getFgColor()).join(",")+")":c._colors.ansi[a.getFgColor()].css:a.isBgRGB()?k="rgb("+h.AttributeData.toColorRGB(a.getBgColor()).join(",")+")":a.isBgPalette()&&(k=c._colors.ansi[a.getBgColor()].css);null===q&&(g=b,f=l);l!==f?(d.fillStyle=q||"",c._fillCells(g,f,e-g,1),g=b,f=l):q!==k&&(d.fillStyle=q||"",c._fillCells(g,f,b-g,1),g=b,f=l);q=k});null!==q&&(d.fillStyle=q,this._fillCells(g,f,e-g,1));
|
|
d.restore()},b.prototype._drawForeground=function(a,b){var c=this;this._forEachCell(a,b,this._characterJoinerRegistry,function(a,b,d){if(!a.isInvisible()&&(c._drawChars(a,b,d),a.isUnderline())){if(c._ctx.save(),a.isInverse())if(a.isBgDefault())c._ctx.fillStyle=c._colors.background.css;else if(a.isBgRGB())c._ctx.fillStyle="rgb("+h.AttributeData.toColorRGB(a.getBgColor()).join(",")+")";else{var e=a.getBgColor();c._optionsService.options.drawBoldTextInBrightColors&&a.isBold()&&8>e&&(e+=8);c._ctx.fillStyle=
|
|
c._colors.ansi[e].css}else a.isFgDefault()?c._ctx.fillStyle=c._colors.foreground.css:a.isFgRGB()?c._ctx.fillStyle="rgb("+h.AttributeData.toColorRGB(a.getFgColor()).join(",")+")":(e=a.getFgColor(),c._optionsService.options.drawBoldTextInBrightColors&&a.isBold()&&8>e&&(e+=8),c._ctx.fillStyle=c._colors.ansi[e].css);c._fillBottomLineAtCells(b,d,a.getWidth());c._ctx.restore()}})},b.prototype.onGridChanged=function(a,b){0!==this._state.cache.length&&(this._charAtlas&&this._charAtlas.beginFrame(),this._clearCells(0,
|
|
a,this._bufferService.cols,b-a+1),this._drawBackground(a,b),this._drawForeground(a,b))},b.prototype.onOptionsChanged=function(){this._setTransparency(this._optionsService.options.allowTransparency)},b.prototype._isOverlapping=function(a){if(1!==a.getWidth()||256>a.getCode())return!1;a=a.getChars();if(this._characterOverlapCache.hasOwnProperty(a))return this._characterOverlapCache[a];this._ctx.save();this._ctx.font=this._characterFont;var b=Math.floor(this._ctx.measureText(a).width)>this._characterWidth;
|
|
return this._ctx.restore(),this._characterOverlapCache[a]=b,b},b}(a.BaseRenderLayer);b.TextRenderLayer=d},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(){this.cache=[]}return a.prototype.resize=function(a,b){for(var c=0;c<a;c++){this.cache.length<=c&&this.cache.push([]);for(var d=this.cache[c].length;d<b;d++)this.cache[c].push(void 0);this.cache[c].length=b}this.cache.length=a},a.prototype.clear=function(){for(var a=0;a<this.cache.length;a++)for(var b=0;b<
|
|
this.cache[a].length;b++)this.cache[a][b]=void 0},a}();b.GridCache=a},function(a,b,d){function c(a){return a.code<<21|a.bg<<12|a.fg<<3|(a.bold?0:4)+(a.dim?0:2)+(a.italic?0:1)}var g,f=this&&this.__extends||(g=function(a,b){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function c(){this.constructor=a}g(a,b);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype,
|
|
new c)});Object.defineProperty(b,"__esModule",{value:!0});var h=d(9);a=d(44);var k=d(26),r=d(46),q=d(11),t=d(27),v=d(10),l={css:"rgba(0, 0, 0, 0)",rgba:0};b.getGlyphCacheKey=c;d=function(a){function b(b,c){var d=a.call(this)||this;d._config=c;d._drawToCacheCount=0;d._glyphsWaitingOnBitmap=[];d._bitmapCommitTimeout=null;d._bitmap=null;d._cacheCanvas=b.createElement("canvas");d._cacheCanvas.width=1024;d._cacheCanvas.height=1024;d._cacheCtx=t.throwIfFalsy(d._cacheCanvas.getContext("2d",{alpha:!0}));
|
|
b=b.createElement("canvas");b.width=d._config.scaledCharWidth;b.height=d._config.scaledCharHeight;d._tmpCtx=t.throwIfFalsy(b.getContext("2d",{alpha:d._config.allowTransparency}));d._width=Math.floor(1024/d._config.scaledCharWidth);d._height=Math.floor(1024/d._config.scaledCharHeight);b=d._width*d._height;return d._cacheMap=new r.LRUMap(b),d._cacheMap.prealloc(b),d}return f(b,a),b.prototype.dispose=function(){null!==this._bitmapCommitTimeout&&(window.clearTimeout(this._bitmapCommitTimeout),this._bitmapCommitTimeout=
|
|
null)},b.prototype.beginFrame=function(){this._drawToCacheCount=0},b.prototype.draw=function(a,b,d,e){if(32===b.code)return!0;if(!this._canCache(b))return!1;var g=c(b),f=this._cacheMap.get(g);return null!=f?(this._drawFromCache(a,f,d,e),!0):100>this._drawToCacheCount?(f=this._cacheMap.size<this._cacheMap.capacity?this._cacheMap.size:this._cacheMap.peek().index,b=this._drawToCache(b,f),this._cacheMap.set(g,b),this._drawFromCache(a,b,d,e),!0):!1},b.prototype._canCache=function(a){return 256>a.code},
|
|
b.prototype._toCoordinateX=function(a){return a%this._width*this._config.scaledCharWidth},b.prototype._toCoordinateY=function(a){return Math.floor(a/this._width)*this._config.scaledCharHeight},b.prototype._drawFromCache=function(a,b,c,d){if(!b.isEmpty){var e=this._toCoordinateX(b.index),g=this._toCoordinateY(b.index);a.drawImage(b.inBitmap?this._bitmap:this._cacheCanvas,e,g,this._config.scaledCharWidth,this._config.scaledCharHeight,c,d,this._config.scaledCharWidth,this._config.scaledCharHeight)}},
|
|
b.prototype._getColorFromAnsiIndex=function(a){return a<this._config.colors.ansi.length?this._config.colors.ansi[a]:k.DEFAULT_ANSI_COLORS[a]},b.prototype._getBackgroundColor=function(a){return this._config.allowTransparency?l:a.bg===h.INVERTED_DEFAULT_COLOR?this._config.colors.foreground:256>a.bg?this._getColorFromAnsiIndex(a.bg):this._config.colors.background},b.prototype._getForegroundColor=function(a){return a.fg===h.INVERTED_DEFAULT_COLOR?v.opaque(this._config.colors.background):256>a.fg?this._getColorFromAnsiIndex(a.fg):
|
|
this._config.colors.foreground},b.prototype._drawToCache=function(a,b){this._drawToCacheCount++;this._tmpCtx.save();var c=this._getBackgroundColor(a);this._tmpCtx.globalCompositeOperation="copy";this._tmpCtx.fillStyle=c.css;this._tmpCtx.fillRect(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight);this._tmpCtx.globalCompositeOperation="source-over";this._tmpCtx.font=(a.italic?"italic":"")+" "+(a.bold?this._config.fontWeightBold:this._config.fontWeight)+" "+this._config.fontSize*this._config.devicePixelRatio+
|
|
"px "+this._config.fontFamily;this._tmpCtx.textBaseline="middle";this._tmpCtx.fillStyle=this._getForegroundColor(a).css;a.dim&&(this._tmpCtx.globalAlpha=h.DIM_OPACITY);this._tmpCtx.fillText(a.chars,0,this._config.scaledCharHeight/2);this._tmpCtx.restore();a=this._tmpCtx.getImageData(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight);var d=!1;if(!this._config.allowTransparency){d=!0;var e=c.rgba>>>24,g=c.rgba>>>16&255;c=c.rgba>>>8&255;for(var f=0;f<a.data.length;f+=4)a.data[f]===e&&a.data[f+
|
|
1]===g&&a.data[f+2]===c?a.data[f+3]=0:d=!1}c=this._toCoordinateX(b);e=this._toCoordinateY(b);this._cacheCtx.putImageData(a,c,e);b={index:b,isEmpty:d,inBitmap:!1};return this._addGlyphToBitmap(b),b},b.prototype._addGlyphToBitmap=function(a){var b=this;"createImageBitmap"in window&&!q.isFirefox&&!q.isSafari&&(this._glyphsWaitingOnBitmap.push(a),null===this._bitmapCommitTimeout&&(this._bitmapCommitTimeout=window.setTimeout(function(){return b._generateBitmap()},100)))},b.prototype._generateBitmap=function(){var a=
|
|
this,b=this._glyphsWaitingOnBitmap;this._glyphsWaitingOnBitmap=[];window.createImageBitmap(this._cacheCanvas).then(function(c){a._bitmap=c;for(c=0;c<b.length;c++)b[c].inBitmap=!0});this._bitmapCommitTimeout=null},b}(a.BaseCharAtlas);b.DynamicCharAtlas=d;d=function(a){function b(){return a.call(this)||this}return f(b,a),b.prototype.draw=function(){return!1},b}(a.BaseCharAtlas);b.NoneCharAtlas=d},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(){this._didWarmUp=
|
|
!1}return a.prototype.dispose=function(){},a.prototype.warmUp=function(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)},a.prototype._doWarmUp=function(){},a.prototype.beginFrame=function(){},a}();b.BaseCharAtlas=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(){this._color={};this._rgba={}}return a.prototype.clear=function(){this._color={};this._rgba={}},a.prototype.setCss=function(a,b,c){this._rgba[a]||(this._rgba[a]={});this._rgba[a][b]=c},a.prototype.getCss=
|
|
function(a,b){return this._rgba[a]?this._rgba[a][b]:void 0},a.prototype.setColor=function(a,b,c){this._color[a]||(this._color[a]={});this._color[a][b]=c},a.prototype.getColor=function(a,b){return this._color[a]?this._color[a][b]:void 0},a}();b.ColorContrastCache=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(a){this.capacity=a;this._map={};this._tail=this._head=null;this._nodePool=[];this.size=0}return a.prototype._unlinkNode=function(a){var b=a.prev,c=a.next;
|
|
a===this._head&&(this._head=c);a===this._tail&&(this._tail=b);null!==b&&(b.next=c);null!==c&&(c.prev=b)},a.prototype._appendNode=function(a){var b=this._tail;null!==b&&(b.next=a);a.prev=b;a.next=null;this._tail=a;null===this._head&&(this._head=a)},a.prototype.prealloc=function(a){for(var b=this._nodePool,c=0;c<a;c++)b.push({prev:null,next:null,key:null,value:null})},a.prototype.get=function(a){a=this._map[a];return void 0!==a?(this._unlinkNode(a),this._appendNode(a),a.value):null},a.prototype.peekValue=
|
|
function(a){a=this._map[a];return void 0!==a?a.value:null},a.prototype.peek=function(){var a=this._head;return null===a?null:a.value},a.prototype.set=function(a,b){var c=this._map[a];if(void 0!==c)c=this._map[a],this._unlinkNode(c),c.value=b;else if(this.size>=this.capacity)c=this._head,this._unlinkNode(c),delete this._map[c.key],c.key=a,c.value=b,this._map[a]=c;else{var d=this._nodePool;0<d.length?((c=d.pop()).key=a,c.value=b):c={prev:null,next:null,key:a,value:b};this._map[a]=c;this.size++}this._appendNode(c)},
|
|
a}();b.LRUMap=a},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});a=function(a){function b(b,c,d,e,g,f){b=a.call(this,b,"selection",c,!0,d,e,g,f)||this;
|
|
return b.bufferService=g,b.optionsService=f,b._clearState(),b}return g(b,a),b.prototype._clearState=function(){this._state={start:void 0,end:void 0,columnSelectMode:void 0,ydisp:void 0}},b.prototype.resize=function(b){a.prototype.resize.call(this,b);this._clearState()},b.prototype.reset=function(){this._state.start&&this._state.end&&(this._clearState(),this._clearAll())},b.prototype.onSelectionChanged=function(a,b,c){if(this._didStateChange(a,b,c,this._bufferService.buffer.ydisp))if(this._clearAll(),
|
|
a&&b){var d=a[1]-this._bufferService.buffer.ydisp,e=b[1]-this._bufferService.buffer.ydisp,g=Math.max(d,0),f=Math.min(e,this._bufferService.rows-1);g>=this._bufferService.rows||0>f||((this._ctx.fillStyle=this._colors.selection.css,c)?(d=a[0],this._fillCells(d,g,b[0]-d,f-g+1)):(d=d===g?a[0]:0,this._fillCells(d,g,(g===f?b[0]:this._bufferService.cols)-d,1),(this._fillCells(0,g+1,this._bufferService.cols,Math.max(f-g-1,0)),g!==f)&&this._fillCells(0,f,e===f?b[0]:this._bufferService.cols,1)),this._state.start=
|
|
[a[0],a[1]],this._state.end=[b[0],b[1]],this._state.columnSelectMode=c,this._state.ydisp=this._bufferService.buffer.ydisp)}else this._clearState()},b.prototype._didStateChange=function(a,b,c,d){return!this._areCoordinatesEqual(a,this._state.start)||!this._areCoordinatesEqual(b,this._state.end)||c!==this._state.columnSelectMode||d!==this._state.ydisp},b.prototype._areCoordinatesEqual=function(a,b){return!(!a||!b)&&a[0]===b[0]&&a[1]===b[1]},b}(d(13).BaseRenderLayer);b.SelectionRenderLayer=a},function(a,
|
|
b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});a=d(13);var f=d(5);d=function(a){function b(b,c,d,e,g,h,k,r,X){b=a.call(this,b,"cursor",c,!0,d,e,h,k)||this;return b._onRequestRefreshRowsEvent=
|
|
g,b.bufferService=h,b.optionsService=k,b._coreService=r,b._coreBrowserService=X,b._cell=new f.CellData,b._state={x:0,y:0,isFocused:!1,style:"",width:0},b._cursorRenderers={bar:b._renderBarCursor.bind(b),block:b._renderBlockCursor.bind(b),underline:b._renderUnderlineCursor.bind(b)},b}return g(b,a),b.prototype.resize=function(b){a.prototype.resize.call(this,b);this._state={x:0,y:0,isFocused:!1,style:"",width:0}},b.prototype.reset=function(){this._clearCursor();this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),
|
|
this._cursorBlinkStateManager=void 0,this.onOptionsChanged())},b.prototype.onBlur=function(){this._cursorBlinkStateManager&&this._cursorBlinkStateManager.pause();this._onRequestRefreshRowsEvent.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},b.prototype.onFocus=function(){this._cursorBlinkStateManager?this._cursorBlinkStateManager.resume():this._onRequestRefreshRowsEvent.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},b.prototype.onOptionsChanged=
|
|
function(){var a,b=this;this._optionsService.options.cursorBlink?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new h(this._coreBrowserService.isFocused,function(){b._render(!0)})):(null===(a=this._cursorBlinkStateManager)||void 0===a||a.dispose(),this._cursorBlinkStateManager=void 0);this._onRequestRefreshRowsEvent.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},b.prototype.onCursorMove=function(){this._cursorBlinkStateManager&&this._cursorBlinkStateManager.restartBlinkAnimation()},
|
|
b.prototype.onGridChanged=function(){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(!1):this._cursorBlinkStateManager.restartBlinkAnimation()},b.prototype._render=function(){if(this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden){var a=this._bufferService.buffer.ybase+this._bufferService.buffer.y,b=a-this._bufferService.buffer.ydisp;if(0>b||b>=this._bufferService.rows)this._clearCursor();else if(this._bufferService.buffer.lines.get(a).loadCell(this._bufferService.buffer.x,
|
|
this._cell),void 0!==this._cell.content){if(!this._coreBrowserService.isFocused)return this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,a=this._optionsService.options.cursorStyle,a&&"block"!==a?this._cursorRenderers[a](this._bufferService.buffer.x,b,this._cell):this._renderBlurCursor(this._bufferService.buffer.x,b,this._cell),this._ctx.restore(),this._state.x=this._bufferService.buffer.x,this._state.y=b,this._state.isFocused=!1,this._state.style=a,void(this._state.width=
|
|
this._cell.getWidth());if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===this._bufferService.buffer.x&&this._state.y===b&&this._state.isFocused===this._coreBrowserService.isFocused&&this._state.style===this._optionsService.options.cursorStyle&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save();this._cursorRenderers[this._optionsService.options.cursorStyle||"block"](this._bufferService.buffer.x,b,
|
|
this._cell);this._ctx.restore();this._state.x=this._bufferService.buffer.x;this._state.y=b;this._state.isFocused=!1;this._state.style=this._optionsService.options.cursorStyle;this._state.width=this._cell.getWidth()}else this._clearCursor()}}else this._clearCursor()},b.prototype._clearCursor=function(){this._state&&(this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:0,y:0,isFocused:!1,style:"",width:0})},b.prototype._renderBarCursor=function(a,b){this._ctx.save();this._ctx.fillStyle=
|
|
this._colors.cursor.css;this._fillLeftLineAtCell(a,b);this._ctx.restore()},b.prototype._renderBlockCursor=function(a,b,c){this._ctx.save();this._ctx.fillStyle=this._colors.cursor.css;this._fillCells(a,b,c.getWidth(),1);this._ctx.fillStyle=this._colors.cursorAccent.css;this._fillCharTrueColor(c,a,b);this._ctx.restore()},b.prototype._renderUnderlineCursor=function(a,b){this._ctx.save();this._ctx.fillStyle=this._colors.cursor.css;this._fillBottomLineAtCells(a,b);this._ctx.restore()},b.prototype._renderBlurCursor=
|
|
function(a,b,c){this._ctx.save();this._ctx.strokeStyle=this._colors.cursor.css;this._strokeRectAtCell(a,b,c.getWidth(),1);this._ctx.restore()},b}(a.BaseRenderLayer);b.CursorRenderLayer=d;var h=function(){function a(a,b){this._renderCallback=b;this.isCursorVisible=!0;a&&this._restartInterval()}return Object.defineProperty(a.prototype,"isPaused",{get:function(){return!(this._blinkStartTimeout||this._blinkInterval)},enumerable:!0,configurable:!0}),a.prototype.dispose=function(){this._blinkInterval&&
|
|
(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0);this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0);this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},a.prototype.restartBlinkAnimation=function(){var a=this;this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){a._renderCallback();
|
|
a._animationFrame=void 0})))},a.prototype._restartInterval=function(a){var b=this;void 0===a&&(a=600);this._blinkInterval&&window.clearInterval(this._blinkInterval);this._blinkStartTimeout=setTimeout(function(){if(b._animationTimeRestarted){var a=600-(Date.now()-b._animationTimeRestarted);if(b._animationTimeRestarted=void 0,0<a)return void b._restartInterval(a)}b.isCursorVisible=!1;b._animationFrame=window.requestAnimationFrame(function(){b._renderCallback();b._animationFrame=void 0});b._blinkInterval=
|
|
setInterval(function(){if(b._animationTimeRestarted){var a=600-(Date.now()-b._animationTimeRestarted);return b._animationTimeRestarted=void 0,void b._restartInterval(a)}b.isCursorVisible=!b.isCursorVisible;b._animationFrame=window.requestAnimationFrame(function(){b._renderCallback();b._animationFrame=void 0})},600)},a)},a.prototype.pause=function(){this.isCursorVisible=!0;this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0);this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),
|
|
this._blinkStartTimeout=void 0);this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},a.prototype.resume=function(){this._animationTimeRestarted=void 0;this._restartInterval();this.restartBlinkAnimation()},a}()},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=
|
|
a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});a=d(13);var f=d(9),h=d(25);d=function(a){function b(b,c,d,e,g,f,h){var l=a.call(this,b,"link",c,!0,d,e,f,h)||this;return l.bufferService=f,l.optionsService=h,g.onLinkHover(function(a){return l._onLinkHover(a)}),g.onLinkLeave(function(a){return l._onLinkLeave(a)}),l}return g(b,a),b.prototype.resize=function(b){a.prototype.resize.call(this,b);this._state=void 0},b.prototype.reset=
|
|
function(){this._clearCurrentLink()},b.prototype._clearCurrentLink=function(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);var a=this._state.y2-this._state.y1-1;0<a&&this._clearCells(0,this._state.y1+1,this._state.cols,a);this._clearCells(0,this._state.y2,this._state.x2,1);this._state=void 0}},b.prototype._onLinkHover=function(a){if(a.fg===f.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:a.fg&&h.is256Color(a.fg)?this._ctx.fillStyle=
|
|
this._colors.ansi[a.fg].css:this._ctx.fillStyle=this._colors.foreground.css,a.y1===a.y2)this._fillBottomLineAtCells(a.x1,a.y1,a.x2-a.x1);else{this._fillBottomLineAtCells(a.x1,a.y1,a.cols-a.x1);for(var b=a.y1+1;b<a.y2;b++)this._fillBottomLineAtCells(0,b,a.cols);this._fillBottomLineAtCells(0,a.y2,a.x2)}this._state=a},b.prototype._onLinkLeave=function(){this._clearCurrentLink()},b}(a.BaseRenderLayer);b.LinkRenderLayer=d},function(a,b,d){function c(a,b,c,d,e,g,f,n,y){this.x1=a;this.y1=b;this.x2=c;this.y2=
|
|
d;this.clickCallback=e;this.hoverCallback=g;this.tooltipCallback=f;this.leaveCallback=n;this.willLinkActivate=y}Object.defineProperty(b,"__esModule",{value:!0});var g=d(19),f=d(1);a=function(){function a(a,b){this._bufferService=a;this._logService=b;this._linkMatchers=[];this._nextLinkMatcherId=0;this._onLinkHover=new f.EventEmitter;this._onLinkLeave=new f.EventEmitter;this._onLinkTooltip=new f.EventEmitter;this._rowsToLinkify={start:void 0,end:void 0}}return Object.defineProperty(a.prototype,"onLinkHover",
|
|
{get:function(){return this._onLinkHover.event},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onLinkLeave",{get:function(){return this._onLinkLeave.event},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onLinkTooltip",{get:function(){return this._onLinkTooltip.event},enumerable:!0,configurable:!0}),a.prototype.attachToDom=function(a,b){this._element=a;this._mouseZoneManager=b},a.prototype.linkifyRows=function(b,c){var d=this;this._mouseZoneManager&&(void 0===
|
|
this._rowsToLinkify.start||void 0===this._rowsToLinkify.end?(this._rowsToLinkify.start=b,this._rowsToLinkify.end=c):(this._rowsToLinkify.start=Math.min(this._rowsToLinkify.start,b),this._rowsToLinkify.end=Math.max(this._rowsToLinkify.end,c)),this._mouseZoneManager.clearAll(b,c),this._rowsTimeoutId&&clearTimeout(this._rowsTimeoutId),this._rowsTimeoutId=setTimeout(function(){return d._linkifyRows()},a._timeBeforeLatency))},a.prototype._linkifyRows=function(){this._rowsTimeoutId=void 0;var a=this._bufferService.buffer;
|
|
if(void 0!==this._rowsToLinkify.start&&void 0!==this._rowsToLinkify.end){var b=a.ydisp+this._rowsToLinkify.start;if(!(b>=a.lines.length)){var c=Math.ceil(2E3/this._bufferService.cols);for(a=this._bufferService.buffer.iterator(!1,b,a.ydisp+Math.min(this._rowsToLinkify.end,this._bufferService.rows)+1,c,c);a.hasNext();)for(b=a.next(),c=0;c<this._linkMatchers.length;c++)this._doLinkifyRow(b.range.first,b.content,this._linkMatchers[c]);this._rowsToLinkify.start=void 0;this._rowsToLinkify.end=void 0}}else this._logService.debug("_rowToLinkify was unset before _linkifyRows was called")},
|
|
a.prototype.registerLinkMatcher=function(a,b,c){if(void 0===c&&(c={}),!b)throw Error("handler must be defined");a={id:this._nextLinkMatcherId++,regex:a,handler:b,matchIndex:c.matchIndex,validationCallback:c.validationCallback,hoverTooltipCallback:c.tooltipCallback,hoverLeaveCallback:c.leaveCallback,willLinkActivate:c.willLinkActivate,priority:c.priority||0};return this._addLinkMatcherToList(a),a.id},a.prototype._addLinkMatcherToList=function(a){if(0!==this._linkMatchers.length){for(var b=this._linkMatchers.length-
|
|
1;0<=b;b--)if(a.priority<=this._linkMatchers[b].priority)return void this._linkMatchers.splice(b+1,0,a);this._linkMatchers.splice(0,0,a)}else this._linkMatchers.push(a)},a.prototype.deregisterLinkMatcher=function(a){for(var b=0;b<this._linkMatchers.length;b++)if(this._linkMatchers[b].id===a)return this._linkMatchers.splice(b,1),!0;return!1},a.prototype._doLinkifyRow=function(a,b,c){function d(){var d=e["number"!=typeof c.matchIndex?0:c.matchIndex];if(!d)return q._logService.debug("match found without corresponding matchIndex",
|
|
e,c),"break";if(h=b.indexOf(d,h+1),f.lastIndex=h+d.length,0>h)return"break";var l=q._bufferService.buffer.stringIndexToBufferIndex(a,h);if(0>l[0])return"break";var k=q._bufferService.buffer.lines.get(l[0]);if(!k)return"break";var r=(k=k.getFg(l[1]))?k>>9&511:void 0;c.validationCallback?c.validationCallback(d,function(a){g._rowsTimeoutId||a&&g._addLink(l[1],l[0]-g._bufferService.buffer.ydisp,d,c,r)}):q._addLink(l[1],l[0]-q._bufferService.buffer.ydisp,d,c,r)}for(var e,g=this,f=new RegExp(c.regex.source,
|
|
(c.regex.flags||"")+"g"),h=-1,q=this;null!==(e=f.exec(b))&&"break"!==d(););},a.prototype._addLink=function(a,b,d,e,f){var l=this;if(this._mouseZoneManager&&this._element){var h=g.getStringCellWidth(d),q=a%this._bufferService.cols,k=b+Math.floor(a/this._bufferService.cols),r=(q+h)%this._bufferService.cols,t=k+Math.floor((q+h)/this._bufferService.cols);0===r&&(r=this._bufferService.cols,t--);this._mouseZoneManager.add(new c(q+1,k+1,r+1,t+1,function(a){if(e.handler)return e.handler(a,d);window.open(d,
|
|
"_blank")},function(){l._onLinkHover.fire(l._createLinkHoverEvent(q,k,r,t,f));l._element.classList.add("xterm-cursor-pointer")},function(a){l._onLinkTooltip.fire(l._createLinkHoverEvent(q,k,r,t,f));e.hoverTooltipCallback&&e.hoverTooltipCallback(a,d,{start:{x:q,y:k},end:{x:r,y:t}})},function(){l._onLinkLeave.fire(l._createLinkHoverEvent(q,k,r,t,f));l._element.classList.remove("xterm-cursor-pointer");e.hoverLeaveCallback&&e.hoverLeaveCallback()},function(a){return!e.willLinkActivate||e.willLinkActivate(a,
|
|
d)}))}},a.prototype._createLinkHoverEvent=function(a,b,c,d,e){return{x1:a,y1:b,x2:c,y2:d,cols:this._bufferService.cols,fg:e}},a._timeBeforeLatency=200,a}();b.Linkifier=a;b.MouseZone=c},function(a,b,d){var c=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var l=a.length-1;0<=l;l--)(e=a[l])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||
|
|
f);return 3<g&&f&&Object.defineProperty(b,c,f),f},g=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var f=d(11),h=d(52),k=d(5),r=d(1),q=d(4),t=d(0),v=d(29),l=d(53);a=String.fromCharCode(160);var n=new RegExp(a,"g");a=function(){function a(a,b,c,d,e,g,f,l){var q=this;this._scrollLines=a;this._element=b;this._screenElement=c;this._charSizeService=d;this._bufferService=e;this._coreService=g;this._mouseService=f;this._optionsService=l;
|
|
this._dragScrollAmount=0;this._enabled=!0;this._workCell=new k.CellData;this._mouseDownTimeStamp=0;this._onLinuxMouseSelection=new r.EventEmitter;this._onRedrawRequest=new r.EventEmitter;this._onSelectionChange=new r.EventEmitter;this._mouseMoveListener=function(a){return q._onMouseMove(a)};this._mouseUpListener=function(a){return q._onMouseUp(a)};this._coreService.onUserInput(function(){q.hasSelection&&q.clearSelection()});this._trimListener=this._bufferService.buffer.lines.onTrim(function(a){return q._onTrim(a)});
|
|
this._bufferService.buffers.onBufferActivate(function(a){return q._onBufferActivate(a)});this.enable();this._model=new h.SelectionModel(this._bufferService);this._activeSelectionMode=0}return Object.defineProperty(a.prototype,"onLinuxMouseSelection",{get:function(){return this._onLinuxMouseSelection.event},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onRedrawRequest",{get:function(){return this._onRedrawRequest.event},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,
|
|
"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!0,configurable:!0}),a.prototype.dispose=function(){this._removeMouseDownListeners()},a.prototype.reset=function(){this.clearSelection()},a.prototype.disable=function(){this.clearSelection();this._enabled=!1},a.prototype.enable=function(){this._enabled=!0},Object.defineProperty(a.prototype,"selectionStart",{get:function(){return this._model.finalSelectionStart},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,
|
|
"selectionEnd",{get:function(){return this._model.finalSelectionEnd},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"hasSelection",{get:function(){var a=this._model.finalSelectionStart,b=this._model.finalSelectionEnd;return!(!a||!b)&&(a[0]!==b[0]||a[1]!==b[1])},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"selectionText",{get:function(){var a=this._model.finalSelectionStart,b=this._model.finalSelectionEnd;if(!a||!b)return"";var c=this._bufferService.buffer,
|
|
d=[];if(3===this._activeSelectionMode){if(a[0]===b[0])return"";for(var e=a[1];e<=b[1];e++){var g=c.translateBufferLineToString(e,!0,a[0],b[0]);d.push(g)}}else{d.push(c.translateBufferLineToString(a[1],!0,a[0],a[1]===b[1]?b[0]:void 0));for(e=a[1]+1;e<=b[1]-1;e++){var l=c.lines.get(e);g=c.translateBufferLineToString(e,!0);l&&l.isWrapped?d[d.length-1]+=g:d.push(g)}a[1]!==b[1]&&(l=c.lines.get(b[1]),g=c.translateBufferLineToString(b[1],!0,0,b[0]),l&&l.isWrapped?d[d.length-1]+=g:d.push(g))}return d.map(function(a){return a.replace(n,
|
|
" ")}).join(f.isWindows?"\r\n":"\n")},enumerable:!0,configurable:!0}),a.prototype.clearSelection=function(){this._model.clearSelection();this._removeMouseDownListeners();this.refresh();this._onSelectionChange.fire()},a.prototype.refresh=function(a){var b=this;(this._refreshAnimationFrame||(this._refreshAnimationFrame=window.requestAnimationFrame(function(){return b._refresh()})),f.isLinux&&a)&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)},a.prototype._refresh=function(){this._refreshAnimationFrame=
|
|
void 0;this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:3===this._activeSelectionMode})},a.prototype.isClickInSelection=function(a){a=this._getMouseBufferCoords(a);var b=this._model.finalSelectionStart,c=this._model.finalSelectionEnd;return!!(b&&c&&a)&&this._areCoordsInSelection(a,b,c)},a.prototype._areCoordsInSelection=function(a,b,c){return a[1]>b[1]&&a[1]<c[1]||b[1]===c[1]&&a[1]===b[1]&&a[0]>=b[0]&&a[0]<c[0]||b[1]<c[1]&&a[1]===
|
|
c[1]&&a[0]<c[0]||b[1]<c[1]&&a[1]===b[1]&&a[0]>=b[0]},a.prototype.selectWordAtCursor=function(a){(a=this._getMouseBufferCoords(a))&&(this._selectWordAt(a,!1),this._model.selectionEnd=void 0,this.refresh(!0))},a.prototype.selectAll=function(){this._model.isSelectAllActive=!0;this.refresh();this._onSelectionChange.fire()},a.prototype.selectLines=function(a,b){this._model.clearSelection();a=Math.max(a,0);b=Math.min(b,this._bufferService.buffer.lines.length-1);this._model.selectionStart=[0,a];this._model.selectionEnd=
|
|
[this._bufferService.cols,b];this.refresh();this._onSelectionChange.fire()},a.prototype._onTrim=function(a){this._model.onTrim(a)&&this.refresh()},a.prototype._getMouseBufferCoords=function(a){if(a=this._mouseService.getCoords(a,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0))return a[0]--,a[1]--,a[1]+=this._bufferService.buffer.ydisp,a},a.prototype._getMouseEventScrollAmount=function(a){a=v.getCoordsRelativeToElement(a,this._screenElement)[1];var b=this._bufferService.rows*
|
|
Math.ceil(this._charSizeService.height*this._optionsService.options.lineHeight);return 0<=a&&a<=b?0:(a>b&&(a-=b),a=Math.min(Math.max(a,-50),50),(a/=50)/Math.abs(a)+Math.round(14*a))},a.prototype.shouldForceSelection=function(a){return f.isMac?a.altKey&&this._optionsService.options.macOptionClickForcesSelection:a.shiftKey},a.prototype.onMouseDown=function(a){if(this._mouseDownTimeStamp=a.timeStamp,(2!==a.button||!this.hasSelection)&&0===a.button){if(!this._enabled){if(!this.shouldForceSelection(a))return;
|
|
a.stopPropagation()}a.preventDefault();this._dragScrollAmount=0;this._enabled&&a.shiftKey?this._onIncrementalClick(a):1===a.detail?this._onSingleClick(a):2===a.detail?this._onDoubleClick(a):3===a.detail&&this._onTripleClick(a);this._addMouseDownListeners();this.refresh(!0)}},a.prototype._addMouseDownListeners=function(){var a=this;this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",
|
|
this._mouseUpListener));this._dragScrollIntervalTimer=window.setInterval(function(){return a._dragScroll()},50)},a.prototype._removeMouseDownListeners=function(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener));clearInterval(this._dragScrollIntervalTimer);this._dragScrollIntervalTimer=void 0},a.prototype._onIncrementalClick=function(a){this._model.selectionStart&&
|
|
(this._model.selectionEnd=this._getMouseBufferCoords(a))},a.prototype._onSingleClick=function(a){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(a)?3:0,this._model.selectionStart=this._getMouseBufferCoords(a),this._model.selectionStart)this._model.selectionEnd=void 0,(a=this._bufferService.buffer.lines.get(this._model.selectionStart[1]))&&a.length!==this._model.selectionStart[0]&&0===a.hasWidth(this._model.selectionStart[0])&&
|
|
this._model.selectionStart[0]++},a.prototype._onDoubleClick=function(a){(a=this._getMouseBufferCoords(a))&&(this._activeSelectionMode=1,this._selectWordAt(a,!0))},a.prototype._onTripleClick=function(a){(a=this._getMouseBufferCoords(a))&&(this._activeSelectionMode=2,this._selectLineAt(a[1]))},a.prototype.shouldColumnSelect=function(a){return a.altKey&&!(f.isMac&&this._optionsService.options.macOptionClickForcesSelection)},a.prototype._onMouseMove=function(a){if(a.stopImmediatePropagation(),this._model.selectionStart){var b=
|
|
this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;(this._model.selectionEnd=this._getMouseBufferCoords(a),this._model.selectionEnd)?(2===this._activeSelectionMode?this._model.selectionEnd[1]<this._model.selectionStart[1]?this._model.selectionEnd[0]=0:this._model.selectionEnd[0]=this._bufferService.cols:1===this._activeSelectionMode&&this._selectToWordAt(this._model.selectionEnd),this._dragScrollAmount=this._getMouseEventScrollAmount(a),3!==this._activeSelectionMode&&
|
|
(0<this._dragScrollAmount?this._model.selectionEnd[0]=this._bufferService.cols:0>this._dragScrollAmount&&(this._model.selectionEnd[0]=0)),a=this._bufferService.buffer,this._model.selectionEnd[1]<a.lines.length&&(a=a.lines.get(this._model.selectionEnd[1]))&&0===a.hasWidth(this._model.selectionEnd[0])&&this._model.selectionEnd[0]++,b&&b[0]===this._model.selectionEnd[0]&&b[1]===this._model.selectionEnd[1]||this.refresh(!0)):this.refresh(!0)}},a.prototype._dragScroll=function(){if(this._model.selectionEnd&&
|
|
this._model.selectionStart&&this._dragScrollAmount){this._scrollLines(this._dragScrollAmount,!1);var a=this._bufferService.buffer;0<this._dragScrollAmount?(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(a.ydisp+this._bufferService.rows,a.lines.length-1)):(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=a.ydisp);this.refresh()}},a.prototype._onMouseUp=function(a){var b=a.timeStamp-
|
|
this._mouseDownTimeStamp;(this._removeMouseDownListeners(),1>=this.selectionText.length&&500>b)?a.altKey&&this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp&&(a=this._mouseService.getCoords(a,this._element,this._bufferService.cols,this._bufferService.rows,!1))&&void 0!==a[0]&&void 0!==a[1]&&(a=l.moveToCellSequence(a[0]-1,a[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys),this._coreService.triggerDataEvent(a,!0)):this.hasSelection&&this._onSelectionChange.fire()},
|
|
a.prototype._onBufferActivate=function(a){var b=this;this.clearSelection();this._trimListener.dispose();this._trimListener=a.activeBuffer.lines.onTrim(function(a){return b._onTrim(a)})},a.prototype._convertViewportColToCharacterIndex=function(a,b){for(var c=b[0],d=0;b[0]>=d;d++){var e=a.loadCell(d,this._workCell).getChars().length;0===this._workCell.getWidth()?c--:1<e&&b[0]!==d&&(c+=e-1)}return c},a.prototype.setSelection=function(a,b,c){this._model.clearSelection();this._removeMouseDownListeners();
|
|
this._model.selectionStart=[a,b];this._model.selectionStartLength=c;this.refresh()},a.prototype._getWordAt=function(a,b,c,d){if(void 0===c&&(c=!0),void 0===d&&(d=!0),!(a[0]>=this._bufferService.cols)){var e=this._bufferService.buffer,g=e.lines.get(a[1]);if(g){var f=e.translateBufferLineToString(a[1],!1),l=this._convertViewportColToCharacterIndex(g,a),h=l,q=a[0]-l,k=0,r=0,n=0,t=0;if(" "===f.charAt(l)){for(;0<l&&" "===f.charAt(l-1);)l--;for(;h<f.length&&" "===f.charAt(h+1);)h++}else{var v=a[0],y=a[0];
|
|
0===g.getWidth(v)&&(k++,v--);2===g.getWidth(y)&&(r++,y++);var B=g.getString(y).length;for(1<B&&(t+=B-1,h+=B-1);0<v&&0<l&&!this._isCharWordSeparator(g.loadCell(v-1,this._workCell));)g.loadCell(v-1,this._workCell),B=this._workCell.getChars().length,0===this._workCell.getWidth()?(k++,v--):1<B&&(n+=B-1,l-=B-1),l--,v--;for(;y<g.length&&h+1<f.length&&!this._isCharWordSeparator(g.loadCell(y+1,this._workCell));)g.loadCell(y+1,this._workCell),v=this._workCell.getChars().length,2===this._workCell.getWidth()?
|
|
(r++,y++):1<v&&(t+=v-1,h+=v-1),h++,y++}h++;q=l+q-k+n;k=Math.min(this._bufferService.cols,h-l+k+r-n-t);if(b||""!==f.slice(l,h).trim())return c&&0===q&&32!==g.getCodePoint(0)&&(b=e.lines.get(a[1]-1))&&g.isWrapped&&32!==b.getCodePoint(this._bufferService.cols-1)&&(b=this._getWordAt([this._bufferService.cols-1,a[1]-1],!1,!0,!1))&&(b=this._bufferService.cols-b.start,q-=b,k+=b),d&&q+k===this._bufferService.cols&&32!==g.getCodePoint(this._bufferService.cols-1)&&(d=e.lines.get(a[1]+1))&&d.isWrapped&&32!==
|
|
d.getCodePoint(0)&&(a=this._getWordAt([0,a[1]+1],!1,!1,!0))&&(k+=a.length),{start:q,length:k}}}},a.prototype._selectWordAt=function(a,b){if(b=this._getWordAt(a,b)){for(;0>b.start;)b.start+=this._bufferService.cols,a[1]--;this._model.selectionStart=[b.start,a[1]];this._model.selectionStartLength=b.length}},a.prototype._selectToWordAt=function(a){var b=this._getWordAt(a,!0);if(b){for(a=a[1];0>b.start;)b.start+=this._bufferService.cols,a--;if(!this._model.areSelectionValuesReversed())for(;b.start+b.length>
|
|
this._bufferService.cols;)b.length-=this._bufferService.cols,a++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?b.start:b.start+b.length,a]}},a.prototype._isCharWordSeparator=function(a){return 0!==a.getWidth()&&0<=this._optionsService.options.wordSeparator.indexOf(a.getChars())},a.prototype._selectLineAt=function(a){a=this._bufferService.buffer.getWrappedRangeForLine(a);this._model.selectionStart=[0,a.first];this._model.selectionEnd=[this._bufferService.cols,a.last];this._model.selectionStartLength=
|
|
0},a=c([g(3,q.ICharSizeService),g(4,t.IBufferService),g(5,t.ICoreService),g(6,q.IMouseService),g(7,t.IOptionsService)],a)}();b.SelectionService=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(a){this._bufferService=a;this.isSelectAllActive=!1;this.selectionStartLength=0}return a.prototype.clearSelection=function(){this.selectionEnd=this.selectionStart=void 0;this.isSelectAllActive=!1;this.selectionStartLength=0},Object.defineProperty(a.prototype,"finalSelectionStart",
|
|
{get:function(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"finalSelectionEnd",{get:function(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){var a=this.selectionStart[0]+this.selectionStartLength;
|
|
return a>this._bufferService.cols?[a%this._bufferService.cols,this.selectionStart[1]+Math.floor(a/this._bufferService.cols)]:[a,this.selectionStart[1]]}return this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]?[Math.max(this.selectionStart[0]+this.selectionStartLength,this.selectionEnd[0]),this.selectionEnd[1]]:this.selectionEnd}},enumerable:!0,configurable:!0}),a.prototype.areSelectionValuesReversed=function(){var a=this.selectionStart,b=this.selectionEnd;return!(!a||!b)&&(a[1]>
|
|
b[1]||a[1]===b[1]&&a[0]>b[0])},a.prototype.onTrim=function(a){return this.selectionStart&&(this.selectionStart[1]-=a),this.selectionEnd&&(this.selectionEnd[1]-=a),this.selectionEnd&&0>this.selectionEnd[1]?(this.clearSelection(),!0):(this.selectionStart&&0>this.selectionStart[1]&&(this.selectionStart[1]=0),!1)},a}();b.SelectionModel=a},function(a,b,d){function c(a,b,c,d){var e=a-g(c,a),f=b-g(c,b);e=Math.abs(e-f);f=0;for(var l=a-g(c,a),h=b-g(c,b),q=0;q<Math.abs(l-h);q++){var n=c.buffer.lines.get(l+
|
|
("A"===(a>b?"A":"B")?-1:1)*q);n&&n.isWrapped&&f++}return r(e-f,k(a>b?"A":"B",d))}function g(a,b){for(var c=0,d=a.buffer.lines.get(b),e=d&&d.isWrapped;e&&0<=b&&b<a.rows;)c++,e=(d=a.buffer.lines.get(--b))&&d.isWrapped;return c}function f(a,b,d,e,f,h){var l;return l=0<c(d,e,f,h).length?e-g(f,e):b,a<d&&l<=e||a>=d&&l<e?"C":"D"}function h(a,b,c,d,e,g){for(var f=a,l="";f!==c||b!==d;)f+=e?1:-1,e&&f>g.cols-1?(l+=g.buffer.translateBufferLineToString(b,!1,a,f),f=0,a=0,b++):!e&&0>f&&(l+=g.buffer.translateBufferLineToString(b,
|
|
!1,0,a+1),a=f=g.cols-1,b--);return l+g.buffer.translateBufferLineToString(b,!1,a,f)}function k(a,b){return q.C0.ESC+(b?"O":"[")+a}function r(a,b){a=Math.floor(a);for(var c="",d=0;d<a;d++)c+=b;return c}Object.defineProperty(b,"__esModule",{value:!0});var q=d(12);b.moveToCellSequence=function(a,b,d,e){var l=d.buffer.x,q=d.buffer.y;return d.buffer.hasScrollback?function(a,b,c,d,e,g){b=f(a,b,c,d,e,g);return r(Math.abs(a-c),k(b,g))}(l,q,a,b,d,e):function(a,b,d,e,f,l){return 0===c(b,e,f,l).length?"":r(h(a,
|
|
b,a,b-g(f,b),!1,f).length,k("D",l))}(l,q,0,b,d,e)+c(q,b,d,e)+function(a,b,d,e,l,q){var n=0<c(b,e,l,q).length?e-g(l,e):b;b=f(a,b,d,e,l,q);return r(h(a,n,d,e,"C"===b,l).length,k(b,q))}(l,q,a,b,d,e)}},function(a,b,d){var c=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,
|
|
c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},g=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var f=d(0);a=function(){function a(a){this._optionsService=a}return Object.defineProperty(a,"audioContext",{get:function(){if(!a._audioContext){var b=window.AudioContext||window.webkitAudioContext;if(!b)return console.warn("Web Audio API is not supported by this browser. Consider upgrading to the latest version"),null;
|
|
a._audioContext=new b}return a._audioContext},enumerable:!0,configurable:!0}),a.prototype.playBellSound=function(){var b=a.audioContext;if(b){var c=b.createBufferSource();b.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.options.bellSound)),function(a){c.buffer=a;c.connect(b.destination);c.start(0)})}},a.prototype._base64ToArrayBuffer=function(a){a=window.atob(a);for(var b=a.length,c=new Uint8Array(b),d=0;d<b;d++)c[d]=a.charCodeAt(d);return c.buffer},a.prototype._removeMimeType=
|
|
function(a){return a.split(",")[1]},a=c([g(0,f.IOptionsService)],a)}();b.SoundService=a},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)}),f=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,
|
|
f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var l=a.length-1;0<=l;l--)(e=a[l])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},h=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});a=d(2);var k=d(7),r=d(4),q=d(0);d=function(a){function b(b,c,d,e,g){var f=a.call(this)||this;return f._element=
|
|
b,f._screenElement=c,f._bufferService=d,f._mouseService=e,f._selectionService=g,f._zones=[],f._areZonesActive=!1,f._lastHoverCoords=[void 0,void 0],f._initialSelectionLength=0,f.register(k.addDisposableDomListener(f._element,"mousedown",function(a){return f._onMouseDown(a)})),f._mouseMoveListener=function(a){return f._onMouseMove(a)},f._mouseLeaveListener=function(a){return f._onMouseLeave(a)},f._clickListener=function(a){return f._onClick(a)},f}return g(b,a),b.prototype.dispose=function(){a.prototype.dispose.call(this);
|
|
this._deactivate()},b.prototype.add=function(a){this._zones.push(a);1===this._zones.length&&this._activate()},b.prototype.clearAll=function(a,b){if(0!==this._zones.length){a&&b||(a=0,b=this._bufferService.rows-1);for(var c=0;c<this._zones.length;c++){var d=this._zones[c];(d.y1>a&&d.y1<=b+1||d.y2>a&&d.y2<=b+1||d.y1<a&&d.y2>b+1)&&(this._currentZone&&this._currentZone===d&&(this._currentZone.leaveCallback(),this._currentZone=void 0),this._zones.splice(c--,1))}0===this._zones.length&&this._deactivate()}},
|
|
b.prototype._activate=function(){this._areZonesActive||(this._areZonesActive=!0,this._element.addEventListener("mousemove",this._mouseMoveListener),this._element.addEventListener("mouseleave",this._mouseLeaveListener),this._element.addEventListener("click",this._clickListener))},b.prototype._deactivate=function(){this._areZonesActive&&(this._areZonesActive=!1,this._element.removeEventListener("mousemove",this._mouseMoveListener),this._element.removeEventListener("mouseleave",this._mouseLeaveListener),
|
|
this._element.removeEventListener("click",this._clickListener))},b.prototype._onMouseMove=function(a){this._lastHoverCoords[0]===a.pageX&&this._lastHoverCoords[1]===a.pageY||(this._onHover(a),this._lastHoverCoords=[a.pageX,a.pageY])},b.prototype._onHover=function(a){var b=this,c=this._findZoneEventAt(a);c!==this._currentZone&&(this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout)),c&&(this._currentZone=c,c.hoverCallback&&
|
|
c.hoverCallback(a),this._tooltipTimeout=setTimeout(function(){return b._onTooltip(a)},500)))},b.prototype._onTooltip=function(a){this._tooltipTimeout=void 0;var b=this._findZoneEventAt(a);b&&b.tooltipCallback&&b.tooltipCallback(a)},b.prototype._onMouseDown=function(a){var b;(this._initialSelectionLength=this._getSelectionLength(),this._areZonesActive)&&(null===(b=this._findZoneEventAt(a))||void 0===b?0:b.willLinkActivate(a))&&(a.preventDefault(),a.stopImmediatePropagation())},b.prototype._onMouseLeave=
|
|
function(){this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout))},b.prototype._onClick=function(a){var b=this._findZoneEventAt(a),c=this._getSelectionLength();b&&c===this._initialSelectionLength&&(b.clickCallback(a),a.preventDefault(),a.stopImmediatePropagation())},b.prototype._getSelectionLength=function(){var a=this._selectionService.selectionText;return a?a.length:0},b.prototype._findZoneEventAt=function(a){var b=
|
|
this._mouseService.getCoords(a,this._screenElement,this._bufferService.cols,this._bufferService.rows);if(b){a=b[0];b=b[1];for(var c=0;c<this._zones.length;c++){var d=this._zones[c];if(d.y1===d.y2){if(b===d.y1&&a>=d.x1&&a<d.x2)return d}else if(b===d.y1&&a>=d.x1||b===d.y2&&a<d.x2||b>d.y1&&b<d.y2)return d}}},b=f([h(2,q.IBufferService),h(3,r.IMouseService),h(4,r.ISelectionService)],b)}(a.Disposable);b.MouseZoneManager=d},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||
|
|
{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});var f=d(17),h=d(11),k=d(30),r=d(7);a=d(2);var q=d(31);d=function(a){function b(b,c){var d=a.call(this)||this;d._terminal=b;d._renderService=c;d._liveRegionLineCount=0;d._charsToConsume=[];d._charsToAnnounce=
|
|
"";d._accessibilityTreeRoot=document.createElement("div");d._accessibilityTreeRoot.classList.add("xterm-accessibility");d._rowContainer=document.createElement("div");d._rowContainer.classList.add("xterm-accessibility-tree");d._rowElements=[];for(b=0;b<d._terminal.rows;b++)d._rowElements[b]=d._createAccessibilityTreeNode(),d._rowContainer.appendChild(d._rowElements[b]);return d._topBoundaryFocusListener=function(a){return d._onBoundaryFocus(a,0)},d._bottomBoundaryFocusListener=function(a){return d._onBoundaryFocus(a,
|
|
1)},d._rowElements[0].addEventListener("focus",d._topBoundaryFocusListener),d._rowElements[d._rowElements.length-1].addEventListener("focus",d._bottomBoundaryFocusListener),d._refreshRowsDimensions(),d._accessibilityTreeRoot.appendChild(d._rowContainer),d._renderRowsDebouncer=new k.RenderDebouncer(d._renderRows.bind(d)),d._refreshRows(),d._liveRegion=document.createElement("div"),d._liveRegion.classList.add("live-region"),d._liveRegion.setAttribute("aria-live","assertive"),d._accessibilityTreeRoot.appendChild(d._liveRegion),
|
|
d._terminal.element.insertAdjacentElement("afterbegin",d._accessibilityTreeRoot),d.register(d._renderRowsDebouncer),d.register(d._terminal.onResize(function(a){return d._onResize(a.rows)})),d.register(d._terminal.onRender(function(a){return d._refreshRows(a.start,a.end)})),d.register(d._terminal.onScroll(function(){return d._refreshRows()})),d.register(d._terminal.onA11yChar(function(a){return d._onChar(a)})),d.register(d._terminal.onLineFeed(function(){return d._onChar("\n")})),d.register(d._terminal.onA11yTab(function(a){return d._onTab(a)})),
|
|
d.register(d._terminal.onKey(function(a){return d._onKey(a.key)})),d.register(d._terminal.onBlur(function(){return d._clearLiveRegion()})),d.register(d._renderService.onDimensionsChange(function(){return d._refreshRowsDimensions()})),d._screenDprMonitor=new q.ScreenDprMonitor,d.register(d._screenDprMonitor),d._screenDprMonitor.setListener(function(){return d._refreshRowsDimensions()}),d.register(r.addDisposableDomListener(window,"resize",function(){return d._refreshRowsDimensions()})),d}return g(b,
|
|
a),b.prototype.dispose=function(){a.prototype.dispose.call(this);this._terminal.element.removeChild(this._accessibilityTreeRoot);this._rowElements.length=0},b.prototype._onBoundaryFocus=function(a,b){var c=a.target,d=this._rowElements[0===b?1:this._rowElements.length-2];if(c.getAttribute("aria-posinset")!==(0===b?"1":""+this._terminal.buffer.lines.length)&&a.relatedTarget===d){var e,g;(0===b?(e=c,g=this._rowElements.pop(),this._rowContainer.removeChild(g)):(e=this._rowElements.shift(),g=c,this._rowContainer.removeChild(e)),
|
|
e.removeEventListener("focus",this._topBoundaryFocusListener),g.removeEventListener("focus",this._bottomBoundaryFocusListener),0===b)?(c=this._createAccessibilityTreeNode(),this._rowElements.unshift(c),this._rowContainer.insertAdjacentElement("afterbegin",c)):(c=this._createAccessibilityTreeNode(),this._rowElements.push(c),this._rowContainer.appendChild(c));this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener);this._rowElements[this._rowElements.length-1].addEventListener("focus",
|
|
this._bottomBoundaryFocusListener);this._terminal.scrollLines(0===b?-1:1);this._rowElements[0===b?1:this._rowElements.length-2].focus();a.preventDefault();a.stopImmediatePropagation()}},b.prototype._onResize=function(a){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(var b=this._rowContainer.children.length;b<this._terminal.rows;b++)this._rowElements[b]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[b]);
|
|
for(;this._rowElements.length>a;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener);this._refreshRowsDimensions()},b.prototype._createAccessibilityTreeNode=function(){var a=document.createElement("div");return a.setAttribute("role","listitem"),a.tabIndex=-1,this._refreshRowDimensions(a),a},b.prototype._onTab=function(a){for(var b=0;b<a;b++)this._onChar(" ")},b.prototype._onChar=function(a){var b=
|
|
this;21>this._liveRegionLineCount&&(0<this._charsToConsume.length?this._charsToConsume.shift()!==a&&(this._charsToAnnounce+=a):this._charsToAnnounce+=a,"\n"===a&&(this._liveRegionLineCount++,21===this._liveRegionLineCount&&(this._liveRegion.textContent+=f.tooMuchOutput)),h.isMac&&this._liveRegion.textContent&&0<this._liveRegion.textContent.length&&!this._liveRegion.parentNode&&setTimeout(function(){b._accessibilityTreeRoot.appendChild(b._liveRegion)},0))},b.prototype._clearLiveRegion=function(){this._liveRegion.textContent=
|
|
"";this._liveRegionLineCount=0;h.isMac&&this._liveRegion.parentNode&&this._accessibilityTreeRoot.removeChild(this._liveRegion)},b.prototype._onKey=function(a){this._clearLiveRegion();this._charsToConsume.push(a)},b.prototype._refreshRows=function(a,b){this._renderRowsDebouncer.refresh(a,b,this._terminal.rows)},b.prototype._renderRows=function(a,b){for(var c=this._terminal.buffer,d=c.lines.length.toString();a<=b;a++){var e=c.translateBufferLineToString(c.ydisp+a,!0),g=(c.ydisp+a+1).toString(),f=this._rowElements[a];
|
|
f&&(0===e.length?f.innerHTML=" ":f.textContent=e,f.setAttribute("aria-posinset",g),f.setAttribute("aria-setsize",d))}this._announceCharacters()},b.prototype._refreshRowsDimensions=function(){if(this._renderService.dimensions.actualCellHeight){this._rowElements.length!==this._terminal.rows&&this._onResize(this._terminal.rows);for(var a=0;a<this._terminal.rows;a++)this._refreshRowDimensions(this._rowElements[a])}},b.prototype._refreshRowDimensions=function(a){a.style.height=this._renderService.dimensions.actualCellHeight+
|
|
"px"},b.prototype._announceCharacters=function(){0!==this._charsToAnnounce.length&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")},b}(a.Disposable);b.AccessibilityManager=d},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===
|
|
b?Object.create(b):(d.prototype=b.prototype,new d)}),f=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},h=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",
|
|
{value:!0});var k=d(58),r=d(9);a=d(2);var q=d(4),t=d(0),v=d(1),l=d(10),n=1;d=function(a){function b(b,c,d,e,g,f,h,q){var l=a.call(this)||this;return l._colors=b,l._element=c,l._screenElement=d,l._viewportElement=e,l._linkifier=g,l._charSizeService=f,l._optionsService=h,l._bufferService=q,l._terminalClass=n++,l._rowElements=[],l._onRequestRefreshRows=new v.EventEmitter,l._rowContainer=document.createElement("div"),l._rowContainer.classList.add("xterm-rows"),l._rowContainer.style.lineHeight="normal",
|
|
l._rowContainer.setAttribute("aria-hidden","true"),l._refreshRowElements(l._bufferService.cols,l._bufferService.rows),l._selectionContainer=document.createElement("div"),l._selectionContainer.classList.add("xterm-selection"),l._selectionContainer.setAttribute("aria-hidden","true"),l.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},
|
|
l._updateDimensions(),l._injectCss(),l._rowFactory=new k.DomRendererRowFactory(document,l._optionsService,l._colors),l._element.classList.add("xterm-dom-renderer-owner-"+l._terminalClass),l._screenElement.appendChild(l._rowContainer),l._screenElement.appendChild(l._selectionContainer),l._linkifier.onLinkHover(function(a){return l._onLinkHover(a)}),l._linkifier.onLinkLeave(function(a){return l._onLinkLeave(a)}),l}return g(b,a),Object.defineProperty(b.prototype,"onRequestRefreshRows",{get:function(){return this._onRequestRefreshRows.event},
|
|
enumerable:!0,configurable:!0}),b.prototype.dispose=function(){this._element.classList.remove("xterm-dom-renderer-owner-"+this._terminalClass);this._screenElement.removeChild(this._rowContainer);this._screenElement.removeChild(this._selectionContainer);this._screenElement.removeChild(this._themeStyleElement);this._screenElement.removeChild(this._dimensionsStyleElement);a.prototype.dispose.call(this)},b.prototype._updateDimensions=function(){var a=this;this.dimensions.scaledCharWidth=this._charSizeService.width*
|
|
window.devicePixelRatio;this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio);this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.options.letterSpacing);this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.options.lineHeight);this.dimensions.scaledCharLeft=0;this.dimensions.scaledCharTop=0;this.dimensions.scaledCanvasWidth=this.dimensions.scaledCellWidth*this._bufferService.cols;
|
|
this.dimensions.scaledCanvasHeight=this.dimensions.scaledCellHeight*this._bufferService.rows;this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio);this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio);this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols;this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows;this._rowElements.forEach(function(b){b.style.width=
|
|
a.dimensions.canvasWidth+"px";b.style.height=a.dimensions.actualCellHeight+"px";b.style.lineHeight=a.dimensions.actualCellHeight+"px";b.style.overflow="hidden"});this._dimensionsStyleElement||(this._dimensionsStyleElement=document.createElement("style"),this._screenElement.appendChild(this._dimensionsStyleElement));this._dimensionsStyleElement.innerHTML=this._terminalSelector+" .xterm-rows span { display: inline-block; height: 100%; vertical-align: top; width: "+this.dimensions.actualCellWidth+"px}";
|
|
this._selectionContainer.style.height=this._viewportElement.style.height;this._screenElement.style.width=this.dimensions.canvasWidth+"px";this._screenElement.style.height=this.dimensions.canvasHeight+"px"},b.prototype.setColors=function(a){this._colors=a;this._injectCss()},b.prototype._injectCss=function(){var a=this;this._themeStyleElement||(this._themeStyleElement=document.createElement("style"),this._screenElement.appendChild(this._themeStyleElement));var b=this._terminalSelector+" .xterm-rows { color: "+
|
|
this._colors.foreground.css+"; background-color: "+this._colors.background.css+"; font-family: "+this._optionsService.options.fontFamily+"; font-size: "+this._optionsService.options.fontSize+"px;}";b+=this._terminalSelector+" span:not(."+k.BOLD_CLASS+") { font-weight: "+this._optionsService.options.fontWeight+";}"+this._terminalSelector+" span."+k.BOLD_CLASS+" { font-weight: "+this._optionsService.options.fontWeightBold+";}"+this._terminalSelector+" span."+k.ITALIC_CLASS+" { font-style: italic;}";
|
|
b+="@keyframes blink_box_shadow { 50% { box-shadow: none; }}";b+="@keyframes blink_block { 0% { background-color: "+this._colors.cursor.css+"; color: "+this._colors.cursorAccent.css+"; } 50% { background-color: "+this._colors.cursorAccent.css+"; color: "+this._colors.cursor.css+"; }}";b+=this._terminalSelector+" .xterm-rows:not(.xterm-focus) ."+k.CURSOR_CLASS+"."+k.CURSOR_STYLE_BLOCK_CLASS+" { outline: 1px solid "+this._colors.cursor.css+"; outline-offset: -1px;}"+this._terminalSelector+" .xterm-rows.xterm-focus ."+
|
|
k.CURSOR_CLASS+"."+k.CURSOR_BLINK_CLASS+":not(."+k.CURSOR_STYLE_BLOCK_CLASS+") { animation: blink_box_shadow 1s step-end infinite;}"+this._terminalSelector+" .xterm-rows.xterm-focus ."+k.CURSOR_CLASS+"."+k.CURSOR_BLINK_CLASS+"."+k.CURSOR_STYLE_BLOCK_CLASS+" { animation: blink_block 1s step-end infinite;}"+this._terminalSelector+" .xterm-rows.xterm-focus ."+k.CURSOR_CLASS+"."+k.CURSOR_STYLE_BLOCK_CLASS+" { background-color: "+this._colors.cursor.css+"; color: "+this._colors.cursorAccent.css+";}"+this._terminalSelector+
|
|
" .xterm-rows ."+k.CURSOR_CLASS+"."+k.CURSOR_STYLE_BAR_CLASS+" { box-shadow: 1px 0 0 "+this._colors.cursor.css+" inset;}"+this._terminalSelector+" .xterm-rows ."+k.CURSOR_CLASS+"."+k.CURSOR_STYLE_UNDERLINE_CLASS+" { box-shadow: 0 -1px 0 "+this._colors.cursor.css+" inset;}";b+=this._terminalSelector+" .xterm-selection { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}"+this._terminalSelector+" .xterm-selection div { position: absolute; background-color: "+this._colors.selection.css+
|
|
";}";this._colors.ansi.forEach(function(c,d){b+=a._terminalSelector+" .xterm-fg-"+d+" { color: "+c.css+"; }"+a._terminalSelector+" .xterm-bg-"+d+" { background-color: "+c.css+"; }"});b+=this._terminalSelector+" .xterm-fg-"+r.INVERTED_DEFAULT_COLOR+" { color: "+l.opaque(this._colors.background).css+"; }"+this._terminalSelector+" .xterm-bg-"+r.INVERTED_DEFAULT_COLOR+" { background-color: "+this._colors.foreground.css+"; }";this._themeStyleElement.innerHTML=b},b.prototype.onDevicePixelRatioChange=function(){this._updateDimensions()},
|
|
b.prototype._refreshRowElements=function(a,b){for(a=this._rowElements.length;a<=b;a++){var c=document.createElement("div");this._rowContainer.appendChild(c);this._rowElements.push(c)}for(;this._rowElements.length>b;)this._rowContainer.removeChild(this._rowElements.pop())},b.prototype.onResize=function(a,b){this._refreshRowElements(a,b);this._updateDimensions()},b.prototype.onCharSizeChanged=function(){this._updateDimensions()},b.prototype.onBlur=function(){this._rowContainer.classList.remove("xterm-focus")},
|
|
b.prototype.onFocus=function(){this._rowContainer.classList.add("xterm-focus")},b.prototype.onSelectionChanged=function(a,b,c){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(a&&b){var d=a[1]-this._bufferService.buffer.ydisp,e=b[1]-this._bufferService.buffer.ydisp,g=Math.max(d,0),f=Math.min(e,this._bufferService.rows-1);if(!(g>=this._bufferService.rows||0>f)){var h=document.createDocumentFragment();c?h.appendChild(this._createSelectionElement(g,
|
|
a[0],b[0],f-g+1)):(h.appendChild(this._createSelectionElement(g,d===g?a[0]:0,g===f?b[0]:this._bufferService.cols)),(h.appendChild(this._createSelectionElement(g+1,0,this._bufferService.cols,f-g-1)),g!==f)&&h.appendChild(this._createSelectionElement(f,0,e===f?b[0]:this._bufferService.cols)));this._selectionContainer.appendChild(h)}}},b.prototype._createSelectionElement=function(a,b,c,d){void 0===d&&(d=1);var e=document.createElement("div");return e.style.height=d*this.dimensions.actualCellHeight+"px",
|
|
e.style.top=a*this.dimensions.actualCellHeight+"px",e.style.left=b*this.dimensions.actualCellWidth+"px",e.style.width=this.dimensions.actualCellWidth*(c-b)+"px",e},b.prototype.onCursorMove=function(){},b.prototype.onOptionsChanged=function(){this._updateDimensions();this._injectCss()},b.prototype.clear=function(){this._rowElements.forEach(function(a){return a.innerHTML=""})},b.prototype.renderRows=function(a,b){for(var c=this._bufferService.buffer.ybase+this._bufferService.buffer.y,d=this._bufferService.buffer.x,
|
|
e=this._optionsService.options.cursorBlink;a<=b;a++){var g=this._rowElements[a];g.innerHTML="";var f=a+this._bufferService.buffer.ydisp,h=this._bufferService.buffer.lines.get(f);g.appendChild(this._rowFactory.createRow(h,f===c,this._optionsService.options.cursorStyle,d,e,this.dimensions.actualCellWidth,this._bufferService.cols))}},Object.defineProperty(b.prototype,"_terminalSelector",{get:function(){return".xterm-dom-renderer-owner-"+this._terminalClass},enumerable:!0,configurable:!0}),b.prototype.registerCharacterJoiner=
|
|
function(){return-1},b.prototype.deregisterCharacterJoiner=function(){return!1},b.prototype._onLinkHover=function(a){this._setCellUnderline(a.x1,a.x2,a.y1,a.y2,a.cols,!0)},b.prototype._onLinkLeave=function(a){this._setCellUnderline(a.x1,a.x2,a.y1,a.y2,a.cols,!1)},b.prototype._setCellUnderline=function(a,b,c,d,e,g){for(;a!==b||c!==d;){var f=this._rowElements[c];if(!f)break;(f=f.children[a])&&(f.style.textDecoration=g?"underline":"none");++a>=e&&(a=0,c++)}},b=f([h(5,q.ICharSizeService),h(6,t.IOptionsService),
|
|
h(7,t.IBufferService)],b)}(a.Disposable);b.DomRenderer=d},function(a,b,d){function c(a,b,c){for(;a.length<c;)a=b+a;return a}Object.defineProperty(b,"__esModule",{value:!0});var g=d(9),f=d(3),h=d(5),k=d(10);b.BOLD_CLASS="xterm-bold";b.DIM_CLASS="xterm-dim";b.ITALIC_CLASS="xterm-italic";b.UNDERLINE_CLASS="xterm-underline";b.CURSOR_CLASS="xterm-cursor";b.CURSOR_BLINK_CLASS="xterm-cursor-blink";b.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block";b.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar";b.CURSOR_STYLE_UNDERLINE_CLASS=
|
|
"xterm-cursor-underline";a=function(){function a(a,b,c){this._document=a;this._optionsService=b;this._colors=c;this._workCell=new h.CellData}return a.prototype.setColors=function(a){this._colors=a},a.prototype.createRow=function(a,d,e,h,r,y,B){var l=this._document.createDocumentFragment(),q=0;for(B=Math.min(a.length,B)-1;0<=B;B--)if(a.loadCell(B,this._workCell).getCode()!==f.NULL_CELL_CODE||d&&B===h){q=B+1;break}for(B=0;B<q;B++){a.loadCell(B,this._workCell);var t=this._workCell.getWidth();if(0!==
|
|
t){var n=this._document.createElement("span");if(1<t&&(n.style.width=y*t+"px"),d&&B===h)switch(n.classList.add(b.CURSOR_CLASS),r&&n.classList.add(b.CURSOR_BLINK_CLASS),e){case "bar":n.classList.add(b.CURSOR_STYLE_BAR_CLASS);break;case "underline":n.classList.add(b.CURSOR_STYLE_UNDERLINE_CLASS);break;default:n.classList.add(b.CURSOR_STYLE_BLOCK_CLASS)}this._workCell.isBold()&&n.classList.add(b.BOLD_CLASS);this._workCell.isItalic()&&n.classList.add(b.ITALIC_CLASS);this._workCell.isDim()&&n.classList.add(b.DIM_CLASS);
|
|
this._workCell.isUnderline()&&n.classList.add(b.UNDERLINE_CLASS);n.textContent=this._workCell.getChars()||f.WHITESPACE_CELL_CHAR;t=this._workCell.getFgColor();var v=this._workCell.getFgColorMode(),C=this._workCell.getBgColor(),H=this._workCell.getBgColorMode(),qa=!!this._workCell.isInverse();if(qa){var V=t;t=C;C=V;V=v;v=H;H=V}switch(v){case 16777216:case 33554432:this._workCell.isBold()&&8>t&&this._optionsService.options.drawBoldTextInBrightColors&&(t+=8);this._applyMinimumContrast(n,this._colors.background,
|
|
this._colors.ansi[t])||n.classList.add("xterm-fg-"+t);break;case 50331648:v=k.rgbaToColor(t>>16&255,t>>8&255,255&t);this._applyMinimumContrast(n,this._colors.background,v)||this._addStyle(n,"color:#"+c(t.toString(16),"0",6));break;default:this._applyMinimumContrast(n,this._colors.background,this._colors.foreground)||qa&&n.classList.add("xterm-fg-"+g.INVERTED_DEFAULT_COLOR)}switch(H){case 16777216:case 33554432:n.classList.add("xterm-bg-"+C);break;case 50331648:this._addStyle(n,"background-color:#"+
|
|
c(C.toString(16),"0",6));break;default:qa&&n.classList.add("xterm-bg-"+g.INVERTED_DEFAULT_COLOR)}l.appendChild(n)}}return l},a.prototype._applyMinimumContrast=function(a,b,c){if(1===this._optionsService.options.minimumContrastRatio)return!1;var d=this._colors.contrastCache.getColor(this._workCell.bg,this._workCell.fg);return void 0===d&&(d=k.ensureContrastRatio(b,c,this._optionsService.options.minimumContrastRatio),this._colors.contrastCache.setColor(this._workCell.bg,this._workCell.fg,null!=d?d:
|
|
null)),!!d&&(this._addStyle(a,"color:"+d.css),!0)},a.prototype._addStyle=function(a,b){a.setAttribute("style",""+(a.getAttribute("style")||"")+b+";")},a}();b.DomRendererRowFactory=a},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(12),g={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],
|
|
220:["\\","|"],221:["]","}"],222:["'",'"']};b.evaluateKeyboardEvent=function(a,b,d,e){var f={type:0,cancel:!1,key:void 0},h=(a.shiftKey?1:0)|(a.altKey?2:0)|(a.ctrlKey?4:0)|(a.metaKey?8:0);switch(a.keyCode){case 0:"UIKeyInputUpArrow"===a.key?f.key=b?c.C0.ESC+"OA":c.C0.ESC+"[A":"UIKeyInputLeftArrow"===a.key?f.key=b?c.C0.ESC+"OD":c.C0.ESC+"[D":"UIKeyInputRightArrow"===a.key?f.key=b?c.C0.ESC+"OC":c.C0.ESC+"[C":"UIKeyInputDownArrow"===a.key&&(f.key=b?c.C0.ESC+"OB":c.C0.ESC+"[B");break;case 8:if(a.shiftKey){f.key=
|
|
c.C0.BS;break}if(a.altKey){f.key=c.C0.ESC+c.C0.DEL;break}f.key=c.C0.DEL;break;case 9:if(a.shiftKey){f.key=c.C0.ESC+"[Z";break}f.key=c.C0.HT;f.cancel=!0;break;case 13:f.key=c.C0.CR;f.cancel=!0;break;case 27:f.key=c.C0.ESC;f.cancel=!0;break;case 37:if(a.metaKey)break;h?(f.key=c.C0.ESC+"[1;"+(h+1)+"D",f.key===c.C0.ESC+"[1;3D"&&(f.key=c.C0.ESC+(d?"b":"[1;5D"))):f.key=b?c.C0.ESC+"OD":c.C0.ESC+"[D";break;case 39:if(a.metaKey)break;h?(f.key=c.C0.ESC+"[1;"+(h+1)+"C",f.key===c.C0.ESC+"[1;3C"&&(f.key=c.C0.ESC+
|
|
(d?"f":"[1;5C"))):f.key=b?c.C0.ESC+"OC":c.C0.ESC+"[C";break;case 38:if(a.metaKey)break;h?(f.key=c.C0.ESC+"[1;"+(h+1)+"A",d||f.key!==c.C0.ESC+"[1;3A"||(f.key=c.C0.ESC+"[1;5A")):f.key=b?c.C0.ESC+"OA":c.C0.ESC+"[A";break;case 40:if(a.metaKey)break;h?(f.key=c.C0.ESC+"[1;"+(h+1)+"B",d||f.key!==c.C0.ESC+"[1;3B"||(f.key=c.C0.ESC+"[1;5B")):f.key=b?c.C0.ESC+"OB":c.C0.ESC+"[B";break;case 45:a.shiftKey||a.ctrlKey||(f.key=c.C0.ESC+"[2~");break;case 46:f.key=h?c.C0.ESC+"[3;"+(h+1)+"~":c.C0.ESC+"[3~";break;case 36:f.key=
|
|
h?c.C0.ESC+"[1;"+(h+1)+"H":b?c.C0.ESC+"OH":c.C0.ESC+"[H";break;case 35:f.key=h?c.C0.ESC+"[1;"+(h+1)+"F":b?c.C0.ESC+"OF":c.C0.ESC+"[F";break;case 33:a.shiftKey?f.type=2:f.key=c.C0.ESC+"[5~";break;case 34:a.shiftKey?f.type=3:f.key=c.C0.ESC+"[6~";break;case 112:f.key=h?c.C0.ESC+"[1;"+(h+1)+"P":c.C0.ESC+"OP";break;case 113:f.key=h?c.C0.ESC+"[1;"+(h+1)+"Q":c.C0.ESC+"OQ";break;case 114:f.key=h?c.C0.ESC+"[1;"+(h+1)+"R":c.C0.ESC+"OR";break;case 115:f.key=h?c.C0.ESC+"[1;"+(h+1)+"S":c.C0.ESC+"OS";break;case 116:f.key=
|
|
h?c.C0.ESC+"[15;"+(h+1)+"~":c.C0.ESC+"[15~";break;case 117:f.key=h?c.C0.ESC+"[17;"+(h+1)+"~":c.C0.ESC+"[17~";break;case 118:f.key=h?c.C0.ESC+"[18;"+(h+1)+"~":c.C0.ESC+"[18~";break;case 119:f.key=h?c.C0.ESC+"[19;"+(h+1)+"~":c.C0.ESC+"[19~";break;case 120:f.key=h?c.C0.ESC+"[20;"+(h+1)+"~":c.C0.ESC+"[20~";break;case 121:f.key=h?c.C0.ESC+"[21;"+(h+1)+"~":c.C0.ESC+"[21~";break;case 122:f.key=h?c.C0.ESC+"[23;"+(h+1)+"~":c.C0.ESC+"[23~";break;case 123:f.key=h?c.C0.ESC+"[24;"+(h+1)+"~":c.C0.ESC+"[24~";break;
|
|
default:!a.ctrlKey||a.shiftKey||a.altKey||a.metaKey?d&&!e||!a.altKey||a.metaKey?d&&!a.altKey&&!a.ctrlKey&&a.metaKey?65===a.keyCode&&(f.type=1):a.key&&!a.ctrlKey&&!a.altKey&&!a.metaKey&&48<=a.keyCode&&1===a.key.length?f.key=a.key:a.key&&a.ctrlKey&&"_"===a.key&&(f.key=c.C0.US):(b=(b=g[a.keyCode])&&b[a.shiftKey?1:0])?f.key=c.C0.ESC+b:65<=a.keyCode&&90>=a.keyCode&&(f.key=c.C0.ESC+String.fromCharCode(a.ctrlKey?a.keyCode-64:a.keyCode+32)):65<=a.keyCode&&90>=a.keyCode?f.key=String.fromCharCode(a.keyCode-
|
|
64):32===a.keyCode?f.key=c.C0.NUL:51<=a.keyCode&&55>=a.keyCode?f.key=String.fromCharCode(a.keyCode-51+27):56===a.keyCode?f.key=c.C0.DEL:219===a.keyCode?f.key=c.C0.ESC:220===a.keyCode?f.key=c.C0.FS:221===a.keyCode&&(f.key=c.C0.GS)}return f}},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(3);b.handleWindowsModeLineFeed=function(a){var b,d=null===(b=a.buffer.lines.get(a.buffer.ybase+a.buffer.y-1))||void 0===b?void 0:b.get(a.cols-1);(a=a.buffer.lines.get(a.buffer.ybase+a.buffer.y))&&
|
|
d&&(a.isWrapped=d[c.CHAR_DATA_CODE_INDEX]!==c.NULL_CELL_CODE&&d[c.CHAR_DATA_CODE_INDEX]!==c.WHITESPACE_CELL_CODE)}},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)}),f=this&&this.__decorate||function(a,
|
|
b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},h=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var k=d(30),r=d(1);a=d(2);var q=d(31),t=d(7),v=d(0),l=d(4);d=function(a){function b(b,
|
|
c,d,e,g){var f=a.call(this)||this;if(f._renderer=b,f._rowCount=c,f.screenElement=d,f.optionsService=e,f.charSizeService=g,f._isPaused=!1,f._needsFullRefresh=!1,f._canvasWidth=0,f._canvasHeight=0,f._onDimensionsChange=new r.EventEmitter,f._onRender=new r.EventEmitter,f._onRefreshRequest=new r.EventEmitter,f._renderDebouncer=new k.RenderDebouncer(function(a,b){return f._renderRows(a,b)}),f.register(f._renderDebouncer),f._screenDprMonitor=new q.ScreenDprMonitor,f._screenDprMonitor.setListener(function(){return f.onDevicePixelRatioChange()}),
|
|
f.register(f._screenDprMonitor),f.register(e.onOptionChange(function(){return f._renderer.onOptionsChanged()})),f.register(g.onCharSizeChange(function(){return f.onCharSizeChanged()})),f._renderer.onRequestRefreshRows(function(a){return f.refreshRows(a.start,a.end)}),f.register(t.addDisposableDomListener(window,"resize",function(){return f.onDevicePixelRatioChange()})),"IntersectionObserver"in window){var h=new IntersectionObserver(function(a){return f._onIntersectionChange(a[a.length-1])},{threshold:0});
|
|
h.observe(d);f.register({dispose:function(){return h.disconnect()}})}return f}return g(b,a),Object.defineProperty(b.prototype,"onDimensionsChange",{get:function(){return this._onDimensionsChange.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onRefreshRequest",{get:function(){return this._onRefreshRequest.event},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,
|
|
"dimensions",{get:function(){return this._renderer.dimensions},enumerable:!0,configurable:!0}),b.prototype._onIntersectionChange=function(a){this._isPaused=0===a.intersectionRatio;!this._isPaused&&this._needsFullRefresh&&(this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)},b.prototype.refreshRows=function(a,b){this._isPaused?this._needsFullRefresh=!0:this._renderDebouncer.refresh(a,b,this._rowCount)},b.prototype._renderRows=function(a,b){this._renderer.renderRows(a,b);this._onRender.fire({start:a,
|
|
end:b})},b.prototype.resize=function(a,b){this._rowCount=b;this._fireOnCanvasResize()},b.prototype.changeOptions=function(){this._renderer.onOptionsChanged();this.refreshRows(0,this._rowCount-1);this._fireOnCanvasResize()},b.prototype._fireOnCanvasResize=function(){this._renderer.dimensions.canvasWidth===this._canvasWidth&&this._renderer.dimensions.canvasHeight===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions)},b.prototype.dispose=function(){this._renderer.dispose();a.prototype.dispose.call(this)},
|
|
b.prototype.setRenderer=function(a){var b=this;this._renderer.dispose();this._renderer=a;this._renderer.onRequestRefreshRows(function(a){return b.refreshRows(a.start,a.end)});this.refreshRows(0,this._rowCount-1)},b.prototype._fullRefresh=function(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)},b.prototype.setColors=function(a){this._renderer.setColors(a);this._fullRefresh()},b.prototype.onDevicePixelRatioChange=function(){this._renderer.onDevicePixelRatioChange();
|
|
this.refreshRows(0,this._rowCount-1)},b.prototype.onResize=function(a,b){this._renderer.onResize(a,b);this._fullRefresh()},b.prototype.onCharSizeChanged=function(){this._renderer.onCharSizeChanged()},b.prototype.onBlur=function(){this._renderer.onBlur()},b.prototype.onFocus=function(){this._renderer.onFocus()},b.prototype.onSelectionChanged=function(a,b,c){this._renderer.onSelectionChanged(a,b,c)},b.prototype.onCursorMove=function(){this._renderer.onCursorMove()},b.prototype.clear=function(){this._renderer.clear()},
|
|
b.prototype.registerCharacterJoiner=function(a){return this._renderer.registerCharacterJoiner(a)},b.prototype.deregisterCharacterJoiner=function(a){return this._renderer.deregisterCharacterJoiner(a)},b=f([h(3,v.IOptionsService),h(4,l.ICharSizeService)],b)}(a.Disposable);b.RenderService=d},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(1);a=d(11);var g=d(32);b.DEFAULT_BELL_SOUND="data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjMyLjEwNAAAAAAAAAAAAAAA//tQxAADB8AhSmxhIIEVCSiJrDCQBTcu3UrAIwUdkRgQbFAZC1CQEwTJ9mjRvBA4UOLD8nKVOWfh+UlK3z/177OXrfOdKl7pyn3Xf//WreyTRUoAWgBgkOAGbZHBgG1OF6zM82DWbZaUmMBptgQhGjsyYqc9ae9XFz280948NMBWInljyzsNRFLPWdnZGWrddDsjK1unuSrVN9jJsK8KuQtQCtMBjCEtImISdNKJOopIpBFpNSMbIHCSRpRR5iakjTiyzLhchUUBwCgyKiweBv/7UsQbg8isVNoMPMjAAAA0gAAABEVFGmgqK////9bP/6XCykxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq";
|
|
b.DEFAULT_OPTIONS=Object.freeze({cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",bellSound:b.DEFAULT_BELL_SOUND,bellStyle:"none",drawBoldTextInBrightColors:!0,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"courier-new, courier, monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",lineHeight:1,letterSpacing:0,logLevel:"info",scrollback:1E3,scrollSensitivity:1,screenReaderMode:!1,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,
|
|
allowTransparency:!1,tabStopWidth:8,theme:{},rightClickSelectsWord:a.isMac,rendererType:"canvas",windowsMode:!1,convertEol:!1,termName:"xterm",screenKeys:!1,cancelEvents:!1,useFlowControl:!1,wordSeparator:" ()[]{}',:;\"`"});var f=["cols","rows"];d=function(){function a(a){var d=this;this._onOptionChange=new c.EventEmitter;this.options=g.clone(b.DEFAULT_OPTIONS);Object.keys(a).forEach(function(b){b in d.options&&(d.options[b]=a[b])})}return Object.defineProperty(a.prototype,"onOptionChange",{get:function(){return this._onOptionChange.event},
|
|
enumerable:!0,configurable:!0}),a.prototype.setOption=function(a,c){if(!(a in b.DEFAULT_OPTIONS))throw Error('No option with key "'+a+'"');if(-1!==f.indexOf(a))throw Error('Option "'+a+'" can only be set in the constructor');this.options[a]!==c&&(c=this._sanitizeAndValidateOption(a,c),this.options[a]!==c&&(this.options[a]=c,this._onOptionChange.fire(a)))},a.prototype._sanitizeAndValidateOption=function(a,c){switch(a){case "bellStyle":case "cursorStyle":case "fontWeight":case "fontWeightBold":case "rendererType":case "wordSeparator":c||
|
|
(c=b.DEFAULT_OPTIONS[a]);break;case "lineHeight":case "tabStopWidth":if(1>c)throw Error(a+" cannot be less than 1, value: "+c);break;case "minimumContrastRatio":c=Math.max(1,Math.min(21,Math.round(10*c)/10));case "scrollback":if(0>(c=Math.min(c,4294967295)))throw Error(a+" cannot be less than 0, value: "+c);break;case "fastScrollSensitivity":case "scrollSensitivity":if(0>=c)throw Error(a+" cannot be less than or equal to 0, value: "+c);}return c},a.prototype.getOption=function(a){if(!(a in b.DEFAULT_OPTIONS))throw Error('No option with key "'+
|
|
a+'"');return this.options[a]},a}();b.OptionsService=d},function(a,b,d){var c=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},g=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,
|
|
"__esModule",{value:!0});var f=d(0),h=d(1);a=function(){function a(a,b,c){this.document=a;this.parentElement=b;this._optionsService=c;this.height=this.width=0;this._onCharSizeChange=new h.EventEmitter;this._measureStrategy=new k(a,b,this._optionsService)}return Object.defineProperty(a.prototype,"hasValidSize",{get:function(){return 0<this.width&&0<this.height},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onCharSizeChange",{get:function(){return this._onCharSizeChange.event},
|
|
enumerable:!0,configurable:!0}),a.prototype.measure=function(){var a=this._measureStrategy.measure();a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._onCharSizeChange.fire())},a=c([g(2,f.IOptionsService)],a)}();b.CharSizeService=a;var k=function(){function a(a,b,c){this._document=a;this._parentElement=b;this._optionsService=c;this._result={width:0,height:0};this._measureElement=this._document.createElement("span");this._measureElement.classList.add("xterm-char-measure-element");
|
|
this._measureElement.textContent="W";this._measureElement.setAttribute("aria-hidden","true");this._parentElement.appendChild(this._measureElement)}return a.prototype.measure=function(){this._measureElement.style.fontFamily=this._optionsService.options.fontFamily;this._measureElement.style.fontSize=this._optionsService.options.fontSize+"px";var a=this._measureElement.getBoundingClientRect();return 0!==a.width&&0!==a.height&&(this._result.width=a.width,this._result.height=Math.ceil(a.height)),this._result},
|
|
a}()},function(a,b,d){var c=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},g=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var f=d(0),
|
|
h=d(65);b.MINIMUM_COLS=2;b.MINIMUM_ROWS=1;a=function(){function a(a){this._optionsService=a;this.cols=Math.max(a.options.cols,b.MINIMUM_COLS);this.rows=Math.max(a.options.rows,b.MINIMUM_ROWS);this.buffers=new h.BufferSet(a,this)}return Object.defineProperty(a.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!0,configurable:!0}),a.prototype.resize=function(a,b){this.cols=a;this.rows=b},a.prototype.reset=function(){this.buffers=new h.BufferSet(this._optionsService,this)},a=
|
|
c([g(0,f.IOptionsService)],a)}();b.BufferService=a},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(66),g=d(1);a=function(){function a(a,b){this.optionsService=a;this.bufferService=b;this._onBufferActivate=new g.EventEmitter;this._normal=new c.Buffer(!0,a,b);this._normal.fillViewportRows();this._alt=new c.Buffer(!1,a,b);this._activeBuffer=this._normal;this.setupTabStops()}return Object.defineProperty(a.prototype,"onBufferActivate",{get:function(){return this._onBufferActivate.event},
|
|
enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"alt",{get:function(){return this._alt},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"active",{get:function(){return this._activeBuffer},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"normal",{get:function(){return this._normal},enumerable:!0,configurable:!0}),a.prototype.activateNormalBuffer=function(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,
|
|
this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))},a.prototype.activateAltBuffer=function(a){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(a),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))},a.prototype.resize=function(a,b){this._normal.resize(a,b);this._alt.resize(a,b)},a.prototype.setupTabStops=
|
|
function(a){this._normal.setupTabStops(a);this._alt.setupTabStops(a)},a}();b.BufferSet=a},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(67),g=d(16),f=d(5),h=d(3),k=d(68),r=d(69),q=d(18);b.MAX_BUFFER_SIZE=4294967295;a=function(){function a(a,b,d){this._hasScrollback=a;this._optionsService=b;this._bufferService=d;this.savedX=this.savedY=this.x=this.y=this.ybase=this.ydisp=0;this.savedCurAttrData=g.DEFAULT_ATTR_DATA.clone();this.savedCharset=q.DEFAULT_CHARSET;this.markers=
|
|
[];this._nullCell=f.CellData.fromCharData([0,h.NULL_CELL_CHAR,h.NULL_CELL_WIDTH,h.NULL_CELL_CODE]);this._whitespaceCell=f.CellData.fromCharData([0,h.WHITESPACE_CELL_CHAR,h.WHITESPACE_CELL_WIDTH,h.WHITESPACE_CELL_CODE]);this._cols=this._bufferService.cols;this._rows=this._bufferService.rows;this.lines=new c.CircularList(this._getCorrectBufferLength(this._rows));this.scrollTop=0;this.scrollBottom=this._rows-1;this.setupTabStops()}return a.prototype.getNullCell=function(a){return a?(this._nullCell.fg=
|
|
a.fg,this._nullCell.bg=a.bg):(this._nullCell.fg=0,this._nullCell.bg=0),this._nullCell},a.prototype.getWhitespaceCell=function(a){return a?(this._whitespaceCell.fg=a.fg,this._whitespaceCell.bg=a.bg):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0),this._whitespaceCell},a.prototype.getBlankLine=function(a,b){return new g.BufferLine(this._bufferService.cols,this.getNullCell(a),b)},Object.defineProperty(a.prototype,"hasScrollback",{get:function(){return this._hasScrollback&&this.lines.maxLength>
|
|
this._rows},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"isCursorInViewport",{get:function(){var a=this.ybase+this.y-this.ydisp;return 0<=a&&a<this._rows},enumerable:!0,configurable:!0}),a.prototype._getCorrectBufferLength=function(a){if(!this._hasScrollback)return a;a+=this._optionsService.options.scrollback;return a>b.MAX_BUFFER_SIZE?b.MAX_BUFFER_SIZE:a},a.prototype.fillViewportRows=function(a){if(0===this.lines.length){void 0===a&&(a=g.DEFAULT_ATTR_DATA);for(var b=this._rows;b--;)this.lines.push(this.getBlankLine(a))}},
|
|
a.prototype.clear=function(){this.x=this.y=this.ybase=this.ydisp=0;this.lines=new c.CircularList(this._getCorrectBufferLength(this._rows));this.scrollTop=0;this.scrollBottom=this._rows-1;this.setupTabStops()},a.prototype.resize=function(a,b){var c=this.getNullCell(g.DEFAULT_ATTR_DATA),d=this._getCorrectBufferLength(b);if(d>this.lines.maxLength&&(this.lines.maxLength=d),0<this.lines.length){if(this._cols<a)for(var e=0;e<this.lines.length;e++)this.lines.get(e).resize(a,c);e=0;if(this._rows<b)for(var f=
|
|
this._rows;f<b;f++)this.lines.length<b+this.ybase&&(this._optionsService.options.windowsMode?this.lines.push(new g.BufferLine(a,c)):0<this.ybase&&this.lines.length<=this.ybase+this.y+e+1?(this.ybase--,e++,0<this.ydisp&&this.ydisp--):this.lines.push(new g.BufferLine(a,c)));else for(f=this._rows;f>b;f--)this.lines.length>b+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));d<this.lines.maxLength&&(f=this.lines.length-d,0<f&&(this.lines.trimStart(f),this.ybase=
|
|
Math.max(this.ybase-f,0),this.ydisp=Math.max(this.ydisp-f,0),this.savedY=Math.max(this.savedY-f,0)),this.lines.maxLength=d);this.x=Math.min(this.x,a-1);this.y=Math.min(this.y,b-1);e&&(this.y+=e);this.savedX=Math.min(this.savedX,a-1);this.scrollTop=0}if(this.scrollBottom=b-1,this._isReflowEnabled&&(this._reflow(a,b),this._cols>a))for(e=0;e<this.lines.length;e++)this.lines.get(e).resize(a,c);this._cols=a;this._rows=b},Object.defineProperty(a.prototype,"_isReflowEnabled",{get:function(){return this._hasScrollback&&
|
|
!this._optionsService.options.windowsMode},enumerable:!0,configurable:!0}),a.prototype._reflow=function(a,b){this._cols!==a&&(a>this._cols?this._reflowLarger(a,b):this._reflowSmaller(a,b))},a.prototype._reflowLarger=function(a,b){var c=k.reflowLargerGetLinesToRemove(this.lines,this._cols,a,this.ybase+this.y,this.getNullCell(g.DEFAULT_ATTR_DATA));0<c.length&&(c=k.reflowLargerCreateNewLayout(this.lines,c),k.reflowLargerApplyNewLayout(this.lines,c.layout),this._reflowLargerAdjustViewport(a,b,c.countRemoved))},
|
|
a.prototype._reflowLargerAdjustViewport=function(a,b,c){for(var d=this.getNullCell(g.DEFAULT_ATTR_DATA),e=c;0<e--;)0===this.ybase?(0<this.y&&this.y--,this.lines.length<b&&this.lines.push(new g.BufferLine(a,d))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-c,0)},a.prototype._reflowSmaller=function(a,b){for(var c=this.getNullCell(g.DEFAULT_ATTR_DATA),d=[],e=0,f=this.lines.length-1;0<=f;f--){var h=this.lines.get(f);if(!(!h||!h.isWrapped&&h.getTrimmedLength()<=
|
|
a)){for(var l=[h];h.isWrapped&&0<f;)h=this.lines.get(--f),l.unshift(h);h=this.ybase+this.y;if(!(h>=f&&h<f+l.length)){var q=l[l.length-1].getTrimmedLength(),r=k.reflowSmallerGetNewLineLengths(l,this._cols,a),t=r.length-l.length;var n=0===this.ybase&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+t):Math.max(0,this.lines.length-this.lines.maxLength+t);var v=[];for(h=0;h<t;h++){var ra=this.getBlankLine(g.DEFAULT_ATTR_DATA,!0);v.push(ra)}0<v.length&&(d.push({start:f+l.length+e,newLines:v}),
|
|
e+=v.length);l.push.apply(l,v);h=r.length-1;v=r[h];0===v&&(v=r[--h]);for(ra=l.length-t-1;0<=ra;){var I=Math.min(q,v);if(l[h].copyCellsFrom(l[ra],q-I,v-I,I,!0),0===(v-=I)&&(v=r[--h]),0===(q-=I))ra--,q=k.getWrappedLineTrimmedLength(l,Math.max(ra,0),this._cols)}for(h=0;h<l.length;h++)r[h]<a&&l[h].setCell(r[h],c);for(h=t-n;0<h--;)0===this.ybase?this.y<b-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+e)-b&&(this.ybase===this.ydisp&&
|
|
this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+t,this.ybase+b-1)}}}if(0<d.length){a=[];c=[];for(h=0;h<this.lines.length;h++)c.push(this.lines.get(h));b=this.lines.length;f=b-1;l=0;t=d[l];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+e);r=0;for(h=Math.min(this.lines.maxLength-1,b+e-1);0<=h;h--)if(t&&t.start>f+r){for(n=t.newLines.length-1;0<=n;n--)this.lines.set(h--,t.newLines[n]);h++;a.push({index:f+1,amount:t.newLines.length});r+=t.newLines.length;t=d[++l]}else this.lines.set(h,
|
|
c[f--]);d=0;for(h=a.length-1;0<=h;h--)a[h].index+=d,this.lines.onInsertEmitter.fire(a[h]),d+=a[h].amount;e=Math.max(0,b+e-this.lines.maxLength);0<e&&this.lines.onTrimEmitter.fire(e)}},a.prototype.stringIndexToBufferIndex=function(a,b,c){for(void 0===c&&(c=!1);b;){var d=this.lines.get(a);if(!d)return[-1,-1];for(var e=c?d.getTrimmedLength():d.length,g=0;g<e;++g)if(d.get(g)[h.CHAR_DATA_WIDTH_INDEX]&&(b-=d.get(g)[h.CHAR_DATA_CHAR_INDEX].length||1),0>b)return[a,g];a++}return[a,0]},a.prototype.translateBufferLineToString=
|
|
function(a,b,c,d){void 0===c&&(c=0);return(a=this.lines.get(a))?a.translateToString(b,c,d):""},a.prototype.getWrappedRangeForLine=function(a){for(var b=a;0<b&&this.lines.get(b).isWrapped;)b--;for(;a+1<this.lines.length&&this.lines.get(a+1).isWrapped;)a++;return{first:b,last:a}},a.prototype.setupTabStops=function(a){for(null!=a?this.tabs[a]||(a=this.prevStop(a)):(this.tabs={},a=0);a<this._cols;a+=this._optionsService.options.tabStopWidth)this.tabs[a]=!0},a.prototype.prevStop=function(a){for(null==
|
|
a&&(a=this.x);!this.tabs[--a]&&0<a;);return a>=this._cols?this._cols-1:0>a?0:a},a.prototype.nextStop=function(a){for(null==a&&(a=this.x);!this.tabs[++a]&&a<this._cols;);return a>=this._cols?this._cols-1:0>a?0:a},a.prototype.addMarker=function(a){var b=this,c=new r.Marker(a);return this.markers.push(c),c.register(this.lines.onTrim(function(a){c.line-=a;0>c.line&&c.dispose()})),c.register(this.lines.onInsert(function(a){c.line>=a.index&&(c.line+=a.amount)})),c.register(this.lines.onDelete(function(a){c.line>=
|
|
a.index&&c.line<a.index+a.amount&&c.dispose();c.line>a.index&&(c.line-=a.amount)})),c.register(c.onDispose(function(){return b._removeMarker(c)})),c},a.prototype._removeMarker=function(a){this.markers.splice(this.markers.indexOf(a),1)},a.prototype.iterator=function(a,b,c,d,e){return new t(this,a,b,c,d,e)},a}();b.Buffer=a;var t=function(){function a(a,b,c,d,e,g){void 0===c&&(c=0);void 0===d&&(d=a.lines.length);void 0===e&&(e=0);void 0===g&&(g=0);this._buffer=a;this._trimRight=b;this._startIndex=c;
|
|
this._endIndex=d;this._startOverscan=e;this._endOverscan=g;0>this._startIndex&&(this._startIndex=0);this._endIndex>this._buffer.lines.length&&(this._endIndex=this._buffer.lines.length);this._current=this._startIndex}return a.prototype.hasNext=function(){return this._current<this._endIndex},a.prototype.next=function(){var a=this._buffer.getWrappedRangeForLine(this._current);a.first<this._startIndex-this._startOverscan&&(a.first=this._startIndex-this._startOverscan);a.last>this._endIndex+this._endOverscan&&
|
|
(a.last=this._endIndex+this._endOverscan);a.first=Math.max(a.first,0);a.last=Math.min(a.last,this._buffer.lines.length);for(var b="",c=a.first;c<=a.last;++c)b+=this._buffer.translateBufferLineToString(c,this._trimRight);return this._current=a.last+1,{range:a,content:b}},a}();b.BufferStringIterator=t},function(a,b,d){Object.defineProperty(b,"__esModule",{value:!0});var c=d(1);a=function(){function a(a){this._maxLength=a;this.onDeleteEmitter=new c.EventEmitter;this.onInsertEmitter=new c.EventEmitter;
|
|
this.onTrimEmitter=new c.EventEmitter;this._array=Array(this._maxLength);this._length=this._startIndex=0}return Object.defineProperty(a.prototype,"onDelete",{get:function(){return this.onDeleteEmitter.event},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onInsert",{get:function(){return this.onInsertEmitter.event},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onTrim",{get:function(){return this.onTrimEmitter.event},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,
|
|
"maxLength",{get:function(){return this._maxLength},set:function(a){if(this._maxLength!==a){for(var b=Array(a),c=0;c<Math.min(a,this.length);c++)b[c]=this._array[this._getCyclicIndex(c)];this._array=b;this._maxLength=a;this._startIndex=0}},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"length",{get:function(){return this._length},set:function(a){if(a>this._length)for(var b=this._length;b<a;b++)this._array[b]=void 0;this._length=a},enumerable:!0,configurable:!0}),a.prototype.get=
|
|
function(a){return this._array[this._getCyclicIndex(a)]},a.prototype.set=function(a,b){this._array[this._getCyclicIndex(a)]=b},a.prototype.push=function(a){this._array[this._getCyclicIndex(this._length)]=a;this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++},a.prototype.recycle=function(){if(this._length!==this._maxLength)throw Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,
|
|
this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]},Object.defineProperty(a.prototype,"isFull",{get:function(){return this._length===this._maxLength},enumerable:!0,configurable:!0}),a.prototype.pop=function(){return this._array[this._getCyclicIndex(this._length-- -1)]},a.prototype.splice=function(a,b){for(var c=[],d=2;d<arguments.length;d++)c[d-2]=arguments[d];if(b){for(d=a;d<this._length-b;d++)this._array[this._getCyclicIndex(d)]=this._array[this._getCyclicIndex(d+b)];this._length-=
|
|
b}for(d=this._length-1;d>=a;d--)this._array[this._getCyclicIndex(d+c.length)]=this._array[this._getCyclicIndex(d)];for(d=0;d<c.length;d++)this._array[this._getCyclicIndex(a+d)]=c[d];this._length+c.length>this._maxLength?(c=this._length+c.length-this._maxLength,this._startIndex+=c,this._length=this._maxLength,this.onTrimEmitter.fire(c)):this._length+=c.length},a.prototype.trimStart=function(a){a>this._length&&(a=this._length);this._startIndex+=a;this._length-=a;this.onTrimEmitter.fire(a)},a.prototype.shiftElements=
|
|
function(a,b,c){if(!(0>=b)){if(0>a||a>=this._length)throw Error("start argument out of range");if(0>a+c)throw Error("Cannot shift elements in list beyond index 0");if(0<c){for(var d=b-1;0<=d;d--)this.set(a+d+c,this.get(a+d));a=a+b+c-this._length;if(0<a)for(this._length+=a;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(d=0;d<b;d++)this.set(a+d+c,this.get(a+d))}},a.prototype._getCyclicIndex=function(a){return(this._startIndex+a)%this._maxLength},
|
|
a}();b.CircularList=a},function(a,b){function c(a,b,c){if(b===a.length-1)return a[b].getTrimmedLength();var d=!a[b].hasContent(c-1)&&1===a[b].getWidth(c-1);a=2===a[b+1].getWidth(0);return d&&a?c-1:c}Object.defineProperty(b,"__esModule",{value:!0});b.reflowLargerGetLinesToRemove=function(a,b,d,h,k){for(var e=[],g=0;g<a.length-1;g++){var f=g,v=a.get(++f);if(v.isWrapped){for(var l=[a.get(g)];f<a.length&&v.isWrapped;)l.push(v),v=a.get(++f);if(!(h>=g&&h<f)){f=0;v=c(l,f,b);for(var n=1,y=0;n<l.length;){var B=
|
|
c(l,n,b),O=Math.min(B-y,d-v);l[f].copyCellsFrom(l[n],y,v,O,!1);(v+=O)===d&&(f++,v=0);(y+=O)===B&&(n++,y=0);0===v&&0!==f&&2===l[f-1].getWidth(d-1)&&(l[f].copyCellsFrom(l[f-1],d-1,v++,1,!1),l[f-1].setCell(d-1,k))}l[f].replaceCells(v,d,k);v=0;for(n=l.length-1;0<n&&(n>f||0===l[n].getTrimmedLength());n--)v++;0<v&&(e.push(g+l.length-v),e.push(v))}g+=l.length-1}}return e};b.reflowLargerCreateNewLayout=function(a,b){for(var c=[],d=0,e=b[d],g=0,q=0;q<a.length;q++)e===q?(e=b[++d],a.onDeleteEmitter.fire({index:q-
|
|
g,amount:e}),q+=e-1,g+=e,e=b[++d]):c.push(q);return{layout:c,countRemoved:g}};b.reflowLargerApplyNewLayout=function(a,b){for(var c=[],d=0;d<b.length;d++)c.push(a.get(b[d]));for(d=0;d<c.length;d++)a.set(d,c[d]);a.length=b.length};b.reflowSmallerGetNewLineLengths=function(a,b,d){for(var e=[],g=a.map(function(d,e){return c(a,e,b)}).reduce(function(a,b){return a+b}),f=0,q=0,t=0;t<g;){if(g-t<d){e.push(g-t);break}f+=d;var v=c(a,q,b);f>v&&(f-=v,q++);(v=2===a[q].getWidth(f-1))&&f--;v=v?d-1:d;e.push(v);t+=
|
|
v}return e};b.getWrappedLineTrimmedLength=c},function(a,b,d){var c,g=this&&this.__extends||(c=function(a,b){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])})(a,b)},function(a,b){function d(){this.constructor=a}c(a,b);a.prototype=null===b?Object.create(b):(d.prototype=b.prototype,new d)});Object.defineProperty(b,"__esModule",{value:!0});var f=d(1);a=function(a){function b(c){var d=a.call(this)||
|
|
this;return d.line=c,d._id=b._nextId++,d.isDisposed=!1,d._onDispose=new f.EventEmitter,d}return g(b,a),Object.defineProperty(b.prototype,"id",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(b.prototype,"onDispose",{get:function(){return this._onDispose.event},enumerable:!0,configurable:!0}),b.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire())},b._nextId=1,b}(d(2).Disposable);b.Marker=a},function(a,b,d){var c=
|
|
this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},g=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var f=d(4),h=d(29);a=function(){function a(a,
|
|
b){this._renderService=a;this._charSizeService=b}return a.prototype.getCoords=function(a,b,c,d,e){return h.getCoords(a,b,c,d,this._charSizeService.hasValidSize,this._renderService.dimensions.actualCellWidth,this._renderService.dimensions.actualCellHeight,e)},a.prototype.getRawByteCoords=function(a,b,c,d){a=this.getCoords(a,b,c,d);return h.getRawByteCoords(a)},a=c([g(0,f.IRenderService),g(1,f.ICharSizeService)],a)}();b.MouseService=a},function(a,b,d){var c=this&&this.__decorate||function(a,b,c,d){var e,
|
|
g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},g=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var f=d(0),h=d(1),k=d(32),r=Object.freeze({applicationCursorKeys:!1});a=function(){function a(a,
|
|
b,c,d){this._scrollToBottom=a;this._bufferService=b;this._logService=c;this._optionsService=d;this.isCursorHidden=this.isCursorInitialized=!1;this._onData=new h.EventEmitter;this._onUserInput=new h.EventEmitter;this._onBinary=new h.EventEmitter;this.decPrivateModes=k.clone(r)}return Object.defineProperty(a.prototype,"onData",{get:function(){return this._onData.event},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"onUserInput",{get:function(){return this._onUserInput.event},enumerable:!0,
|
|
configurable:!0}),Object.defineProperty(a.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!0,configurable:!0}),a.prototype.reset=function(){this.decPrivateModes=k.clone(r)},a.prototype.triggerDataEvent=function(a,b){if(void 0===b&&(b=!1),!this._optionsService.options.disableStdin){var c=this._bufferService.buffer;c.ybase!==c.ydisp&&this._scrollToBottom();b&&this._onUserInput.fire();this._logService.debug('sending data "'+a+'"',function(){return a.split("").map(function(a){return a.charCodeAt(0)})});
|
|
this._onData.fire(a)}},a.prototype.triggerBinaryEvent=function(a){this._optionsService.options.disableStdin||(this._logService.debug('sending binary "'+a+'"',function(){return a.split("").map(function(a){return a.charCodeAt(0)})}),this._onBinary.fire(a))},a=c([g(1,f.IBufferService),g(2,f.ILogService),g(3,f.IOptionsService)],a)}();b.CoreService=a},function(a,b,d){var c=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==
|
|
typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},g=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}},f=this&&this.__spreadArrays||function(){for(var a=0,b=0,c=arguments.length;b<c;b++)a+=arguments[b].length;a=Array(a);var d=0;for(b=0;b<c;b++)for(var e=arguments[b],g=0,f=e.length;g<f;g++,d++)a[d]=e[g];return a};Object.defineProperty(b,
|
|
"__esModule",{value:!0});var h,k=d(0);!function(a){a[a.DEBUG=0]="DEBUG";a[a.INFO=1]="INFO";a[a.WARN=2]="WARN";a[a.ERROR=3]="ERROR";a[a.OFF=4]="OFF"}(h=b.LogLevel||(b.LogLevel={}));var r={debug:h.DEBUG,info:h.INFO,warn:h.WARN,error:h.ERROR,off:h.OFF};a=function(){function a(a){var b=this;this._optionsService=a;this._updateLogLevel();this._optionsService.onOptionChange(function(a){"logLevel"===a&&b._updateLogLevel()})}return a.prototype._updateLogLevel=function(){this._logLevel=r[this._optionsService.options.logLevel]},
|
|
a.prototype._evalLazyOptionalParams=function(a){for(var b=0;b<a.length;b++)"function"==typeof a[b]&&(a[b]=a[b]())},a.prototype._log=function(a,b,c){this._evalLazyOptionalParams(c);a.call.apply(a,f([console,"xterm.js: "+b],c))},a.prototype.debug=function(a){for(var b=[],c=1;c<arguments.length;c++)b[c-1]=arguments[c];this._logLevel<=h.DEBUG&&this._log(console.log,a,b)},a.prototype.info=function(a){for(var b=[],c=1;c<arguments.length;c++)b[c-1]=arguments[c];this._logLevel<=h.INFO&&this._log(console.info,
|
|
a,b)},a.prototype.warn=function(a){for(var b=[],c=1;c<arguments.length;c++)b[c-1]=arguments[c];this._logLevel<=h.WARN&&this._log(console.warn,a,b)},a.prototype.error=function(a){for(var b=[],c=1;c<arguments.length;c++)b[c-1]=arguments[c];this._logLevel<=h.ERROR&&this._log(console.error,a,b)},a=c([g(0,k.IOptionsService)],a)}();b.LogService=a},function(a,b,d){var c=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==
|
|
typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},g=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var f=d(0);a=function(){function a(a){this._bufferService=a;this.clearRange()}return Object.defineProperty(a.prototype,"start",{get:function(){return this._start},enumerable:!0,
|
|
configurable:!0}),Object.defineProperty(a.prototype,"end",{get:function(){return this._end},enumerable:!0,configurable:!0}),a.prototype.clearRange=function(){this._end=this._start=this._bufferService.buffer.y},a.prototype.markDirty=function(a){a<this._start?this._start=a:a>this._end&&(this._end=a)},a.prototype.markRangeDirty=function(a,b){if(a>b){var c=a;a=b;b=c}a<this._start&&(this._start=a);b>this._end&&(this._end=b)},a.prototype.markAllDirty=function(){this.markRangeDirty(0,this._bufferService.rows-
|
|
1)},a=c([g(0,f.IBufferService)],a)}();b.DirtyRowService=a},function(a,b,d){var c=this&&this.__spreadArrays||function(){for(var a=0,b=0,c=arguments.length;b<c;b++)a+=arguments[b].length;a=Array(a);var d=0;for(b=0;b<c;b++)for(var e=arguments[b],g=0,f=e.length;g<f;g++,d++)a[d]=e[g];return a};Object.defineProperty(b,"__esModule",{value:!0});var g=d(0),f=d(14),h=function(){function a(){for(var a=[],b=0;b<arguments.length;b++)a[b]=arguments[b];this._entries=new Map;for(b=0;b<a.length;b++){var c=a[b];this.set(c[0],
|
|
c[1])}}return a.prototype.set=function(a,b){var c=this._entries.get(a);return this._entries.set(a,b),c},a.prototype.forEach=function(a){this._entries.forEach(function(b,c){return a(c,b)})},a.prototype.has=function(a){return this._entries.has(a)},a.prototype.get=function(a){return this._entries.get(a)},a}();b.ServiceCollection=h;a=function(){function a(){this._services=new h;this._services.set(g.IInstantiationService,this)}return a.prototype.setService=function(a,b){this._services.set(a,b)},a.prototype.createInstance=
|
|
function(a){for(var b=[],d=1;d<arguments.length;d++)b[d-1]=arguments[d];var e=f.getServiceDependencies(a).sort(function(a,b){return a.index-b.index});d=[];for(var g=0;g<e.length;g++){var h=e[g],k=this._services.get(h.id);if(!k)throw Error("[createInstance] "+a.name+" depends on UNKNOWN service "+h.id+".");d.push(k)}e=0<e.length?e[0].index:b.length;if(b.length!==e)throw Error("[createInstance] First service dependency of "+a.name+" at position "+(e+1)+" conflicts with "+b.length+" static arguments");
|
|
return new (a.bind.apply(a,c([void 0],c(b,d))))},a}();b.InstantiationService=a},function(a,b,d){function c(a,b){var c=(a.ctrl?16:0)|(a.shift?4:0)|(a.alt?8:0);return 4===a.button?(c|=64,c|=a.action):(c|=3&a.button,4&a.button&&(c|=64),8&a.button&&(c|=128),32===a.action?c|=32:0!==a.action||b||(c|=3)),c}var g=this&&this.__decorate||function(a,b,c,d){var e,g=arguments.length,f=3>g?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)f=Reflect.decorate(a,
|
|
b,c,d);else for(var h=a.length-1;0<=h;h--)(e=a[h])&&(f=(3>g?e(f):3<g?e(b,c,f):e(b,c))||f);return 3<g&&f&&Object.defineProperty(b,c,f),f},f=this&&this.__param||function(a,b){return function(c,d){b(c,d,a)}};Object.defineProperty(b,"__esModule",{value:!0});var h=d(0),k=d(1),r={NONE:{events:0,restrict:function(){return!1}},X10:{events:1,restrict:function(a){return 4!==a.button&&1===a.action&&(a.ctrl=!1,a.alt=!1,a.shift=!1,!0)}},VT200:{events:19,restrict:function(a){return 32!==a.action}},DRAG:{events:23,
|
|
restrict:function(a){return 32!==a.action||3!==a.button}},ANY:{events:31,restrict:function(){return!0}}},q=String.fromCharCode,t={DEFAULT:function(a){a=[c(a,!1)+32,a.col+32,a.row+32];return 255<a[0]||255<a[1]||255<a[2]?"":"\u001b[M"+q(a[0])+q(a[1])+q(a[2])},SGR:function(a){var b=0===a.action&&4!==a.button?"m":"M";return"\u001b[<"+c(a,!0)+";"+a.col+";"+a.row+b}};a=function(){function a(a,b){var c=this;this._bufferService=a;this._coreService=b;this._protocols={};this._encodings={};this._activeEncoding=
|
|
this._activeProtocol="";this._onProtocolChange=new k.EventEmitter;this._lastEvent=null;Object.keys(r).forEach(function(a){return c.addProtocol(a,r[a])});Object.keys(t).forEach(function(a){return c.addEncoding(a,t[a])});this.reset()}return a.prototype.addProtocol=function(a,b){this._protocols[a]=b},a.prototype.addEncoding=function(a,b){this._encodings[a]=b},Object.defineProperty(a.prototype,"activeProtocol",{get:function(){return this._activeProtocol},set:function(a){if(!this._protocols[a])throw Error('unknown protocol "'+
|
|
a+'"');this._activeProtocol=a;this._onProtocolChange.fire(this._protocols[a].events)},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"activeEncoding",{get:function(){return this._activeEncoding},set:function(a){if(!this._encodings[a])throw Error('unknown encoding "'+a+'"');this._activeEncoding=a},enumerable:!0,configurable:!0}),a.prototype.reset=function(){this.activeProtocol="NONE";this.activeEncoding="DEFAULT";this._lastEvent=null},Object.defineProperty(a.prototype,"onProtocolChange",
|
|
{get:function(){return this._onProtocolChange.event},enumerable:!0,configurable:!0}),a.prototype.triggerMouseEvent=function(a){if(0>a.col||a.col>=this._bufferService.cols||0>a.row||a.row>=this._bufferService.rows||4===a.button&&32===a.action||3===a.button&&32!==a.action||4!==a.button&&(2===a.action||3===a.action)||(a.col++,a.row++,32===a.action&&this._lastEvent&&this._compareEvents(this._lastEvent,a))||!this._protocols[this._activeProtocol].restrict(a))return!1;var b=this._encodings[this._activeEncoding](a);
|
|
return b&&("DEFAULT"===this._activeEncoding?this._coreService.triggerBinaryEvent(b):this._coreService.triggerDataEvent(b,!0)),this._lastEvent=a,!0},a.prototype.explainEvents=function(a){return{DOWN:!!(1&a),UP:!!(2&a),DRAG:!!(4&a),MOVE:!!(8&a),WHEEL:!!(16&a)}},a.prototype._compareEvents=function(a,b){return a.col===b.col&&a.row===b.row&&a.button===b.button&&a.action===b.action&&a.ctrl===b.ctrl&&a.alt===b.alt&&a.shift===b.shift},a=g([f(0,h.IBufferService),f(1,h.ICoreService)],a)}();b.CoreMouseService=
|
|
a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(a){this._action=a;this._writeBuffer=[];this._callbacks=[];this._bufferOffset=this._pendingData=0}return a.prototype.writeSync=function(a){if(this._writeBuffer.length){for(var b=this._bufferOffset;b<this._writeBuffer.length;++b){var c=this._callbacks[b];this._action(this._writeBuffer[b]);c&&c()}this._writeBuffer=[];this._callbacks=[];this._pendingData=0;this._bufferOffset=2147483647}this._action(a)},a.prototype.write=
|
|
function(a,b){var c=this;if(5E7<this._pendingData)throw Error("write data discarded, use flow control to avoid losing data");this._writeBuffer.length||(this._bufferOffset=0,setTimeout(function(){return c._innerWrite()}));this._pendingData+=a.length;this._writeBuffer.push(a);this._callbacks.push(b)},a.prototype._innerWrite=function(){for(var a=this,b=Date.now();this._writeBuffer.length>this._bufferOffset;){var c=this._writeBuffer[this._bufferOffset],d=this._callbacks[this._bufferOffset];if(this._bufferOffset++,
|
|
this._action(c),this._pendingData-=c.length,d&&d(),12<=Date.now()-b)break}this._writeBuffer.length>this._bufferOffset?(50<this._bufferOffset&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(function(){return a._innerWrite()},0)):(this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0)},a}();b.WriteBuffer=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});
|
|
a=function(){function a(a){this._textarea=a}return Object.defineProperty(a.prototype,"isFocused",{get:function(){return document.activeElement===this._textarea&&document.hasFocus()},enumerable:!0,configurable:!0}),a}();b.CoreBrowserService=a},function(a,b){Object.defineProperty(b,"__esModule",{value:!0});a=function(){function a(){this._addons=[]}return a.prototype.dispose=function(){for(var a=this._addons.length-1;0<=a;a--)this._addons[a].instance.dispose()},a.prototype.loadAddon=function(a,b){var c=
|
|
this,d={instance:b,dispose:b.dispose,isDisposed:!1};this._addons.push(d);b.dispose=function(){return c._wrappedAddonDispose(d)};b.activate(a)},a.prototype._wrappedAddonDispose=function(a){if(!a.isDisposed){for(var b=-1,c=0;c<this._addons.length;c++)if(this._addons[c]===a){b=c;break}if(-1===b)throw Error("Could not dispose an addon that has not been loaded");a.isDisposed=!0;a.dispose.apply(a.instance);this._addons.splice(b,1)}},a}();b.AddonManager=a}])})}),ea=aa(ca),fa=ca.Terminal,ka=ba(function(b){!function(a,
|
|
c){b.exports=c()}(window,function(){return function(a){function b(c){if(d[c])return d[c].exports;var e=d[c]={i:c,l:!1,exports:{}};return a[c].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var d={};return b.m=a,b.c=d,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{enumerable:!0,get:d})},b.r=function(a){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"});Object.defineProperty(a,"__esModule",{value:!0})},b.t=function(a,c){if((1&c&&(a=
|
|
b(a)),8&c)||4&c&&"object"==typeof a&&a&&a.__esModule)return a;var d=Object.create(null);if(b.r(d),Object.defineProperty(d,"default",{enumerable:!0,value:a}),2&c&&"string"!=typeof a)for(var e in a)b.d(d,e,function(b){return a[b]}.bind(null,e));return d},b.n=function(a){var c=a&&a.__esModule?function(){return a.default}:function(){return a};return b.d(c,"a",c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p="",b(b.s=0)}([function(a,b){Object.defineProperty(b,"__esModule",
|
|
{value:!0});a=function(){function a(){}return a.prototype.activate=function(a){this._terminal=a},a.prototype.dispose=function(){},a.prototype.fit=function(){var a=this.proposeDimensions();if(a&&this._terminal){var b=this._terminal._core;this._terminal.rows===a.rows&&this._terminal.cols===a.cols||(b._renderService.clear(),this._terminal.resize(a.cols,a.rows))}},a.prototype.proposeDimensions=function(){if(this._terminal&&this._terminal.element.parentElement){var a=this._terminal._core,b=window.getComputedStyle(this._terminal.element.parentElement),
|
|
c=parseInt(b.getPropertyValue("height"));b=Math.max(0,parseInt(b.getPropertyValue("width")));var d=window.getComputedStyle(this._terminal.element);c-=parseInt(d.getPropertyValue("padding-top"))+parseInt(d.getPropertyValue("padding-bottom"));b=b-(parseInt(d.getPropertyValue("padding-right"))+parseInt(d.getPropertyValue("padding-left")))-a.viewport.scrollBarWidth;return{cols:Math.floor(b/a._renderService.dimensions.actualCellWidth),rows:Math.floor(c/a._renderService.dimensions.actualCellHeight)}}},
|
|
a}();b.FitAddon=a}])})});aa(ka);
|
|
var la=ka.FitAddon,na=ba(function(b){!function(a,c){b.exports=c()}(window,function(){return function(a){function b(c){if(d[c])return d[c].exports;var e=d[c]={i:c,l:!1,exports:{}};return a[c].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var d={};return b.m=a,b.c=d,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{enumerable:!0,get:d})},b.r=function(a){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"});Object.defineProperty(a,"__esModule",
|
|
{value:!0})},b.t=function(a,c){if((1&c&&(a=b(a)),8&c)||4&c&&"object"==typeof a&&a&&a.__esModule)return a;var d=Object.create(null);if(b.r(d),Object.defineProperty(d,"default",{enumerable:!0,value:a}),2&c&&"string"!=typeof a)for(var e in a)b.d(d,e,function(b){return a[b]}.bind(null,e));return d},b.n=function(a){var c=a&&a.__esModule?function(){return a.default}:function(){return a};return b.d(c,"a",c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p="",b(b.s=0)}([function(a,
|
|
b){function c(a,b){window.open(b,"_blank")}Object.defineProperty(b,"__esModule",{value:!0});var e=/(?:^|[^\da-z\.-]+)((https?:\/\/)((([\da-z\.-]+)\.([a-z\.]{2,6}))|((\d{1,3}\.){3}\d{1,3})|(localhost))(:\d{1,5})?((\/[\/\w\.\-%~:+]*)*([^:"'\s]))?(\?[0-9\w\[\]\(\)\/\?\!#@$%&'*+,:;~\=\.\-]*)?(#[0-9\w\[\]\(\)\/\?\!#@$%&'*+,:;~\=\.\-]*)?)($|[^\/\w\.\-%]+)/;a=function(){function a(a,b){void 0===a&&(a=c);void 0===b&&(b={});this._handler=a;this._options=b;this._options.matchIndex=1}return a.prototype.activate=
|
|
function(a){this._terminal=a;this._linkMatcherId=this._terminal.registerLinkMatcher(e,this._handler,this._options)},a.prototype.dispose=function(){void 0!==this._linkMatcherId&&void 0!==this._terminal&&this._terminal.deregisterLinkMatcher(this._linkMatcherId)},a}();b.WebLinksAddon=a}])})});aa(na);var oa=na.WebLinksAddon,pa="undefined"!==typeof global?global:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{};
|
|
function va(b,a,c,d){return new (c||(c=Promise))(function(e,g){function f(a){try{k(d.next(a))}catch(q){g(q)}}function h(a){try{k(d["throw"](a))}catch(q){g(q)}}function k(a){a.done?e(a.value):(new c(function(b){b(a.value)})).then(f,h)}k((d=d.apply(b,a||[])).next())})}
|
|
function wa(b,a){function c(a){return function(b){return d([a,b])}}function d(c){if(g)throw new TypeError("Generator is already executing.");for(;e;)try{if(g=1,f&&(h=c[0]&2?f["return"]:c[0]?f["throw"]||((h=f["return"])&&h.call(f),0):f.next)&&!(h=h.call(f,c[1])).done)return h;if(f=0,h)c=[c[0]&2,h.value];switch(c[0]){case 0:case 1:h=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++;f=c[1];c=[0];continue;case 7:c=e.ops.pop();e.trys.pop();continue;default:if(!(h=e.trys,h=0<h.length&&
|
|
h[h.length-1])&&(6===c[0]||2===c[0])){e=0;continue}if(3===c[0]&&(!h||c[1]>h[0]&&c[1]<h[3]))e.label=c[1];else if(6===c[0]&&e.label<h[1])e.label=h[1],h=c;else if(h&&e.label<h[2])e.label=h[2],e.ops.push(c);else{h[2]&&e.ops.pop();e.trys.pop();continue}}c=a.call(b,e)}catch(q){c=[6,q],f=0}finally{g=h=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}var e={label:0,sent:function(){if(h[0]&1)throw h[1];return h[1]},trys:[],ops:[]},g,f,h,k;return k={next:c(0),"throw":c(1),"return":c(2)},"function"===
|
|
typeof Symbol&&(k[Symbol.iterator]=function(){return this}),k}function Aa(b){var a="function"===typeof Symbol&&b[Symbol.iterator],c=0;return a?a.call(b):{next:function(){b&&c>=b.length&&(b=void 0);return{value:b&&b[c++],done:!b}}}}
|
|
function Ba(b,a){var c="function"===typeof Symbol&&b[Symbol.iterator];if(!c)return b;b=c.call(b);var d,e=[];try{for(;(void 0===a||0<a--)&&!(d=b.next()).done;)e.push(d.value)}catch(f){var g={error:f}}finally{try{d&&!d.done&&(c=b["return"])&&c.call(b)}finally{if(g)throw g.error;}}return e}function Ca(){for(var b=[],a=0;a<arguments.length;a++)b=b.concat(Ba(arguments[a]));return b}
|
|
var x="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof pa?pa:"undefined"!==typeof self?self:{};function Da(b){return b&&b.__esModule&&Object.prototype.hasOwnProperty.call(b,"default")?b["default"]:b}function Ea(b,a){return a={exports:{}},b(a,a.exports),a.exports}
|
|
var z=Ea(function(b,a){Object.defineProperty(a,"__esModule",{value:!0});a.constants={O_RDONLY:0,O_WRONLY:1,O_RDWR:2,S_IFMT:61440,S_IFREG:32768,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960,S_IFSOCK:49152,O_CREAT:64,O_EXCL:128,O_NOCTTY:256,O_TRUNC:512,O_APPEND:1024,O_DIRECTORY:65536,O_NOATIME:262144,O_NOFOLLOW:131072,O_SYNC:1052672,O_DIRECT:16384,O_NONBLOCK:2048,S_IRWXU:448,S_IRUSR:256,S_IWUSR:128,S_IXUSR:64,S_IRWXG:56,S_IRGRP:32,S_IWGRP:16,S_IXGRP:8,S_IRWXO:7,S_IROTH:4,S_IWOTH:2,
|
|
S_IXOTH:1,F_OK:0,R_OK:4,W_OK:2,X_OK:1,UV_FS_SYMLINK_DIR:1,UV_FS_SYMLINK_JUNCTION:2,UV_FS_COPYFILE_EXCL:1,UV_FS_COPYFILE_FICLONE:2,UV_FS_COPYFILE_FICLONE_FORCE:4,COPYFILE_EXCL:1,COPYFILE_FICLONE:2,COPYFILE_FICLONE_FORCE:4}});Da(z);
|
|
var Ja=Ea(function(b,a){a.default="function"===typeof BigInt?BigInt:function(){throw Error("BigInt is not supported in this environment.");}}),Ka=Ea(function(b,a){Object.defineProperty(a,"__esModule",{value:!0});var c=z.constants.S_IFMT,d=z.constants.S_IFDIR,e=z.constants.S_IFREG,g=z.constants.S_IFBLK,f=z.constants.S_IFCHR,h=z.constants.S_IFLNK,k=z.constants.S_IFIFO,r=z.constants.S_IFSOCK;b=function(){function a(){}a.build=function(b,c){void 0===c&&(c=!1);var d=new a,e=b.gid,f=b.atime,g=b.mtime,h=
|
|
b.ctime;c=c?Ja.default:function(a){return a};d.uid=c(b.uid);d.gid=c(e);d.rdev=c(0);d.blksize=c(4096);d.ino=c(b.ino);d.size=c(b.getSize());d.blocks=c(1);d.atime=f;d.mtime=g;d.ctime=h;d.birthtime=h;d.atimeMs=c(f.getTime());d.mtimeMs=c(g.getTime());e=c(h.getTime());d.ctimeMs=e;d.birthtimeMs=e;d.dev=c(0);d.mode=c(b.mode);d.nlink=c(b.nlink);return d};a.prototype._checkModeProperty=function(a){return(Number(this.mode)&c)===a};a.prototype.isDirectory=function(){return this._checkModeProperty(d)};a.prototype.isFile=
|
|
function(){return this._checkModeProperty(e)};a.prototype.isBlockDevice=function(){return this._checkModeProperty(g)};a.prototype.isCharacterDevice=function(){return this._checkModeProperty(f)};a.prototype.isSymbolicLink=function(){return this._checkModeProperty(h)};a.prototype.isFIFO=function(){return this._checkModeProperty(k)};a.prototype.isSocket=function(){return this._checkModeProperty(r)};return a}();a.Stats=b;a.default=b});Da(Ka);
|
|
var La="undefined"!==typeof pa?pa:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{},Ma=[],Na=[],Oa="undefined"!==typeof Uint8Array?Uint8Array:Array,Pa=!1;function Qa(){Pa=!0;for(var b=0;64>b;++b)Ma[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[b],Na["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(b)]=b;Na[45]=62;Na[95]=63}
|
|
function Ra(b,a,c){for(var d=[],e=a;e<c;e+=3)a=(b[e]<<16)+(b[e+1]<<8)+b[e+2],d.push(Ma[a>>18&63]+Ma[a>>12&63]+Ma[a>>6&63]+Ma[a&63]);return d.join("")}function Ta(b){Pa||Qa();for(var a=b.length,c=a%3,d="",e=[],g=0,f=a-c;g<f;g+=16383)e.push(Ra(b,g,g+16383>f?f:g+16383));1===c?(b=b[a-1],d+=Ma[b>>2],d+=Ma[b<<4&63],d+="=="):2===c&&(b=(b[a-2]<<8)+b[a-1],d+=Ma[b>>10],d+=Ma[b>>4&63],d+=Ma[b<<2&63],d+="=");e.push(d);return e.join("")}
|
|
function Ua(b,a,c,d,e){var g=8*e-d-1,f=(1<<g)-1,h=f>>1,k=-7;e=c?e-1:0;var r=c?-1:1,q=b[a+e];e+=r;c=q&(1<<-k)-1;q>>=-k;for(k+=g;0<k;c=256*c+b[a+e],e+=r,k-=8);g=c&(1<<-k)-1;c>>=-k;for(k+=d;0<k;g=256*g+b[a+e],e+=r,k-=8);if(0===c)c=1-h;else{if(c===f)return g?NaN:Infinity*(q?-1:1);g+=Math.pow(2,d);c-=h}return(q?-1:1)*g*Math.pow(2,c-d)}
|
|
function Va(b,a,c,d,e,g){var f,h=8*g-e-1,k=(1<<h)-1,r=k>>1,q=23===e?Math.pow(2,-24)-Math.pow(2,-77):0;g=d?0:g-1;var t=d?1:-1,v=0>a||0===a&&0>1/a?1:0;a=Math.abs(a);for(isNaN(a)||Infinity===a?(a=isNaN(a)?1:0,d=k):(d=Math.floor(Math.log(a)/Math.LN2),1>a*(f=Math.pow(2,-d))&&(d--,f*=2),a=1<=d+r?a+q/f:a+q*Math.pow(2,1-r),2<=a*f&&(d++,f/=2),d+r>=k?(a=0,d=k):1<=d+r?(a=(a*f-1)*Math.pow(2,e),d+=r):(a=a*Math.pow(2,r-1)*Math.pow(2,e),d=0));8<=e;b[c+g]=a&255,g+=t,a/=256,e-=8);d=d<<e|a;for(h+=e;0<h;b[c+g]=d&255,
|
|
g+=t,d/=256,h-=8);b[c+g-t]|=128*v}var Wa={}.toString,$a=Array.isArray||function(b){return"[object Array]"==Wa.call(b)};A.TYPED_ARRAY_SUPPORT=void 0!==La.TYPED_ARRAY_SUPPORT?La.TYPED_ARRAY_SUPPORT:!0;var ab=A.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function bb(b,a){if((A.TYPED_ARRAY_SUPPORT?2147483647:1073741823)<a)throw new RangeError("Invalid typed array length");A.TYPED_ARRAY_SUPPORT?(b=new Uint8Array(a),b.__proto__=A.prototype):(null===b&&(b=new A(a)),b.length=a);return b}
|
|
function A(b,a,c){if(!(A.TYPED_ARRAY_SUPPORT||this instanceof A))return new A(b,a,c);if("number"===typeof b){if("string"===typeof a)throw Error("If encoding is specified then the first argument must be a string");return cb(this,b)}return db(this,b,a,c)}A.poolSize=8192;A._augment=function(b){b.__proto__=A.prototype;return b};
|
|
function db(b,a,c,d){if("number"===typeof a)throw new TypeError('"value" argument must not be a number');if("undefined"!==typeof ArrayBuffer&&a instanceof ArrayBuffer){a.byteLength;if(0>c||a.byteLength<c)throw new RangeError("'offset' is out of bounds");if(a.byteLength<c+(d||0))throw new RangeError("'length' is out of bounds");a=void 0===c&&void 0===d?new Uint8Array(a):void 0===d?new Uint8Array(a,c):new Uint8Array(a,c,d);A.TYPED_ARRAY_SUPPORT?(b=a,b.__proto__=A.prototype):b=eb(b,a);return b}if("string"===
|
|
typeof a){d=b;b=c;if("string"!==typeof b||""===b)b="utf8";if(!A.isEncoding(b))throw new TypeError('"encoding" must be a valid string encoding');c=fb(a,b)|0;d=bb(d,c);a=d.write(a,b);a!==c&&(d=d.slice(0,a));return d}return jb(b,a)}A.from=function(b,a,c){return db(null,b,a,c)};A.TYPED_ARRAY_SUPPORT&&(A.prototype.__proto__=Uint8Array.prototype,A.__proto__=Uint8Array);
|
|
function kb(b){if("number"!==typeof b)throw new TypeError('"size" argument must be a number');if(0>b)throw new RangeError('"size" argument must not be negative');}A.alloc=function(b,a,c){kb(b);return b=0>=b?bb(null,b):void 0!==a?"string"===typeof c?bb(null,b).fill(a,c):bb(null,b).fill(a):bb(null,b)};function cb(b,a){kb(a);b=bb(b,0>a?0:lb(a)|0);if(!A.TYPED_ARRAY_SUPPORT)for(var c=0;c<a;++c)b[c]=0;return b}A.allocUnsafe=function(b){return cb(null,b)};A.allocUnsafeSlow=function(b){return cb(null,b)};
|
|
function eb(b,a){var c=0>a.length?0:lb(a.length)|0;b=bb(b,c);for(var d=0;d<c;d+=1)b[d]=a[d]&255;return b}
|
|
function jb(b,a){if(mb(a)){var c=lb(a.length)|0;b=bb(b,c);if(0===b.length)return b;a.copy(b,0,0,c);return b}if(a){if("undefined"!==typeof ArrayBuffer&&a.buffer instanceof ArrayBuffer||"length"in a)return(c="number"!==typeof a.length)||(c=a.length,c=c!==c),c?bb(b,0):eb(b,a);if("Buffer"===a.type&&$a(a.data))return eb(b,a.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.");}
|
|
function lb(b){if(b>=(A.TYPED_ARRAY_SUPPORT?2147483647:1073741823))throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+(A.TYPED_ARRAY_SUPPORT?2147483647:1073741823).toString(16)+" bytes");return b|0}A.isBuffer=nb;function mb(b){return!(null==b||!b._isBuffer)}
|
|
A.compare=function(b,a){if(!mb(b)||!mb(a))throw new TypeError("Arguments must be Buffers");if(b===a)return 0;for(var c=b.length,d=a.length,e=0,g=Math.min(c,d);e<g;++e)if(b[e]!==a[e]){c=b[e];d=a[e];break}return c<d?-1:d<c?1:0};A.isEncoding=function(b){switch(String(b).toLowerCase()){case "hex":case "utf8":case "utf-8":case "ascii":case "latin1":case "binary":case "base64":case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return!0;default:return!1}};
|
|
A.concat=function(b,a){if(!$a(b))throw new TypeError('"list" argument must be an Array of Buffers');if(0===b.length)return A.alloc(0);var c;if(void 0===a)for(c=a=0;c<b.length;++c)a+=b[c].length;a=A.allocUnsafe(a);var d=0;for(c=0;c<b.length;++c){var e=b[c];if(!mb(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(a,d);d+=e.length}return a};
|
|
function fb(b,a){if(mb(b))return b.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(b)||b instanceof ArrayBuffer))return b.byteLength;"string"!==typeof b&&(b=""+b);var c=b.length;if(0===c)return 0;for(var d=!1;;)switch(a){case "ascii":case "latin1":case "binary":return c;case "utf8":case "utf-8":case void 0:return ob(b).length;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return 2*c;case "hex":return c>>>1;case "base64":return pb(b).length;
|
|
default:if(d)return ob(b).length;a=(""+a).toLowerCase();d=!0}}A.byteLength=fb;
|
|
function rb(b,a,c){var d=!1;if(void 0===a||0>a)a=0;if(a>this.length)return"";if(void 0===c||c>this.length)c=this.length;if(0>=c)return"";c>>>=0;a>>>=0;if(c<=a)return"";for(b||(b="utf8");;)switch(b){case "hex":b=a;a=c;c=this.length;if(!b||0>b)b=0;if(!a||0>a||a>c)a=c;d="";for(c=b;c<a;++c)b=d,d=this[c],d=16>d?"0"+d.toString(16):d.toString(16),d=b+d;return d;case "utf8":case "utf-8":return sb(this,a,c);case "ascii":b="";for(c=Math.min(this.length,c);a<c;++a)b+=String.fromCharCode(this[a]&127);return b;
|
|
case "latin1":case "binary":b="";for(c=Math.min(this.length,c);a<c;++a)b+=String.fromCharCode(this[a]);return b;case "base64":return a=0===a&&c===this.length?Ta(this):Ta(this.slice(a,c)),a;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":a=this.slice(a,c);c="";for(b=0;b<a.length;b+=2)c+=String.fromCharCode(a[b]+256*a[b+1]);return c;default:if(d)throw new TypeError("Unknown encoding: "+b);b=(b+"").toLowerCase();d=!0}}A.prototype._isBuffer=!0;function tb(b,a,c){var d=b[a];b[a]=b[c];b[c]=d}
|
|
A.prototype.swap16=function(){var b=this.length;if(0!==b%2)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var a=0;a<b;a+=2)tb(this,a,a+1);return this};A.prototype.swap32=function(){var b=this.length;if(0!==b%4)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var a=0;a<b;a+=4)tb(this,a,a+3),tb(this,a+1,a+2);return this};
|
|
A.prototype.swap64=function(){var b=this.length;if(0!==b%8)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var a=0;a<b;a+=8)tb(this,a,a+7),tb(this,a+1,a+6),tb(this,a+2,a+5),tb(this,a+3,a+4);return this};A.prototype.toString=function(){var b=this.length|0;return 0===b?"":0===arguments.length?sb(this,0,b):rb.apply(this,arguments)};A.prototype.equals=function(b){if(!mb(b))throw new TypeError("Argument must be a Buffer");return this===b?!0:0===A.compare(this,b)};
|
|
A.prototype.inspect=function(){var b="";0<this.length&&(b=this.toString("hex",0,50).match(/.{2}/g).join(" "),50<this.length&&(b+=" ... "));return"<Buffer "+b+">"};
|
|
A.prototype.compare=function(b,a,c,d,e){if(!mb(b))throw new TypeError("Argument must be a Buffer");void 0===a&&(a=0);void 0===c&&(c=b?b.length:0);void 0===d&&(d=0);void 0===e&&(e=this.length);if(0>a||c>b.length||0>d||e>this.length)throw new RangeError("out of range index");if(d>=e&&a>=c)return 0;if(d>=e)return-1;if(a>=c)return 1;a>>>=0;c>>>=0;d>>>=0;e>>>=0;if(this===b)return 0;var g=e-d,f=c-a,h=Math.min(g,f);d=this.slice(d,e);b=b.slice(a,c);for(a=0;a<h;++a)if(d[a]!==b[a]){g=d[a];f=b[a];break}return g<
|
|
f?-1:f<g?1:0};
|
|
function ub(b,a,c,d,e){if(0===b.length)return-1;"string"===typeof c?(d=c,c=0):2147483647<c?c=2147483647:-2147483648>c&&(c=-2147483648);c=+c;isNaN(c)&&(c=e?0:b.length-1);0>c&&(c=b.length+c);if(c>=b.length){if(e)return-1;c=b.length-1}else if(0>c)if(e)c=0;else return-1;"string"===typeof a&&(a=A.from(a,d));if(mb(a))return 0===a.length?-1:vb(b,a,c,d,e);if("number"===typeof a)return a&=255,A.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?e?Uint8Array.prototype.indexOf.call(b,a,c):
|
|
Uint8Array.prototype.lastIndexOf.call(b,a,c):vb(b,[a],c,d,e);throw new TypeError("val must be string, number or Buffer");}
|
|
function vb(b,a,c,d,e){function g(a,b){return 1===f?a[b]:a.readUInt16BE(b*f)}var f=1,h=b.length,k=a.length;if(void 0!==d&&(d=String(d).toLowerCase(),"ucs2"===d||"ucs-2"===d||"utf16le"===d||"utf-16le"===d)){if(2>b.length||2>a.length)return-1;f=2;h/=2;k/=2;c/=2}if(e)for(d=-1;c<h;c++)if(g(b,c)===g(a,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===k)return d*f}else-1!==d&&(c-=c-d),d=-1;else for(c+k>h&&(c=h-k);0<=c;c--){h=!0;for(d=0;d<k;d++)if(g(b,c+d)!==g(a,d)){h=!1;break}if(h)return c}return-1}
|
|
A.prototype.includes=function(b,a,c){return-1!==this.indexOf(b,a,c)};A.prototype.indexOf=function(b,a,c){return ub(this,b,a,c,!0)};A.prototype.lastIndexOf=function(b,a,c){return ub(this,b,a,c,!1)};
|
|
A.prototype.write=function(b,a,c,d){if(void 0===a)d="utf8",c=this.length,a=0;else if(void 0===c&&"string"===typeof a)d=a,c=this.length,a=0;else if(isFinite(a))a|=0,isFinite(c)?(c|=0,void 0===d&&(d="utf8")):(d=c,c=void 0);else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var e=this.length-a;if(void 0===c||c>e)c=e;if(0<b.length&&(0>c||0>a)||a>this.length)throw new RangeError("Attempt to write outside buffer bounds");d||(d="utf8");for(e=!1;;)switch(d){case "hex":a:{a=
|
|
Number(a)||0;d=this.length-a;c?(c=Number(c),c>d&&(c=d)):c=d;d=b.length;if(0!==d%2)throw new TypeError("Invalid hex string");c>d/2&&(c=d/2);for(d=0;d<c;++d){e=parseInt(b.substr(2*d,2),16);if(isNaN(e)){b=d;break a}this[a+d]=e}b=d}return b;case "utf8":case "utf-8":return wb(ob(b,this.length-a),this,a,c);case "ascii":return wb(xb(b),this,a,c);case "latin1":case "binary":return wb(xb(b),this,a,c);case "base64":return wb(pb(b),this,a,c);case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":d=b;e=this.length-
|
|
a;for(var g=[],f=0;f<d.length&&!(0>(e-=2));++f){var h=d.charCodeAt(f);b=h>>8;h%=256;g.push(h);g.push(b)}return wb(g,this,a,c);default:if(e)throw new TypeError("Unknown encoding: "+d);d=(""+d).toLowerCase();e=!0}};A.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};
|
|
function sb(b,a,c){c=Math.min(b.length,c);for(var d=[];a<c;){var e=b[a],g=null,f=239<e?4:223<e?3:191<e?2:1;if(a+f<=c)switch(f){case 1:128>e&&(g=e);break;case 2:var h=b[a+1];128===(h&192)&&(e=(e&31)<<6|h&63,127<e&&(g=e));break;case 3:h=b[a+1];var k=b[a+2];128===(h&192)&&128===(k&192)&&(e=(e&15)<<12|(h&63)<<6|k&63,2047<e&&(55296>e||57343<e)&&(g=e));break;case 4:h=b[a+1];k=b[a+2];var r=b[a+3];128===(h&192)&&128===(k&192)&&128===(r&192)&&(e=(e&15)<<18|(h&63)<<12|(k&63)<<6|r&63,65535<e&&1114112>e&&(g=
|
|
e))}null===g?(g=65533,f=1):65535<g&&(g-=65536,d.push(g>>>10&1023|55296),g=56320|g&1023);d.push(g);a+=f}b=d.length;if(b<=yb)d=String.fromCharCode.apply(String,d);else{c="";for(a=0;a<b;)c+=String.fromCharCode.apply(String,d.slice(a,a+=yb));d=c}return d}var yb=4096;
|
|
A.prototype.slice=function(b,a){var c=this.length;b=~~b;a=void 0===a?c:~~a;0>b?(b+=c,0>b&&(b=0)):b>c&&(b=c);0>a?(a+=c,0>a&&(a=0)):a>c&&(a=c);a<b&&(a=b);if(A.TYPED_ARRAY_SUPPORT)a=this.subarray(b,a),a.__proto__=A.prototype;else{c=a-b;a=new A(c,void 0);for(var d=0;d<c;++d)a[d]=this[d+b]}return a};function D(b,a,c){if(0!==b%1||0>b)throw new RangeError("offset is not uint");if(b+a>c)throw new RangeError("Trying to access beyond buffer length");}
|
|
A.prototype.readUIntLE=function(b,a,c){b|=0;a|=0;c||D(b,a,this.length);c=this[b];for(var d=1,e=0;++e<a&&(d*=256);)c+=this[b+e]*d;return c};A.prototype.readUIntBE=function(b,a,c){b|=0;a|=0;c||D(b,a,this.length);c=this[b+--a];for(var d=1;0<a&&(d*=256);)c+=this[b+--a]*d;return c};A.prototype.readUInt8=function(b,a){a||D(b,1,this.length);return this[b]};A.prototype.readUInt16LE=function(b,a){a||D(b,2,this.length);return this[b]|this[b+1]<<8};
|
|
A.prototype.readUInt16BE=function(b,a){a||D(b,2,this.length);return this[b]<<8|this[b+1]};A.prototype.readUInt32LE=function(b,a){a||D(b,4,this.length);return(this[b]|this[b+1]<<8|this[b+2]<<16)+16777216*this[b+3]};A.prototype.readUInt32BE=function(b,a){a||D(b,4,this.length);return 16777216*this[b]+(this[b+1]<<16|this[b+2]<<8|this[b+3])};A.prototype.readIntLE=function(b,a,c){b|=0;a|=0;c||D(b,a,this.length);c=this[b];for(var d=1,e=0;++e<a&&(d*=256);)c+=this[b+e]*d;c>=128*d&&(c-=Math.pow(2,8*a));return c};
|
|
A.prototype.readIntBE=function(b,a,c){b|=0;a|=0;c||D(b,a,this.length);c=a;for(var d=1,e=this[b+--c];0<c&&(d*=256);)e+=this[b+--c]*d;e>=128*d&&(e-=Math.pow(2,8*a));return e};A.prototype.readInt8=function(b,a){a||D(b,1,this.length);return this[b]&128?-1*(255-this[b]+1):this[b]};A.prototype.readInt16LE=function(b,a){a||D(b,2,this.length);b=this[b]|this[b+1]<<8;return b&32768?b|4294901760:b};
|
|
A.prototype.readInt16BE=function(b,a){a||D(b,2,this.length);b=this[b+1]|this[b]<<8;return b&32768?b|4294901760:b};A.prototype.readInt32LE=function(b,a){a||D(b,4,this.length);return this[b]|this[b+1]<<8|this[b+2]<<16|this[b+3]<<24};A.prototype.readInt32BE=function(b,a){a||D(b,4,this.length);return this[b]<<24|this[b+1]<<16|this[b+2]<<8|this[b+3]};A.prototype.readFloatLE=function(b,a){a||D(b,4,this.length);return Ua(this,b,!0,23,4)};
|
|
A.prototype.readFloatBE=function(b,a){a||D(b,4,this.length);return Ua(this,b,!1,23,4)};A.prototype.readDoubleLE=function(b,a){a||D(b,8,this.length);return Ua(this,b,!0,52,8)};A.prototype.readDoubleBE=function(b,a){a||D(b,8,this.length);return Ua(this,b,!1,52,8)};function zb(b,a,c,d,e,g){if(!mb(b))throw new TypeError('"buffer" argument must be a Buffer instance');if(a>e||a<g)throw new RangeError('"value" argument is out of bounds');if(c+d>b.length)throw new RangeError("Index out of range");}
|
|
A.prototype.writeUIntLE=function(b,a,c,d){b=+b;a|=0;c|=0;d||zb(this,b,a,c,Math.pow(2,8*c)-1,0);d=1;var e=0;for(this[a]=b&255;++e<c&&(d*=256);)this[a+e]=b/d&255;return a+c};A.prototype.writeUIntBE=function(b,a,c,d){b=+b;a|=0;c|=0;d||zb(this,b,a,c,Math.pow(2,8*c)-1,0);d=c-1;var e=1;for(this[a+d]=b&255;0<=--d&&(e*=256);)this[a+d]=b/e&255;return a+c};A.prototype.writeUInt8=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,1,255,0);A.TYPED_ARRAY_SUPPORT||(b=Math.floor(b));this[a]=b&255;return a+1};
|
|
function Ab(b,a,c,d){0>a&&(a=65535+a+1);for(var e=0,g=Math.min(b.length-c,2);e<g;++e)b[c+e]=(a&255<<8*(d?e:1-e))>>>8*(d?e:1-e)}A.prototype.writeUInt16LE=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,2,65535,0);A.TYPED_ARRAY_SUPPORT?(this[a]=b&255,this[a+1]=b>>>8):Ab(this,b,a,!0);return a+2};A.prototype.writeUInt16BE=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,2,65535,0);A.TYPED_ARRAY_SUPPORT?(this[a]=b>>>8,this[a+1]=b&255):Ab(this,b,a,!1);return a+2};
|
|
function Bb(b,a,c,d){0>a&&(a=4294967295+a+1);for(var e=0,g=Math.min(b.length-c,4);e<g;++e)b[c+e]=a>>>8*(d?e:3-e)&255}A.prototype.writeUInt32LE=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,4,4294967295,0);A.TYPED_ARRAY_SUPPORT?(this[a+3]=b>>>24,this[a+2]=b>>>16,this[a+1]=b>>>8,this[a]=b&255):Bb(this,b,a,!0);return a+4};
|
|
A.prototype.writeUInt32BE=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,4,4294967295,0);A.TYPED_ARRAY_SUPPORT?(this[a]=b>>>24,this[a+1]=b>>>16,this[a+2]=b>>>8,this[a+3]=b&255):Bb(this,b,a,!1);return a+4};A.prototype.writeIntLE=function(b,a,c,d){b=+b;a|=0;d||(d=Math.pow(2,8*c-1),zb(this,b,a,c,d-1,-d));d=0;var e=1,g=0;for(this[a]=b&255;++d<c&&(e*=256);)0>b&&0===g&&0!==this[a+d-1]&&(g=1),this[a+d]=(b/e>>0)-g&255;return a+c};
|
|
A.prototype.writeIntBE=function(b,a,c,d){b=+b;a|=0;d||(d=Math.pow(2,8*c-1),zb(this,b,a,c,d-1,-d));d=c-1;var e=1,g=0;for(this[a+d]=b&255;0<=--d&&(e*=256);)0>b&&0===g&&0!==this[a+d+1]&&(g=1),this[a+d]=(b/e>>0)-g&255;return a+c};A.prototype.writeInt8=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,1,127,-128);A.TYPED_ARRAY_SUPPORT||(b=Math.floor(b));0>b&&(b=255+b+1);this[a]=b&255;return a+1};
|
|
A.prototype.writeInt16LE=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,2,32767,-32768);A.TYPED_ARRAY_SUPPORT?(this[a]=b&255,this[a+1]=b>>>8):Ab(this,b,a,!0);return a+2};A.prototype.writeInt16BE=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,2,32767,-32768);A.TYPED_ARRAY_SUPPORT?(this[a]=b>>>8,this[a+1]=b&255):Ab(this,b,a,!1);return a+2};
|
|
A.prototype.writeInt32LE=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,4,2147483647,-2147483648);A.TYPED_ARRAY_SUPPORT?(this[a]=b&255,this[a+1]=b>>>8,this[a+2]=b>>>16,this[a+3]=b>>>24):Bb(this,b,a,!0);return a+4};A.prototype.writeInt32BE=function(b,a,c){b=+b;a|=0;c||zb(this,b,a,4,2147483647,-2147483648);0>b&&(b=4294967295+b+1);A.TYPED_ARRAY_SUPPORT?(this[a]=b>>>24,this[a+1]=b>>>16,this[a+2]=b>>>8,this[a+3]=b&255):Bb(this,b,a,!1);return a+4};
|
|
function Cb(b,a,c,d){if(c+d>b.length)throw new RangeError("Index out of range");if(0>c)throw new RangeError("Index out of range");}A.prototype.writeFloatLE=function(b,a,c){c||Cb(this,b,a,4);Va(this,b,a,!0,23,4);return a+4};A.prototype.writeFloatBE=function(b,a,c){c||Cb(this,b,a,4);Va(this,b,a,!1,23,4);return a+4};A.prototype.writeDoubleLE=function(b,a,c){c||Cb(this,b,a,8);Va(this,b,a,!0,52,8);return a+8};A.prototype.writeDoubleBE=function(b,a,c){c||Cb(this,b,a,8);Va(this,b,a,!1,52,8);return a+8};
|
|
A.prototype.copy=function(b,a,c,d){c||(c=0);d||0===d||(d=this.length);a>=b.length&&(a=b.length);a||(a=0);0<d&&d<c&&(d=c);if(d===c||0===b.length||0===this.length)return 0;if(0>a)throw new RangeError("targetStart out of bounds");if(0>c||c>=this.length)throw new RangeError("sourceStart out of bounds");if(0>d)throw new RangeError("sourceEnd out of bounds");d>this.length&&(d=this.length);b.length-a<d-c&&(d=b.length-a+c);var e=d-c;if(this===b&&c<a&&a<d)for(d=e-1;0<=d;--d)b[d+a]=this[d+c];else if(1E3>e||
|
|
!A.TYPED_ARRAY_SUPPORT)for(d=0;d<e;++d)b[d+a]=this[d+c];else Uint8Array.prototype.set.call(b,this.subarray(c,c+e),a);return e};
|
|
A.prototype.fill=function(b,a,c,d){if("string"===typeof b){"string"===typeof a?(d=a,a=0,c=this.length):"string"===typeof c&&(d=c,c=this.length);if(1===b.length){var e=b.charCodeAt(0);256>e&&(b=e)}if(void 0!==d&&"string"!==typeof d)throw new TypeError("encoding must be a string");if("string"===typeof d&&!A.isEncoding(d))throw new TypeError("Unknown encoding: "+d);}else"number"===typeof b&&(b&=255);if(0>a||this.length<a||this.length<c)throw new RangeError("Out of range index");if(c<=a)return this;a>>>=
|
|
0;c=void 0===c?this.length:c>>>0;b||(b=0);if("number"===typeof b)for(d=a;d<c;++d)this[d]=b;else for(b=mb(b)?b:ob((new A(b,d)).toString()),e=b.length,d=0;d<c-a;++d)this[d+a]=b[d%e];return this};var Db=/[^+\/0-9A-Za-z-_]/g;
|
|
function ob(b,a){a=a||Infinity;for(var c,d=b.length,e=null,g=[],f=0;f<d;++f){c=b.charCodeAt(f);if(55295<c&&57344>c){if(!e){if(56319<c){-1<(a-=3)&&g.push(239,191,189);continue}else if(f+1===d){-1<(a-=3)&&g.push(239,191,189);continue}e=c;continue}if(56320>c){-1<(a-=3)&&g.push(239,191,189);e=c;continue}c=(e-55296<<10|c-56320)+65536}else e&&-1<(a-=3)&&g.push(239,191,189);e=null;if(128>c){if(0>--a)break;g.push(c)}else if(2048>c){if(0>(a-=2))break;g.push(c>>6|192,c&63|128)}else if(65536>c){if(0>(a-=3))break;
|
|
g.push(c>>12|224,c>>6&63|128,c&63|128)}else if(1114112>c){if(0>(a-=4))break;g.push(c>>18|240,c>>12&63|128,c>>6&63|128,c&63|128)}else throw Error("Invalid code point");}return g}function xb(b){for(var a=[],c=0;c<b.length;++c)a.push(b.charCodeAt(c)&255);return a}
|
|
function pb(b){b=(b.trim?b.trim():b.replace(/^\s+|\s+$/g,"")).replace(Db,"");if(2>b.length)b="";else for(;0!==b.length%4;)b+="=";Pa||Qa();var a=b.length;if(0<a%4)throw Error("Invalid string. Length must be a multiple of 4");var c="="===b[a-2]?2:"="===b[a-1]?1:0,d=new Oa(3*a/4-c),e=0<c?a-4:a,g=0;for(a=0;a<e;a+=4){var f=Na[b.charCodeAt(a)]<<18|Na[b.charCodeAt(a+1)]<<12|Na[b.charCodeAt(a+2)]<<6|Na[b.charCodeAt(a+3)];d[g++]=f>>16&255;d[g++]=f>>8&255;d[g++]=f&255}2===c?(f=Na[b.charCodeAt(a)]<<2|Na[b.charCodeAt(a+
|
|
1)]>>4,d[g++]=f&255):1===c&&(f=Na[b.charCodeAt(a)]<<10|Na[b.charCodeAt(a+1)]<<4|Na[b.charCodeAt(a+2)]>>2,d[g++]=f>>8&255,d[g++]=f&255);return d}function wb(b,a,c,d){for(var e=0;e<d&&!(e+c>=a.length||e>=b.length);++e)a[e+c]=b[e];return e}function nb(b){return null!=b&&(!!b._isBuffer||Eb(b)||"function"===typeof b.readFloatLE&&"function"===typeof b.slice&&Eb(b.slice(0,0)))}function Eb(b){return!!b.constructor&&"function"===typeof b.constructor.isBuffer&&b.constructor.isBuffer(b)}
|
|
var Fb=Object.freeze({__proto__:null,INSPECT_MAX_BYTES:50,kMaxLength:ab,Buffer:A,SlowBuffer:function(b){+b!=b&&(b=0);return A.alloc(+b)},isBuffer:nb}),E=Ea(function(b,a){function c(a){for(var b=[],c=1;c<arguments.length;c++)b[c-1]=arguments[c];return new (Fb.Buffer.bind.apply(Fb.Buffer,d([void 0,a],b)))}var d=x&&x.__spreadArrays||function(){for(var a=0,b=0,c=arguments.length;b<c;b++)a+=arguments[b].length;a=Array(a);var d=0;for(b=0;b<c;b++)for(var k=arguments[b],r=0,q=k.length;r<q;r++,d++)a[d]=k[r];
|
|
return a};Object.defineProperty(a,"__esModule",{value:!0});a.Buffer=Fb.Buffer;a.bufferAllocUnsafe=Fb.Buffer.allocUnsafe||c;a.bufferFrom=Fb.Buffer.from||c});Da(E);function Gb(){throw Error("setTimeout has not been defined");}function Ib(){throw Error("clearTimeout has not been defined");}var Jb=Gb,Kb=Ib;"function"===typeof La.setTimeout&&(Jb=setTimeout);"function"===typeof La.clearTimeout&&(Kb=clearTimeout);
|
|
function Lb(b){if(Jb===setTimeout)return setTimeout(b,0);if((Jb===Gb||!Jb)&&setTimeout)return Jb=setTimeout,setTimeout(b,0);try{return Jb(b,0)}catch(a){try{return Jb.call(null,b,0)}catch(c){return Jb.call(this,b,0)}}}function Mb(b){if(Kb===clearTimeout)return clearTimeout(b);if((Kb===Ib||!Kb)&&clearTimeout)return Kb=clearTimeout,clearTimeout(b);try{return Kb(b)}catch(a){try{return Kb.call(null,b)}catch(c){return Kb.call(this,b)}}}var Nb=[],Ob=!1,Pb,Qb=-1;
|
|
function Rb(){Ob&&Pb&&(Ob=!1,Pb.length?Nb=Pb.concat(Nb):Qb=-1,Nb.length&&Vb())}function Vb(){if(!Ob){var b=Lb(Rb);Ob=!0;for(var a=Nb.length;a;){Pb=Nb;for(Nb=[];++Qb<a;)Pb&&Pb[Qb].run();Qb=-1;a=Nb.length}Pb=null;Ob=!1;Mb(b)}}function Wb(b){var a=Array(arguments.length-1);if(1<arguments.length)for(var c=1;c<arguments.length;c++)a[c-1]=arguments[c];Nb.push(new Xb(b,a));1!==Nb.length||Ob||Lb(Vb)}function Xb(b,a){this.fun=b;this.array=a}Xb.prototype.run=function(){this.fun.apply(null,this.array)};
|
|
function Yb(){}
|
|
var Zb=La.performance||{},$b=Zb.now||Zb.mozNow||Zb.msNow||Zb.oNow||Zb.webkitNow||function(){return(new Date).getTime()},ac=new Date,bc={nextTick:Wb,title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Yb,addListener:Yb,once:Yb,off:Yb,removeListener:Yb,removeAllListeners:Yb,emit:Yb,binding:function(){throw Error("process.binding is not supported");},cwd:function(){return"/"},chdir:function(){throw Error("process.chdir is not supported");},umask:function(){return 0},hrtime:function(b){var a=.001*
|
|
$b.call(Zb),c=Math.floor(a);a=Math.floor(a%1*1E9);b&&(c-=b[0],a-=b[1],0>a&&(c--,a+=1E9));return[c,a]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-ac)/1E3}},cc="function"===typeof Object.create?function(b,a){b.super_=a;b.prototype=Object.create(a.prototype,{constructor:{value:b,enumerable:!1,writable:!0,configurable:!0}})}:function(b,a){function c(){}b.super_=a;c.prototype=a.prototype;b.prototype=new c;b.prototype.constructor=b},fc=/%[sdj%]/g;
|
|
function gc(b){if(!hc(b)){for(var a=[],c=0;c<arguments.length;c++)a.push(ic(arguments[c]));return a.join(" ")}c=1;var d=arguments,e=d.length;a=String(b).replace(fc,function(a){if("%%"===a)return"%";if(c>=e)return a;switch(a){case "%s":return String(d[c++]);case "%d":return Number(d[c++]);case "%j":try{return JSON.stringify(d[c++])}catch(h){return"[Circular]"}default:return a}});for(var g=d[c];c<e;g=d[++c])a=null!==g&&jc(g)?a+(" "+ic(g)):a+(" "+g);return a}
|
|
function kc(b,a){if(lc(La.process))return function(){return kc(b,a).apply(this,arguments)};if(!0===bc.noDeprecation)return b;var c=!1;return function(){if(!c){if(bc.throwDeprecation)throw Error(a);bc.traceDeprecation?console.trace(a):console.error(a);c=!0}return b.apply(this,arguments)}}var mc={},nc;
|
|
function oc(b){lc(nc)&&(nc=bc.env.NODE_DEBUG||"");b=b.toUpperCase();mc[b]||((new RegExp("\\b"+b+"\\b","i")).test(nc)?mc[b]=function(){var a=gc.apply(null,arguments);console.error("%s %d: %s",b,0,a)}:mc[b]=function(){});return mc[b]}
|
|
function ic(b,a){var c={seen:[],stylize:pc};3<=arguments.length&&(c.depth=arguments[2]);4<=arguments.length&&(c.colors=arguments[3]);xc(a)?c.showHidden=a:a&&yc(c,a);lc(c.showHidden)&&(c.showHidden=!1);lc(c.depth)&&(c.depth=2);lc(c.colors)&&(c.colors=!1);lc(c.customInspect)&&(c.customInspect=!0);c.colors&&(c.stylize=zc);return Ec(c,b,c.depth)}
|
|
ic.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};ic.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"};function zc(b,a){return(a=ic.styles[a])?"\u001b["+ic.colors[a][0]+"m"+b+"\u001b["+ic.colors[a][1]+"m":b}function pc(b){return b}
|
|
function Fc(b){var a={};b.forEach(function(b){a[b]=!0});return a}
|
|
function Ec(b,a,c){if(b.customInspect&&a&&Gc(a.inspect)&&a.inspect!==ic&&(!a.constructor||a.constructor.prototype!==a)){var d=a.inspect(c,b);hc(d)||(d=Ec(b,d,c));return d}if(d=Hc(b,a))return d;var e=Object.keys(a),g=Fc(e);b.showHidden&&(e=Object.getOwnPropertyNames(a));if(Ic(a)&&(0<=e.indexOf("message")||0<=e.indexOf("description")))return Jc(a);if(0===e.length){if(Gc(a))return b.stylize("[Function"+(a.name?": "+a.name:"")+"]","special");if(Kc(a))return b.stylize(RegExp.prototype.toString.call(a),
|
|
"regexp");if(Lc(a))return b.stylize(Date.prototype.toString.call(a),"date");if(Ic(a))return Jc(a)}d="";var f=!1,h=["{","}"];Mc(a)&&(f=!0,h=["[","]"]);Gc(a)&&(d=" [Function"+(a.name?": "+a.name:"")+"]");Kc(a)&&(d=" "+RegExp.prototype.toString.call(a));Lc(a)&&(d=" "+Date.prototype.toUTCString.call(a));Ic(a)&&(d=" "+Jc(a));if(0===e.length&&(!f||0==a.length))return h[0]+d+h[1];if(0>c)return Kc(a)?b.stylize(RegExp.prototype.toString.call(a),"regexp"):b.stylize("[Object]","special");b.seen.push(a);e=f?
|
|
Nc(b,a,c,g,e):e.map(function(d){return Oc(b,a,c,g,d,f)});b.seen.pop();return Wc(e,d,h)}function Hc(b,a){if(lc(a))return b.stylize("undefined","undefined");if(hc(a))return a="'"+JSON.stringify(a).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'",b.stylize(a,"string");if(Xc(a))return b.stylize(""+a,"number");if(xc(a))return b.stylize(""+a,"boolean");if(null===a)return b.stylize("null","null")}function Jc(b){return"["+Error.prototype.toString.call(b)+"]"}
|
|
function Nc(b,a,c,d,e){for(var g=[],f=0,h=a.length;f<h;++f)Object.prototype.hasOwnProperty.call(a,String(f))?g.push(Oc(b,a,c,d,String(f),!0)):g.push("");e.forEach(function(e){e.match(/^\d+$/)||g.push(Oc(b,a,c,d,e,!0))});return g}
|
|
function Oc(b,a,c,d,e,g){var f,h;a=Object.getOwnPropertyDescriptor(a,e)||{value:a[e]};a.get?h=a.set?b.stylize("[Getter/Setter]","special"):b.stylize("[Getter]","special"):a.set&&(h=b.stylize("[Setter]","special"));Object.prototype.hasOwnProperty.call(d,e)||(f="["+e+"]");h||(0>b.seen.indexOf(a.value)?(h=null===c?Ec(b,a.value,null):Ec(b,a.value,c-1),-1<h.indexOf("\n")&&(h=g?h.split("\n").map(function(a){return" "+a}).join("\n").substr(2):"\n"+h.split("\n").map(function(a){return" "+a}).join("\n"))):
|
|
h=b.stylize("[Circular]","special"));if(lc(f)){if(g&&e.match(/^\d+$/))return h;f=JSON.stringify(""+e);f.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(f=f.substr(1,f.length-2),f=b.stylize(f,"name")):(f=f.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),f=b.stylize(f,"string"))}return f+": "+h}
|
|
function Wc(b,a,c){return 60<b.reduce(function(a,b){b.indexOf("\n");return a+b.replace(/\u001b\[\d\d?m/g,"").length+1},0)?c[0]+(""===a?"":a+"\n ")+" "+b.join(",\n ")+" "+c[1]:c[0]+a+" "+b.join(", ")+" "+c[1]}function Mc(b){return Array.isArray(b)}function xc(b){return"boolean"===typeof b}function Xc(b){return"number"===typeof b}function hc(b){return"string"===typeof b}function lc(b){return void 0===b}function Kc(b){return jc(b)&&"[object RegExp]"===Object.prototype.toString.call(b)}
|
|
function jc(b){return"object"===typeof b&&null!==b}function Lc(b){return jc(b)&&"[object Date]"===Object.prototype.toString.call(b)}function Ic(b){return jc(b)&&("[object Error]"===Object.prototype.toString.call(b)||b instanceof Error)}function Gc(b){return"function"===typeof b}function id(b){return null===b||"boolean"===typeof b||"number"===typeof b||"string"===typeof b||"symbol"===typeof b||"undefined"===typeof b}function jd(b){return 10>b?"0"+b.toString(10):b.toString(10)}var kd="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");
|
|
function ld(){var b=new Date,a=[jd(b.getHours()),jd(b.getMinutes()),jd(b.getSeconds())].join(":");return[b.getDate(),kd[b.getMonth()],a].join(" ")}function yc(b,a){if(!a||!jc(a))return b;for(var c=Object.keys(a),d=c.length;d--;)b[c[d]]=a[c[d]];return b}
|
|
var md={inherits:cc,_extend:yc,log:function(){console.log("%s - %s",ld(),gc.apply(null,arguments))},isBuffer:function(b){return nb(b)},isPrimitive:id,isFunction:Gc,isError:Ic,isDate:Lc,isObject:jc,isRegExp:Kc,isUndefined:lc,isSymbol:function(b){return"symbol"===typeof b},isString:hc,isNumber:Xc,isNullOrUndefined:function(b){return null==b},isNull:function(b){return null===b},isBoolean:xc,isArray:Mc,inspect:ic,deprecate:kc,format:gc,debuglog:oc};
|
|
function nd(b,a){if(b===a)return 0;for(var c=b.length,d=a.length,e=0,g=Math.min(c,d);e<g;++e)if(b[e]!==a[e]){c=b[e];d=a[e];break}return c<d?-1:d<c?1:0}var od=Object.prototype.hasOwnProperty,pd=Object.keys||function(b){var a=[],c;for(c in b)od.call(b,c)&&a.push(c);return a},qd=Array.prototype.slice,rd;function sd(){return"undefined"!==typeof rd?rd:rd=function(){return"foo"===function(){}.name}()}
|
|
function td(b){return nb(b)||"function"!==typeof La.ArrayBuffer?!1:"function"===typeof ArrayBuffer.isView?ArrayBuffer.isView(b):b?b instanceof DataView||b.buffer&&b.buffer instanceof ArrayBuffer?!0:!1:!1}function K(b,a){b||ud(b,!0,a,"==",vd)}var wd=/\s*function\s+([^\(\s]*)\s*/;function xd(b){if(Gc(b))return sd()?b.name:(b=b.toString().match(wd))&&b[1]}K.AssertionError=yd;
|
|
function yd(b){this.name="AssertionError";this.actual=b.actual;this.expected=b.expected;this.operator=b.operator;b.message?(this.message=b.message,this.generatedMessage=!1):(this.message=zd(Ad(this.actual),128)+" "+this.operator+" "+zd(Ad(this.expected),128),this.generatedMessage=!0);var a=b.stackStartFunction||ud;Error.captureStackTrace?Error.captureStackTrace(this,a):(b=Error(),b.stack&&(b=b.stack,a=xd(a),a=b.indexOf("\n"+a),0<=a&&(a=b.indexOf("\n",a+1),b=b.substring(a+1)),this.stack=b))}
|
|
cc(yd,Error);function zd(b,a){return"string"===typeof b?b.length<a?b:b.slice(0,a):b}function Ad(b){if(sd()||!Gc(b))return ic(b);b=xd(b);return"[Function"+(b?": "+b:"")+"]"}function ud(b,a,c,d,e){throw new yd({message:c,actual:b,expected:a,operator:d,stackStartFunction:e});}K.fail=ud;function vd(b,a){b||ud(b,!0,a,"==",vd)}K.ok=vd;K.equal=Bd;function Bd(b,a,c){b!=a&&ud(b,a,c,"==",Bd)}K.notEqual=Cd;function Cd(b,a,c){b==a&&ud(b,a,c,"!=",Cd)}K.deepEqual=Dd;
|
|
function Dd(b,a,c){Id(b,a,!1)||ud(b,a,c,"deepEqual",Dd)}K.deepStrictEqual=Jd;function Jd(b,a,c){Id(b,a,!0)||ud(b,a,c,"deepStrictEqual",Jd)}
|
|
function Id(b,a,c,d){if(b===a)return!0;if(nb(b)&&nb(a))return 0===nd(b,a);if(Lc(b)&&Lc(a))return b.getTime()===a.getTime();if(Kc(b)&&Kc(a))return b.source===a.source&&b.global===a.global&&b.multiline===a.multiline&&b.lastIndex===a.lastIndex&&b.ignoreCase===a.ignoreCase;if(null!==b&&"object"===typeof b||null!==a&&"object"===typeof a){if(!td(b)||!td(a)||Object.prototype.toString.call(b)!==Object.prototype.toString.call(a)||b instanceof Float32Array||b instanceof Float64Array){if(nb(b)!==nb(a))return!1;
|
|
d=d||{actual:[],expected:[]};var e=d.actual.indexOf(b);if(-1!==e&&e===d.expected.indexOf(a))return!0;d.actual.push(b);d.expected.push(a);return Kd(b,a,c,d)}return 0===nd(new Uint8Array(b.buffer),new Uint8Array(a.buffer))}return c?b===a:b==a}
|
|
function Kd(b,a,c,d){if(null===b||void 0===b||null===a||void 0===a)return!1;if(id(b)||id(a))return b===a;if(c&&Object.getPrototypeOf(b)!==Object.getPrototypeOf(a))return!1;var e="[object Arguments]"==Object.prototype.toString.call(b),g="[object Arguments]"==Object.prototype.toString.call(a);if(e&&!g||!e&&g)return!1;if(e)return b=qd.call(b),a=qd.call(a),Id(b,a,c);e=pd(b);var f=pd(a);if(e.length!==f.length)return!1;e.sort();f.sort();for(g=e.length-1;0<=g;g--)if(e[g]!==f[g])return!1;for(g=e.length-1;0<=
|
|
g;g--)if(f=e[g],!Id(b[f],a[f],c,d))return!1;return!0}K.notDeepEqual=Ld;function Ld(b,a,c){Id(b,a,!1)&&ud(b,a,c,"notDeepEqual",Ld)}K.notDeepStrictEqual=Md;function Md(b,a,c){Id(b,a,!0)&&ud(b,a,c,"notDeepStrictEqual",Md)}K.strictEqual=Nd;function Nd(b,a,c){b!==a&&ud(b,a,c,"===",Nd)}K.notStrictEqual=Od;function Od(b,a,c){b===a&&ud(b,a,c,"!==",Od)}
|
|
function Pd(b,a){if(!b||!a)return!1;if("[object RegExp]"==Object.prototype.toString.call(a))return a.test(b);try{if(b instanceof a)return!0}catch(c){}return Error.isPrototypeOf(a)?!1:!0===a.call({},b)}
|
|
function Qd(b,a,c,d){if("function"!==typeof a)throw new TypeError('"block" argument must be a function');"string"===typeof c&&(d=c,c=null);try{a()}catch(h){var e=h}a=e;d=(c&&c.name?" ("+c.name+").":".")+(d?" "+d:".");b&&!a&&ud(a,c,"Missing expected exception"+d);e="string"===typeof d;var g=!b&&Ic(a),f=!b&&a&&!c;(g&&e&&Pd(a,c)||f)&&ud(a,c,"Got unwanted exception"+d);if(b&&a&&c&&!Pd(a,c)||!b&&a)throw a;}K.throws=Rd;function Rd(b,a,c){Qd(!0,b,a,c)}K.doesNotThrow=Sd;function Sd(b,a,c){Qd(!1,b,a,c)}
|
|
K.ifError=Td;function Td(b){if(b)throw b;}
|
|
var Ud=Ea(function(b,a){function c(a){return function(a){function b(b){for(var c=[],e=1;e<arguments.length;e++)c[e-1]=arguments[e];c=a.call(this,d(b,c))||this;c.code=b;c[h]=b;c.name=a.prototype.name+" ["+c[h]+"]";return c}f(b,a);return b}(a)}function d(a,b){K.strictEqual(typeof a,"string");var c=k[a];K(c,"An invalid error message key was used: "+a+".");if("function"===typeof c)a=c;else{a=md.format;if(void 0===b||0===b.length)return c;b.unshift(c)}return String(a.apply(null,b))}function e(a,b){k[a]=
|
|
"function"===typeof b?b:String(b)}function g(a,b){K(a,"expected is required");K("string"===typeof b,"thing is required");if(Array.isArray(a)){var c=a.length;K(0<c,"At least one expected value needs to be specified");a=a.map(function(a){return String(a)});return 2<c?"one of "+b+" "+a.slice(0,c-1).join(", ")+", or "+a[c-1]:2===c?"one of "+b+" "+a[0]+" or "+a[1]:"of "+b+" "+a[0]}return"of "+b+" "+String(a)}var f=x&&x.__extends||function(){function a(b,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof
|
|
Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return a(b,c)}return function(b,c){function d(){this.constructor=b}a(b,c);b.prototype=null===c?Object.create(c):(d.prototype=c.prototype,new d)}}();Object.defineProperty(a,"__esModule",{value:!0});var h="undefined"===typeof Symbol?"_kCode":Symbol("code"),k={};b=function(b){function c(c){if("object"!==typeof c||null===c)throw new a.TypeError("ERR_INVALID_ARG_TYPE","options","object");var d=c.message?
|
|
b.call(this,c.message)||this:b.call(this,md.inspect(c.actual).slice(0,128)+" "+(c.operator+" "+md.inspect(c.expected).slice(0,128)))||this;d.generatedMessage=!c.message;d.name="AssertionError [ERR_ASSERTION]";d.code="ERR_ASSERTION";d.actual=c.actual;d.expected=c.expected;d.operator=c.operator;a.Error.captureStackTrace(d,c.stackStartFunction);return d}f(c,b);return c}(x.Error);a.AssertionError=b;a.message=d;a.E=e;a.Error=c(x.Error);a.TypeError=c(x.TypeError);a.RangeError=c(x.RangeError);e("ERR_ARG_NOT_ITERABLE",
|
|
"%s must be iterable");e("ERR_ASSERTION","%s");e("ERR_BUFFER_OUT_OF_BOUNDS",function(a,b){return b?"Attempt to write outside buffer bounds":'"'+a+'" is outside of buffer bounds'});e("ERR_CHILD_CLOSED_BEFORE_REPLY","Child closed before reply received");e("ERR_CONSOLE_WRITABLE_STREAM","Console expects a writable stream instance for %s");e("ERR_CPU_USAGE","Unable to obtain cpu usage %s");e("ERR_DNS_SET_SERVERS_FAILED",function(a,b){return'c-ares failed to set servers: "'+a+'" ['+b+"]"});e("ERR_FALSY_VALUE_REJECTION",
|
|
"Promise was rejected with falsy value");e("ERR_ENCODING_NOT_SUPPORTED",function(a){return'The "'+a+'" encoding is not supported'});e("ERR_ENCODING_INVALID_ENCODED_DATA",function(a){return"The encoded data was not valid for encoding "+a});e("ERR_HTTP_HEADERS_SENT","Cannot render headers after they are sent to the client");e("ERR_HTTP_INVALID_STATUS_CODE","Invalid status code: %s");e("ERR_HTTP_TRAILER_INVALID","Trailers are invalid with this transfer encoding");e("ERR_INDEX_OUT_OF_RANGE","Index out of range");
|
|
e("ERR_INVALID_ARG_TYPE",function(a,b,c){K(a,"name is required");if(b.includes("not ")){var d="must not be";b=b.split("not ")[1]}else d="must be";if(Array.isArray(a))d="The "+a.map(function(a){return'"'+a+'"'}).join(", ")+" arguments "+d+" "+g(b,"type");else if(a.includes(" argument"))d="The "+a+" "+d+" "+g(b,"type");else{var e=a.includes(".")?"property":"argument";d='The "'+a+'" '+e+" "+d+" "+g(b,"type")}3<=arguments.length&&(d+=". Received type "+(null!==c?typeof c:"null"));return d});e("ERR_INVALID_ARRAY_LENGTH",
|
|
function(a,b,c){K.strictEqual(typeof c,"number");return'The array "'+a+'" (length '+c+") must be of length "+b+"."});e("ERR_INVALID_BUFFER_SIZE","Buffer size must be a multiple of %s");e("ERR_INVALID_CALLBACK","Callback must be a function");e("ERR_INVALID_CHAR","Invalid character in %s");e("ERR_INVALID_CURSOR_POS","Cannot set cursor row without setting its column");e("ERR_INVALID_FD",'"fd" must be a positive integer: %s');e("ERR_INVALID_FILE_URL_HOST",'File URL host must be "localhost" or empty on %s');
|
|
e("ERR_INVALID_FILE_URL_PATH","File URL path %s");e("ERR_INVALID_HANDLE_TYPE","This handle type cannot be sent");e("ERR_INVALID_IP_ADDRESS","Invalid IP address: %s");e("ERR_INVALID_OPT_VALUE",function(a,b){return'The value "'+String(b)+'" is invalid for option "'+a+'"'});e("ERR_INVALID_OPT_VALUE_ENCODING",function(a){return'The value "'+String(a)+'" is invalid for option "encoding"'});e("ERR_INVALID_REPL_EVAL_CONFIG",'Cannot specify both "breakEvalOnSigint" and "eval" for REPL');e("ERR_INVALID_SYNC_FORK_INPUT",
|
|
"Asynchronous forks do not support Buffer, Uint8Array or string input: %s");e("ERR_INVALID_THIS",'Value of "this" must be of type %s');e("ERR_INVALID_TUPLE","%s must be an iterable %s tuple");e("ERR_INVALID_URL","Invalid URL: %s");e("ERR_INVALID_URL_SCHEME",function(a){return"The URL must be "+g(a,"scheme")});e("ERR_IPC_CHANNEL_CLOSED","Channel closed");e("ERR_IPC_DISCONNECTED","IPC channel is already disconnected");e("ERR_IPC_ONE_PIPE","Child process can have only one IPC pipe");e("ERR_IPC_SYNC_FORK",
|
|
"IPC cannot be used with synchronous forks");e("ERR_MISSING_ARGS",function(){for(var a=[],b=0;b<arguments.length;b++)a[b]=arguments[b];K(0<a.length,"At least one arg needs to be specified");b="The ";var c=a.length;a=a.map(function(a){return'"'+a+'"'});switch(c){case 1:b+=a[0]+" argument";break;case 2:b+=a[0]+" and "+a[1]+" arguments";break;default:b+=a.slice(0,c-1).join(", "),b+=", and "+a[c-1]+" arguments"}return b+" must be specified"});e("ERR_MULTIPLE_CALLBACK","Callback called multiple times");
|
|
e("ERR_NAPI_CONS_FUNCTION","Constructor must be a function");e("ERR_NAPI_CONS_PROTOTYPE_OBJECT","Constructor.prototype must be an object");e("ERR_NO_CRYPTO","Node.js is not compiled with OpenSSL crypto support");e("ERR_NO_LONGER_SUPPORTED","%s is no longer supported");e("ERR_PARSE_HISTORY_DATA","Could not parse history data in %s");e("ERR_SOCKET_ALREADY_BOUND","Socket is already bound");e("ERR_SOCKET_BAD_PORT","Port should be > 0 and < 65536");e("ERR_SOCKET_BAD_TYPE","Bad socket type specified. Valid types are: udp4, udp6");
|
|
e("ERR_SOCKET_CANNOT_SEND","Unable to send data");e("ERR_SOCKET_CLOSED","Socket is closed");e("ERR_SOCKET_DGRAM_NOT_RUNNING","Not running");e("ERR_STDERR_CLOSE","process.stderr cannot be closed");e("ERR_STDOUT_CLOSE","process.stdout cannot be closed");e("ERR_STREAM_WRAP","Stream has StringDecoder set or is in objectMode");e("ERR_TLS_CERT_ALTNAME_INVALID","Hostname/IP does not match certificate's altnames: %s");e("ERR_TLS_DH_PARAM_SIZE",function(a){return"DH parameter size "+a+" is less than 2048"});
|
|
e("ERR_TLS_HANDSHAKE_TIMEOUT","TLS handshake timeout");e("ERR_TLS_RENEGOTIATION_FAILED","Failed to renegotiate");e("ERR_TLS_REQUIRED_SERVER_NAME",'"servername" is required parameter for Server.addContext');e("ERR_TLS_SESSION_ATTACK","TSL session renegotiation attack detected");e("ERR_TRANSFORM_ALREADY_TRANSFORMING","Calling transform done when still transforming");e("ERR_TRANSFORM_WITH_LENGTH_0","Calling transform done when writableState.length != 0");e("ERR_UNKNOWN_ENCODING","Unknown encoding: %s");
|
|
e("ERR_UNKNOWN_SIGNAL","Unknown signal: %s");e("ERR_UNKNOWN_STDIN_TYPE","Unknown stdin file type");e("ERR_UNKNOWN_STREAM_TYPE","Unknown stream file type");e("ERR_V8BREAKITERATOR","Full ICU data not installed. See https://github.com/nodejs/node/wiki/Intl")});Da(Ud);
|
|
var Vd=Ea(function(b,a){Object.defineProperty(a,"__esModule",{value:!0});a.ENCODING_UTF8="utf8";a.assertEncoding=function(a){if(a&&!E.Buffer.isEncoding(a))throw new Ud.TypeError("ERR_INVALID_OPT_VALUE_ENCODING",a);};a.strToEncoding=function(b,d){return d&&d!==a.ENCODING_UTF8?"buffer"===d?new E.Buffer(b):(new E.Buffer(b)).toString(d):b}});Da(Vd);
|
|
var Wd=Ea(function(b,a){Object.defineProperty(a,"__esModule",{value:!0});var c=z.constants.S_IFMT,d=z.constants.S_IFDIR,e=z.constants.S_IFREG,g=z.constants.S_IFBLK,f=z.constants.S_IFCHR,h=z.constants.S_IFLNK,k=z.constants.S_IFIFO,r=z.constants.S_IFSOCK;b=function(){function a(){this.name="";this.mode=0}a.build=function(b,c){var d=new a,e=b.getNode().mode;d.name=Vd.strToEncoding(b.getName(),c);d.mode=e;return d};a.prototype._checkModeProperty=function(a){return(this.mode&c)===a};a.prototype.isDirectory=
|
|
function(){return this._checkModeProperty(d)};a.prototype.isFile=function(){return this._checkModeProperty(e)};a.prototype.isBlockDevice=function(){return this._checkModeProperty(g)};a.prototype.isCharacterDevice=function(){return this._checkModeProperty(f)};a.prototype.isSymbolicLink=function(){return this._checkModeProperty(h)};a.prototype.isFIFO=function(){return this._checkModeProperty(k)};a.prototype.isSocket=function(){return this._checkModeProperty(r)};return a}();a.Dirent=b;a.default=b});
|
|
Da(Wd);function Xd(b,a){for(var c=0,d=b.length-1;0<=d;d--){var e=b[d];"."===e?b.splice(d,1):".."===e?(b.splice(d,1),c++):c&&(b.splice(d,1),c--)}if(a)for(;c--;c)b.unshift("..");return b}var Yd=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
|
|
function Zd(){for(var b="",a=!1,c=arguments.length-1;-1<=c&&!a;c--){var d=0<=c?arguments[c]:"/";if("string"!==typeof d)throw new TypeError("Arguments to path.resolve must be strings");d&&(b=d+"/"+b,a="/"===d.charAt(0))}b=Xd($d(b.split("/"),function(a){return!!a}),!a).join("/");return(a?"/":"")+b||"."}function ae(b){var a=be(b),c="/"===ce(b,-1);(b=Xd($d(b.split("/"),function(a){return!!a}),!a).join("/"))||a||(b=".");b&&c&&(b+="/");return(a?"/":"")+b}function be(b){return"/"===b.charAt(0)}
|
|
function de(b,a){function c(a){for(var b=0;b<a.length&&""===a[b];b++);for(var c=a.length-1;0<=c&&""===a[c];c--);return b>c?[]:a.slice(b,c-b+1)}b=Zd(b).substr(1);a=Zd(a).substr(1);b=c(b.split("/"));a=c(a.split("/"));for(var d=Math.min(b.length,a.length),e=d,g=0;g<d;g++)if(b[g]!==a[g]){e=g;break}d=[];for(g=e;g<b.length;g++)d.push("..");d=d.concat(a.slice(e));return d.join("/")}
|
|
var ee={extname:function(b){return Yd.exec(b).slice(1)[3]},basename:function(b,a){b=Yd.exec(b).slice(1)[2];a&&b.substr(-1*a.length)===a&&(b=b.substr(0,b.length-a.length));return b},dirname:function(b){var a=Yd.exec(b).slice(1);b=a[0];a=a[1];if(!b&&!a)return".";a&&(a=a.substr(0,a.length-1));return b+a},sep:"/",delimiter:":",relative:de,join:function(){var b=Array.prototype.slice.call(arguments,0);return ae($d(b,function(a){if("string"!==typeof a)throw new TypeError("Arguments to path.join must be strings");
|
|
return a}).join("/"))},isAbsolute:be,normalize:ae,resolve:Zd};function $d(b,a){if(b.filter)return b.filter(a);for(var c=[],d=0;d<b.length;d++)a(b[d],d,b)&&c.push(b[d]);return c}var ce="b"==="ab".substr(-1)?function(b,a,c){return b.substr(a,c)}:function(b,a,c){0>a&&(a=b.length+a);return b.substr(a,c)},fe=Ea(function(b,a){Object.defineProperty(a,"__esModule",{value:!0});b="function"===typeof setImmediate?setImmediate.bind(x):setTimeout.bind(x);a.default=b});Da(fe);
|
|
var ge=Ea(function(b,a){function c(){var a=bc||{};a.getuid||(a.getuid=function(){return 0});a.getgid||(a.getgid=function(){return 0});a.cwd||(a.cwd=function(){return"/"});a.nextTick||(a.nextTick=fe.default);a.emitWarning||(a.emitWarning=function(a,b){console.warn(""+b+(b?": ":"")+a)});a.env||(a.env={});return a}Object.defineProperty(a,"__esModule",{value:!0});a.createProcess=c;a.default=c()});Da(ge);function he(){}he.prototype=Object.create(null);function L(){L.init.call(this)}L.EventEmitter=L;
|
|
L.usingDomains=!1;L.prototype.domain=void 0;L.prototype._events=void 0;L.prototype._maxListeners=void 0;L.defaultMaxListeners=10;L.init=function(){this.domain=null;this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new he,this._eventsCount=0);this._maxListeners=this._maxListeners||void 0};L.prototype.setMaxListeners=function(b){if("number"!==typeof b||0>b||isNaN(b))throw new TypeError('"n" argument must be a positive number');this._maxListeners=b;return this};
|
|
L.prototype.getMaxListeners=function(){return void 0===this._maxListeners?L.defaultMaxListeners:this._maxListeners};
|
|
L.prototype.emit=function(b){var a,c,d="error"===b;if(a=this._events)d=d&&null==a.error;else if(!d)return!1;var e=this.domain;if(d){a=arguments[1];if(e)a||(a=Error('Uncaught, unspecified "error" event')),a.domainEmitter=this,a.domain=e,a.domainThrown=!1,e.emit("error",a);else{if(a instanceof Error)throw a;e=Error('Uncaught, unspecified "error" event. ('+a+")");e.context=a;throw e;}return!1}e=a[b];if(!e)return!1;a="function"===typeof e;var g=arguments.length;switch(g){case 1:if(a)e.call(this);else for(a=
|
|
e.length,e=ie(e,a),d=0;d<a;++d)e[d].call(this);break;case 2:d=arguments[1];if(a)e.call(this,d);else for(a=e.length,e=ie(e,a),g=0;g<a;++g)e[g].call(this,d);break;case 3:d=arguments[1];g=arguments[2];if(a)e.call(this,d,g);else for(a=e.length,e=ie(e,a),c=0;c<a;++c)e[c].call(this,d,g);break;case 4:d=arguments[1];g=arguments[2];c=arguments[3];if(a)e.call(this,d,g,c);else{a=e.length;e=ie(e,a);for(var f=0;f<a;++f)e[f].call(this,d,g,c)}break;default:d=Array(g-1);for(c=1;c<g;c++)d[c-1]=arguments[c];if(a)e.apply(this,
|
|
d);else for(a=e.length,e=ie(e,a),g=0;g<a;++g)e[g].apply(this,d)}return!0};
|
|
function je(b,a,c,d){var e;if("function"!==typeof c)throw new TypeError('"listener" argument must be a function');if(e=b._events){e.newListener&&(b.emit("newListener",a,c.listener?c.listener:c),e=b._events);var g=e[a]}else e=b._events=new he,b._eventsCount=0;g?("function"===typeof g?g=e[a]=d?[c,g]:[g,c]:d?g.unshift(c):g.push(c),g.warned||(c=void 0===b._maxListeners?L.defaultMaxListeners:b._maxListeners)&&0<c&&g.length>c&&(g.warned=!0,c=Error("Possible EventEmitter memory leak detected. "+g.length+
|
|
" "+a+" listeners added. Use emitter.setMaxListeners() to increase limit"),c.name="MaxListenersExceededWarning",c.emitter=b,c.type=a,c.count=g.length,"function"===typeof console.warn?console.warn(c):console.log(c))):(e[a]=c,++b._eventsCount);return b}L.prototype.addListener=function(b,a){return je(this,b,a,!1)};L.prototype.on=L.prototype.addListener;L.prototype.prependListener=function(b,a){return je(this,b,a,!0)};
|
|
function ke(b,a,c){function d(){b.removeListener(a,d);e||(e=!0,c.apply(b,arguments))}var e=!1;d.listener=c;return d}L.prototype.once=function(b,a){if("function"!==typeof a)throw new TypeError('"listener" argument must be a function');this.on(b,ke(this,b,a));return this};L.prototype.prependOnceListener=function(b,a){if("function"!==typeof a)throw new TypeError('"listener" argument must be a function');this.prependListener(b,ke(this,b,a));return this};
|
|
L.prototype.removeListener=function(b,a){var c;if("function"!==typeof a)throw new TypeError('"listener" argument must be a function');var d=this._events;if(!d)return this;var e=d[b];if(!e)return this;if(e===a||e.listener&&e.listener===a)0===--this._eventsCount?this._events=new he:(delete d[b],d.removeListener&&this.emit("removeListener",b,e.listener||a));else if("function"!==typeof e){var g=-1;for(c=e.length;0<c--;)if(e[c]===a||e[c].listener&&e[c].listener===a){var f=e[c].listener;g=c;break}if(0>
|
|
g)return this;if(1===e.length){e[0]=void 0;if(0===--this._eventsCount)return this._events=new he,this;delete d[b]}else{c=g+1;for(var h=e.length;c<h;g+=1,c+=1)e[g]=e[c];e.pop()}d.removeListener&&this.emit("removeListener",b,f||a)}return this};
|
|
L.prototype.removeAllListeners=function(b){var a=this._events;if(!a)return this;if(!a.removeListener)return 0===arguments.length?(this._events=new he,this._eventsCount=0):a[b]&&(0===--this._eventsCount?this._events=new he:delete a[b]),this;if(0===arguments.length){a=Object.keys(a);for(var c=0,d;c<a.length;++c)d=a[c],"removeListener"!==d&&this.removeAllListeners(d);this.removeAllListeners("removeListener");this._events=new he;this._eventsCount=0;return this}a=a[b];if("function"===typeof a)this.removeListener(b,
|
|
a);else if(a){do this.removeListener(b,a[a.length-1]);while(a[0])}return this};L.prototype.listeners=function(b){var a=this._events;if(a)if(b=a[b])if("function"===typeof b)b=[b.listener||b];else{a=Array(b.length);for(var c=0;c<a.length;++c)a[c]=b[c].listener||b[c];b=a}else b=[];else b=[];return b};L.listenerCount=function(b,a){return"function"===typeof b.listenerCount?b.listenerCount(a):le.call(b,a)};L.prototype.listenerCount=le;
|
|
function le(b){var a=this._events;if(a){b=a[b];if("function"===typeof b)return 1;if(b)return b.length}return 0}L.prototype.eventNames=function(){return 0<this._eventsCount?Reflect.ownKeys(this._events):[]};function ie(b,a){for(var c=Array(a);a--;)c[a]=b[a];return c}
|
|
var me=Ea(function(b,a){var c=x&&x.__extends||function(){function a(b,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return a(b,c)}return function(b,c){function d(){this.constructor=b}a(b,c);b.prototype=null===c?Object.create(c):(d.prototype=c.prototype,new d)}}();Object.defineProperty(a,"__esModule",{value:!0});var d=z.constants.S_IFMT,e=z.constants.S_IFDIR,g=z.constants.S_IFREG,f=z.constants.S_IFLNK,
|
|
h=z.constants.O_APPEND;a.SEP="/";b=function(a){function b(b,c){void 0===c&&(c=438);var d=a.call(this)||this;d.uid=ge.default.getuid();d.gid=ge.default.getgid();d.atime=new Date;d.mtime=new Date;d.ctime=new Date;d.perm=438;d.mode=g;d.nlink=1;d.perm=c;d.mode|=c;d.ino=b;return d}c(b,a);b.prototype.getString=function(a){void 0===a&&(a="utf8");return this.getBuffer().toString(a)};b.prototype.setString=function(a){this.buf=E.bufferFrom(a,"utf8");this.touch()};b.prototype.getBuffer=function(){this.buf||
|
|
this.setBuffer(E.bufferAllocUnsafe(0));return E.bufferFrom(this.buf)};b.prototype.setBuffer=function(a){this.buf=E.bufferFrom(a);this.touch()};b.prototype.getSize=function(){return this.buf?this.buf.length:0};b.prototype.setModeProperty=function(a){this.mode=this.mode&~d|a};b.prototype.setIsFile=function(){this.setModeProperty(g)};b.prototype.setIsDirectory=function(){this.setModeProperty(e)};b.prototype.setIsSymlink=function(){this.setModeProperty(f)};b.prototype.isFile=function(){return(this.mode&
|
|
d)===g};b.prototype.isDirectory=function(){return(this.mode&d)===e};b.prototype.isSymlink=function(){return(this.mode&d)===f};b.prototype.makeSymlink=function(a){this.symlink=a;this.setIsSymlink()};b.prototype.write=function(a,b,c,d){void 0===b&&(b=0);void 0===c&&(c=a.length);void 0===d&&(d=0);this.buf||(this.buf=E.bufferAllocUnsafe(0));if(d+c>this.buf.length){var e=E.bufferAllocUnsafe(d+c);this.buf.copy(e,0,0,this.buf.length);this.buf=e}a.copy(this.buf,d,b,b+c);this.touch();return c};b.prototype.read=
|
|
function(a,b,c,d){void 0===b&&(b=0);void 0===c&&(c=a.byteLength);void 0===d&&(d=0);this.buf||(this.buf=E.bufferAllocUnsafe(0));c>a.byteLength&&(c=a.byteLength);c+d>this.buf.length&&(c=this.buf.length-d);this.buf.copy(a,b,d,d+c);return c};b.prototype.truncate=function(a){void 0===a&&(a=0);if(a)if(this.buf||(this.buf=E.bufferAllocUnsafe(0)),a<=this.buf.length)this.buf=this.buf.slice(0,a);else{var b=E.bufferAllocUnsafe(0);this.buf.copy(b);b.fill(0,a)}else this.buf=E.bufferAllocUnsafe(0);this.touch()};
|
|
b.prototype.chmod=function(a){this.perm=a;this.mode=this.mode&-512|a;this.touch()};b.prototype.chown=function(a,b){this.uid=a;this.gid=b;this.touch()};b.prototype.touch=function(){this.mtime=new Date;this.emit("change",this)};b.prototype.canRead=function(a,b){void 0===a&&(a=ge.default.getuid());void 0===b&&(b=ge.default.getgid());return this.perm&4||b===this.gid&&this.perm&32||a===this.uid&&this.perm&256?!0:!1};b.prototype.canWrite=function(a,b){void 0===a&&(a=ge.default.getuid());void 0===b&&(b=
|
|
ge.default.getgid());return this.perm&2||b===this.gid&&this.perm&16||a===this.uid&&this.perm&128?!0:!1};b.prototype.del=function(){this.emit("delete",this)};b.prototype.toJSON=function(){return{ino:this.ino,uid:this.uid,gid:this.gid,atime:this.atime.getTime(),mtime:this.mtime.getTime(),ctime:this.ctime.getTime(),perm:this.perm,mode:this.mode,nlink:this.nlink,symlink:this.symlink,data:this.getString()}};return b}(L.EventEmitter);a.Node=b;b=function(b){function d(a,c,d){var e=b.call(this)||this;e.children=
|
|
{};e.steps=[];e.ino=0;e.length=0;e.vol=a;e.parent=c;e.steps=c?c.steps.concat([d]):[d];return e}c(d,b);d.prototype.setNode=function(a){this.node=a;this.ino=a.ino};d.prototype.getNode=function(){return this.node};d.prototype.createChild=function(a,b){void 0===b&&(b=this.vol.createNode());var c=new d(this.vol,this,a);c.setNode(b);b.isDirectory();this.setChild(a,c);return c};d.prototype.setChild=function(a,b){void 0===b&&(b=new d(this.vol,this,a));this.children[a]=b;b.parent=this;this.length++;this.emit("child:add",
|
|
b,this);return b};d.prototype.deleteChild=function(a){delete this.children[a.getName()];this.length--;this.emit("child:delete",a,this)};d.prototype.getChild=function(a){if(Object.hasOwnProperty.call(this.children,a))return this.children[a]};d.prototype.getPath=function(){return this.steps.join(a.SEP)};d.prototype.getName=function(){return this.steps[this.steps.length-1]};d.prototype.walk=function(a,b,c){void 0===b&&(b=a.length);void 0===c&&(c=0);if(c>=a.length||c>=b)return this;var d=this.getChild(a[c]);
|
|
return d?d.walk(a,b,c+1):null};d.prototype.toJSON=function(){return{steps:this.steps,ino:this.ino,children:Object.keys(this.children)}};return d}(L.EventEmitter);a.Link=b;b=function(){function a(a,b,c,d){this.position=0;this.link=a;this.node=b;this.flags=c;this.fd=d}a.prototype.getString=function(){return this.node.getString()};a.prototype.setString=function(a){this.node.setString(a)};a.prototype.getBuffer=function(){return this.node.getBuffer()};a.prototype.setBuffer=function(a){this.node.setBuffer(a)};
|
|
a.prototype.getSize=function(){return this.node.getSize()};a.prototype.truncate=function(a){this.node.truncate(a)};a.prototype.seekTo=function(a){this.position=a};a.prototype.stats=function(){return Ka.default.build(this.node)};a.prototype.write=function(a,b,c,d){void 0===b&&(b=0);void 0===c&&(c=a.length);"number"!==typeof d&&(d=this.position);this.flags&h&&(d=this.getSize());a=this.node.write(a,b,c,d);this.position=d+a;return a};a.prototype.read=function(a,b,c,d){void 0===b&&(b=0);void 0===c&&(c=
|
|
a.byteLength);"number"!==typeof d&&(d=this.position);a=this.node.read(a,b,c,d);this.position=d+a;return a};a.prototype.chmod=function(a){this.node.chmod(a)};a.prototype.chown=function(a,b){this.node.chown(a,b)};return a}();a.File=b});Da(me);var pe=me.Node,qe=Ea(function(b,a){Object.defineProperty(a,"__esModule",{value:!0});a.default=function(a,b,e){var c=setTimeout.apply(null,arguments);c&&"object"===typeof c&&"function"===typeof c.unref&&c.unref();return c}});Da(qe);
|
|
function re(){this.tail=this.head=null;this.length=0}re.prototype.push=function(b){b={data:b,next:null};0<this.length?this.tail.next=b:this.head=b;this.tail=b;++this.length};re.prototype.unshift=function(b){b={data:b,next:this.head};0===this.length&&(this.tail=b);this.head=b;++this.length};re.prototype.shift=function(){if(0!==this.length){var b=this.head.data;this.head=1===this.length?this.tail=null:this.head.next;--this.length;return b}};
|
|
re.prototype.clear=function(){this.head=this.tail=null;this.length=0};re.prototype.join=function(b){if(0===this.length)return"";for(var a=this.head,c=""+a.data;a=a.next;)c+=b+a.data;return c};re.prototype.concat=function(b){if(0===this.length)return A.alloc(0);if(1===this.length)return this.head.data;b=A.allocUnsafe(b>>>0);for(var a=this.head,c=0;a;)a.data.copy(b,c),c+=a.data.length,a=a.next;return b};
|
|
var se=A.isEncoding||function(b){switch(b&&b.toLowerCase()){case "hex":case "utf8":case "utf-8":case "ascii":case "binary":case "base64":case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":case "raw":return!0;default:return!1}};
|
|
function te(b){this.encoding=(b||"utf8").toLowerCase().replace(/[-_]/,"");if(b&&!se(b))throw Error("Unknown encoding: "+b);switch(this.encoding){case "utf8":this.surrogateSize=3;break;case "ucs2":case "utf16le":this.surrogateSize=2;this.detectIncompleteChar=ue;break;case "base64":this.surrogateSize=3;this.detectIncompleteChar=Ee;break;default:this.write=Fe;return}this.charBuffer=new A(6);this.charLength=this.charReceived=0}
|
|
te.prototype.write=function(b){for(var a="";this.charLength;){a=b.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:b.length;b.copy(this.charBuffer,this.charReceived,0,a);this.charReceived+=a;if(this.charReceived<this.charLength)return"";b=b.slice(a,b.length);a=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var c=a.charCodeAt(a.length-1);if(55296<=c&&56319>=c)this.charLength+=this.surrogateSize,a="";else{this.charReceived=this.charLength=0;if(0===b.length)return a;
|
|
break}}this.detectIncompleteChar(b);var d=b.length;this.charLength&&(b.copy(this.charBuffer,0,b.length-this.charReceived,d),d-=this.charReceived);a+=b.toString(this.encoding,0,d);d=a.length-1;c=a.charCodeAt(d);return 55296<=c&&56319>=c?(c=this.surrogateSize,this.charLength+=c,this.charReceived+=c,this.charBuffer.copy(this.charBuffer,c,0,c),b.copy(this.charBuffer,0,0,c),a.substring(0,d)):a};
|
|
te.prototype.detectIncompleteChar=function(b){for(var a=3<=b.length?3:b.length;0<a;a--){var c=b[b.length-a];if(1==a&&6==c>>5){this.charLength=2;break}if(2>=a&&14==c>>4){this.charLength=3;break}if(3>=a&&30==c>>3){this.charLength=4;break}}this.charReceived=a};te.prototype.end=function(b){var a="";b&&b.length&&(a=this.write(b));this.charReceived&&(b=this.encoding,a+=this.charBuffer.slice(0,this.charReceived).toString(b));return a};function Fe(b){return b.toString(this.encoding)}
|
|
function ue(b){this.charLength=(this.charReceived=b.length%2)?2:0}function Ee(b){this.charLength=(this.charReceived=b.length%3)?3:0}N.ReadableState=Ge;var Q=oc("stream");cc(N,L);function He(b,a,c){if("function"===typeof b.prependListener)return b.prependListener(a,c);if(b._events&&b._events[a])Array.isArray(b._events[a])?b._events[a].unshift(c):b._events[a]=[c,b._events[a]];else b.on(a,c)}
|
|
function Ge(b,a){b=b||{};this.objectMode=!!b.objectMode;a instanceof Ie&&(this.objectMode=this.objectMode||!!b.readableObjectMode);a=b.highWaterMark;var c=this.objectMode?16:16384;this.highWaterMark=a||0===a?a:c;this.highWaterMark=~~this.highWaterMark;this.buffer=new re;this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.reading=this.endEmitted=this.ended=!1;this.sync=!0;this.resumeScheduled=this.readableListening=this.emittedReadable=this.needReadable=!1;this.defaultEncoding=b.defaultEncoding||
|
|
"utf8";this.ranOut=!1;this.awaitDrain=0;this.readingMore=!1;this.encoding=this.decoder=null;b.encoding&&(this.decoder=new te(b.encoding),this.encoding=b.encoding)}function N(b){if(!(this instanceof N))return new N(b);this._readableState=new Ge(b,this);this.readable=!0;b&&"function"===typeof b.read&&(this._read=b.read);L.call(this)}
|
|
N.prototype.push=function(b,a){var c=this._readableState;c.objectMode||"string"!==typeof b||(a=a||c.defaultEncoding,a!==c.encoding&&(b=A.from(b,a),a=""));return Je(this,c,b,a,!1)};N.prototype.unshift=function(b){return Je(this,this._readableState,b,"",!0)};N.prototype.isPaused=function(){return!1===this._readableState.flowing};
|
|
function Je(b,a,c,d,e){var g=c,f=null;nb(g)||"string"===typeof g||null===g||void 0===g||a.objectMode||(f=new TypeError("Invalid non-string/buffer chunk"));if(g=f)b.emit("error",g);else if(null===c)a.reading=!1,a.ended||(a.decoder&&(c=a.decoder.end())&&c.length&&(a.buffer.push(c),a.length+=a.objectMode?1:c.length),a.ended=!0,Ke(b));else if(a.objectMode||c&&0<c.length)if(a.ended&&!e)b.emit("error",Error("stream.push() after EOF"));else if(a.endEmitted&&e)b.emit("error",Error("stream.unshift() after end event"));
|
|
else{if(a.decoder&&!e&&!d){c=a.decoder.write(c);var h=!a.objectMode&&0===c.length}e||(a.reading=!1);h||(a.flowing&&0===a.length&&!a.sync?(b.emit("data",c),b.read(0)):(a.length+=a.objectMode?1:c.length,e?a.buffer.unshift(c):a.buffer.push(c),a.needReadable&&Ke(b)));a.readingMore||(a.readingMore=!0,Wb(Le,b,a))}else e||(a.reading=!1);return!a.ended&&(a.needReadable||a.length<a.highWaterMark||0===a.length)}
|
|
N.prototype.setEncoding=function(b){this._readableState.decoder=new te(b);this._readableState.encoding=b;return this};function Me(b,a){if(0>=b||0===a.length&&a.ended)return 0;if(a.objectMode)return 1;if(b!==b)return a.flowing&&a.length?a.buffer.head.data.length:a.length;if(b>a.highWaterMark){var c=b;8388608<=c?c=8388608:(c--,c|=c>>>1,c|=c>>>2,c|=c>>>4,c|=c>>>8,c|=c>>>16,c++);a.highWaterMark=c}return b<=a.length?b:a.ended?a.length:(a.needReadable=!0,0)}
|
|
N.prototype.read=function(b){Q("read",b);b=parseInt(b,10);var a=this._readableState,c=b;0!==b&&(a.emittedReadable=!1);if(0===b&&a.needReadable&&(a.length>=a.highWaterMark||a.ended))return Q("read: emitReadable",a.length,a.ended),0===a.length&&a.ended?Ne(this):Ke(this),null;b=Me(b,a);if(0===b&&a.ended)return 0===a.length&&Ne(this),null;var d=a.needReadable;Q("need readable",d);if(0===a.length||a.length-b<a.highWaterMark)d=!0,Q("length less than watermark",d);a.ended||a.reading?Q("reading or ended",
|
|
!1):d&&(Q("do read"),a.reading=!0,a.sync=!0,0===a.length&&(a.needReadable=!0),this._read(a.highWaterMark),a.sync=!1,a.reading||(b=Me(c,a)));d=0<b?Oe(b,a):null;null===d?(a.needReadable=!0,b=0):a.length-=b;0===a.length&&(a.ended||(a.needReadable=!0),c!==b&&a.ended&&Ne(this));null!==d&&this.emit("data",d);return d};function Ke(b){var a=b._readableState;a.needReadable=!1;a.emittedReadable||(Q("emitReadable",a.flowing),a.emittedReadable=!0,a.sync?Wb(Pe,b):Pe(b))}
|
|
function Pe(b){Q("emit readable");b.emit("readable");Qe(b)}function Le(b,a){for(var c=a.length;!a.reading&&!a.flowing&&!a.ended&&a.length<a.highWaterMark&&(Q("maybeReadMore read 0"),b.read(0),c!==a.length);)c=a.length;a.readingMore=!1}N.prototype._read=function(){this.emit("error",Error("not implemented"))};
|
|
N.prototype.pipe=function(b,a){function c(a){Q("onunpipe");a===q&&e()}function d(){Q("onend");b.end()}function e(){Q("cleanup");b.removeListener("close",h);b.removeListener("finish",k);b.removeListener("drain",v);b.removeListener("error",f);b.removeListener("unpipe",c);q.removeListener("end",d);q.removeListener("end",e);q.removeListener("data",g);l=!0;!t.awaitDrain||b._writableState&&!b._writableState.needDrain||v()}function g(a){Q("ondata");n=!1;!1!==b.write(a)||n||((1===t.pipesCount&&t.pipes===
|
|
b||1<t.pipesCount&&-1!==Re(t.pipes,b))&&!l&&(Q("false write response, pause",q._readableState.awaitDrain),q._readableState.awaitDrain++,n=!0),q.pause())}function f(a){Q("onerror",a);r();b.removeListener("error",f);0===b.listeners("error").length&&b.emit("error",a)}function h(){b.removeListener("finish",k);r()}function k(){Q("onfinish");b.removeListener("close",h);r()}function r(){Q("unpipe");q.unpipe(b)}var q=this,t=this._readableState;switch(t.pipesCount){case 0:t.pipes=b;break;case 1:t.pipes=[t.pipes,
|
|
b];break;default:t.pipes.push(b)}t.pipesCount+=1;Q("pipe count=%d opts=%j",t.pipesCount,a);a=a&&!1===a.end?e:d;if(t.endEmitted)Wb(a);else q.once("end",a);b.on("unpipe",c);var v=Se(q);b.on("drain",v);var l=!1,n=!1;q.on("data",g);He(b,"error",f);b.once("close",h);b.once("finish",k);b.emit("pipe",q);t.flowing||(Q("pipe resume"),q.resume());return b};
|
|
function Se(b){return function(){var a=b._readableState;Q("pipeOnDrain",a.awaitDrain);a.awaitDrain&&a.awaitDrain--;0===a.awaitDrain&&b.listeners("data").length&&(a.flowing=!0,Qe(b))}}
|
|
N.prototype.unpipe=function(b){var a=this._readableState;if(0===a.pipesCount)return this;if(1===a.pipesCount){if(b&&b!==a.pipes)return this;b||(b=a.pipes);a.pipes=null;a.pipesCount=0;a.flowing=!1;b&&b.emit("unpipe",this);return this}if(!b){b=a.pipes;var c=a.pipesCount;a.pipes=null;a.pipesCount=0;a.flowing=!1;for(a=0;a<c;a++)b[a].emit("unpipe",this);return this}c=Re(a.pipes,b);if(-1===c)return this;a.pipes.splice(c,1);--a.pipesCount;1===a.pipesCount&&(a.pipes=a.pipes[0]);b.emit("unpipe",this);return this};
|
|
N.prototype.on=function(b,a){a=L.prototype.on.call(this,b,a);"data"===b?!1!==this._readableState.flowing&&this.resume():"readable"===b&&(b=this._readableState,b.endEmitted||b.readableListening||(b.readableListening=b.needReadable=!0,b.emittedReadable=!1,b.reading?b.length&&Ke(this):Wb(Te,this)));return a};N.prototype.addListener=N.prototype.on;function Te(b){Q("readable nexttick read 0");b.read(0)}
|
|
N.prototype.resume=function(){var b=this._readableState;b.flowing||(Q("resume"),b.flowing=!0,b.resumeScheduled||(b.resumeScheduled=!0,Wb(Ue,this,b)));return this};function Ue(b,a){a.reading||(Q("resume read 0"),b.read(0));a.resumeScheduled=!1;a.awaitDrain=0;b.emit("resume");Qe(b);a.flowing&&!a.reading&&b.read(0)}N.prototype.pause=function(){Q("call pause flowing=%j",this._readableState.flowing);!1!==this._readableState.flowing&&(Q("pause"),this._readableState.flowing=!1,this.emit("pause"));return this};
|
|
function Qe(b){var a=b._readableState;for(Q("flow",a.flowing);a.flowing&&null!==b.read(););}
|
|
N.prototype.wrap=function(b){var a=this._readableState,c=!1,d=this;b.on("end",function(){Q("wrapped end");if(a.decoder&&!a.ended){var b=a.decoder.end();b&&b.length&&d.push(b)}d.push(null)});b.on("data",function(e){Q("wrapped data");a.decoder&&(e=a.decoder.write(e));a.objectMode&&(null===e||void 0===e)||!(a.objectMode||e&&e.length)||d.push(e)||(c=!0,b.pause())});for(var e in b)void 0===this[e]&&"function"===typeof b[e]&&(this[e]=function(a){return function(){return b[a].apply(b,arguments)}}(e));Ve(["error",
|
|
"close","destroy","pause","resume"],function(a){b.on(a,d.emit.bind(d,a))});d._read=function(a){Q("wrapped _read",a);c&&(c=!1,b.resume())};return d};N._fromList=Oe;
|
|
function Oe(b,a){if(0===a.length)return null;if(a.objectMode)var c=a.buffer.shift();else if(!b||b>=a.length)c=a.decoder?a.buffer.join(""):1===a.buffer.length?a.buffer.head.data:a.buffer.concat(a.length),a.buffer.clear();else{c=a.buffer;a=a.decoder;if(b<c.head.data.length)a=c.head.data.slice(0,b),c.head.data=c.head.data.slice(b);else{if(b===c.head.data.length)c=c.shift();else if(a){a=c.head;var d=1,e=a.data;for(b-=e.length;a=a.next;){var g=a.data,f=b>g.length?g.length:b;e=f===g.length?e+g:e+g.slice(0,
|
|
b);b-=f;if(0===b){f===g.length?(++d,c.head=a.next?a.next:c.tail=null):(c.head=a,a.data=g.slice(f));break}++d}c.length-=d;c=e}else{a=A.allocUnsafe(b);d=c.head;e=1;d.data.copy(a);for(b-=d.data.length;d=d.next;){g=d.data;f=b>g.length?g.length:b;g.copy(a,a.length-b,0,f);b-=f;if(0===b){f===g.length?(++e,c.head=d.next?d.next:c.tail=null):(c.head=d,d.data=g.slice(f));break}++e}c.length-=e;c=a}a=c}c=a}return c}
|
|
function Ne(b){var a=b._readableState;if(0<a.length)throw Error('"endReadable()" called on non-empty stream');a.endEmitted||(a.ended=!0,Wb(We,a,b))}function We(b,a){b.endEmitted||0!==b.length||(b.endEmitted=!0,a.readable=!1,a.emit("end"))}function Ve(b,a){for(var c=0,d=b.length;c<d;c++)a(b[c],c)}function Re(b,a){for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1}Xe.WritableState=Ye;cc(Xe,L);function Ze(){}function $e(b,a,c){this.chunk=b;this.encoding=a;this.callback=c;this.next=null}
|
|
function Ye(b,a){Object.defineProperty(this,"buffer",{get:kc(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")});b=b||{};this.objectMode=!!b.objectMode;a instanceof Ie&&(this.objectMode=this.objectMode||!!b.writableObjectMode);var c=b.highWaterMark,d=this.objectMode?16:16384;this.highWaterMark=c||0===c?c:d;this.highWaterMark=~~this.highWaterMark;this.finished=this.ended=this.ending=this.needDrain=!1;this.decodeStrings=!1!==b.decodeStrings;
|
|
this.defaultEncoding=b.defaultEncoding||"utf8";this.length=0;this.writing=!1;this.corked=0;this.sync=!0;this.bufferProcessing=!1;this.onwrite=function(b){var c=a._writableState,d=c.sync,e=c.writecb;c.writing=!1;c.writecb=null;c.length-=c.writelen;c.writelen=0;b?(--c.pendingcb,d?Wb(e,b):e(b),a._writableState.errorEmitted=!0,a.emit("error",b)):((b=af(c))||c.corked||c.bufferProcessing||!c.bufferedRequest||bf(a,c),d?Wb(cf,a,c,b,e):cf(a,c,b,e))};this.writecb=null;this.writelen=0;this.lastBufferedRequest=
|
|
this.bufferedRequest=null;this.pendingcb=0;this.errorEmitted=this.prefinished=!1;this.bufferedRequestCount=0;this.corkedRequestsFree=new df(this)}Ye.prototype.getBuffer=function(){for(var b=this.bufferedRequest,a=[];b;)a.push(b),b=b.next;return a};function Xe(b){if(!(this instanceof Xe||this instanceof Ie))return new Xe(b);this._writableState=new Ye(b,this);this.writable=!0;b&&("function"===typeof b.write&&(this._write=b.write),"function"===typeof b.writev&&(this._writev=b.writev));L.call(this)}
|
|
Xe.prototype.pipe=function(){this.emit("error",Error("Cannot pipe, not readable"))};
|
|
Xe.prototype.write=function(b,a,c){var d=this._writableState,e=!1;"function"===typeof a&&(c=a,a=null);A.isBuffer(b)?a="buffer":a||(a=d.defaultEncoding);"function"!==typeof c&&(c=Ze);if(d.ended)d=c,b=Error("write after end"),this.emit("error",b),Wb(d,b);else{var g=c,f=!0,h=!1;null===b?h=new TypeError("May not write null values to stream"):A.isBuffer(b)||"string"===typeof b||void 0===b||d.objectMode||(h=new TypeError("Invalid non-string/buffer chunk"));h&&(this.emit("error",h),Wb(g,h),f=!1);f&&(d.pendingcb++,
|
|
e=a,d.objectMode||!1===d.decodeStrings||"string"!==typeof b||(b=A.from(b,e)),A.isBuffer(b)&&(e="buffer"),g=d.objectMode?1:b.length,d.length+=g,a=d.length<d.highWaterMark,a||(d.needDrain=!0),d.writing||d.corked?(g=d.lastBufferedRequest,d.lastBufferedRequest=new $e(b,e,c),g?g.next=d.lastBufferedRequest:d.bufferedRequest=d.lastBufferedRequest,d.bufferedRequestCount+=1):ef(this,d,!1,g,b,e,c),e=a)}return e};Xe.prototype.cork=function(){this._writableState.corked++};
|
|
Xe.prototype.uncork=function(){var b=this._writableState;b.corked&&(b.corked--,b.writing||b.corked||b.finished||b.bufferProcessing||!b.bufferedRequest||bf(this,b))};Xe.prototype.setDefaultEncoding=function(b){"string"===typeof b&&(b=b.toLowerCase());if(!(-1<"hex utf8 utf-8 ascii binary base64 ucs2 ucs-2 utf16le utf-16le raw".split(" ").indexOf((b+"").toLowerCase())))throw new TypeError("Unknown encoding: "+b);this._writableState.defaultEncoding=b;return this};
|
|
function ef(b,a,c,d,e,g,f){a.writelen=d;a.writecb=f;a.writing=!0;a.sync=!0;c?b._writev(e,a.onwrite):b._write(e,g,a.onwrite);a.sync=!1}function cf(b,a,c,d){!c&&0===a.length&&a.needDrain&&(a.needDrain=!1,b.emit("drain"));a.pendingcb--;d();ff(b,a)}
|
|
function bf(b,a){a.bufferProcessing=!0;var c=a.bufferedRequest;if(b._writev&&c&&c.next){var d=Array(a.bufferedRequestCount),e=a.corkedRequestsFree;e.entry=c;for(var g=0;c;)d[g]=c,c=c.next,g+=1;ef(b,a,!0,a.length,d,"",e.finish);a.pendingcb++;a.lastBufferedRequest=null;e.next?(a.corkedRequestsFree=e.next,e.next=null):a.corkedRequestsFree=new df(a)}else{for(;c&&(d=c.chunk,ef(b,a,!1,a.objectMode?1:d.length,d,c.encoding,c.callback),c=c.next,!a.writing););null===c&&(a.lastBufferedRequest=null)}a.bufferedRequestCount=
|
|
0;a.bufferedRequest=c;a.bufferProcessing=!1}Xe.prototype._write=function(b,a,c){c(Error("not implemented"))};Xe.prototype._writev=null;Xe.prototype.end=function(b,a,c){var d=this._writableState;"function"===typeof b?(c=b,a=b=null):"function"===typeof a&&(c=a,a=null);null!==b&&void 0!==b&&this.write(b,a);d.corked&&(d.corked=1,this.uncork());if(!d.ending&&!d.finished){b=c;d.ending=!0;ff(this,d);if(b)if(d.finished)Wb(b);else this.once("finish",b);d.ended=!0;this.writable=!1}};
|
|
function af(b){return b.ending&&0===b.length&&null===b.bufferedRequest&&!b.finished&&!b.writing}function ff(b,a){var c=af(a);c&&(0===a.pendingcb?(a.prefinished||(a.prefinished=!0,b.emit("prefinish")),a.finished=!0,b.emit("finish")):a.prefinished||(a.prefinished=!0,b.emit("prefinish")));return c}
|
|
function df(b){var a=this;this.entry=this.next=null;this.finish=function(c){var d=a.entry;for(a.entry=null;d;){var e=d.callback;b.pendingcb--;e(c);d=d.next}b.corkedRequestsFree?b.corkedRequestsFree.next=a:b.corkedRequestsFree=a}}cc(Ie,N);for(var gf=Object.keys(Xe.prototype),hf=0;hf<gf.length;hf++){var jf=gf[hf];Ie.prototype[jf]||(Ie.prototype[jf]=Xe.prototype[jf])}
|
|
function Ie(b){if(!(this instanceof Ie))return new Ie(b);N.call(this,b);Xe.call(this,b);b&&!1===b.readable&&(this.readable=!1);b&&!1===b.writable&&(this.writable=!1);this.allowHalfOpen=!0;b&&!1===b.allowHalfOpen&&(this.allowHalfOpen=!1);this.once("end",kf)}function kf(){this.allowHalfOpen||this._writableState.ended||Wb(lf,this)}function lf(b){b.end()}cc(mf,Ie);
|
|
function nf(b){this.afterTransform=function(a,c){var d=b._transformState;d.transforming=!1;var e=d.writecb;e?(d.writechunk=null,d.writecb=null,null!==c&&void 0!==c&&b.push(c),e(a),a=b._readableState,a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&b._read(a.highWaterMark),a=void 0):a=b.emit("error",Error("no writecb in Transform class"));return a};this.transforming=this.needTransform=!1;this.writeencoding=this.writechunk=this.writecb=null}
|
|
function mf(b){if(!(this instanceof mf))return new mf(b);Ie.call(this,b);this._transformState=new nf(this);var a=this;this._readableState.needReadable=!0;this._readableState.sync=!1;b&&("function"===typeof b.transform&&(this._transform=b.transform),"function"===typeof b.flush&&(this._flush=b.flush));this.once("prefinish",function(){"function"===typeof this._flush?this._flush(function(b){of(a,b)}):of(a)})}
|
|
mf.prototype.push=function(b,a){this._transformState.needTransform=!1;return Ie.prototype.push.call(this,b,a)};mf.prototype._transform=function(){throw Error("Not implemented");};mf.prototype._write=function(b,a,c){var d=this._transformState;d.writecb=c;d.writechunk=b;d.writeencoding=a;d.transforming||(b=this._readableState,(d.needTransform||b.needReadable||b.length<b.highWaterMark)&&this._read(b.highWaterMark))};
|
|
mf.prototype._read=function(){var b=this._transformState;null!==b.writechunk&&b.writecb&&!b.transforming?(b.transforming=!0,this._transform(b.writechunk,b.writeencoding,b.afterTransform)):b.needTransform=!0};function of(b,a){if(a)return b.emit("error",a);a=b._transformState;if(b._writableState.length)throw Error("Calling transform done when ws.length != 0");if(a.transforming)throw Error("Calling transform done when still transforming");return b.push(null)}cc(pf,mf);
|
|
function pf(b){if(!(this instanceof pf))return new pf(b);mf.call(this,b)}pf.prototype._transform=function(b,a,c){c(null,b)};cc(qf,L);qf.Readable=N;qf.Writable=Xe;qf.Duplex=Ie;qf.Transform=mf;qf.PassThrough=pf;qf.Stream=qf;function qf(){L.call(this)}
|
|
qf.prototype.pipe=function(b,a){function c(a){b.writable&&!1===b.write(a)&&k.pause&&k.pause()}function d(){k.readable&&k.resume&&k.resume()}function e(){r||(r=!0,b.end())}function g(){r||(r=!0,"function"===typeof b.destroy&&b.destroy())}function f(a){h();if(0===L.listenerCount(this,"error"))throw a;}function h(){k.removeListener("data",c);b.removeListener("drain",d);k.removeListener("end",e);k.removeListener("close",g);k.removeListener("error",f);b.removeListener("error",f);k.removeListener("end",
|
|
h);k.removeListener("close",h);b.removeListener("close",h)}var k=this;k.on("data",c);b.on("drain",d);b._isStdio||a&&!1===a.end||(k.on("end",e),k.on("close",g));var r=!1;k.on("error",f);b.on("error",f);k.on("end",h);k.on("close",h);b.on("close",h);b.emit("pipe",k);return b};
|
|
var rf=Array.prototype.slice,tf={extend:function sf(b,a){for(var d in a)b[d]=a[d];return 3>arguments.length?b:sf.apply(null,[b].concat(rf.call(arguments,2)))}},uf=Ea(function(b,a){function c(a,b,c){void 0===c&&(c=function(a){return a});return function(){for(var e=[],f=0;f<arguments.length;f++)e[f]=arguments[f];return new Promise(function(f,g){a[b].bind(a).apply(void 0,d(e,[function(a,b){return a?g(a):f(c(b))}]))})}}var d=x&&x.__spreadArrays||function(){for(var a=0,b=0,c=arguments.length;b<c;b++)a+=
|
|
arguments[b].length;a=Array(a);var d=0;for(b=0;b<c;b++)for(var e=arguments[b],q=0,t=e.length;q<t;q++,d++)a[d]=e[q];return a};Object.defineProperty(a,"__esModule",{value:!0});var e=function(){function a(a,b){this.vol=a;this.fd=b}a.prototype.appendFile=function(a,b){return c(this.vol,"appendFile")(this.fd,a,b)};a.prototype.chmod=function(a){return c(this.vol,"fchmod")(this.fd,a)};a.prototype.chown=function(a,b){return c(this.vol,"fchown")(this.fd,a,b)};a.prototype.close=function(){return c(this.vol,
|
|
"close")(this.fd)};a.prototype.datasync=function(){return c(this.vol,"fdatasync")(this.fd)};a.prototype.read=function(a,b,d,e){return c(this.vol,"read",function(b){return{bytesRead:b,buffer:a}})(this.fd,a,b,d,e)};a.prototype.readFile=function(a){return c(this.vol,"readFile")(this.fd,a)};a.prototype.stat=function(a){return c(this.vol,"fstat")(this.fd,a)};a.prototype.sync=function(){return c(this.vol,"fsync")(this.fd)};a.prototype.truncate=function(a){return c(this.vol,"ftruncate")(this.fd,a)};a.prototype.utimes=
|
|
function(a,b){return c(this.vol,"futimes")(this.fd,a,b)};a.prototype.write=function(a,b,d,e){return c(this.vol,"write",function(b){return{bytesWritten:b,buffer:a}})(this.fd,a,b,d,e)};a.prototype.writeFile=function(a,b){return c(this.vol,"writeFile")(this.fd,a,b)};return a}();a.FileHandle=e;a.default=function(a){return"undefined"===typeof Promise?null:{FileHandle:e,access:function(b,d){return c(a,"access")(b,d)},appendFile:function(b,d,g){return c(a,"appendFile")(b instanceof e?b.fd:b,d,g)},chmod:function(b,
|
|
d){return c(a,"chmod")(b,d)},chown:function(b,d,e){return c(a,"chown")(b,d,e)},copyFile:function(b,d,e){return c(a,"copyFile")(b,d,e)},lchmod:function(b,d){return c(a,"lchmod")(b,d)},lchown:function(b,d,e){return c(a,"lchown")(b,d,e)},link:function(b,d){return c(a,"link")(b,d)},lstat:function(b,d){return c(a,"lstat")(b,d)},mkdir:function(b,d){return c(a,"mkdir")(b,d)},mkdtemp:function(b,d){return c(a,"mkdtemp")(b,d)},open:function(b,d,g){return c(a,"open",function(b){return new e(a,b)})(b,d,g)},readdir:function(b,
|
|
d){return c(a,"readdir")(b,d)},readFile:function(b,d){return c(a,"readFile")(b instanceof e?b.fd:b,d)},readlink:function(b,d){return c(a,"readlink")(b,d)},realpath:function(b,d){return c(a,"realpath")(b,d)},rename:function(b,d){return c(a,"rename")(b,d)},rmdir:function(b){return c(a,"rmdir")(b)},stat:function(b,d){return c(a,"stat")(b,d)},symlink:function(b,d,e){return c(a,"symlink")(b,d,e)},truncate:function(b,d){return c(a,"truncate")(b,d)},unlink:function(b){return c(a,"unlink")(b)},utimes:function(b,
|
|
d,e){return c(a,"utimes")(b,d,e)},writeFile:function(b,d,g){return c(a,"writeFile")(b instanceof e?b.fd:b,d,g)}}}});Da(uf);var vf=/[^\x20-\x7E]/,wf=/[\x2E\u3002\uFF0E\uFF61]/g,xf={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},yf=Math.floor,zf=String.fromCharCode;
|
|
function Af(b,a){var c=b.split("@"),d="";1<c.length&&(d=c[0]+"@",b=c[1]);b=b.replace(wf,".");b=b.split(".");c=b.length;for(var e=[];c--;)e[c]=a(b[c]);a=e.join(".");return d+a}function Bf(b,a){return b+22+75*(26>b)-((0!=a)<<5)}
|
|
function Cf(b){return Af(b,function(a){if(vf.test(a)){var b,d=[],e=[],g=0;for(b=a.length;g<b;){var f=a.charCodeAt(g++);if(55296<=f&&56319>=f&&g<b){var h=a.charCodeAt(g++);56320==(h&64512)?e.push(((f&1023)<<10)+(h&1023)+65536):(e.push(f),g--)}else e.push(f)}a=e;h=a.length;e=128;var k=0,r=72;for(f=0;f<h;++f){var q=a[f];128>q&&d.push(zf(q))}for((g=b=d.length)&&d.push("-");g<h;){var t=2147483647;for(f=0;f<h;++f)q=a[f],q>=e&&q<t&&(t=q);var v=g+1;if(t-e>yf((2147483647-k)/v))throw new RangeError(xf.overflow);
|
|
k+=(t-e)*v;e=t;for(f=0;f<h;++f){q=a[f];if(q<e&&2147483647<++k)throw new RangeError(xf.overflow);if(q==e){var l=k;for(t=36;;t+=36){q=t<=r?1:t>=r+26?26:t-r;if(l<q)break;var n=l-q;l=36-q;d.push(zf(Bf(q+n%l,0)));l=yf(n/l)}d.push(zf(Bf(l,0)));r=v;t=0;k=g==b?yf(k/700):k>>1;for(k+=yf(k/r);455<k;t+=36)k=yf(k/35);r=yf(t+36*k/(k+38));k=0;++g}}++k;++e}d="xn--"+d.join("")}else d=a;return d})}var Df=Array.isArray||function(b){return"[object Array]"===Object.prototype.toString.call(b)};
|
|
function Ef(b){switch(typeof b){case "string":return b;case "boolean":return b?"true":"false";case "number":return isFinite(b)?b:"";default:return""}}function Ff(b,a,c,d){a=a||"&";c=c||"=";null===b&&(b=void 0);return"object"===typeof b?Gf(Hf(b),function(d){var e=encodeURIComponent(Ef(d))+c;return Df(b[d])?Gf(b[d],function(a){return e+encodeURIComponent(Ef(a))}).join(a):e+encodeURIComponent(Ef(b[d]))}).join(a):d?encodeURIComponent(Ef(d))+c+encodeURIComponent(Ef(b)):""}
|
|
function Gf(b,a){if(b.map)return b.map(a);for(var c=[],d=0;d<b.length;d++)c.push(a(b[d],d));return c}var Hf=Object.keys||function(b){var a=[],c;for(c in b)Object.prototype.hasOwnProperty.call(b,c)&&a.push(c);return a};
|
|
function If(b,a,c,d){c=c||"=";var e={};if("string"!==typeof b||0===b.length)return e;var g=/\+/g;b=b.split(a||"&");a=1E3;d&&"number"===typeof d.maxKeys&&(a=d.maxKeys);d=b.length;0<a&&d>a&&(d=a);for(a=0;a<d;++a){var f=b[a].replace(g,"%20"),h=f.indexOf(c);if(0<=h){var k=f.substr(0,h);f=f.substr(h+1)}else k=f,f="";k=decodeURIComponent(k);f=decodeURIComponent(f);Object.prototype.hasOwnProperty.call(e,k)?Df(e[k])?e[k].push(f):e[k]=[e[k],f]:e[k]=f}return e}
|
|
var Of={parse:Jf,resolve:Kf,resolveObject:Lf,format:Mf,Url:Nf};function Nf(){this.href=this.path=this.pathname=this.query=this.search=this.hash=this.hostname=this.port=this.host=this.auth=this.slashes=this.protocol=null}
|
|
var Pf=/^([a-z0-9.+-]+:)/i,Qf=/:[0-9]*$/,Rf=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,Sf="{}|\\^`".split("").concat('<>"` \r\n\t'.split("")),Tf=["'"].concat(Sf),Uf=["%","/","?",";","#"].concat(Tf),Vf=["/","?","#"],Wf=255,Xf=/^[+a-z0-9A-Z_-]{0,63}$/,Yf=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Zf={javascript:!0,"javascript:":!0},$f={javascript:!0,"javascript:":!0},ag={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};
|
|
function Jf(b,a,c){if(b&&jc(b)&&b instanceof Nf)return b;var d=new Nf;d.parse(b,a,c);return d}Nf.prototype.parse=function(b,a,c){return bg(this,b,a,c)};
|
|
function bg(b,a,c,d){if(!hc(a))throw new TypeError("Parameter 'url' must be a string, not "+typeof a);var e=a.indexOf("?");e=-1!==e&&e<a.indexOf("#")?"?":"#";a=a.split(e);a[0]=a[0].replace(/\\/g,"/");a=a.join(e);e=a.trim();if(!d&&1===a.split("#").length&&(a=Rf.exec(e)))return b.path=e,b.href=e,b.pathname=a[1],a[2]?(b.search=a[2],b.query=c?If(b.search.substr(1)):b.search.substr(1)):c&&(b.search="",b.query={}),b;if(a=Pf.exec(e)){a=a[0];var g=a.toLowerCase();b.protocol=g;e=e.substr(a.length)}if(d||a||
|
|
e.match(/^\/\/[^@\/]+@[^@\/]+/)){var f="//"===e.substr(0,2);!f||a&&$f[a]||(e=e.substr(2),b.slashes=!0)}if(!$f[a]&&(f||a&&!ag[a])){a=-1;for(d=0;d<Vf.length;d++)f=e.indexOf(Vf[d]),-1!==f&&(-1===a||f<a)&&(a=f);f=-1===a?e.lastIndexOf("@"):e.lastIndexOf("@",a);-1!==f&&(d=e.slice(0,f),e=e.slice(f+1),b.auth=decodeURIComponent(d));a=-1;for(d=0;d<Uf.length;d++)f=e.indexOf(Uf[d]),-1!==f&&(-1===a||f<a)&&(a=f);-1===a&&(a=e.length);b.host=e.slice(0,a);e=e.slice(a);cg(b);b.hostname=b.hostname||"";f="["===b.hostname[0]&&
|
|
"]"===b.hostname[b.hostname.length-1];if(!f){var h=b.hostname.split(/\./);d=0;for(a=h.length;d<a;d++){var k=h[d];if(k&&!k.match(Xf)){for(var r="",q=0,t=k.length;q<t;q++)r=127<k.charCodeAt(q)?r+"x":r+k[q];if(!r.match(Xf)){a=h.slice(0,d);d=h.slice(d+1);if(k=k.match(Yf))a.push(k[1]),d.unshift(k[2]);d.length&&(e="/"+d.join(".")+e);b.hostname=a.join(".");break}}}}b.hostname=b.hostname.length>Wf?"":b.hostname.toLowerCase();f||(b.hostname=Cf(b.hostname));d=b.port?":"+b.port:"";b.host=(b.hostname||"")+d;
|
|
b.href+=b.host;f&&(b.hostname=b.hostname.substr(1,b.hostname.length-2),"/"!==e[0]&&(e="/"+e))}if(!Zf[g])for(d=0,a=Tf.length;d<a;d++)f=Tf[d],-1!==e.indexOf(f)&&(k=encodeURIComponent(f),k===f&&(k=escape(f)),e=e.split(f).join(k));d=e.indexOf("#");-1!==d&&(b.hash=e.substr(d),e=e.slice(0,d));d=e.indexOf("?");-1!==d?(b.search=e.substr(d),b.query=e.substr(d+1),c&&(b.query=If(b.query)),e=e.slice(0,d)):c&&(b.search="",b.query={});e&&(b.pathname=e);ag[g]&&b.hostname&&!b.pathname&&(b.pathname="/");if(b.pathname||
|
|
b.search)d=b.pathname||"",b.path=d+(b.search||"");b.href=dg(b);return b}function Mf(b){hc(b)&&(b=bg({},b));return dg(b)}
|
|
function dg(b){var a=b.auth||"";a&&(a=encodeURIComponent(a),a=a.replace(/%3A/i,":"),a+="@");var c=b.protocol||"",d=b.pathname||"",e=b.hash||"",g=!1,f="";b.host?g=a+b.host:b.hostname&&(g=a+(-1===b.hostname.indexOf(":")?b.hostname:"["+this.hostname+"]"),b.port&&(g+=":"+b.port));b.query&&jc(b.query)&&Object.keys(b.query).length&&(f=Ff(b.query));a=b.search||f&&"?"+f||"";c&&":"!==c.substr(-1)&&(c+=":");b.slashes||(!c||ag[c])&&!1!==g?(g="//"+(g||""),d&&"/"!==d.charAt(0)&&(d="/"+d)):g||(g="");e&&"#"!==e.charAt(0)&&
|
|
(e="#"+e);a&&"?"!==a.charAt(0)&&(a="?"+a);d=d.replace(/[?#]/g,function(a){return encodeURIComponent(a)});a=a.replace("#","%23");return c+g+d+a+e}Nf.prototype.format=function(){return dg(this)};function Kf(b,a){return Jf(b,!1,!0).resolve(a)}Nf.prototype.resolve=function(b){return this.resolveObject(Jf(b,!1,!0)).format()};function Lf(b,a){return b?Jf(b,!1,!0).resolveObject(a):a}
|
|
Nf.prototype.resolveObject=function(b){if(hc(b)){var a=new Nf;a.parse(b,!1,!0);b=a}a=new Nf;for(var c=Object.keys(this),d=0;d<c.length;d++){var e=c[d];a[e]=this[e]}a.hash=b.hash;if(""===b.href)return a.href=a.format(),a;if(b.slashes&&!b.protocol){c=Object.keys(b);for(d=0;d<c.length;d++)e=c[d],"protocol"!==e&&(a[e]=b[e]);ag[a.protocol]&&a.hostname&&!a.pathname&&(a.path=a.pathname="/");a.href=a.format();return a}var g;if(b.protocol&&b.protocol!==a.protocol){if(!ag[b.protocol]){c=Object.keys(b);for(d=
|
|
0;d<c.length;d++)e=c[d],a[e]=b[e];a.href=a.format();return a}a.protocol=b.protocol;if(b.host||$f[b.protocol])a.pathname=b.pathname;else{for(g=(b.pathname||"").split("/");g.length&&!(b.host=g.shift()););b.host||(b.host="");b.hostname||(b.hostname="");""!==g[0]&&g.unshift("");2>g.length&&g.unshift("");a.pathname=g.join("/")}a.search=b.search;a.query=b.query;a.host=b.host||"";a.auth=b.auth;a.hostname=b.hostname||b.host;a.port=b.port;if(a.pathname||a.search)a.path=(a.pathname||"")+(a.search||"");a.slashes=
|
|
a.slashes||b.slashes;a.href=a.format();return a}c=a.pathname&&"/"===a.pathname.charAt(0);var f=b.host||b.pathname&&"/"===b.pathname.charAt(0),h=c=f||c||a.host&&b.pathname;d=a.pathname&&a.pathname.split("/")||[];e=a.protocol&&!ag[a.protocol];g=b.pathname&&b.pathname.split("/")||[];e&&(a.hostname="",a.port=null,a.host&&(""===d[0]?d[0]=a.host:d.unshift(a.host)),a.host="",b.protocol&&(b.hostname=null,b.port=null,b.host&&(""===g[0]?g[0]=b.host:g.unshift(b.host)),b.host=null),c=c&&(""===g[0]||""===d[0]));
|
|
if(f)a.host=b.host||""===b.host?b.host:a.host,a.hostname=b.hostname||""===b.hostname?b.hostname:a.hostname,a.search=b.search,a.query=b.query,d=g;else if(g.length)d||(d=[]),d.pop(),d=d.concat(g),a.search=b.search,a.query=b.query;else if(null!=b.search){e&&(a.hostname=a.host=d.shift(),e=a.host&&0<a.host.indexOf("@")?a.host.split("@"):!1)&&(a.auth=e.shift(),a.host=a.hostname=e.shift());a.search=b.search;a.query=b.query;if(null!==a.pathname||null!==a.search)a.path=(a.pathname?a.pathname:"")+(a.search?
|
|
a.search:"");a.href=a.format();return a}if(!d.length)return a.pathname=null,a.path=a.search?"/"+a.search:null,a.href=a.format(),a;f=d.slice(-1)[0];g=(a.host||b.host||1<d.length)&&("."===f||".."===f)||""===f;for(var k=0,r=d.length;0<=r;r--)f=d[r],"."===f?d.splice(r,1):".."===f?(d.splice(r,1),k++):k&&(d.splice(r,1),k--);if(!c&&!h)for(;k--;k)d.unshift("..");!c||""===d[0]||d[0]&&"/"===d[0].charAt(0)||d.unshift("");g&&"/"!==d.join("/").substr(-1)&&d.push("");h=""===d[0]||d[0]&&"/"===d[0].charAt(0);e&&
|
|
(a.hostname=a.host=h?"":d.length?d.shift():"",e=a.host&&0<a.host.indexOf("@")?a.host.split("@"):!1)&&(a.auth=e.shift(),a.host=a.hostname=e.shift());(c||a.host&&d.length)&&!h&&d.unshift("");d.length?a.pathname=d.join("/"):(a.pathname=null,a.path=null);if(null!==a.pathname||null!==a.search)a.path=(a.pathname?a.pathname:"")+(a.search?a.search:"");a.auth=b.auth||a.auth;a.slashes=a.slashes||b.slashes;a.href=a.format();return a};Nf.prototype.parseHost=function(){return cg(this)};
|
|
function cg(b){var a=b.host,c=Qf.exec(a);c&&(c=c[0],":"!==c&&(b.port=c.substr(1)),a=a.substr(0,a.length-c.length));a&&(b.hostname=a)}
|
|
var eg=Ea(function(b,a){function c(a,b){a=a[b];return 0<b&&("/"===a||e&&"\\"===a)}function d(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:!0;if(e){var d=a;if("string"!==typeof d)throw new TypeError("expected a string");d=d.replace(/[\\\/]+/g,"/");if(!1!==b)if(b=d,d=b.length-1,2>d)d=b;else{for(;c(b,d);)d--;d=b.substr(0,d+1)}return d.replace(/^([a-zA-Z]+:|\.\/)/,"")}return a}Object.defineProperty(a,"__esModule",{value:!0});a.unixify=d;a.correctPath=function(a){return d(a.replace(/^\\\\\?\\.:\\/,
|
|
"\\"))};var e="win32"===bc.platform});Da(eg);
|
|
var fg=Ea(function(b,a){function c(a,b){void 0===b&&(b=ge.default.cwd());return Fa(b,a)}function d(a,b){return"function"===typeof a?[e(),a]:[e(a),t(b)]}function e(a){void 0===a&&(a={});return ja({},Sb,a)}function g(a){return"number"===typeof a?ja({},Qc,{mode:a}):ja({},Qc,a)}function f(a,b,c,d){void 0===b&&(b="");void 0===c&&(c="");void 0===d&&(d="");var e="";c&&(e=" '"+c+"'");d&&(e+=" -> '"+d+"'");switch(a){case "ENOENT":return"ENOENT: no such file or directory, "+b+e;case "EBADF":return"EBADF: bad file descriptor, "+
|
|
b+e;case "EINVAL":return"EINVAL: invalid argument, "+b+e;case "EPERM":return"EPERM: operation not permitted, "+b+e;case "EPROTO":return"EPROTO: protocol error, "+b+e;case "EEXIST":return"EEXIST: file already exists, "+b+e;case "ENOTDIR":return"ENOTDIR: not a directory, "+b+e;case "EISDIR":return"EISDIR: illegal operation on a directory, "+b+e;case "EACCES":return"EACCES: permission denied, "+b+e;case "ENOTEMPTY":return"ENOTEMPTY: directory not empty, "+b+e;case "EMFILE":return"EMFILE: too many open files, "+
|
|
b+e;case "ENOSYS":return"ENOSYS: function not implemented, "+b+e;default:return a+": error occurred, "+b+e}}function h(a,b,c,d,e){void 0===b&&(b="");void 0===c&&(c="");void 0===d&&(d="");void 0===e&&(e=Error);b=new e(f(a,b,c,d));b.code=a;return b}function k(a){if("number"===typeof a)return a;if("string"===typeof a){var b=Ia[a];if("undefined"!==typeof b)return b}throw new Ud.TypeError("ERR_INVALID_OPT_VALUE","flags",a);}function r(a,b){if(b){var c=typeof b;switch(c){case "string":a=ja({},a,{encoding:b});
|
|
break;case "object":a=ja({},a,b);break;default:throw TypeError("Expected options to be either an object or a string, but got "+c+" instead");}}else return a;"buffer"!==a.encoding&&Vd.assertEncoding(a.encoding);return a}function q(a){return function(b){return r(a,b)}}function t(a){if("function"!==typeof a)throw TypeError(za.CB);return a}function v(a){return function(b,c){return"function"===typeof b?[a(),b]:[a(b),t(c)]}}function l(a){if("string"!==typeof a&&!E.Buffer.isBuffer(a)){try{if(!(a instanceof
|
|
Of.URL))throw new TypeError(za.PATH_STR);}catch(hb){throw new TypeError(za.PATH_STR);}if(""!==a.hostname)throw new Ud.TypeError("ERR_INVALID_FILE_URL_HOST",ge.default.platform);a=a.pathname;for(var b=0;b<a.length;b++)if("%"===a[b]){var c=a.codePointAt(b+2)|32;if("2"===a[b+1]&&102===c)throw new Ud.TypeError("ERR_INVALID_FILE_URL_PATH","must not include encoded / characters");}a=decodeURIComponent(a)}a=String(a);X(a);return a}function n(a,b){return(a=c(a,b).substr(1))?a.split(ia):[]}function y(a){return n(l(a))}
|
|
function B(a,b){void 0===b&&(b=Vd.ENCODING_UTF8);return E.Buffer.isBuffer(a)?a:a instanceof Uint8Array?E.bufferFrom(a):E.bufferFrom(String(a),b)}function O(a,b){return b&&"buffer"!==b?a.toString(b):a}function X(a,b){if(-1!==(""+a).indexOf("\x00")){a=Error("Path must be a string without null bytes");a.code="ENOENT";if("function"!==typeof b)throw a;ge.default.nextTick(b,a);return!1}return!0}function M(a,b){a="number"===typeof a?a:"string"===typeof a?parseInt(a,8):b?M(b):void 0;if("number"!==typeof a||
|
|
isNaN(a))throw new TypeError(za.MODE_INT);return a}function ha(a){if(a>>>0!==a)throw TypeError(za.FD);}function R(a){if("string"===typeof a&&+a==a)return+a;if(a instanceof Date)return a.getTime()/1E3;if(isFinite(a))return 0>a?Date.now()/1E3:a;throw Error("Cannot parse time: "+a);}function C(a){if("number"!==typeof a)throw TypeError(za.UID);}function H(a){if("number"!==typeof a)throw TypeError(za.GID);}function qa(a){a.emit("stop")}function V(a,b,c){if(!(this instanceof V))return new V(a,b,c);this._vol=
|
|
a;c=ja({},r(c,{}));void 0===c.highWaterMark&&(c.highWaterMark=65536);qf.Readable.call(this,c);this.path=l(b);this.fd=void 0===c.fd?null:c.fd;this.flags=void 0===c.flags?"r":c.flags;this.mode=void 0===c.mode?438:c.mode;this.start=c.start;this.end=c.end;this.autoClose=void 0===c.autoClose?!0:c.autoClose;this.pos=void 0;this.bytesRead=0;if(void 0!==this.start){if("number"!==typeof this.start)throw new TypeError('"start" option must be a Number');if(void 0===this.end)this.end=Infinity;else if("number"!==
|
|
typeof this.end)throw new TypeError('"end" option must be a Number');if(this.start>this.end)throw Error('"start" option must be <= "end" option');this.pos=this.start}"number"!==typeof this.fd&&this.open();this.on("end",function(){this.autoClose&&this.destroy&&this.destroy()})}function ra(){this.close()}function I(a,b,c){if(!(this instanceof I))return new I(a,b,c);this._vol=a;c=ja({},r(c,{}));qf.Writable.call(this,c);this.path=l(b);this.fd=void 0===c.fd?null:c.fd;this.flags=void 0===c.flags?"w":c.flags;
|
|
this.mode=void 0===c.mode?438:c.mode;this.start=c.start;this.autoClose=void 0===c.autoClose?!0:!!c.autoClose;this.pos=void 0;this.bytesWritten=0;if(void 0!==this.start){if("number"!==typeof this.start)throw new TypeError('"start" option must be a Number');if(0>this.start)throw Error('"start" must be >= zero');this.pos=this.start}c.encoding&&this.setDefaultEncoding(c.encoding);"number"!==typeof this.fd&&this.open();this.once("finish",function(){this.autoClose&&this.close()})}var sa=x&&x.__extends||
|
|
function(){function a(b,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return a(b,c)}return function(b,c){function d(){this.constructor=b}a(b,c);b.prototype=null===c?Object.create(c):(d.prototype=c.prototype,new d)}}(),ta=x&&x.__spreadArrays||function(){for(var a=0,b=0,c=arguments.length;b<c;b++)a+=arguments[b].length;a=Array(a);var d=0;for(b=0;b<c;b++)for(var e=arguments[b],f=0,g=e.length;f<
|
|
g;f++,d++)a[d]=e[f];return a};Object.defineProperty(a,"__esModule",{value:!0});var ja=tf.extend,Fa=ee.resolve,Sa=z.constants.O_RDONLY,xa=z.constants.O_WRONLY,ma=z.constants.O_RDWR,P=z.constants.O_CREAT,ya=z.constants.O_EXCL,ua=z.constants.O_TRUNC,J=z.constants.O_APPEND,G=z.constants.O_SYNC,da=z.constants.O_DIRECTORY,Hb=z.constants.F_OK,Ed=z.constants.COPYFILE_EXCL,Fd=z.constants.COPYFILE_FICLONE_FORCE,ia=ee.sep,qb=ee.relative,p="win32"===ge.default.platform,za={PATH_STR:"path must be a string or Buffer",
|
|
FD:"fd must be a file descriptor",MODE_INT:"mode must be an int",CB:"callback must be a function",UID:"uid must be an unsigned int",GID:"gid must be an unsigned int",LEN:"len must be an integer",ATIME:"atime must be an integer",MTIME:"mtime must be an integer",PREFIX:"filename prefix is required",BUFFER:"buffer must be an instance of Buffer or StaticBuffer",OFFSET:"offset must be an integer",LENGTH:"length must be an integer",POSITION:"position must be an integer"},Ia;(function(a){a[a.r=Sa]="r";a[a["r+"]=
|
|
ma]="r+";a[a.rs=Sa|G]="rs";a[a.sr=a.rs]="sr";a[a["rs+"]=ma|G]="rs+";a[a["sr+"]=a["rs+"]]="sr+";a[a.w=xa|P|ua]="w";a[a.wx=xa|P|ua|ya]="wx";a[a.xw=a.wx]="xw";a[a["w+"]=ma|P|ua]="w+";a[a["wx+"]=ma|P|ua|ya]="wx+";a[a["xw+"]=a["wx+"]]="xw+";a[a.a=xa|J|P]="a";a[a.ax=xa|J|P|ya]="ax";a[a.xa=a.ax]="xa";a[a["a+"]=ma|J|P]="a+";a[a["ax+"]=ma|J|P|ya]="ax+";a[a["xa+"]=a["ax+"]]="xa+"})(Ia=a.FLAGS||(a.FLAGS={}));a.flagsToNumber=k;b={encoding:"utf8"};var u=q(b),Dc=v(u),Ga=q({flag:"r"}),dc={encoding:"utf8",mode:438,
|
|
flag:Ia[Ia.w]},Bc=q(dc),ec={encoding:"utf8",mode:438,flag:Ia[Ia.a]},Ac=q(ec),Gd=v(Ac),Cc=q(b),Hd=v(Cc),Qc={mode:511,recursive:!1},qc={recursive:!1},rc=q({encoding:"utf8",withFileTypes:!1}),ne=v(rc),Sb={bigint:!1};a.pathToFilename=l;if(p){var Rc=c,Ub=eg.unixify;c=function(a,b){return Ub(Rc(a,b))}}a.filenameToSteps=n;a.pathToSteps=y;a.dataToStr=function(a,b){void 0===b&&(b=Vd.ENCODING_UTF8);return E.Buffer.isBuffer(a)?a.toString(b):a instanceof Uint8Array?E.bufferFrom(a).toString(b):String(a)};a.dataToBuffer=
|
|
B;a.bufferToEncoding=O;a.toUnixTimestamp=R;b=function(){function a(a){void 0===a&&(a={});this.ino=0;this.inodes={};this.releasedInos=[];this.fds={};this.releasedFds=[];this.maxFiles=1E4;this.openFiles=0;this.promisesApi=uf.default(this);this.statWatchers={};this.props=ja({Node:me.Node,Link:me.Link,File:me.File},a);a=this.createLink();a.setNode(this.createNode(!0));var b=this;this.StatWatcher=function(a){function c(){return a.call(this,b)||this}sa(c,a);return c}(sc);this.ReadStream=function(a){function c(){for(var c=
|
|
[],d=0;d<arguments.length;d++)c[d]=arguments[d];return a.apply(this,ta([b],c))||this}sa(c,a);return c}(V);this.WriteStream=function(a){function c(){for(var c=[],d=0;d<arguments.length;d++)c[d]=arguments[d];return a.apply(this,ta([b],c))||this}sa(c,a);return c}(I);this.FSWatcher=function(a){function c(){return a.call(this,b)||this}sa(c,a);return c}(tc);this.root=a}a.fromJSON=function(b,c){var d=new a;d.fromJSON(b,c);return d};Object.defineProperty(a.prototype,"promises",{get:function(){if(null===this.promisesApi)throw Error("Promise is not supported in this environment.");
|
|
return this.promisesApi},enumerable:!0,configurable:!0});a.prototype.createLink=function(a,b,c,d){void 0===c&&(c=!1);if(!a)return new this.props.Link(this,null,"");if(!b)throw Error("createLink: name cannot be empty");return a.createChild(b,this.createNode(c,d))};a.prototype.deleteLink=function(a){var b=a.parent;return b?(b.deleteChild(a),!0):!1};a.prototype.newInoNumber=function(){var a=this.releasedInos.pop();return a?a:this.ino=(this.ino+1)%4294967295};a.prototype.newFdNumber=function(){var b=
|
|
this.releasedFds.pop();return"number"===typeof b?b:a.fd--};a.prototype.createNode=function(a,b){void 0===a&&(a=!1);b=new this.props.Node(this.newInoNumber(),b);a&&b.setIsDirectory();return this.inodes[b.ino]=b};a.prototype.getNode=function(a){return this.inodes[a]};a.prototype.deleteNode=function(a){a.del();delete this.inodes[a.ino];this.releasedInos.push(a.ino)};a.prototype.genRndStr=function(){var a=(Math.random()+1).toString(36).substr(2,6);return 6===a.length?a:this.genRndStr()};a.prototype.getLink=
|
|
function(a){return this.root.walk(a)};a.prototype.getLinkOrThrow=function(a,b){var c=n(a);c=this.getLink(c);if(!c)throw h("ENOENT",b,a);return c};a.prototype.getResolvedLink=function(a){a="string"===typeof a?n(a):a;for(var b=this.root,c=0;c<a.length;){b=b.getChild(a[c]);if(!b)return null;var d=b.getNode();d.isSymlink()?(a=d.symlink.concat(a.slice(c+1)),b=this.root,c=0):c++}return b};a.prototype.getResolvedLinkOrThrow=function(a,b){var c=this.getResolvedLink(a);if(!c)throw h("ENOENT",b,a);return c};
|
|
a.prototype.resolveSymlinks=function(a){return this.getResolvedLink(a.steps.slice(1))};a.prototype.getLinkAsDirOrThrow=function(a,b){var c=this.getLinkOrThrow(a,b);if(!c.getNode().isDirectory())throw h("ENOTDIR",b,a);return c};a.prototype.getLinkParent=function(a){return this.root.walk(a,a.length-1)};a.prototype.getLinkParentAsDirOrThrow=function(a,b){a=a instanceof Array?a:n(a);var c=this.getLinkParent(a);if(!c)throw h("ENOENT",b,ia+a.join(ia));if(!c.getNode().isDirectory())throw h("ENOTDIR",b,ia+
|
|
a.join(ia));return c};a.prototype.getFileByFd=function(a){return this.fds[String(a)]};a.prototype.getFileByFdOrThrow=function(a,b){if(a>>>0!==a)throw TypeError(za.FD);a=this.getFileByFd(a);if(!a)throw h("EBADF",b);return a};a.prototype.getNodeByIdOrCreate=function(a,b,c){if("number"===typeof a){a=this.getFileByFd(a);if(!a)throw Error("File nto found");return a.node}var d=y(a),e=this.getLink(d);if(e)return e.getNode();if(b&P&&(b=this.getLinkParent(d)))return e=this.createLink(b,d[d.length-1],!1,c),
|
|
e.getNode();throw h("ENOENT","getNodeByIdOrCreate",l(a));};a.prototype.wrapAsync=function(a,b,c){var d=this;t(c);fe.default(function(){try{c(null,a.apply(d,b))}catch(Ya){c(Ya)}})};a.prototype._toJSON=function(a,b,c){var d;void 0===a&&(a=this.root);void 0===b&&(b={});var e=!0,f=a.children;a.getNode().isFile()&&(f=(d={},d[a.getName()]=a.parent.getChild(a.getName()),d),a=a.parent);for(var g in f){e=!1;f=a.getChild(g);if(!f)throw Error("_toJSON: unexpected undefined");d=f.getNode();d.isFile()?(f=f.getPath(),
|
|
c&&(f=qb(c,f)),b[f]=d.getString()):d.isDirectory()&&this._toJSON(f,b,c)}a=a.getPath();c&&(a=qb(c,a));a&&e&&(b[a]=null);return b};a.prototype.toJSON=function(a,b,c){void 0===b&&(b={});void 0===c&&(c=!1);var d=[];if(a){a instanceof Array||(a=[a]);for(var e=0;e<a.length;e++){var f=l(a[e]);(f=this.getResolvedLink(f))&&d.push(f)}}else d.push(this.root);if(!d.length)return b;for(e=0;e<d.length;e++)f=d[e],this._toJSON(f,b,c?f.getPath():"");return b};a.prototype.fromJSON=function(a,b){void 0===b&&(b=ge.default.cwd());
|
|
for(var d in a){var e=a[d];if("string"===typeof e){d=c(d,b);var f=n(d);1<f.length&&(f=ia+f.slice(0,f.length-1).join(ia),this.mkdirpBase(f,511));this.writeFileSync(d,e)}else this.mkdirpBase(d,511)}};a.prototype.reset=function(){this.ino=0;this.inodes={};this.releasedInos=[];this.fds={};this.releasedFds=[];this.openFiles=0;this.root=this.createLink();this.root.setNode(this.createNode(!0))};a.prototype.mountSync=function(a,b){this.fromJSON(b,a)};a.prototype.openLink=function(a,b,c){void 0===c&&(c=!0);
|
|
if(this.openFiles>=this.maxFiles)throw h("EMFILE","open",a.getPath());var d=a;c&&(d=this.resolveSymlinks(a));if(!d)throw h("ENOENT","open",a.getPath());c=d.getNode();if(c.isDirectory()){if((b&(Sa|ma|xa))!==Sa)throw h("EISDIR","open",a.getPath());}else if(b&da)throw h("ENOTDIR","open",a.getPath());if(!(b&xa||c.canRead()))throw h("EACCES","open",a.getPath());a=new this.props.File(a,c,b,this.newFdNumber());this.fds[a.fd]=a;this.openFiles++;b&ua&&a.truncate();return a};a.prototype.openFile=function(a,
|
|
b,c,d){void 0===d&&(d=!0);var e=n(a),f=d?this.getResolvedLink(e):this.getLink(e);if(!f&&b&P){var g=this.getResolvedLink(e.slice(0,e.length-1));if(!g)throw h("ENOENT","open",ia+e.join(ia));b&P&&"number"===typeof c&&(f=this.createLink(g,e[e.length-1],!1,c))}if(f)return this.openLink(f,b,d);throw h("ENOENT","open",a);};a.prototype.openBase=function(a,b,c,d){void 0===d&&(d=!0);b=this.openFile(a,b,c,d);if(!b)throw h("ENOENT","open",a);return b.fd};a.prototype.openSync=function(a,b,c){void 0===c&&(c=438);
|
|
c=M(c);a=l(a);b=k(b);return this.openBase(a,b,c)};a.prototype.open=function(a,b,c,d){var e=c;"function"===typeof c&&(e=438,d=c);c=M(e||438);a=l(a);b=k(b);this.wrapAsync(this.openBase,[a,b,c],d)};a.prototype.closeFile=function(a){this.fds[a.fd]&&(this.openFiles--,delete this.fds[a.fd],this.releasedFds.push(a.fd))};a.prototype.closeSync=function(a){ha(a);a=this.getFileByFdOrThrow(a,"close");this.closeFile(a)};a.prototype.close=function(a,b){ha(a);this.wrapAsync(this.closeSync,[a],b)};a.prototype.openFileOrGetById=
|
|
function(a,b,c){if("number"===typeof a){a=this.fds[a];if(!a)throw h("ENOENT");return a}return this.openFile(l(a),b,c)};a.prototype.readBase=function(a,b,c,d,e){return this.getFileByFdOrThrow(a).read(b,Number(c),Number(d),e)};a.prototype.readSync=function(a,b,c,d,e){ha(a);return this.readBase(a,b,c,d,e)};a.prototype.read=function(a,b,c,d,e,f){var g=this;t(f);if(0===d)return ge.default.nextTick(function(){f&&f(null,0,b)});fe.default(function(){try{var h=g.readBase(a,b,c,d,e);f(null,h,b)}catch(Tc){f(Tc)}})};
|
|
a.prototype.readFileBase=function(a,b,c){var d="number"===typeof a&&a>>>0===a;if(!d){var e=l(a);e=n(e);if((e=this.getResolvedLink(e))&&e.getNode().isDirectory())throw h("EISDIR","open",e.getPath());a=this.openSync(a,b)}try{var f=O(this.getFileByFdOrThrow(a).getBuffer(),c)}finally{d||this.closeSync(a)}return f};a.prototype.readFileSync=function(a,b){b=Ga(b);var c=k(b.flag);return this.readFileBase(a,c,b.encoding)};a.prototype.readFile=function(a,b,c){c=v(Ga)(b,c);b=c[0];c=c[1];var d=k(b.flag);this.wrapAsync(this.readFileBase,
|
|
[a,d,b.encoding],c)};a.prototype.writeBase=function(a,b,c,d,e){return this.getFileByFdOrThrow(a,"write").write(b,c,d,e)};a.prototype.writeSync=function(a,b,c,d,e){ha(a);var f="string"!==typeof b;if(f){var g=(c||0)|0,h=d;c=e}else var k=d;b=B(b,k);f?"undefined"===typeof h&&(h=b.length):(g=0,h=b.length);return this.writeBase(a,b,g,h,c)};a.prototype.write=function(a,b,c,d,e,f){var g=this;ha(a);var h=typeof b,k=typeof c,l=typeof d,p=typeof e;if("string"!==h)if("function"===k)var n=c;else if("function"===
|
|
l){var q=c|0;n=d}else if("function"===p){q=c|0;var gb=d;n=e}else{q=c|0;gb=d;var Xa=e;n=f}else if("function"===k)n=c;else if("function"===l)Xa=c,n=d;else if("function"===p){Xa=c;var r=d;n=e}var hb=B(b,r);"string"!==h?"undefined"===typeof gb&&(gb=hb.length):(q=0,gb=hb.length);var C=t(n);fe.default(function(){try{var c=g.writeBase(a,hb,q,gb,Xa);"string"!==h?C(null,c,hb):C(null,c,b)}catch(oe){C(oe)}})};a.prototype.writeFileBase=function(a,b,c,d){var e="number"===typeof a;a=e?a:this.openBase(l(a),c,d);
|
|
d=0;var f=b.length;c=c&J?void 0:0;try{for(;0<f;){var g=this.writeSync(a,b,d,f,c);d+=g;f-=g;void 0!==c&&(c+=g)}}finally{e||this.closeSync(a)}};a.prototype.writeFileSync=function(a,b,c){var d=Bc(c);c=k(d.flag);var e=M(d.mode);b=B(b,d.encoding);this.writeFileBase(a,b,c,e)};a.prototype.writeFile=function(a,b,c,d){var e=c;"function"===typeof c&&(e=dc,d=c);c=t(d);var f=Bc(e);e=k(f.flag);d=M(f.mode);b=B(b,f.encoding);this.wrapAsync(this.writeFileBase,[a,b,e,d],c)};a.prototype.linkBase=function(a,b){var c=
|
|
n(a),d=this.getLink(c);if(!d)throw h("ENOENT","link",a,b);var e=n(b);c=this.getLinkParent(e);if(!c)throw h("ENOENT","link",a,b);e=e[e.length-1];if(c.getChild(e))throw h("EEXIST","link",a,b);a=d.getNode();a.nlink++;c.createChild(e,a)};a.prototype.copyFileBase=function(a,b,c){var d=this.readFileSync(a);if(c&Ed&&this.existsSync(b))throw h("EEXIST","copyFile",a,b);if(c&Fd)throw h("ENOSYS","copyFile",a,b);this.writeFileBase(b,d,Ia.w,438)};a.prototype.copyFileSync=function(a,b,c){a=l(a);b=l(b);return this.copyFileBase(a,
|
|
b,(c||0)|0)};a.prototype.copyFile=function(a,b,c,d){a=l(a);b=l(b);if("function"===typeof c)var e=0;else e=c,c=d;t(c);this.wrapAsync(this.copyFileBase,[a,b,e],c)};a.prototype.linkSync=function(a,b){a=l(a);b=l(b);this.linkBase(a,b)};a.prototype.link=function(a,b,c){a=l(a);b=l(b);this.wrapAsync(this.linkBase,[a,b],c)};a.prototype.unlinkBase=function(a){var b=n(a);b=this.getLink(b);if(!b)throw h("ENOENT","unlink",a);if(b.length)throw Error("Dir not empty...");this.deleteLink(b);a=b.getNode();a.nlink--;
|
|
0>=a.nlink&&this.deleteNode(a)};a.prototype.unlinkSync=function(a){a=l(a);this.unlinkBase(a)};a.prototype.unlink=function(a,b){a=l(a);this.wrapAsync(this.unlinkBase,[a],b)};a.prototype.symlinkBase=function(a,b){var c=n(b),d=this.getLinkParent(c);if(!d)throw h("ENOENT","symlink",a,b);c=c[c.length-1];if(d.getChild(c))throw h("EEXIST","symlink",a,b);b=d.createChild(c);b.getNode().makeSymlink(n(a));return b};a.prototype.symlinkSync=function(a,b){a=l(a);b=l(b);this.symlinkBase(a,b)};a.prototype.symlink=
|
|
function(a,b,c,d){c=t("function"===typeof c?c:d);a=l(a);b=l(b);this.wrapAsync(this.symlinkBase,[a,b],c)};a.prototype.realpathBase=function(a,b){var c=n(a);c=this.getResolvedLink(c);if(!c)throw h("ENOENT","realpath",a);return Vd.strToEncoding(c.getPath(),b)};a.prototype.realpathSync=function(a,b){return this.realpathBase(l(a),Cc(b).encoding)};a.prototype.realpath=function(a,b,c){c=Hd(b,c);b=c[0];c=c[1];a=l(a);this.wrapAsync(this.realpathBase,[a,b.encoding],c)};a.prototype.lstatBase=function(a,b){void 0===
|
|
b&&(b=!1);var c=this.getLink(n(a));if(!c)throw h("ENOENT","lstat",a);return Ka.default.build(c.getNode(),b)};a.prototype.lstatSync=function(a,b){return this.lstatBase(l(a),e(b).bigint)};a.prototype.lstat=function(a,b,c){c=d(b,c);b=c[0];c=c[1];this.wrapAsync(this.lstatBase,[l(a),b.bigint],c)};a.prototype.statBase=function(a,b){void 0===b&&(b=!1);var c=this.getResolvedLink(n(a));if(!c)throw h("ENOENT","stat",a);return Ka.default.build(c.getNode(),b)};a.prototype.statSync=function(a,b){return this.statBase(l(a),
|
|
e(b).bigint)};a.prototype.stat=function(a,b,c){c=d(b,c);b=c[0];c=c[1];this.wrapAsync(this.statBase,[l(a),b.bigint],c)};a.prototype.fstatBase=function(a,b){void 0===b&&(b=!1);a=this.getFileByFd(a);if(!a)throw h("EBADF","fstat");return Ka.default.build(a.node,b)};a.prototype.fstatSync=function(a,b){return this.fstatBase(a,e(b).bigint)};a.prototype.fstat=function(a,b,c){b=d(b,c);this.wrapAsync(this.fstatBase,[a,b[0].bigint],b[1])};a.prototype.renameBase=function(a,b){var c=this.getLink(n(a));if(!c)throw h("ENOENT",
|
|
"rename",a,b);var d=n(b),e=this.getLinkParent(d);if(!e)throw h("ENOENT","rename",a,b);(a=c.parent)&&a.deleteChild(c);c.steps=ta(e.steps,[d[d.length-1]]);e.setChild(c.getName(),c)};a.prototype.renameSync=function(a,b){a=l(a);b=l(b);this.renameBase(a,b)};a.prototype.rename=function(a,b,c){a=l(a);b=l(b);this.wrapAsync(this.renameBase,[a,b],c)};a.prototype.existsBase=function(a){return!!this.statBase(a)};a.prototype.existsSync=function(a){try{return this.existsBase(l(a))}catch(Xa){return!1}};a.prototype.exists=
|
|
function(a,b){var c=this,d=l(a);if("function"!==typeof b)throw Error(za.CB);fe.default(function(){try{b(c.existsBase(d))}catch(Ya){b(!1)}})};a.prototype.accessBase=function(a){this.getLinkOrThrow(a,"access")};a.prototype.accessSync=function(a,b){void 0===b&&(b=Hb);a=l(a);this.accessBase(a,b|0)};a.prototype.access=function(a,b,c){var d=Hb;"function"!==typeof b&&(d=b|0,b=t(c));a=l(a);this.wrapAsync(this.accessBase,[a,d],b)};a.prototype.appendFileSync=function(a,b,c){void 0===c&&(c=ec);c=Ac(c);c.flag&&
|
|
a>>>0!==a||(c.flag="a");this.writeFileSync(a,b,c)};a.prototype.appendFile=function(a,b,c,d){d=Gd(c,d);c=d[0];d=d[1];c.flag&&a>>>0!==a||(c.flag="a");this.writeFile(a,b,c,d)};a.prototype.readdirBase=function(a,b){var c=n(a);c=this.getResolvedLink(c);if(!c)throw h("ENOENT","readdir",a);if(!c.getNode().isDirectory())throw h("ENOTDIR","scandir",a);if(b.withFileTypes){var d=[];for(e in c.children)(a=c.getChild(e))&&d.push(Wd.default.build(a,b.encoding));p||"buffer"===b.encoding||d.sort(function(a,b){return a.name<
|
|
b.name?-1:a.name>b.name?1:0});return d}var e=[];for(d in c.children)e.push(Vd.strToEncoding(d,b.encoding));p||"buffer"===b.encoding||e.sort();return e};a.prototype.readdirSync=function(a,b){b=rc(b);a=l(a);return this.readdirBase(a,b)};a.prototype.readdir=function(a,b,c){c=ne(b,c);b=c[0];c=c[1];a=l(a);this.wrapAsync(this.readdirBase,[a,b],c)};a.prototype.readlinkBase=function(a,b){var c=this.getLinkOrThrow(a,"readlink").getNode();if(!c.isSymlink())throw h("EINVAL","readlink",a);a=ia+c.symlink.join(ia);
|
|
return Vd.strToEncoding(a,b)};a.prototype.readlinkSync=function(a,b){b=u(b);a=l(a);return this.readlinkBase(a,b.encoding)};a.prototype.readlink=function(a,b,c){c=Dc(b,c);b=c[0];c=c[1];a=l(a);this.wrapAsync(this.readlinkBase,[a,b.encoding],c)};a.prototype.fsyncBase=function(a){this.getFileByFdOrThrow(a,"fsync")};a.prototype.fsyncSync=function(a){this.fsyncBase(a)};a.prototype.fsync=function(a,b){this.wrapAsync(this.fsyncBase,[a],b)};a.prototype.fdatasyncBase=function(a){this.getFileByFdOrThrow(a,"fdatasync")};
|
|
a.prototype.fdatasyncSync=function(a){this.fdatasyncBase(a)};a.prototype.fdatasync=function(a,b){this.wrapAsync(this.fdatasyncBase,[a],b)};a.prototype.ftruncateBase=function(a,b){this.getFileByFdOrThrow(a,"ftruncate").truncate(b)};a.prototype.ftruncateSync=function(a,b){this.ftruncateBase(a,b)};a.prototype.ftruncate=function(a,b,c){var d="number"===typeof b?b:0;b=t("number"===typeof b?c:b);this.wrapAsync(this.ftruncateBase,[a,d],b)};a.prototype.truncateBase=function(a,b){a=this.openSync(a,"r+");try{this.ftruncateSync(a,
|
|
b)}finally{this.closeSync(a)}};a.prototype.truncateSync=function(a,b){if(a>>>0===a)return this.ftruncateSync(a,b);this.truncateBase(a,b)};a.prototype.truncate=function(a,b,c){var d="number"===typeof b?b:0;b=t("number"===typeof b?c:b);if(a>>>0===a)return this.ftruncate(a,d,b);this.wrapAsync(this.truncateBase,[a,d],b)};a.prototype.futimesBase=function(a,b,c){a=this.getFileByFdOrThrow(a,"futimes").node;a.atime=new Date(1E3*b);a.mtime=new Date(1E3*c)};a.prototype.futimesSync=function(a,b,c){this.futimesBase(a,
|
|
R(b),R(c))};a.prototype.futimes=function(a,b,c,d){this.wrapAsync(this.futimesBase,[a,R(b),R(c)],d)};a.prototype.utimesBase=function(a,b,c){a=this.openSync(a,"r+");try{this.futimesBase(a,b,c)}finally{this.closeSync(a)}};a.prototype.utimesSync=function(a,b,c){this.utimesBase(l(a),R(b),R(c))};a.prototype.utimes=function(a,b,c,d){this.wrapAsync(this.utimesBase,[l(a),R(b),R(c)],d)};a.prototype.mkdirBase=function(a,b){var c=n(a);if(!c.length)throw h("EISDIR","mkdir",a);var d=this.getLinkParentAsDirOrThrow(a,
|
|
"mkdir");c=c[c.length-1];if(d.getChild(c))throw h("EEXIST","mkdir",a);d.createChild(c,this.createNode(!0,b))};a.prototype.mkdirpBase=function(a,b){a=n(a);for(var c=this.root,d=0;d<a.length;d++){var e=a[d];if(!c.getNode().isDirectory())throw h("ENOTDIR","mkdir",c.getPath());var f=c.getChild(e);if(f)if(f.getNode().isDirectory())c=f;else throw h("ENOTDIR","mkdir",f.getPath());else c=c.createChild(e,this.createNode(!0,b))}};a.prototype.mkdirSync=function(a,b){b=g(b);var c=M(b.mode,511);a=l(a);b.recursive?
|
|
this.mkdirpBase(a,c):this.mkdirBase(a,c)};a.prototype.mkdir=function(a,b,c){var d=g(b);b=t("function"===typeof b?b:c);c=M(d.mode,511);a=l(a);d.recursive?this.wrapAsync(this.mkdirpBase,[a,c],b):this.wrapAsync(this.mkdirBase,[a,c],b)};a.prototype.mkdirpSync=function(a,b){this.mkdirSync(a,{mode:b,recursive:!0})};a.prototype.mkdirp=function(a,b,c){var d="function"===typeof b?void 0:b;b=t("function"===typeof b?b:c);this.mkdir(a,{mode:d,recursive:!0},b)};a.prototype.mkdtempBase=function(a,b,c){void 0===
|
|
c&&(c=5);var d=a+this.genRndStr();try{return this.mkdirBase(d,511),Vd.strToEncoding(d,b)}catch(Ya){if("EEXIST"===Ya.code){if(1<c)return this.mkdtempBase(a,b,c-1);throw Error("Could not create temp dir.");}throw Ya;}};a.prototype.mkdtempSync=function(a,b){b=u(b).encoding;if(!a||"string"!==typeof a)throw new TypeError("filename prefix is required");X(a);return this.mkdtempBase(a,b)};a.prototype.mkdtemp=function(a,b,c){c=Dc(b,c);b=c[0].encoding;c=c[1];if(!a||"string"!==typeof a)throw new TypeError("filename prefix is required");
|
|
X(a)&&this.wrapAsync(this.mkdtempBase,[a,b],c)};a.prototype.rmdirBase=function(a,b){b=ja({},qc,b);var c=this.getLinkAsDirOrThrow(a,"rmdir");if(c.length&&!b.recursive)throw h("ENOTEMPTY","rmdir",a);this.deleteLink(c)};a.prototype.rmdirSync=function(a,b){this.rmdirBase(l(a),b)};a.prototype.rmdir=function(a,b,c){var d=ja({},qc,b);b=t("function"===typeof b?b:c);this.wrapAsync(this.rmdirBase,[l(a),d],b)};a.prototype.fchmodBase=function(a,b){this.getFileByFdOrThrow(a,"fchmod").chmod(b)};a.prototype.fchmodSync=
|
|
function(a,b){this.fchmodBase(a,M(b))};a.prototype.fchmod=function(a,b,c){this.wrapAsync(this.fchmodBase,[a,M(b)],c)};a.prototype.chmodBase=function(a,b){a=this.openSync(a,"r+");try{this.fchmodBase(a,b)}finally{this.closeSync(a)}};a.prototype.chmodSync=function(a,b){b=M(b);a=l(a);this.chmodBase(a,b)};a.prototype.chmod=function(a,b,c){b=M(b);a=l(a);this.wrapAsync(this.chmodBase,[a,b],c)};a.prototype.lchmodBase=function(a,b){a=this.openBase(a,ma,0,!1);try{this.fchmodBase(a,b)}finally{this.closeSync(a)}};
|
|
a.prototype.lchmodSync=function(a,b){b=M(b);a=l(a);this.lchmodBase(a,b)};a.prototype.lchmod=function(a,b,c){b=M(b);a=l(a);this.wrapAsync(this.lchmodBase,[a,b],c)};a.prototype.fchownBase=function(a,b,c){this.getFileByFdOrThrow(a,"fchown").chown(b,c)};a.prototype.fchownSync=function(a,b,c){C(b);H(c);this.fchownBase(a,b,c)};a.prototype.fchown=function(a,b,c,d){C(b);H(c);this.wrapAsync(this.fchownBase,[a,b,c],d)};a.prototype.chownBase=function(a,b,c){this.getResolvedLinkOrThrow(a,"chown").getNode().chown(b,
|
|
c)};a.prototype.chownSync=function(a,b,c){C(b);H(c);this.chownBase(l(a),b,c)};a.prototype.chown=function(a,b,c,d){C(b);H(c);this.wrapAsync(this.chownBase,[l(a),b,c],d)};a.prototype.lchownBase=function(a,b,c){this.getLinkOrThrow(a,"lchown").getNode().chown(b,c)};a.prototype.lchownSync=function(a,b,c){C(b);H(c);this.lchownBase(l(a),b,c)};a.prototype.lchown=function(a,b,c,d){C(b);H(c);this.wrapAsync(this.lchownBase,[l(a),b,c],d)};a.prototype.watchFile=function(a,b,c){a=l(a);var d=b;"function"===typeof d&&
|
|
(c=b,d=null);if("function"!==typeof c)throw Error('"watchFile()" requires a listener function');b=5007;var e=!0;d&&"object"===typeof d&&("number"===typeof d.interval&&(b=d.interval),"boolean"===typeof d.persistent&&(e=d.persistent));(d=this.statWatchers[a])||(d=new this.StatWatcher,d.start(a,e,b),this.statWatchers[a]=d);d.addListener("change",c);return d};a.prototype.unwatchFile=function(a,b){a=l(a);var c=this.statWatchers[a];c&&("function"===typeof b?c.removeListener("change",b):c.removeAllListeners("change"),
|
|
0===c.listenerCount("change")&&(c.stop(),delete this.statWatchers[a]))};a.prototype.createReadStream=function(a,b){return new this.ReadStream(a,b)};a.prototype.createWriteStream=function(a,b){return new this.WriteStream(a,b)};a.prototype.watch=function(a,b,c){a=l(a);var d=b;"function"===typeof b&&(c=b,d=null);var e=u(d);b=e.persistent;d=e.recursive;e=e.encoding;void 0===b&&(b=!0);void 0===d&&(d=!1);var f=new this.FSWatcher;f.start(a,b,d,e);c&&f.addListener("change",c);return f};a.fd=2147483647;return a}();
|
|
a.Volume=b;var sc=function(a){function b(b){var c=a.call(this)||this;c.onInterval=function(){try{var a=c.vol.statSync(c.filename);c.hasChanged(a)&&(c.emit("change",a,c.prev),c.prev=a)}finally{c.loop()}};c.vol=b;return c}sa(b,a);b.prototype.loop=function(){this.timeoutRef=this.setTimeout(this.onInterval,this.interval)};b.prototype.hasChanged=function(a){return a.mtimeMs>this.prev.mtimeMs||a.nlink!==this.prev.nlink?!0:!1};b.prototype.start=function(a,b,c){void 0===b&&(b=!0);void 0===c&&(c=5007);this.filename=
|
|
l(a);this.setTimeout=b?setTimeout:qe.default;this.interval=c;this.prev=this.vol.statSync(this.filename);this.loop()};b.prototype.stop=function(){clearTimeout(this.timeoutRef);ge.default.nextTick(qa,this)};return b}(L.EventEmitter);a.StatWatcher=sc;var Z;md.inherits(V,qf.Readable);a.ReadStream=V;V.prototype.open=function(){var a=this;this._vol.open(this.path,this.flags,this.mode,function(b,c){b?(a.autoClose&&a.destroy&&a.destroy(),a.emit("error",b)):(a.fd=c,a.emit("open",c),a.read())})};V.prototype._read=
|
|
function(a){if("number"!==typeof this.fd)return this.once("open",function(){this._read(a)});if(!this.destroyed){if(!Z||128>Z.length-Z.used)Z=E.bufferAllocUnsafe(this._readableState.highWaterMark),Z.used=0;var b=Z,c=Math.min(Z.length-Z.used,a),d=Z.used;void 0!==this.pos&&(c=Math.min(this.end-this.pos+1,c));if(0>=c)return this.push(null);var e=this;this._vol.read(this.fd,Z,Z.used,c,this.pos,function(a,c){a?(e.autoClose&&e.destroy&&e.destroy(),e.emit("error",a)):(a=null,0<c&&(e.bytesRead+=c,a=b.slice(d,
|
|
d+c)),e.push(a))});void 0!==this.pos&&(this.pos+=c);Z.used+=c}};V.prototype._destroy=function(a,b){this.close(function(c){b(a||c)})};V.prototype.close=function(a){var b=this;if(a)this.once("close",a);if(this.closed||"number"!==typeof this.fd){if("number"!==typeof this.fd){this.once("open",ra);return}return ge.default.nextTick(function(){return b.emit("close")})}this.closed=!0;this._vol.close(this.fd,function(a){a?b.emit("error",a):b.emit("close")});this.fd=null};md.inherits(I,qf.Writable);a.WriteStream=
|
|
I;I.prototype.open=function(){this._vol.open(this.path,this.flags,this.mode,function(a,b){a?(this.autoClose&&this.destroy&&this.destroy(),this.emit("error",a)):(this.fd=b,this.emit("open",b))}.bind(this))};I.prototype._write=function(a,b,c){if(!(a instanceof E.Buffer))return this.emit("error",Error("Invalid data"));if("number"!==typeof this.fd)return this.once("open",function(){this._write(a,b,c)});var d=this;this._vol.write(this.fd,a,0,a.length,this.pos,function(a,b){if(a)return d.autoClose&&d.destroy&&
|
|
d.destroy(),c(a);d.bytesWritten+=b;c()});void 0!==this.pos&&(this.pos+=a.length)};I.prototype._writev=function(a,b){if("number"!==typeof this.fd)return this.once("open",function(){this._writev(a,b)});for(var c=this,d=a.length,e=Array(d),f=0,g=0;g<d;g++){var h=a[g].chunk;e[g]=h;f+=h.length}d=E.Buffer.concat(e);this._vol.write(this.fd,d,0,d.length,this.pos,function(a,d){if(a)return c.destroy&&c.destroy(),b(a);c.bytesWritten+=d;b()});void 0!==this.pos&&(this.pos+=f)};I.prototype._destroy=V.prototype._destroy;
|
|
I.prototype.close=V.prototype.close;I.prototype.destroySoon=I.prototype.end;var tc=function(a){function b(b){var c=a.call(this)||this;c._filename="";c._filenameEncoded="";c._recursive=!1;c._encoding=Vd.ENCODING_UTF8;c._onNodeChange=function(){c._emit("change")};c._onParentChild=function(a){a.getName()===c._getName()&&c._emit("rename")};c._emit=function(a){c.emit("change",a,c._filenameEncoded)};c._persist=function(){c._timer=setTimeout(c._persist,1E6)};c._vol=b;return c}sa(b,a);b.prototype._getName=
|
|
function(){return this._steps[this._steps.length-1]};b.prototype.start=function(a,b,c,d){void 0===b&&(b=!0);void 0===c&&(c=!1);void 0===d&&(d=Vd.ENCODING_UTF8);this._filename=l(a);this._steps=n(this._filename);this._filenameEncoded=Vd.strToEncoding(this._filename);this._recursive=c;this._encoding=d;try{this._link=this._vol.getLinkOrThrow(this._filename,"FSWatcher")}catch(ib){throw b=Error("watch "+this._filename+" "+ib.code),b.code=ib.code,b.errno=ib.code,b;}this._link.getNode().on("change",this._onNodeChange);
|
|
this._link.on("child:add",this._onNodeChange);this._link.on("child:delete",this._onNodeChange);if(a=this._link.parent)a.setMaxListeners(a.getMaxListeners()+1),a.on("child:delete",this._onParentChild);b&&this._persist()};b.prototype.close=function(){clearTimeout(this._timer);this._link.getNode().removeListener("change",this._onNodeChange);var a=this._link.parent;a&&a.removeListener("child:delete",this._onParentChild)};return b}(L.EventEmitter);a.FSWatcher=tc});Da(fg);
|
|
var gg=fg.pathToFilename,hg=fg.filenameToSteps,ig=fg.Volume,jg=Ea(function(b,a){Object.defineProperty(a,"__esModule",{value:!0});a.fsProps="constants F_OK R_OK W_OK X_OK Stats".split(" ");a.fsSyncMethods="renameSync ftruncateSync truncateSync chownSync fchownSync lchownSync chmodSync fchmodSync lchmodSync statSync lstatSync fstatSync linkSync symlinkSync readlinkSync realpathSync unlinkSync rmdirSync mkdirSync mkdirpSync readdirSync closeSync openSync utimesSync futimesSync fsyncSync writeSync readSync readFileSync writeFileSync appendFileSync existsSync accessSync fdatasyncSync mkdtempSync copyFileSync createReadStream createWriteStream".split(" ");
|
|
a.fsAsyncMethods="rename ftruncate truncate chown fchown lchown chmod fchmod lchmod stat lstat fstat link symlink readlink realpath unlink rmdir mkdir mkdirp readdir close open utimes futimes fsync write read readFile writeFile appendFile exists access fdatasync mkdtemp copyFile watchFile unwatchFile watch".split(" ")});Da(jg);
|
|
var kg=Ea(function(b,a){function c(a){for(var b={F_OK:f,R_OK:h,W_OK:k,X_OK:r,constants:z.constants,Stats:Ka.default,Dirent:Wd.default},c=0,d=e;c<d.length;c++){var n=d[c];"function"===typeof a[n]&&(b[n]=a[n].bind(a))}c=0;for(d=g;c<d.length;c++)n=d[c],"function"===typeof a[n]&&(b[n]=a[n].bind(a));b.StatWatcher=a.StatWatcher;b.FSWatcher=a.FSWatcher;b.WriteStream=a.WriteStream;b.ReadStream=a.ReadStream;b.promises=a.promises;b._toUnixTimestamp=fg.toUnixTimestamp;return b}var d=x&&x.__assign||function(){d=
|
|
Object.assign||function(a){for(var b,c=1,d=arguments.length;c<d;c++){b=arguments[c];for(var e in b)Object.prototype.hasOwnProperty.call(b,e)&&(a[e]=b[e])}return a};return d.apply(this,arguments)};Object.defineProperty(a,"__esModule",{value:!0});var e=jg.fsSyncMethods,g=jg.fsAsyncMethods,f=z.constants.F_OK,h=z.constants.R_OK,k=z.constants.W_OK,r=z.constants.X_OK;a.Volume=fg.Volume;a.vol=new fg.Volume;a.createFsFromVolume=c;a.fs=c(a.vol);b.exports=d(d({},b.exports),a.fs);b.exports.semantic=!0});Da(kg);
|
|
var lg=kg.createFsFromVolume;pe.prototype.emit=function(b){for(var a,c,d=[],e=1;e<arguments.length;e++)d[e-1]=arguments[e];e=this.listeners(b);try{for(var g=Aa(e),f=g.next();!f.done;f=g.next()){var h=f.value;try{h.apply(void 0,Ca(d))}catch(k){console.error(k)}}}catch(k){a={error:k}}finally{try{f&&!f.done&&(c=g.return)&&c.call(g)}finally{if(a)throw a.error;}}return 0<e.length};
|
|
var mg=function(){function b(){this.volume=new ig;this.fs=lg(this.volume);this.fromJSON({"/dev/stdin":"","/dev/stdout":"","/dev/stderr":""})}b.prototype._toJSON=function(a,b,d){void 0===b&&(b={});var c=!0,g;for(g in a.children){c=!1;var f=a.getChild(g);if(f){var h=f.getNode();h&&h.isFile()?(f=f.getPath(),d&&(f=de(d,f)),b[f]=h.getBuffer()):h&&h.isDirectory()&&this._toJSON(f,b,d)}}a=a.getPath();d&&(a=de(d,a));a&&c&&(b[a]=null);return b};b.prototype.toJSON=function(a,b,d){var c,g;void 0===b&&(b={});
|
|
void 0===d&&(d=!1);var f=[];if(a){a instanceof Array||(a=[a]);try{for(var h=Aa(a),k=h.next();!k.done;k=h.next()){var r=gg(k.value),q=this.volume.getResolvedLink(r);q&&f.push(q)}}catch(y){var t={error:y}}finally{try{k&&!k.done&&(c=h.return)&&c.call(h)}finally{if(t)throw t.error;}}}else f.push(this.volume.root);if(!f.length)return b;try{for(var v=Aa(f),l=v.next();!l.done;l=v.next())q=l.value,this._toJSON(q,b,d?q.getPath():"")}catch(y){var n={error:y}}finally{try{l&&!l.done&&(g=v.return)&&g.call(v)}finally{if(n)throw n.error;
|
|
}}return b};b.prototype.fromJSONFixed=function(a,b){for(var c in b){var e=b[c];if(e?null!==Object.getPrototypeOf(e):null!==e){var g=hg(c);1<g.length&&(g="/"+g.slice(0,g.length-1).join("/"),a.mkdirpBase(g,511));a.writeFileSync(c,e||"")}else a.mkdirpBase(c,511)}};b.prototype.fromJSON=function(a){this.volume=new ig;this.fromJSONFixed(this.volume,a);this.fs=lg(this.volume);this.volume.releasedFds=[0,1,2];a=this.volume.openSync("/dev/stderr","w");var b=this.volume.openSync("/dev/stdout","w"),d=this.volume.openSync("/dev/stdin",
|
|
"r");if(2!==a)throw Error("invalid handle for stderr: "+a);if(1!==b)throw Error("invalid handle for stdout: "+b);if(0!==d)throw Error("invalid handle for stdin: "+d);};b.prototype.getStdOut=function(){return va(this,void 0,void 0,function(){var a,b=this;return wa(this,function(){a=new Promise(function(a){a(b.fs.readFileSync("/dev/stdout","utf8"))});return[2,a]})})};return b}();
|
|
function ng(b){if(!b)throw Error("You must provide a config for the Wasm terminal.");if(!b.fetchCommand)throw Error("You must provide a fetchCommand for the Wasm terminal config, to handle fetching commands to be run");b.processWorkerUrl||console.warn("Note: It is HIGHLY reccomended you pass in the processWorkerUrl in the terminal config to create process workers. Without this, some wasi programs will not work.");b.processWorkerUrl&&console.warn("The unoptimized bundle of wasm-terminal is currently being used. The process worker does not need to be passed, as it is already inlined into the bundle. If you would like to pass in the process worker url and improve performance, please use the optimized bundle. Instructions can be found in the documentation.");
|
|
this.fetchCommand=b.fetchCommand;this.processWorkerUrl=b.processWorkerUrl;this.wasmFs=b.wasmFs?b.wasmFs:new mg}function og(b,a){og=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return og(b,a)}function pg(b,a){function c(){this.constructor=b}og(b,a);b.prototype=null===a?Object.create(a):(c.prototype=a.prototype,new c)}
|
|
function qg(){qg=Object.assign||function(b){for(var a,c=1,d=arguments.length;c<d;c++){a=arguments[c];for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(b[e]=a[e])}return b};return qg.apply(this,arguments)}function rg(b,a,c,d){return new (c||(c=Promise))(function(e,g){function f(a){try{k(d.next(a))}catch(q){g(q)}}function h(a){try{k(d["throw"](a))}catch(q){g(q)}}function k(a){a.done?e(a.value):(new c(function(b){b(a.value)})).then(f,h)}k((d=d.apply(b,a||[])).next())})}
|
|
function sg(b,a){function c(a){return function(b){return d([a,b])}}function d(c){if(g)throw new TypeError("Generator is already executing.");for(;e;)try{if(g=1,f&&(h=c[0]&2?f["return"]:c[0]?f["throw"]||((h=f["return"])&&h.call(f),0):f.next)&&!(h=h.call(f,c[1])).done)return h;if(f=0,h)c=[c[0]&2,h.value];switch(c[0]){case 0:case 1:h=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++;f=c[1];c=[0];continue;case 7:c=e.ops.pop();e.trys.pop();continue;default:if(!(h=e.trys,h=0<h.length&&
|
|
h[h.length-1])&&(6===c[0]||2===c[0])){e=0;continue}if(3===c[0]&&(!h||c[1]>h[0]&&c[1]<h[3]))e.label=c[1];else if(6===c[0]&&e.label<h[1])e.label=h[1],h=c;else if(h&&e.label<h[2])e.label=h[2],e.ops.push(c);else{h[2]&&e.ops.pop();e.trys.pop();continue}}c=a.call(b,e)}catch(q){c=[6,q],f=0}finally{g=h=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}var e={label:0,sent:function(){if(h[0]&1)throw h[1];return h[1]},trys:[],ops:[]},g,f,h,k;return k={next:c(0),"throw":c(1),"return":c(2)},"function"===
|
|
typeof Symbol&&(k[Symbol.iterator]=function(){return this}),k}function tg(b,a){var c="function"===typeof Symbol&&b[Symbol.iterator];if(!c)return b;b=c.call(b);var d,e=[];try{for(;(void 0===a||0<a--)&&!(d=b.next()).done;)e.push(d.value)}catch(f){var g={error:f}}finally{try{d&&!d.done&&(c=b["return"])&&c.call(b)}finally{if(g)throw g.error;}}return e}function ug(){for(var b=[],a=0;a<arguments.length;a++)b=b.concat(tg(arguments[a]));return b}
|
|
function vg(b,a,c){for(var d=0,e=0,g=0;g<a;++g)"\n"===b.charAt(g)?(e=0,d+=1):(e+=1,e>c&&(e=0,d+=1));return{row:d,col:e}}
|
|
for(var wg=function(){function b(a){this._firstInit=!0;this.xterm=a;this._termSize={cols:this.xterm.cols,rows:this.xterm.rows};this._input=this._continuationPromptPrefix=this._promptPrefix="";this._cursor=0}b.prototype._getAsyncRead=function(){var a=this,b,d;return{promise:new Promise(function(c,g){b=function(b){a._promptPrefix="";a._continuationPromptPrefix="";c(b)};d=g}),resolve:b,reject:d}};b.prototype.read=function(a,b){void 0===b&&(b="> ");0<a.length&&this.print(a);this._firstInit=!0;this._promptPrefix=
|
|
a;this._continuationPromptPrefix=b;this._input="";this._cursor=0;return qg({promptPrefix:a,continuationPromptPrefix:b},this._getAsyncRead())};b.prototype.readChar=function(a){0<a.length&&this.print(a);return qg({promptPrefix:a},this._getAsyncRead())};b.prototype.println=function(a){this.print(a+"\n")};b.prototype.print=function(a,b){var c=this;a=a.replace(/[\r\n]+/g,"\n").replace(/\n/g,"\r\n");b?(this.xterm._core.writeSync(a),this.xterm._core._renderService._renderer._runOperation(function(a){return a.onGridChanged(0,
|
|
c.xterm.rows-1)})):this.xterm.write(a)};b.prototype.printWide=function(a,b){void 0===b&&(b=2);if(0===a.length)return this.println("");b=a.reduce(function(a,b){return Math.max(a,b.length)},0)+b;for(var c=Math.floor(this._termSize.cols/b),e=Math.ceil(a.length/c),g=0,f=0;f<e;++f){for(var h="",k=0;k<c;++k)if(g<a.length){var r=a[g++];r+=" ".repeat(b-r.length);h+=r}this.println(h)}};b.prototype.printStatus=function(a,b){this.print("\u001b[s",b);this.print(a,b)};b.prototype.clearStatus=function(a){this.print("\u001b[u",
|
|
a);this.print("\u001b[1000D",a);this.print("\u001b[0J",a)};b.prototype.applyPrompts=function(a){return this._promptPrefix+a.replace(/\n/g,"\n"+this._continuationPromptPrefix)};b.prototype.applyPromptOffset=function(a,b){return this.applyPrompts(a.substr(0,b)).length};b.prototype.clearInput=function(){var a=this.applyPrompts(this._input),b=vg(a,a.length,this._termSize.cols).row+1,d=this.applyPromptOffset(this._input,this._cursor);a=vg(a,d,this._termSize.cols).row;a=b-a-1;for(d=0;d<a;++d)this.xterm.write("\u001b[E");
|
|
this.xterm.write("\r\u001b[K");for(d=1;d<b;++d)this.xterm.write("\u001b[F\u001b[K")};b.prototype.clearTty=function(){this.xterm.write("\u001b[2J");this.xterm.write("\u001b[0;0H");this._cursor=0};b.prototype.getFirstInit=function(){return this._firstInit};b.prototype.getPromptPrefix=function(){return this._promptPrefix};b.prototype.getContinuationPromptPrefix=function(){return this._continuationPromptPrefix};b.prototype.getTermSize=function(){return this._termSize};b.prototype.getInput=function(){return this._input};
|
|
b.prototype.getCursor=function(){return this._cursor};b.prototype.getSize=function(){return this._termSize};b.prototype.getBuffer=function(){return this.xterm.buffer};b.prototype.setInput=function(a,b){void 0===b&&(b=!1);b||this.clearInput();var c=this.applyPrompts(a);this.print(c);this._cursor>a.length&&(this._cursor=a.length);var e=this.applyPromptOffset(a,this._cursor);b=vg(c,c.length,this._termSize.cols).row+1;e=vg(c,e,this._termSize.cols);c=e.col;b=b-e.row-1;this.xterm.write("\r");for(e=0;e<
|
|
b;++e)this.xterm.write("\u001b[F");for(e=0;e<c;++e)this.xterm.write("\u001b[C");this._input=a};b.prototype.setCursor=function(a){0>a&&(a=0);a>this._input.length&&(a=this._input.length);this._writeCursorPosition(a)};b.prototype.setCursorDirectly=function(a){this._writeCursorPosition(a)};b.prototype._writeCursorPosition=function(a){var b=this.applyPrompts(this._input);vg(b,b.length,this._termSize.cols);var d=this.applyPromptOffset(this._input,this._cursor),e=vg(b,d,this._termSize.cols);d=e.col;e=e.row;
|
|
var g=this.applyPromptOffset(this._input,a);g=vg(b,g,this._termSize.cols);b=g.col;g=g.row;if(g>e)for(var f=e;f<g;++f)this.xterm.write("\u001b[B");else for(f=g;f<e;++f)this.xterm.write("\u001b[A");if(b>d)for(f=d;f<b;++f)this.xterm.write("\u001b[C");else for(f=b;f<d;++f)this.xterm.write("\u001b[D");this._cursor=a};b.prototype.setTermSize=function(a,b){this._termSize={cols:a,rows:b}};b.prototype.setFirstInit=function(a){this._firstInit=a};b.prototype.setPromptPrefix=function(a){this._promptPrefix=a};
|
|
b.prototype.setContinuationPromptPrefix=function(a){this._continuationPromptPrefix=a};return b}(),Cg="",Dg=0;4>Dg;Dg++)Cg+=(Math.pow(16,8)*Math.random()).toString(16);function Eg(b,a,c){b=Fg(b,a,c);return"function"!==typeof a?b:b.reduce(function(a,b){if("object"===typeof b)return a.concat(b);b=b.split(RegExp("("+Cg+".*?"+Cg+")","g"));return 1===b.length?a.concat(b[0]):a.concat(b.filter(Boolean).map(function(a){return RegExp("^"+Cg).test(a)?JSON.parse(a.split(Cg)[1]):a}))},[])}
|
|
function Fg(b,a,c){var d=b.match(/((?:\|\||\&\&|;;|\|\&|\<\(|>>|>\&|[&;()|<>]))|((\\['"|&;()<> \t]|[^\s'"|&;()<> \t])+|"((\\"|[^"])*?)"|'((\\'|[^'])*?)')*/g).filter(Boolean),e=!1;if(!d)return[];a||(a={});c||(c={});return d.map(function(b,f){function g(){l+=1;if("{"===b.charAt(l)){l+=1;if("}"===b.charAt(l))throw Error("Bad substitution: "+b.substr(l-2,3));var c=b.indexOf("}",l);if(0>c)throw Error("Bad substitution: "+b.substr(l));var d=b.substr(l,c-l);l=c}else/[*@#?$!_\-]/.test(b.charAt(l))?(d=b.charAt(l),
|
|
l+=1):(c=b.substr(l).match(/[^\w\d_]/))?(d=b.substr(l,c.index),l+=c.index-1):(d=b.substr(l),l=b.length);c=d;d="function"===typeof a?a(c):a[c];void 0===d&&""!=c?d="":void 0===d&&(d="$");c="object"===typeof d?""+Cg+JSON.stringify(d)+Cg:""+d;return c}if(!e){if(/^(?:\|\||\&\&|;;|\|\&|\<\(|>>|>\&|[&;()|<>])$/.test(b))return{op:b};for(var k=c.escape||"\\",r=!1,q=!1,t="",v=!1,l=0,n=b.length;l<n;l++){var y=b.charAt(l);v=v||!r&&("*"===y||"?"===y);if(q)t+=y,q=!1;else if(r)y===r?r=!1:"'"==r?t+=y:y===k?(l+=1,
|
|
y=b.charAt(l),t='"'===y||y===k||"$"===y?t+y:t+(k+y)):t="$"===y?t+g():t+y;else if('"'===y||"'"===y)r=y;else{if(/^(?:\|\||\&\&|;;|\|\&|\<\(|>>|>\&|[&;()|<>])$/.test(y))return{op:b};if(/^#$/.test(y))return e=!0,t.length?[t,{comment:b.slice(l+1)+d.slice(f+1).join(" ")}]:[{comment:b.slice(l+1)+d.slice(f+1).join(" ")}];y===k?q=!0:t="$"===y?t+g():t+y}}return v?{op:"glob",pattern:t}:t}}).reduce(function(a,b){return void 0===b?a:a.concat(b)},[])}
|
|
function Gg(b,a){void 0===a&&(a=!0);var c,d=[],e=/\w+/g;for(c=e.exec(b);c;)a?d.push(c.index):d.push(c.index+c[0].length),c=e.exec(b);return d}function Hg(b,a){b=Gg(b,!0).reverse().find(function(b){return b<a});return void 0===b?0:b}function Ig(b,a){var c=Gg(b,!1).find(function(b){return b>a});return void 0===c?b.length:c}
|
|
function Jg(b){return""===b.trim()?!1:0!==(b.match(/'/g)||[]).length%2||0!==(b.match(/"/g)||[]).length%2||""===b.split(/(\|\||\||&&)/g).pop().trim()||b.endsWith("\\")&&!b.endsWith("\\\\")?!0:!1}function Kg(b){return null!==b.match(/[^\\][ \t]$/m)}function Lg(b){return""===b.trim()||Kg(b)?"":Eg(b).pop()||""}
|
|
function Mg(b,a){var c=Eg(a),d=c.length-1,e=c[d]||"";""===a.trim()?(d=0,e=""):Kg(a)&&(d+=1,e="");return b.reduce(function(a,b){try{var e=b(d,c);return a.concat(e)}catch(k){return console.error("Auto-complete error:",k),a}},[]).filter(function(a){return a.startsWith(e)})}
|
|
var Ng=function(){function b(a){this.size=a;this.entries=[];this.cursor=0}b.prototype.push=function(a){""!==a.trim()&&a!==this.entries[this.entries.length-1]&&(this.entries.push(a),this.entries.length>this.size&&this.entries.pop(),this.cursor=this.entries.length)};b.prototype.includes=function(a){return this.entries.includes(a)};b.prototype.rewind=function(){this.cursor=this.entries.length};b.prototype.getPrevious=function(){var a=Math.max(0,this.cursor-1);this.cursor=a;return this.entries[a]};b.prototype.getNext=
|
|
function(){var a=Math.min(this.entries.length,this.cursor+1);this.cursor=a;return this.entries[a]};return b}();
|
|
let Og=Symbol("Comlink.proxy"),Pg=Symbol("Comlink.endpoint"),Qg=Symbol("Comlink.releaseProxy"),Rg=new WeakSet,zh=new Map([["proxy",{canHandle:b=>b&&b[Og],serialize(b){const {port1:a,port2:c}=new MessageChannel;Sg(b,a);return[c,[c]]},deserialize:b=>{b.start();return yh(b,[],void 0)}}],["throw",{canHandle:b=>Rg.has(b),serialize(b){const a=b instanceof Error;let c=b;a&&(c={isError:a,message:b.message,stack:b.stack});return[c,[]]},deserialize(b){if(b.isError)throw Object.assign(Error(),b);throw b;}}]]);
|
|
function Sg(b,a=self){a.addEventListener("message",function e(d){if(d&&d.data){var {id:g,type:f,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(Ah);try{let a=h.slice(0,-1).reduce((a,b)=>a[b],b),e=h.reduce((a,b)=>a[b],b);switch(f){case 0:var r=e;break;case 1:a[h.slice(-1)[0]]=Ah(d.data.value);r=!0;break;case 2:r=e.apply(a,k);break;case 3:{let a=new e(...k);r=Bh(a)}break;case 4:{let {port1:a,port2:d}=new MessageChannel;Sg(b,d);r=Ch(a,[a])}break;case 5:r=void 0}}catch(q){r=q,
|
|
Rg.add(q)}Promise.resolve(r).catch(a=>{Rg.add(a);return a}).then(b=>{let [d,h]=Dh(b);a.postMessage(Object.assign(Object.assign({},d),{id:g}),h);5===f&&(a.removeEventListener("message",e),"MessagePort"===a.constructor.name&&a.close())})}});a.start&&a.start()}function Eh(b){if(b)throw Error("Proxy has been released and is not useable");}
|
|
function yh(b,a=[],c=function(){}){let d=!1,e=new Proxy(c,{get(c,f){Eh(d);if(f===Qg)return()=>Fh(b,{type:5,path:a.map(a=>a.toString())}).then(()=>{"MessagePort"===b.constructor.name&&b.close();d=!0});if("then"===f){if(0===a.length)return{then:()=>e};c=Fh(b,{type:0,path:a.map(a=>a.toString())}).then(Ah);return c.then.bind(c)}return yh(b,[...a,f])},set(c,e,h){Eh(d);const [f,g]=Dh(h);return Fh(b,{type:1,path:[...a,e].map(a=>a.toString()),value:f},g).then(Ah)},apply(c,e,h){Eh(d);c=a[a.length-1];if(c===
|
|
Pg)return Fh(b,{type:4}).then(Ah);if("bind"===c)return yh(b,a.slice(0,-1));const [f,g]=Gh(h);return Fh(b,{type:2,path:a.map(a=>a.toString()),argumentList:f},g).then(Ah)},construct(c,e){Eh(d);const [f,g]=Gh(e);return Fh(b,{type:3,path:a.map(a=>a.toString()),argumentList:f},g).then(Ah)}});return e}function Gh(b){b=b.map(Dh);return[b.map(a=>a[0]),Array.prototype.concat.apply([],b.map(a=>a[1]))]}let Hh=new WeakMap;function Ch(b,a){Hh.set(b,a);return b}
|
|
function Bh(b){return Object.assign(b,{[Og]:!0})}function Dh(b){for(let [a,c]of zh)if(c.canHandle(b)){let [d,e]=c.serialize(b);return[{type:3,name:a,value:d},e]}return[{type:0,value:b},Hh.get(b)||[]]}function Ah(b){switch(b.type){case 3:return zh.get(b.name).deserialize(b.value);case 0:return b.value}}
|
|
function Fh(b,a,c){return new Promise(d=>{let e=Ih();b.addEventListener("message",function h(a){a.data&&a.data.id&&a.data.id===e&&(b.removeEventListener("message",h),d(a.data))});b.start&&b.start();b.postMessage(Object.assign({id:e},a),c)})}function Ih(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var Jh=Array.isArray||function(b){return"[object Array]"==Object.prototype.toString.call(b)};
|
|
function Kh(b,a){if(b.map)return b.map(a);for(var c=[],d=0;d<b.length;d++){var e=b[d];Lh.call(b,d)&&c.push(a(e,d,b))}return c}var Lh=Object.prototype.hasOwnProperty;function Mh(b,a){a?"string"==typeof a&&(a={startRule:a}):a={};return Nh.parse(b,a)}
|
|
var Nh=function(){function b(a,b,e,g,f,h){this.message=a;this.expected=b;this.found=e;this.offset=g;this.line=f;this.column=h;this.name="SyntaxError"}function a(c){function d(a){a=a.map(function(a){return Tg(a)?Hb(a):a});return ia(a)}function e(a,b,c,d){var e={type:"command",command:b,args:[],redirects:[],env:{},control:";",next:null};Yc(a,Ed).concat(Yc(c,Fd)).forEach(function(a){if(a&&a.type)switch(a.type){case "moveFd":case "duplicateFd":case "redirectFd":return e.redirects.push(a);case "variableAssignment":return e.env[a.name]=
|
|
a.value;default:e.args.push(a)}});d&&e.redirects.push(d[1]);return e}function g(a,b){var c=[a],d=a;Yc(b,function(a){for(var b=d;b.next;)b=b.next;b.control=a[1];c.push(d=a[3])});return c}function f(a){var b=[];Yc(a,function(a){b=b.concat(a[1])});return b}function h(a){if(uc!==a){uc>a&&(uc=0,ve={line:1,column:1,seenCR:!1});var b=ve,d;for(d=uc;d<a;d++){var e=c.charAt(d);"\n"===e?(b.seenCR||b.line++,b.column=1,b.seenCR=!1):"\r"===e||"\u2028"===e||"\u2029"===e?(b.line++,b.column=1,b.seenCR=!0):(b.column++,
|
|
b.seenCR=!1)}uc=a}return ve}function k(a){m<Zc||(m>Zc&&(Zc=m,we=[]),we.push(a))}function r(){var a,b;var c=m;var d=[];var e=m;var g=[];for(a=G();a!==p;)g.push(a),a=G();if(g!==p)if(a=q(),a!==p){var h=[];for(b=G();b!==p;)h.push(b),b=G();h!==p?e=g=[g,a,h]:(m=e,e=u)}else m=e,e=u;else m=e,e=u;if(e!==p)for(;e!==p;){d.push(e);e=m;g=[];for(a=G();a!==p;)g.push(a),a=G();if(g!==p)if(a=q(),a!==p){h=[];for(b=G();b!==p;)h.push(b),b=G();h!==p?e=g=[g,a,h]:(m=e,e=u)}else m=e,e=u;else m=e,e=u}else d=u;d!==p&&(F=c,
|
|
d=f(d));return d}function q(){var a,b;w++;var c=m;var d=t();if(d!==p){var e=[];var f=m;var h=[];for(a=J();a!==p;)h.push(a),a=J();if(h!==p)if(a=v(),a!==p){var l=[];for(b=G();b!==p;)l.push(b),b=G();l!==p?(b=t(),b!==p?f=h=[h,a,l,b]:(m=f,f=u)):(m=f,f=u)}else m=f,f=u;else m=f,f=u;for(;f!==p;){e.push(f);f=m;h=[];for(a=J();a!==p;)h.push(a),a=J();if(h!==p)if(a=v(),a!==p){l=[];for(b=G();b!==p;)l.push(b),b=G();l!==p?(b=t(),b!==p?f=h=[h,a,l,b]:(m=f,f=u)):(m=f,f=u)}else m=f,f=u;else m=f,f=u}if(e!==p){f=m;h=[];
|
|
for(a=J();a!==p;)h.push(a),a=J();h!==p?(a=v(),a!==p?f=h=[h,a]:(m=f,f=u)):(m=f,f=u);f===p&&(f=Ga);f!==p?(F=c,c=d=g(d,e)):(m=c,c=u)}else m=c,c=u}else m=c,c=u;w--;c===p&&0===w&&k(Dc);return c}function t(){var a=m;var b=l();if(b===p&&(b=B(),b===p)){var d;var e=m;c.substr(m,5)===Sb?(b=Sb,m+=5):(b=p,0===w&&k(Rc));b===p&&(c.substr(m,5)===Ub?(b=Ub,m+=5):(b=p,0===w&&k(sc)));if(b!==p){var f=[];var g=G();if(g!==p)for(;g!==p;)f.push(g),g=G();else f=u;if(f!==p)if(g=y(),g!==p){f=[];for(d=G();d!==p;)f.push(d),d=
|
|
G();f!==p?(c.substr(m,2)===Z?(d=Z,m+=2):(d=p,0===w&&k(tc)),d!==p?(f=G(),f!==p?(f=r(),f!==p?(c.substr(m,4)===Pc?(d=Pc,m+=4):(d=p,0===w&&k(gb)),d!==p?(F=e,e=b={type:b+"-loop",test:g,body:f}):(m=e,e=u)):(m=e,e=u)):(m=e,e=u)):(m=e,e=u)):(m=e,e=u)}else m=e,e=u;else m=e,e=u}else m=e,e=u;b=e;if(b===p){e=m;c.substr(m,2)===Xa?(b=Xa,m+=2):(b=p,0===w&&k(hb));if(b!==p){g=[];b=G();if(b!==p)for(;b!==p;)g.push(b),b=G();else g=u;if(g!==p)if(b=r(),b!==p)if(c.substr(m,4)===Tb?(g=Tb,m+=4):(g=p,0===w&&k(Ya)),g!==p){f=
|
|
[];g=G();if(g!==p)for(;g!==p;)f.push(g),g=G();else f=u;if(f!==p)if(g=r(),g!==p){f=[];for(d=n();d!==p;)f.push(d),d=n();if(f!==p){d=m;if(c.substr(m,4)===ib){var h=ib;m+=4}else h=p,0===w&&k(xg);if(h!==p){var q=r();q!==p?d=h=[h,q]:(m=d,d=u)}else m=d,d=u;d===p&&(d=Ga);d!==p?(c.substr(m,2)===Sc?(h=Sc,m+=2):(h=p,0===w&&k(Tc)),h!==p?(F=e,e=b={type:"ifElse",test:b,body:g,elifBlocks:f.length?f:null,elseBody:d?d[1]:null}):(m=e,e=u)):(m=e,e=u)}else m=e,e=u}else m=e,e=u;else m=e,e=u}else m=e,e=u;else m=e,e=u;
|
|
else m=e,e=u}else m=e,e=u;b=e}}if(b!==p){e=m;g=[];for(f=J();f!==p;)g.push(f),f=J();if(g!==p){f=m;c.substr(m,2)===dc?(d=dc,m+=2):(d=p,0===w&&k(Bc));d===p&&(c.substr(m,2)===ec?(d=ec,m+=2):(d=p,0===w&&k(Ac)));if(d!==p){h=[];for(q=G();q!==p;)h.push(q),q=G();h!==p?(q=t(),q!==p?(F=f,f=d=[d,q]):(m=f,f=u)):(m=f,f=u)}else m=f,f=u;f!==p?e=g=[g,f]:(m=e,e=u)}else m=e,e=u;e===p&&(e=Ga);e!==p?(F=a,a=b,"undefined"!==typeof e&&e?(e=e[1],a.control=e[0],a.next=e[1]):(a.control=";",a.next=null)):(m=a,a=u)}else m=a,
|
|
a=u;return a}function v(){var a=m;if(38===c.charCodeAt(m)){var b=Gd;m++}else b=p,0===w&&k(Cc);b===p&&(59===c.charCodeAt(m)?(b=Hd,m++):(b=p,0===w&&k(Qc)),b===p&&(10===c.charCodeAt(m)?(b=qc,m++):(b=p,0===w&&k(rc))));b!==p&&(F=a,b="\n"==b?";":b);return b}function l(){w++;var a=m;var b=[];var d=m;var f=B();f===p&&(f=ya());if(f!==p){var g=[];var h=J();if(h!==p)for(;h!==p;)g.push(h),h=J();else g=u;g!==p?d=f=[f,g]:(m=d,d=u)}else m=d,d=u;for(;d!==p;)if(b.push(d),d=m,f=B(),f===p&&(f=ya()),f!==p){g=[];h=J();
|
|
if(h!==p)for(;h!==p;)g.push(h),h=J();else g=u;g!==p?d=f=[f,g]:(m=d,d=u)}else m=d,d=u;if(b!==p)if(d=O(),d===p&&(d=X()),d!==p){f=[];g=m;h=[];var n=J();if(n!==p)for(;n!==p;)h.push(n),n=J();else h=u;h!==p?(n=ya(),n===p&&(n=M()),n!==p?g=h=[h,n]:(m=g,g=u)):(m=g,g=u);for(;g!==p;){f.push(g);g=m;h=[];n=J();if(n!==p)for(;n!==p;)h.push(n),n=J();else h=u;h!==p?(n=ya(),n===p&&(n=M()),n!==p?g=h=[h,n]:(m=g,g=u)):(m=g,g=u)}if(f!==p){g=m;h=[];for(n=J();n!==p;)h.push(n),n=J();if(h!==p){var q;n=m;if(124===c.charCodeAt(m)){var r=
|
|
Wj;m++}else r=p,0===w&&k(Xj);if(r!==p){r=[];for(q=G();q!==p;)r.push(q),q=G();r!==p?(q=l(),q!==p?(F=n,n=r={type:"pipe",command:q}):(m=n,n=u)):(m=n,n=u)}else m=n,n=u;n!==p?g=h=[h,n]:(m=g,g=u)}else m=g,g=u;g===p&&(g=Ga);g!==p?(F=a,a=b=e(b,d,f,g)):(m=a,a=u)}else m=a,a=u}else m=a,a=u;else m=a,a=u;w--;a===p&&0===w&&k(ne);return a}function n(){var a=m;if(c.substr(m,4)===Uc){var b=Uc;m+=4}else b=p,0===w&&k(yg);if(b!==p){var d=[];b=G();if(b!==p)for(;b!==p;)d.push(b),b=G();else d=u;if(d!==p)if(b=y(),b!==p)if(c.substr(m,
|
|
4)===Tb?(d=Tb,m+=4):(d=p,0===w&&k(Ya)),d!==p){d=[];var e=G();if(e!==p)for(;e!==p;)d.push(e),e=G();else d=u;d!==p?(e=r(),e!==p?(F=a,a=b={type:"ifElse",test:b,body:e}):(m=a,a=u)):(m=a,a=u)}else m=a,a=u;else m=a,a=u;else m=a,a=u}else m=a,a=u;return a}function y(){var a=m;var b=r();b!==p&&(F=a);return b}function B(){var a=m;var b=Sa();if(b!==p){if(61===c.charCodeAt(m)){var d=Cj;m++}else d=p,0===w&&k(Dj);d!==p?(d=M(),d!==p?(F=a,a=b={type:"variableAssignment",name:b,value:d}):(m=a,a=u)):(m=a,a=u)}else m=
|
|
a,a=u;return a}function O(){var a;w++;var b=a=m;w++;var c=ya();w--;c===p?b=Ha:(m=b,b=u);if(b!==p)if(c=m,w++,b=da(),w--,b===p?c=Ha:(m=c,c=u),c!==p)if(b=m,w++,c=B(),w--,c===p?b=Ha:(m=b,b=u),b!==p){c=m;b=[];var d=H();d===p&&(d=ha(),d===p&&(d=Fa(),d===p&&(d=xa(),d===p&&(d=ma(),d===p&&(d=ra(),d===p&&(d=I()))))));if(d!==p)for(;d!==p;)b.push(d),d=H(),d===p&&(d=ha(),d===p&&(d=Fa(),d===p&&(d=xa(),d===p&&(d=ma(),d===p&&(d=ra(),d===p&&(d=I()))))));else b=u;b!==p&&(F=c,b=ia(b));c=b;c===p&&(c=X());c!==p?(F=a,
|
|
a=c):(m=a,a=u)}else m=a,a=u;else m=a,a=u;else m=a,a=u;w--;a===p&&0===w&&k(Ej);return a}function X(){if(91===c.charCodeAt(m)){var a=zg;m++}else a=p,0===w&&k(Ag);a===p&&(c.substr(m,2)===Vc?(a=Vc,m+=2):(a=p,0===w&&k(Bg)));return a}function M(){w++;var a=O();if(a===p){a=m;if(Yj.test(c.charAt(m))){var b=c.charAt(m);m++}else b=p,0===w&&k(Zj);if(b!==p){if(40===c.charCodeAt(m)){var d=Ug;m++}else d=p,0===w&&k(Vg);if(d!==p)if(d=q(),d!==p){if(41===c.charCodeAt(m)){var e=Wg;m++}else e=p,0===w&&k(Xg);e!==p?(F=
|
|
a,a=b={type:"processSubstitution",readWrite:b,commands:d}):(m=a,a=u)}else m=a,a=u;else m=a,a=u}else m=a,a=u}w--;a===p&&0===w&&k(oe);return a}function ha(){var a=m;var b=[];var c=R();if(c!==p)for(;c!==p;)b.push(c),c=R();else b=u;b!==p&&(F=a,b=Hb(b));return b}function R(){var a=m;if(92===c.charCodeAt(m)){var b=Yg;m++}else b=p,0===w&&k(Zg);if(b!==p){var d=C();d!==p?(F=a,a=d):(m=a,a=u)}else m=a,a=u;a===p&&(b=a=m,w++,d=C(),w--,d===p?b=Ha:(m=b,b=u),b!==p?(c.length>m?(d=c.charAt(m),m++):(d=p,0===w&&k(Za)),
|
|
d!==p?(F=a,a=d):(m=a,a=u)):(m=a,a=u));return a}function C(){if(ak.test(c.charAt(m))){var a=c.charAt(m);m++}else a=p,0===w&&k(bk);return a}function H(){var a;var b=m;var d=[];for(a=R();a!==p;)d.push(a),a=R();if(d!==p){a=[];42===c.charCodeAt(m)?(d=$g,m++):(d=p,0===w&&k(ah));d===p&&(63===c.charCodeAt(m)?(d=xe,m++):(d=p,0===w&&k(ye)),d===p&&(d=qa(),d===p&&(d=V())));if(d!==p)for(;d!==p;)a.push(d),42===c.charCodeAt(m)?(d=$g,m++):(d=p,0===w&&k(ah)),d===p&&(63===c.charCodeAt(m)?(d=xe,m++):(d=p,0===w&&k(ye)),
|
|
d===p&&(d=qa(),d===p&&(d=V())));else a=u;if(a!==p){d=[];for(a=R();a!==p;)d.push(a),a=R();d!==p?(F=b,b=d={type:"glob",value:c.substring(F,m)}):(m=b,b=u)}else m=b,b=u}else m=b,b=u;return b}function qa(){var a;var b=a=m;if(91===c.charCodeAt(m)){var d=zg;m++}else d=p,0===w&&k(Ag);if(d!==p){var e=m;w++;if(45===c.charCodeAt(m)){var f=$c;m++}else f=p,0===w&&k(ad);w--;f===p?e=Ha:(m=e,e=u);if(e!==p)if(c.length>m?(f=c.charAt(m),m++):(f=p,0===w&&k(Za)),f!==p){if(45===c.charCodeAt(m)){var g=$c;m++}else g=p,0===
|
|
w&&k(ad);if(g!==p){var h=m;w++;if(45===c.charCodeAt(m)){var l=$c;m++}else l=p,0===w&&k(ad);w--;l===p?h=Ha:(m=h,h=u);if(h!==p)if(c.length>m?(l=c.charAt(m),m++):(l=p,0===w&&k(Za)),l!==p){if(93===c.charCodeAt(m)){var n=ck;m++}else n=p,0===w&&k(dk);n!==p?b=d=[d,e,f,g,h,l,n]:(m=b,b=u)}else m=b,b=u;else m=b,b=u}else m=b,b=u}else m=b,b=u;else m=b,b=u}else m=b,b=u;b!==p&&(b=c.substring(a,m));return b}function V(){var a;var b=a=m;if(c.length>m){var d=c.charAt(m);m++}else d=p,0===w&&k(Za);d===p&&(d=Ga);if(d!==
|
|
p){var e=m;w++;if(36===c.charCodeAt(m)){var f=ze;m++}else f=p,0===w&&k(Ae);w--;f===p?e=Ha:(m=e,e=u);e!==p?b=d=[d,e]:(m=b,b=u)}else m=b,b=u;if(b!==p)if(123===c.charCodeAt(m)?(d=ek,m++):(d=p,0===w&&k(fk)),d!==p){e=[];f=R();if(f!==p)for(;f!==p;)e.push(f),f=R();else e=u;e!==p?(125===c.charCodeAt(m)?(f=bh,m++):(f=p,0===w&&k(ch)),f!==p?a=b=[b,d,e,f]:(m=a,a=u)):(m=a,a=u)}else m=a,a=u;else m=a,a=u;return a}function ra(){var a=m;if(39===c.charCodeAt(m)){var b=Be;m++}else b=p,0===w&&k(Ce);if(b!==p){b=m;var d=
|
|
[];if(dh.test(c.charAt(m))){var e=c.charAt(m);m++}else e=p,0===w&&k(eh);for(;e!==p;)d.push(e),dh.test(c.charAt(m))?(e=c.charAt(m),m++):(e=p,0===w&&k(eh));d!==p&&(d=c.substring(b,m));b=d;b!==p?(39===c.charCodeAt(m)?(d=Be,m++):(d=p,0===w&&k(Ce)),d!==p?(F=a,a=b=Hb(b)):(m=a,a=u)):(m=a,a=u)}else m=a,a=u;return a}function I(){var a=m;if(34===c.charCodeAt(m)){var b=bd;m++}else b=p,0===w&&k(cd);if(b!==p){b=[];var e=ja();if(e===p){e=[];var f=sa();if(f!==p)for(;f!==p;)e.push(f),f=sa();else e=u}for(;e!==p;)if(b.push(e),
|
|
e=ja(),e===p)if(e=[],f=sa(),f!==p)for(;f!==p;)e.push(f),f=sa();else e=u;b!==p?(34===c.charCodeAt(m)?(e=bd,m++):(e=p,0===w&&k(cd)),e!==p?(F=a,a=b=d(b)):(m=a,a=u)):(m=a,a=u)}else m=a,a=u;return a}function sa(){var a=m;if(92===c.charCodeAt(m)){var b=Yg;m++}else b=p,0===w&&k(Zg);if(b!==p){var d=ta();d!==p?(F=a,a=d):(m=a,a=u)}else m=a,a=u;a===p&&(a=m,c.substr(m,2)===dd?(b=dd,m+=2):(b=p,0===w&&k(fh)),b!==p&&(F=a,b="\\"),a=b,a===p&&(b=a=m,w++,d=ta(),w--,d===p?b=Ha:(m=b,b=u),b!==p?(c.length>m?(d=c.charAt(m),
|
|
m++):(d=p,0===w&&k(Za)),d!==p?(F=a,a=d):(m=a,a=u)):(m=a,a=u)));return a}function ta(){if(34===c.charCodeAt(m)){var a=bd;m++}else a=p,0===w&&k(cd);a===p&&(36===c.charCodeAt(m)?(a=ze,m++):(a=p,0===w&&k(Ae)),a===p&&(96===c.charCodeAt(m)?(a=vc,m++):(a=p,0===w&&k(wc))));return a}function ja(){var a=ma();a===p&&(a=Fa(),a===p&&(a=xa()));return a}function Fa(){var a=m;if(36===c.charCodeAt(m)){var b=ze;m++}else b=p,0===w&&k(Ae);b!==p?(b=Sa(),b===p&&(63===c.charCodeAt(m)?(b=xe,m++):(b=p,0===w&&k(ye))),b!==
|
|
p?(F=a,a=b={type:"variable",name:b}):(m=a,a=u)):(m=a,a=u);return a}function Sa(){var a=m;var b=[];if(gh.test(c.charAt(m))){var d=c.charAt(m);m++}else d=p,0===w&&k(hh);if(d!==p)for(;d!==p;)b.push(d),gh.test(c.charAt(m))?(d=c.charAt(m),m++):(d=p,0===w&&k(hh));else b=u;b!==p&&(F=a,b=c.substring(F,m));return b}function xa(){var a=m;if(c.substr(m,2)===ed){var b=ed;m+=2}else b=p,0===w&&k(ih);if(b!==p){b=[];if(jh.test(c.charAt(m))){var d=c.charAt(m);m++}else d=p,0===w&&k(kh);for(;d!==p;)b.push(d),jh.test(c.charAt(m))?
|
|
(d=c.charAt(m),m++):(d=p,0===w&&k(kh));b!==p?(125===c.charCodeAt(m)?(d=bh,m++):(d=p,0===w&&k(ch)),d!==p?(F=a,a=b={type:"variableSubstitution",expression:b.join("")}):(m=a,a=u)):(m=a,a=u)}else m=a,a=u;return a}function ma(){var b=m;if(c.substr(m,2)===fd){var d=fd;m+=2}else d=p,0===w&&k(lh);if(d!==p)if(d=q(),d!==p){if(41===c.charCodeAt(m)){var e=Wg;m++}else e=p,0===w&&k(Xg);e!==p?(F=b,b=d={type:"commandSubstitution",commands:d}):(m=b,b=u)}else m=b,b=u;else m=b,b=u;if(b===p)if(b=m,96===c.charCodeAt(m)?
|
|
(d=vc,m++):(d=p,0===w&&k(wc)),d!==p){d=[];e=P();if(e!==p)for(;e!==p;)d.push(e),e=P();else d=u;d!==p?(96===c.charCodeAt(m)?(e=vc,m++):(e=p,0===w&&k(wc)),e!==p?(F=b,b=d={type:"commandSubstitution",commands:a(d.join(""))}):(m=b,b=u)):(m=b,b=u)}else m=b,b=u;return b}function P(){var a=m;if(c.substr(m,2)===mh){var b=mh;m+=2}else b=p,0===w&&k(gk);b!==p&&(F=a,b="`");a=b;if(a===p&&(a=m,c.substr(m,2)===dd?(b=dd,m+=2):(b=p,0===w&&k(fh)),b!==p&&(F=a,b="\\"),a=b,a===p)){b=a=m;w++;if(96===c.charCodeAt(m)){var d=
|
|
vc;m++}else d=p,0===w&&k(wc);w--;d===p?b=Ha:(m=b,b=u);b!==p?(c.length>m?(d=c.charAt(m),m++):(d=p,0===w&&k(Za)),d!==p?(F=a,a=d):(m=a,a=u)):(m=a,a=u)}return a}function ya(){var a=m;var b=ua();b===p&&(b=Ga);if(b!==p){if(c.substr(m,2)===gd){var d=gd;m+=2}else d=p,0===w&&k(nh);d===p&&(c.substr(m,2)===hd?(d=hd,m+=2):(d=p,0===w&&k(oh)));if(d!==p){var e=ua();if(e!==p){if(45===c.charCodeAt(m)){var f=$c;m++}else f=p,0===w&&k(ad);f!==p?(F=a,a=b,null==a&&(a="<"==d[0]?0:1),a=b={type:"moveFd",fd:a,op:d,dest:e}):
|
|
(m=a,a=u)}else m=a,a=u}else m=a,a=u}else m=a,a=u;d=a;if(d===p){a=m;b=ua();b===p&&(b=Ga);if(b!==p)if(c.substr(m,2)===gd?(d=gd,m+=2):(d=p,0===w&&k(nh)),d===p&&(c.substr(m,2)===hd?(d=hd,m+=2):(d=p,0===w&&k(oh))),d!==p){f=[];for(e=J();e!==p;)f.push(e),e=J();f!==p?(e=ua(),e!==p?(F=a,a=b,null==a&&(a="<"==d[0]?0:1),a=b={type:"duplicateFd",srcFd:a,op:d,destFd:e}):(m=a,a=u)):(m=a,a=u)}else m=a,a=u;else m=a,a=u;d=a;if(d===p)if(d=m,e=ua(),e===p&&(e=Ga),e!==p)if(60===c.charCodeAt(m)?(a=hk,m++):(a=p,0===w&&k(ik)),
|
|
a===p&&(62===c.charCodeAt(m)?(a=jk,m++):(a=p,0===w&&k(kk)),a===p&&(c.substr(m,2)===ph?(a=ph,m+=2):(a=p,0===w&&k(lk)),a===p&&(c.substr(m,2)===qh?(a=qh,m+=2):(a=p,0===w&&k(mk)),a===p&&(c.substr(m,2)===rh?(a=rh,m+=2):(a=p,0===w&&k(nk)),a===p&&(c.substr(m,3)===sh?(a=sh,m+=3):(a=p,0===w&&k(ok))))))),a!==p){f=[];for(b=J();b!==p;)f.push(b),b=J();f!==p?(b=M(),b!==p?(F=d,d=e,null==d&&(d="<"==a[0]?0:1),d=e={type:"redirectFd",fd:d,op:a,filename:b}):(m=d,d=u)):(m=d,d=u)}else m=d,d=u;else m=d,d=u}return d}function ua(){var a=
|
|
m;var b=[];if(th.test(c.charAt(m))){var d=c.charAt(m);m++}else d=p,0===w&&k(uh);if(d!==p)for(;d!==p;)b.push(d),th.test(c.charAt(m))?(d=c.charAt(m),m++):(d=p,0===w&&k(uh));else b=u;b!==p&&(F=a,b=parseInt(b.join(""),10));return b}function J(){if(32===c.charCodeAt(m)){var a=pk;m++}else a=p,0===w&&k(qk);a===p&&(9===c.charCodeAt(m)?(a=rk,m++):(a=p,0===w&&k(sk)));return a}function G(){var a=J();a===p&&(10===c.charCodeAt(m)?(a=qc,m++):(a=p,0===w&&k(rc)));return a}function da(){var a=m;if(c.substr(m,5)===
|
|
Sb){var b=Sb;m+=5}else b=p,0===w&&k(Rc);b===p&&(c.substr(m,5)===Ub?(b=Ub,m+=5):(b=p,0===w&&k(sc)),b===p&&(c.substr(m,3)===vh?(b=vh,m+=3):(b=p,0===w&&k(tk)),b===p&&(c.substr(m,4)===Pc?(b=Pc,m+=4):(b=p,0===w&&k(gb)),b===p&&(c.substr(m,2)===Z?(b=Z,m+=2):(b=p,0===w&&k(tc)),b===p&&(c.substr(m,4)===wh?(b=wh,m+=4):(b=p,0===w&&k(uk)),b===p&&(c.substr(m,4)===xh?(b=xh,m+=4):(b=p,0===w&&k(vk)),b===p&&(c.substr(m,2)===Xa?(b=Xa,m+=2):(b=p,0===w&&k(hb)),b===p&&(c.substr(m,4)===Tb?(b=Tb,m+=4):(b=p,0===w&&k(Ya)),
|
|
b===p&&(c.substr(m,4)===ib?(b=ib,m+=4):(b=p,0===w&&k(xg)),b===p&&(c.substr(m,4)===Uc?(b=Uc,m+=4):(b=p,0===w&&k(yg)),b===p&&(c.substr(m,2)===Sc?(b=Sc,m+=2):(b=p,0===w&&k(Tc)),b===p&&(c.substr(m,2)===Vc?(b=Vc,m+=2):(b=p,0===w&&k(Bg))))))))))))));if(b!==p){var d=[];var e=G();if(e!==p)for(;e!==p;)d.push(e),e=G();else d=u;d===p&&(d=m,w++,c.length>m?(e=c.charAt(m),m++):(e=p,0===w&&k(Za)),w--,e===p?d=Ha:(m=d,d=u));d!==p?a=b=[b,d]:(m=a,a=u)}else m=a,a=u;return a}function Hb(a){return{type:"literal",value:Tg(a)?
|
|
a.join(""):a}}function Ed(a){return a[0]}function Fd(a){return a[1]}function ia(a){for(var b=[a[0]],c=a.length,d=a[0],e,f=1;f<c;f++)e=a[f],"concatenation"==e.type&&(e=ia(e.pieces)),"concatenation"==e.type?b=b.concat(e.pieces):"literal"!=e.type&&"glob"!=e.type||"literal"!=d.type&&"glob"!=d.type?(b.push(e),d=e):(d.value+=e.value,"glob"!=d.type&&"glob"==e.type&&(d.type="glob"));return 1==b.length?b[0]:{type:"concatenation",pieces:b}}var qb=1<arguments.length?arguments[1]:{},p={},za={script:r,command:l,
|
|
argument:M,continuationStart:function(){var a;var b=a=m;w++;var d=da();d===p&&(34===c.charCodeAt(m)?(d=bd,m++):(d=p,0===w&&k(cd)),d===p&&(39===c.charCodeAt(m)?(d=Be,m++):(d=p,0===w&&k(Ce)),d===p&&(96===c.charCodeAt(m)?(d=vc,m++):(d=p,0===w&&k(wc)),d===p&&(c.substr(m,2)===fd?(d=fd,m+=2):(d=p,0===w&&k(lh)),d===p&&(c.substr(m,2)===ed?(d=ed,m+=2):(d=p,0===w&&k(ih)),d===p&&(40===c.charCodeAt(m)?(d=Ug,m++):(d=p,0===w&&k(Vg))))))));w--;d!==p?(m=b,b=Ha):b=u;if(b!==p){d=[];if(c.length>m){var e=c.charAt(m);
|
|
m++}else e=p,0===w&&k(Za);for(;e!==p;)d.push(e),c.length>m?(e=c.charAt(m),m++):(e=p,0===w&&k(Za));d!==p?a=b=[b,d]:(m=a,a=u)}else m=a,a=u;return a}},Ia=r,u=p,Dc={type:"other",description:"a list of statements"},Ga=null,dc="&&",Bc={type:"literal",value:"&&",description:'"&&"'},ec="||",Ac={type:"literal",value:"||",description:'"||"'},Gd="&",Cc={type:"literal",value:"&",description:'"&"'},Hd=";",Qc={type:"literal",value:";",description:'";"'},qc="\n",rc={type:"literal",value:"\n",description:'"\\n"'},
|
|
ne={type:"other",description:"a single command"},Sb="while",Rc={type:"literal",value:"while",description:'"while"'},Ub="until",sc={type:"literal",value:"until",description:'"until"'},Z="do",tc={type:"literal",value:"do",description:'"do"'},Pc="done",gb={type:"literal",value:"done",description:'"done"'},Xa="if",hb={type:"literal",value:"if",description:'"if"'},Tb="then",Ya={type:"literal",value:"then",description:'"then"'},ib="else",xg={type:"literal",value:"else",description:'"else"'},Sc="fi",Tc=
|
|
{type:"literal",value:"fi",description:'"fi"'},Uc="elif",yg={type:"literal",value:"elif",description:'"elif"'},Cj="=",Dj={type:"literal",value:"=",description:'"="'},Ej={type:"other",description:"command name"},Ha=void 0,zg="[",Ag={type:"literal",value:"[",description:'"["'},Vc="[[",Bg={type:"literal",value:"[[",description:'"[["'},oe={type:"other",description:"command argument"},Yg="\\",Zg={type:"literal",value:"\\",description:'"\\\\"'},Za={type:"any",description:"any character"},ak=/^[$"';&<>\n()[*?|` ]/,
|
|
bk={type:"class",value:"[$\"';&<>\\n()[*?|` ]",description:"[$\"';&<>\\n()[*?|` ]"},$g="*",ah={type:"literal",value:"*",description:'"*"'},xe="?",ye={type:"literal",value:"?",description:'"?"'},$c="-",ad={type:"literal",value:"-",description:'"-"'},ck="]",dk={type:"literal",value:"]",description:'"]"'},ze="$",Ae={type:"literal",value:"$",description:'"$"'},ek="{",fk={type:"literal",value:"{",description:'"{"'},bh="}",ch={type:"literal",value:"}",description:'"}"'},Be="'",Ce={type:"literal",value:"'",
|
|
description:'"\'"'},dh=/^[^']/,eh={type:"class",value:"[^']",description:"[^']"},bd='"',cd={type:"literal",value:'"',description:'"\\""'},dd="\\\\",fh={type:"literal",value:"\\\\",description:'"\\\\\\\\"'},vc="`",wc={type:"literal",value:"`",description:'"`"'},gh=/^[a-zA-Z0-9_]/,hh={type:"class",value:"[a-zA-Z0-9_]",description:"[a-zA-Z0-9_]"},ed="${",ih={type:"literal",value:"${",description:'"${"'},jh=/^[^}]/,kh={type:"class",value:"[^}]",description:"[^}]"},fd="$(",lh={type:"literal",value:"$(",
|
|
description:'"$("'},Wg=")",Xg={type:"literal",value:")",description:'")"'},mh="\\`",gk={type:"literal",value:"\\`",description:'"\\\\`"'},Yj=/^[<>]/,Zj={type:"class",value:"[<>]",description:"[<>]"},Ug="(",Vg={type:"literal",value:"(",description:'"("'},Wj="|",Xj={type:"literal",value:"|",description:'"|"'},gd="<&",nh={type:"literal",value:"<&",description:'"<&"'},hd=">&",oh={type:"literal",value:">&",description:'">&"'},hk="<",ik={type:"literal",value:"<",description:'"<"'},jk=">",kk={type:"literal",
|
|
value:">",description:'">"'},ph=">|",lk={type:"literal",value:">|",description:'">|"'},qh="&>",mk={type:"literal",value:"&>",description:'"&>"'},rh=">>",nk={type:"literal",value:">>",description:'">>"'},sh="&>>",ok={type:"literal",value:"&>>",description:'"&>>"'},th=/^[0-9]/,uh={type:"class",value:"[0-9]",description:"[0-9]"},pk=" ",qk={type:"literal",value:" ",description:'" "'},rk="\t",sk={type:"literal",value:"\t",description:'"\\t"'},vh="for",tk={type:"literal",value:"for",description:'"for"'},
|
|
wh="case",uk={type:"literal",value:"case",description:'"case"'},xh="esac",vk={type:"literal",value:"esac",description:'"esac"'},m=0,F=0,uc=0,ve={line:1,column:1,seenCR:!1},Zc=0,we=[],w=0;if("startRule"in qb){if(!(qb.startRule in za))throw Error("Can't start parsing from rule \""+qb.startRule+'".');Ia=za[qb.startRule]}var Tg=Jh,Yc=Kh;var De=Ia();if(De!==p&&m===c.length)return De;De!==p&&m<c.length&&k({type:"end",description:"end of input"});throw function(a,d,e){function f(a){var b=1;for(a.sort(function(a,
|
|
b){return a.description<b.description?-1:a.description>b.description?1:0});b<a.length;)a[b-1]===a[b]?a.splice(b,1):b++}function g(a,b){function c(a){function b(a){return a.charCodeAt(0).toString(16).toUpperCase()}return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(a){return"\\x0"+b(a)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(a){return"\\x"+b(a)}).replace(/[\u0180-\u0FFF]/g,
|
|
function(a){return"\\u0"+b(a)}).replace(/[\u1080-\uFFFF]/g,function(a){return"\\u"+b(a)})}var d=Array(a.length),e;for(e=0;e<a.length;e++)d[e]=a[e].description;a=1<a.length?d.slice(0,-1).join(", ")+" or "+d[a.length-1]:d[0];b=b?'"'+c(b)+'"':"end of input";return"Expected "+a+" but "+b+" found."}var k=h(e),l=e<c.length?c.charAt(e):null;null!==d&&f(d);return new b(null!==a?a:g(d,l),d,l,e,k.line,k.column)}(null,we,Zc);}(function(a,b){function c(){this.constructor=a}c.prototype=b.prototype;a.prototype=
|
|
new c})(b,Error);return{SyntaxError:b,parse:a}}(),SyntaxError=Nh.SyntaxError;Mh.SyntaxError=SyntaxError;var Oh={FILE_PATH:{DEVICE_FRAMEBUFFER_ZERO:{PATH:"/_wasmer/dev/fb0",FRAME_BUFFER:"/_wasmer/dev/fb0/fb",VIRTUAL_SIZE:"/_wasmer/dev/fb0/virtual_size",DRAW:"/_wasmer/dev/fb0/draw",INPUT:"/_wasmer/dev/fb0/input"}}},Ph=void 0;"object"===typeof window?Ph=window.TextDecoder:"object"===typeof self?Ph=self.TextDecoder:"function"===typeof require&&(Ph=require("util").TextDecoder);
|
|
var Qh=function(){function b(a){this.wasmFs=a;this.wasmFs.volume.mkdirSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.PATH,{recursive:!0});this.wasmFs.volume.writeFileSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.FRAME_BUFFER,"");this.wasmFs.volume.writeFileSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.VIRTUAL_SIZE,"");this.wasmFs.volume.writeFileSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.DRAW,"");this.wasmFs.volume.writeFileSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.INPUT,"");this.windowSizeCallback=function(){};
|
|
this.bufferIndexDisplayCallback=function(){};this.inputCallback=function(){return new Uint8Array};this.fdFrameBuffer=this.wasmFs.volume.openSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.FRAME_BUFFER,"w+");this.fdBufferIndexDisplay=this.wasmFs.volume.openSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.DRAW,"w+");this.fdWindowSize=this.wasmFs.fs.openSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.VIRTUAL_SIZE,"w+");this.fdInput=this.wasmFs.volume.openSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.INPUT,"w+");var b=this,
|
|
d=this.wasmFs.volume.fds[this.fdInput].node.read;this.wasmFs.volume.fds[this.fdInput].node.read=function(){var a=b.inputCallback();b.wasmFs.volume.writeFileSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.INPUT,a);a=Array.prototype.slice.call(arguments);return d.apply(b.wasmFs.volume.fds[b.fdInput].node,a)};var e=this.wasmFs.volume.fds[this.fdWindowSize].node.write;this.wasmFs.volume.fds[this.fdWindowSize].node.write=function(){var a=Array.prototype.slice.call(arguments);a=e.apply(b.wasmFs.volume.fds[b.fdWindowSize].node,
|
|
a);b.windowSizeCallback();return a};var g=this.wasmFs.volume.fds[this.fdBufferIndexDisplay].node.write;this.wasmFs.volume.fds[this.fdBufferIndexDisplay].node.write=function(){var a=Array.prototype.slice.call(arguments);a=g.apply(b.wasmFs.volume.fds[b.fdBufferIndexDisplay].node,a);b.bufferIndexDisplayCallback();return a}}b.prototype.getFrameBuffer=function(){return this.wasmFs.fs.readFileSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.FRAME_BUFFER)};b.prototype.getWindowSize=function(){var a=this.wasmFs.fs.readFileSync(Oh.FILE_PATH.DEVICE_FRAMEBUFFER_ZERO.VIRTUAL_SIZE);
|
|
return 0<a.length?(a=(new Ph("utf-8")).decode(a).split("x"),[parseInt(a[0],10),parseInt(a[1],10)]):[0,0]};b.prototype.setWindowSizeCallback=function(a){this.windowSizeCallback=a};b.prototype.setBufferIndexDisplayCallback=function(a){this.bufferIndexDisplayCallback=a};b.prototype.setInputCallback=function(a){this.inputCallback=a};return b}();
|
|
function Rh(b,a){Rh=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return Rh(b,a)}function Sh(b,a){function c(){this.constructor=b}Rh(b,a);b.prototype=null===a?Object.create(a):(c.prototype=a.prototype,new c)}function Th(b){var a="function"===typeof Symbol&&b[Symbol.iterator],c=0;return a?a.call(b):{next:function(){b&&c>=b.length&&(b=void 0);return{value:b&&b[c++],done:!b}}}}
|
|
function Uh(b,a){var c="function"===typeof Symbol&&b[Symbol.iterator];if(!c)return b;b=c.call(b);var d,e=[];try{for(;(void 0===a||0<a--)&&!(d=b.next()).done;)e.push(d.value)}catch(f){var g={error:f}}finally{try{d&&!d.done&&(c=b["return"])&&c.call(b)}finally{if(g)throw g.error;}}return e}function Vh(){for(var b=[],a=0;a<arguments.length;a++)b=b.concat(Uh(arguments[a]));return b}
|
|
var Wh="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof pa?pa:{},S="undefined"!==typeof BigInt?BigInt:Wh.BigInt||Number,Xh=DataView;
|
|
Xh.prototype.setBigUint64||(Xh.prototype.setBigUint64=function(b,a,c){if(a<Math.pow(2,32)){a=Number(a);var d=0}else{d=a.toString(2);a="";for(var e=0;e<64-d.length;e++)a+="0";a+=d;d=parseInt(a.substring(0,32),2);a=parseInt(a.substring(32),2)}this.setUint32(b+(c?0:4),a,c);this.setUint32(b+(c?4:0),d,c)},Xh.prototype.getBigUint64=function(b,a){var c=this.getUint32(b+(a?0:4),a);b=this.getUint32(b+(a?4:0),a);c=c.toString(2);b=b.toString(2);a="";for(var d=0;d<32-c.length;d++)a+="0";return S("0b"+b+(a+c))});
|
|
var Yh="undefined"!==typeof pa?pa:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{},Zh=[],$h=[],ai="undefined"!==typeof Uint8Array?Uint8Array:Array,bi=!1;function ci(){bi=!0;for(var b=0;64>b;++b)Zh[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[b],$h["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(b)]=b;$h[45]=62;$h[95]=63}
|
|
function di(b,a,c){for(var d=[],e=a;e<c;e+=3)a=(b[e]<<16)+(b[e+1]<<8)+b[e+2],d.push(Zh[a>>18&63]+Zh[a>>12&63]+Zh[a>>6&63]+Zh[a&63]);return d.join("")}function ei(b){bi||ci();for(var a=b.length,c=a%3,d="",e=[],g=0,f=a-c;g<f;g+=16383)e.push(di(b,g,g+16383>f?f:g+16383));1===c?(b=b[a-1],d+=Zh[b>>2],d+=Zh[b<<4&63],d+="=="):2===c&&(b=(b[a-2]<<8)+b[a-1],d+=Zh[b>>10],d+=Zh[b>>4&63],d+=Zh[b<<2&63],d+="=");e.push(d);return e.join("")}
|
|
function fi(b,a,c,d,e){var g=8*e-d-1,f=(1<<g)-1,h=f>>1,k=-7;e=c?e-1:0;var r=c?-1:1,q=b[a+e];e+=r;c=q&(1<<-k)-1;q>>=-k;for(k+=g;0<k;c=256*c+b[a+e],e+=r,k-=8);g=c&(1<<-k)-1;c>>=-k;for(k+=d;0<k;g=256*g+b[a+e],e+=r,k-=8);if(0===c)c=1-h;else{if(c===f)return g?NaN:Infinity*(q?-1:1);g+=Math.pow(2,d);c-=h}return(q?-1:1)*g*Math.pow(2,c-d)}
|
|
function gi(b,a,c,d,e,g){var f,h=8*g-e-1,k=(1<<h)-1,r=k>>1,q=23===e?Math.pow(2,-24)-Math.pow(2,-77):0;g=d?0:g-1;var t=d?1:-1,v=0>a||0===a&&0>1/a?1:0;a=Math.abs(a);for(isNaN(a)||Infinity===a?(a=isNaN(a)?1:0,d=k):(d=Math.floor(Math.log(a)/Math.LN2),1>a*(f=Math.pow(2,-d))&&(d--,f*=2),a=1<=d+r?a+q/f:a+q*Math.pow(2,1-r),2<=a*f&&(d++,f/=2),d+r>=k?(a=0,d=k):1<=d+r?(a=(a*f-1)*Math.pow(2,e),d+=r):(a=a*Math.pow(2,r-1)*Math.pow(2,e),d=0));8<=e;b[c+g]=a&255,g+=t,a/=256,e-=8);d=d<<e|a;for(h+=e;0<h;b[c+g]=d&255,
|
|
g+=t,d/=256,h-=8);b[c+g-t]|=128*v}var hi={}.toString,ii=Array.isArray||function(b){return"[object Array]"==hi.call(b)};T.TYPED_ARRAY_SUPPORT=void 0!==Yh.TYPED_ARRAY_SUPPORT?Yh.TYPED_ARRAY_SUPPORT:!0;var ji=T.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function ki(b,a){if((T.TYPED_ARRAY_SUPPORT?2147483647:1073741823)<a)throw new RangeError("Invalid typed array length");T.TYPED_ARRAY_SUPPORT?(b=new Uint8Array(a),b.__proto__=T.prototype):(null===b&&(b=new T(a)),b.length=a);return b}
|
|
function T(b,a,c){if(!(T.TYPED_ARRAY_SUPPORT||this instanceof T))return new T(b,a,c);if("number"===typeof b){if("string"===typeof a)throw Error("If encoding is specified then the first argument must be a string");return li(this,b)}return mi(this,b,a,c)}T.poolSize=8192;T._augment=function(b){b.__proto__=T.prototype;return b};
|
|
function mi(b,a,c,d){if("number"===typeof a)throw new TypeError('"value" argument must not be a number');if("undefined"!==typeof ArrayBuffer&&a instanceof ArrayBuffer){a.byteLength;if(0>c||a.byteLength<c)throw new RangeError("'offset' is out of bounds");if(a.byteLength<c+(d||0))throw new RangeError("'length' is out of bounds");a=void 0===c&&void 0===d?new Uint8Array(a):void 0===d?new Uint8Array(a,c):new Uint8Array(a,c,d);T.TYPED_ARRAY_SUPPORT?(b=a,b.__proto__=T.prototype):b=ni(b,a);return b}if("string"===
|
|
typeof a){d=b;b=c;if("string"!==typeof b||""===b)b="utf8";if(!T.isEncoding(b))throw new TypeError('"encoding" must be a valid string encoding');c=oi(a,b)|0;d=ki(d,c);a=d.write(a,b);a!==c&&(d=d.slice(0,a));return d}return pi(b,a)}T.from=function(b,a,c){return mi(null,b,a,c)};T.TYPED_ARRAY_SUPPORT&&(T.prototype.__proto__=Uint8Array.prototype,T.__proto__=Uint8Array);
|
|
function qi(b){if("number"!==typeof b)throw new TypeError('"size" argument must be a number');if(0>b)throw new RangeError('"size" argument must not be negative');}T.alloc=function(b,a,c){qi(b);return b=0>=b?ki(null,b):void 0!==a?"string"===typeof c?ki(null,b).fill(a,c):ki(null,b).fill(a):ki(null,b)};function li(b,a){qi(a);b=ki(b,0>a?0:ri(a)|0);if(!T.TYPED_ARRAY_SUPPORT)for(var c=0;c<a;++c)b[c]=0;return b}T.allocUnsafe=function(b){return li(null,b)};T.allocUnsafeSlow=function(b){return li(null,b)};
|
|
function ni(b,a){var c=0>a.length?0:ri(a.length)|0;b=ki(b,c);for(var d=0;d<c;d+=1)b[d]=a[d]&255;return b}
|
|
function pi(b,a){if(si(a)){var c=ri(a.length)|0;b=ki(b,c);if(0===b.length)return b;a.copy(b,0,0,c);return b}if(a){if("undefined"!==typeof ArrayBuffer&&a.buffer instanceof ArrayBuffer||"length"in a)return(c="number"!==typeof a.length)||(c=a.length,c=c!==c),c?ki(b,0):ni(b,a);if("Buffer"===a.type&&ii(a.data))return ni(b,a.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.");}
|
|
function ri(b){if(b>=(T.TYPED_ARRAY_SUPPORT?2147483647:1073741823))throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+(T.TYPED_ARRAY_SUPPORT?2147483647:1073741823).toString(16)+" bytes");return b|0}T.isBuffer=ti;function si(b){return!(null==b||!b._isBuffer)}
|
|
T.compare=function(b,a){if(!si(b)||!si(a))throw new TypeError("Arguments must be Buffers");if(b===a)return 0;for(var c=b.length,d=a.length,e=0,g=Math.min(c,d);e<g;++e)if(b[e]!==a[e]){c=b[e];d=a[e];break}return c<d?-1:d<c?1:0};T.isEncoding=function(b){switch(String(b).toLowerCase()){case "hex":case "utf8":case "utf-8":case "ascii":case "latin1":case "binary":case "base64":case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return!0;default:return!1}};
|
|
T.concat=function(b,a){if(!ii(b))throw new TypeError('"list" argument must be an Array of Buffers');if(0===b.length)return T.alloc(0);var c;if(void 0===a)for(c=a=0;c<b.length;++c)a+=b[c].length;a=T.allocUnsafe(a);var d=0;for(c=0;c<b.length;++c){var e=b[c];if(!si(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(a,d);d+=e.length}return a};
|
|
function oi(b,a){if(si(b))return b.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(b)||b instanceof ArrayBuffer))return b.byteLength;"string"!==typeof b&&(b=""+b);var c=b.length;if(0===c)return 0;for(var d=!1;;)switch(a){case "ascii":case "latin1":case "binary":return c;case "utf8":case "utf-8":case void 0:return ui(b).length;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return 2*c;case "hex":return c>>>1;case "base64":return vi(b).length;
|
|
default:if(d)return ui(b).length;a=(""+a).toLowerCase();d=!0}}T.byteLength=oi;
|
|
function wi(b,a,c){var d=!1;if(void 0===a||0>a)a=0;if(a>this.length)return"";if(void 0===c||c>this.length)c=this.length;if(0>=c)return"";c>>>=0;a>>>=0;if(c<=a)return"";for(b||(b="utf8");;)switch(b){case "hex":b=a;a=c;c=this.length;if(!b||0>b)b=0;if(!a||0>a||a>c)a=c;d="";for(c=b;c<a;++c)b=d,d=this[c],d=16>d?"0"+d.toString(16):d.toString(16),d=b+d;return d;case "utf8":case "utf-8":return xi(this,a,c);case "ascii":b="";for(c=Math.min(this.length,c);a<c;++a)b+=String.fromCharCode(this[a]&127);return b;
|
|
case "latin1":case "binary":b="";for(c=Math.min(this.length,c);a<c;++a)b+=String.fromCharCode(this[a]);return b;case "base64":return a=0===a&&c===this.length?ei(this):ei(this.slice(a,c)),a;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":a=this.slice(a,c);c="";for(b=0;b<a.length;b+=2)c+=String.fromCharCode(a[b]+256*a[b+1]);return c;default:if(d)throw new TypeError("Unknown encoding: "+b);b=(b+"").toLowerCase();d=!0}}T.prototype._isBuffer=!0;function yi(b,a,c){var d=b[a];b[a]=b[c];b[c]=d}
|
|
T.prototype.swap16=function(){var b=this.length;if(0!==b%2)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var a=0;a<b;a+=2)yi(this,a,a+1);return this};T.prototype.swap32=function(){var b=this.length;if(0!==b%4)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var a=0;a<b;a+=4)yi(this,a,a+3),yi(this,a+1,a+2);return this};
|
|
T.prototype.swap64=function(){var b=this.length;if(0!==b%8)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var a=0;a<b;a+=8)yi(this,a,a+7),yi(this,a+1,a+6),yi(this,a+2,a+5),yi(this,a+3,a+4);return this};T.prototype.toString=function(){var b=this.length|0;return 0===b?"":0===arguments.length?xi(this,0,b):wi.apply(this,arguments)};T.prototype.equals=function(b){if(!si(b))throw new TypeError("Argument must be a Buffer");return this===b?!0:0===T.compare(this,b)};
|
|
T.prototype.inspect=function(){var b="";0<this.length&&(b=this.toString("hex",0,50).match(/.{2}/g).join(" "),50<this.length&&(b+=" ... "));return"<Buffer "+b+">"};
|
|
T.prototype.compare=function(b,a,c,d,e){if(!si(b))throw new TypeError("Argument must be a Buffer");void 0===a&&(a=0);void 0===c&&(c=b?b.length:0);void 0===d&&(d=0);void 0===e&&(e=this.length);if(0>a||c>b.length||0>d||e>this.length)throw new RangeError("out of range index");if(d>=e&&a>=c)return 0;if(d>=e)return-1;if(a>=c)return 1;a>>>=0;c>>>=0;d>>>=0;e>>>=0;if(this===b)return 0;var g=e-d,f=c-a,h=Math.min(g,f);d=this.slice(d,e);b=b.slice(a,c);for(a=0;a<h;++a)if(d[a]!==b[a]){g=d[a];f=b[a];break}return g<
|
|
f?-1:f<g?1:0};
|
|
function zi(b,a,c,d,e){if(0===b.length)return-1;"string"===typeof c?(d=c,c=0):2147483647<c?c=2147483647:-2147483648>c&&(c=-2147483648);c=+c;isNaN(c)&&(c=e?0:b.length-1);0>c&&(c=b.length+c);if(c>=b.length){if(e)return-1;c=b.length-1}else if(0>c)if(e)c=0;else return-1;"string"===typeof a&&(a=T.from(a,d));if(si(a))return 0===a.length?-1:Ai(b,a,c,d,e);if("number"===typeof a)return a&=255,T.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?e?Uint8Array.prototype.indexOf.call(b,a,c):
|
|
Uint8Array.prototype.lastIndexOf.call(b,a,c):Ai(b,[a],c,d,e);throw new TypeError("val must be string, number or Buffer");}
|
|
function Ai(b,a,c,d,e){function g(a,b){return 1===f?a[b]:a.readUInt16BE(b*f)}var f=1,h=b.length,k=a.length;if(void 0!==d&&(d=String(d).toLowerCase(),"ucs2"===d||"ucs-2"===d||"utf16le"===d||"utf-16le"===d)){if(2>b.length||2>a.length)return-1;f=2;h/=2;k/=2;c/=2}if(e)for(d=-1;c<h;c++)if(g(b,c)===g(a,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===k)return d*f}else-1!==d&&(c-=c-d),d=-1;else for(c+k>h&&(c=h-k);0<=c;c--){h=!0;for(d=0;d<k;d++)if(g(b,c+d)!==g(a,d)){h=!1;break}if(h)return c}return-1}
|
|
T.prototype.includes=function(b,a,c){return-1!==this.indexOf(b,a,c)};T.prototype.indexOf=function(b,a,c){return zi(this,b,a,c,!0)};T.prototype.lastIndexOf=function(b,a,c){return zi(this,b,a,c,!1)};
|
|
T.prototype.write=function(b,a,c,d){if(void 0===a)d="utf8",c=this.length,a=0;else if(void 0===c&&"string"===typeof a)d=a,c=this.length,a=0;else if(isFinite(a))a|=0,isFinite(c)?(c|=0,void 0===d&&(d="utf8")):(d=c,c=void 0);else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var e=this.length-a;if(void 0===c||c>e)c=e;if(0<b.length&&(0>c||0>a)||a>this.length)throw new RangeError("Attempt to write outside buffer bounds");d||(d="utf8");for(e=!1;;)switch(d){case "hex":a:{a=
|
|
Number(a)||0;d=this.length-a;c?(c=Number(c),c>d&&(c=d)):c=d;d=b.length;if(0!==d%2)throw new TypeError("Invalid hex string");c>d/2&&(c=d/2);for(d=0;d<c;++d){e=parseInt(b.substr(2*d,2),16);if(isNaN(e)){b=d;break a}this[a+d]=e}b=d}return b;case "utf8":case "utf-8":return Bi(ui(b,this.length-a),this,a,c);case "ascii":return Bi(Ci(b),this,a,c);case "latin1":case "binary":return Bi(Ci(b),this,a,c);case "base64":return Bi(vi(b),this,a,c);case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":d=b;e=this.length-
|
|
a;for(var g=[],f=0;f<d.length&&!(0>(e-=2));++f){var h=d.charCodeAt(f);b=h>>8;h%=256;g.push(h);g.push(b)}return Bi(g,this,a,c);default:if(e)throw new TypeError("Unknown encoding: "+d);d=(""+d).toLowerCase();e=!0}};T.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};
|
|
function xi(b,a,c){c=Math.min(b.length,c);for(var d=[];a<c;){var e=b[a],g=null,f=239<e?4:223<e?3:191<e?2:1;if(a+f<=c)switch(f){case 1:128>e&&(g=e);break;case 2:var h=b[a+1];128===(h&192)&&(e=(e&31)<<6|h&63,127<e&&(g=e));break;case 3:h=b[a+1];var k=b[a+2];128===(h&192)&&128===(k&192)&&(e=(e&15)<<12|(h&63)<<6|k&63,2047<e&&(55296>e||57343<e)&&(g=e));break;case 4:h=b[a+1];k=b[a+2];var r=b[a+3];128===(h&192)&&128===(k&192)&&128===(r&192)&&(e=(e&15)<<18|(h&63)<<12|(k&63)<<6|r&63,65535<e&&1114112>e&&(g=
|
|
e))}null===g?(g=65533,f=1):65535<g&&(g-=65536,d.push(g>>>10&1023|55296),g=56320|g&1023);d.push(g);a+=f}b=d.length;if(b<=Di)d=String.fromCharCode.apply(String,d);else{c="";for(a=0;a<b;)c+=String.fromCharCode.apply(String,d.slice(a,a+=Di));d=c}return d}var Di=4096;
|
|
T.prototype.slice=function(b,a){var c=this.length;b=~~b;a=void 0===a?c:~~a;0>b?(b+=c,0>b&&(b=0)):b>c&&(b=c);0>a?(a+=c,0>a&&(a=0)):a>c&&(a=c);a<b&&(a=b);if(T.TYPED_ARRAY_SUPPORT)a=this.subarray(b,a),a.__proto__=T.prototype;else{c=a-b;a=new T(c,void 0);for(var d=0;d<c;++d)a[d]=this[d+b]}return a};function Ei(b,a,c){if(0!==b%1||0>b)throw new RangeError("offset is not uint");if(b+a>c)throw new RangeError("Trying to access beyond buffer length");}
|
|
T.prototype.readUIntLE=function(b,a,c){b|=0;a|=0;c||Ei(b,a,this.length);c=this[b];for(var d=1,e=0;++e<a&&(d*=256);)c+=this[b+e]*d;return c};T.prototype.readUIntBE=function(b,a,c){b|=0;a|=0;c||Ei(b,a,this.length);c=this[b+--a];for(var d=1;0<a&&(d*=256);)c+=this[b+--a]*d;return c};T.prototype.readUInt8=function(b,a){a||Ei(b,1,this.length);return this[b]};T.prototype.readUInt16LE=function(b,a){a||Ei(b,2,this.length);return this[b]|this[b+1]<<8};
|
|
T.prototype.readUInt16BE=function(b,a){a||Ei(b,2,this.length);return this[b]<<8|this[b+1]};T.prototype.readUInt32LE=function(b,a){a||Ei(b,4,this.length);return(this[b]|this[b+1]<<8|this[b+2]<<16)+16777216*this[b+3]};T.prototype.readUInt32BE=function(b,a){a||Ei(b,4,this.length);return 16777216*this[b]+(this[b+1]<<16|this[b+2]<<8|this[b+3])};
|
|
T.prototype.readIntLE=function(b,a,c){b|=0;a|=0;c||Ei(b,a,this.length);c=this[b];for(var d=1,e=0;++e<a&&(d*=256);)c+=this[b+e]*d;c>=128*d&&(c-=Math.pow(2,8*a));return c};T.prototype.readIntBE=function(b,a,c){b|=0;a|=0;c||Ei(b,a,this.length);c=a;for(var d=1,e=this[b+--c];0<c&&(d*=256);)e+=this[b+--c]*d;e>=128*d&&(e-=Math.pow(2,8*a));return e};T.prototype.readInt8=function(b,a){a||Ei(b,1,this.length);return this[b]&128?-1*(255-this[b]+1):this[b]};
|
|
T.prototype.readInt16LE=function(b,a){a||Ei(b,2,this.length);b=this[b]|this[b+1]<<8;return b&32768?b|4294901760:b};T.prototype.readInt16BE=function(b,a){a||Ei(b,2,this.length);b=this[b+1]|this[b]<<8;return b&32768?b|4294901760:b};T.prototype.readInt32LE=function(b,a){a||Ei(b,4,this.length);return this[b]|this[b+1]<<8|this[b+2]<<16|this[b+3]<<24};T.prototype.readInt32BE=function(b,a){a||Ei(b,4,this.length);return this[b]<<24|this[b+1]<<16|this[b+2]<<8|this[b+3]};
|
|
T.prototype.readFloatLE=function(b,a){a||Ei(b,4,this.length);return fi(this,b,!0,23,4)};T.prototype.readFloatBE=function(b,a){a||Ei(b,4,this.length);return fi(this,b,!1,23,4)};T.prototype.readDoubleLE=function(b,a){a||Ei(b,8,this.length);return fi(this,b,!0,52,8)};T.prototype.readDoubleBE=function(b,a){a||Ei(b,8,this.length);return fi(this,b,!1,52,8)};
|
|
function Fi(b,a,c,d,e,g){if(!si(b))throw new TypeError('"buffer" argument must be a Buffer instance');if(a>e||a<g)throw new RangeError('"value" argument is out of bounds');if(c+d>b.length)throw new RangeError("Index out of range");}T.prototype.writeUIntLE=function(b,a,c,d){b=+b;a|=0;c|=0;d||Fi(this,b,a,c,Math.pow(2,8*c)-1,0);d=1;var e=0;for(this[a]=b&255;++e<c&&(d*=256);)this[a+e]=b/d&255;return a+c};
|
|
T.prototype.writeUIntBE=function(b,a,c,d){b=+b;a|=0;c|=0;d||Fi(this,b,a,c,Math.pow(2,8*c)-1,0);d=c-1;var e=1;for(this[a+d]=b&255;0<=--d&&(e*=256);)this[a+d]=b/e&255;return a+c};T.prototype.writeUInt8=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,1,255,0);T.TYPED_ARRAY_SUPPORT||(b=Math.floor(b));this[a]=b&255;return a+1};function Gi(b,a,c,d){0>a&&(a=65535+a+1);for(var e=0,g=Math.min(b.length-c,2);e<g;++e)b[c+e]=(a&255<<8*(d?e:1-e))>>>8*(d?e:1-e)}
|
|
T.prototype.writeUInt16LE=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,2,65535,0);T.TYPED_ARRAY_SUPPORT?(this[a]=b&255,this[a+1]=b>>>8):Gi(this,b,a,!0);return a+2};T.prototype.writeUInt16BE=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,2,65535,0);T.TYPED_ARRAY_SUPPORT?(this[a]=b>>>8,this[a+1]=b&255):Gi(this,b,a,!1);return a+2};function Hi(b,a,c,d){0>a&&(a=4294967295+a+1);for(var e=0,g=Math.min(b.length-c,4);e<g;++e)b[c+e]=a>>>8*(d?e:3-e)&255}
|
|
T.prototype.writeUInt32LE=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,4,4294967295,0);T.TYPED_ARRAY_SUPPORT?(this[a+3]=b>>>24,this[a+2]=b>>>16,this[a+1]=b>>>8,this[a]=b&255):Hi(this,b,a,!0);return a+4};T.prototype.writeUInt32BE=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,4,4294967295,0);T.TYPED_ARRAY_SUPPORT?(this[a]=b>>>24,this[a+1]=b>>>16,this[a+2]=b>>>8,this[a+3]=b&255):Hi(this,b,a,!1);return a+4};
|
|
T.prototype.writeIntLE=function(b,a,c,d){b=+b;a|=0;d||(d=Math.pow(2,8*c-1),Fi(this,b,a,c,d-1,-d));d=0;var e=1,g=0;for(this[a]=b&255;++d<c&&(e*=256);)0>b&&0===g&&0!==this[a+d-1]&&(g=1),this[a+d]=(b/e>>0)-g&255;return a+c};T.prototype.writeIntBE=function(b,a,c,d){b=+b;a|=0;d||(d=Math.pow(2,8*c-1),Fi(this,b,a,c,d-1,-d));d=c-1;var e=1,g=0;for(this[a+d]=b&255;0<=--d&&(e*=256);)0>b&&0===g&&0!==this[a+d+1]&&(g=1),this[a+d]=(b/e>>0)-g&255;return a+c};
|
|
T.prototype.writeInt8=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,1,127,-128);T.TYPED_ARRAY_SUPPORT||(b=Math.floor(b));0>b&&(b=255+b+1);this[a]=b&255;return a+1};T.prototype.writeInt16LE=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,2,32767,-32768);T.TYPED_ARRAY_SUPPORT?(this[a]=b&255,this[a+1]=b>>>8):Gi(this,b,a,!0);return a+2};T.prototype.writeInt16BE=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,2,32767,-32768);T.TYPED_ARRAY_SUPPORT?(this[a]=b>>>8,this[a+1]=b&255):Gi(this,b,a,!1);return a+2};
|
|
T.prototype.writeInt32LE=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,4,2147483647,-2147483648);T.TYPED_ARRAY_SUPPORT?(this[a]=b&255,this[a+1]=b>>>8,this[a+2]=b>>>16,this[a+3]=b>>>24):Hi(this,b,a,!0);return a+4};T.prototype.writeInt32BE=function(b,a,c){b=+b;a|=0;c||Fi(this,b,a,4,2147483647,-2147483648);0>b&&(b=4294967295+b+1);T.TYPED_ARRAY_SUPPORT?(this[a]=b>>>24,this[a+1]=b>>>16,this[a+2]=b>>>8,this[a+3]=b&255):Hi(this,b,a,!1);return a+4};
|
|
function Ii(b,a,c,d){if(c+d>b.length)throw new RangeError("Index out of range");if(0>c)throw new RangeError("Index out of range");}T.prototype.writeFloatLE=function(b,a,c){c||Ii(this,b,a,4);gi(this,b,a,!0,23,4);return a+4};T.prototype.writeFloatBE=function(b,a,c){c||Ii(this,b,a,4);gi(this,b,a,!1,23,4);return a+4};T.prototype.writeDoubleLE=function(b,a,c){c||Ii(this,b,a,8);gi(this,b,a,!0,52,8);return a+8};T.prototype.writeDoubleBE=function(b,a,c){c||Ii(this,b,a,8);gi(this,b,a,!1,52,8);return a+8};
|
|
T.prototype.copy=function(b,a,c,d){c||(c=0);d||0===d||(d=this.length);a>=b.length&&(a=b.length);a||(a=0);0<d&&d<c&&(d=c);if(d===c||0===b.length||0===this.length)return 0;if(0>a)throw new RangeError("targetStart out of bounds");if(0>c||c>=this.length)throw new RangeError("sourceStart out of bounds");if(0>d)throw new RangeError("sourceEnd out of bounds");d>this.length&&(d=this.length);b.length-a<d-c&&(d=b.length-a+c);var e=d-c;if(this===b&&c<a&&a<d)for(d=e-1;0<=d;--d)b[d+a]=this[d+c];else if(1E3>e||
|
|
!T.TYPED_ARRAY_SUPPORT)for(d=0;d<e;++d)b[d+a]=this[d+c];else Uint8Array.prototype.set.call(b,this.subarray(c,c+e),a);return e};
|
|
T.prototype.fill=function(b,a,c,d){if("string"===typeof b){"string"===typeof a?(d=a,a=0,c=this.length):"string"===typeof c&&(d=c,c=this.length);if(1===b.length){var e=b.charCodeAt(0);256>e&&(b=e)}if(void 0!==d&&"string"!==typeof d)throw new TypeError("encoding must be a string");if("string"===typeof d&&!T.isEncoding(d))throw new TypeError("Unknown encoding: "+d);}else"number"===typeof b&&(b&=255);if(0>a||this.length<a||this.length<c)throw new RangeError("Out of range index");if(c<=a)return this;a>>>=
|
|
0;c=void 0===c?this.length:c>>>0;b||(b=0);if("number"===typeof b)for(d=a;d<c;++d)this[d]=b;else for(b=si(b)?b:ui((new T(b,d)).toString()),e=b.length,d=0;d<c-a;++d)this[d+a]=b[d%e];return this};var Ji=/[^+\/0-9A-Za-z-_]/g;
|
|
function ui(b,a){a=a||Infinity;for(var c,d=b.length,e=null,g=[],f=0;f<d;++f){c=b.charCodeAt(f);if(55295<c&&57344>c){if(!e){if(56319<c){-1<(a-=3)&&g.push(239,191,189);continue}else if(f+1===d){-1<(a-=3)&&g.push(239,191,189);continue}e=c;continue}if(56320>c){-1<(a-=3)&&g.push(239,191,189);e=c;continue}c=(e-55296<<10|c-56320)+65536}else e&&-1<(a-=3)&&g.push(239,191,189);e=null;if(128>c){if(0>--a)break;g.push(c)}else if(2048>c){if(0>(a-=2))break;g.push(c>>6|192,c&63|128)}else if(65536>c){if(0>(a-=3))break;
|
|
g.push(c>>12|224,c>>6&63|128,c&63|128)}else if(1114112>c){if(0>(a-=4))break;g.push(c>>18|240,c>>12&63|128,c>>6&63|128,c&63|128)}else throw Error("Invalid code point");}return g}function Ci(b){for(var a=[],c=0;c<b.length;++c)a.push(b.charCodeAt(c)&255);return a}
|
|
function vi(b){b=(b.trim?b.trim():b.replace(/^\s+|\s+$/g,"")).replace(Ji,"");if(2>b.length)b="";else for(;0!==b.length%4;)b+="=";bi||ci();var a=b.length;if(0<a%4)throw Error("Invalid string. Length must be a multiple of 4");var c="="===b[a-2]?2:"="===b[a-1]?1:0,d=new ai(3*a/4-c),e=0<c?a-4:a,g=0;for(a=0;a<e;a+=4){var f=$h[b.charCodeAt(a)]<<18|$h[b.charCodeAt(a+1)]<<12|$h[b.charCodeAt(a+2)]<<6|$h[b.charCodeAt(a+3)];d[g++]=f>>16&255;d[g++]=f>>8&255;d[g++]=f&255}2===c?(f=$h[b.charCodeAt(a)]<<2|$h[b.charCodeAt(a+
|
|
1)]>>4,d[g++]=f&255):1===c&&(f=$h[b.charCodeAt(a)]<<10|$h[b.charCodeAt(a+1)]<<4|$h[b.charCodeAt(a+2)]>>2,d[g++]=f>>8&255,d[g++]=f&255);return d}function Bi(b,a,c,d){for(var e=0;e<d&&!(e+c>=a.length||e>=b.length);++e)a[e+c]=b[e];return e}function ti(b){return null!=b&&(!!b._isBuffer||Ki(b)||"function"===typeof b.readFloatLE&&"function"===typeof b.slice&&Ki(b.slice(0,0)))}function Ki(b){return!!b.constructor&&"function"===typeof b.constructor.isBuffer&&b.constructor.isBuffer(b)}
|
|
var Li=Object.freeze({__proto__:null,INSPECT_MAX_BYTES:50,kMaxLength:ji,Buffer:T,SlowBuffer:function(b){+b!=b&&(b=0);return T.alloc(+b)},isBuffer:ti}),U=T,Mi="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof pa?pa:"undefined"!==typeof self?self:{};function Ni(b,a){return a={exports:{}},b(a,a.exports),a.exports}function Oi(){throw Error("setTimeout has not been defined");}function Pi(){throw Error("clearTimeout has not been defined");}var Qi=Oi,Ri=Pi;
|
|
"function"===typeof Yh.setTimeout&&(Qi=setTimeout);"function"===typeof Yh.clearTimeout&&(Ri=clearTimeout);function Si(b){if(Qi===setTimeout)return setTimeout(b,0);if((Qi===Oi||!Qi)&&setTimeout)return Qi=setTimeout,setTimeout(b,0);try{return Qi(b,0)}catch(a){try{return Qi.call(null,b,0)}catch(c){return Qi.call(this,b,0)}}}
|
|
function Ti(b){if(Ri===clearTimeout)return clearTimeout(b);if((Ri===Pi||!Ri)&&clearTimeout)return Ri=clearTimeout,clearTimeout(b);try{return Ri(b)}catch(a){try{return Ri.call(null,b)}catch(c){return Ri.call(this,b)}}}var Ui=[],Vi=!1,Wi,Xi=-1;function Yi(){Vi&&Wi&&(Vi=!1,Wi.length?Ui=Wi.concat(Ui):Xi=-1,Ui.length&&Zi())}function Zi(){if(!Vi){var b=Si(Yi);Vi=!0;for(var a=Ui.length;a;){Wi=Ui;for(Ui=[];++Xi<a;)Wi&&Wi[Xi].run();Xi=-1;a=Ui.length}Wi=null;Vi=!1;Ti(b)}}
|
|
function $i(b){var a=Array(arguments.length-1);if(1<arguments.length)for(var c=1;c<arguments.length;c++)a[c-1]=arguments[c];Ui.push(new aj(b,a));1!==Ui.length||Vi||Si(Zi)}function aj(b,a){this.fun=b;this.array=a}aj.prototype.run=function(){this.fun.apply(null,this.array)};function bj(){}
|
|
var cj=Yh.performance||{},dj=cj.now||cj.mozNow||cj.msNow||cj.oNow||cj.webkitNow||function(){return(new Date).getTime()},ej=new Date,fj={nextTick:$i,title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:bj,addListener:bj,once:bj,off:bj,removeListener:bj,removeAllListeners:bj,emit:bj,binding:function(){throw Error("process.binding is not supported");},cwd:function(){return"/"},chdir:function(){throw Error("process.chdir is not supported");},umask:function(){return 0},hrtime:function(b){var a=
|
|
.001*dj.call(cj),c=Math.floor(a);a=Math.floor(a%1*1E9);b&&(c-=b[0],a-=b[1],0>a&&(c--,a+=1E9));return[c,a]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-ej)/1E3}},gj=Ni(function(b,a){function c(a,b){for(var c in a)b[c]=a[c]}function d(a,b,c){return e(a,b,c)}var e=Li.Buffer;e.from&&e.alloc&&e.allocUnsafe&&e.allocUnsafeSlow?b.exports=Li:(c(Li,a),a.Buffer=d);d.prototype=Object.create(e.prototype);c(e,d);d.from=function(a,b,c){if("number"===typeof a)throw new TypeError("Argument must not be a number");
|
|
return e(a,b,c)};d.alloc=function(a,b,c){if("number"!==typeof a)throw new TypeError("Argument must be a number");a=e(a);void 0!==b?"string"===typeof c?a.fill(b,c):a.fill(b):a.fill(0);return a};d.allocUnsafe=function(a){if("number"!==typeof a)throw new TypeError("Argument must be a number");return e(a)};d.allocUnsafeSlow=function(a){if("number"!==typeof a)throw new TypeError("Argument must be a number");return Li.SlowBuffer(a)}}),hj=Ni(function(b,a){function c(){throw Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11");
|
|
}function d(a,b){if("number"!==typeof a||a!==a)throw new TypeError("offset must be a number");if(a>t||0>a)throw new TypeError("offset must be a uint32");if(a>r||a>b)throw new RangeError("offset out of range");}function e(a,b,c){if("number"!==typeof a||a!==a)throw new TypeError("size must be a number");if(a>t||0>a)throw new TypeError("size must be a uint32");if(a+b>c||a>r)throw new RangeError("buffer too small");}function g(a,b,c,g){if(!(k.isBuffer(a)||a instanceof Mi.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');
|
|
if("function"===typeof b)g=b,b=0,c=a.length;else if("function"===typeof c)g=c,c=a.length-b;else if("function"!==typeof g)throw new TypeError('"cb" argument must be a function');d(b,a.length);e(c,b,a.length);return f(a,b,c,g)}function f(a,b,c,d){b=new Uint8Array(a.buffer,b,c);q.getRandomValues(b);if(d)$i(function(){d(null,a)});else return a}function h(a,b,c){"undefined"===typeof b&&(b=0);if(!(k.isBuffer(a)||a instanceof Mi.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');
|
|
d(b,a.length);void 0===c&&(c=a.length-b);e(c,b,a.length);return f(a,b,c)}var k=gj.Buffer,r=gj.kMaxLength,q=Mi.crypto||Mi.msCrypto,t=Math.pow(2,32)-1;q&&q.getRandomValues?(a.randomFill=g,a.randomFillSync=h):(a.randomFill=c,a.randomFillSync=c)}),ij=Ni(function(b){b.exports=hj}).randomFillSync,jj=Math.floor(.001*(Date.now()-performance.now()));function kj(b){if("string"!==typeof b)throw new TypeError("Path must be a string. Received "+JSON.stringify(b));}
|
|
function lj(b,a){for(var c="",d=0,e=-1,g=0,f,h=0;h<=b.length;++h){if(h<b.length)f=b.charCodeAt(h);else if(47===f)break;else f=47;if(47===f){if(e!==h-1&&1!==g)if(e!==h-1&&2===g){if(2>c.length||2!==d||46!==c.charCodeAt(c.length-1)||46!==c.charCodeAt(c.length-2))if(2<c.length){if(e=c.lastIndexOf("/"),e!==c.length-1){-1===e?(c="",d=0):(c=c.slice(0,e),d=c.length-1-c.lastIndexOf("/"));e=h;g=0;continue}}else if(2===c.length||1===c.length){c="";d=0;e=h;g=0;continue}a&&(c=0<c.length?c+"/..":"..",d=2)}else c=
|
|
0<c.length?c+("/"+b.slice(e+1,h)):b.slice(e+1,h),d=h-e-1;e=h;g=0}else 46===f&&-1!==g?++g:g=-1}return c}
|
|
var mj={resolve:function(){for(var b="",a=!1,c,d=arguments.length-1;-1<=d&&!a;d--){if(0<=d)var e=arguments[d];else void 0===c&&(c=fj.cwd()),e=c;kj(e);0!==e.length&&(b=e+"/"+b,a=47===e.charCodeAt(0))}b=lj(b,!a);return a?0<b.length?"/"+b:"/":0<b.length?b:"."},normalize:function(b){kj(b);if(0===b.length)return".";var a=47===b.charCodeAt(0),c=47===b.charCodeAt(b.length-1);b=lj(b,!a);0!==b.length||a||(b=".");0<b.length&&c&&(b+="/");return a?"/"+b:b},isAbsolute:function(b){kj(b);return 0<b.length&&47===
|
|
b.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var b,a=0;a<arguments.length;++a){var c=arguments[a];kj(c);0<c.length&&(b=void 0===b?c:b+("/"+c))}return void 0===b?".":mj.normalize(b)},relative:function(b,a){kj(b);kj(a);if(b===a)return"";b=mj.resolve(b);a=mj.resolve(a);if(b===a)return"";for(var c=1;c<b.length&&47===b.charCodeAt(c);++c);for(var d=b.length,e=d-c,g=1;g<a.length&&47===a.charCodeAt(g);++g);for(var f=a.length-g,h=e<f?e:f,k=-1,r=0;r<=h;++r){if(r===h){if(f>h){if(47===
|
|
a.charCodeAt(g+r))return a.slice(g+r+1);if(0===r)return a.slice(g+r)}else e>h&&(47===b.charCodeAt(c+r)?k=r:0===r&&(k=0));break}var q=b.charCodeAt(c+r),t=a.charCodeAt(g+r);if(q!==t)break;else 47===q&&(k=r)}e="";for(r=c+k+1;r<=d;++r)if(r===d||47===b.charCodeAt(r))e=0===e.length?e+"..":e+"/..";if(0<e.length)return e+a.slice(g+k);g+=k;47===a.charCodeAt(g)&&++g;return a.slice(g)},_makeLong:function(b){return b},dirname:function(b){kj(b);if(0===b.length)return".";for(var a=b.charCodeAt(0),c=47===a,d=-1,
|
|
e=!0,g=b.length-1;1<=g;--g)if(a=b.charCodeAt(g),47===a){if(!e){d=g;break}}else e=!1;return-1===d?c?"/":".":c&&1===d?"//":b.slice(0,d)},basename:function(b,a){if(void 0!==a&&"string"!==typeof a)throw new TypeError('"ext" argument must be a string');kj(b);var c=0,d=-1,e=!0,g;if(void 0!==a&&0<a.length&&a.length<=b.length){if(a.length===b.length&&a===b)return"";var f=a.length-1,h=-1;for(g=b.length-1;0<=g;--g){var k=b.charCodeAt(g);if(47===k){if(!e){c=g+1;break}}else-1===h&&(e=!1,h=g+1),0<=f&&(k===a.charCodeAt(f)?
|
|
-1===--f&&(d=g):(f=-1,d=h))}c===d?d=h:-1===d&&(d=b.length);return b.slice(c,d)}for(g=b.length-1;0<=g;--g)if(47===b.charCodeAt(g)){if(!e){c=g+1;break}}else-1===d&&(e=!1,d=g+1);return-1===d?"":b.slice(c,d)},extname:function(b){kj(b);for(var a=-1,c=0,d=-1,e=!0,g=0,f=b.length-1;0<=f;--f){var h=b.charCodeAt(f);if(47===h){if(!e){c=f+1;break}}else-1===d&&(e=!1,d=f+1),46===h?-1===a?a=f:1!==g&&(g=1):-1!==a&&(g=-1)}return-1===a||-1===d||0===g||1===g&&a===d-1&&a===c+1?"":b.slice(a,d)},format:function(b){if(null===
|
|
b||"object"!==typeof b)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof b);var a=b.dir||b.root,c=b.base||(b.name||"")+(b.ext||"");return b=a?a===b.root?a+c:a+"/"+c:c},parse:function(b){kj(b);var a={root:"",dir:"",base:"",ext:"",name:""};if(0===b.length)return a;var c=b.charCodeAt(0),d=47===c;if(d){a.root="/";var e=1}else e=0;for(var g=-1,f=0,h=-1,k=!0,r=b.length-1,q=0;r>=e;--r)if(c=b.charCodeAt(r),47===c){if(!k){f=r+1;break}}else-1===h&&(k=!1,h=r+1),46===
|
|
c?-1===g?g=r:1!==q&&(q=1):-1!==g&&(q=-1);-1===g||-1===h||0===q||1===q&&g===h-1&&g===f+1?-1!==h&&(a.base=0===f&&d?a.name=b.slice(1,h):a.name=b.slice(f,h)):(0===f&&d?(a.name=b.slice(1,g),a.base=b.slice(1,h)):(a.name=b.slice(f,g),a.base=b.slice(f,h)),a.ext=b.slice(g,h));0<f?a.dir=b.slice(0,f-1):d&&(a.dir="/");return a},sep:"/",delimiter:":",win32:null,posix:null},nj=mj.posix=mj,oj=Object.freeze({__proto__:null,"default":nj,__moduleExports:nj}),rj={hrtime:function(b){return function(a){a=b(a);return 1E9*
|
|
a[0]+a[1]}}(function(b){var a=.001*performance.now(),c=Math.floor(a)+jj;a=Math.floor(a%1*1E9);b&&(c-=b[0],a-=b[1],0>a&&(c--,a+=1E9));return[c,a]}),exit:function(b){throw new pj(b);},kill:function(b){throw new qj(b);},randomFillSync:ij,isTTY:function(){return!0},path:oj,fs:null},W,sj=S(1),tj=S(2),uj=S(4),vj=S(8),wj=S(16),xj=S(32),yj=S(64),zj=S(128),Aj=S(256),Bj=S(512),Fj=S(1024),Gj=S(2048),Hj=S(4096),Ij=S(8192),Jj=S(16384),Kj=S(32768),Lj=S(65536),Mj=S(131072),Nj=S(262144),Oj=S(524288),Pj=S(1048576),
|
|
Qj=S(2097152),Rj=S(4194304),Sj=S(8388608),Tj=S(16777216),Uj=S(33554432),Vj=S(67108864),wk=S(134217728),xk=S(268435456),yk=sj|tj|uj|vj|wj|xj|yj|zj|Aj|Bj|Fj|Gj|Hj|Ij|Jj|Kj|Lj|Mj|Nj|Oj|Pj|Qj|Sj|Rj|Tj|Vj|Uj|wk|xk,zk=sj|tj|uj|vj|wj|xj|yj|zj|Aj|Qj|Rj|Sj|wk,Ak=S(0),Bk=vj|wj|zj|Bj|Fj|Gj|Hj|Ij|Jj|Kj|Lj|Mj|Nj|Oj|Pj|Qj|Sj|Tj|Vj|Uj|wk,Ck=Bk|zk,Dk=tj|vj|yj|Qj|wk|xk,Ek=tj|vj|yj|Qj|wk,Fk=S(0),Gk={E2BIG:1,EACCES:2,EADDRINUSE:3,EADDRNOTAVAIL:4,EAFNOSUPPORT:5,EALREADY:7,EAGAIN:6,EBADF:8,EBADMSG:9,EBUSY:10,ECANCELED:11,
|
|
ECHILD:12,ECONNABORTED:13,ECONNREFUSED:14,ECONNRESET:15,EDEADLOCK:16,EDESTADDRREQ:17,EDOM:18,EDQUOT:19,EEXIST:20,EFAULT:21,EFBIG:22,EHOSTDOWN:23,EHOSTUNREACH:23,EIDRM:24,EILSEQ:25,EINPROGRESS:26,EINTR:27,EINVAL:28,EIO:29,EISCONN:30,EISDIR:31,ELOOP:32,EMFILE:33,EMLINK:34,EMSGSIZE:35,EMULTIHOP:36,ENAMETOOLONG:37,ENETDOWN:38,ENETRESET:39,ENETUNREACH:40,ENFILE:41,ENOBUFS:42,ENODEV:43,ENOENT:44,ENOEXEC:45,ENOLCK:46,ENOLINK:47,ENOMEM:48,ENOMSG:49,ENOPROTOOPT:50,ENOSPC:51,ENOSYS:52,ENOTCONN:53,ENOTDIR:54,
|
|
ENOTEMPTY:55,ENOTRECOVERABLE:56,ENOTSOCK:57,ENOTTY:59,ENXIO:60,EOVERFLOW:61,EOWNERDEAD:62,EPERM:63,EPIPE:64,EPROTO:65,EPROTONOSUPPORT:66,EPROTOTYPE:67,ERANGE:68,EROFS:69,ESPIPE:70,ESRCH:71,ESTALE:72,ETIMEDOUT:73,ETXTBSY:74,EXDEV:75},Hk=(W={},W[6]="SIGHUP",W[8]="SIGINT",W[11]="SIGQUIT",W[7]="SIGILL",W[15]="SIGTRAP",W[0]="SIGABRT",W[2]="SIGBUS",W[5]="SIGFPE",W[9]="SIGKILL",W[20]="SIGUSR1",W[12]="SIGSEGV",W[21]="SIGUSR2",W[10]="SIGPIPE",W[1]="SIGALRM",W[14]="SIGTERM",W[3]="SIGCHLD",W[4]="SIGCONT",W[13]=
|
|
"SIGSTOP",W[16]="SIGTSTP",W[17]="SIGTTIN",W[18]="SIGTTOU",W[19]="SIGURG",W[23]="SIGXCPU",W[24]="SIGXFSZ",W[22]="SIGVTALRM",W),Ik=sj|tj|wj|zj|Qj|wk,Jk=sj|yj|wj|zj|Qj|wk;function Kk(b){var a=Math.trunc(b);b=S(Math.round(1E6*(b-a)));return S(a)*S(1E6)+b}function Lk(b){"number"===typeof b&&(b=Math.trunc(b));b=S(b);return Number(b/S(1E6))}
|
|
function Y(b){return function(){for(var a=[],c=0;c<arguments.length;c++)a[c]=arguments[c];try{return b.apply(void 0,Vh(a))}catch(d){if(d&&d.code&&"string"===typeof d.code)return Gk[d.code]||28;if(d instanceof Mk)return d.errno;throw d;}}}function Nk(b,a){var c=b.FD_MAP.get(a);if(!c)throw new Mk(8);if(void 0===c.filetype){var d=b.bindings.fs.fstatSync(c.real);b=Ok(b,a,d);a=b.rightsBase;d=b.rightsInheriting;c.filetype=b.filetype;c.rights||(c.rights={base:a,inheriting:d})}return c}
|
|
function Ok(b,a,c){switch(!0){case c.isBlockDevice():return{filetype:1,rightsBase:yk,rightsInheriting:yk};case c.isCharacterDevice():return void 0!==a&&b.bindings.isTTY(a)?{filetype:2,rightsBase:Ek,rightsInheriting:Fk}:{filetype:2,rightsBase:yk,rightsInheriting:yk};case c.isDirectory():return{filetype:3,rightsBase:Bk,rightsInheriting:Ck};case c.isFIFO():return{filetype:6,rightsBase:Dk,rightsInheriting:yk};case c.isFile():return{filetype:4,rightsBase:zk,rightsInheriting:Ak};case c.isSocket():return{filetype:6,
|
|
rightsBase:Dk,rightsInheriting:yk};case c.isSymbolicLink():return{filetype:7,rightsBase:S(0),rightsInheriting:S(0)};default:return{filetype:0,rightsBase:S(0),rightsInheriting:S(0)}}}
|
|
var Mk=function(b){function a(c){var d=b.call(this)||this;d.errno=c;Object.setPrototypeOf(d,a.prototype);return d}Sh(a,b);return a}(Error),pj=function(b){function a(c){var d=b.call(this,"WASI Exit error: "+c)||this;d.code=c;Object.setPrototypeOf(d,a.prototype);return d}Sh(a,b);return a}(Error),qj=function(b){function a(c){var d=b.call(this,"WASI Kill signal: "+c)||this;d.signal=c;Object.setPrototypeOf(d,a.prototype);return d}Sh(a,b);return a}(Error),Pk=function(){function b(a){function b(a){switch(a){case 1:return q.hrtime();
|
|
case 0:return Kk(Date.now());case 2:case 3:return q.hrtime()-R;default:return null}}function d(a,b){a=Nk(f,a);if(b!==S(0)&&(a.rights.base&b)===S(0))throw new Mk(63);return a}function e(a,b){f.refreshMemory();return Array.from({length:b},function(b,c){c=a+8*c;b=f.view.getUint32(c,!0);c=f.view.getUint32(c+4,!0);return new Uint8Array(f.memory.buffer,b,c)})}var g,f=this,h={};a&&a.preopens?h=a.preopens:a&&a.preopenDirectories&&(h=a.preopenDirectories);var k={};a&&a.env&&(k=a.env);var r=[];a&&a.args&&(r=
|
|
a.args);var q=rj;a&&a.bindings&&(q=a.bindings);this.view=this.memory=void 0;this.bindings=q;this.FD_MAP=new Map([[0,{real:0,filetype:2,rights:{base:Ik,inheriting:S(0)},path:void 0}],[1,{real:1,filetype:2,rights:{base:Jk,inheriting:S(0)},path:void 0}],[2,{real:2,filetype:2,rights:{base:Jk,inheriting:S(0)},path:void 0}]]);var t=this.bindings.fs,v=this.bindings.path;try{for(var l=Th(Object.entries(h)),n=l.next();!n.done;n=l.next()){var y=Uh(n.value,2),B=y[0],O=y[1],X=t.openSync(O,t.constants.O_RDONLY),
|
|
M=Vh(this.FD_MAP.keys()).reverse()[0]+1;this.FD_MAP.set(M,{real:X,filetype:3,rights:{base:Bk,inheriting:Ck},fakePath:B,path:O})}}catch(C){var ha={error:C}}finally{try{n&&!n.done&&(g=l.return)&&g.call(l)}finally{if(ha)throw ha.error;}}var R=q.hrtime();this.wasiImport={args_get:function(a,b){f.refreshMemory();var c=a,d=b;r.forEach(function(a){f.view.setUint32(c,d,!0);c+=4;d+=U.from(f.memory.buffer).write(a+"\x00",d)});return 0},args_sizes_get:function(a,b){f.refreshMemory();f.view.setUint32(a,r.length,
|
|
!0);a=r.reduce(function(a,b){return a+U.byteLength(b)+1},0);f.view.setUint32(b,a,!0);return 0},environ_get:function(a,b){f.refreshMemory();var c=a,d=b;Object.entries(k).forEach(function(a){var b=Uh(a,2);a=b[0];b=b[1];f.view.setUint32(c,d,!0);c+=4;d+=U.from(f.memory.buffer).write(a+"="+b+"\x00",d)});return 0},environ_sizes_get:function(a,b){f.refreshMemory();var c=Object.entries(k).map(function(a){a=Uh(a,2);return a[0]+"="+a[1]+"\x00"}),d=c.reduce(function(a,b){return a+U.byteLength(b)},0);f.view.setUint32(a,
|
|
c.length,!0);f.view.setUint32(b,d,!0);return 0},clock_res_get:function(a,b){switch(a){case 1:case 2:case 3:var c=S(1);break;case 0:c=S(1E3)}f.view.setBigUint64(b,c);return 0},clock_time_get:function(a,c,d){f.refreshMemory();a=b(a);if(null===a)return 28;f.view.setBigUint64(d,S(a),!0);return 0},fd_advise:Y(function(a){d(a,zj);return 52}),fd_allocate:Y(function(a){d(a,Aj);return 52}),fd_close:Y(function(a){var b=d(a,S(0));t.closeSync(b.real);f.FD_MAP.delete(a);return 0}),fd_datasync:Y(function(a){a=
|
|
d(a,sj);t.fdatasyncSync(a.real);return 0}),fd_fdstat_get:Y(function(a,b){a=d(a,S(0));f.refreshMemory();f.view.setUint8(b,a.filetype);f.view.setUint16(b+2,0,!0);f.view.setUint16(b+4,0,!0);f.view.setBigUint64(b+8,S(a.rights.base),!0);f.view.setBigUint64(b+8+8,S(a.rights.inheriting),!0);return 0}),fd_fdstat_set_flags:Y(function(a){d(a,vj);return 52}),fd_fdstat_set_rights:Y(function(a,b,c){a=d(a,S(0));if((a.rights.base|b)>a.rights.base||(a.rights.inheriting|c)>a.rights.inheriting)return 63;a.rights.base=
|
|
b;a.rights.inheriting=c;return 0}),fd_filestat_get:Y(function(a,b){a=d(a,Qj);var c=t.fstatSync(a.real);f.refreshMemory();f.view.setBigUint64(b,S(c.dev),!0);b+=8;f.view.setBigUint64(b,S(c.ino),!0);b+=8;f.view.setUint8(b,a.filetype);b+=8;f.view.setBigUint64(b,S(c.nlink),!0);b+=8;f.view.setBigUint64(b,S(c.size),!0);b+=8;f.view.setBigUint64(b,Kk(c.atimeMs),!0);b+=8;f.view.setBigUint64(b,Kk(c.mtimeMs),!0);f.view.setBigUint64(b+8,Kk(c.ctimeMs),!0);return 0}),fd_filestat_set_size:Y(function(a,b){a=d(a,Rj);
|
|
t.ftruncateSync(a.real,Number(b));return 0}),fd_filestat_set_times:Y(function(a,c,e,f){a=d(a,Sj);var g=t.fstatSync(a.real),h=g.atime;g=g.mtime;var k=Lk(b(0));if(3===(f&3)||12===(f&12))return 28;1===(f&1)?h=Lk(c):2===(f&2)&&(h=k);4===(f&4)?g=Lk(e):8===(f&8)&&(g=k);t.futimesSync(a.real,new Date(h),new Date(g));return 0}),fd_prestat_get:Y(function(a,b){a=d(a,S(0));if(!a.path)return 28;f.refreshMemory();f.view.setUint8(b,0);f.view.setUint32(b+4,U.byteLength(a.fakePath),!0);return 0}),fd_prestat_dir_name:Y(function(a,
|
|
b,c){a=d(a,S(0));if(!a.path)return 28;f.refreshMemory();U.from(f.memory.buffer).write(a.fakePath,b,c,"utf8");return 0}),fd_pwrite:Y(function(a,b,c,g,h){var k=d(a,yj|uj),l=0;e(b,c).forEach(function(a){for(var b=0;b<a.byteLength;)b+=t.writeSync(k.real,a,b,a.byteLength-b,Number(g)+l+b);l+=b});f.view.setUint32(h,l,!0);return 0}),fd_write:Y(function(a,b,c,g){var h=d(a,yj),k=0;e(b,c).forEach(function(a){for(var b=0;b<a.byteLength;){var c=t.writeSync(h.real,a,b,a.byteLength-b,h.offset?Number(h.offset):null);
|
|
h.offset&&(h.offset+=S(c));b+=c}k+=b});f.view.setUint32(g,k,!0);return 0}),fd_pread:Y(function(a,b,c,g,h){var k;a=d(a,tj|uj);var l=0;try{var n=Th(e(b,c)),q=n.next();a:for(;!q.done;q=n.next()){var r=q.value;for(b=0;b<r.byteLength;){var v=r.byteLength-b,C=t.readSync(a.real,r,b,r.byteLength-b,Number(g)+l+b);b+=C;l+=C;if(0===C||C<v)break a}l+=b}}catch(P){var H={error:P}}finally{try{q&&!q.done&&(k=n.return)&&k.call(n)}finally{if(H)throw H.error;}}f.view.setUint32(h,l,!0);return 0}),fd_read:Y(function(a,
|
|
b,c,g){var h;a=d(a,tj);var k=0===a.real,l=0;try{var n=Th(e(b,c)),q=n.next();a:for(;!q.done;q=n.next()){var r=q.value;for(b=0;b<r.byteLength;){var v=r.byteLength-b,C=t.readSync(a.real,r,b,v,k||void 0===a.offset?null:Number(a.offset));k||(a.offset=(a.offset?a.offset:S(0))+S(C));b+=C;l+=C;if(0===C||C<v)break a}}}catch(P){var H={error:P}}finally{try{q&&!q.done&&(h=n.return)&&h.call(n)}finally{if(H)throw H.error;}}f.view.setUint32(g,l,!0);return 0}),fd_readdir:Y(function(a,b,c,e,g){a=d(a,Jj);f.refreshMemory();
|
|
var h=t.readdirSync(a.path,{withFileTypes:!0}),k=b;for(e=Number(e);e<h.length;e+=1){var l=h[e],n=U.byteLength(l.name);if(b-k>c)break;f.view.setBigUint64(b,S(e+1),!0);b+=8;if(b-k>c)break;var q=t.statSync(v.resolve(a.path,l.name));f.view.setBigUint64(b,S(q.ino),!0);b+=8;if(b-k>c)break;f.view.setUint32(b,n,!0);b+=4;if(b-k>c)break;switch(!0){case q.isBlockDevice():q=1;break;case q.isCharacterDevice():q=2;break;case q.isDirectory():q=3;break;case q.isFIFO():q=6;break;case q.isFile():q=4;break;case q.isSocket():q=
|
|
6;break;case q.isSymbolicLink():q=7;break;default:q=0}f.view.setUint8(b,q);b+=1;b+=3;if(b+n>=k+c)break;U.from(f.memory.buffer).write(l.name,b);b+=n}f.view.setUint32(g,Math.min(b-k,c),!0);return 0}),fd_renumber:Y(function(a,b){d(a,S(0));d(b,S(0));t.closeSync(f.FD_MAP.get(a).real);f.FD_MAP.set(a,f.FD_MAP.get(b));f.FD_MAP.delete(b);return 0}),fd_seek:Y(function(a,b,c,e){a=d(a,uj);f.refreshMemory();switch(c){case 1:a.offset=(a.offset?a.offset:S(0))+S(b);break;case 2:c=t.fstatSync(a.real).size;a.offset=
|
|
S(c)+S(b);break;case 0:a.offset=S(b)}f.view.setBigUint64(e,a.offset,!0);return 0}),fd_tell:Y(function(a,b){a=d(a,xj);f.refreshMemory();a.offset||(a.offset=S(0));f.view.setBigUint64(b,a.offset,!0);return 0}),fd_sync:Y(function(a){a=d(a,wj);t.fsyncSync(a.real);return 0}),path_create_directory:Y(function(a,b,c){a=d(a,Bj);if(!a.path)return 28;f.refreshMemory();b=U.from(f.memory.buffer,b,c).toString();t.mkdirSync(v.resolve(a.path,b));return 0}),path_filestat_get:Y(function(a,b,c,e,g){a=d(a,Nj);if(!a.path)return 28;
|
|
f.refreshMemory();c=U.from(f.memory.buffer,c,e).toString();c=t.statSync(v.resolve(a.path,c));f.view.setBigUint64(g,S(c.dev),!0);g+=8;f.view.setBigUint64(g,S(c.ino),!0);g+=8;f.view.setUint8(g,Ok(f,void 0,c).filetype);g+=8;f.view.setBigUint64(g,S(c.nlink),!0);g+=8;f.view.setBigUint64(g,S(c.size),!0);g+=8;f.view.setBigUint64(g,Kk(c.atimeMs),!0);g+=8;f.view.setBigUint64(g,Kk(c.mtimeMs),!0);f.view.setBigUint64(g+8,Kk(c.ctimeMs),!0);return 0}),path_filestat_set_times:Y(function(a,c,e,g,h,k,l){a=d(a,Pj);
|
|
if(!a.path)return 28;f.refreshMemory();var n=t.fstatSync(a.real);c=n.atime;n=n.mtime;var q=Lk(b(0));if(3===(l&3)||12===(l&12))return 28;1===(l&1)?c=Lk(h):2===(l&2)&&(c=q);4===(l&4)?n=Lk(k):8===(l&8)&&(n=q);e=U.from(f.memory.buffer,e,g).toString();t.utimesSync(v.resolve(a.path,e),new Date(c),new Date(n));return 0}),path_link:Y(function(a,b,c,e,g,h,k){a=d(a,Gj);g=d(g,Hj);if(!a.path||!g.path)return 28;f.refreshMemory();c=U.from(f.memory.buffer,c,e).toString();h=U.from(f.memory.buffer,h,k).toString();
|
|
t.linkSync(v.resolve(a.path,c),v.resolve(g.path,h));return 0}),path_open:Y(function(a,b,c,e,g,h,k,l,n){b=d(a,Ij);h=S(h);k=S(k);a=(h&(tj|Jj))!==S(0);var q=(h&(sj|yj|Aj|Rj))!==S(0);if(q&&a)var r=t.constants.O_RDWR;else a?r=t.constants.O_RDONLY:q&&(r=t.constants.O_WRONLY);a=h|Ij;h|=k;0!==(g&1)&&(r|=t.constants.O_CREAT,a|=Fj);0!==(g&2)&&(r|=t.constants.O_DIRECTORY);0!==(g&4)&&(r|=t.constants.O_EXCL);0!==(g&8)&&(r|=t.constants.O_TRUNC,a|=Oj);0!==(l&1)&&(r|=t.constants.O_APPEND);0!==(l&2)&&(r=t.constants.O_DSYNC?
|
|
r|t.constants.O_DSYNC:r|t.constants.O_SYNC,h|=sj);0!==(l&4)&&(r|=t.constants.O_NONBLOCK);0!==(l&8)&&(r=t.constants.O_RSYNC?r|t.constants.O_RSYNC:r|t.constants.O_SYNC,h|=wj);0!==(l&16)&&(r|=t.constants.O_SYNC,h|=wj);q&&0===(r&(t.constants.O_APPEND|t.constants.O_TRUNC))&&(h|=uj);f.refreshMemory();c=U.from(f.memory.buffer,c,e).toString();c=v.resolve(b.path,c);if(v.relative(b.path,c).startsWith(".."))return 76;try{var y=t.realpathSync(c);if(v.relative(b.path,y).startsWith(".."))return 76}catch(P){if("ENOENT"===
|
|
P.code)y=c;else throw P;}try{var C=t.statSync(y).isDirectory()}catch(P){}r=!q&&C?t.openSync(y,t.constants.O_RDONLY):t.openSync(y,r);C=Vh(f.FD_MAP.keys()).reverse()[0]+1;f.FD_MAP.set(C,{real:r,filetype:void 0,rights:{base:a,inheriting:h},path:y});Nk(f,C);f.view.setUint32(n,C,!0);return 0}),path_readlink:Y(function(a,b,c,e,g,h){a=d(a,Kj);if(!a.path)return 28;f.refreshMemory();b=U.from(f.memory.buffer,b,c).toString();b=v.resolve(a.path,b);b=t.readlinkSync(b);e=U.from(f.memory.buffer).write(b,e,g);f.view.setUint32(h,
|
|
e,!0);return 0}),path_remove_directory:Y(function(a,b,c){a=d(a,Uj);if(!a.path)return 28;f.refreshMemory();b=U.from(f.memory.buffer,b,c).toString();t.rmdirSync(v.resolve(a.path,b));return 0}),path_rename:Y(function(a,b,c,e,g,h){a=d(a,Lj);e=d(e,Mj);if(!a.path||!e.path)return 28;f.refreshMemory();b=U.from(f.memory.buffer,b,c).toString();g=U.from(f.memory.buffer,g,h).toString();t.renameSync(v.resolve(a.path,b),v.resolve(e.path,g));return 0}),path_symlink:Y(function(a,b,c,e,g){c=d(c,Tj);if(!c.path)return 28;
|
|
f.refreshMemory();a=U.from(f.memory.buffer,a,b).toString();e=U.from(f.memory.buffer,e,g).toString();t.symlinkSync(a,v.resolve(c.path,e));return 0}),path_unlink_file:Y(function(a,b,c){a=d(a,Vj);if(!a.path)return 28;f.refreshMemory();b=U.from(f.memory.buffer,b,c).toString();t.unlinkSync(v.resolve(a.path,b));return 0}),poll_oneoff:function(a,c,d,e){var g=0,h=0;f.refreshMemory();for(var k=0;k<d;k+=1){var l=f.view.getBigUint64(a,!0);a+=8;var n=f.view.getUint8(a);a+=1;switch(n){case 0:a+=7;f.view.getBigUint64(a,
|
|
!0);a+=8;var r=f.view.getUint32(a,!0);a+=4;a+=4;n=f.view.getBigUint64(a,!0);a+=8;f.view.getBigUint64(a,!0);a+=8;var t=f.view.getUint16(a,!0);a+=2;a+=6;var v=1===t;t=0;r=S(b(r));null===r?t=28:(n=v?n:r+n,h=n>h?n:h);f.view.setBigUint64(c,l,!0);c+=8;f.view.setUint16(c,t,!0);c+=2;f.view.setUint8(c,0);c+=1;c+=5;g+=1;break;case 1:case 2:a+=3;f.view.getUint32(a,!0);a+=4;f.view.setBigUint64(c,l,!0);c+=8;f.view.setUint16(c,52,!0);c+=2;f.view.setUint8(c,n);c+=1;c+=5;g+=1;break;default:return 28}}for(f.view.setUint32(e,
|
|
g,!0);q.hrtime()<h;);return 0},proc_exit:function(a){q.exit(a);return 0},proc_raise:function(a){if(!(a in Hk))return 28;q.kill(Hk[a]);return 0},random_get:function(a,b){f.refreshMemory();q.randomFillSync(new Uint8Array(f.memory.buffer),a,b);return 0},sched_yield:function(){return 0},sock_recv:function(){return 52},sock_send:function(){return 52},sock_shutdown:function(){return 52}};a.traceSyscalls&&Object.keys(this.wasiImport).forEach(function(a){var b=f.wasiImport[a];f.wasiImport[a]=function(){for(var c=
|
|
[],d=0;d<arguments.length;d++)c[d]=arguments[d];console.log("WASI: wasiImport called: "+a+" ("+c+")");try{var e=b.apply(void 0,Vh(c));console.log("WASI: => "+e);return e}catch(I){throw console.log("Catched error: "+I),I;}}})}b.prototype.refreshMemory=function(){this.view&&0!==this.view.buffer.byteLength||(this.view=new Xh(this.memory.buffer))};b.prototype.setMemory=function(a){this.memory=a};b.prototype.start=function(a){a=a.exports;if(null===a||"object"!==typeof a)throw Error("instance.exports must be an Object. Received "+
|
|
a+".");var b=a.memory;if(!(b instanceof WebAssembly.Memory))throw Error("instance.exports.memory must be a WebAssembly.Memory. Recceived "+b+".");this.setMemory(b);a._start&&a._start()};b.prototype.getImportNamespace=function(a){var b,d=null;try{for(var e=Th(WebAssembly.Module.imports(a)),g=e.next();!g.done;g=e.next()){var f=g.value;if("function"===f.kind&&f.module.startsWith("wasi_"))if(!d)d=f.module;else if(d!==f.module)throw Error("Multiple namespaces detected.");}}catch(k){var h={error:k}}finally{try{g&&
|
|
!g.done&&(b=e.return)&&b.call(e)}finally{if(h)throw h.error;}}return d};b.prototype.getImports=function(a){switch(this.getImportNamespace(a)){case "wasi_unstable":return{wasi_unstable:this.wasiImport};case "wasi_snapshot_preview1":return{wasi_snapshot_preview1:this.wasiImport};default:throw Error("Can't detect a WASI namespace for the WebAssembly Module");}};b.defaultBindings=rj;return b}(),Qk=function(){function b(a){this.options=a}b.prototype.run=function(){return rg(this,void 0,void 0,function(){return sg(this,
|
|
function(){throw Error("run not implemented by the Command subclass");})})};return b}(),Rk=function(b){function a(a){var c=b.call(this,a)||this;if(!a.module)throw Error("Did not find a WebAssembly.Module for the WASI Command");return c}pg(a,b);a.prototype.run=function(a){return rg(this,void 0,void 0,function(){var b,c,g,f;return sg(this,function(d){switch(d.label){case 0:return b={preopens:qg({".":".","/":"/"},this.options.preopens||{}),env:this.options.env,args:this.options.args,bindings:qg(qg({},
|
|
Pk.defaultBindings),{fs:a.fs})},c=new Pk(b),g=this.options.module,[4,WebAssembly.instantiate(g,qg({},c.getImports(g)))];case 1:return f=d.sent(),c.start(f),[2]}})})};return a}(Qk),Sk=function(b){function a(a){var c=b.call(this,a)||this;if(!a.callback)throw Error("The Command Options provided are not for a Callback Command");c.callback=a.callback;return c}pg(a,b);a.prototype.run=function(a){return rg(this,void 0,void 0,function(){var b;return sg(this,function(c){switch(c.label){case 0:return[4,Promise.resolve(this.callback(this.options,
|
|
a))];case 1:return b=c.sent(),"string"==typeof b&&a.fs.writeFileSync("/dev/stdout",(new TextEncoder).encode(b+"\n")),[2]}})})};return a}(Qk),Tk=function(){function b(a,b,d,e,g,f,h,k,r){var c=this;this.stdinPrompt="";this.commandOptions=a;this.wasmFs=new mg;this.wasmFs.fromJSON(b);this.originalWasmFsJson=b;this.ioDevices=new Qh(this.wasmFs);this.ioDeviceWindow=f;this.ioDevices.setWindowSizeCallback(function(){var a=c.ioDevices.getWindowSize();c.ioDeviceWindow.resize(a[0],a[1])});this.ioDevices.setBufferIndexDisplayCallback(function(){var a=
|
|
c.ioDevices.getFrameBuffer();c.ioDeviceWindow.drawRgbaArrayToFrameBuffer(a)});this.ioDevices.setInputCallback(function(){if(c.sharedIoDeviceInput){c.ioDeviceWindow.getInputBuffer();Atomics.wait(c.sharedIoDeviceInput,0,-1);var a=c.sharedIoDeviceInput[0];c.sharedIoDeviceInput[0]=-1;if(0<a){for(var b=new Uint8Array(a),d=0;d<a;d++)b[d]=c.sharedIoDeviceInput[d+1];return b}return new Uint8Array}return c.ioDeviceWindow.getInputBuffer()});this.dataCallback=d;this.endCallback=e;this.errorCallback=g;b=void 0;
|
|
h&&(b=new Int32Array(h));this.sharedIoDeviceInput=b;h=void 0;k&&(h=new Int32Array(k));this.command=a.module?new Rk(a):new Sk(a);this.wasmFs.volume.fds[0].node.read=this.stdinRead.bind(this);this.wasmFs.volume.fds[1].node.write=this.stdoutWrite.bind(this);this.wasmFs.volume.fds[2].node.write=this.stdoutWrite.bind(this);a=this.wasmFs.volume.openSync("/dev/tty","w+");this.wasmFs.volume.fds[a].node.read=this.stdinRead.bind(this);this.wasmFs.volume.fds[a].node.write=this.stdoutWrite.bind(this);this.sharedStdin=
|
|
h;this.startStdinReadCallback=r;this.readStdinCounter=0;this.pipedStdin=""}b.prototype.start=function(a){return rg(this,void 0,void 0,function(){var b,d,e,g=this;return sg(this,function(c){switch(c.label){case 0:b=function(){g.ioDeviceWindow.resize(0,0);setTimeout(function(){g.endCallback(g.wasmFs.toJSON())},50)},c.label=1;case 1:return c.trys.push([1,3,,4]),a&&(this.pipedStdin=(new TextDecoder("utf-8")).decode(a)),[4,this.command.run(this.wasmFs)];case 2:return c.sent(),b(),[3,4];case 3:d=c.sent();
|
|
if(d instanceof pj)return b(),[2];e="Unknown Error";if(void 0!==d.code)e="exited with code: "+d.code;else if(void 0!==d.signal)e="killed with signal: "+d.signal;else if(void 0!==d.user)return b(),[2];console.error(d);this.errorCallback(e,this.wasmFs.toJSON(),void 0!==d.user);return[3,4];case 4:return[2]}})})};b.prototype.stdoutWrite=function(a){this.dataCallback&&this.dataCallback(a);var b=(new TextDecoder("utf-8")).decode(a).split("\n");this.stdinPrompt=0<b.length?b[b.length-1].replace(/[\u001B\u009B][[\]()#;?]*(?:(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-ntqry=><~]))/g,
|
|
""):"";return a.length};b.prototype.stdinRead=function(a){if(0!==this.readStdinCounter%2)return this.readStdinCounter++,0;if(this.pipedStdin){var b=this.pipedStdin;this.pipedStdin="";this.readStdinCounter++}else if(this.sharedStdin&&this.startStdinReadCallback){this.startStdinReadCallback();Atomics.wait(this.sharedStdin,0,-1);b=this.sharedStdin[0];this.sharedStdin[0]=-1;for(var d=new Uint8Array(b),e=0;e<b;e++)d[e]=this.sharedStdin[1+e];b=(new TextDecoder("utf-8")).decode(d)}else{b=prompt("Please enter text for stdin:\n"+
|
|
this.stdinPrompt);if(null===b)throw this.dataCallback&&this.dataCallback((new TextEncoder).encode("\n")),a=Error("Process killed by user"),a.user=!0,a;b+="\n";this.dataCallback&&this.dataCallback((new TextEncoder).encode(b))}if(!b)return 0;b=(new TextEncoder).encode(b);for(d=0;d<b.length;++d)a[d]=b[d];return b.length};return b}(),Uk=function(){function b(a){this.oldPopupKeyCodes=[];this.popupKeyCodes=[];this.oldMouseMovePosition={x:0,y:0};this.mouseMovePosition={x:0,y:0};this.mouseMiddleClickPosition=
|
|
this.mouseRightClickPosition=this.mouseLeftClickPosition=void 0;a&&(this.sharedIoDeviceInput=new Int32Array(a))}b.prototype.resize=function(a,b){0===a&&0===b?this.close():this.popupWindow&&this.popupCanvas&&this.popupCanvasContext?(this.popupCanvas.width=a,this.popupCanvas.height=b,this.popupImageData=this.popupCanvasContext.getImageData(0,0,a,b)):this._open(a,b)};b.prototype.close=function(){this.popupWindow&&(this.popupWindow.close(),this.popupWindow=void 0)};b.prototype.drawRgbaArrayToFrameBuffer=
|
|
function(a){this.popupCanvas&&this.popupCanvasContext&&this.popupImageData&&(this.popupImageData.data.set(a),this.popupCanvasContext.putImageData(this.popupImageData,0,0))};b.prototype.getInputBuffer=function(){var a=this,b=[];this.popupKeyCodes.forEach(function(c){a.oldPopupKeyCodes.includes(c)||(b.push(1),b.push(c))});if(this.oldMouseMovePosition.x!==this.mouseMovePosition.x||this.oldMouseMovePosition.y!==this.mouseMovePosition.y)b.push(2),this._append32BitIntToByteArray(this.mouseMovePosition.x,
|
|
b),this._append32BitIntToByteArray(this.mouseMovePosition.y,b);this.oldMouseMovePosition=this.mouseMovePosition;this.oldPopupKeyCodes.forEach(function(c){a.popupKeyCodes.includes(c)||(b.push(3),b.push(c))});this.oldPopupKeyCodes=this.popupKeyCodes.slice(0);this.mouseLeftClickPosition&&(b.push(4),this._append32BitIntToByteArray(this.mouseLeftClickPosition.x,b),this._append32BitIntToByteArray(this.mouseLeftClickPosition.y,b),this.mouseLeftClickPosition=void 0);this.mouseRightClickPosition&&(b.push(5),
|
|
this._append32BitIntToByteArray(this.mouseRightClickPosition.x,b),this._append32BitIntToByteArray(this.mouseRightClickPosition.y,b),this.mouseRightClickPosition=void 0);this.mouseMiddleClickPosition&&(b.push(4),this._append32BitIntToByteArray(this.mouseMiddleClickPosition.x,b),this._append32BitIntToByteArray(this.mouseMiddleClickPosition.y,b),this.mouseMiddleClickPosition=void 0);var d=new Uint8Array(b);if(this.sharedIoDeviceInput){for(var e=0;e<d.length;e++)this.sharedIoDeviceInput[e+1]=d[e];this.sharedIoDeviceInput[0]=
|
|
d.length;Atomics.notify(this.sharedIoDeviceInput,0,1)}return d};b.prototype._open=function(a,b){var c=Math.min(Math.floor(screen.width/a),Math.floor(screen.height/b));this.popupWindow=window.open("about:blank","WasmerExperimentalFramebuffer","width="+a*c+",height="+b*c);this.popupWindow.document.body.innerHTML='\n <style>\n html, body {\n width: 100%;\n height: 100%;\n }\n\n body {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n margin: 0px;\n margin-left: auto;\n margin-right: auto;\n }\n\n #io-device-framebuffer {\n\n width: 100%;\n height: auto;\n\n /* Will Keep pixel art looking good */\n image-rendering: pixelated;\n image-rendering: -moz-crisp-edges;\n image-rendering: crisp-edges;\n }\n </style>\n <canvas id="io-device-framebuffer" width="'+
|
|
a+'" height="'+b+'"></canvas>\n ';this.popupWindow.document.head.innerHTML="\n <title>Wasmer Experimental Framebuffer</title>\n ";this.popupCanvas=this.popupWindow.document.querySelector("#io-device-framebuffer");this.popupCanvasContext=this.popupCanvas.getContext("2d");this.popupImageData=this.popupCanvasContext.getImageData(0,0,a,b);this.popupWindow.document.addEventListener("keydown",this._eventListenerKeydown.bind(this));this.popupWindow.document.addEventListener("keyup",this._eventListenerKeyup.bind(this));
|
|
this.popupWindow.document.addEventListener("mousemove",this._eventListenerMousemove.bind(this));this.popupWindow.document.addEventListener("click",this._eventListenerClick.bind(this))};b.prototype._append32BitIntToByteArray=function(a,b){for(var c=0;4>c;c++){var e=a;e&=255<<8*c;e>>=8*c;b.push(e)}};b.prototype._eventListenerKeydown=function(a){a.preventDefault();this.popupKeyCodes.includes(a.keyCode)||this.popupKeyCodes.push(a.keyCode)};b.prototype._eventListenerKeyup=function(a){a.preventDefault();
|
|
a=this.popupKeyCodes.indexOf(a.keyCode);-1<a&&this.popupKeyCodes.splice(a,1)};b.prototype._eventListenerMousemove=function(a){a=this._getPositionFromMouseEvent(a);void 0!==a&&(this.mouseMovePosition=a)};b.prototype._eventListenerClick=function(a){var b=this._getPositionFromMouseEvent(a);void 0!==b&&(0===a.button?this.mouseLeftClickPosition=b:1===a.button?this.mouseMiddleClickPosition=b:2===a.button&&(this.mouseRightClickPosition=b))};b.prototype._getPositionFromMouseEvent=function(a){if(this.popupCanvas){var b=
|
|
this.popupCanvas.getBoundingClientRect(),d=b.x,e=b.x+b.width,g=b.y,f=b.y+b.height,h=void 0,k=void 0;a.x>=d&&a.x<=e&&(h=a.x-d);a.y>=g&&a.y<=f&&(k=a.y-g);if(void 0!==h&&void 0!==k)return{x:this.popupCanvas.width/b.width*h,y:this.popupCanvas.height/b.height*k}}};return b}();function Vk(b){return b&&("[object Function]"===Object.prototype.toString.call(b)||"function"===typeof b||b instanceof Function)}
|
|
var Wk,Xk=function(){function b(a,b,d,e,g){this.wasmTerminalConfig=a;this.commandString=b;this.commandStartReadCallback=d;this.commandEndCallback=e;g&&(this.wasmTty=g);this.commandOptionsForProcessesToRun=[];this.spawnedProcessObjects=[];this.spawnedProcesses=0;this.pipedStdinDataForNextProcess=new Uint8Array;this.isRunning=!1;this.supportsSharedArrayBuffer=this.wasmTerminalConfig.processWorkerUrl&&window.SharedArrayBuffer&&window.Atomics}b.prototype.runCommand=function(){return rg(this,void 0,void 0,
|
|
function(){var a,b,d;return sg(this,function(c){switch(c.label){case 0:a=Mh(this.commandString),c.label=1;case 1:c.trys.push([1,3,,4]);if(1<a.length)throw Error("Only one command permitted");if("command"!==a[0].type)throw Error("Only commands allowed");b=this;return[4,this._getCommandOptionsFromAST(a[0],this.wasmTerminalConfig,this.wasmTty)];case 2:return b.commandOptionsForProcessesToRun=c.sent(),[3,4];case 3:return d=c.sent(),this.wasmTty&&(this.wasmTty.print("\r\n"),this.wasmTty.print("wasm shell: parse error ("+
|
|
d.toString()+")\r\n")),console.error(d),this.commandEndCallback(),[2];case 4:return this.isRunning=!0,[4,this._tryToSpawnProcess(0)];case 5:return c.sent(),[2]}})})};b.prototype.kill=function(){this.isRunning&&(this.spawnedProcessObjects.forEach(function(a){a.worker&&a.worker.terminate();a.ioDeviceWindow&&a.ioDeviceWindow.close()}),this.commandOptionsForProcessesToRun=[],this.spawnedProcessObjects=[],this.isRunning=!1,this.commandEndCallback())};b.prototype._addStdinToSharedStdin=function(a,b){if(this.spawnedProcessObjects[b]){var c=
|
|
this.spawnedProcessObjects[b].sharedStdin,e=1;0<c[0]&&(e=c[0]);a.forEach(function(a,b){c[e+b]=a});c[0]=e+a.length-1;Atomics.notify(c,0,1)}};b.prototype._tryToSpawnProcess=function(a){return rg(this,void 0,void 0,function(){return sg(this,function(b){switch(b.label){case 0:if(!(a+1>this.spawnedProcesses&&2>this.spawnedProcessObjects.length&&a<this.commandOptionsForProcessesToRun.length))return[3,2];this.spawnedProcesses++;return[4,this._spawnProcess(a)];case 1:b.sent(),b.label=2;case 2:return[2]}})})};
|
|
b.prototype._spawnProcess=function(a){return rg(this,void 0,void 0,function(){var b,d;return sg(this,function(c){switch(c.label){case 0:return b=void 0,this.commandOptionsForProcessesToRun[a].module&&this.supportsSharedArrayBuffer?[4,this._spawnProcessAsWorker(a)]:[3,2];case 1:return b=c.sent(),[3,4];case 2:return[4,this._spawnProcessAsService(a)];case 3:b=c.sent(),c.label=4;case 4:return this.spawnedProcessObjects.push(b),b.process.start(0<this.pipedStdinDataForNextProcess.length?this.pipedStdinDataForNextProcess:
|
|
void 0),0<this.pipedStdinDataForNextProcess.length&&(this.pipedStdinDataForNextProcess=new Uint8Array),d=!1,this.commandOptionsForProcessesToRun.length>a+1&&(d=void 0!==this.commandOptionsForProcessesToRun[a+1].callback),this.supportsSharedArrayBuffer&&!d&&this._tryToSpawnProcess(a+1),[2]}})})};b.prototype._spawnProcessAsWorker=function(a){return rg(this,void 0,void 0,function(){var b,d,e,g,f,h,k,r,q,t;return sg(this,function(c){switch(c.label){case 0:if(!this.wasmTerminalConfig.processWorkerUrl)throw Error("Terminal Config missing the Process Worker URL");
|
|
b=this.wasmTerminalConfig.processWorkerUrl;b="data:application/javascript;base64,LyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UKICAgIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlCiAgICBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKICAgIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRUQKICAgIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsCiAgICBNRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULgoKICAgIFNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucwogICAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KJ3VzZSBzdHJpY3QnOyhmdW5jdGlvbigpe2Z1bmN0aW9uIG1jKGMsYT1zZWxmKXthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIGUoZCl7aWYoZCYmZC5kYXRhKXt2YXIge2lkOmYsdHlwZTpnLHBhdGg6aH09T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sZC5kYXRhKSxrPShkLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKEZhKTt0cnl7bGV0IGE9aC5zbGljZSgwLC0xKS5yZWR1Y2UoKGEsYyk9PmFbY10sYyksZT1oLnJlZHVjZSgoYSxjKT0+YVtjXSxjKTtzd2l0Y2goZyl7Y2FzZSAwOnZhciB0PWU7YnJlYWs7Y2FzZSAxOmFbaC5zbGljZSgtMSlbMF1dPUZhKGQuZGF0YS52YWx1ZSk7dD0hMDticmVhaztjYXNlIDI6dD1lLmFwcGx5KGEsayk7YnJlYWs7Y2FzZSAzOntsZXQgYT1uZXcgZSguLi5rKTt0PU9iamVjdC5hc3NpZ24oYSx7W3ZkXTohMH0pfWJyZWFrO2Nhc2UgNDp7bGV0IHtwb3J0MTphLHBvcnQyOmR9PW5ldyBNZXNzYWdlQ2hhbm5lbDttYyhjLGQpO3Q9CkNmKGEsW2FdKX1icmVhaztjYXNlIDU6dD12b2lkIDB9fWNhdGNoKHEpe3Q9cSxuYy5hZGQocSl9UHJvbWlzZS5yZXNvbHZlKHQpLmNhdGNoKGE9PntuYy5hZGQoYSk7cmV0dXJuIGF9KS50aGVuKGM9PntsZXQgW2QsaF09b2MoYyk7YS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZCkse2lkOmZ9KSxoKTs1PT09ZyYmKGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZSksIk1lc3NhZ2VQb3J0Ij09PWEuY29uc3RydWN0b3IubmFtZSYmYS5jbG9zZSgpKX0pfX0pO2Euc3RhcnQmJmEuc3RhcnQoKX1mdW5jdGlvbiBEYihjKXtpZihjKXRocm93IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKTt9ZnVuY3Rpb24gcGMoYyxhPVtdLGI9ZnVuY3Rpb24oKXt9KXtsZXQgZD0hMSxlPW5ldyBQcm94eShiLHtnZXQoYixnKXtEYihkKTtpZihnPT09RGYpcmV0dXJuKCk9PlRhKGMse3R5cGU6NSxwYXRoOmEubWFwKGE9PgphLnRvU3RyaW5nKCkpfSkudGhlbigoKT0+eyJNZXNzYWdlUG9ydCI9PT1jLmNvbnN0cnVjdG9yLm5hbWUmJmMuY2xvc2UoKTtkPSEwfSk7aWYoInRoZW4iPT09Zyl7aWYoMD09PWEubGVuZ3RoKXJldHVybnt0aGVuOigpPT5lfTtiPVRhKGMse3R5cGU6MCxwYXRoOmEubWFwKGE9PmEudG9TdHJpbmcoKSl9KS50aGVuKEZhKTtyZXR1cm4gYi50aGVuLmJpbmQoYil9cmV0dXJuIHBjKGMsWy4uLmEsZ10pfSxzZXQoYixlLGgpe0RiKGQpO2NvbnN0IFtmLGddPW9jKGgpO3JldHVybiBUYShjLHt0eXBlOjEscGF0aDpbLi4uYSxlXS5tYXAoYT0+YS50b1N0cmluZygpKSx2YWx1ZTpmfSxnKS50aGVuKEZhKX0sYXBwbHkoYixlLGgpe0RiKGQpO2I9YVthLmxlbmd0aC0xXTtpZihiPT09RWYpcmV0dXJuIFRhKGMse3R5cGU6NH0pLnRoZW4oRmEpO2lmKCJiaW5kIj09PWIpcmV0dXJuIHBjKGMsYS5zbGljZSgwLC0xKSk7Y29uc3QgW2YsZ109d2QoaCk7cmV0dXJuIFRhKGMse3R5cGU6MixwYXRoOmEubWFwKGE9PgphLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpmfSxnKS50aGVuKEZhKX0sY29uc3RydWN0KGIsZSl7RGIoZCk7Y29uc3QgW2YsZ109d2QoZSk7cmV0dXJuIFRhKGMse3R5cGU6MyxwYXRoOmEubWFwKGE9PmEudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OmZ9LGcpLnRoZW4oRmEpfX0pO3JldHVybiBlfWZ1bmN0aW9uIHdkKGMpe2M9Yy5tYXAob2MpO3JldHVybltjLm1hcChhPT5hWzBdKSxBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGMubWFwKGE9PmFbMV0pKV19ZnVuY3Rpb24gQ2YoYyxhKXt4ZC5zZXQoYyxhKTtyZXR1cm4gY31mdW5jdGlvbiBvYyhjKXtmb3IobGV0IFthLGJdb2YgeWQpaWYoYi5jYW5IYW5kbGUoYykpe2xldCBbZCxlXT1iLnNlcmlhbGl6ZShjKTtyZXR1cm5be3R5cGU6MyxuYW1lOmEsdmFsdWU6ZH0sZV19cmV0dXJuW3t0eXBlOjAsdmFsdWU6Y30seGQuZ2V0KGMpfHxbXV19ZnVuY3Rpb24gRmEoYyl7c3dpdGNoKGMudHlwZSl7Y2FzZSAzOnJldHVybiB5ZC5nZXQoYy5uYW1lKS5kZXNlcmlhbGl6ZShjLnZhbHVlKTsKY2FzZSAwOnJldHVybiBjLnZhbHVlfX1mdW5jdGlvbiBUYShjLGEsYil7cmV0dXJuIG5ldyBQcm9taXNlKGQ9PntsZXQgZT1GZigpO2MuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gaChhKXthLmRhdGEmJmEuZGF0YS5pZCYmYS5kYXRhLmlkPT09ZSYmKGMucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaCksZChhLmRhdGEpKX0pO2Muc3RhcnQmJmMuc3RhcnQoKTtjLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOmV9LGEpLGIpfSl9ZnVuY3Rpb24gRmYoKXtyZXR1cm4gQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9ZnVuY3Rpb24gemQoYyxhKXtmdW5jdGlvbiBiKCl7dGhpcy5jb25zdHJ1Y3Rvcj1jfXFjKGMsYSk7Yy5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooYi5wcm90b3R5cGU9YS5wcm90b3R5cGUsCm5ldyBiKX1mdW5jdGlvbiBFYihjLGEsYixkKXtyZXR1cm4gbmV3IChifHwoYj1Qcm9taXNlKSkoZnVuY3Rpb24oZSxmKXtmdW5jdGlvbiBnKGEpe3RyeXtrKGQubmV4dChhKSl9Y2F0Y2gocSl7ZihxKX19ZnVuY3Rpb24gaChhKXt0cnl7ayhkWyJ0aHJvdyJdKGEpKX1jYXRjaChxKXtmKHEpfX1mdW5jdGlvbiBrKGEpe2EuZG9uZT9lKGEudmFsdWUpOihuZXcgYihmdW5jdGlvbihjKXtjKGEudmFsdWUpfSkpLnRoZW4oZyxoKX1rKChkPWQuYXBwbHkoYyxhfHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBGYihjLGEpe2Z1bmN0aW9uIGIoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBkKFthLGNdKX19ZnVuY3Rpb24gZChiKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2U7KXRyeXtpZihmPTEsZyYmKGg9YlswXSYyP2dbInJldHVybiJdOmJbMF0/Z1sidGhyb3ciXXx8KChoPWdbInJldHVybiJdKSYmaC5jYWxsKGcpLAowKTpnLm5leHQpJiYhKGg9aC5jYWxsKGcsYlsxXSkpLmRvbmUpcmV0dXJuIGg7aWYoZz0wLGgpYj1bYlswXSYyLGgudmFsdWVdO3N3aXRjaChiWzBdKXtjYXNlIDA6Y2FzZSAxOmg9YjticmVhaztjYXNlIDQ6cmV0dXJuIGUubGFiZWwrKyx7dmFsdWU6YlsxXSxkb25lOiExfTtjYXNlIDU6ZS5sYWJlbCsrO2c9YlsxXTtiPVswXTtjb250aW51ZTtjYXNlIDc6Yj1lLm9wcy5wb3AoKTtlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGg9ZS50cnlzLGg9MDxoLmxlbmd0aCYmaFtoLmxlbmd0aC0xXSkmJig2PT09YlswXXx8Mj09PWJbMF0pKXtlPTA7Y29udGludWV9aWYoMz09PWJbMF0mJighaHx8YlsxXT5oWzBdJiZiWzFdPGhbM10pKWUubGFiZWw9YlsxXTtlbHNlIGlmKDY9PT1iWzBdJiZlLmxhYmVsPGhbMV0pZS5sYWJlbD1oWzFdLGg9YjtlbHNlIGlmKGgmJmUubGFiZWw8aFsyXSllLmxhYmVsPWhbMl0sZS5vcHMucHVzaChiKTtlbHNle2hbMl0mJmUub3BzLnBvcCgpO2UudHJ5cy5wb3AoKTsKY29udGludWV9fWI9YS5jYWxsKGMsZSl9Y2F0Y2gocSl7Yj1bNixxXSxnPTB9ZmluYWxseXtmPWg9MH1pZihiWzBdJjUpdGhyb3cgYlsxXTtyZXR1cm57dmFsdWU6YlswXT9iWzFdOnZvaWQgMCxkb25lOiEwfX12YXIgZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoaFswXSYxKXRocm93IGhbMV07cmV0dXJuIGhbMV19LHRyeXM6W10sb3BzOltdfSxmLGcsaCxrO3JldHVybiBrPXtuZXh0OmIoMCksInRocm93IjpiKDEpLCJyZXR1cm4iOmIoMil9LCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYoa1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxrfWZ1bmN0aW9uIEdmKGMsYSxiLGQpe3JldHVybiBuZXcgKGJ8fChiPVByb21pc2UpKShmdW5jdGlvbihlLGYpe2Z1bmN0aW9uIGcoYSl7dHJ5e2soZC5uZXh0KGEpKX1jYXRjaChxKXtmKHEpfX1mdW5jdGlvbiBoKGEpe3RyeXtrKGRbInRocm93Il0oYSkpfWNhdGNoKHEpe2YocSl9fWZ1bmN0aW9uIGsoYSl7YS5kb25lPwplKGEudmFsdWUpOihuZXcgYihmdW5jdGlvbihjKXtjKGEudmFsdWUpfSkpLnRoZW4oZyxoKX1rKChkPWQuYXBwbHkoYyxhfHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBIZihjLGEpe2Z1bmN0aW9uIGIoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBkKFthLGNdKX19ZnVuY3Rpb24gZChiKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2U7KXRyeXtpZihmPTEsZyYmKGg9YlswXSYyP2dbInJldHVybiJdOmJbMF0/Z1sidGhyb3ciXXx8KChoPWdbInJldHVybiJdKSYmaC5jYWxsKGcpLDApOmcubmV4dCkmJiEoaD1oLmNhbGwoZyxiWzFdKSkuZG9uZSlyZXR1cm4gaDtpZihnPTAsaCliPVtiWzBdJjIsaC52YWx1ZV07c3dpdGNoKGJbMF0pe2Nhc2UgMDpjYXNlIDE6aD1iO2JyZWFrO2Nhc2UgNDpyZXR1cm4gZS5sYWJlbCsrLHt2YWx1ZTpiWzFdLGRvbmU6ITF9O2Nhc2UgNTplLmxhYmVsKys7Zz1iWzFdO2I9WzBdOwpjb250aW51ZTtjYXNlIDc6Yj1lLm9wcy5wb3AoKTtlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGg9ZS50cnlzLGg9MDxoLmxlbmd0aCYmaFtoLmxlbmd0aC0xXSkmJig2PT09YlswXXx8Mj09PWJbMF0pKXtlPTA7Y29udGludWV9aWYoMz09PWJbMF0mJighaHx8YlsxXT5oWzBdJiZiWzFdPGhbM10pKWUubGFiZWw9YlsxXTtlbHNlIGlmKDY9PT1iWzBdJiZlLmxhYmVsPGhbMV0pZS5sYWJlbD1oWzFdLGg9YjtlbHNlIGlmKGgmJmUubGFiZWw8aFsyXSllLmxhYmVsPWhbMl0sZS5vcHMucHVzaChiKTtlbHNle2hbMl0mJmUub3BzLnBvcCgpO2UudHJ5cy5wb3AoKTtjb250aW51ZX19Yj1hLmNhbGwoYyxlKX1jYXRjaChxKXtiPVs2LHFdLGc9MH1maW5hbGx5e2Y9aD0wfWlmKGJbMF0mNSl0aHJvdyBiWzFdO3JldHVybnt2YWx1ZTpiWzBdP2JbMV06dm9pZCAwLGRvbmU6ITB9fXZhciBlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZihoWzBdJjEpdGhyb3cgaFsxXTtyZXR1cm4gaFsxXX0sCnRyeXM6W10sb3BzOltdfSxmLGcsaCxrO3JldHVybiBrPXtuZXh0OmIoMCksInRocm93IjpiKDEpLCJyZXR1cm4iOmIoMil9LCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYoa1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxrfWZ1bmN0aW9uIHJjKGMpe3ZhciBhPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZjW1N5bWJvbC5pdGVyYXRvcl0sYj0wO3JldHVybiBhP2EuY2FsbChjKTp7bmV4dDpmdW5jdGlvbigpe2MmJmI+PWMubGVuZ3RoJiYoYz12b2lkIDApO3JldHVybnt2YWx1ZTpjJiZjW2IrK10sZG9uZTohY319fX1mdW5jdGlvbiBJZihjLGEpe3ZhciBiPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZjW1N5bWJvbC5pdGVyYXRvcl07aWYoIWIpcmV0dXJuIGM7Yz1iLmNhbGwoYyk7dmFyIGQsZT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09YXx8MDxhLS0pJiYhKGQ9Yy5uZXh0KCkpLmRvbmU7KWUucHVzaChkLnZhbHVlKX1jYXRjaChnKXt2YXIgZj0Ke2Vycm9yOmd9fWZpbmFsbHl7dHJ5e2QmJiFkLmRvbmUmJihiPWNbInJldHVybiJdKSYmYi5jYWxsKGMpfWZpbmFsbHl7aWYoZil0aHJvdyBmLmVycm9yO319cmV0dXJuIGV9ZnVuY3Rpb24gSmYoKXtmb3IodmFyIGM9W10sYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspYz1jLmNvbmNhdChJZihhcmd1bWVudHNbYV0pKTtyZXR1cm4gY31mdW5jdGlvbiBRKGMpe3JldHVybiBjJiZjLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLCJkZWZhdWx0Iik/Y1siZGVmYXVsdCJdOmN9ZnVuY3Rpb24gSyhjLGEpe3JldHVybiBhPXtleHBvcnRzOnt9fSxjKGEsYS5leHBvcnRzKSxhLmV4cG9ydHN9ZnVuY3Rpb24gQWQoKXtzYz0hMDtmb3IodmFyIGM9MDs2ND5jOysrYylSW2NdPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIltjXSxIWyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQ29kZUF0KGMpXT0KYztIWzQ1XT02MjtIWzk1XT02M31mdW5jdGlvbiBLZihjLGEsYil7Zm9yKHZhciBkPVtdLGU9YTtlPGI7ZSs9MylhPShjW2VdPDwxNikrKGNbZSsxXTw8OCkrY1tlKzJdLGQucHVzaChSW2E+PjE4JjYzXStSW2E+PjEyJjYzXStSW2E+PjYmNjNdK1JbYSY2M10pO3JldHVybiBkLmpvaW4oIiIpfWZ1bmN0aW9uIEJkKGMpe3NjfHxBZCgpO2Zvcih2YXIgYT1jLmxlbmd0aCxiPWElMyxkPSIiLGU9W10sZj0wLGc9YS1iO2Y8ZztmKz0xNjM4MyllLnB1c2goS2YoYyxmLGYrMTYzODM+Zz9nOmYrMTYzODMpKTsxPT09Yj8oYz1jW2EtMV0sZCs9UltjPj4yXSxkKz1SW2M8PDQmNjNdLGQrPSI9PSIpOjI9PT1iJiYoYz0oY1thLTJdPDw4KStjW2EtMV0sZCs9UltjPj4xMF0sZCs9UltjPj40JjYzXSxkKz1SW2M8PDImNjNdLGQrPSI9Iik7ZS5wdXNoKGQpO3JldHVybiBlLmpvaW4oIiIpfWZ1bmN0aW9uIEdiKGMsYSxiLGQsZSl7dmFyIGY9OCplLWQtMSxnPSgxPDxmKS0xLGg9Zz4+MSxrPS03O2U9CmI/ZS0xOjA7dmFyIHQ9Yj8tMToxLHE9Y1thK2VdO2UrPXQ7Yj1xJigxPDwtayktMTtxPj49LWs7Zm9yKGsrPWY7MDxrO2I9MjU2KmIrY1thK2VdLGUrPXQsay09OCk7Zj1iJigxPDwtayktMTtiPj49LWs7Zm9yKGsrPWQ7MDxrO2Y9MjU2KmYrY1thK2VdLGUrPXQsay09OCk7aWYoMD09PWIpYj0xLWg7ZWxzZXtpZihiPT09ZylyZXR1cm4gZj9OYU46SW5maW5pdHkqKHE/LTE6MSk7Zis9TWF0aC5wb3coMixkKTtiLT1ofXJldHVybihxPy0xOjEpKmYqTWF0aC5wb3coMixiLWQpfWZ1bmN0aW9uIEhiKGMsYSxiLGQsZSxmKXt2YXIgZyxoPTgqZi1lLTEsaz0oMTw8aCktMSx0PWs+PjEscT0yMz09PWU/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowO2Y9ZD8wOmYtMTt2YXIgQT1kPzE6LTEscj0wPmF8fDA9PT1hJiYwPjEvYT8xOjA7YT1NYXRoLmFicyhhKTtmb3IoaXNOYU4oYSl8fEluZmluaXR5PT09YT8oYT1pc05hTihhKT8xOjAsZD1rKTooZD1NYXRoLmZsb29yKE1hdGgubG9nKGEpLwpNYXRoLkxOMiksMT5hKihnPU1hdGgucG93KDIsLWQpKSYmKGQtLSxnKj0yKSxhPTE8PWQrdD9hK3EvZzphK3EqTWF0aC5wb3coMiwxLXQpLDI8PWEqZyYmKGQrKyxnLz0yKSxkK3Q+PWs/KGE9MCxkPWspOjE8PWQrdD8oYT0oYSpnLTEpKk1hdGgucG93KDIsZSksZCs9dCk6KGE9YSpNYXRoLnBvdygyLHQtMSkqTWF0aC5wb3coMixlKSxkPTApKTs4PD1lO2NbYitmXT1hJjI1NSxmKz1BLGEvPTI1NixlLT04KTtkPWQ8PGV8YTtmb3IoaCs9ZTswPGg7Y1tiK2ZdPWQmMjU1LGYrPUEsZC89MjU2LGgtPTgpO2NbYitmLUFdfD0xMjgqcn1mdW5jdGlvbiBqYShjLGEpe2lmKChsLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzKTxhKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCIpO2wuVFlQRURfQVJSQVlfU1VQUE9SVD8oYz1uZXcgVWludDhBcnJheShhKSxjLl9fcHJvdG9fXz1sLnByb3RvdHlwZSk6KG51bGw9PT1jJiYoYz0KbmV3IGwoYSkpLGMubGVuZ3RoPWEpO3JldHVybiBjfWZ1bmN0aW9uIGwoYyxhLGIpe2lmKCEobC5UWVBFRF9BUlJBWV9TVVBQT1JUfHx0aGlzIGluc3RhbmNlb2YgbCkpcmV0dXJuIG5ldyBsKGMsYSxiKTtpZigibnVtYmVyIj09PXR5cGVvZiBjKXtpZigic3RyaW5nIj09PXR5cGVvZiBhKXRocm93IEVycm9yKCJJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiB0Yyh0aGlzLGMpfXJldHVybiBDZCh0aGlzLGMsYSxiKX1mdW5jdGlvbiBDZChjLGEsYixkKXtpZigibnVtYmVyIj09PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBBcnJheUJ1ZmZlciYmYSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXthLmJ5dGVMZW5ndGg7aWYoMD5ifHxhLmJ5dGVMZW5ndGg8Yil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ29mZnNldCcgaXMgb3V0IG9mIGJvdW5kcyIpOwppZihhLmJ5dGVMZW5ndGg8YisoZHx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTthPXZvaWQgMD09PWImJnZvaWQgMD09PWQ/bmV3IFVpbnQ4QXJyYXkoYSk6dm9pZCAwPT09ZD9uZXcgVWludDhBcnJheShhLGIpOm5ldyBVaW50OEFycmF5KGEsYixkKTtsLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KGM9YSxjLl9fcHJvdG9fXz1sLnByb3RvdHlwZSk6Yz11YyhjLGEpO3JldHVybiBjfWlmKCJzdHJpbmciPT09dHlwZW9mIGEpe2Q9YztjPWI7aWYoInN0cmluZyIhPT10eXBlb2YgY3x8IiI9PT1jKWM9InV0ZjgiO2lmKCFsLmlzRW5jb2RpbmcoYykpdGhyb3cgbmV3IFR5cGVFcnJvcignImVuY29kaW5nIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7Yj1EZChhLGMpfDA7ZD1qYShkLGIpO2E9ZC53cml0ZShhLGMpO2EhPT1iJiYoZD1kLnNsaWNlKDAsYSkpO3JldHVybiBkfXJldHVybiBMZihjLGEpfWZ1bmN0aW9uIEVkKGMpe2lmKCJudW1iZXIiIT09CnR5cGVvZiBjKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7aWYoMD5jKXRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKTt9ZnVuY3Rpb24gdGMoYyxhKXtFZChhKTtjPWphKGMsMD5hPzA6dmMoYSl8MCk7aWYoIWwuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIGI9MDtiPGE7KytiKWNbYl09MDtyZXR1cm4gY31mdW5jdGlvbiB1YyhjLGEpe3ZhciBiPTA+YS5sZW5ndGg/MDp2YyhhLmxlbmd0aCl8MDtjPWphKGMsYik7Zm9yKHZhciBkPTA7ZDxiO2QrPTEpY1tkXT1hW2RdJjI1NTtyZXR1cm4gY31mdW5jdGlvbiBMZihjLGEpe2lmKFcoYSkpe3ZhciBiPXZjKGEubGVuZ3RoKXwwO2M9amEoYyxiKTtpZigwPT09Yy5sZW5ndGgpcmV0dXJuIGM7YS5jb3B5KGMsMCwwLGIpO3JldHVybiBjfWlmKGEpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIEFycmF5QnVmZmVyJiZhLmJ1ZmZlciBpbnN0YW5jZW9mCkFycmF5QnVmZmVyfHwibGVuZ3RoImluIGEpcmV0dXJuKGI9Im51bWJlciIhPT10eXBlb2YgYS5sZW5ndGgpfHwoYj1hLmxlbmd0aCxiPWIhPT1iKSxiP2phKGMsMCk6dWMoYyxhKTtpZigiQnVmZmVyIj09PWEudHlwZSYmRmQoYS5kYXRhKSlyZXR1cm4gdWMoYyxhLmRhdGEpfXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4iKTt9ZnVuY3Rpb24gdmMoYyl7aWYoYz49KGwuVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjMpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IisobC5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyMykudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gY3wwfWZ1bmN0aW9uIFcoYyl7cmV0dXJuIShudWxsPT0KY3x8IWMuX2lzQnVmZmVyKX1mdW5jdGlvbiBEZChjLGEpe2lmKFcoYykpcmV0dXJuIGMubGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhjKXx8YyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gYy5ieXRlTGVuZ3RoOyJzdHJpbmciIT09dHlwZW9mIGMmJihjPSIiK2MpO3ZhciBiPWMubGVuZ3RoO2lmKDA9PT1iKXJldHVybiAwO2Zvcih2YXIgZD0hMTs7KXN3aXRjaChhKXtjYXNlICJhc2NpaSI6Y2FzZSAibGF0aW4xIjpjYXNlICJiaW5hcnkiOnJldHVybiBiO2Nhc2UgInV0ZjgiOmNhc2UgInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gSWIoYykubGVuZ3RoO2Nhc2UgInVjczIiOmNhc2UgInVjcy0yIjpjYXNlICJ1dGYxNmxlIjpjYXNlICJ1dGYtMTZsZSI6cmV0dXJuIDIqYjtjYXNlICJoZXgiOnJldHVybiBiPj4+MTtjYXNlICJiYXNlNjQiOnJldHVybiBHZChjKS5sZW5ndGg7CmRlZmF1bHQ6aWYoZClyZXR1cm4gSWIoYykubGVuZ3RoO2E9KCIiK2EpLnRvTG93ZXJDYXNlKCk7ZD0hMH19ZnVuY3Rpb24gTWYoYyxhLGIpe3ZhciBkPSExO2lmKHZvaWQgMD09PWF8fDA+YSlhPTA7aWYoYT50aGlzLmxlbmd0aClyZXR1cm4iIjtpZih2b2lkIDA9PT1ifHxiPnRoaXMubGVuZ3RoKWI9dGhpcy5sZW5ndGg7aWYoMD49YilyZXR1cm4iIjtiPj4+PTA7YT4+Pj0wO2lmKGI8PWEpcmV0dXJuIiI7Zm9yKGN8fChjPSJ1dGY4Iik7Oylzd2l0Y2goYyl7Y2FzZSAiaGV4IjpjPWE7YT1iO2I9dGhpcy5sZW5ndGg7aWYoIWN8fDA+YyljPTA7aWYoIWF8fDA+YXx8YT5iKWE9YjtkPSIiO2ZvcihiPWM7YjxhOysrYiljPWQsZD10aGlzW2JdLGQ9MTY+ZD8iMCIrZC50b1N0cmluZygxNik6ZC50b1N0cmluZygxNiksZD1jK2Q7cmV0dXJuIGQ7Y2FzZSAidXRmOCI6Y2FzZSAidXRmLTgiOnJldHVybiBIZCh0aGlzLGEsYik7Y2FzZSAiYXNjaWkiOmM9IiI7Zm9yKGI9TWF0aC5taW4odGhpcy5sZW5ndGgsCmIpO2E8YjsrK2EpYys9U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzW2FdJjEyNyk7cmV0dXJuIGM7Y2FzZSAibGF0aW4xIjpjYXNlICJiaW5hcnkiOmM9IiI7Zm9yKGI9TWF0aC5taW4odGhpcy5sZW5ndGgsYik7YTxiOysrYSljKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXNbYV0pO3JldHVybiBjO2Nhc2UgImJhc2U2NCI6cmV0dXJuIGE9MD09PWEmJmI9PT10aGlzLmxlbmd0aD9CZCh0aGlzKTpCZCh0aGlzLnNsaWNlKGEsYikpLGE7Y2FzZSAidWNzMiI6Y2FzZSAidWNzLTIiOmNhc2UgInV0ZjE2bGUiOmNhc2UgInV0Zi0xNmxlIjphPXRoaXMuc2xpY2UoYSxiKTtiPSIiO2ZvcihjPTA7YzxhLmxlbmd0aDtjKz0yKWIrPVN0cmluZy5mcm9tQ2hhckNvZGUoYVtjXSsyNTYqYVtjKzFdKTtyZXR1cm4gYjtkZWZhdWx0OmlmKGQpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitjKTtjPShjKyIiKS50b0xvd2VyQ2FzZSgpO2Q9ITB9fWZ1bmN0aW9uIEdhKGMsYSxiKXt2YXIgZD0KY1thXTtjW2FdPWNbYl07Y1tiXT1kfWZ1bmN0aW9uIElkKGMsYSxiLGQsZSl7aWYoMD09PWMubGVuZ3RoKXJldHVybi0xOyJzdHJpbmciPT09dHlwZW9mIGI/KGQ9YixiPTApOjIxNDc0ODM2NDc8Yj9iPTIxNDc0ODM2NDc6LTIxNDc0ODM2NDg+YiYmKGI9LTIxNDc0ODM2NDgpO2I9K2I7aXNOYU4oYikmJihiPWU/MDpjLmxlbmd0aC0xKTswPmImJihiPWMubGVuZ3RoK2IpO2lmKGI+PWMubGVuZ3RoKXtpZihlKXJldHVybi0xO2I9Yy5sZW5ndGgtMX1lbHNlIGlmKDA+YilpZihlKWI9MDtlbHNlIHJldHVybi0xOyJzdHJpbmciPT09dHlwZW9mIGEmJihhPWwuZnJvbShhLGQpKTtpZihXKGEpKXJldHVybiAwPT09YS5sZW5ndGg/LTE6SmQoYyxhLGIsZCxlKTtpZigibnVtYmVyIj09PXR5cGVvZiBhKXJldHVybiBhJj0yNTUsbC5UWVBFRF9BUlJBWV9TVVBQT1JUJiYiZnVuY3Rpb24iPT09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/ZT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYywKYSxiKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGMsYSxiKTpKZChjLFthXSxiLGQsZSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIik7fWZ1bmN0aW9uIEpkKGMsYSxiLGQsZSl7ZnVuY3Rpb24gZihhLGMpe3JldHVybiAxPT09Zz9hW2NdOmEucmVhZFVJbnQxNkJFKGMqZyl9dmFyIGc9MSxoPWMubGVuZ3RoLGs9YS5sZW5ndGg7aWYodm9pZCAwIT09ZCYmKGQ9U3RyaW5nKGQpLnRvTG93ZXJDYXNlKCksInVjczIiPT09ZHx8InVjcy0yIj09PWR8fCJ1dGYxNmxlIj09PWR8fCJ1dGYtMTZsZSI9PT1kKSl7aWYoMj5jLmxlbmd0aHx8Mj5hLmxlbmd0aClyZXR1cm4tMTtnPTI7aC89MjtrLz0yO2IvPTJ9aWYoZSlmb3IoZD0tMTtiPGg7YisrKWlmKGYoYyxiKT09PWYoYSwtMT09PWQ/MDpiLWQpKXtpZigtMT09PWQmJihkPWIpLGItZCsxPT09aylyZXR1cm4gZCpnfWVsc2UtMSE9PWQmJihiLT1iLWQpLGQ9Ci0xO2Vsc2UgZm9yKGIraz5oJiYoYj1oLWspOzA8PWI7Yi0tKXtoPSEwO2ZvcihkPTA7ZDxrO2QrKylpZihmKGMsYitkKSE9PWYoYSxkKSl7aD0hMTticmVha31pZihoKXJldHVybiBifXJldHVybi0xfWZ1bmN0aW9uIEhkKGMsYSxiKXtiPU1hdGgubWluKGMubGVuZ3RoLGIpO2Zvcih2YXIgZD1bXTthPGI7KXt2YXIgZT1jW2FdLGY9bnVsbCxnPTIzOTxlPzQ6MjIzPGU/MzoxOTE8ZT8yOjE7aWYoYStnPD1iKXN3aXRjaChnKXtjYXNlIDE6MTI4PmUmJihmPWUpO2JyZWFrO2Nhc2UgMjp2YXIgaD1jW2ErMV07MTI4PT09KGgmMTkyKSYmKGU9KGUmMzEpPDw2fGgmNjMsMTI3PGUmJihmPWUpKTticmVhaztjYXNlIDM6aD1jW2ErMV07dmFyIGs9Y1thKzJdOzEyOD09PShoJjE5MikmJjEyOD09PShrJjE5MikmJihlPShlJjE1KTw8MTJ8KGgmNjMpPDw2fGsmNjMsMjA0NzxlJiYoNTUyOTY+ZXx8NTczNDM8ZSkmJihmPWUpKTticmVhaztjYXNlIDQ6aD1jW2ErMV07az1jW2ErMl07dmFyIHQ9Y1thKwozXTsxMjg9PT0oaCYxOTIpJiYxMjg9PT0oayYxOTIpJiYxMjg9PT0odCYxOTIpJiYoZT0oZSYxNSk8PDE4fChoJjYzKTw8MTJ8KGsmNjMpPDw2fHQmNjMsNjU1MzU8ZSYmMTExNDExMj5lJiYoZj1lKSl9bnVsbD09PWY/KGY9NjU1MzMsZz0xKTo2NTUzNTxmJiYoZi09NjU1MzYsZC5wdXNoKGY+Pj4xMCYxMDIzfDU1Mjk2KSxmPTU2MzIwfGYmMTAyMyk7ZC5wdXNoKGYpO2ErPWd9Yz1kLmxlbmd0aDtpZihjPD1LZClkPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGQpO2Vsc2V7Yj0iIjtmb3IoYT0wO2E8YzspYis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZC5zbGljZShhLGErPUtkKSk7ZD1ifXJldHVybiBkfWZ1bmN0aW9uIEQoYyxhLGIpe2lmKDAhPT1jJTF8fDA+Yyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoYythPmIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKTsKfWZ1bmN0aW9uIFQoYyxhLGIsZCxlLGYpe2lmKCFXKGMpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihhPmV8fGE8Zil0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYoYitkPmMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTt9ZnVuY3Rpb24gSmIoYyxhLGIsZCl7MD5hJiYoYT02NTUzNSthKzEpO2Zvcih2YXIgZT0wLGY9TWF0aC5taW4oYy5sZW5ndGgtYiwyKTtlPGY7KytlKWNbYitlXT0oYSYyNTU8PDgqKGQ/ZToxLWUpKT4+PjgqKGQ/ZToxLWUpfWZ1bmN0aW9uIEtiKGMsYSxiLGQpezA+YSYmKGE9NDI5NDk2NzI5NSthKzEpO2Zvcih2YXIgZT0wLGY9TWF0aC5taW4oYy5sZW5ndGgtYiw0KTtlPGY7KytlKWNbYitlXT1hPj4+OCooZD9lOjMtZSkmMjU1fWZ1bmN0aW9uIExiKGMsYSxiLGQpe2lmKGIrCmQ+Yy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKDA+Yil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7fWZ1bmN0aW9uIEliKGMsYSl7YT1hfHxJbmZpbml0eTtmb3IodmFyIGIsZD1jLmxlbmd0aCxlPW51bGwsZj1bXSxnPTA7ZzxkOysrZyl7Yj1jLmNoYXJDb2RlQXQoZyk7aWYoNTUyOTU8YiYmNTczNDQ+Yil7aWYoIWUpe2lmKDU2MzE5PGIpey0xPChhLT0zKSYmZi5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1lbHNlIGlmKGcrMT09PWQpey0xPChhLT0zKSYmZi5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1lPWI7Y29udGludWV9aWYoNTYzMjA+Yil7LTE8KGEtPTMpJiZmLnB1c2goMjM5LDE5MSwxODkpO2U9Yjtjb250aW51ZX1iPShlLTU1Mjk2PDwxMHxiLTU2MzIwKSs2NTUzNn1lbHNlIGUmJi0xPChhLT0zKSYmZi5wdXNoKDIzOSwxOTEsMTg5KTtlPW51bGw7aWYoMTI4PmIpe2lmKDA+LS1hKWJyZWFrOwpmLnB1c2goYil9ZWxzZSBpZigyMDQ4PmIpe2lmKDA+KGEtPTIpKWJyZWFrO2YucHVzaChiPj42fDE5MixiJjYzfDEyOCl9ZWxzZSBpZig2NTUzNj5iKXtpZigwPihhLT0zKSlicmVhaztmLnB1c2goYj4+MTJ8MjI0LGI+PjYmNjN8MTI4LGImNjN8MTI4KX1lbHNlIGlmKDExMTQxMTI+Yil7aWYoMD4oYS09NCkpYnJlYWs7Zi5wdXNoKGI+PjE4fDI0MCxiPj4xMiY2M3wxMjgsYj4+NiY2M3wxMjgsYiY2M3wxMjgpfWVsc2UgdGhyb3cgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO31yZXR1cm4gZn1mdW5jdGlvbiBMZChjKXtmb3IodmFyIGE9W10sYj0wO2I8Yy5sZW5ndGg7KytiKWEucHVzaChjLmNoYXJDb2RlQXQoYikmMjU1KTtyZXR1cm4gYX1mdW5jdGlvbiBHZChjKXtjPShjLnRyaW0/Yy50cmltKCk6Yy5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIikpLnJlcGxhY2UoTmYsIiIpO2lmKDI+Yy5sZW5ndGgpYz0iIjtlbHNlIGZvcig7MCE9PWMubGVuZ3RoJTQ7KWMrPSI9IjtzY3x8QWQoKTsKdmFyIGE9Yy5sZW5ndGg7aWYoMDxhJTQpdGhyb3cgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTt2YXIgYj0iPSI9PT1jW2EtMl0/MjoiPSI9PT1jW2EtMV0/MTowLGQ9bmV3IE9mKDMqYS80LWIpLGU9MDxiP2EtNDphLGY9MDtmb3IoYT0wO2E8ZTthKz00KXt2YXIgZz1IW2MuY2hhckNvZGVBdChhKV08PDE4fEhbYy5jaGFyQ29kZUF0KGErMSldPDwxMnxIW2MuY2hhckNvZGVBdChhKzIpXTw8NnxIW2MuY2hhckNvZGVBdChhKzMpXTtkW2YrK109Zz4+MTYmMjU1O2RbZisrXT1nPj44JjI1NTtkW2YrK109ZyYyNTV9Mj09PWI/KGc9SFtjLmNoYXJDb2RlQXQoYSldPDwyfEhbYy5jaGFyQ29kZUF0KGErMSldPj40LGRbZisrXT1nJjI1NSk6MT09PWImJihnPUhbYy5jaGFyQ29kZUF0KGEpXTw8MTB8SFtjLmNoYXJDb2RlQXQoYSsxKV08PDR8SFtjLmNoYXJDb2RlQXQoYSsyKV0+PjIsZFtmKytdPWc+PjgmMjU1LGRbZisrXT1nJjI1NSk7CnJldHVybiBkfWZ1bmN0aW9uIG5iKGMsYSxiLGQpe2Zvcih2YXIgZT0wO2U8ZCYmIShlK2I+PWEubGVuZ3RofHxlPj1jLmxlbmd0aCk7KytlKWFbZStiXT1jW2VdO3JldHVybiBlfWZ1bmN0aW9uIHBhKGMpe3JldHVybiBudWxsIT1jJiYoISFjLl9pc0J1ZmZlcnx8TWQoYyl8fCJmdW5jdGlvbiI9PT10eXBlb2YgYy5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09PXR5cGVvZiBjLnNsaWNlJiZNZChjLnNsaWNlKDAsMCkpKX1mdW5jdGlvbiBNZChjKXtyZXR1cm4hIWMuY29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PT10eXBlb2YgYy5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmYy5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihjKX1mdW5jdGlvbiBOZCgpe3Rocm93IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIik7fWZ1bmN0aW9uIE9kKCl7dGhyb3cgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpO31mdW5jdGlvbiBQZChjKXtpZih1YT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoYywKMCk7aWYoKHVhPT09TmR8fCF1YSkmJnNldFRpbWVvdXQpcmV0dXJuIHVhPXNldFRpbWVvdXQsc2V0VGltZW91dChjLDApO3RyeXtyZXR1cm4gdWEoYywwKX1jYXRjaChhKXt0cnl7cmV0dXJuIHVhLmNhbGwobnVsbCxjLDApfWNhdGNoKGIpe3JldHVybiB1YS5jYWxsKHRoaXMsYywwKX19fWZ1bmN0aW9uIFBmKGMpe2lmKHZhPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoYyk7aWYoKHZhPT09T2R8fCF2YSkmJmNsZWFyVGltZW91dClyZXR1cm4gdmE9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChjKTt0cnl7cmV0dXJuIHZhKGMpfWNhdGNoKGEpe3RyeXtyZXR1cm4gdmEuY2FsbChudWxsLGMpfWNhdGNoKGIpe3JldHVybiB2YS5jYWxsKHRoaXMsYyl9fX1mdW5jdGlvbiBRZigpe1VhJiZIYSYmKFVhPSExLEhhLmxlbmd0aD9rYT1IYS5jb25jYXQoa2EpOk1iPS0xLGthLmxlbmd0aCYmUWQoKSl9ZnVuY3Rpb24gUWQoKXtpZighVWEpe3ZhciBjPVBkKFFmKTtVYT0hMDtmb3IodmFyIGE9CmthLmxlbmd0aDthOyl7SGE9a2E7Zm9yKGthPVtdOysrTWI8YTspSGEmJkhhW01iXS5ydW4oKTtNYj0tMTthPWthLmxlbmd0aH1IYT1udWxsO1VhPSExO1BmKGMpfX1mdW5jdGlvbiBYKGMpe3ZhciBhPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoMTxhcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspYVtiLTFdPWFyZ3VtZW50c1tiXTtrYS5wdXNoKG5ldyBSZChjLGEpKTsxIT09a2EubGVuZ3RofHxVYXx8UGQoUWQpfWZ1bmN0aW9uIFJkKGMsYSl7dGhpcy5mdW49Yzt0aGlzLmFycmF5PWF9ZnVuY3Rpb24gSWEoKXt9ZnVuY3Rpb24gd2MoYyl7aWYoIUphKGMpKXtmb3IodmFyIGE9W10sYj0wO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspYS5wdXNoKGFhKGFyZ3VtZW50c1tiXSkpO3JldHVybiBhLmpvaW4oIiAiKX1iPTE7dmFyIGQ9YXJndW1lbnRzLGU9ZC5sZW5ndGg7YT1TdHJpbmcoYykucmVwbGFjZShSZixmdW5jdGlvbihhKXtpZigiJSUiPT09CmEpcmV0dXJuIiUiO2lmKGI+PWUpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2UgIiVzIjpyZXR1cm4gU3RyaW5nKGRbYisrXSk7Y2FzZSAiJWQiOnJldHVybiBOdW1iZXIoZFtiKytdKTtjYXNlICIlaiI6dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShkW2IrK10pfWNhdGNoKGgpe3JldHVybiJbQ2lyY3VsYXJdIn1kZWZhdWx0OnJldHVybiBhfX0pO2Zvcih2YXIgZj1kW2JdO2I8ZTtmPWRbKytiXSlhPW51bGwhPT1mJiZ3YShmKT9hKygiICIrYWEoZikpOmErKCIgIitmKTtyZXR1cm4gYX1mdW5jdGlvbiB4YyhjLGEpe2lmKGxhKEthLnByb2Nlc3MpKXJldHVybiBmdW5jdGlvbigpe3JldHVybiB4YyhjLGEpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07aWYoITA9PT1WYS5ub0RlcHJlY2F0aW9uKXJldHVybiBjO3ZhciBiPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFiKXtpZihWYS50aHJvd0RlcHJlY2F0aW9uKXRocm93IEVycm9yKGEpO1ZhLnRyYWNlRGVwcmVjYXRpb24/Y29uc29sZS50cmFjZShhKToKY29uc29sZS5lcnJvcihhKTtiPSEwfXJldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gU2QoYyl7bGEoeWMpJiYoeWM9VmEuZW52Lk5PREVfREVCVUd8fCIiKTtjPWMudG9VcHBlckNhc2UoKTtOYltjXXx8KChuZXcgUmVnRXhwKCJcXGIiK2MrIlxcYiIsImkiKSkudGVzdCh5Yyk/TmJbY109ZnVuY3Rpb24oKXt2YXIgYT13Yy5hcHBseShudWxsLGFyZ3VtZW50cyk7Y29uc29sZS5lcnJvcigiJXMgJWQ6ICVzIixjLDAsYSl9Ok5iW2NdPWZ1bmN0aW9uKCl7fSk7cmV0dXJuIE5iW2NdfWZ1bmN0aW9uIGFhKGMsYSl7dmFyIGI9e3NlZW46W10sc3R5bGl6ZTpTZn07Mzw9YXJndW1lbnRzLmxlbmd0aCYmKGIuZGVwdGg9YXJndW1lbnRzWzJdKTs0PD1hcmd1bWVudHMubGVuZ3RoJiYoYi5jb2xvcnM9YXJndW1lbnRzWzNdKTt6YyhhKT9iLnNob3dIaWRkZW49YTphJiZUZChiLGEpO2xhKGIuc2hvd0hpZGRlbikmJihiLnNob3dIaWRkZW49ITEpO2xhKGIuZGVwdGgpJiYoYi5kZXB0aD0KMik7bGEoYi5jb2xvcnMpJiYoYi5jb2xvcnM9ITEpO2xhKGIuY3VzdG9tSW5zcGVjdCkmJihiLmN1c3RvbUluc3BlY3Q9ITApO2IuY29sb3JzJiYoYi5zdHlsaXplPVRmKTtyZXR1cm4gT2IoYixjLGIuZGVwdGgpfWZ1bmN0aW9uIFRmKGMsYSl7cmV0dXJuKGE9YWEuc3R5bGVzW2FdKT8iXHUwMDFiWyIrYWEuY29sb3JzW2FdWzBdKyJtIitjKyJcdTAwMWJbIithYS5jb2xvcnNbYV1bMV0rIm0iOmN9ZnVuY3Rpb24gU2YoYyl7cmV0dXJuIGN9ZnVuY3Rpb24gVWYoYyl7dmFyIGE9e307Yy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2FbY109ITB9KTtyZXR1cm4gYX1mdW5jdGlvbiBPYihjLGEsYil7aWYoYy5jdXN0b21JbnNwZWN0JiZhJiZXYShhLmluc3BlY3QpJiZhLmluc3BlY3QhPT1hYSYmKCFhLmNvbnN0cnVjdG9yfHxhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSE9PWEpKXt2YXIgZD1hLmluc3BlY3QoYixjKTtKYShkKXx8KGQ9T2IoYyxkLGIpKTtyZXR1cm4gZH1pZihkPVZmKGMsYSkpcmV0dXJuIGQ7CnZhciBlPU9iamVjdC5rZXlzKGEpLGY9VWYoZSk7Yy5zaG93SGlkZGVuJiYoZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhKSk7aWYob2IoYSkmJigwPD1lLmluZGV4T2YoIm1lc3NhZ2UiKXx8MDw9ZS5pbmRleE9mKCJkZXNjcmlwdGlvbiIpKSlyZXR1cm4gQWMoYSk7aWYoMD09PWUubGVuZ3RoKXtpZihXYShhKSlyZXR1cm4gYy5zdHlsaXplKCJbRnVuY3Rpb24iKyhhLm5hbWU/IjogIithLm5hbWU6IiIpKyJdIiwic3BlY2lhbCIpO2lmKFhhKGEpKXJldHVybiBjLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpLCJyZWdleHAiKTtpZihwYihhKSlyZXR1cm4gYy5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSksImRhdGUiKTtpZihvYihhKSlyZXR1cm4gQWMoYSl9ZD0iIjt2YXIgZz0hMSxoPVsieyIsIn0iXTtVZChhKSYmKGc9ITAsaD1bIlsiLCJdIl0pO1dhKGEpJiYoZD0iIFtGdW5jdGlvbiIrKGEubmFtZT8iOiAiK2EubmFtZToKIiIpKyJdIik7WGEoYSkmJihkPSIgIitSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkpO3BiKGEpJiYoZD0iICIrRGF0ZS5wcm90b3R5cGUudG9VVENTdHJpbmcuY2FsbChhKSk7b2IoYSkmJihkPSIgIitBYyhhKSk7aWYoMD09PWUubGVuZ3RoJiYoIWd8fDA9PWEubGVuZ3RoKSlyZXR1cm4gaFswXStkK2hbMV07aWYoMD5iKXJldHVybiBYYShhKT9jLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpLCJyZWdleHAiKTpjLnN0eWxpemUoIltPYmplY3RdIiwic3BlY2lhbCIpO2Muc2Vlbi5wdXNoKGEpO2U9Zz9XZihjLGEsYixmLGUpOmUubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBCYyhjLGEsYixmLGQsZyl9KTtjLnNlZW4ucG9wKCk7cmV0dXJuIFhmKGUsZCxoKX1mdW5jdGlvbiBWZihjLGEpe2lmKGxhKGEpKXJldHVybiBjLnN0eWxpemUoInVuZGVmaW5lZCIsInVuZGVmaW5lZCIpO2lmKEphKGEpKXJldHVybiBhPSInIitKU09OLnN0cmluZ2lmeShhKS5yZXBsYWNlKC9eInwiJC9nLAoiIikucmVwbGFjZSgvJy9nLCJcXCciKS5yZXBsYWNlKC9cXCIvZywnIicpKyInIixjLnN0eWxpemUoYSwic3RyaW5nIik7aWYoVmQoYSkpcmV0dXJuIGMuc3R5bGl6ZSgiIithLCJudW1iZXIiKTtpZih6YyhhKSlyZXR1cm4gYy5zdHlsaXplKCIiK2EsImJvb2xlYW4iKTtpZihudWxsPT09YSlyZXR1cm4gYy5zdHlsaXplKCJudWxsIiwibnVsbCIpfWZ1bmN0aW9uIEFjKGMpe3JldHVybiJbIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKSsiXSJ9ZnVuY3Rpb24gV2YoYyxhLGIsZCxlKXtmb3IodmFyIGY9W10sZz0wLGg9YS5sZW5ndGg7ZzxoOysrZylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxTdHJpbmcoZykpP2YucHVzaChCYyhjLGEsYixkLFN0cmluZyhnKSwhMCkpOmYucHVzaCgiIik7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UubWF0Y2goL15cZCskLyl8fGYucHVzaChCYyhjLGEsYixkLGUsITApKX0pO3JldHVybiBmfWZ1bmN0aW9uIEJjKGMsCmEsYixkLGUsZil7dmFyIGcsaDthPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxlKXx8e3ZhbHVlOmFbZV19O2EuZ2V0P2g9YS5zZXQ/Yy5zdHlsaXplKCJbR2V0dGVyL1NldHRlcl0iLCJzcGVjaWFsIik6Yy5zdHlsaXplKCJbR2V0dGVyXSIsInNwZWNpYWwiKTphLnNldCYmKGg9Yy5zdHlsaXplKCJbU2V0dGVyXSIsInNwZWNpYWwiKSk7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZSl8fChnPSJbIitlKyJdIik7aHx8KDA+Yy5zZWVuLmluZGV4T2YoYS52YWx1ZSk/KGg9bnVsbD09PWI/T2IoYyxhLnZhbHVlLG51bGwpOk9iKGMsYS52YWx1ZSxiLTEpLC0xPGguaW5kZXhPZigiXG4iKSYmKGg9Zj9oLnNwbGl0KCJcbiIpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4iICAiK2F9KS5qb2luKCJcbiIpLnN1YnN0cigyKToiXG4iK2guc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKGEpe3JldHVybiIgICAiK2F9KS5qb2luKCJcbiIpKSk6aD1jLnN0eWxpemUoIltDaXJjdWxhcl0iLAoic3BlY2lhbCIpKTtpZihsYShnKSl7aWYoZiYmZS5tYXRjaCgvXlxkKyQvKSlyZXR1cm4gaDtnPUpTT04uc3RyaW5naWZ5KCIiK2UpO2cubWF0Y2goL14iKFthLXpBLVpfXVthLXpBLVpfMC05XSopIiQvKT8oZz1nLnN1YnN0cigxLGcubGVuZ3RoLTIpLGc9Yy5zdHlsaXplKGcsIm5hbWUiKSk6KGc9Zy5yZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykucmVwbGFjZSgvKF4ifCIkKS9nLCInIiksZz1jLnN0eWxpemUoZywic3RyaW5nIikpfXJldHVybiBnKyI6ICIraH1mdW5jdGlvbiBYZihjLGEsYil7cmV0dXJuIDYwPGMucmVkdWNlKGZ1bmN0aW9uKGEsYyl7Yy5pbmRleE9mKCJcbiIpO3JldHVybiBhK2MucmVwbGFjZSgvXHUwMDFiXFtcZFxkP20vZywiIikubGVuZ3RoKzF9LDApP2JbMF0rKCIiPT09YT8iIjphKyJcbiAiKSsiICIrYy5qb2luKCIsXG4gICIpKyIgIitiWzFdOmJbMF0rYSsiICIrYy5qb2luKCIsICIpKyIgIitiWzFdfWZ1bmN0aW9uIFVkKGMpe3JldHVybiBBcnJheS5pc0FycmF5KGMpfQpmdW5jdGlvbiB6YyhjKXtyZXR1cm4iYm9vbGVhbiI9PT10eXBlb2YgY31mdW5jdGlvbiBWZChjKXtyZXR1cm4ibnVtYmVyIj09PXR5cGVvZiBjfWZ1bmN0aW9uIEphKGMpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGN9ZnVuY3Rpb24gbGEoYyl7cmV0dXJuIHZvaWQgMD09PWN9ZnVuY3Rpb24gWGEoYyl7cmV0dXJuIHdhKGMpJiYiW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKX1mdW5jdGlvbiB3YShjKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBjJiZudWxsIT09Y31mdW5jdGlvbiBwYihjKXtyZXR1cm4gd2EoYykmJiJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKX1mdW5jdGlvbiBvYihjKXtyZXR1cm4gd2EoYykmJigiW29iamVjdCBFcnJvcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGMpfHxjIGluc3RhbmNlb2YgRXJyb3IpfWZ1bmN0aW9uIFdhKGMpe3JldHVybiJmdW5jdGlvbiI9PT0KdHlwZW9mIGN9ZnVuY3Rpb24gQ2MoYyl7cmV0dXJuIG51bGw9PT1jfHwiYm9vbGVhbiI9PT10eXBlb2YgY3x8Im51bWJlciI9PT10eXBlb2YgY3x8InN0cmluZyI9PT10eXBlb2YgY3x8InN5bWJvbCI9PT10eXBlb2YgY3x8InVuZGVmaW5lZCI9PT10eXBlb2YgY31mdW5jdGlvbiBEYyhjKXtyZXR1cm4gMTA+Yz8iMCIrYy50b1N0cmluZygxMCk6Yy50b1N0cmluZygxMCl9ZnVuY3Rpb24gWWYoKXt2YXIgYz1uZXcgRGF0ZSxhPVtEYyhjLmdldEhvdXJzKCkpLERjKGMuZ2V0TWludXRlcygpKSxEYyhjLmdldFNlY29uZHMoKSldLmpvaW4oIjoiKTtyZXR1cm5bYy5nZXREYXRlKCksWmZbYy5nZXRNb250aCgpXSxhXS5qb2luKCIgIil9ZnVuY3Rpb24gVGQoYyxhKXtpZighYXx8IXdhKGEpKXJldHVybiBjO2Zvcih2YXIgYj1PYmplY3Qua2V5cyhhKSxkPWIubGVuZ3RoO2QtLTspY1tiW2RdXT1hW2JbZF1dO3JldHVybiBjfWZ1bmN0aW9uIFdkKGMsYSl7aWYoYz09PWEpcmV0dXJuIDA7Zm9yKHZhciBiPQpjLmxlbmd0aCxkPWEubGVuZ3RoLGU9MCxmPU1hdGgubWluKGIsZCk7ZTxmOysrZSlpZihjW2VdIT09YVtlXSl7Yj1jW2VdO2Q9YVtlXTticmVha31yZXR1cm4gYjxkPy0xOmQ8Yj8xOjB9ZnVuY3Rpb24gWGQoKXtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBFYz9FYzpFYz1mdW5jdGlvbigpe3JldHVybiJmb28iPT09ZnVuY3Rpb24oKXt9Lm5hbWV9KCl9ZnVuY3Rpb24gWWQoYyl7cmV0dXJuIHBhKGMpfHwiZnVuY3Rpb24iIT09dHlwZW9mIEthLkFycmF5QnVmZmVyPyExOiJmdW5jdGlvbiI9PT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhjKTpjP2MgaW5zdGFuY2VvZiBEYXRhVmlld3x8Yy5idWZmZXImJmMuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ITA6ITE6ITF9ZnVuY3Rpb24gRShjLGEpe2N8fFMoYywhMCxhLCI9PSIsRmMpfWZ1bmN0aW9uIFpkKGMpe2lmKFdhKGMpKXJldHVybiBYZCgpP2MubmFtZTooYz1jLnRvU3RyaW5nKCkubWF0Y2goJGYpKSYmCmNbMV19ZnVuY3Rpb24gR2MoYyl7dGhpcy5uYW1lPSJBc3NlcnRpb25FcnJvciI7dGhpcy5hY3R1YWw9Yy5hY3R1YWw7dGhpcy5leHBlY3RlZD1jLmV4cGVjdGVkO3RoaXMub3BlcmF0b3I9Yy5vcGVyYXRvcjtjLm1lc3NhZ2U/KHRoaXMubWVzc2FnZT1jLm1lc3NhZ2UsdGhpcy5nZW5lcmF0ZWRNZXNzYWdlPSExKToodGhpcy5tZXNzYWdlPSRkKGFlKHRoaXMuYWN0dWFsKSwxMjgpKyIgIit0aGlzLm9wZXJhdG9yKyIgIiskZChhZSh0aGlzLmV4cGVjdGVkKSwxMjgpLHRoaXMuZ2VuZXJhdGVkTWVzc2FnZT0hMCk7dmFyIGE9Yy5zdGFja1N0YXJ0RnVuY3Rpb258fFM7RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyxhKTooYz1FcnJvcigpLGMuc3RhY2smJihjPWMuc3RhY2ssYT1aZChhKSxhPWMuaW5kZXhPZigiXG4iK2EpLDA8PWEmJihhPWMuaW5kZXhPZigiXG4iLGErMSksYz1jLnN1YnN0cmluZyhhKzEpKSx0aGlzLnN0YWNrPWMpKX1mdW5jdGlvbiAkZChjLAphKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBjP2MubGVuZ3RoPGE/YzpjLnNsaWNlKDAsYSk6Y31mdW5jdGlvbiBhZShjKXtpZihYZCgpfHwhV2EoYykpcmV0dXJuIGFhKGMpO2M9WmQoYyk7cmV0dXJuIltGdW5jdGlvbiIrKGM/IjogIitjOiIiKSsiXSJ9ZnVuY3Rpb24gUyhjLGEsYixkLGUpe3Rocm93IG5ldyBHYyh7bWVzc2FnZTpiLGFjdHVhbDpjLGV4cGVjdGVkOmEsb3BlcmF0b3I6ZCxzdGFja1N0YXJ0RnVuY3Rpb246ZX0pO31mdW5jdGlvbiBGYyhjLGEpe2N8fFMoYywhMCxhLCI9PSIsRmMpfWZ1bmN0aW9uIGJlKGMsYSxiKXtjIT1hJiZTKGMsYSxiLCI9PSIsYmUpfWZ1bmN0aW9uIGNlKGMsYSxiKXtjPT1hJiZTKGMsYSxiLCIhPSIsY2UpfWZ1bmN0aW9uIGRlKGMsYSxiKXtZYShjLGEsITEpfHxTKGMsYSxiLCJkZWVwRXF1YWwiLGRlKX1mdW5jdGlvbiBlZShjLGEsYil7WWEoYyxhLCEwKXx8UyhjLGEsYiwiZGVlcFN0cmljdEVxdWFsIixlZSl9ZnVuY3Rpb24gWWEoYyxhLGIsCmQpe2lmKGM9PT1hKXJldHVybiEwO2lmKHBhKGMpJiZwYShhKSlyZXR1cm4gMD09PVdkKGMsYSk7aWYocGIoYykmJnBiKGEpKXJldHVybiBjLmdldFRpbWUoKT09PWEuZ2V0VGltZSgpO2lmKFhhKGMpJiZYYShhKSlyZXR1cm4gYy5zb3VyY2U9PT1hLnNvdXJjZSYmYy5nbG9iYWw9PT1hLmdsb2JhbCYmYy5tdWx0aWxpbmU9PT1hLm11bHRpbGluZSYmYy5sYXN0SW5kZXg9PT1hLmxhc3RJbmRleCYmYy5pZ25vcmVDYXNlPT09YS5pZ25vcmVDYXNlO2lmKG51bGwhPT1jJiYib2JqZWN0Ij09PXR5cGVvZiBjfHxudWxsIT09YSYmIm9iamVjdCI9PT10eXBlb2YgYSl7aWYoIVlkKGMpfHwhWWQoYSl8fE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKSE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKXx8YyBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8YyBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSl7aWYocGEoYykhPT1wYShhKSlyZXR1cm4hMTtkPWR8fHthY3R1YWw6W10sCmV4cGVjdGVkOltdfTt2YXIgZT1kLmFjdHVhbC5pbmRleE9mKGMpO2lmKC0xIT09ZSYmZT09PWQuZXhwZWN0ZWQuaW5kZXhPZihhKSlyZXR1cm4hMDtkLmFjdHVhbC5wdXNoKGMpO2QuZXhwZWN0ZWQucHVzaChhKTtyZXR1cm4gYWcoYyxhLGIsZCl9cmV0dXJuIDA9PT1XZChuZXcgVWludDhBcnJheShjLmJ1ZmZlciksbmV3IFVpbnQ4QXJyYXkoYS5idWZmZXIpKX1yZXR1cm4gYj9jPT09YTpjPT1hfWZ1bmN0aW9uIGFnKGMsYSxiLGQpe2lmKG51bGw9PT1jfHx2b2lkIDA9PT1jfHxudWxsPT09YXx8dm9pZCAwPT09YSlyZXR1cm4hMTtpZihDYyhjKXx8Q2MoYSkpcmV0dXJuIGM9PT1hO2lmKGImJk9iamVjdC5nZXRQcm90b3R5cGVPZihjKSE9PU9iamVjdC5nZXRQcm90b3R5cGVPZihhKSlyZXR1cm4hMTt2YXIgZT0iW29iamVjdCBBcmd1bWVudHNdIj09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGMpLGY9IltvYmplY3QgQXJndW1lbnRzXSI9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKTsKaWYoZSYmIWZ8fCFlJiZmKXJldHVybiExO2lmKGUpcmV0dXJuIGM9ZmUuY2FsbChjKSxhPWZlLmNhbGwoYSksWWEoYyxhLGIpO2U9Z2UoYyk7dmFyIGc9Z2UoYSk7aWYoZS5sZW5ndGghPT1nLmxlbmd0aClyZXR1cm4hMTtlLnNvcnQoKTtnLnNvcnQoKTtmb3IoZj1lLmxlbmd0aC0xOzA8PWY7Zi0tKWlmKGVbZl0hPT1nW2ZdKXJldHVybiExO2ZvcihmPWUubGVuZ3RoLTE7MDw9ZjtmLS0paWYoZz1lW2ZdLCFZYShjW2ddLGFbZ10sYixkKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBoZShjLGEsYil7WWEoYyxhLCExKSYmUyhjLGEsYiwibm90RGVlcEVxdWFsIixoZSl9ZnVuY3Rpb24gaWUoYyxhLGIpe1lhKGMsYSwhMCkmJlMoYyxhLGIsIm5vdERlZXBTdHJpY3RFcXVhbCIsaWUpfWZ1bmN0aW9uIGplKGMsYSxiKXtjIT09YSYmUyhjLGEsYiwiPT09IixqZSl9ZnVuY3Rpb24ga2UoYyxhLGIpe2M9PT1hJiZTKGMsYSxiLCIhPT0iLGtlKX1mdW5jdGlvbiBsZShjLGEpe2lmKCFjfHwhYSlyZXR1cm4hMTsKaWYoIltvYmplY3QgUmVnRXhwXSI9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKSlyZXR1cm4gYS50ZXN0KGMpO3RyeXtpZihjIGluc3RhbmNlb2YgYSlyZXR1cm4hMH1jYXRjaChiKXt9cmV0dXJuIEVycm9yLmlzUHJvdG90eXBlT2YoYSk/ITE6ITA9PT1hLmNhbGwoe30sYyl9ZnVuY3Rpb24gbWUoYyxhLGIsZCl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoJyJibG9jayIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7InN0cmluZyI9PT10eXBlb2YgYiYmKGQ9YixiPW51bGwpO3RyeXthKCl9Y2F0Y2goaCl7dmFyIGU9aH1hPWU7ZD0oYiYmYi5uYW1lPyIgKCIrYi5uYW1lKyIpLiI6Ii4iKSsoZD8iICIrZDoiLiIpO2MmJiFhJiZTKGEsYiwiTWlzc2luZyBleHBlY3RlZCBleGNlcHRpb24iK2QpO2U9InN0cmluZyI9PT10eXBlb2YgZDt2YXIgZj0hYyYmb2IoYSksZz0hYyYmYSYmIWI7KGYmJmUmJmxlKGEsYil8fGcpJiZTKGEsCmIsIkdvdCB1bndhbnRlZCBleGNlcHRpb24iK2QpO2lmKGMmJmEmJmImJiFsZShhLGIpfHwhYyYmYSl0aHJvdyBhO31mdW5jdGlvbiBiZyhjLGEpe2Zvcih2YXIgYj0wLGQ9Yy5sZW5ndGgtMTswPD1kO2QtLSl7dmFyIGU9Y1tkXTsiLiI9PT1lP2Muc3BsaWNlKGQsMSk6Ii4uIj09PWU/KGMuc3BsaWNlKGQsMSksYisrKTpiJiYoYy5zcGxpY2UoZCwxKSxiLS0pfWlmKGEpZm9yKDtiLS07YiljLnVuc2hpZnQoIi4uIik7cmV0dXJuIGN9ZnVuY3Rpb24gSGMoKXtmb3IodmFyIGM9IiIsYT0hMSxiPWFyZ3VtZW50cy5sZW5ndGgtMTstMTw9YiYmIWE7Yi0tKXt2YXIgZD0wPD1iP2FyZ3VtZW50c1tiXToiLyI7aWYoInN0cmluZyIhPT10eXBlb2YgZCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncyIpO2QmJihjPWQrIi8iK2MsYT0iLyI9PT1kLmNoYXJBdCgwKSl9Yz1iZyhjZyhjLnNwbGl0KCIvIiksZnVuY3Rpb24oYSl7cmV0dXJuISFhfSksCiFhKS5qb2luKCIvIik7cmV0dXJuKGE/Ii8iOiIiKStjfHwiLiJ9ZnVuY3Rpb24gUGIoYyxhKXtmdW5jdGlvbiBiKGEpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGgmJiIiPT09YVtjXTtjKyspO2Zvcih2YXIgYj1hLmxlbmd0aC0xOzA8PWImJiIiPT09YVtiXTtiLS0pO3JldHVybiBjPmI/W106YS5zbGljZShjLGItYysxKX1jPUhjKGMpLnN1YnN0cigxKTthPUhjKGEpLnN1YnN0cigxKTtjPWIoYy5zcGxpdCgiLyIpKTthPWIoYS5zcGxpdCgiLyIpKTtmb3IodmFyIGQ9TWF0aC5taW4oYy5sZW5ndGgsYS5sZW5ndGgpLGU9ZCxmPTA7ZjxkO2YrKylpZihjW2ZdIT09YVtmXSl7ZT1mO2JyZWFrfWQ9W107Zm9yKGY9ZTtmPGMubGVuZ3RoO2YrKylkLnB1c2goIi4uIik7ZD1kLmNvbmNhdChhLnNsaWNlKGUpKTtyZXR1cm4gZC5qb2luKCIvIil9ZnVuY3Rpb24gY2coYyxhKXtpZihjLmZpbHRlcilyZXR1cm4gYy5maWx0ZXIoYSk7Zm9yKHZhciBiPVtdLGQ9MDtkPGMubGVuZ3RoO2QrKylhKGNbZF0sCmQsYykmJmIucHVzaChjW2RdKTtyZXR1cm4gYn1mdW5jdGlvbiBxYSgpe31mdW5jdGlvbiB4KCl7eC5pbml0LmNhbGwodGhpcyl9ZnVuY3Rpb24gbmUoYyxhLGIsZCl7dmFyIGU7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBiKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7aWYoZT1jLl9ldmVudHMpe2UubmV3TGlzdGVuZXImJihjLmVtaXQoIm5ld0xpc3RlbmVyIixhLGIubGlzdGVuZXI/Yi5saXN0ZW5lcjpiKSxlPWMuX2V2ZW50cyk7dmFyIGY9ZVthXX1lbHNlIGU9Yy5fZXZlbnRzPW5ldyBxYSxjLl9ldmVudHNDb3VudD0wO2Y/KCJmdW5jdGlvbiI9PT10eXBlb2YgZj9mPWVbYV09ZD9bYixmXTpbZixiXTpkP2YudW5zaGlmdChiKTpmLnB1c2goYiksZi53YXJuZWR8fChiPXZvaWQgMD09PWMuX21heExpc3RlbmVycz94LmRlZmF1bHRNYXhMaXN0ZW5lcnM6Yy5fbWF4TGlzdGVuZXJzKSYmMDxiJiZmLmxlbmd0aD5iJiYoZi53YXJuZWQ9CiEwLGI9RXJyb3IoIlBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gIitmLmxlbmd0aCsiICIrYSsiIGxpc3RlbmVycyBhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQiKSxiLm5hbWU9Ik1heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZyIsYi5lbWl0dGVyPWMsYi50eXBlPWEsYi5jb3VudD1mLmxlbmd0aCwiZnVuY3Rpb24iPT09dHlwZW9mIGNvbnNvbGUud2Fybj9jb25zb2xlLndhcm4oYik6Y29uc29sZS5sb2coYikpKTooZVthXT1iLCsrYy5fZXZlbnRzQ291bnQpO3JldHVybiBjfWZ1bmN0aW9uIG9lKGMsYSxiKXtmdW5jdGlvbiBkKCl7Yy5yZW1vdmVMaXN0ZW5lcihhLGQpO2V8fChlPSEwLGIuYXBwbHkoYyxhcmd1bWVudHMpKX12YXIgZT0hMTtkLmxpc3RlbmVyPWI7cmV0dXJuIGR9ZnVuY3Rpb24gcGUoYyl7dmFyIGE9dGhpcy5fZXZlbnRzO2lmKGEpe2M9YVtjXTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGMpcmV0dXJuIDE7CmlmKGMpcmV0dXJuIGMubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIHFiKGMsYSl7Zm9yKHZhciBiPUFycmF5KGEpO2EtLTspYlthXT1jW2FdO3JldHVybiBifWZ1bmN0aW9uIExhKCl7dGhpcy50YWlsPXRoaXMuaGVhZD1udWxsO3RoaXMubGVuZ3RoPTB9ZnVuY3Rpb24gcmIoYyl7dGhpcy5lbmNvZGluZz0oY3x8InV0ZjgiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX10vLCIiKTtpZihjJiYhZGcoYykpdGhyb3cgRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrYyk7c3dpdGNoKHRoaXMuZW5jb2Rpbmcpe2Nhc2UgInV0ZjgiOnRoaXMuc3Vycm9nYXRlU2l6ZT0zO2JyZWFrO2Nhc2UgInVjczIiOmNhc2UgInV0ZjE2bGUiOnRoaXMuc3Vycm9nYXRlU2l6ZT0yO3RoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXI9ZWc7YnJlYWs7Y2FzZSAiYmFzZTY0Ijp0aGlzLnN1cnJvZ2F0ZVNpemU9Mzt0aGlzLmRldGVjdEluY29tcGxldGVDaGFyPWZnO2JyZWFrO2RlZmF1bHQ6dGhpcy53cml0ZT1nZzsKcmV0dXJufXRoaXMuY2hhckJ1ZmZlcj1uZXcgbCg2KTt0aGlzLmNoYXJMZW5ndGg9dGhpcy5jaGFyUmVjZWl2ZWQ9MH1mdW5jdGlvbiBnZyhjKXtyZXR1cm4gYy50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBlZyhjKXt0aGlzLmNoYXJMZW5ndGg9KHRoaXMuY2hhclJlY2VpdmVkPWMubGVuZ3RoJTIpPzI6MH1mdW5jdGlvbiBmZyhjKXt0aGlzLmNoYXJMZW5ndGg9KHRoaXMuY2hhclJlY2VpdmVkPWMubGVuZ3RoJTMpPzM6MH1mdW5jdGlvbiBoZyhjLGEsYil7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBjLnByZXBlbmRMaXN0ZW5lcilyZXR1cm4gYy5wcmVwZW5kTGlzdGVuZXIoYSxiKTtpZihjLl9ldmVudHMmJmMuX2V2ZW50c1thXSlBcnJheS5pc0FycmF5KGMuX2V2ZW50c1thXSk/Yy5fZXZlbnRzW2FdLnVuc2hpZnQoYik6Yy5fZXZlbnRzW2FdPVtiLGMuX2V2ZW50c1thXV07ZWxzZSBjLm9uKGEsYil9ZnVuY3Rpb24gcWUoYyxhKXtjPWN8fHt9O3RoaXMub2JqZWN0TW9kZT0KISFjLm9iamVjdE1vZGU7YSBpbnN0YW5jZW9mIFUmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIWMucmVhZGFibGVPYmplY3RNb2RlKTthPWMuaGlnaFdhdGVyTWFyazt2YXIgYj10aGlzLm9iamVjdE1vZGU/MTY6MTYzODQ7dGhpcy5oaWdoV2F0ZXJNYXJrPWF8fDA9PT1hP2E6Yjt0aGlzLmhpZ2hXYXRlck1hcms9fn50aGlzLmhpZ2hXYXRlck1hcms7dGhpcy5idWZmZXI9bmV3IExhO3RoaXMubGVuZ3RoPTA7dGhpcy5waXBlcz1udWxsO3RoaXMucGlwZXNDb3VudD0wO3RoaXMuZmxvd2luZz1udWxsO3RoaXMucmVhZGluZz10aGlzLmVuZEVtaXR0ZWQ9dGhpcy5lbmRlZD0hMTt0aGlzLnN5bmM9ITA7dGhpcy5yZXN1bWVTY2hlZHVsZWQ9dGhpcy5yZWFkYWJsZUxpc3RlbmluZz10aGlzLmVtaXR0ZWRSZWFkYWJsZT10aGlzLm5lZWRSZWFkYWJsZT0hMTt0aGlzLmRlZmF1bHRFbmNvZGluZz1jLmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiO3RoaXMucmFuT3V0PSExO3RoaXMuYXdhaXREcmFpbj0KMDt0aGlzLnJlYWRpbmdNb3JlPSExO3RoaXMuZW5jb2Rpbmc9dGhpcy5kZWNvZGVyPW51bGw7Yy5lbmNvZGluZyYmKHRoaXMuZGVjb2Rlcj1uZXcgcmIoYy5lbmNvZGluZyksdGhpcy5lbmNvZGluZz1jLmVuY29kaW5nKX1mdW5jdGlvbiB5KGMpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHkpKXJldHVybiBuZXcgeShjKTt0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyBxZShjLHRoaXMpO3RoaXMucmVhZGFibGU9ITA7YyYmImZ1bmN0aW9uIj09PXR5cGVvZiBjLnJlYWQmJih0aGlzLl9yZWFkPWMucmVhZCk7eC5jYWxsKHRoaXMpfWZ1bmN0aW9uIHJlKGMsYSxiLGQsZSl7dmFyIGY9YixnPW51bGw7cGEoZil8fCJzdHJpbmciPT09dHlwZW9mIGZ8fG51bGw9PT1mfHx2b2lkIDA9PT1mfHxhLm9iamVjdE1vZGV8fChnPW5ldyBUeXBlRXJyb3IoIkludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsiKSk7aWYoZj1nKWMuZW1pdCgiZXJyb3IiLGYpO2Vsc2UgaWYobnVsbD09PWIpYS5yZWFkaW5nPQohMSxhLmVuZGVkfHwoYS5kZWNvZGVyJiYoYj1hLmRlY29kZXIuZW5kKCkpJiZiLmxlbmd0aCYmKGEuYnVmZmVyLnB1c2goYiksYS5sZW5ndGgrPWEub2JqZWN0TW9kZT8xOmIubGVuZ3RoKSxhLmVuZGVkPSEwLFFiKGMpKTtlbHNlIGlmKGEub2JqZWN0TW9kZXx8YiYmMDxiLmxlbmd0aClpZihhLmVuZGVkJiYhZSljLmVtaXQoImVycm9yIixFcnJvcigic3RyZWFtLnB1c2goKSBhZnRlciBFT0YiKSk7ZWxzZSBpZihhLmVuZEVtaXR0ZWQmJmUpYy5lbWl0KCJlcnJvciIsRXJyb3IoInN0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50IikpO2Vsc2V7aWYoYS5kZWNvZGVyJiYhZSYmIWQpe2I9YS5kZWNvZGVyLndyaXRlKGIpO3ZhciBoPSFhLm9iamVjdE1vZGUmJjA9PT1iLmxlbmd0aH1lfHwoYS5yZWFkaW5nPSExKTtofHwoYS5mbG93aW5nJiYwPT09YS5sZW5ndGgmJiFhLnN5bmM/KGMuZW1pdCgiZGF0YSIsYiksYy5yZWFkKDApKTooYS5sZW5ndGgrPWEub2JqZWN0TW9kZT8xOmIubGVuZ3RoLAplP2EuYnVmZmVyLnVuc2hpZnQoYik6YS5idWZmZXIucHVzaChiKSxhLm5lZWRSZWFkYWJsZSYmUWIoYykpKTthLnJlYWRpbmdNb3JlfHwoYS5yZWFkaW5nTW9yZT0hMCxYKGlnLGMsYSkpfWVsc2UgZXx8KGEucmVhZGluZz0hMSk7cmV0dXJuIWEuZW5kZWQmJihhLm5lZWRSZWFkYWJsZXx8YS5sZW5ndGg8YS5oaWdoV2F0ZXJNYXJrfHwwPT09YS5sZW5ndGgpfWZ1bmN0aW9uIHNlKGMsYSl7aWYoMD49Y3x8MD09PWEubGVuZ3RoJiZhLmVuZGVkKXJldHVybiAwO2lmKGEub2JqZWN0TW9kZSlyZXR1cm4gMTtpZihjIT09YylyZXR1cm4gYS5mbG93aW5nJiZhLmxlbmd0aD9hLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOmEubGVuZ3RoO2lmKGM+YS5oaWdoV2F0ZXJNYXJrKXt2YXIgYj1jOzgzODg2MDg8PWI/Yj04Mzg4NjA4OihiLS0sYnw9Yj4+PjEsYnw9Yj4+PjIsYnw9Yj4+PjQsYnw9Yj4+PjgsYnw9Yj4+PjE2LGIrKyk7YS5oaWdoV2F0ZXJNYXJrPWJ9cmV0dXJuIGM8PWEubGVuZ3RoP2M6CmEuZW5kZWQ/YS5sZW5ndGg6KGEubmVlZFJlYWRhYmxlPSEwLDApfWZ1bmN0aW9uIFFiKGMpe3ZhciBhPWMuX3JlYWRhYmxlU3RhdGU7YS5uZWVkUmVhZGFibGU9ITE7YS5lbWl0dGVkUmVhZGFibGV8fCh6KCJlbWl0UmVhZGFibGUiLGEuZmxvd2luZyksYS5lbWl0dGVkUmVhZGFibGU9ITAsYS5zeW5jP1godGUsYyk6dGUoYykpfWZ1bmN0aW9uIHRlKGMpe3ooImVtaXQgcmVhZGFibGUiKTtjLmVtaXQoInJlYWRhYmxlIik7SWMoYyl9ZnVuY3Rpb24gaWcoYyxhKXtmb3IodmFyIGI9YS5sZW5ndGg7IWEucmVhZGluZyYmIWEuZmxvd2luZyYmIWEuZW5kZWQmJmEubGVuZ3RoPGEuaGlnaFdhdGVyTWFyayYmKHooIm1heWJlUmVhZE1vcmUgcmVhZCAwIiksYy5yZWFkKDApLGIhPT1hLmxlbmd0aCk7KWI9YS5sZW5ndGg7YS5yZWFkaW5nTW9yZT0hMX1mdW5jdGlvbiBqZyhjKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1jLl9yZWFkYWJsZVN0YXRlO3ooInBpcGVPbkRyYWluIixhLmF3YWl0RHJhaW4pOwphLmF3YWl0RHJhaW4mJmEuYXdhaXREcmFpbi0tOzA9PT1hLmF3YWl0RHJhaW4mJmMubGlzdGVuZXJzKCJkYXRhIikubGVuZ3RoJiYoYS5mbG93aW5nPSEwLEljKGMpKX19ZnVuY3Rpb24ga2coYyl7eigicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwIik7Yy5yZWFkKDApfWZ1bmN0aW9uIGxnKGMsYSl7YS5yZWFkaW5nfHwoeigicmVzdW1lIHJlYWQgMCIpLGMucmVhZCgwKSk7YS5yZXN1bWVTY2hlZHVsZWQ9ITE7YS5hd2FpdERyYWluPTA7Yy5lbWl0KCJyZXN1bWUiKTtJYyhjKTthLmZsb3dpbmcmJiFhLnJlYWRpbmcmJmMucmVhZCgwKX1mdW5jdGlvbiBJYyhjKXt2YXIgYT1jLl9yZWFkYWJsZVN0YXRlO2Zvcih6KCJmbG93IixhLmZsb3dpbmcpO2EuZmxvd2luZyYmbnVsbCE9PWMucmVhZCgpOyk7fWZ1bmN0aW9uIHVlKGMsYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO2lmKGEub2JqZWN0TW9kZSl2YXIgYj1hLmJ1ZmZlci5zaGlmdCgpO2Vsc2UgaWYoIWN8fGM+PWEubGVuZ3RoKWI9CmEuZGVjb2Rlcj9hLmJ1ZmZlci5qb2luKCIiKToxPT09YS5idWZmZXIubGVuZ3RoP2EuYnVmZmVyLmhlYWQuZGF0YTphLmJ1ZmZlci5jb25jYXQoYS5sZW5ndGgpLGEuYnVmZmVyLmNsZWFyKCk7ZWxzZXtiPWEuYnVmZmVyO2E9YS5kZWNvZGVyO2lmKGM8Yi5oZWFkLmRhdGEubGVuZ3RoKWE9Yi5oZWFkLmRhdGEuc2xpY2UoMCxjKSxiLmhlYWQuZGF0YT1iLmhlYWQuZGF0YS5zbGljZShjKTtlbHNle2lmKGM9PT1iLmhlYWQuZGF0YS5sZW5ndGgpYj1iLnNoaWZ0KCk7ZWxzZSBpZihhKXthPWIuaGVhZDt2YXIgZD0xLGU9YS5kYXRhO2ZvcihjLT1lLmxlbmd0aDthPWEubmV4dDspe3ZhciBmPWEuZGF0YSxnPWM+Zi5sZW5ndGg/Zi5sZW5ndGg6YztlPWc9PT1mLmxlbmd0aD9lK2Y6ZStmLnNsaWNlKDAsYyk7Yy09ZztpZigwPT09Yyl7Zz09PWYubGVuZ3RoPygrK2QsYi5oZWFkPWEubmV4dD9hLm5leHQ6Yi50YWlsPW51bGwpOihiLmhlYWQ9YSxhLmRhdGE9Zi5zbGljZShnKSk7YnJlYWt9KytkfWIubGVuZ3RoLT0KZDtiPWV9ZWxzZXthPWwuYWxsb2NVbnNhZmUoYyk7ZD1iLmhlYWQ7ZT0xO2QuZGF0YS5jb3B5KGEpO2ZvcihjLT1kLmRhdGEubGVuZ3RoO2Q9ZC5uZXh0Oyl7Zj1kLmRhdGE7Zz1jPmYubGVuZ3RoP2YubGVuZ3RoOmM7Zi5jb3B5KGEsYS5sZW5ndGgtYywwLGcpO2MtPWc7aWYoMD09PWMpe2c9PT1mLmxlbmd0aD8oKytlLGIuaGVhZD1kLm5leHQ/ZC5uZXh0OmIudGFpbD1udWxsKTooYi5oZWFkPWQsZC5kYXRhPWYuc2xpY2UoZykpO2JyZWFrfSsrZX1iLmxlbmd0aC09ZTtiPWF9YT1ifWI9YX1yZXR1cm4gYn1mdW5jdGlvbiBKYyhjKXt2YXIgYT1jLl9yZWFkYWJsZVN0YXRlO2lmKDA8YS5sZW5ndGgpdGhyb3cgRXJyb3IoJyJlbmRSZWFkYWJsZSgpIiBjYWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpO2EuZW5kRW1pdHRlZHx8KGEuZW5kZWQ9ITAsWChtZyxhLGMpKX1mdW5jdGlvbiBtZyhjLGEpe2MuZW5kRW1pdHRlZHx8MCE9PWMubGVuZ3RofHwoYy5lbmRFbWl0dGVkPSEwLGEucmVhZGFibGU9CiExLGEuZW1pdCgiZW5kIikpfWZ1bmN0aW9uIG5nKGMsYSl7Zm9yKHZhciBiPTAsZD1jLmxlbmd0aDtiPGQ7YisrKWEoY1tiXSxiKX1mdW5jdGlvbiB2ZShjLGEpe2Zvcih2YXIgYj0wLGQ9Yy5sZW5ndGg7YjxkO2IrKylpZihjW2JdPT09YSlyZXR1cm4gYjtyZXR1cm4tMX1mdW5jdGlvbiBvZygpe31mdW5jdGlvbiBwZyhjLGEsYil7dGhpcy5jaHVuaz1jO3RoaXMuZW5jb2Rpbmc9YTt0aGlzLmNhbGxiYWNrPWI7dGhpcy5uZXh0PW51bGx9ZnVuY3Rpb24gS2MoYyxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYnVmZmVyIix7Z2V0OnhjKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCl9LCJfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciBpbnN0ZWFkLiIpfSk7Yz1jfHx7fTt0aGlzLm9iamVjdE1vZGU9ISFjLm9iamVjdE1vZGU7YSBpbnN0YW5jZW9mIFUmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwKISFjLndyaXRhYmxlT2JqZWN0TW9kZSk7dmFyIGI9Yy5oaWdoV2F0ZXJNYXJrLGQ9dGhpcy5vYmplY3RNb2RlPzE2OjE2Mzg0O3RoaXMuaGlnaFdhdGVyTWFyaz1ifHwwPT09Yj9iOmQ7dGhpcy5oaWdoV2F0ZXJNYXJrPX5+dGhpcy5oaWdoV2F0ZXJNYXJrO3RoaXMuZmluaXNoZWQ9dGhpcy5lbmRlZD10aGlzLmVuZGluZz10aGlzLm5lZWREcmFpbj0hMTt0aGlzLmRlY29kZVN0cmluZ3M9ITEhPT1jLmRlY29kZVN0cmluZ3M7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9Yy5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Ijt0aGlzLmxlbmd0aD0wO3RoaXMud3JpdGluZz0hMTt0aGlzLmNvcmtlZD0wO3RoaXMuc3luYz0hMDt0aGlzLmJ1ZmZlclByb2Nlc3Npbmc9ITE7dGhpcy5vbndyaXRlPWZ1bmN0aW9uKGMpe3ZhciBiPWEuX3dyaXRhYmxlU3RhdGUsZD1iLnN5bmMsZT1iLndyaXRlY2I7Yi53cml0aW5nPSExO2Iud3JpdGVjYj1udWxsO2IubGVuZ3RoLT1iLndyaXRlbGVuO2Iud3JpdGVsZW49MDtjPwooLS1iLnBlbmRpbmdjYixkP1goZSxjKTplKGMpLGEuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLGEuZW1pdCgiZXJyb3IiLGMpKTooKGM9d2UoYikpfHxiLmNvcmtlZHx8Yi5idWZmZXJQcm9jZXNzaW5nfHwhYi5idWZmZXJlZFJlcXVlc3R8fHhlKGEsYiksZD9YKHllLGEsYixjLGUpOnllKGEsYixjLGUpKX07dGhpcy53cml0ZWNiPW51bGw7dGhpcy53cml0ZWxlbj0wO3RoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdD10aGlzLmJ1ZmZlcmVkUmVxdWVzdD1udWxsO3RoaXMucGVuZGluZ2NiPTA7dGhpcy5lcnJvckVtaXR0ZWQ9dGhpcy5wcmVmaW5pc2hlZD0hMTt0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTA7dGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IHplKHRoaXMpfWZ1bmN0aW9uIEwoYyl7aWYoISh0aGlzIGluc3RhbmNlb2YgTHx8dGhpcyBpbnN0YW5jZW9mIFUpKXJldHVybiBuZXcgTChjKTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBLYyhjLHRoaXMpO3RoaXMud3JpdGFibGU9CiEwO2MmJigiZnVuY3Rpb24iPT09dHlwZW9mIGMud3JpdGUmJih0aGlzLl93cml0ZT1jLndyaXRlKSwiZnVuY3Rpb24iPT09dHlwZW9mIGMud3JpdGV2JiYodGhpcy5fd3JpdGV2PWMud3JpdGV2KSk7eC5jYWxsKHRoaXMpfWZ1bmN0aW9uIExjKGMsYSxiLGQsZSxmLGcpe2Eud3JpdGVsZW49ZDthLndyaXRlY2I9ZzthLndyaXRpbmc9ITA7YS5zeW5jPSEwO2I/Yy5fd3JpdGV2KGUsYS5vbndyaXRlKTpjLl93cml0ZShlLGYsYS5vbndyaXRlKTthLnN5bmM9ITF9ZnVuY3Rpb24geWUoYyxhLGIsZCl7IWImJjA9PT1hLmxlbmd0aCYmYS5uZWVkRHJhaW4mJihhLm5lZWREcmFpbj0hMSxjLmVtaXQoImRyYWluIikpO2EucGVuZGluZ2NiLS07ZCgpO0FlKGMsYSl9ZnVuY3Rpb24geGUoYyxhKXthLmJ1ZmZlclByb2Nlc3Npbmc9ITA7dmFyIGI9YS5idWZmZXJlZFJlcXVlc3Q7aWYoYy5fd3JpdGV2JiZiJiZiLm5leHQpe3ZhciBkPUFycmF5KGEuYnVmZmVyZWRSZXF1ZXN0Q291bnQpLGU9YS5jb3JrZWRSZXF1ZXN0c0ZyZWU7CmUuZW50cnk9Yjtmb3IodmFyIGY9MDtiOylkW2ZdPWIsYj1iLm5leHQsZis9MTtMYyhjLGEsITAsYS5sZW5ndGgsZCwiIixlLmZpbmlzaCk7YS5wZW5kaW5nY2IrKzthLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbDtlLm5leHQ/KGEuY29ya2VkUmVxdWVzdHNGcmVlPWUubmV4dCxlLm5leHQ9bnVsbCk6YS5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IHplKGEpfWVsc2V7Zm9yKDtiJiYoZD1iLmNodW5rLExjKGMsYSwhMSxhLm9iamVjdE1vZGU/MTpkLmxlbmd0aCxkLGIuZW5jb2RpbmcsYi5jYWxsYmFjayksYj1iLm5leHQsIWEud3JpdGluZyk7KTtudWxsPT09YiYmKGEubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsKX1hLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTA7YS5idWZmZXJlZFJlcXVlc3Q9YjthLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24gd2UoYyl7cmV0dXJuIGMuZW5kaW5nJiYwPT09Yy5sZW5ndGgmJm51bGw9PT1jLmJ1ZmZlcmVkUmVxdWVzdCYmIWMuZmluaXNoZWQmJiFjLndyaXRpbmd9CmZ1bmN0aW9uIEFlKGMsYSl7dmFyIGI9d2UoYSk7YiYmKDA9PT1hLnBlbmRpbmdjYj8oYS5wcmVmaW5pc2hlZHx8KGEucHJlZmluaXNoZWQ9ITAsYy5lbWl0KCJwcmVmaW5pc2giKSksYS5maW5pc2hlZD0hMCxjLmVtaXQoImZpbmlzaCIpKTphLnByZWZpbmlzaGVkfHwoYS5wcmVmaW5pc2hlZD0hMCxjLmVtaXQoInByZWZpbmlzaCIpKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gemUoYyl7dmFyIGE9dGhpczt0aGlzLmVudHJ5PXRoaXMubmV4dD1udWxsO3RoaXMuZmluaXNoPWZ1bmN0aW9uKGIpe3ZhciBkPWEuZW50cnk7Zm9yKGEuZW50cnk9bnVsbDtkOyl7dmFyIGU9ZC5jYWxsYmFjaztjLnBlbmRpbmdjYi0tO2UoYik7ZD1kLm5leHR9Yy5jb3JrZWRSZXF1ZXN0c0ZyZWU/Yy5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dD1hOmMuY29ya2VkUmVxdWVzdHNGcmVlPWF9fWZ1bmN0aW9uIFUoYyl7aWYoISh0aGlzIGluc3RhbmNlb2YgVSkpcmV0dXJuIG5ldyBVKGMpO3kuY2FsbCh0aGlzLGMpO0wuY2FsbCh0aGlzLApjKTtjJiYhMT09PWMucmVhZGFibGUmJih0aGlzLnJlYWRhYmxlPSExKTtjJiYhMT09PWMud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKTt0aGlzLmFsbG93SGFsZk9wZW49ITA7YyYmITE9PT1jLmFsbG93SGFsZk9wZW4mJih0aGlzLmFsbG93SGFsZk9wZW49ITEpO3RoaXMub25jZSgiZW5kIixxZyl9ZnVuY3Rpb24gcWcoKXt0aGlzLmFsbG93SGFsZk9wZW58fHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fFgocmcsdGhpcyl9ZnVuY3Rpb24gcmcoYyl7Yy5lbmQoKX1mdW5jdGlvbiBzZyhjKXt0aGlzLmFmdGVyVHJhbnNmb3JtPWZ1bmN0aW9uKGEsYil7dmFyIGQ9Yy5fdHJhbnNmb3JtU3RhdGU7ZC50cmFuc2Zvcm1pbmc9ITE7dmFyIGU9ZC53cml0ZWNiO2U/KGQud3JpdGVjaHVuaz1udWxsLGQud3JpdGVjYj1udWxsLG51bGwhPT1iJiZ2b2lkIDAhPT1iJiZjLnB1c2goYiksZShhKSxhPWMuX3JlYWRhYmxlU3RhdGUsYS5yZWFkaW5nPSExLChhLm5lZWRSZWFkYWJsZXx8YS5sZW5ndGg8CmEuaGlnaFdhdGVyTWFyaykmJmMuX3JlYWQoYS5oaWdoV2F0ZXJNYXJrKSxhPXZvaWQgMCk6YT1jLmVtaXQoImVycm9yIixFcnJvcigibm8gd3JpdGVjYiBpbiBUcmFuc2Zvcm0gY2xhc3MiKSk7cmV0dXJuIGF9O3RoaXMudHJhbnNmb3JtaW5nPXRoaXMubmVlZFRyYW5zZm9ybT0hMTt0aGlzLndyaXRlZW5jb2Rpbmc9dGhpcy53cml0ZWNodW5rPXRoaXMud3JpdGVjYj1udWxsfWZ1bmN0aW9uIGJhKGMpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGJhKSlyZXR1cm4gbmV3IGJhKGMpO1UuY2FsbCh0aGlzLGMpO3RoaXMuX3RyYW5zZm9ybVN0YXRlPW5ldyBzZyh0aGlzKTt2YXIgYT10aGlzO3RoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPSEwO3RoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMTtjJiYoImZ1bmN0aW9uIj09PXR5cGVvZiBjLnRyYW5zZm9ybSYmKHRoaXMuX3RyYW5zZm9ybT1jLnRyYW5zZm9ybSksImZ1bmN0aW9uIj09PXR5cGVvZiBjLmZsdXNoJiYodGhpcy5fZmx1c2g9CmMuZmx1c2gpKTt0aGlzLm9uY2UoInByZWZpbmlzaCIsZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT09dHlwZW9mIHRoaXMuX2ZsdXNoP3RoaXMuX2ZsdXNoKGZ1bmN0aW9uKGMpe0JlKGEsYyl9KTpCZShhKX0pfWZ1bmN0aW9uIEJlKGMsYSl7aWYoYSlyZXR1cm4gYy5lbWl0KCJlcnJvciIsYSk7YT1jLl90cmFuc2Zvcm1TdGF0ZTtpZihjLl93cml0YWJsZVN0YXRlLmxlbmd0aCl0aHJvdyBFcnJvcigiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHdzLmxlbmd0aCAhPSAwIik7aWYoYS50cmFuc2Zvcm1pbmcpdGhyb3cgRXJyb3IoIkNhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmciKTtyZXR1cm4gYy5wdXNoKG51bGwpfWZ1bmN0aW9uIHNiKGMpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHNiKSlyZXR1cm4gbmV3IHNiKGMpO2JhLmNhbGwodGhpcyxjKX1mdW5jdGlvbiBjYSgpe3guY2FsbCh0aGlzKX1mdW5jdGlvbiB0ZyhjLGEpe3ZhciBiPWMuc3BsaXQoIkAiKSwKZD0iIjsxPGIubGVuZ3RoJiYoZD1iWzBdKyJAIixjPWJbMV0pO2M9Yy5yZXBsYWNlKHVnLCIuIik7Yz1jLnNwbGl0KCIuIik7Yj1jLmxlbmd0aDtmb3IodmFyIGU9W107Yi0tOyllW2JdPWEoY1tiXSk7YT1lLmpvaW4oIi4iKTtyZXR1cm4gZCthfWZ1bmN0aW9uIENlKGMsYSl7cmV0dXJuIGMrMjIrNzUqKDI2PmMpLSgoMCE9YSk8PDUpfWZ1bmN0aW9uIHZnKGMpe3JldHVybiB0ZyhjLGZ1bmN0aW9uKGEpe2lmKHdnLnRlc3QoYSkpe3ZhciBjLGQ9W10sZT1bXSxmPTA7Zm9yKGM9YS5sZW5ndGg7ZjxjOyl7dmFyIGc9YS5jaGFyQ29kZUF0KGYrKyk7aWYoNTUyOTY8PWcmJjU2MzE5Pj1nJiZmPGMpe3ZhciBoPWEuY2hhckNvZGVBdChmKyspOzU2MzIwPT0oaCY2NDUxMik/ZS5wdXNoKCgoZyYxMDIzKTw8MTApKyhoJjEwMjMpKzY1NTM2KTooZS5wdXNoKGcpLGYtLSl9ZWxzZSBlLnB1c2goZyl9YT1lO2g9YS5sZW5ndGg7ZT0xMjg7dmFyIGs9MCx0PTcyO2ZvcihnPTA7ZzxoOysrZyl7dmFyIHE9CmFbZ107MTI4PnEmJmQucHVzaChNYyhxKSl9Zm9yKChmPWM9ZC5sZW5ndGgpJiZkLnB1c2goIi0iKTtmPGg7KXt2YXIgQT0yMTQ3NDgzNjQ3O2ZvcihnPTA7ZzxoOysrZylxPWFbZ10scT49ZSYmcTxBJiYoQT1xKTt2YXIgcj1mKzE7aWYoQS1lPlphKCgyMTQ3NDgzNjQ3LWspL3IpKXRocm93IG5ldyBSYW5nZUVycm9yKERlLm92ZXJmbG93KTtrKz0oQS1lKSpyO2U9QTtmb3IoZz0wO2c8aDsrK2cpe3E9YVtnXTtpZihxPGUmJjIxNDc0ODM2NDc8KytrKXRocm93IG5ldyBSYW5nZUVycm9yKERlLm92ZXJmbG93KTtpZihxPT1lKXt2YXIgUD1rO2ZvcihBPTM2OztBKz0zNil7cT1BPD10PzE6QT49dCsyNj8yNjpBLXQ7aWYoUDxxKWJyZWFrO3ZhciBwPVAtcTtQPTM2LXE7ZC5wdXNoKE1jKENlKHErcCVQLDApKSk7UD1aYShwL1ApfWQucHVzaChNYyhDZShQLDApKSk7dD1yO0E9MDtrPWY9PWM/WmEoay83MDApOms+PjE7Zm9yKGsrPVphKGsvdCk7NDU1PGs7QSs9MzYpaz1aYShrLzM1KTt0PQpaYShBKzM2KmsvKGsrMzgpKTtrPTA7KytmfX0rK2s7KytlfWQ9InhuLS0iK2Quam9pbigiIil9ZWxzZSBkPWE7cmV0dXJuIGR9KX1mdW5jdGlvbiB0YihjKXtzd2l0Y2godHlwZW9mIGMpe2Nhc2UgInN0cmluZyI6cmV0dXJuIGM7Y2FzZSAiYm9vbGVhbiI6cmV0dXJuIGM/InRydWUiOiJmYWxzZSI7Y2FzZSAibnVtYmVyIjpyZXR1cm4gaXNGaW5pdGUoYyk/YzoiIjtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiB4ZyhjLGEsYixkKXthPWF8fCImIjtiPWJ8fCI9IjtudWxsPT09YyYmKGM9dm9pZCAwKTtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBjP0VlKHlnKGMpLGZ1bmN0aW9uKGQpe3ZhciBlPWVuY29kZVVSSUNvbXBvbmVudCh0YihkKSkrYjtyZXR1cm4gRmUoY1tkXSk/RWUoY1tkXSxmdW5jdGlvbihhKXtyZXR1cm4gZStlbmNvZGVVUklDb21wb25lbnQodGIoYSkpfSkuam9pbihhKTplK2VuY29kZVVSSUNvbXBvbmVudCh0YihjW2RdKSl9KS5qb2luKGEpOmQ/ZW5jb2RlVVJJQ29tcG9uZW50KHRiKGQpKSsKYitlbmNvZGVVUklDb21wb25lbnQodGIoYykpOiIifWZ1bmN0aW9uIEVlKGMsYSl7aWYoYy5tYXApcmV0dXJuIGMubWFwKGEpO2Zvcih2YXIgYj1bXSxkPTA7ZDxjLmxlbmd0aDtkKyspYi5wdXNoKGEoY1tkXSxkKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gR2UoYyxhLGIsZCl7Yj1ifHwiPSI7dmFyIGU9e307aWYoInN0cmluZyIhPT10eXBlb2YgY3x8MD09PWMubGVuZ3RoKXJldHVybiBlO3ZhciBmPS9cKy9nO2M9Yy5zcGxpdChhfHwiJiIpO2E9MUUzO2QmJiJudW1iZXIiPT09dHlwZW9mIGQubWF4S2V5cyYmKGE9ZC5tYXhLZXlzKTtkPWMubGVuZ3RoOzA8YSYmZD5hJiYoZD1hKTtmb3IoYT0wO2E8ZDsrK2Epe3ZhciBnPWNbYV0ucmVwbGFjZShmLCIlMjAiKSxoPWcuaW5kZXhPZihiKTtpZigwPD1oKXt2YXIgaz1nLnN1YnN0cigwLGgpO2c9Zy5zdWJzdHIoaCsxKX1lbHNlIGs9ZyxnPSIiO2s9ZGVjb2RlVVJJQ29tcG9uZW50KGspO2c9ZGVjb2RlVVJJQ29tcG9uZW50KGcpO09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLAprKT9GZShlW2tdKT9lW2tdLnB1c2goZyk6ZVtrXT1bZVtrXSxnXTplW2tdPWd9cmV0dXJuIGV9ZnVuY3Rpb24gZGEoKXt0aGlzLmhyZWY9dGhpcy5wYXRoPXRoaXMucGF0aG5hbWU9dGhpcy5xdWVyeT10aGlzLnNlYXJjaD10aGlzLmhhc2g9dGhpcy5ob3N0bmFtZT10aGlzLnBvcnQ9dGhpcy5ob3N0PXRoaXMuYXV0aD10aGlzLnNsYXNoZXM9dGhpcy5wcm90b2NvbD1udWxsfWZ1bmN0aW9uIFJiKGMsYSxiKXtpZihjJiZ3YShjKSYmYyBpbnN0YW5jZW9mIGRhKXJldHVybiBjO3ZhciBkPW5ldyBkYTtkLnBhcnNlKGMsYSxiKTtyZXR1cm4gZH1mdW5jdGlvbiBIZShjLGEsYixkKXtpZighSmEoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGFyYW1ldGVyICd1cmwnIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAiK3R5cGVvZiBhKTt2YXIgZT1hLmluZGV4T2YoIj8iKTtlPS0xIT09ZSYmZTxhLmluZGV4T2YoIiMiKT8iPyI6IiMiO2E9YS5zcGxpdChlKTthWzBdPWFbMF0ucmVwbGFjZSgvXFwvZywKIi8iKTthPWEuam9pbihlKTtlPWEudHJpbSgpO2lmKCFkJiYxPT09YS5zcGxpdCgiIyIpLmxlbmd0aCYmKGE9emcuZXhlYyhlKSkpcmV0dXJuIGMucGF0aD1lLGMuaHJlZj1lLGMucGF0aG5hbWU9YVsxXSxhWzJdPyhjLnNlYXJjaD1hWzJdLGMucXVlcnk9Yj9HZShjLnNlYXJjaC5zdWJzdHIoMSkpOmMuc2VhcmNoLnN1YnN0cigxKSk6YiYmKGMuc2VhcmNoPSIiLGMucXVlcnk9e30pLGM7aWYoYT1BZy5leGVjKGUpKXthPWFbMF07dmFyIGY9YS50b0xvd2VyQ2FzZSgpO2MucHJvdG9jb2w9ZjtlPWUuc3Vic3RyKGEubGVuZ3RoKX1pZihkfHxhfHxlLm1hdGNoKC9eXC9cL1teQFwvXStAW15AXC9dKy8pKXt2YXIgZz0iLy8iPT09ZS5zdWJzdHIoMCwyKTshZ3x8YSYmTmNbYV18fChlPWUuc3Vic3RyKDIpLGMuc2xhc2hlcz0hMCl9aWYoIU5jW2FdJiYoZ3x8YSYmISRhW2FdKSl7YT0tMTtmb3IoZD0wO2Q8SWUubGVuZ3RoO2QrKylnPWUuaW5kZXhPZihJZVtkXSksLTEhPT1nJiYoLTE9PT1hfHwKZzxhKSYmKGE9Zyk7Zz0tMT09PWE/ZS5sYXN0SW5kZXhPZigiQCIpOmUubGFzdEluZGV4T2YoIkAiLGEpOy0xIT09ZyYmKGQ9ZS5zbGljZSgwLGcpLGU9ZS5zbGljZShnKzEpLGMuYXV0aD1kZWNvZGVVUklDb21wb25lbnQoZCkpO2E9LTE7Zm9yKGQ9MDtkPEplLmxlbmd0aDtkKyspZz1lLmluZGV4T2YoSmVbZF0pLC0xIT09ZyYmKC0xPT09YXx8ZzxhKSYmKGE9Zyk7LTE9PT1hJiYoYT1lLmxlbmd0aCk7Yy5ob3N0PWUuc2xpY2UoMCxhKTtlPWUuc2xpY2UoYSk7S2UoYyk7Yy5ob3N0bmFtZT1jLmhvc3RuYW1lfHwiIjtnPSJbIj09PWMuaG9zdG5hbWVbMF0mJiJdIj09PWMuaG9zdG5hbWVbYy5ob3N0bmFtZS5sZW5ndGgtMV07aWYoIWcpe3ZhciBoPWMuaG9zdG5hbWUuc3BsaXQoL1wuLyk7ZD0wO2ZvcihhPWgubGVuZ3RoO2Q8YTtkKyspe3ZhciBrPWhbZF07aWYoayYmIWsubWF0Y2goTGUpKXtmb3IodmFyIHQ9IiIscT0wLEE9ay5sZW5ndGg7cTxBO3ErKyl0PTEyNzxrLmNoYXJDb2RlQXQocSk/CnQrIngiOnQra1txXTtpZighdC5tYXRjaChMZSkpe2E9aC5zbGljZSgwLGQpO2Q9aC5zbGljZShkKzEpO2lmKGs9ay5tYXRjaChCZykpYS5wdXNoKGtbMV0pLGQudW5zaGlmdChrWzJdKTtkLmxlbmd0aCYmKGU9Ii8iK2Quam9pbigiLiIpK2UpO2MuaG9zdG5hbWU9YS5qb2luKCIuIik7YnJlYWt9fX19Yy5ob3N0bmFtZT1jLmhvc3RuYW1lLmxlbmd0aD5DZz8iIjpjLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7Z3x8KGMuaG9zdG5hbWU9dmcoYy5ob3N0bmFtZSkpO2Q9Yy5wb3J0PyI6IitjLnBvcnQ6IiI7Yy5ob3N0PShjLmhvc3RuYW1lfHwiIikrZDtjLmhyZWYrPWMuaG9zdDtnJiYoYy5ob3N0bmFtZT1jLmhvc3RuYW1lLnN1YnN0cigxLGMuaG9zdG5hbWUubGVuZ3RoLTIpLCIvIiE9PWVbMF0mJihlPSIvIitlKSl9aWYoIURnW2ZdKWZvcihkPTAsYT1PYy5sZW5ndGg7ZDxhO2QrKylnPU9jW2RdLC0xIT09ZS5pbmRleE9mKGcpJiYoaz1lbmNvZGVVUklDb21wb25lbnQoZyksaz09PWcmJgooaz1lc2NhcGUoZykpLGU9ZS5zcGxpdChnKS5qb2luKGspKTtkPWUuaW5kZXhPZigiIyIpOy0xIT09ZCYmKGMuaGFzaD1lLnN1YnN0cihkKSxlPWUuc2xpY2UoMCxkKSk7ZD1lLmluZGV4T2YoIj8iKTstMSE9PWQ/KGMuc2VhcmNoPWUuc3Vic3RyKGQpLGMucXVlcnk9ZS5zdWJzdHIoZCsxKSxiJiYoYy5xdWVyeT1HZShjLnF1ZXJ5KSksZT1lLnNsaWNlKDAsZCkpOmImJihjLnNlYXJjaD0iIixjLnF1ZXJ5PXt9KTtlJiYoYy5wYXRobmFtZT1lKTskYVtmXSYmYy5ob3N0bmFtZSYmIWMucGF0aG5hbWUmJihjLnBhdGhuYW1lPSIvIik7aWYoYy5wYXRobmFtZXx8Yy5zZWFyY2gpZD1jLnBhdGhuYW1lfHwiIixjLnBhdGg9ZCsoYy5zZWFyY2h8fCIiKTtjLmhyZWY9UGMoYyk7cmV0dXJuIGN9ZnVuY3Rpb24gUGMoYyl7dmFyIGE9Yy5hdXRofHwiIjthJiYoYT1lbmNvZGVVUklDb21wb25lbnQoYSksYT1hLnJlcGxhY2UoLyUzQS9pLCI6IiksYSs9IkAiKTt2YXIgYj1jLnByb3RvY29sfHwiIiwKZD1jLnBhdGhuYW1lfHwiIixlPWMuaGFzaHx8IiIsZj0hMSxnPSIiO2MuaG9zdD9mPWErYy5ob3N0OmMuaG9zdG5hbWUmJihmPWErKC0xPT09Yy5ob3N0bmFtZS5pbmRleE9mKCI6Iik/Yy5ob3N0bmFtZToiWyIrdGhpcy5ob3N0bmFtZSsiXSIpLGMucG9ydCYmKGYrPSI6IitjLnBvcnQpKTtjLnF1ZXJ5JiZ3YShjLnF1ZXJ5KSYmT2JqZWN0LmtleXMoYy5xdWVyeSkubGVuZ3RoJiYoZz14ZyhjLnF1ZXJ5KSk7YT1jLnNlYXJjaHx8ZyYmIj8iK2d8fCIiO2ImJiI6IiE9PWIuc3Vic3RyKC0xKSYmKGIrPSI6Iik7Yy5zbGFzaGVzfHwoIWJ8fCRhW2JdKSYmITEhPT1mPyhmPSIvLyIrKGZ8fCIiKSxkJiYiLyIhPT1kLmNoYXJBdCgwKSYmKGQ9Ii8iK2QpKTpmfHwoZj0iIik7ZSYmIiMiIT09ZS5jaGFyQXQoMCkmJihlPSIjIitlKTthJiYiPyIhPT1hLmNoYXJBdCgwKSYmKGE9Ij8iK2EpO2Q9ZC5yZXBsYWNlKC9bPyNdL2csZnVuY3Rpb24oYSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChhKX0pOwphPWEucmVwbGFjZSgiIyIsIiUyMyIpO3JldHVybiBiK2YrZCthK2V9ZnVuY3Rpb24gS2UoYyl7dmFyIGE9Yy5ob3N0LGI9RWcuZXhlYyhhKTtiJiYoYj1iWzBdLCI6IiE9PWImJihjLnBvcnQ9Yi5zdWJzdHIoMSkpLGE9YS5zdWJzdHIoMCxhLmxlbmd0aC1iLmxlbmd0aCkpO2EmJihjLmhvc3RuYW1lPWEpfWZ1bmN0aW9uIFFjKGMsYSl7UWM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGEsYyl7YS5fX3Byb3RvX189Y318fGZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBiIGluIGMpYy5oYXNPd25Qcm9wZXJ0eShiKSYmKGFbYl09Y1tiXSl9O3JldHVybiBRYyhjLGEpfWZ1bmN0aW9uIFJjKGMsYSl7ZnVuY3Rpb24gYigpe3RoaXMuY29uc3RydWN0b3I9Y31RYyhjLGEpO2MucHJvdG90eXBlPW51bGw9PT1hP09iamVjdC5jcmVhdGUoYSk6KGIucHJvdG90eXBlPWEucHJvdG90eXBlLG5ldyBiKX1mdW5jdGlvbiBTYihjKXt2YXIgYT0KImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJmNbU3ltYm9sLml0ZXJhdG9yXSxiPTA7cmV0dXJuIGE/YS5jYWxsKGMpOntuZXh0OmZ1bmN0aW9uKCl7YyYmYj49Yy5sZW5ndGgmJihjPXZvaWQgMCk7cmV0dXJue3ZhbHVlOmMmJmNbYisrXSxkb25lOiFjfX19fWZ1bmN0aW9uIFRiKGMsYSl7dmFyIGI9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJmNbU3ltYm9sLml0ZXJhdG9yXTtpZighYilyZXR1cm4gYztjPWIuY2FsbChjKTt2YXIgZCxlPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1hfHwwPGEtLSkmJiEoZD1jLm5leHQoKSkuZG9uZTspZS5wdXNoKGQudmFsdWUpfWNhdGNoKGcpe3ZhciBmPXtlcnJvcjpnfX1maW5hbGx5e3RyeXtkJiYhZC5kb25lJiYoYj1jWyJyZXR1cm4iXSkmJmIuY2FsbChjKX1maW5hbGx5e2lmKGYpdGhyb3cgZi5lcnJvcjt9fXJldHVybiBlfWZ1bmN0aW9uIFViKCl7Zm9yKHZhciBjPVtdLGE9MDthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKWM9Yy5jb25jYXQoVGIoYXJndW1lbnRzW2FdKSk7CnJldHVybiBjfWZ1bmN0aW9uIE1lKCl7U2M9ITA7Zm9yKHZhciBjPTA7NjQ+YzsrK2MpZWFbY109IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iW2NdLE1bIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJDb2RlQXQoYyldPWM7TVs0NV09NjI7TVs5NV09NjN9ZnVuY3Rpb24gRmcoYyxhLGIpe2Zvcih2YXIgZD1bXSxlPWE7ZTxiO2UrPTMpYT0oY1tlXTw8MTYpKyhjW2UrMV08PDgpK2NbZSsyXSxkLnB1c2goZWFbYT4+MTgmNjNdK2VhW2E+PjEyJjYzXStlYVthPj42JjYzXStlYVthJjYzXSk7cmV0dXJuIGQuam9pbigiIil9ZnVuY3Rpb24gTmUoYyl7U2N8fE1lKCk7Zm9yKHZhciBhPWMubGVuZ3RoLGI9YSUzLGQ9IiIsZT1bXSxmPTAsZz1hLWI7ZjxnO2YrPTE2MzgzKWUucHVzaChGZyhjLGYsZisxNjM4Mz5nP2c6ZisxNjM4MykpOzE9PT0KYj8oYz1jW2EtMV0sZCs9ZWFbYz4+Ml0sZCs9ZWFbYzw8NCY2M10sZCs9Ij09Iik6Mj09PWImJihjPShjW2EtMl08PDgpK2NbYS0xXSxkKz1lYVtjPj4xMF0sZCs9ZWFbYz4+NCY2M10sZCs9ZWFbYzw8MiY2M10sZCs9Ij0iKTtlLnB1c2goZCk7cmV0dXJuIGUuam9pbigiIil9ZnVuY3Rpb24gVmIoYyxhLGIsZCxlKXt2YXIgZj04KmUtZC0xLGc9KDE8PGYpLTEsaD1nPj4xLGs9LTc7ZT1iP2UtMTowO3ZhciB0PWI/LTE6MSxxPWNbYStlXTtlKz10O2I9cSYoMTw8LWspLTE7cT4+PS1rO2ZvcihrKz1mOzA8aztiPTI1NipiK2NbYStlXSxlKz10LGstPTgpO2Y9YiYoMTw8LWspLTE7Yj4+PS1rO2ZvcihrKz1kOzA8aztmPTI1NipmK2NbYStlXSxlKz10LGstPTgpO2lmKDA9PT1iKWI9MS1oO2Vsc2V7aWYoYj09PWcpcmV0dXJuIGY/TmFOOkluZmluaXR5KihxPy0xOjEpO2YrPU1hdGgucG93KDIsZCk7Yi09aH1yZXR1cm4ocT8tMToxKSpmKk1hdGgucG93KDIsYi1kKX1mdW5jdGlvbiBXYihjLAphLGIsZCxlLGYpe3ZhciBnLGg9OCpmLWUtMSxrPSgxPDxoKS0xLHQ9az4+MSxxPTIzPT09ZT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjA7Zj1kPzA6Zi0xO3ZhciBBPWQ/MTotMSxyPTA+YXx8MD09PWEmJjA+MS9hPzE6MDthPU1hdGguYWJzKGEpO2Zvcihpc05hTihhKXx8SW5maW5pdHk9PT1hPyhhPWlzTmFOKGEpPzE6MCxkPWspOihkPU1hdGguZmxvb3IoTWF0aC5sb2coYSkvTWF0aC5MTjIpLDE+YSooZz1NYXRoLnBvdygyLC1kKSkmJihkLS0sZyo9MiksYT0xPD1kK3Q/YStxL2c6YStxKk1hdGgucG93KDIsMS10KSwyPD1hKmcmJihkKyssZy89MiksZCt0Pj1rPyhhPTAsZD1rKToxPD1kK3Q/KGE9KGEqZy0xKSpNYXRoLnBvdygyLGUpLGQrPXQpOihhPWEqTWF0aC5wb3coMix0LTEpKk1hdGgucG93KDIsZSksZD0wKSk7ODw9ZTtjW2IrZl09YSYyNTUsZis9QSxhLz0yNTYsZS09OCk7ZD1kPDxlfGE7Zm9yKGgrPWU7MDxoO2NbYitmXT1kJjI1NSxmKz1BLGQvPTI1NiwKaC09OCk7Y1tiK2YtQV18PTEyOCpyfWZ1bmN0aW9uIG1hKGMsYSl7aWYoKG0uVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjMpPGEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7bS5UWVBFRF9BUlJBWV9TVVBQT1JUPyhjPW5ldyBVaW50OEFycmF5KGEpLGMuX19wcm90b19fPW0ucHJvdG90eXBlKToobnVsbD09PWMmJihjPW5ldyBtKGEpKSxjLmxlbmd0aD1hKTtyZXR1cm4gY31mdW5jdGlvbiBtKGMsYSxiKXtpZighKG0uVFlQRURfQVJSQVlfU1VQUE9SVHx8dGhpcyBpbnN0YW5jZW9mIG0pKXJldHVybiBuZXcgbShjLGEsYik7aWYoIm51bWJlciI9PT10eXBlb2YgYyl7aWYoInN0cmluZyI9PT10eXBlb2YgYSl0aHJvdyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gVGModGhpcyxjKX1yZXR1cm4gT2UodGhpcyxjLAphLGIpfWZ1bmN0aW9uIE9lKGMsYSxiLGQpe2lmKCJudW1iZXIiPT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcignInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIEFycmF5QnVmZmVyJiZhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe2EuYnl0ZUxlbmd0aDtpZigwPmJ8fGEuYnl0ZUxlbmd0aDxiKXRocm93IG5ldyBSYW5nZUVycm9yKCInb2Zmc2V0JyBpcyBvdXQgb2YgYm91bmRzIik7aWYoYS5ieXRlTGVuZ3RoPGIrKGR8fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCInbGVuZ3RoJyBpcyBvdXQgb2YgYm91bmRzIik7YT12b2lkIDA9PT1iJiZ2b2lkIDA9PT1kP25ldyBVaW50OEFycmF5KGEpOnZvaWQgMD09PWQ/bmV3IFVpbnQ4QXJyYXkoYSxiKTpuZXcgVWludDhBcnJheShhLGIsZCk7bS5UWVBFRF9BUlJBWV9TVVBQT1JUPyhjPWEsYy5fX3Byb3RvX189bS5wcm90b3R5cGUpOmM9VWMoYyxhKTtyZXR1cm4gY31pZigic3RyaW5nIj09PQp0eXBlb2YgYSl7ZD1jO2M9YjtpZigic3RyaW5nIiE9PXR5cGVvZiBjfHwiIj09PWMpYz0idXRmOCI7aWYoIW0uaXNFbmNvZGluZyhjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciZW5jb2RpbmciIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKTtiPVBlKGEsYyl8MDtkPW1hKGQsYik7YT1kLndyaXRlKGEsYyk7YSE9PWImJihkPWQuc2xpY2UoMCxhKSk7cmV0dXJuIGR9cmV0dXJuIEdnKGMsYSl9ZnVuY3Rpb24gUWUoYyl7aWYoIm51bWJlciIhPT10eXBlb2YgYyl0aHJvdyBuZXcgVHlwZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpO2lmKDA+Yyl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJyk7fWZ1bmN0aW9uIFRjKGMsYSl7UWUoYSk7Yz1tYShjLDA+YT8wOlZjKGEpfDApO2lmKCFtLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKHZhciBiPTA7YjxhOysrYiljW2JdPTA7cmV0dXJuIGN9ZnVuY3Rpb24gVWMoYywKYSl7dmFyIGI9MD5hLmxlbmd0aD8wOlZjKGEubGVuZ3RoKXwwO2M9bWEoYyxiKTtmb3IodmFyIGQ9MDtkPGI7ZCs9MSljW2RdPWFbZF0mMjU1O3JldHVybiBjfWZ1bmN0aW9uIEdnKGMsYSl7aWYoZmEoYSkpe3ZhciBiPVZjKGEubGVuZ3RoKXwwO2M9bWEoYyxiKTtpZigwPT09Yy5sZW5ndGgpcmV0dXJuIGM7YS5jb3B5KGMsMCwwLGIpO3JldHVybiBjfWlmKGEpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIEFycmF5QnVmZmVyJiZhLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIGEpcmV0dXJuKGI9Im51bWJlciIhPT10eXBlb2YgYS5sZW5ndGgpfHwoYj1hLmxlbmd0aCxiPWIhPT1iKSxiP21hKGMsMCk6VWMoYyxhKTtpZigiQnVmZmVyIj09PWEudHlwZSYmUmUoYS5kYXRhKSlyZXR1cm4gVWMoYyxhLmRhdGEpfXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4iKTsKfWZ1bmN0aW9uIFZjKGMpe2lmKGM+PShtLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweCIrKG0uVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjMpLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIGN8MH1mdW5jdGlvbiBmYShjKXtyZXR1cm4hKG51bGw9PWN8fCFjLl9pc0J1ZmZlcil9ZnVuY3Rpb24gUGUoYyxhKXtpZihmYShjKSlyZXR1cm4gYy5sZW5ndGg7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgQXJyYXlCdWZmZXImJiJmdW5jdGlvbiI9PT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGMpfHxjIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBjLmJ5dGVMZW5ndGg7InN0cmluZyIhPT10eXBlb2YgYyYmKGM9IiIrYyk7dmFyIGI9Yy5sZW5ndGg7CmlmKDA9PT1iKXJldHVybiAwO2Zvcih2YXIgZD0hMTs7KXN3aXRjaChhKXtjYXNlICJhc2NpaSI6Y2FzZSAibGF0aW4xIjpjYXNlICJiaW5hcnkiOnJldHVybiBiO2Nhc2UgInV0ZjgiOmNhc2UgInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gWGIoYykubGVuZ3RoO2Nhc2UgInVjczIiOmNhc2UgInVjcy0yIjpjYXNlICJ1dGYxNmxlIjpjYXNlICJ1dGYtMTZsZSI6cmV0dXJuIDIqYjtjYXNlICJoZXgiOnJldHVybiBiPj4+MTtjYXNlICJiYXNlNjQiOnJldHVybiBTZShjKS5sZW5ndGg7ZGVmYXVsdDppZihkKXJldHVybiBYYihjKS5sZW5ndGg7YT0oIiIrYSkudG9Mb3dlckNhc2UoKTtkPSEwfX1mdW5jdGlvbiBIZyhjLGEsYil7dmFyIGQ9ITE7aWYodm9pZCAwPT09YXx8MD5hKWE9MDtpZihhPnRoaXMubGVuZ3RoKXJldHVybiIiO2lmKHZvaWQgMD09PWJ8fGI+dGhpcy5sZW5ndGgpYj10aGlzLmxlbmd0aDtpZigwPj1iKXJldHVybiIiO2I+Pj49MDthPj4+PTA7aWYoYjw9YSlyZXR1cm4iIjsKZm9yKGN8fChjPSJ1dGY4Iik7Oylzd2l0Y2goYyl7Y2FzZSAiaGV4IjpjPWE7YT1iO2I9dGhpcy5sZW5ndGg7aWYoIWN8fDA+YyljPTA7aWYoIWF8fDA+YXx8YT5iKWE9YjtkPSIiO2ZvcihiPWM7YjxhOysrYiljPWQsZD10aGlzW2JdLGQ9MTY+ZD8iMCIrZC50b1N0cmluZygxNik6ZC50b1N0cmluZygxNiksZD1jK2Q7cmV0dXJuIGQ7Y2FzZSAidXRmOCI6Y2FzZSAidXRmLTgiOnJldHVybiBUZSh0aGlzLGEsYik7Y2FzZSAiYXNjaWkiOmM9IiI7Zm9yKGI9TWF0aC5taW4odGhpcy5sZW5ndGgsYik7YTxiOysrYSljKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXNbYV0mMTI3KTtyZXR1cm4gYztjYXNlICJsYXRpbjEiOmNhc2UgImJpbmFyeSI6Yz0iIjtmb3IoYj1NYXRoLm1pbih0aGlzLmxlbmd0aCxiKTthPGI7KythKWMrPVN0cmluZy5mcm9tQ2hhckNvZGUodGhpc1thXSk7cmV0dXJuIGM7Y2FzZSAiYmFzZTY0IjpyZXR1cm4gYT0wPT09YSYmYj09PXRoaXMubGVuZ3RoP05lKHRoaXMpOgpOZSh0aGlzLnNsaWNlKGEsYikpLGE7Y2FzZSAidWNzMiI6Y2FzZSAidWNzLTIiOmNhc2UgInV0ZjE2bGUiOmNhc2UgInV0Zi0xNmxlIjphPXRoaXMuc2xpY2UoYSxiKTtiPSIiO2ZvcihjPTA7YzxhLmxlbmd0aDtjKz0yKWIrPVN0cmluZy5mcm9tQ2hhckNvZGUoYVtjXSsyNTYqYVtjKzFdKTtyZXR1cm4gYjtkZWZhdWx0OmlmKGQpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitjKTtjPShjKyIiKS50b0xvd2VyQ2FzZSgpO2Q9ITB9fWZ1bmN0aW9uIE1hKGMsYSxiKXt2YXIgZD1jW2FdO2NbYV09Y1tiXTtjW2JdPWR9ZnVuY3Rpb24gVWUoYyxhLGIsZCxlKXtpZigwPT09Yy5sZW5ndGgpcmV0dXJuLTE7InN0cmluZyI9PT10eXBlb2YgYj8oZD1iLGI9MCk6MjE0NzQ4MzY0NzxiP2I9MjE0NzQ4MzY0NzotMjE0NzQ4MzY0OD5iJiYoYj0tMjE0NzQ4MzY0OCk7Yj0rYjtpc05hTihiKSYmKGI9ZT8wOmMubGVuZ3RoLTEpOzA+YiYmKGI9Yy5sZW5ndGgrYik7aWYoYj49CmMubGVuZ3RoKXtpZihlKXJldHVybi0xO2I9Yy5sZW5ndGgtMX1lbHNlIGlmKDA+YilpZihlKWI9MDtlbHNlIHJldHVybi0xOyJzdHJpbmciPT09dHlwZW9mIGEmJihhPW0uZnJvbShhLGQpKTtpZihmYShhKSlyZXR1cm4gMD09PWEubGVuZ3RoPy0xOlZlKGMsYSxiLGQsZSk7aWYoIm51bWJlciI9PT10eXBlb2YgYSlyZXR1cm4gYSY9MjU1LG0uVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2U/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGMsYSxiKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGMsYSxiKTpWZShjLFthXSxiLGQsZSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIik7fWZ1bmN0aW9uIFZlKGMsYSxiLGQsZSl7ZnVuY3Rpb24gZihhLGMpe3JldHVybiAxPT09Zz9hW2NdOmEucmVhZFVJbnQxNkJFKGMqCmcpfXZhciBnPTEsaD1jLmxlbmd0aCxrPWEubGVuZ3RoO2lmKHZvaWQgMCE9PWQmJihkPVN0cmluZyhkKS50b0xvd2VyQ2FzZSgpLCJ1Y3MyIj09PWR8fCJ1Y3MtMiI9PT1kfHwidXRmMTZsZSI9PT1kfHwidXRmLTE2bGUiPT09ZCkpe2lmKDI+Yy5sZW5ndGh8fDI+YS5sZW5ndGgpcmV0dXJuLTE7Zz0yO2gvPTI7ay89MjtiLz0yfWlmKGUpZm9yKGQ9LTE7YjxoO2IrKylpZihmKGMsYik9PT1mKGEsLTE9PT1kPzA6Yi1kKSl7aWYoLTE9PT1kJiYoZD1iKSxiLWQrMT09PWspcmV0dXJuIGQqZ31lbHNlLTEhPT1kJiYoYi09Yi1kKSxkPS0xO2Vsc2UgZm9yKGIraz5oJiYoYj1oLWspOzA8PWI7Yi0tKXtoPSEwO2ZvcihkPTA7ZDxrO2QrKylpZihmKGMsYitkKSE9PWYoYSxkKSl7aD0hMTticmVha31pZihoKXJldHVybiBifXJldHVybi0xfWZ1bmN0aW9uIFRlKGMsYSxiKXtiPU1hdGgubWluKGMubGVuZ3RoLGIpO2Zvcih2YXIgZD1bXTthPGI7KXt2YXIgZT1jW2FdLGY9bnVsbCxnPTIzOTxlPwo0OjIyMzxlPzM6MTkxPGU/MjoxO2lmKGErZzw9Yilzd2l0Y2goZyl7Y2FzZSAxOjEyOD5lJiYoZj1lKTticmVhaztjYXNlIDI6dmFyIGg9Y1thKzFdOzEyOD09PShoJjE5MikmJihlPShlJjMxKTw8NnxoJjYzLDEyNzxlJiYoZj1lKSk7YnJlYWs7Y2FzZSAzOmg9Y1thKzFdO3ZhciBrPWNbYSsyXTsxMjg9PT0oaCYxOTIpJiYxMjg9PT0oayYxOTIpJiYoZT0oZSYxNSk8PDEyfChoJjYzKTw8NnxrJjYzLDIwNDc8ZSYmKDU1Mjk2PmV8fDU3MzQzPGUpJiYoZj1lKSk7YnJlYWs7Y2FzZSA0Omg9Y1thKzFdO2s9Y1thKzJdO3ZhciB0PWNbYSszXTsxMjg9PT0oaCYxOTIpJiYxMjg9PT0oayYxOTIpJiYxMjg9PT0odCYxOTIpJiYoZT0oZSYxNSk8PDE4fChoJjYzKTw8MTJ8KGsmNjMpPDw2fHQmNjMsNjU1MzU8ZSYmMTExNDExMj5lJiYoZj1lKSl9bnVsbD09PWY/KGY9NjU1MzMsZz0xKTo2NTUzNTxmJiYoZi09NjU1MzYsZC5wdXNoKGY+Pj4xMCYxMDIzfDU1Mjk2KSxmPTU2MzIwfGYmMTAyMyk7CmQucHVzaChmKTthKz1nfWM9ZC5sZW5ndGg7aWYoYzw9V2UpZD1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxkKTtlbHNle2I9IiI7Zm9yKGE9MDthPGM7KWIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGQuc2xpY2UoYSxhKz1XZSkpO2Q9Yn1yZXR1cm4gZH1mdW5jdGlvbiBJKGMsYSxiKXtpZigwIT09YyUxfHwwPmMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGMrYT5iKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIik7fWZ1bmN0aW9uIFYoYyxhLGIsZCxlLGYpe2lmKCFmYShjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYoYT5lfHxhPGYpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKGIrZD5jLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7Cn1mdW5jdGlvbiBZYihjLGEsYixkKXswPmEmJihhPTY1NTM1K2ErMSk7Zm9yKHZhciBlPTAsZj1NYXRoLm1pbihjLmxlbmd0aC1iLDIpO2U8ZjsrK2UpY1tiK2VdPShhJjI1NTw8OCooZD9lOjEtZSkpPj4+OCooZD9lOjEtZSl9ZnVuY3Rpb24gWmIoYyxhLGIsZCl7MD5hJiYoYT00Mjk0OTY3Mjk1K2ErMSk7Zm9yKHZhciBlPTAsZj1NYXRoLm1pbihjLmxlbmd0aC1iLDQpO2U8ZjsrK2UpY1tiK2VdPWE+Pj44KihkP2U6My1lKSYyNTV9ZnVuY3Rpb24gJGIoYyxhLGIsZCl7aWYoYitkPmMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZigwPmIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO31mdW5jdGlvbiBYYihjLGEpe2E9YXx8SW5maW5pdHk7Zm9yKHZhciBiLGQ9Yy5sZW5ndGgsZT1udWxsLGY9W10sZz0wO2c8ZDsrK2cpe2I9Yy5jaGFyQ29kZUF0KGcpO2lmKDU1Mjk1PGImJjU3MzQ0PmIpe2lmKCFlKXtpZig1NjMxOTwKYil7LTE8KGEtPTMpJiZmLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWVsc2UgaWYoZysxPT09ZCl7LTE8KGEtPTMpJiZmLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWU9Yjtjb250aW51ZX1pZig1NjMyMD5iKXstMTwoYS09MykmJmYucHVzaCgyMzksMTkxLDE4OSk7ZT1iO2NvbnRpbnVlfWI9KGUtNTUyOTY8PDEwfGItNTYzMjApKzY1NTM2fWVsc2UgZSYmLTE8KGEtPTMpJiZmLnB1c2goMjM5LDE5MSwxODkpO2U9bnVsbDtpZigxMjg+Yil7aWYoMD4tLWEpYnJlYWs7Zi5wdXNoKGIpfWVsc2UgaWYoMjA0OD5iKXtpZigwPihhLT0yKSlicmVhaztmLnB1c2goYj4+NnwxOTIsYiY2M3wxMjgpfWVsc2UgaWYoNjU1MzY+Yil7aWYoMD4oYS09MykpYnJlYWs7Zi5wdXNoKGI+PjEyfDIyNCxiPj42JjYzfDEyOCxiJjYzfDEyOCl9ZWxzZSBpZigxMTE0MTEyPmIpe2lmKDA+KGEtPTQpKWJyZWFrO2YucHVzaChiPj4xOHwyNDAsYj4+MTImNjN8MTI4LGI+PjYmNjN8MTI4LGImNjN8MTI4KX1lbHNlIHRocm93IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTsKfXJldHVybiBmfWZ1bmN0aW9uIFhlKGMpe2Zvcih2YXIgYT1bXSxiPTA7YjxjLmxlbmd0aDsrK2IpYS5wdXNoKGMuY2hhckNvZGVBdChiKSYyNTUpO3JldHVybiBhfWZ1bmN0aW9uIFNlKGMpe2M9KGMudHJpbT9jLnRyaW0oKTpjLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKSkucmVwbGFjZShJZywiIik7aWYoMj5jLmxlbmd0aCljPSIiO2Vsc2UgZm9yKDswIT09Yy5sZW5ndGglNDspYys9Ij0iO1NjfHxNZSgpO3ZhciBhPWMubGVuZ3RoO2lmKDA8YSU0KXRocm93IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7dmFyIGI9Ij0iPT09Y1thLTJdPzI6Ij0iPT09Y1thLTFdPzE6MCxkPW5ldyBKZygzKmEvNC1iKSxlPTA8Yj9hLTQ6YSxmPTA7Zm9yKGE9MDthPGU7YSs9NCl7dmFyIGc9TVtjLmNoYXJDb2RlQXQoYSldPDwxOHxNW2MuY2hhckNvZGVBdChhKzEpXTw8MTJ8TVtjLmNoYXJDb2RlQXQoYSsyKV08PDZ8TVtjLmNoYXJDb2RlQXQoYSsKMyldO2RbZisrXT1nPj4xNiYyNTU7ZFtmKytdPWc+PjgmMjU1O2RbZisrXT1nJjI1NX0yPT09Yj8oZz1NW2MuY2hhckNvZGVBdChhKV08PDJ8TVtjLmNoYXJDb2RlQXQoYSsxKV0+PjQsZFtmKytdPWcmMjU1KToxPT09YiYmKGc9TVtjLmNoYXJDb2RlQXQoYSldPDwxMHxNW2MuY2hhckNvZGVBdChhKzEpXTw8NHxNW2MuY2hhckNvZGVBdChhKzIpXT4+MixkW2YrK109Zz4+OCYyNTUsZFtmKytdPWcmMjU1KTtyZXR1cm4gZH1mdW5jdGlvbiB1YihjLGEsYixkKXtmb3IodmFyIGU9MDtlPGQmJiEoZStiPj1hLmxlbmd0aHx8ZT49Yy5sZW5ndGgpOysrZSlhW2UrYl09Y1tlXTtyZXR1cm4gZX1mdW5jdGlvbiBZZShjKXtyZXR1cm4gbnVsbCE9YyYmKCEhYy5faXNCdWZmZXJ8fFplKGMpfHwiZnVuY3Rpb24iPT09dHlwZW9mIGMucmVhZEZsb2F0TEUmJiJmdW5jdGlvbiI9PT10eXBlb2YgYy5zbGljZSYmWmUoYy5zbGljZSgwLDApKSl9ZnVuY3Rpb24gWmUoYyl7cmV0dXJuISFjLmNvbnN0cnVjdG9yJiYKImZ1bmN0aW9uIj09PXR5cGVvZiBjLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZjLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGMpfWZ1bmN0aW9uIFdjKGMsYSl7cmV0dXJuIGE9e2V4cG9ydHM6e319LGMoYSxhLmV4cG9ydHMpLGEuZXhwb3J0c31mdW5jdGlvbiAkZSgpe3Rocm93IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIik7fWZ1bmN0aW9uIGFmKCl7dGhyb3cgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpO31mdW5jdGlvbiBiZihjKXtpZihyYT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoYywwKTtpZigocmE9PT0kZXx8IXJhKSYmc2V0VGltZW91dClyZXR1cm4gcmE9c2V0VGltZW91dCxzZXRUaW1lb3V0KGMsMCk7dHJ5e3JldHVybiByYShjLDApfWNhdGNoKGEpe3RyeXtyZXR1cm4gcmEuY2FsbChudWxsLGMsMCl9Y2F0Y2goYil7cmV0dXJuIHJhLmNhbGwodGhpcyxjLDApfX19ZnVuY3Rpb24gS2coYyl7aWYoeWE9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChjKTsKaWYoKHlhPT09YWZ8fCF5YSkmJmNsZWFyVGltZW91dClyZXR1cm4geWE9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChjKTt0cnl7cmV0dXJuIHlhKGMpfWNhdGNoKGEpe3RyeXtyZXR1cm4geWEuY2FsbChudWxsLGMpfWNhdGNoKGIpe3JldHVybiB5YS5jYWxsKHRoaXMsYyl9fX1mdW5jdGlvbiBMZygpe2FiJiZOYSYmKGFiPSExLE5hLmxlbmd0aD9zYT1OYS5jb25jYXQoc2EpOmFjPS0xLHNhLmxlbmd0aCYmY2YoKSl9ZnVuY3Rpb24gY2YoKXtpZighYWIpe3ZhciBjPWJmKExnKTthYj0hMDtmb3IodmFyIGE9c2EubGVuZ3RoO2E7KXtOYT1zYTtmb3Ioc2E9W107KythYzxhOylOYSYmTmFbYWNdLnJ1bigpO2FjPS0xO2E9c2EubGVuZ3RofU5hPW51bGw7YWI9ITE7S2coYyl9fWZ1bmN0aW9uIGRmKGMpe3ZhciBhPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoMTxhcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspYVtiLTFdPWFyZ3VtZW50c1tiXTsKc2EucHVzaChuZXcgZWYoYyxhKSk7MSE9PXNhLmxlbmd0aHx8YWJ8fGJmKGNmKX1mdW5jdGlvbiBlZihjLGEpe3RoaXMuZnVuPWM7dGhpcy5hcnJheT1hfWZ1bmN0aW9uIE9hKCl7fWZ1bmN0aW9uIGhhKGMpe2lmKCJzdHJpbmciIT09dHlwZW9mIGMpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KGMpKTt9ZnVuY3Rpb24gZmYoYyxhKXtmb3IodmFyIGI9IiIsZD0wLGU9LTEsZj0wLGcsaD0wO2g8PWMubGVuZ3RoOysraCl7aWYoaDxjLmxlbmd0aClnPWMuY2hhckNvZGVBdChoKTtlbHNlIGlmKDQ3PT09ZylicmVhaztlbHNlIGc9NDc7aWYoNDc9PT1nKXtpZihlIT09aC0xJiYxIT09ZilpZihlIT09aC0xJiYyPT09Zil7aWYoMj5iLmxlbmd0aHx8MiE9PWR8fDQ2IT09Yi5jaGFyQ29kZUF0KGIubGVuZ3RoLTEpfHw0NiE9PWIuY2hhckNvZGVBdChiLmxlbmd0aC0yKSlpZigyPGIubGVuZ3RoKXtpZihlPWIubGFzdEluZGV4T2YoIi8iKSwKZSE9PWIubGVuZ3RoLTEpey0xPT09ZT8oYj0iIixkPTApOihiPWIuc2xpY2UoMCxlKSxkPWIubGVuZ3RoLTEtYi5sYXN0SW5kZXhPZigiLyIpKTtlPWg7Zj0wO2NvbnRpbnVlfX1lbHNlIGlmKDI9PT1iLmxlbmd0aHx8MT09PWIubGVuZ3RoKXtiPSIiO2Q9MDtlPWg7Zj0wO2NvbnRpbnVlfWEmJihiPTA8Yi5sZW5ndGg/YisiLy4uIjoiLi4iLGQ9Mil9ZWxzZSBiPTA8Yi5sZW5ndGg/YisoIi8iK2Muc2xpY2UoZSsxLGgpKTpjLnNsaWNlKGUrMSxoKSxkPWgtZS0xO2U9aDtmPTB9ZWxzZSA0Nj09PWcmJi0xIT09Zj8rK2Y6Zj0tMX1yZXR1cm4gYn1mdW5jdGlvbiBQYShjKXt2YXIgYT1NYXRoLnRydW5jKGMpO2M9bihNYXRoLnJvdW5kKDFFNiooYy1hKSkpO3JldHVybiBuKGEpKm4oMUU2KStjfWZ1bmN0aW9uIGJiKGMpeyJudW1iZXIiPT09dHlwZW9mIGMmJihjPU1hdGgudHJ1bmMoYykpO2M9bihjKTtyZXR1cm4gTnVtYmVyKGMvbigxRTYpKX1mdW5jdGlvbiBCKGMpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgYT0KW10sYj0wO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspYVtiXT1hcmd1bWVudHNbYl07dHJ5e3JldHVybiBjLmFwcGx5KHZvaWQgMCxVYihhKSl9Y2F0Y2goZCl7aWYoZCYmZC5jb2RlJiYic3RyaW5nIj09PXR5cGVvZiBkLmNvZGUpcmV0dXJuIE1nW2QuY29kZV18fDI4O2lmKGQgaW5zdGFuY2VvZiBYYylyZXR1cm4gZC5lcnJubzt0aHJvdyBkO319fWZ1bmN0aW9uIGdmKGMsYSl7dmFyIGI9Yy5GRF9NQVAuZ2V0KGEpO2lmKCFiKXRocm93IG5ldyBYYyg4KTtpZih2b2lkIDA9PT1iLmZpbGV0eXBlKXt2YXIgZD1jLmJpbmRpbmdzLmZzLmZzdGF0U3luYyhiLnJlYWwpO2M9aGYoYyxhLGQpO2E9Yy5yaWdodHNCYXNlO2Q9Yy5yaWdodHNJbmhlcml0aW5nO2IuZmlsZXR5cGU9Yy5maWxldHlwZTtiLnJpZ2h0c3x8KGIucmlnaHRzPXtiYXNlOmEsaW5oZXJpdGluZzpkfSl9cmV0dXJuIGJ9ZnVuY3Rpb24gaGYoYyxhLGIpe3N3aXRjaCghMCl7Y2FzZSBiLmlzQmxvY2tEZXZpY2UoKTpyZXR1cm57ZmlsZXR5cGU6MSwKcmlnaHRzQmFzZTpjYixyaWdodHNJbmhlcml0aW5nOmNifTtjYXNlIGIuaXNDaGFyYWN0ZXJEZXZpY2UoKTpyZXR1cm4gdm9pZCAwIT09YSYmYy5iaW5kaW5ncy5pc1RUWShhKT97ZmlsZXR5cGU6MixyaWdodHNCYXNlOk5nLHJpZ2h0c0luaGVyaXRpbmc6T2d9OntmaWxldHlwZToyLHJpZ2h0c0Jhc2U6Y2IscmlnaHRzSW5oZXJpdGluZzpjYn07Y2FzZSBiLmlzRGlyZWN0b3J5KCk6cmV0dXJue2ZpbGV0eXBlOjMscmlnaHRzQmFzZTpZYyxyaWdodHNJbmhlcml0aW5nOmpmfTtjYXNlIGIuaXNGSUZPKCk6cmV0dXJue2ZpbGV0eXBlOjYscmlnaHRzQmFzZTprZixyaWdodHNJbmhlcml0aW5nOmNifTtjYXNlIGIuaXNGaWxlKCk6cmV0dXJue2ZpbGV0eXBlOjQscmlnaHRzQmFzZTpsZixyaWdodHNJbmhlcml0aW5nOlBnfTtjYXNlIGIuaXNTb2NrZXQoKTpyZXR1cm57ZmlsZXR5cGU6NixyaWdodHNCYXNlOmtmLHJpZ2h0c0luaGVyaXRpbmc6Y2J9O2Nhc2UgYi5pc1N5bWJvbGljTGluaygpOnJldHVybntmaWxldHlwZTo3LApyaWdodHNCYXNlOm4oMCkscmlnaHRzSW5oZXJpdGluZzpuKDApfTtkZWZhdWx0OnJldHVybntmaWxldHlwZTowLHJpZ2h0c0Jhc2U6bigwKSxyaWdodHNJbmhlcml0aW5nOm4oMCl9fX1sZXQgdmQ9U3ltYm9sKCJDb21saW5rLnByb3h5IiksRWY9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IiksRGY9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLG5jPW5ldyBXZWFrU2V0LHlkPW5ldyBNYXAoW1sicHJveHkiLHtjYW5IYW5kbGU6Yz0+YyYmY1t2ZF0sc2VyaWFsaXplKGMpe2NvbnN0IHtwb3J0MTphLHBvcnQyOmJ9PW5ldyBNZXNzYWdlQ2hhbm5lbDttYyhjLGEpO3JldHVybltiLFtiXV19LGRlc2VyaWFsaXplOmM9PntjLnN0YXJ0KCk7cmV0dXJuIHBjKGMsW10sdm9pZCAwKX19XSxbInRocm93Iix7Y2FuSGFuZGxlOmM9Pm5jLmhhcyhjKSxzZXJpYWxpemUoYyl7Y29uc3QgYT1jIGluc3RhbmNlb2YgRXJyb3I7bGV0IGI9YzthJiYoYj17aXNFcnJvcjphLG1lc3NhZ2U6Yy5tZXNzYWdlLApzdGFjazpjLnN0YWNrfSk7cmV0dXJuW2IsW11dfSxkZXNlcmlhbGl6ZShjKXtpZihjLmlzRXJyb3IpdGhyb3cgT2JqZWN0LmFzc2lnbihFcnJvcigpLGMpO3Rocm93IGM7fX1dXSkseGQ9bmV3IFdlYWtNYXA7dmFyIHFjPWZ1bmN0aW9uKGMsYSl7cWM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGEsYyl7YS5fX3Byb3RvX189Y318fGZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBiIGluIGMpYy5oYXNPd25Qcm9wZXJ0eShiKSYmKGFbYl09Y1tiXSl9O3JldHVybiBxYyhjLGEpfSxkYj1mdW5jdGlvbigpe2RiPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGMpe2Zvcih2YXIgYSxiPTEsZD1hcmd1bWVudHMubGVuZ3RoO2I8ZDtiKyspe2E9YXJndW1lbnRzW2JdO2Zvcih2YXIgZSBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGUpJiYoY1tlXT1hW2VdKX1yZXR1cm4gY307cmV0dXJuIGRiLmFwcGx5KHRoaXMsCmFyZ3VtZW50cyl9LG5hPSJ1bmRlZmluZWQiIT09dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdz93aW5kb3c6e30sTj0idW5kZWZpbmVkIiE9PXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9PXR5cGVvZiBuYT9uYToidW5kZWZpbmVkIiE9PXR5cGVvZiBzZWxmP3NlbGY6e30sdT1LKGZ1bmN0aW9uKGMsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2EuY29uc3RhbnRzPXtPX1JET05MWTowLE9fV1JPTkxZOjEsT19SRFdSOjIsU19JRk1UOjYxNDQwLFNfSUZSRUc6MzI3NjgsU19JRkRJUjoxNjM4NCxTX0lGQ0hSOjgxOTIsU19JRkJMSzoyNDU3NixTX0lGSUZPOjQwOTYsU19JRkxOSzo0MDk2MCxTX0lGU09DSzo0OTE1MixPX0NSRUFUOjY0LE9fRVhDTDoxMjgsCk9fTk9DVFRZOjI1NixPX1RSVU5DOjUxMixPX0FQUEVORDoxMDI0LE9fRElSRUNUT1JZOjY1NTM2LE9fTk9BVElNRToyNjIxNDQsT19OT0ZPTExPVzoxMzEwNzIsT19TWU5DOjEwNTI2NzIsT19ESVJFQ1Q6MTYzODQsT19OT05CTE9DSzoyMDQ4LFNfSVJXWFU6NDQ4LFNfSVJVU1I6MjU2LFNfSVdVU1I6MTI4LFNfSVhVU1I6NjQsU19JUldYRzo1NixTX0lSR1JQOjMyLFNfSVdHUlA6MTYsU19JWEdSUDo4LFNfSVJXWE86NyxTX0lST1RIOjQsU19JV09USDoyLFNfSVhPVEg6MSxGX09LOjAsUl9PSzo0LFdfT0s6MixYX09LOjEsVVZfRlNfU1lNTElOS19ESVI6MSxVVl9GU19TWU1MSU5LX0pVTkNUSU9OOjIsVVZfRlNfQ09QWUZJTEVfRVhDTDoxLFVWX0ZTX0NPUFlGSUxFX0ZJQ0xPTkU6MixVVl9GU19DT1BZRklMRV9GSUNMT05FX0ZPUkNFOjQsQ09QWUZJTEVfRVhDTDoxLENPUFlGSUxFX0ZJQ0xPTkU6MixDT1BZRklMRV9GSUNMT05FX0ZPUkNFOjR9fSk7USh1KTt2YXIgUWc9SyhmdW5jdGlvbihjLAphKXthLmRlZmF1bHQ9ImZ1bmN0aW9uIj09PXR5cGVvZiBCaWdJbnQ/QmlnSW50OmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoIkJpZ0ludCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZW52aXJvbm1lbnQuIik7fX0pLGViPUsoZnVuY3Rpb24oYyxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGI9dS5jb25zdGFudHMuU19JRk1ULGQ9dS5jb25zdGFudHMuU19JRkRJUixlPXUuY29uc3RhbnRzLlNfSUZSRUcsZj11LmNvbnN0YW50cy5TX0lGQkxLLGc9dS5jb25zdGFudHMuU19JRkNIUixoPXUuY29uc3RhbnRzLlNfSUZMTkssaz11LmNvbnN0YW50cy5TX0lGSUZPLHQ9dS5jb25zdGFudHMuU19JRlNPQ0s7Yz1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt9YS5idWlsZD1mdW5jdGlvbihjLGIpe3ZvaWQgMD09PWImJihiPSExKTt2YXIgZD1uZXcgYSxlPWMuZ2lkLGY9Yy5hdGltZSxoPWMubXRpbWUsZz1jLmN0aW1lO2I9Yj9RZy5kZWZhdWx0OgpmdW5jdGlvbihhKXtyZXR1cm4gYX07ZC51aWQ9YihjLnVpZCk7ZC5naWQ9YihlKTtkLnJkZXY9YigwKTtkLmJsa3NpemU9Yig0MDk2KTtkLmlubz1iKGMuaW5vKTtkLnNpemU9YihjLmdldFNpemUoKSk7ZC5ibG9ja3M9YigxKTtkLmF0aW1lPWY7ZC5tdGltZT1oO2QuY3RpbWU9ZztkLmJpcnRodGltZT1nO2QuYXRpbWVNcz1iKGYuZ2V0VGltZSgpKTtkLm10aW1lTXM9YihoLmdldFRpbWUoKSk7ZT1iKGcuZ2V0VGltZSgpKTtkLmN0aW1lTXM9ZTtkLmJpcnRodGltZU1zPWU7ZC5kZXY9YigwKTtkLm1vZGU9YihjLm1vZGUpO2Qubmxpbms9YihjLm5saW5rKTtyZXR1cm4gZH07YS5wcm90b3R5cGUuX2NoZWNrTW9kZVByb3BlcnR5PWZ1bmN0aW9uKGEpe3JldHVybihOdW1iZXIodGhpcy5tb2RlKSZiKT09PWF9O2EucHJvdG90eXBlLmlzRGlyZWN0b3J5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KGQpfTthLnByb3RvdHlwZS5pc0ZpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoZSl9OwphLnByb3RvdHlwZS5pc0Jsb2NrRGV2aWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KGYpfTthLnByb3RvdHlwZS5pc0NoYXJhY3RlckRldmljZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShnKX07YS5wcm90b3R5cGUuaXNTeW1ib2xpY0xpbms9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoaCl9O2EucHJvdG90eXBlLmlzRklGTz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShrKX07YS5wcm90b3R5cGUuaXNTb2NrZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkodCl9O3JldHVybiBhfSgpO2EuU3RhdHM9YzthLmRlZmF1bHQ9Y30pO1EoZWIpO3ZhciBLYT0idW5kZWZpbmVkIiE9PXR5cGVvZiBuYT9uYToidW5kZWZpbmVkIiE9PXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxSPVtdLApIPVtdLE9mPSJ1bmRlZmluZWQiIT09dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxzYz0hMSxSZz17fS50b1N0cmluZyxGZD1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihjKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1SZy5jYWxsKGMpfTtsLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwIT09S2EuVFlQRURfQVJSQVlfU1VQUE9SVD9LYS5UWVBFRF9BUlJBWV9TVVBQT1JUOiEwO3ZhciBTZz1sLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzO2wucG9vbFNpemU9ODE5MjtsLl9hdWdtZW50PWZ1bmN0aW9uKGMpe2MuX19wcm90b19fPWwucHJvdG90eXBlO3JldHVybiBjfTtsLmZyb209ZnVuY3Rpb24oYyxhLGIpe3JldHVybiBDZChudWxsLGMsYSxiKX07bC5UWVBFRF9BUlJBWV9TVVBQT1JUJiYobC5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLGwuX19wcm90b19fPVVpbnQ4QXJyYXkpO2wuYWxsb2M9ZnVuY3Rpb24oYywKYSxiKXtFZChjKTtyZXR1cm4gYz0wPj1jP2phKG51bGwsYyk6dm9pZCAwIT09YT8ic3RyaW5nIj09PXR5cGVvZiBiP2phKG51bGwsYykuZmlsbChhLGIpOmphKG51bGwsYykuZmlsbChhKTpqYShudWxsLGMpfTtsLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGMpe3JldHVybiB0YyhudWxsLGMpfTtsLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihjKXtyZXR1cm4gdGMobnVsbCxjKX07bC5pc0J1ZmZlcj1wYTtsLmNvbXBhcmU9ZnVuY3Rpb24oYyxhKXtpZighVyhjKXx8IVcoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGM9PT1hKXJldHVybiAwO2Zvcih2YXIgYj1jLmxlbmd0aCxkPWEubGVuZ3RoLGU9MCxmPU1hdGgubWluKGIsZCk7ZTxmOysrZSlpZihjW2VdIT09YVtlXSl7Yj1jW2VdO2Q9YVtlXTticmVha31yZXR1cm4gYjxkPy0xOmQ8Yj8xOjB9O2wuaXNFbmNvZGluZz1mdW5jdGlvbihjKXtzd2l0Y2goU3RyaW5nKGMpLnRvTG93ZXJDYXNlKCkpe2Nhc2UgImhleCI6Y2FzZSAidXRmOCI6Y2FzZSAidXRmLTgiOmNhc2UgImFzY2lpIjpjYXNlICJsYXRpbjEiOmNhc2UgImJpbmFyeSI6Y2FzZSAiYmFzZTY0IjpjYXNlICJ1Y3MyIjpjYXNlICJ1Y3MtMiI6Y2FzZSAidXRmMTZsZSI6Y2FzZSAidXRmLTE2bGUiOnJldHVybiEwOwpkZWZhdWx0OnJldHVybiExfX07bC5jb25jYXQ9ZnVuY3Rpb24oYyxhKXtpZighRmQoYykpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1jLmxlbmd0aClyZXR1cm4gbC5hbGxvYygwKTt2YXIgYjtpZih2b2lkIDA9PT1hKWZvcihiPWE9MDtiPGMubGVuZ3RoOysrYilhKz1jW2JdLmxlbmd0aDthPWwuYWxsb2NVbnNhZmUoYSk7dmFyIGQ9MDtmb3IoYj0wO2I8Yy5sZW5ndGg7KytiKXt2YXIgZT1jW2JdO2lmKCFXKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtlLmNvcHkoYSxkKTtkKz1lLmxlbmd0aH1yZXR1cm4gYX07bC5ieXRlTGVuZ3RoPURkO2wucHJvdG90eXBlLl9pc0J1ZmZlcj0hMDtsLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmxlbmd0aDtpZigwIT09YyUyKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpOwpmb3IodmFyIGE9MDthPGM7YSs9MilHYSh0aGlzLGEsYSsxKTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5sZW5ndGg7aWYoMCE9PWMlNCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIGE9MDthPGM7YSs9NClHYSh0aGlzLGEsYSszKSxHYSh0aGlzLGErMSxhKzIpO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmxlbmd0aDtpZigwIT09YyU4KXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgYT0wO2E8YzthKz04KUdhKHRoaXMsYSxhKzcpLEdhKHRoaXMsYSsxLGErNiksR2EodGhpcyxhKzIsYSs1KSxHYSh0aGlzLGErMyxhKzQpO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBjPQp0aGlzLmxlbmd0aHwwO3JldHVybiAwPT09Yz8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9IZCh0aGlzLDAsYyk6TWYuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtsLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oYyl7aWYoIVcoYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09Yz8hMDowPT09bC5jb21wYXJlKHRoaXMsYyl9O2wucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgYz0iIjswPHRoaXMubGVuZ3RoJiYoYz10aGlzLnRvU3RyaW5nKCJoZXgiLDAsNTApLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSw1MDx0aGlzLmxlbmd0aCYmKGMrPSIgLi4uICIpKTtyZXR1cm4iPEJ1ZmZlciAiK2MrIj4ifTtsLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGMsYSxiLGQsZSl7aWYoIVcoYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3ZvaWQgMD09PWEmJihhPTApO3ZvaWQgMD09PQpiJiYoYj1jP2MubGVuZ3RoOjApO3ZvaWQgMD09PWQmJihkPTApO3ZvaWQgMD09PWUmJihlPXRoaXMubGVuZ3RoKTtpZigwPmF8fGI+Yy5sZW5ndGh8fDA+ZHx8ZT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYoZD49ZSYmYT49YilyZXR1cm4gMDtpZihkPj1lKXJldHVybi0xO2lmKGE+PWIpcmV0dXJuIDE7YT4+Pj0wO2I+Pj49MDtkPj4+PTA7ZT4+Pj0wO2lmKHRoaXM9PT1jKXJldHVybiAwO3ZhciBmPWUtZCxnPWItYSxoPU1hdGgubWluKGYsZyk7ZD10aGlzLnNsaWNlKGQsZSk7Yz1jLnNsaWNlKGEsYik7Zm9yKGE9MDthPGg7KythKWlmKGRbYV0hPT1jW2FdKXtmPWRbYV07Zz1jW2FdO2JyZWFrfXJldHVybiBmPGc/LTE6ZzxmPzE6MH07bC5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oYyxhLGIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGMsYSxiKX07bC5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihjLGEsYil7cmV0dXJuIElkKHRoaXMsCmMsYSxiLCEwKX07bC5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oYyxhLGIpe3JldHVybiBJZCh0aGlzLGMsYSxiLCExKX07bC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oYyxhLGIsZCl7aWYodm9pZCAwPT09YSlkPSJ1dGY4IixiPXRoaXMubGVuZ3RoLGE9MDtlbHNlIGlmKHZvaWQgMD09PWImJiJzdHJpbmciPT09dHlwZW9mIGEpZD1hLGI9dGhpcy5sZW5ndGgsYT0wO2Vsc2UgaWYoaXNGaW5pdGUoYSkpYXw9MCxpc0Zpbml0ZShiKT8oYnw9MCx2b2lkIDA9PT1kJiYoZD0idXRmOCIpKTooZD1iLGI9dm9pZCAwKTtlbHNlIHRocm93IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3ZhciBlPXRoaXMubGVuZ3RoLWE7aWYodm9pZCAwPT09Ynx8Yj5lKWI9ZTtpZigwPGMubGVuZ3RoJiYoMD5ifHwwPmEpfHxhPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpOwpkfHwoZD0idXRmOCIpO2ZvcihlPSExOzspc3dpdGNoKGQpe2Nhc2UgImhleCI6YTp7YT1OdW1iZXIoYSl8fDA7ZD10aGlzLmxlbmd0aC1hO2I/KGI9TnVtYmVyKGIpLGI+ZCYmKGI9ZCkpOmI9ZDtkPWMubGVuZ3RoO2lmKDAhPT1kJTIpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIik7Yj5kLzImJihiPWQvMik7Zm9yKGQ9MDtkPGI7KytkKXtlPXBhcnNlSW50KGMuc3Vic3RyKDIqZCwyKSwxNik7aWYoaXNOYU4oZSkpe2M9ZDticmVhayBhfXRoaXNbYStkXT1lfWM9ZH1yZXR1cm4gYztjYXNlICJ1dGY4IjpjYXNlICJ1dGYtOCI6cmV0dXJuIG5iKEliKGMsdGhpcy5sZW5ndGgtYSksdGhpcyxhLGIpO2Nhc2UgImFzY2lpIjpyZXR1cm4gbmIoTGQoYyksdGhpcyxhLGIpO2Nhc2UgImxhdGluMSI6Y2FzZSAiYmluYXJ5IjpyZXR1cm4gbmIoTGQoYyksdGhpcyxhLGIpO2Nhc2UgImJhc2U2NCI6cmV0dXJuIG5iKEdkKGMpLHRoaXMsYSxiKTtjYXNlICJ1Y3MyIjpjYXNlICJ1Y3MtMiI6Y2FzZSAidXRmMTZsZSI6Y2FzZSAidXRmLTE2bGUiOmQ9CmM7ZT10aGlzLmxlbmd0aC1hO2Zvcih2YXIgZj1bXSxnPTA7ZzxkLmxlbmd0aCYmISgwPihlLT0yKSk7KytnKXt2YXIgaD1kLmNoYXJDb2RlQXQoZyk7Yz1oPj44O2glPTI1NjtmLnB1c2goaCk7Zi5wdXNoKGMpfXJldHVybiBuYihmLHRoaXMsYSxiKTtkZWZhdWx0OmlmKGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitkKTtkPSgiIitkKS50b0xvd2VyQ2FzZSgpO2U9ITB9fTtsLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciBLZD00MDk2O2wucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGMsYSl7dmFyIGI9dGhpcy5sZW5ndGg7Yz1+fmM7YT12b2lkIDA9PT1hP2I6fn5hOzA+Yz8oYys9YiwwPmMmJihjPTApKTpjPmImJihjPWIpOzA+YT8oYSs9YiwwPmEmJihhPTApKTphPmImJihhPWIpO2E8YyYmKGE9Yyk7aWYobC5UWVBFRF9BUlJBWV9TVVBQT1JUKWE9CnRoaXMuc3ViYXJyYXkoYyxhKSxhLl9fcHJvdG9fXz1sLnByb3RvdHlwZTtlbHNle2I9YS1jO2E9bmV3IGwoYix2b2lkIDApO2Zvcih2YXIgZD0wO2Q8YjsrK2QpYVtkXT10aGlzW2QrY119cmV0dXJuIGF9O2wucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oYyxhLGIpe2N8PTA7YXw9MDtifHxEKGMsYSx0aGlzLmxlbmd0aCk7Yj10aGlzW2NdO2Zvcih2YXIgZD0xLGU9MDsrK2U8YSYmKGQqPTI1Nik7KWIrPXRoaXNbYytlXSpkO3JldHVybiBifTtsLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGMsYSxiKXtjfD0wO2F8PTA7Ynx8RChjLGEsdGhpcy5sZW5ndGgpO2I9dGhpc1tjKy0tYV07Zm9yKHZhciBkPTE7MDxhJiYoZCo9MjU2KTspYis9dGhpc1tjKy0tYV0qZDtyZXR1cm4gYn07bC5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGMsYSl7YXx8RChjLDEsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2NdfTtsLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oYywKYSl7YXx8RChjLDIsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2NdfHRoaXNbYysxXTw8OH07bC5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKGMsYSl7YXx8RChjLDIsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2NdPDw4fHRoaXNbYysxXX07bC5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKGMsYSl7YXx8RChjLDQsdGhpcy5sZW5ndGgpO3JldHVybih0aGlzW2NdfHRoaXNbYysxXTw8OHx0aGlzW2MrMl08PDE2KSsxNjc3NzIxNip0aGlzW2MrM119O2wucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihjLGEpe2F8fEQoYyw0LHRoaXMubGVuZ3RoKTtyZXR1cm4gMTY3NzcyMTYqdGhpc1tjXSsodGhpc1tjKzFdPDwxNnx0aGlzW2MrMl08PDh8dGhpc1tjKzNdKX07bC5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGMsYSxiKXtjfD0wO2F8PTA7Ynx8RChjLGEsdGhpcy5sZW5ndGgpO2I9dGhpc1tjXTtmb3IodmFyIGQ9MSxlPTA7KytlPGEmJihkKj0yNTYpOyliKz0KdGhpc1tjK2VdKmQ7Yj49MTI4KmQmJihiLT1NYXRoLnBvdygyLDgqYSkpO3JldHVybiBifTtsLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oYyxhLGIpe2N8PTA7YXw9MDtifHxEKGMsYSx0aGlzLmxlbmd0aCk7Yj1hO2Zvcih2YXIgZD0xLGU9dGhpc1tjKy0tYl07MDxiJiYoZCo9MjU2KTspZSs9dGhpc1tjKy0tYl0qZDtlPj0xMjgqZCYmKGUtPU1hdGgucG93KDIsOCphKSk7cmV0dXJuIGV9O2wucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGMsYSl7YXx8RChjLDEsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2NdJjEyOD8tMSooMjU1LXRoaXNbY10rMSk6dGhpc1tjXX07bC5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oYyxhKXthfHxEKGMsMix0aGlzLmxlbmd0aCk7Yz10aGlzW2NdfHRoaXNbYysxXTw8ODtyZXR1cm4gYyYzMjc2OD9jfDQyOTQ5MDE3NjA6Y307bC5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oYyxhKXthfHxEKGMsMix0aGlzLmxlbmd0aCk7CmM9dGhpc1tjKzFdfHRoaXNbY108PDg7cmV0dXJuIGMmMzI3Njg/Y3w0Mjk0OTAxNzYwOmN9O2wucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGMsYSl7YXx8RChjLDQsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2NdfHRoaXNbYysxXTw8OHx0aGlzW2MrMl08PDE2fHRoaXNbYyszXTw8MjR9O2wucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGMsYSl7YXx8RChjLDQsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2NdPDwyNHx0aGlzW2MrMV08PDE2fHRoaXNbYysyXTw8OHx0aGlzW2MrM119O2wucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGMsYSl7YXx8RChjLDQsdGhpcy5sZW5ndGgpO3JldHVybiBHYih0aGlzLGMsITAsMjMsNCl9O2wucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGMsYSl7YXx8RChjLDQsdGhpcy5sZW5ndGgpO3JldHVybiBHYih0aGlzLGMsITEsMjMsNCl9O2wucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihjLGEpe2F8fApEKGMsOCx0aGlzLmxlbmd0aCk7cmV0dXJuIEdiKHRoaXMsYywhMCw1Miw4KX07bC5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGMsYSl7YXx8RChjLDgsdGhpcy5sZW5ndGgpO3JldHVybiBHYih0aGlzLGMsITEsNTIsOCl9O2wucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGMsYSxiLGQpe2M9K2M7YXw9MDtifD0wO2R8fFQodGhpcyxjLGEsYixNYXRoLnBvdygyLDgqYiktMSwwKTtkPTE7dmFyIGU9MDtmb3IodGhpc1thXT1jJjI1NTsrK2U8YiYmKGQqPTI1Nik7KXRoaXNbYStlXT1jL2QmMjU1O3JldHVybiBhK2J9O2wucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKGMsYSxiLGQpe2M9K2M7YXw9MDtifD0wO2R8fFQodGhpcyxjLGEsYixNYXRoLnBvdygyLDgqYiktMSwwKTtkPWItMTt2YXIgZT0xO2Zvcih0aGlzW2ErZF09YyYyNTU7MDw9LS1kJiYoZSo9MjU2KTspdGhpc1thK2RdPWMvZSYyNTU7cmV0dXJuIGErYn07bC5wcm90b3R5cGUud3JpdGVVSW50OD0KZnVuY3Rpb24oYyxhLGIpe2M9K2M7YXw9MDtifHxUKHRoaXMsYyxhLDEsMjU1LDApO2wuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGM9TWF0aC5mbG9vcihjKSk7dGhpc1thXT1jJjI1NTtyZXR1cm4gYSsxfTtsLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGMsYSxiKXtjPStjO2F8PTA7Ynx8VCh0aGlzLGMsYSwyLDY1NTM1LDApO2wuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1thXT1jJjI1NSx0aGlzW2ErMV09Yz4+PjgpOkpiKHRoaXMsYyxhLCEwKTtyZXR1cm4gYSsyfTtsLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGMsYSxiKXtjPStjO2F8PTA7Ynx8VCh0aGlzLGMsYSwyLDY1NTM1LDApO2wuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1thXT1jPj4+OCx0aGlzW2ErMV09YyYyNTUpOkpiKHRoaXMsYyxhLCExKTtyZXR1cm4gYSsyfTtsLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGMsYSxiKXtjPStjO2F8PTA7Ynx8VCh0aGlzLGMsYSw0LAo0Mjk0OTY3Mjk1LDApO2wuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1thKzNdPWM+Pj4yNCx0aGlzW2ErMl09Yz4+PjE2LHRoaXNbYSsxXT1jPj4+OCx0aGlzW2FdPWMmMjU1KTpLYih0aGlzLGMsYSwhMCk7cmV0dXJuIGErNH07bC5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihjLGEsYil7Yz0rYzthfD0wO2J8fFQodGhpcyxjLGEsNCw0Mjk0OTY3Mjk1LDApO2wuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1thXT1jPj4+MjQsdGhpc1thKzFdPWM+Pj4xNix0aGlzW2ErMl09Yz4+PjgsdGhpc1thKzNdPWMmMjU1KTpLYih0aGlzLGMsYSwhMSk7cmV0dXJuIGErNH07bC5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihjLGEsYixkKXtjPStjO2F8PTA7ZHx8KGQ9TWF0aC5wb3coMiw4KmItMSksVCh0aGlzLGMsYSxiLGQtMSwtZCkpO2Q9MDt2YXIgZT0xLGY9MDtmb3IodGhpc1thXT1jJjI1NTsrK2Q8YiYmKGUqPTI1Nik7KTA+YyYmMD09PWYmJjAhPT10aGlzW2ErZC0KMV0mJihmPTEpLHRoaXNbYStkXT0oYy9lPj4wKS1mJjI1NTtyZXR1cm4gYStifTtsLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGMsYSxiLGQpe2M9K2M7YXw9MDtkfHwoZD1NYXRoLnBvdygyLDgqYi0xKSxUKHRoaXMsYyxhLGIsZC0xLC1kKSk7ZD1iLTE7dmFyIGU9MSxmPTA7Zm9yKHRoaXNbYStkXT1jJjI1NTswPD0tLWQmJihlKj0yNTYpOykwPmMmJjA9PT1mJiYwIT09dGhpc1thK2QrMV0mJihmPTEpLHRoaXNbYStkXT0oYy9lPj4wKS1mJjI1NTtyZXR1cm4gYStifTtsLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oYyxhLGIpe2M9K2M7YXw9MDtifHxUKHRoaXMsYyxhLDEsMTI3LC0xMjgpO2wuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGM9TWF0aC5mbG9vcihjKSk7MD5jJiYoYz0yNTUrYysxKTt0aGlzW2FdPWMmMjU1O3JldHVybiBhKzF9O2wucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihjLGEsYil7Yz0rYzthfD0wO2J8fFQodGhpcyxjLGEsMiwzMjc2NywKLTMyNzY4KTtsLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbYV09YyYyNTUsdGhpc1thKzFdPWM+Pj44KTpKYih0aGlzLGMsYSwhMCk7cmV0dXJuIGErMn07bC5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKGMsYSxiKXtjPStjO2F8PTA7Ynx8VCh0aGlzLGMsYSwyLDMyNzY3LC0zMjc2OCk7bC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2FdPWM+Pj44LHRoaXNbYSsxXT1jJjI1NSk6SmIodGhpcyxjLGEsITEpO3JldHVybiBhKzJ9O2wucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihjLGEsYil7Yz0rYzthfD0wO2J8fFQodGhpcyxjLGEsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KTtsLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbYV09YyYyNTUsdGhpc1thKzFdPWM+Pj44LHRoaXNbYSsyXT1jPj4+MTYsdGhpc1thKzNdPWM+Pj4yNCk6S2IodGhpcyxjLGEsITApO3JldHVybiBhKzR9O2wucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihjLGEsYil7Yz0KK2M7YXw9MDtifHxUKHRoaXMsYyxhLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCk7MD5jJiYoYz00Mjk0OTY3Mjk1K2MrMSk7bC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2FdPWM+Pj4yNCx0aGlzW2ErMV09Yz4+PjE2LHRoaXNbYSsyXT1jPj4+OCx0aGlzW2ErM109YyYyNTUpOktiKHRoaXMsYyxhLCExKTtyZXR1cm4gYSs0fTtsLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oYyxhLGIpe2J8fExiKHRoaXMsYyxhLDQpO0hiKHRoaXMsYyxhLCEwLDIzLDQpO3JldHVybiBhKzR9O2wucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihjLGEsYil7Ynx8TGIodGhpcyxjLGEsNCk7SGIodGhpcyxjLGEsITEsMjMsNCk7cmV0dXJuIGErNH07bC5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihjLGEsYil7Ynx8TGIodGhpcyxjLGEsOCk7SGIodGhpcyxjLGEsITAsNTIsOCk7cmV0dXJuIGErOH07bC5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihjLAphLGIpe2J8fExiKHRoaXMsYyxhLDgpO0hiKHRoaXMsYyxhLCExLDUyLDgpO3JldHVybiBhKzh9O2wucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYyxhLGIsZCl7Ynx8KGI9MCk7ZHx8MD09PWR8fChkPXRoaXMubGVuZ3RoKTthPj1jLmxlbmd0aCYmKGE9Yy5sZW5ndGgpO2F8fChhPTApOzA8ZCYmZDxiJiYoZD1iKTtpZihkPT09Ynx8MD09PWMubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYoMD5hKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYoMD5ifHxiPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKDA+ZCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtkPnRoaXMubGVuZ3RoJiYoZD10aGlzLmxlbmd0aCk7Yy5sZW5ndGgtYTxkLWImJihkPWMubGVuZ3RoLWErYik7dmFyIGU9ZC1iO2lmKHRoaXM9PT1jJiZiPGEmJgphPGQpZm9yKGQ9ZS0xOzA8PWQ7LS1kKWNbZCthXT10aGlzW2QrYl07ZWxzZSBpZigxRTM+ZXx8IWwuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IoZD0wO2Q8ZTsrK2QpY1tkK2FdPXRoaXNbZCtiXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGMsdGhpcy5zdWJhcnJheShiLGIrZSksYSk7cmV0dXJuIGV9O2wucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oYyxhLGIsZCl7aWYoInN0cmluZyI9PT10eXBlb2YgYyl7InN0cmluZyI9PT10eXBlb2YgYT8oZD1hLGE9MCxiPXRoaXMubGVuZ3RoKToic3RyaW5nIj09PXR5cGVvZiBiJiYoZD1iLGI9dGhpcy5sZW5ndGgpO2lmKDE9PT1jLmxlbmd0aCl7dmFyIGU9Yy5jaGFyQ29kZUF0KDApOzI1Nj5lJiYoYz1lKX1pZih2b2lkIDAhPT1kJiYic3RyaW5nIiE9PXR5cGVvZiBkKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09PXR5cGVvZiBkJiYhbC5pc0VuY29kaW5nKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrCmQpO31lbHNlIm51bWJlciI9PT10eXBlb2YgYyYmKGMmPTI1NSk7aWYoMD5hfHx0aGlzLmxlbmd0aDxhfHx0aGlzLmxlbmd0aDxiKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihiPD1hKXJldHVybiB0aGlzO2E+Pj49MDtiPXZvaWQgMD09PWI/dGhpcy5sZW5ndGg6Yj4+PjA7Y3x8KGM9MCk7aWYoIm51bWJlciI9PT10eXBlb2YgYylmb3IoZD1hO2Q8YjsrK2QpdGhpc1tkXT1jO2Vsc2UgZm9yKGM9VyhjKT9jOkliKChuZXcgbChjLGQpKS50b1N0cmluZygpKSxlPWMubGVuZ3RoLGQ9MDtkPGItYTsrK2QpdGhpc1tkK2FdPWNbZCVlXTtyZXR1cm4gdGhpc307dmFyIE5mPS9bXitcLzAtOUEtWmEtei1fXS9nLHZiPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLElOU1BFQ1RfTUFYX0JZVEVTOjUwLGtNYXhMZW5ndGg6U2csQnVmZmVyOmwsU2xvd0J1ZmZlcjpmdW5jdGlvbihjKXsrYyE9YyYmKGM9MCk7cmV0dXJuIGwuYWxsb2MoK2MpfSxpc0J1ZmZlcjpwYX0pLApKPUsoZnVuY3Rpb24oYyxhKXtmdW5jdGlvbiBiKGEpe2Zvcih2YXIgYz1bXSxiPTE7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKyljW2ItMV09YXJndW1lbnRzW2JdO3JldHVybiBuZXcgKHZiLkJ1ZmZlci5iaW5kLmFwcGx5KHZiLkJ1ZmZlcixkKFt2b2lkIDAsYV0sYykpKX12YXIgZD1OJiZOLl9fc3ByZWFkQXJyYXlzfHxmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGM9MCxiPWFyZ3VtZW50cy5sZW5ndGg7YzxiO2MrKylhKz1hcmd1bWVudHNbY10ubGVuZ3RoO2E9QXJyYXkoYSk7dmFyIGQ9MDtmb3IoYz0wO2M8YjtjKyspZm9yKHZhciBrPWFyZ3VtZW50c1tjXSx0PTAscT1rLmxlbmd0aDt0PHE7dCsrLGQrKylhW2RdPWtbdF07cmV0dXJuIGF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTthLkJ1ZmZlcj12Yi5CdWZmZXI7YS5idWZmZXJBbGxvY1Vuc2FmZT12Yi5CdWZmZXIuYWxsb2NVbnNhZmV8fGI7YS5idWZmZXJGcm9tPXZiLkJ1ZmZlci5mcm9tfHwKYn0pO1EoSik7dmFyIHVhPU5kLHZhPU9kOyJmdW5jdGlvbiI9PT10eXBlb2YgS2Euc2V0VGltZW91dCYmKHVhPXNldFRpbWVvdXQpOyJmdW5jdGlvbiI9PT10eXBlb2YgS2EuY2xlYXJUaW1lb3V0JiYodmE9Y2xlYXJUaW1lb3V0KTt2YXIga2E9W10sVWE9ITEsSGEsTWI9LTE7UmQucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9O3ZhciBmYj1LYS5wZXJmb3JtYW5jZXx8e30sVGc9ZmIubm93fHxmYi5tb3pOb3d8fGZiLm1zTm93fHxmYi5vTm93fHxmYi53ZWJraXROb3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9LFVnPW5ldyBEYXRlLFZhPXtuZXh0VGljazpYLHRpdGxlOiJicm93c2VyIixicm93c2VyOiEwLGVudjp7fSxhcmd2OltdLHZlcnNpb246IiIsdmVyc2lvbnM6e30sb246SWEsYWRkTGlzdGVuZXI6SWEsb25jZTpJYSxvZmY6SWEscmVtb3ZlTGlzdGVuZXI6SWEscmVtb3ZlQWxsTGlzdGVuZXJzOklhLAplbWl0OklhLGJpbmRpbmc6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKTt9LGN3ZDpmdW5jdGlvbigpe3JldHVybiIvIn0sY2hkaXI6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIik7fSx1bWFzazpmdW5jdGlvbigpe3JldHVybiAwfSxocnRpbWU6ZnVuY3Rpb24oYyl7dmFyIGE9LjAwMSpUZy5jYWxsKGZiKSxiPU1hdGguZmxvb3IoYSk7YT1NYXRoLmZsb29yKGElMSoxRTkpO2MmJihiLT1jWzBdLGEtPWNbMV0sMD5hJiYoYi0tLGErPTFFOSkpO3JldHVybltiLGFdfSxwbGF0Zm9ybToiYnJvd3NlciIscmVsZWFzZTp7fSxjb25maWc6e30sdXB0aW1lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlLVVnKS8xRTN9fSx6YT0iZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oYyxhKXtjLnN1cGVyXz1hO2MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYS5wcm90b3R5cGUsCntjb25zdHJ1Y3Rvcjp7dmFsdWU6YyxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KX06ZnVuY3Rpb24oYyxhKXtmdW5jdGlvbiBiKCl7fWMuc3VwZXJfPWE7Yi5wcm90b3R5cGU9YS5wcm90b3R5cGU7Yy5wcm90b3R5cGU9bmV3IGI7Yy5wcm90b3R5cGUuY29uc3RydWN0b3I9Y30sUmY9LyVbc2RqJV0vZyxOYj17fSx5YzthYS5jb2xvcnM9e2JvbGQ6WzEsMjJdLGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxpbnZlcnNlOls3LDI3XSx3aGl0ZTpbMzcsMzldLGdyZXk6WzkwLDM5XSxibGFjazpbMzAsMzldLGJsdWU6WzM0LDM5XSxjeWFuOlszNiwzOV0sZ3JlZW46WzMyLDM5XSxtYWdlbnRhOlszNSwzOV0scmVkOlszMSwzOV0seWVsbG93OlszMywzOV19O2FhLnN0eWxlcz17c3BlY2lhbDoiY3lhbiIsbnVtYmVyOiJ5ZWxsb3ciLCJib29sZWFuIjoieWVsbG93Iix1bmRlZmluZWQ6ImdyZXkiLCJudWxsIjoiYm9sZCIsc3RyaW5nOiJncmVlbiIsZGF0ZToibWFnZW50YSIsCnJlZ2V4cDoicmVkIn07dmFyIFpmPSJKYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYyIuc3BsaXQoIiAiKSx3Yj17aW5oZXJpdHM6emEsX2V4dGVuZDpUZCxsb2c6ZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiJXMgLSAlcyIsWWYoKSx3Yy5hcHBseShudWxsLGFyZ3VtZW50cykpfSxpc0J1ZmZlcjpmdW5jdGlvbihjKXtyZXR1cm4gcGEoYyl9LGlzUHJpbWl0aXZlOkNjLGlzRnVuY3Rpb246V2EsaXNFcnJvcjpvYixpc0RhdGU6cGIsaXNPYmplY3Q6d2EsaXNSZWdFeHA6WGEsaXNVbmRlZmluZWQ6bGEsaXNTeW1ib2w6ZnVuY3Rpb24oYyl7cmV0dXJuInN5bWJvbCI9PT10eXBlb2YgY30saXNTdHJpbmc6SmEsaXNOdW1iZXI6VmQsaXNOdWxsT3JVbmRlZmluZWQ6ZnVuY3Rpb24oYyl7cmV0dXJuIG51bGw9PWN9LGlzTnVsbDpmdW5jdGlvbihjKXtyZXR1cm4gbnVsbD09PWN9LGlzQm9vbGVhbjp6Yyxpc0FycmF5OlVkLGluc3BlY3Q6YWEsZGVwcmVjYXRlOnhjLApmb3JtYXQ6d2MsZGVidWdsb2c6U2R9LFZnPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZ2U9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKGMpe3ZhciBhPVtdLGI7Zm9yKGIgaW4gYylWZy5jYWxsKGMsYikmJmEucHVzaChiKTtyZXR1cm4gYX0sZmU9QXJyYXkucHJvdG90eXBlLnNsaWNlLEVjLCRmPS9ccypmdW5jdGlvblxzKyhbXlwoXHNdKilccyovO0UuQXNzZXJ0aW9uRXJyb3I9R2M7emEoR2MsRXJyb3IpO0UuZmFpbD1TO0Uub2s9RmM7RS5lcXVhbD1iZTtFLm5vdEVxdWFsPWNlO0UuZGVlcEVxdWFsPWRlO0UuZGVlcFN0cmljdEVxdWFsPWVlO0Uubm90RGVlcEVxdWFsPWhlO0Uubm90RGVlcFN0cmljdEVxdWFsPWllO0Uuc3RyaWN0RXF1YWw9amU7RS5ub3RTdHJpY3RFcXVhbD1rZTtFLnRocm93cz1mdW5jdGlvbihjLGEsYil7bWUoITAsYyxhLGIpfTtFLmRvZXNOb3RUaHJvdz1mdW5jdGlvbihjLGEsYil7bWUoITEsYyxhLGIpfTtFLmlmRXJyb3I9ZnVuY3Rpb24oYyl7aWYoYyl0aHJvdyBjOwp9O3ZhciB4Yj1LKGZ1bmN0aW9uKGMsYSl7ZnVuY3Rpb24gYihhKXtyZXR1cm4gZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYyhjKXtmb3IodmFyIGI9W10sZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspYltlLTFdPWFyZ3VtZW50c1tlXTtiPWEuY2FsbCh0aGlzLGQoYyxiKSl8fHRoaXM7Yi5jb2RlPWM7YltoXT1jO2IubmFtZT1hLnByb3RvdHlwZS5uYW1lKyIgWyIrYltoXSsiXSI7cmV0dXJuIGJ9ZyhjLGEpO3JldHVybiBjfShhKX1mdW5jdGlvbiBkKGEsYyl7RS5zdHJpY3RFcXVhbCh0eXBlb2YgYSwic3RyaW5nIik7dmFyIGI9a1thXTtFKGIsIkFuIGludmFsaWQgZXJyb3IgbWVzc2FnZSBrZXkgd2FzIHVzZWQ6ICIrYSsiLiIpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYilhPWI7ZWxzZXthPXdiLmZvcm1hdDtpZih2b2lkIDA9PT1jfHwwPT09Yy5sZW5ndGgpcmV0dXJuIGI7Yy51bnNoaWZ0KGIpfXJldHVybiBTdHJpbmcoYS5hcHBseShudWxsLGMpKX1mdW5jdGlvbiBlKGEsYyl7a1thXT0KImZ1bmN0aW9uIj09PXR5cGVvZiBjP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIGYoYSxjKXtFKGEsImV4cGVjdGVkIGlzIHJlcXVpcmVkIik7RSgic3RyaW5nIj09PXR5cGVvZiBjLCJ0aGluZyBpcyByZXF1aXJlZCIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe3ZhciBiPWEubGVuZ3RoO0UoMDxiLCJBdCBsZWFzdCBvbmUgZXhwZWN0ZWQgdmFsdWUgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIik7YT1hLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpfSk7cmV0dXJuIDI8Yj8ib25lIG9mICIrYysiICIrYS5zbGljZSgwLGItMSkuam9pbigiLCAiKSsiLCBvciAiK2FbYi0xXToyPT09Yj8ib25lIG9mICIrYysiICIrYVswXSsiIG9yICIrYVsxXToib2YgIitjKyIgIithWzBdfXJldHVybiJvZiAiK2MrIiAiK1N0cmluZyhhKX12YXIgZz1OJiZOLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMsYil7YT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZgpBcnJheSYmZnVuY3Rpb24oYSxjKXthLl9fcHJvdG9fXz1jfXx8ZnVuY3Rpb24oYSxjKXtmb3IodmFyIGIgaW4gYyljLmhhc093blByb3BlcnR5KGIpJiYoYVtiXT1jW2JdKX07cmV0dXJuIGEoYyxiKX1yZXR1cm4gZnVuY3Rpb24oYyxiKXtmdW5jdGlvbiBkKCl7dGhpcy5jb25zdHJ1Y3Rvcj1jfWEoYyxiKTtjLnByb3RvdHlwZT1udWxsPT09Yj9PYmplY3QuY3JlYXRlKGIpOihkLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgZCl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaD0idW5kZWZpbmVkIj09PXR5cGVvZiBTeW1ib2w/Il9rQ29kZSI6U3ltYm9sKCJjb2RlIiksaz17fTtjPWZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGIoYil7aWYoIm9iamVjdCIhPT10eXBlb2YgYnx8bnVsbD09PWIpdGhyb3cgbmV3IGEuVHlwZUVycm9yKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsIm9wdGlvbnMiLCJvYmplY3QiKTt2YXIgZD1iLm1lc3NhZ2U/CmMuY2FsbCh0aGlzLGIubWVzc2FnZSl8fHRoaXM6Yy5jYWxsKHRoaXMsd2IuaW5zcGVjdChiLmFjdHVhbCkuc2xpY2UoMCwxMjgpKyIgIisoYi5vcGVyYXRvcisiICIrd2IuaW5zcGVjdChiLmV4cGVjdGVkKS5zbGljZSgwLDEyOCkpKXx8dGhpcztkLmdlbmVyYXRlZE1lc3NhZ2U9IWIubWVzc2FnZTtkLm5hbWU9IkFzc2VydGlvbkVycm9yIFtFUlJfQVNTRVJUSU9OXSI7ZC5jb2RlPSJFUlJfQVNTRVJUSU9OIjtkLmFjdHVhbD1iLmFjdHVhbDtkLmV4cGVjdGVkPWIuZXhwZWN0ZWQ7ZC5vcGVyYXRvcj1iLm9wZXJhdG9yO2EuRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZCxiLnN0YWNrU3RhcnRGdW5jdGlvbik7cmV0dXJuIGR9ZyhiLGMpO3JldHVybiBifShOLkVycm9yKTthLkFzc2VydGlvbkVycm9yPWM7YS5tZXNzYWdlPWQ7YS5FPWU7YS5FcnJvcj1iKE4uRXJyb3IpO2EuVHlwZUVycm9yPWIoTi5UeXBlRXJyb3IpO2EuUmFuZ2VFcnJvcj1iKE4uUmFuZ2VFcnJvcik7ZSgiRVJSX0FSR19OT1RfSVRFUkFCTEUiLAoiJXMgbXVzdCBiZSBpdGVyYWJsZSIpO2UoIkVSUl9BU1NFUlRJT04iLCIlcyIpO2UoIkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUyIsZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8iQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiOiciJythKyciIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcyd9KTtlKCJFUlJfQ0hJTERfQ0xPU0VEX0JFRk9SRV9SRVBMWSIsIkNoaWxkIGNsb3NlZCBiZWZvcmUgcmVwbHkgcmVjZWl2ZWQiKTtlKCJFUlJfQ09OU09MRV9XUklUQUJMRV9TVFJFQU0iLCJDb25zb2xlIGV4cGVjdHMgYSB3cml0YWJsZSBzdHJlYW0gaW5zdGFuY2UgZm9yICVzIik7ZSgiRVJSX0NQVV9VU0FHRSIsIlVuYWJsZSB0byBvYnRhaW4gY3B1IHVzYWdlICVzIik7ZSgiRVJSX0ROU19TRVRfU0VSVkVSU19GQUlMRUQiLGZ1bmN0aW9uKGEsYyl7cmV0dXJuJ2MtYXJlcyBmYWlsZWQgdG8gc2V0IHNlcnZlcnM6ICInK2ErJyIgWycrYysiXSJ9KTtlKCJFUlJfRkFMU1lfVkFMVUVfUkVKRUNUSU9OIiwKIlByb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggZmFsc3kgdmFsdWUiKTtlKCJFUlJfRU5DT0RJTkdfTk9UX1NVUFBPUlRFRCIsZnVuY3Rpb24oYSl7cmV0dXJuJ1RoZSAiJythKyciIGVuY29kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnfSk7ZSgiRVJSX0VOQ09ESU5HX0lOVkFMSURfRU5DT0RFRF9EQVRBIixmdW5jdGlvbihhKXtyZXR1cm4iVGhlIGVuY29kZWQgZGF0YSB3YXMgbm90IHZhbGlkIGZvciBlbmNvZGluZyAiK2F9KTtlKCJFUlJfSFRUUF9IRUFERVJTX1NFTlQiLCJDYW5ub3QgcmVuZGVyIGhlYWRlcnMgYWZ0ZXIgdGhleSBhcmUgc2VudCB0byB0aGUgY2xpZW50Iik7ZSgiRVJSX0hUVFBfSU5WQUxJRF9TVEFUVVNfQ09ERSIsIkludmFsaWQgc3RhdHVzIGNvZGU6ICVzIik7ZSgiRVJSX0hUVFBfVFJBSUxFUl9JTlZBTElEIiwiVHJhaWxlcnMgYXJlIGludmFsaWQgd2l0aCB0aGlzIHRyYW5zZmVyIGVuY29kaW5nIik7ZSgiRVJSX0lOREVYX09VVF9PRl9SQU5HRSIsIkluZGV4IG91dCBvZiByYW5nZSIpOwplKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oYSxjLGIpe0UoYSwibmFtZSBpcyByZXF1aXJlZCIpO2lmKGMuaW5jbHVkZXMoIm5vdCAiKSl7dmFyIGQ9Im11c3Qgbm90IGJlIjtjPWMuc3BsaXQoIm5vdCAiKVsxXX1lbHNlIGQ9Im11c3QgYmUiO2lmKEFycmF5LmlzQXJyYXkoYSkpZD0iVGhlICIrYS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuJyInK2ErJyInfSkuam9pbigiLCAiKSsiIGFyZ3VtZW50cyAiK2QrIiAiK2YoYywidHlwZSIpO2Vsc2UgaWYoYS5pbmNsdWRlcygiIGFyZ3VtZW50IikpZD0iVGhlICIrYSsiICIrZCsiICIrZihjLCJ0eXBlIik7ZWxzZXt2YXIgZT1hLmluY2x1ZGVzKCIuIik/InByb3BlcnR5IjoiYXJndW1lbnQiO2Q9J1RoZSAiJythKyciICcrZSsiICIrZCsiICIrZihjLCJ0eXBlIil9Mzw9YXJndW1lbnRzLmxlbmd0aCYmKGQrPSIuIFJlY2VpdmVkIHR5cGUgIisobnVsbCE9PWI/dHlwZW9mIGI6Im51bGwiKSk7cmV0dXJuIGR9KTtlKCJFUlJfSU5WQUxJRF9BUlJBWV9MRU5HVEgiLApmdW5jdGlvbihhLGMsYil7RS5zdHJpY3RFcXVhbCh0eXBlb2YgYiwibnVtYmVyIik7cmV0dXJuJ1RoZSBhcnJheSAiJythKyciIChsZW5ndGggJytiKyIpIG11c3QgYmUgb2YgbGVuZ3RoICIrYysiLiJ9KTtlKCJFUlJfSU5WQUxJRF9CVUZGRVJfU0laRSIsIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAlcyIpO2UoIkVSUl9JTlZBTElEX0NBTExCQUNLIiwiQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZSgiRVJSX0lOVkFMSURfQ0hBUiIsIkludmFsaWQgY2hhcmFjdGVyIGluICVzIik7ZSgiRVJSX0lOVkFMSURfQ1VSU09SX1BPUyIsIkNhbm5vdCBzZXQgY3Vyc29yIHJvdyB3aXRob3V0IHNldHRpbmcgaXRzIGNvbHVtbiIpO2UoIkVSUl9JTlZBTElEX0ZEIiwnImZkIiBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcjogJXMnKTtlKCJFUlJfSU5WQUxJRF9GSUxFX1VSTF9IT1NUIiwnRmlsZSBVUkwgaG9zdCBtdXN0IGJlICJsb2NhbGhvc3QiIG9yIGVtcHR5IG9uICVzJyk7CmUoIkVSUl9JTlZBTElEX0ZJTEVfVVJMX1BBVEgiLCJGaWxlIFVSTCBwYXRoICVzIik7ZSgiRVJSX0lOVkFMSURfSEFORExFX1RZUEUiLCJUaGlzIGhhbmRsZSB0eXBlIGNhbm5vdCBiZSBzZW50Iik7ZSgiRVJSX0lOVkFMSURfSVBfQUREUkVTUyIsIkludmFsaWQgSVAgYWRkcmVzczogJXMiKTtlKCJFUlJfSU5WQUxJRF9PUFRfVkFMVUUiLGZ1bmN0aW9uKGEsYyl7cmV0dXJuJ1RoZSB2YWx1ZSAiJytTdHJpbmcoYykrJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICInK2ErJyInfSk7ZSgiRVJSX0lOVkFMSURfT1BUX1ZBTFVFX0VOQ09ESU5HIixmdW5jdGlvbihhKXtyZXR1cm4nVGhlIHZhbHVlICInK1N0cmluZyhhKSsnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gImVuY29kaW5nIid9KTtlKCJFUlJfSU5WQUxJRF9SRVBMX0VWQUxfQ09ORklHIiwnQ2Fubm90IHNwZWNpZnkgYm90aCAiYnJlYWtFdmFsT25TaWdpbnQiIGFuZCAiZXZhbCIgZm9yIFJFUEwnKTtlKCJFUlJfSU5WQUxJRF9TWU5DX0ZPUktfSU5QVVQiLAoiQXN5bmNocm9ub3VzIGZvcmtzIGRvIG5vdCBzdXBwb3J0IEJ1ZmZlciwgVWludDhBcnJheSBvciBzdHJpbmcgaW5wdXQ6ICVzIik7ZSgiRVJSX0lOVkFMSURfVEhJUyIsJ1ZhbHVlIG9mICJ0aGlzIiBtdXN0IGJlIG9mIHR5cGUgJXMnKTtlKCJFUlJfSU5WQUxJRF9UVVBMRSIsIiVzIG11c3QgYmUgYW4gaXRlcmFibGUgJXMgdHVwbGUiKTtlKCJFUlJfSU5WQUxJRF9VUkwiLCJJbnZhbGlkIFVSTDogJXMiKTtlKCJFUlJfSU5WQUxJRF9VUkxfU0NIRU1FIixmdW5jdGlvbihhKXtyZXR1cm4iVGhlIFVSTCBtdXN0IGJlICIrZihhLCJzY2hlbWUiKX0pO2UoIkVSUl9JUENfQ0hBTk5FTF9DTE9TRUQiLCJDaGFubmVsIGNsb3NlZCIpO2UoIkVSUl9JUENfRElTQ09OTkVDVEVEIiwiSVBDIGNoYW5uZWwgaXMgYWxyZWFkeSBkaXNjb25uZWN0ZWQiKTtlKCJFUlJfSVBDX09ORV9QSVBFIiwiQ2hpbGQgcHJvY2VzcyBjYW4gaGF2ZSBvbmx5IG9uZSBJUEMgcGlwZSIpO2UoIkVSUl9JUENfU1lOQ19GT1JLIiwKIklQQyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN5bmNocm9ub3VzIGZvcmtzIik7ZSgiRVJSX01JU1NJTkdfQVJHUyIsZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYVtjXT1hcmd1bWVudHNbY107RSgwPGEubGVuZ3RoLCJBdCBsZWFzdCBvbmUgYXJnIG5lZWRzIHRvIGJlIHNwZWNpZmllZCIpO2M9IlRoZSAiO3ZhciBiPWEubGVuZ3RoO2E9YS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuJyInK2ErJyInfSk7c3dpdGNoKGIpe2Nhc2UgMTpjKz1hWzBdKyIgYXJndW1lbnQiO2JyZWFrO2Nhc2UgMjpjKz1hWzBdKyIgYW5kICIrYVsxXSsiIGFyZ3VtZW50cyI7YnJlYWs7ZGVmYXVsdDpjKz1hLnNsaWNlKDAsYi0xKS5qb2luKCIsICIpLGMrPSIsIGFuZCAiK2FbYi0xXSsiIGFyZ3VtZW50cyJ9cmV0dXJuIGMrIiBtdXN0IGJlIHNwZWNpZmllZCJ9KTtlKCJFUlJfTVVMVElQTEVfQ0FMTEJBQ0siLCJDYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMiKTsKZSgiRVJSX05BUElfQ09OU19GVU5DVElPTiIsIkNvbnN0cnVjdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpO2UoIkVSUl9OQVBJX0NPTlNfUFJPVE9UWVBFX09CSkVDVCIsIkNvbnN0cnVjdG9yLnByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCIpO2UoIkVSUl9OT19DUllQVE8iLCJOb2RlLmpzIGlzIG5vdCBjb21waWxlZCB3aXRoIE9wZW5TU0wgY3J5cHRvIHN1cHBvcnQiKTtlKCJFUlJfTk9fTE9OR0VSX1NVUFBPUlRFRCIsIiVzIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtlKCJFUlJfUEFSU0VfSElTVE9SWV9EQVRBIiwiQ291bGQgbm90IHBhcnNlIGhpc3RvcnkgZGF0YSBpbiAlcyIpO2UoIkVSUl9TT0NLRVRfQUxSRUFEWV9CT1VORCIsIlNvY2tldCBpcyBhbHJlYWR5IGJvdW5kIik7ZSgiRVJSX1NPQ0tFVF9CQURfUE9SVCIsIlBvcnQgc2hvdWxkIGJlID4gMCBhbmQgPCA2NTUzNiIpO2UoIkVSUl9TT0NLRVRfQkFEX1RZUEUiLCJCYWQgc29ja2V0IHR5cGUgc3BlY2lmaWVkLiBWYWxpZCB0eXBlcyBhcmU6IHVkcDQsIHVkcDYiKTsKZSgiRVJSX1NPQ0tFVF9DQU5OT1RfU0VORCIsIlVuYWJsZSB0byBzZW5kIGRhdGEiKTtlKCJFUlJfU09DS0VUX0NMT1NFRCIsIlNvY2tldCBpcyBjbG9zZWQiKTtlKCJFUlJfU09DS0VUX0RHUkFNX05PVF9SVU5OSU5HIiwiTm90IHJ1bm5pbmciKTtlKCJFUlJfU1RERVJSX0NMT1NFIiwicHJvY2Vzcy5zdGRlcnIgY2Fubm90IGJlIGNsb3NlZCIpO2UoIkVSUl9TVERPVVRfQ0xPU0UiLCJwcm9jZXNzLnN0ZG91dCBjYW5ub3QgYmUgY2xvc2VkIik7ZSgiRVJSX1NUUkVBTV9XUkFQIiwiU3RyZWFtIGhhcyBTdHJpbmdEZWNvZGVyIHNldCBvciBpcyBpbiBvYmplY3RNb2RlIik7ZSgiRVJSX1RMU19DRVJUX0FMVE5BTUVfSU5WQUxJRCIsIkhvc3RuYW1lL0lQIGRvZXMgbm90IG1hdGNoIGNlcnRpZmljYXRlJ3MgYWx0bmFtZXM6ICVzIik7ZSgiRVJSX1RMU19ESF9QQVJBTV9TSVpFIixmdW5jdGlvbihhKXtyZXR1cm4iREggcGFyYW1ldGVyIHNpemUgIithKyIgaXMgbGVzcyB0aGFuIDIwNDgifSk7CmUoIkVSUl9UTFNfSEFORFNIQUtFX1RJTUVPVVQiLCJUTFMgaGFuZHNoYWtlIHRpbWVvdXQiKTtlKCJFUlJfVExTX1JFTkVHT1RJQVRJT05fRkFJTEVEIiwiRmFpbGVkIHRvIHJlbmVnb3RpYXRlIik7ZSgiRVJSX1RMU19SRVFVSVJFRF9TRVJWRVJfTkFNRSIsJyJzZXJ2ZXJuYW1lIiBpcyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yIFNlcnZlci5hZGRDb250ZXh0Jyk7ZSgiRVJSX1RMU19TRVNTSU9OX0FUVEFDSyIsIlRTTCBzZXNzaW9uIHJlbmVnb3RpYXRpb24gYXR0YWNrIGRldGVjdGVkIik7ZSgiRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyIsIkNhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmciKTtlKCJFUlJfVFJBTlNGT1JNX1dJVEhfTEVOR1RIXzAiLCJDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3JpdGFibGVTdGF0ZS5sZW5ndGggIT0gMCIpO2UoIkVSUl9VTktOT1dOX0VOQ09ESU5HIiwiVW5rbm93biBlbmNvZGluZzogJXMiKTsKZSgiRVJSX1VOS05PV05fU0lHTkFMIiwiVW5rbm93biBzaWduYWw6ICVzIik7ZSgiRVJSX1VOS05PV05fU1RESU5fVFlQRSIsIlVua25vd24gc3RkaW4gZmlsZSB0eXBlIik7ZSgiRVJSX1VOS05PV05fU1RSRUFNX1RZUEUiLCJVbmtub3duIHN0cmVhbSBmaWxlIHR5cGUiKTtlKCJFUlJfVjhCUkVBS0lURVJBVE9SIiwiRnVsbCBJQ1UgZGF0YSBub3QgaW5zdGFsbGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3dpa2kvSW50bCIpfSk7USh4Yik7dmFyIG9hPUsoZnVuY3Rpb24oYyxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7YS5FTkNPRElOR19VVEY4PSJ1dGY4IjthLmFzc2VydEVuY29kaW5nPWZ1bmN0aW9uKGEpe2lmKGEmJiFKLkJ1ZmZlci5pc0VuY29kaW5nKGEpKXRocm93IG5ldyB4Yi5UeXBlRXJyb3IoIkVSUl9JTlZBTElEX09QVF9WQUxVRV9FTkNPRElORyIsYSk7fTthLnN0clRvRW5jb2Rpbmc9ZnVuY3Rpb24oYywKZCl7cmV0dXJuIGQmJmQhPT1hLkVOQ09ESU5HX1VURjg/ImJ1ZmZlciI9PT1kP25ldyBKLkJ1ZmZlcihjKToobmV3IEouQnVmZmVyKGMpKS50b1N0cmluZyhkKTpjfX0pO1Eob2EpO3ZhciAkYz1LKGZ1bmN0aW9uKGMsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBiPXUuY29uc3RhbnRzLlNfSUZNVCxkPXUuY29uc3RhbnRzLlNfSUZESVIsZT11LmNvbnN0YW50cy5TX0lGUkVHLGY9dS5jb25zdGFudHMuU19JRkJMSyxnPXUuY29uc3RhbnRzLlNfSUZDSFIsaD11LmNvbnN0YW50cy5TX0lGTE5LLGs9dS5jb25zdGFudHMuU19JRklGTyx0PXUuY29uc3RhbnRzLlNfSUZTT0NLO2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dGhpcy5uYW1lPSIiO3RoaXMubW9kZT0wfWEuYnVpbGQ9ZnVuY3Rpb24oYyxiKXt2YXIgZD1uZXcgYSxlPWMuZ2V0Tm9kZSgpLm1vZGU7ZC5uYW1lPW9hLnN0clRvRW5jb2RpbmcoYy5nZXROYW1lKCksYik7ZC5tb2RlPQplO3JldHVybiBkfTthLnByb3RvdHlwZS5fY2hlY2tNb2RlUHJvcGVydHk9ZnVuY3Rpb24oYSl7cmV0dXJuKHRoaXMubW9kZSZiKT09PWF9O2EucHJvdG90eXBlLmlzRGlyZWN0b3J5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KGQpfTthLnByb3RvdHlwZS5pc0ZpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoZSl9O2EucHJvdG90eXBlLmlzQmxvY2tEZXZpY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoZil9O2EucHJvdG90eXBlLmlzQ2hhcmFjdGVyRGV2aWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KGcpfTthLnByb3RvdHlwZS5pc1N5bWJvbGljTGluaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja01vZGVQcm9wZXJ0eShoKX07YS5wcm90b3R5cGUuaXNGSUZPPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KGspfTsKYS5wcm90b3R5cGUuaXNTb2NrZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkodCl9O3JldHVybiBhfSgpO2EuRGlyZW50PWM7YS5kZWZhdWx0PWN9KTtRKCRjKTsiYWIiLnN1YnN0cigtMSk7dmFyIGdiPUsoZnVuY3Rpb24oYyxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Yz0iZnVuY3Rpb24iPT09dHlwZW9mIHNldEltbWVkaWF0ZT9zZXRJbW1lZGlhdGUuYmluZChOKTpzZXRUaW1lb3V0LmJpbmQoTik7YS5kZWZhdWx0PWN9KTtRKGdiKTt2YXIgWT1LKGZ1bmN0aW9uKGMsYSl7ZnVuY3Rpb24gYigpe3ZhciBhPVZhfHx7fTthLmdldHVpZHx8KGEuZ2V0dWlkPWZ1bmN0aW9uKCl7cmV0dXJuIDB9KTthLmdldGdpZHx8KGEuZ2V0Z2lkPWZ1bmN0aW9uKCl7cmV0dXJuIDB9KTthLmN3ZHx8KGEuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIi8ifSk7YS5uZXh0VGlja3x8KGEubmV4dFRpY2s9Z2IuZGVmYXVsdCk7YS5lbWl0V2FybmluZ3x8CihhLmVtaXRXYXJuaW5nPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCIiK2MrKGM/IjogIjoiIikrYSl9KTthLmVudnx8KGEuZW52PXt9KTtyZXR1cm4gYX1PYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7YS5jcmVhdGVQcm9jZXNzPWI7YS5kZWZhdWx0PWIoKX0pO1EoWSk7cWEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobnVsbCk7eC5FdmVudEVtaXR0ZXI9eDt4LnVzaW5nRG9tYWlucz0hMTt4LnByb3RvdHlwZS5kb21haW49dm9pZCAwO3gucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwO3gucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3guZGVmYXVsdE1heExpc3RlbmVycz0xMDt4LmluaXQ9ZnVuY3Rpb24oKXt0aGlzLmRvbWFpbj1udWxsO3RoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9bmV3IHFhLHRoaXMuX2V2ZW50c0NvdW50PTApOwp0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9O3gucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbihjKXtpZigibnVtYmVyIiE9PXR5cGVvZiBjfHwwPmN8fGlzTmFOKGMpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJuIiBhcmd1bWVudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7dGhpcy5fbWF4TGlzdGVuZXJzPWM7cmV0dXJuIHRoaXN9O3gucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT10aGlzLl9tYXhMaXN0ZW5lcnM/eC5kZWZhdWx0TWF4TGlzdGVuZXJzOnRoaXMuX21heExpc3RlbmVyc307eC5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihjKXt2YXIgYSxiLGQ9ImVycm9yIj09PWM7aWYoYT10aGlzLl9ldmVudHMpZD1kJiZudWxsPT1hLmVycm9yO2Vsc2UgaWYoIWQpcmV0dXJuITE7dmFyIGU9dGhpcy5kb21haW47aWYoZCl7YT1hcmd1bWVudHNbMV07aWYoZSlhfHwoYT1FcnJvcignVW5jYXVnaHQsIHVuc3BlY2lmaWVkICJlcnJvciIgZXZlbnQnKSksCmEuZG9tYWluRW1pdHRlcj10aGlzLGEuZG9tYWluPWUsYS5kb21haW5UaHJvd249ITEsZS5lbWl0KCJlcnJvciIsYSk7ZWxzZXtpZihhIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgYTtlPUVycm9yKCdVbmNhdWdodCwgdW5zcGVjaWZpZWQgImVycm9yIiBldmVudC4gKCcrYSsiKSIpO2UuY29udGV4dD1hO3Rocm93IGU7fXJldHVybiExfWU9YVtjXTtpZighZSlyZXR1cm4hMTthPSJmdW5jdGlvbiI9PT10eXBlb2YgZTt2YXIgZj1hcmd1bWVudHMubGVuZ3RoO3N3aXRjaChmKXtjYXNlIDE6aWYoYSllLmNhbGwodGhpcyk7ZWxzZSBmb3IoYT1lLmxlbmd0aCxlPXFiKGUsYSksZD0wO2Q8YTsrK2QpZVtkXS5jYWxsKHRoaXMpO2JyZWFrO2Nhc2UgMjpkPWFyZ3VtZW50c1sxXTtpZihhKWUuY2FsbCh0aGlzLGQpO2Vsc2UgZm9yKGE9ZS5sZW5ndGgsZT1xYihlLGEpLGY9MDtmPGE7KytmKWVbZl0uY2FsbCh0aGlzLGQpO2JyZWFrO2Nhc2UgMzpkPWFyZ3VtZW50c1sxXTtmPWFyZ3VtZW50c1syXTsKaWYoYSllLmNhbGwodGhpcyxkLGYpO2Vsc2UgZm9yKGE9ZS5sZW5ndGgsZT1xYihlLGEpLGI9MDtiPGE7KytiKWVbYl0uY2FsbCh0aGlzLGQsZik7YnJlYWs7Y2FzZSA0OmQ9YXJndW1lbnRzWzFdO2Y9YXJndW1lbnRzWzJdO2I9YXJndW1lbnRzWzNdO2lmKGEpZS5jYWxsKHRoaXMsZCxmLGIpO2Vsc2V7YT1lLmxlbmd0aDtlPXFiKGUsYSk7Zm9yKHZhciBnPTA7ZzxhOysrZyllW2ddLmNhbGwodGhpcyxkLGYsYil9YnJlYWs7ZGVmYXVsdDpkPUFycmF5KGYtMSk7Zm9yKGI9MTtiPGY7YisrKWRbYi0xXT1hcmd1bWVudHNbYl07aWYoYSllLmFwcGx5KHRoaXMsZCk7ZWxzZSBmb3IoYT1lLmxlbmd0aCxlPXFiKGUsYSksZj0wO2Y8YTsrK2YpZVtmXS5hcHBseSh0aGlzLGQpfXJldHVybiEwfTt4LnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihjLGEpe3JldHVybiBuZSh0aGlzLGMsYSwhMSl9O3gucHJvdG90eXBlLm9uPXgucHJvdG90eXBlLmFkZExpc3RlbmVyO3gucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj0KZnVuY3Rpb24oYyxhKXtyZXR1cm4gbmUodGhpcyxjLGEsITApfTt4LnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGMsYSl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7dGhpcy5vbihjLG9lKHRoaXMsYyxhKSk7cmV0dXJuIHRoaXN9O3gucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZnVuY3Rpb24oYyxhKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3RlbmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTt0aGlzLnByZXBlbmRMaXN0ZW5lcihjLG9lKHRoaXMsYyxhKSk7cmV0dXJuIHRoaXN9O3gucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGMsYSl7dmFyIGI7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CnZhciBkPXRoaXMuX2V2ZW50cztpZighZClyZXR1cm4gdGhpczt2YXIgZT1kW2NdO2lmKCFlKXJldHVybiB0aGlzO2lmKGU9PT1hfHxlLmxpc3RlbmVyJiZlLmxpc3RlbmVyPT09YSkwPT09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9bmV3IHFhOihkZWxldGUgZFtjXSxkLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixjLGUubGlzdGVuZXJ8fGEpKTtlbHNlIGlmKCJmdW5jdGlvbiIhPT10eXBlb2YgZSl7dmFyIGY9LTE7Zm9yKGI9ZS5sZW5ndGg7MDxiLS07KWlmKGVbYl09PT1hfHxlW2JdLmxpc3RlbmVyJiZlW2JdLmxpc3RlbmVyPT09YSl7dmFyIGc9ZVtiXS5saXN0ZW5lcjtmPWI7YnJlYWt9aWYoMD5mKXJldHVybiB0aGlzO2lmKDE9PT1lLmxlbmd0aCl7ZVswXT12b2lkIDA7aWYoMD09PS0tdGhpcy5fZXZlbnRzQ291bnQpcmV0dXJuIHRoaXMuX2V2ZW50cz1uZXcgcWEsdGhpcztkZWxldGUgZFtjXX1lbHNle2I9ZisxO2Zvcih2YXIgaD0KZS5sZW5ndGg7YjxoO2YrPTEsYis9MSllW2ZdPWVbYl07ZS5wb3AoKX1kLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixjLGd8fGEpfXJldHVybiB0aGlzfTt4LnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oYyl7dmFyIGE9dGhpcy5fZXZlbnRzO2lmKCFhKXJldHVybiB0aGlzO2lmKCFhLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD8odGhpcy5fZXZlbnRzPW5ldyBxYSx0aGlzLl9ldmVudHNDb3VudD0wKTphW2NdJiYoMD09PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPW5ldyBxYTpkZWxldGUgYVtjXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7YT1PYmplY3Qua2V5cyhhKTtmb3IodmFyIGI9MCxkO2I8YS5sZW5ndGg7KytiKWQ9YVtiXSwicmVtb3ZlTGlzdGVuZXIiIT09ZCYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoZCk7dGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIik7CnRoaXMuX2V2ZW50cz1uZXcgcWE7dGhpcy5fZXZlbnRzQ291bnQ9MDtyZXR1cm4gdGhpc31hPWFbY107aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhKXRoaXMucmVtb3ZlTGlzdGVuZXIoYyxhKTtlbHNlIGlmKGEpe2RvIHRoaXMucmVtb3ZlTGlzdGVuZXIoYyxhW2EubGVuZ3RoLTFdKTt3aGlsZShhWzBdKX1yZXR1cm4gdGhpc307eC5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGMpe3ZhciBhPXRoaXMuX2V2ZW50cztpZihhKWlmKGM9YVtjXSlpZigiZnVuY3Rpb24iPT09dHlwZW9mIGMpYz1bYy5saXN0ZW5lcnx8Y107ZWxzZXthPUFycmF5KGMubGVuZ3RoKTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYilhW2JdPWNbYl0ubGlzdGVuZXJ8fGNbYl07Yz1hfWVsc2UgYz1bXTtlbHNlIGM9W107cmV0dXJuIGN9O3gubGlzdGVuZXJDb3VudD1mdW5jdGlvbihjLGEpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYy5saXN0ZW5lckNvdW50P2MubGlzdGVuZXJDb3VudChhKTpwZS5jYWxsKGMsCmEpfTt4LnByb3RvdHlwZS5saXN0ZW5lckNvdW50PXBlO3gucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4gMDx0aGlzLl9ldmVudHNDb3VudD9SZWZsZWN0Lm93bktleXModGhpcy5fZXZlbnRzKTpbXX07dmFyIHliPUsoZnVuY3Rpb24oYyxhKXt2YXIgYj1OJiZOLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMsYil7YT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYSxjKXthLl9fcHJvdG9fXz1jfXx8ZnVuY3Rpb24oYSxjKXtmb3IodmFyIGIgaW4gYyljLmhhc093blByb3BlcnR5KGIpJiYoYVtiXT1jW2JdKX07cmV0dXJuIGEoYyxiKX1yZXR1cm4gZnVuY3Rpb24oYyxiKXtmdW5jdGlvbiBkKCl7dGhpcy5jb25zdHJ1Y3Rvcj1jfWEoYyxiKTtjLnByb3RvdHlwZT1udWxsPT09Yj9PYmplY3QuY3JlYXRlKGIpOihkLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgZCl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLAoiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGQ9dS5jb25zdGFudHMuU19JRk1ULGU9dS5jb25zdGFudHMuU19JRkRJUixmPXUuY29uc3RhbnRzLlNfSUZSRUcsZz11LmNvbnN0YW50cy5TX0lGTE5LLGg9dS5jb25zdGFudHMuT19BUFBFTkQ7YS5TRVA9Ii8iO2M9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYyhjLGIpe3ZvaWQgMD09PWImJihiPTQzOCk7dmFyIGQ9YS5jYWxsKHRoaXMpfHx0aGlzO2QudWlkPVkuZGVmYXVsdC5nZXR1aWQoKTtkLmdpZD1ZLmRlZmF1bHQuZ2V0Z2lkKCk7ZC5hdGltZT1uZXcgRGF0ZTtkLm10aW1lPW5ldyBEYXRlO2QuY3RpbWU9bmV3IERhdGU7ZC5wZXJtPTQzODtkLm1vZGU9ZjtkLm5saW5rPTE7ZC5wZXJtPWI7ZC5tb2RlfD1iO2QuaW5vPWM7cmV0dXJuIGR9YihjLGEpO2MucHJvdG90eXBlLmdldFN0cmluZz1mdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoYT0idXRmOCIpO3JldHVybiB0aGlzLmdldEJ1ZmZlcigpLnRvU3RyaW5nKGEpfTtjLnByb3RvdHlwZS5zZXRTdHJpbmc9CmZ1bmN0aW9uKGEpe3RoaXMuYnVmPUouYnVmZmVyRnJvbShhLCJ1dGY4Iik7dGhpcy50b3VjaCgpfTtjLnByb3RvdHlwZS5nZXRCdWZmZXI9ZnVuY3Rpb24oKXt0aGlzLmJ1Znx8dGhpcy5zZXRCdWZmZXIoSi5idWZmZXJBbGxvY1Vuc2FmZSgwKSk7cmV0dXJuIEouYnVmZmVyRnJvbSh0aGlzLmJ1Zil9O2MucHJvdG90eXBlLnNldEJ1ZmZlcj1mdW5jdGlvbihhKXt0aGlzLmJ1Zj1KLmJ1ZmZlckZyb20oYSk7dGhpcy50b3VjaCgpfTtjLnByb3RvdHlwZS5nZXRTaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVmP3RoaXMuYnVmLmxlbmd0aDowfTtjLnByb3RvdHlwZS5zZXRNb2RlUHJvcGVydHk9ZnVuY3Rpb24oYSl7dGhpcy5tb2RlPXRoaXMubW9kZSZ+ZHxhfTtjLnByb3RvdHlwZS5zZXRJc0ZpbGU9ZnVuY3Rpb24oKXt0aGlzLnNldE1vZGVQcm9wZXJ0eShmKX07Yy5wcm90b3R5cGUuc2V0SXNEaXJlY3Rvcnk9ZnVuY3Rpb24oKXt0aGlzLnNldE1vZGVQcm9wZXJ0eShlKX07Yy5wcm90b3R5cGUuc2V0SXNTeW1saW5rPQpmdW5jdGlvbigpe3RoaXMuc2V0TW9kZVByb3BlcnR5KGcpfTtjLnByb3RvdHlwZS5pc0ZpbGU9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJmQpPT09Zn07Yy5wcm90b3R5cGUuaXNEaXJlY3Rvcnk9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJmQpPT09ZX07Yy5wcm90b3R5cGUuaXNTeW1saW5rPWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMubW9kZSZkKT09PWd9O2MucHJvdG90eXBlLm1ha2VTeW1saW5rPWZ1bmN0aW9uKGEpe3RoaXMuc3ltbGluaz1hO3RoaXMuc2V0SXNTeW1saW5rKCl9O2MucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGEsYyxiLGQpe3ZvaWQgMD09PWMmJihjPTApO3ZvaWQgMD09PWImJihiPWEubGVuZ3RoKTt2b2lkIDA9PT1kJiYoZD0wKTt0aGlzLmJ1Znx8KHRoaXMuYnVmPUouYnVmZmVyQWxsb2NVbnNhZmUoMCkpO2lmKGQrYj50aGlzLmJ1Zi5sZW5ndGgpe3ZhciBlPUouYnVmZmVyQWxsb2NVbnNhZmUoZCtiKTt0aGlzLmJ1Zi5jb3B5KGUsMCwwLHRoaXMuYnVmLmxlbmd0aCk7CnRoaXMuYnVmPWV9YS5jb3B5KHRoaXMuYnVmLGQsYyxjK2IpO3RoaXMudG91Y2goKTtyZXR1cm4gYn07Yy5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihhLGMsYixkKXt2b2lkIDA9PT1jJiYoYz0wKTt2b2lkIDA9PT1iJiYoYj1hLmJ5dGVMZW5ndGgpO3ZvaWQgMD09PWQmJihkPTApO3RoaXMuYnVmfHwodGhpcy5idWY9Si5idWZmZXJBbGxvY1Vuc2FmZSgwKSk7Yj5hLmJ5dGVMZW5ndGgmJihiPWEuYnl0ZUxlbmd0aCk7YitkPnRoaXMuYnVmLmxlbmd0aCYmKGI9dGhpcy5idWYubGVuZ3RoLWQpO3RoaXMuYnVmLmNvcHkoYSxjLGQsZCtiKTtyZXR1cm4gYn07Yy5wcm90b3R5cGUudHJ1bmNhdGU9ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGE9MCk7aWYoYSlpZih0aGlzLmJ1Znx8KHRoaXMuYnVmPUouYnVmZmVyQWxsb2NVbnNhZmUoMCkpLGE8PXRoaXMuYnVmLmxlbmd0aCl0aGlzLmJ1Zj10aGlzLmJ1Zi5zbGljZSgwLGEpO2Vsc2V7dmFyIGM9Si5idWZmZXJBbGxvY1Vuc2FmZSgwKTt0aGlzLmJ1Zi5jb3B5KGMpOwpjLmZpbGwoMCxhKX1lbHNlIHRoaXMuYnVmPUouYnVmZmVyQWxsb2NVbnNhZmUoMCk7dGhpcy50b3VjaCgpfTtjLnByb3RvdHlwZS5jaG1vZD1mdW5jdGlvbihhKXt0aGlzLnBlcm09YTt0aGlzLm1vZGU9dGhpcy5tb2RlJi01MTJ8YTt0aGlzLnRvdWNoKCl9O2MucHJvdG90eXBlLmNob3duPWZ1bmN0aW9uKGEsYyl7dGhpcy51aWQ9YTt0aGlzLmdpZD1jO3RoaXMudG91Y2goKX07Yy5wcm90b3R5cGUudG91Y2g9ZnVuY3Rpb24oKXt0aGlzLm10aW1lPW5ldyBEYXRlO3RoaXMuZW1pdCgiY2hhbmdlIix0aGlzKX07Yy5wcm90b3R5cGUuY2FuUmVhZD1mdW5jdGlvbihhLGMpe3ZvaWQgMD09PWEmJihhPVkuZGVmYXVsdC5nZXR1aWQoKSk7dm9pZCAwPT09YyYmKGM9WS5kZWZhdWx0LmdldGdpZCgpKTtyZXR1cm4gdGhpcy5wZXJtJjR8fGM9PT10aGlzLmdpZCYmdGhpcy5wZXJtJjMyfHxhPT09dGhpcy51aWQmJnRoaXMucGVybSYyNTY/ITA6ITF9O2MucHJvdG90eXBlLmNhbldyaXRlPWZ1bmN0aW9uKGEsCmMpe3ZvaWQgMD09PWEmJihhPVkuZGVmYXVsdC5nZXR1aWQoKSk7dm9pZCAwPT09YyYmKGM9WS5kZWZhdWx0LmdldGdpZCgpKTtyZXR1cm4gdGhpcy5wZXJtJjJ8fGM9PT10aGlzLmdpZCYmdGhpcy5wZXJtJjE2fHxhPT09dGhpcy51aWQmJnRoaXMucGVybSYxMjg/ITA6ITF9O2MucHJvdG90eXBlLmRlbD1mdW5jdGlvbigpe3RoaXMuZW1pdCgiZGVsZXRlIix0aGlzKX07Yy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue2lubzp0aGlzLmlubyx1aWQ6dGhpcy51aWQsZ2lkOnRoaXMuZ2lkLGF0aW1lOnRoaXMuYXRpbWUuZ2V0VGltZSgpLG10aW1lOnRoaXMubXRpbWUuZ2V0VGltZSgpLGN0aW1lOnRoaXMuY3RpbWUuZ2V0VGltZSgpLHBlcm06dGhpcy5wZXJtLG1vZGU6dGhpcy5tb2RlLG5saW5rOnRoaXMubmxpbmssc3ltbGluazp0aGlzLnN5bWxpbmssZGF0YTp0aGlzLmdldFN0cmluZygpfX07cmV0dXJuIGN9KHguRXZlbnRFbWl0dGVyKTthLk5vZGU9YztjPWZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGQoYSwKYixkKXt2YXIgZT1jLmNhbGwodGhpcyl8fHRoaXM7ZS5jaGlsZHJlbj17fTtlLnN0ZXBzPVtdO2UuaW5vPTA7ZS5sZW5ndGg9MDtlLnZvbD1hO2UucGFyZW50PWI7ZS5zdGVwcz1iP2Iuc3RlcHMuY29uY2F0KFtkXSk6W2RdO3JldHVybiBlfWIoZCxjKTtkLnByb3RvdHlwZS5zZXROb2RlPWZ1bmN0aW9uKGEpe3RoaXMubm9kZT1hO3RoaXMuaW5vPWEuaW5vfTtkLnByb3RvdHlwZS5nZXROb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZX07ZC5wcm90b3R5cGUuY3JlYXRlQ2hpbGQ9ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoYz10aGlzLnZvbC5jcmVhdGVOb2RlKCkpO3ZhciBiPW5ldyBkKHRoaXMudm9sLHRoaXMsYSk7Yi5zZXROb2RlKGMpO2MuaXNEaXJlY3RvcnkoKTt0aGlzLnNldENoaWxkKGEsYik7cmV0dXJuIGJ9O2QucHJvdG90eXBlLnNldENoaWxkPWZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YyYmKGM9bmV3IGQodGhpcy52b2wsdGhpcyxhKSk7dGhpcy5jaGlsZHJlblthXT0KYztjLnBhcmVudD10aGlzO3RoaXMubGVuZ3RoKys7dGhpcy5lbWl0KCJjaGlsZDphZGQiLGMsdGhpcyk7cmV0dXJuIGN9O2QucHJvdG90eXBlLmRlbGV0ZUNoaWxkPWZ1bmN0aW9uKGEpe2RlbGV0ZSB0aGlzLmNoaWxkcmVuW2EuZ2V0TmFtZSgpXTt0aGlzLmxlbmd0aC0tO3RoaXMuZW1pdCgiY2hpbGQ6ZGVsZXRlIixhLHRoaXMpfTtkLnByb3RvdHlwZS5nZXRDaGlsZD1mdW5jdGlvbihhKXtpZihPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNoaWxkcmVuLGEpKXJldHVybiB0aGlzLmNoaWxkcmVuW2FdfTtkLnByb3RvdHlwZS5nZXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RlcHMuam9pbihhLlNFUCl9O2QucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGVwc1t0aGlzLnN0ZXBzLmxlbmd0aC0xXX07ZC5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbihhLGMsYil7dm9pZCAwPT09YyYmKGM9YS5sZW5ndGgpO3ZvaWQgMD09PWImJihiPTApOwppZihiPj1hLmxlbmd0aHx8Yj49YylyZXR1cm4gdGhpczt2YXIgZD10aGlzLmdldENoaWxkKGFbYl0pO3JldHVybiBkP2Qud2FsayhhLGMsYisxKTpudWxsfTtkLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57c3RlcHM6dGhpcy5zdGVwcyxpbm86dGhpcy5pbm8sY2hpbGRyZW46T2JqZWN0LmtleXModGhpcy5jaGlsZHJlbil9fTtyZXR1cm4gZH0oeC5FdmVudEVtaXR0ZXIpO2EuTGluaz1jO2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYyxiLGQpe3RoaXMucG9zaXRpb249MDt0aGlzLmxpbms9YTt0aGlzLm5vZGU9Yzt0aGlzLmZsYWdzPWI7dGhpcy5mZD1kfWEucHJvdG90eXBlLmdldFN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuZ2V0U3RyaW5nKCl9O2EucHJvdG90eXBlLnNldFN0cmluZz1mdW5jdGlvbihhKXt0aGlzLm5vZGUuc2V0U3RyaW5nKGEpfTthLnByb3RvdHlwZS5nZXRCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldEJ1ZmZlcigpfTsKYS5wcm90b3R5cGUuc2V0QnVmZmVyPWZ1bmN0aW9uKGEpe3RoaXMubm9kZS5zZXRCdWZmZXIoYSl9O2EucHJvdG90eXBlLmdldFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldFNpemUoKX07YS5wcm90b3R5cGUudHJ1bmNhdGU9ZnVuY3Rpb24oYSl7dGhpcy5ub2RlLnRydW5jYXRlKGEpfTthLnByb3RvdHlwZS5zZWVrVG89ZnVuY3Rpb24oYSl7dGhpcy5wb3NpdGlvbj1hfTthLnByb3RvdHlwZS5zdGF0cz1mdW5jdGlvbigpe3JldHVybiBlYi5kZWZhdWx0LmJ1aWxkKHRoaXMubm9kZSl9O2EucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGEsYyxiLGQpe3ZvaWQgMD09PWMmJihjPTApO3ZvaWQgMD09PWImJihiPWEubGVuZ3RoKTsibnVtYmVyIiE9PXR5cGVvZiBkJiYoZD10aGlzLnBvc2l0aW9uKTt0aGlzLmZsYWdzJmgmJihkPXRoaXMuZ2V0U2l6ZSgpKTthPXRoaXMubm9kZS53cml0ZShhLGMsYixkKTt0aGlzLnBvc2l0aW9uPWQrYTtyZXR1cm4gYX07YS5wcm90b3R5cGUucmVhZD0KZnVuY3Rpb24oYSxjLGIsZCl7dm9pZCAwPT09YyYmKGM9MCk7dm9pZCAwPT09YiYmKGI9YS5ieXRlTGVuZ3RoKTsibnVtYmVyIiE9PXR5cGVvZiBkJiYoZD10aGlzLnBvc2l0aW9uKTthPXRoaXMubm9kZS5yZWFkKGEsYyxiLGQpO3RoaXMucG9zaXRpb249ZCthO3JldHVybiBhfTthLnByb3RvdHlwZS5jaG1vZD1mdW5jdGlvbihhKXt0aGlzLm5vZGUuY2htb2QoYSl9O2EucHJvdG90eXBlLmNob3duPWZ1bmN0aW9uKGEsYyl7dGhpcy5ub2RlLmNob3duKGEsYyl9O3JldHVybiBhfSgpO2EuRmlsZT1jfSk7USh5Yik7dmFyIFdnPXliLk5vZGUsbWY9SyhmdW5jdGlvbihjLGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTthLmRlZmF1bHQ9ZnVuY3Rpb24oYSxjLGUpe3ZhciBiPXNldFRpbWVvdXQuYXBwbHkobnVsbCxhcmd1bWVudHMpO2ImJiJvYmplY3QiPT09dHlwZW9mIGImJiJmdW5jdGlvbiI9PT10eXBlb2YgYi51bnJlZiYmYi51bnJlZigpOwpyZXR1cm4gYn19KTtRKG1mKTtMYS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihjKXtjPXtkYXRhOmMsbmV4dDpudWxsfTswPHRoaXMubGVuZ3RoP3RoaXMudGFpbC5uZXh0PWM6dGhpcy5oZWFkPWM7dGhpcy50YWlsPWM7Kyt0aGlzLmxlbmd0aH07TGEucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24oYyl7Yz17ZGF0YTpjLG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9Yyk7dGhpcy5oZWFkPWM7Kyt0aGlzLmxlbmd0aH07TGEucHJvdG90eXBlLnNoaWZ0PWZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgYz10aGlzLmhlYWQuZGF0YTt0aGlzLmhlYWQ9MT09PXRoaXMubGVuZ3RoP3RoaXMudGFpbD1udWxsOnRoaXMuaGVhZC5uZXh0Oy0tdGhpcy5sZW5ndGg7cmV0dXJuIGN9fTtMYS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGw7dGhpcy5sZW5ndGg9MH07TGEucHJvdG90eXBlLmpvaW49ZnVuY3Rpb24oYyl7aWYoMD09PQp0aGlzLmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIGE9dGhpcy5oZWFkLGI9IiIrYS5kYXRhO2E9YS5uZXh0OyliKz1jK2EuZGF0YTtyZXR1cm4gYn07TGEucHJvdG90eXBlLmNvbmNhdD1mdW5jdGlvbihjKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIGwuYWxsb2MoMCk7aWYoMT09PXRoaXMubGVuZ3RoKXJldHVybiB0aGlzLmhlYWQuZGF0YTtjPWwuYWxsb2NVbnNhZmUoYz4+PjApO2Zvcih2YXIgYT10aGlzLmhlYWQsYj0wO2E7KWEuZGF0YS5jb3B5KGMsYiksYis9YS5kYXRhLmxlbmd0aCxhPWEubmV4dDtyZXR1cm4gY307dmFyIGRnPWwuaXNFbmNvZGluZ3x8ZnVuY3Rpb24oYyl7c3dpdGNoKGMmJmMudG9Mb3dlckNhc2UoKSl7Y2FzZSAiaGV4IjpjYXNlICJ1dGY4IjpjYXNlICJ1dGYtOCI6Y2FzZSAiYXNjaWkiOmNhc2UgImJpbmFyeSI6Y2FzZSAiYmFzZTY0IjpjYXNlICJ1Y3MyIjpjYXNlICJ1Y3MtMiI6Y2FzZSAidXRmMTZsZSI6Y2FzZSAidXRmLTE2bGUiOmNhc2UgInJhdyI6cmV0dXJuITA7CmRlZmF1bHQ6cmV0dXJuITF9fTtyYi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oYyl7Zm9yKHZhciBhPSIiO3RoaXMuY2hhckxlbmd0aDspe2E9Yy5sZW5ndGg+PXRoaXMuY2hhckxlbmd0aC10aGlzLmNoYXJSZWNlaXZlZD90aGlzLmNoYXJMZW5ndGgtdGhpcy5jaGFyUmVjZWl2ZWQ6Yy5sZW5ndGg7Yy5jb3B5KHRoaXMuY2hhckJ1ZmZlcix0aGlzLmNoYXJSZWNlaXZlZCwwLGEpO3RoaXMuY2hhclJlY2VpdmVkKz1hO2lmKHRoaXMuY2hhclJlY2VpdmVkPHRoaXMuY2hhckxlbmd0aClyZXR1cm4iIjtjPWMuc2xpY2UoYSxjLmxlbmd0aCk7YT10aGlzLmNoYXJCdWZmZXIuc2xpY2UoMCx0aGlzLmNoYXJMZW5ndGgpLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO3ZhciBiPWEuY2hhckNvZGVBdChhLmxlbmd0aC0xKTtpZig1NTI5Njw9YiYmNTYzMTk+PWIpdGhpcy5jaGFyTGVuZ3RoKz10aGlzLnN1cnJvZ2F0ZVNpemUsYT0iIjtlbHNle3RoaXMuY2hhclJlY2VpdmVkPXRoaXMuY2hhckxlbmd0aD0KMDtpZigwPT09Yy5sZW5ndGgpcmV0dXJuIGE7YnJlYWt9fXRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIoYyk7dmFyIGQ9Yy5sZW5ndGg7dGhpcy5jaGFyTGVuZ3RoJiYoYy5jb3B5KHRoaXMuY2hhckJ1ZmZlciwwLGMubGVuZ3RoLXRoaXMuY2hhclJlY2VpdmVkLGQpLGQtPXRoaXMuY2hhclJlY2VpdmVkKTthKz1jLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCxkKTtkPWEubGVuZ3RoLTE7Yj1hLmNoYXJDb2RlQXQoZCk7cmV0dXJuIDU1Mjk2PD1iJiY1NjMxOT49Yj8oYj10aGlzLnN1cnJvZ2F0ZVNpemUsdGhpcy5jaGFyTGVuZ3RoKz1iLHRoaXMuY2hhclJlY2VpdmVkKz1iLHRoaXMuY2hhckJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlcixiLDAsYiksYy5jb3B5KHRoaXMuY2hhckJ1ZmZlciwwLDAsYiksYS5zdWJzdHJpbmcoMCxkKSk6YX07cmIucHJvdG90eXBlLmRldGVjdEluY29tcGxldGVDaGFyPWZ1bmN0aW9uKGMpe2Zvcih2YXIgYT0zPD1jLmxlbmd0aD8zOmMubGVuZ3RoOzA8CmE7YS0tKXt2YXIgYj1jW2MubGVuZ3RoLWFdO2lmKDE9PWEmJjY9PWI+PjUpe3RoaXMuY2hhckxlbmd0aD0yO2JyZWFrfWlmKDI+PWEmJjE0PT1iPj40KXt0aGlzLmNoYXJMZW5ndGg9MzticmVha31pZigzPj1hJiYzMD09Yj4+Myl7dGhpcy5jaGFyTGVuZ3RoPTQ7YnJlYWt9fXRoaXMuY2hhclJlY2VpdmVkPWF9O3JiLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oYyl7dmFyIGE9IiI7YyYmYy5sZW5ndGgmJihhPXRoaXMud3JpdGUoYykpO3RoaXMuY2hhclJlY2VpdmVkJiYoYz10aGlzLmVuY29kaW5nLGErPXRoaXMuY2hhckJ1ZmZlci5zbGljZSgwLHRoaXMuY2hhclJlY2VpdmVkKS50b1N0cmluZyhjKSk7cmV0dXJuIGF9O3kuUmVhZGFibGVTdGF0ZT1xZTt2YXIgej1TZCgic3RyZWFtIik7emEoeSx4KTt5LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGMsYSl7dmFyIGI9dGhpcy5fcmVhZGFibGVTdGF0ZTtiLm9iamVjdE1vZGV8fCJzdHJpbmciIT09dHlwZW9mIGN8fChhPWF8fGIuZGVmYXVsdEVuY29kaW5nLAphIT09Yi5lbmNvZGluZyYmKGM9bC5mcm9tKGMsYSksYT0iIikpO3JldHVybiByZSh0aGlzLGIsYyxhLCExKX07eS5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbihjKXtyZXR1cm4gcmUodGhpcyx0aGlzLl9yZWFkYWJsZVN0YXRlLGMsIiIsITApfTt5LnByb3RvdHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfTt5LnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihjKXt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9bmV3IHJiKGMpO3RoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc9YztyZXR1cm4gdGhpc307eS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihjKXt6KCJyZWFkIixjKTtjPXBhcnNlSW50KGMsMTApO3ZhciBhPXRoaXMuX3JlYWRhYmxlU3RhdGUsYj1jOzAhPT1jJiYoYS5lbWl0dGVkUmVhZGFibGU9ITEpO2lmKDA9PT1jJiZhLm5lZWRSZWFkYWJsZSYmKGEubGVuZ3RoPj1hLmhpZ2hXYXRlck1hcmt8fAphLmVuZGVkKSlyZXR1cm4geigicmVhZDogZW1pdFJlYWRhYmxlIixhLmxlbmd0aCxhLmVuZGVkKSwwPT09YS5sZW5ndGgmJmEuZW5kZWQ/SmModGhpcyk6UWIodGhpcyksbnVsbDtjPXNlKGMsYSk7aWYoMD09PWMmJmEuZW5kZWQpcmV0dXJuIDA9PT1hLmxlbmd0aCYmSmModGhpcyksbnVsbDt2YXIgZD1hLm5lZWRSZWFkYWJsZTt6KCJuZWVkIHJlYWRhYmxlIixkKTtpZigwPT09YS5sZW5ndGh8fGEubGVuZ3RoLWM8YS5oaWdoV2F0ZXJNYXJrKWQ9ITAseigibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsiLGQpO2EuZW5kZWR8fGEucmVhZGluZz96KCJyZWFkaW5nIG9yIGVuZGVkIiwhMSk6ZCYmKHooImRvIHJlYWQiKSxhLnJlYWRpbmc9ITAsYS5zeW5jPSEwLDA9PT1hLmxlbmd0aCYmKGEubmVlZFJlYWRhYmxlPSEwKSx0aGlzLl9yZWFkKGEuaGlnaFdhdGVyTWFyayksYS5zeW5jPSExLGEucmVhZGluZ3x8KGM9c2UoYixhKSkpO2Q9MDxjP3VlKGMsYSk6bnVsbDtudWxsPT09ZD8oYS5uZWVkUmVhZGFibGU9CiEwLGM9MCk6YS5sZW5ndGgtPWM7MD09PWEubGVuZ3RoJiYoYS5lbmRlZHx8KGEubmVlZFJlYWRhYmxlPSEwKSxiIT09YyYmYS5lbmRlZCYmSmModGhpcykpO251bGwhPT1kJiZ0aGlzLmVtaXQoImRhdGEiLGQpO3JldHVybiBkfTt5LnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbigpe3RoaXMuZW1pdCgiZXJyb3IiLEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKSl9O3kucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oYyxhKXtmdW5jdGlvbiBiKGEpe3ooIm9udW5waXBlIik7YT09PXEmJmUoKX1mdW5jdGlvbiBkKCl7eigib25lbmQiKTtjLmVuZCgpfWZ1bmN0aW9uIGUoKXt6KCJjbGVhbnVwIik7Yy5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGgpO2MucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsayk7Yy5yZW1vdmVMaXN0ZW5lcigiZHJhaW4iLHIpO2MucmVtb3ZlTGlzdGVuZXIoImVycm9yIixnKTtjLnJlbW92ZUxpc3RlbmVyKCJ1bnBpcGUiLGIpO3EucmVtb3ZlTGlzdGVuZXIoImVuZCIsZCk7cS5yZW1vdmVMaXN0ZW5lcigiZW5kIiwKZSk7cS5yZW1vdmVMaXN0ZW5lcigiZGF0YSIsZik7bT0hMDshbC5hd2FpdERyYWlufHxjLl93cml0YWJsZVN0YXRlJiYhYy5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW58fHIoKX1mdW5jdGlvbiBmKGEpe3ooIm9uZGF0YSIpO3A9ITE7ITEhPT1jLndyaXRlKGEpfHxwfHwoKDE9PT1sLnBpcGVzQ291bnQmJmwucGlwZXM9PT1jfHwxPGwucGlwZXNDb3VudCYmLTEhPT12ZShsLnBpcGVzLGMpKSYmIW0mJih6KCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UiLHEuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbikscS5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKysscD0hMCkscS5wYXVzZSgpKX1mdW5jdGlvbiBnKGEpe3ooIm9uZXJyb3IiLGEpO3QoKTtjLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsZyk7MD09PWMubGlzdGVuZXJzKCJlcnJvciIpLmxlbmd0aCYmYy5lbWl0KCJlcnJvciIsYSl9ZnVuY3Rpb24gaCgpe2MucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsayk7dCgpfWZ1bmN0aW9uIGsoKXt6KCJvbmZpbmlzaCIpOwpjLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsaCk7dCgpfWZ1bmN0aW9uIHQoKXt6KCJ1bnBpcGUiKTtxLnVucGlwZShjKX12YXIgcT10aGlzLGw9dGhpcy5fcmVhZGFibGVTdGF0ZTtzd2l0Y2gobC5waXBlc0NvdW50KXtjYXNlIDA6bC5waXBlcz1jO2JyZWFrO2Nhc2UgMTpsLnBpcGVzPVtsLnBpcGVzLGNdO2JyZWFrO2RlZmF1bHQ6bC5waXBlcy5wdXNoKGMpfWwucGlwZXNDb3VudCs9MTt6KCJwaXBlIGNvdW50PSVkIG9wdHM9JWoiLGwucGlwZXNDb3VudCxhKTthPWEmJiExPT09YS5lbmQ/ZTpkO2lmKGwuZW5kRW1pdHRlZClYKGEpO2Vsc2UgcS5vbmNlKCJlbmQiLGEpO2Mub24oInVucGlwZSIsYik7dmFyIHI9amcocSk7Yy5vbigiZHJhaW4iLHIpO3ZhciBtPSExLHA9ITE7cS5vbigiZGF0YSIsZik7aGcoYywiZXJyb3IiLGcpO2Mub25jZSgiY2xvc2UiLGgpO2Mub25jZSgiZmluaXNoIixrKTtjLmVtaXQoInBpcGUiLHEpO2wuZmxvd2luZ3x8KHooInBpcGUgcmVzdW1lIikscS5yZXN1bWUoKSk7CnJldHVybiBjfTt5LnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24oYyl7dmFyIGE9dGhpcy5fcmVhZGFibGVTdGF0ZTtpZigwPT09YS5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1hLnBpcGVzQ291bnQpe2lmKGMmJmMhPT1hLnBpcGVzKXJldHVybiB0aGlzO2N8fChjPWEucGlwZXMpO2EucGlwZXM9bnVsbDthLnBpcGVzQ291bnQ9MDthLmZsb3dpbmc9ITE7YyYmYy5lbWl0KCJ1bnBpcGUiLHRoaXMpO3JldHVybiB0aGlzfWlmKCFjKXtjPWEucGlwZXM7dmFyIGI9YS5waXBlc0NvdW50O2EucGlwZXM9bnVsbDthLnBpcGVzQ291bnQ9MDthLmZsb3dpbmc9ITE7Zm9yKGE9MDthPGI7YSsrKWNbYV0uZW1pdCgidW5waXBlIix0aGlzKTtyZXR1cm4gdGhpc31iPXZlKGEucGlwZXMsYyk7aWYoLTE9PT1iKXJldHVybiB0aGlzO2EucGlwZXMuc3BsaWNlKGIsMSk7LS1hLnBpcGVzQ291bnQ7MT09PWEucGlwZXNDb3VudCYmKGEucGlwZXM9YS5waXBlc1swXSk7Yy5lbWl0KCJ1bnBpcGUiLAp0aGlzKTtyZXR1cm4gdGhpc307eS5wcm90b3R5cGUub249ZnVuY3Rpb24oYyxhKXthPXgucHJvdG90eXBlLm9uLmNhbGwodGhpcyxjLGEpOyJkYXRhIj09PWM/ITEhPT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcmJnRoaXMucmVzdW1lKCk6InJlYWRhYmxlIj09PWMmJihjPXRoaXMuX3JlYWRhYmxlU3RhdGUsYy5lbmRFbWl0dGVkfHxjLnJlYWRhYmxlTGlzdGVuaW5nfHwoYy5yZWFkYWJsZUxpc3RlbmluZz1jLm5lZWRSZWFkYWJsZT0hMCxjLmVtaXR0ZWRSZWFkYWJsZT0hMSxjLnJlYWRpbmc/Yy5sZW5ndGgmJlFiKHRoaXMpOlgoa2csdGhpcykpKTtyZXR1cm4gYX07eS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9eS5wcm90b3R5cGUub247eS5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5fcmVhZGFibGVTdGF0ZTtjLmZsb3dpbmd8fCh6KCJyZXN1bWUiKSxjLmZsb3dpbmc9ITAsYy5yZXN1bWVTY2hlZHVsZWR8fChjLnJlc3VtZVNjaGVkdWxlZD0hMCxYKGxnLAp0aGlzLGMpKSk7cmV0dXJuIHRoaXN9O3kucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7eigiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpOyExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoeigicGF1c2UiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKTtyZXR1cm4gdGhpc307eS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbihjKXt2YXIgYT10aGlzLl9yZWFkYWJsZVN0YXRlLGI9ITEsZD10aGlzO2Mub24oImVuZCIsZnVuY3Rpb24oKXt6KCJ3cmFwcGVkIGVuZCIpO2lmKGEuZGVjb2RlciYmIWEuZW5kZWQpe3ZhciBjPWEuZGVjb2Rlci5lbmQoKTtjJiZjLmxlbmd0aCYmZC5wdXNoKGMpfWQucHVzaChudWxsKX0pO2Mub24oImRhdGEiLGZ1bmN0aW9uKGUpe3ooIndyYXBwZWQgZGF0YSIpO2EuZGVjb2RlciYmKGU9YS5kZWNvZGVyLndyaXRlKGUpKTthLm9iamVjdE1vZGUmJihudWxsPT09CmV8fHZvaWQgMD09PWUpfHwhKGEub2JqZWN0TW9kZXx8ZSYmZS5sZW5ndGgpfHxkLnB1c2goZSl8fChiPSEwLGMucGF1c2UoKSl9KTtmb3IodmFyIGUgaW4gYyl2b2lkIDA9PT10aGlzW2VdJiYiZnVuY3Rpb24iPT09dHlwZW9mIGNbZV0mJih0aGlzW2VdPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBjW2FdLmFwcGx5KGMsYXJndW1lbnRzKX19KGUpKTtuZyhbImVycm9yIiwiY2xvc2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1bWUiXSxmdW5jdGlvbihhKXtjLm9uKGEsZC5lbWl0LmJpbmQoZCxhKSl9KTtkLl9yZWFkPWZ1bmN0aW9uKGEpe3ooIndyYXBwZWQgX3JlYWQiLGEpO2ImJihiPSExLGMucmVzdW1lKCkpfTtyZXR1cm4gZH07eS5fZnJvbUxpc3Q9dWU7TC5Xcml0YWJsZVN0YXRlPUtjO3phKEwseCk7S2MucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgYz10aGlzLmJ1ZmZlcmVkUmVxdWVzdCxhPVtdO2M7KWEucHVzaChjKSxjPWMubmV4dDsKcmV0dXJuIGF9O0wucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXt0aGlzLmVtaXQoImVycm9yIixFcnJvcigiQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZSIpKX07TC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oYyxhLGIpe3ZhciBkPXRoaXMuX3dyaXRhYmxlU3RhdGUsZT0hMTsiZnVuY3Rpb24iPT09dHlwZW9mIGEmJihiPWEsYT1udWxsKTtsLmlzQnVmZmVyKGMpP2E9ImJ1ZmZlciI6YXx8KGE9ZC5kZWZhdWx0RW5jb2RpbmcpOyJmdW5jdGlvbiIhPT10eXBlb2YgYiYmKGI9b2cpO2lmKGQuZW5kZWQpZD1iLGM9RXJyb3IoIndyaXRlIGFmdGVyIGVuZCIpLHRoaXMuZW1pdCgiZXJyb3IiLGMpLFgoZCxjKTtlbHNle3ZhciBmPWIsZz0hMCxoPSExO251bGw9PT1jP2g9bmV3IFR5cGVFcnJvcigiTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0iKTpsLmlzQnVmZmVyKGMpfHwic3RyaW5nIj09PXR5cGVvZiBjfHx2b2lkIDA9PT1jfHxkLm9iamVjdE1vZGV8fChoPW5ldyBUeXBlRXJyb3IoIkludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsiKSk7CmgmJih0aGlzLmVtaXQoImVycm9yIixoKSxYKGYsaCksZz0hMSk7ZyYmKGQucGVuZGluZ2NiKyssZT1hLGQub2JqZWN0TW9kZXx8ITE9PT1kLmRlY29kZVN0cmluZ3N8fCJzdHJpbmciIT09dHlwZW9mIGN8fChjPWwuZnJvbShjLGUpKSxsLmlzQnVmZmVyKGMpJiYoZT0iYnVmZmVyIiksZj1kLm9iamVjdE1vZGU/MTpjLmxlbmd0aCxkLmxlbmd0aCs9ZixhPWQubGVuZ3RoPGQuaGlnaFdhdGVyTWFyayxhfHwoZC5uZWVkRHJhaW49ITApLGQud3JpdGluZ3x8ZC5jb3JrZWQ/KGY9ZC5sYXN0QnVmZmVyZWRSZXF1ZXN0LGQubGFzdEJ1ZmZlcmVkUmVxdWVzdD1uZXcgcGcoYyxlLGIpLGY/Zi5uZXh0PWQubGFzdEJ1ZmZlcmVkUmVxdWVzdDpkLmJ1ZmZlcmVkUmVxdWVzdD1kLmxhc3RCdWZmZXJlZFJlcXVlc3QsZC5idWZmZXJlZFJlcXVlc3RDb3VudCs9MSk6TGModGhpcyxkLCExLGYsYyxlLGIpLGU9YSl9cmV0dXJuIGV9O0wucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrfTsKTC5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5fd3JpdGFibGVTdGF0ZTtjLmNvcmtlZCYmKGMuY29ya2VkLS0sYy53cml0aW5nfHxjLmNvcmtlZHx8Yy5maW5pc2hlZHx8Yy5idWZmZXJQcm9jZXNzaW5nfHwhYy5idWZmZXJlZFJlcXVlc3R8fHhlKHRoaXMsYykpfTtMLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24oYyl7InN0cmluZyI9PT10eXBlb2YgYyYmKGM9Yy50b0xvd2VyQ2FzZSgpKTtpZighKC0xPCJoZXggdXRmOCB1dGYtOCBhc2NpaSBiaW5hcnkgYmFzZTY0IHVjczIgdWNzLTIgdXRmMTZsZSB1dGYtMTZsZSByYXciLnNwbGl0KCIgIikuaW5kZXhPZigoYysiIikudG9Mb3dlckNhc2UoKSkpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrYyk7dGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9YztyZXR1cm4gdGhpc307TC5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGMsYSxiKXtiKEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKSl9OwpMLnByb3RvdHlwZS5fd3JpdGV2PW51bGw7TC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGMsYSxiKXt2YXIgZD10aGlzLl93cml0YWJsZVN0YXRlOyJmdW5jdGlvbiI9PT10eXBlb2YgYz8oYj1jLGE9Yz1udWxsKToiZnVuY3Rpb24iPT09dHlwZW9mIGEmJihiPWEsYT1udWxsKTtudWxsIT09YyYmdm9pZCAwIT09YyYmdGhpcy53cml0ZShjLGEpO2QuY29ya2VkJiYoZC5jb3JrZWQ9MSx0aGlzLnVuY29yaygpKTtpZighZC5lbmRpbmcmJiFkLmZpbmlzaGVkKXtjPWI7ZC5lbmRpbmc9ITA7QWUodGhpcyxkKTtpZihjKWlmKGQuZmluaXNoZWQpWChjKTtlbHNlIHRoaXMub25jZSgiZmluaXNoIixjKTtkLmVuZGVkPSEwO3RoaXMud3JpdGFibGU9ITF9fTt6YShVLHkpO2Zvcih2YXIgbmY9T2JqZWN0LmtleXMoTC5wcm90b3R5cGUpLGFkPTA7YWQ8bmYubGVuZ3RoO2FkKyspe3ZhciBiZD1uZlthZF07VS5wcm90b3R5cGVbYmRdfHwoVS5wcm90b3R5cGVbYmRdPUwucHJvdG90eXBlW2JkXSl9emEoYmEsClUpO2JhLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGMsYSl7dGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybT0hMTtyZXR1cm4gVS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsYyxhKX07YmEucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiTm90IGltcGxlbWVudGVkIik7fTtiYS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGMsYSxiKXt2YXIgZD10aGlzLl90cmFuc2Zvcm1TdGF0ZTtkLndyaXRlY2I9YjtkLndyaXRlY2h1bms9YztkLndyaXRlZW5jb2Rpbmc9YTtkLnRyYW5zZm9ybWluZ3x8KGM9dGhpcy5fcmVhZGFibGVTdGF0ZSwoZC5uZWVkVHJhbnNmb3JtfHxjLm5lZWRSZWFkYWJsZXx8Yy5sZW5ndGg8Yy5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChjLmhpZ2hXYXRlck1hcmspKX07YmEucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbCE9PWMud3JpdGVjaHVuayYmYy53cml0ZWNiJiYKIWMudHJhbnNmb3JtaW5nPyhjLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0oYy53cml0ZWNodW5rLGMud3JpdGVlbmNvZGluZyxjLmFmdGVyVHJhbnNmb3JtKSk6Yy5uZWVkVHJhbnNmb3JtPSEwfTt6YShzYixiYSk7c2IucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oYyxhLGIpe2IobnVsbCxjKX07emEoY2EseCk7Y2EuUmVhZGFibGU9eTtjYS5Xcml0YWJsZT1MO2NhLkR1cGxleD1VO2NhLlRyYW5zZm9ybT1iYTtjYS5QYXNzVGhyb3VnaD1zYjtjYS5TdHJlYW09Y2E7Y2EucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oYyxhKXtmdW5jdGlvbiBiKGEpe2Mud3JpdGFibGUmJiExPT09Yy53cml0ZShhKSYmay5wYXVzZSYmay5wYXVzZSgpfWZ1bmN0aW9uIGQoKXtrLnJlYWRhYmxlJiZrLnJlc3VtZSYmay5yZXN1bWUoKX1mdW5jdGlvbiBlKCl7dHx8KHQ9ITAsYy5lbmQoKSl9ZnVuY3Rpb24gZigpe3R8fCh0PSEwLCJmdW5jdGlvbiI9PT10eXBlb2YgYy5kZXN0cm95JiZjLmRlc3Ryb3koKSl9CmZ1bmN0aW9uIGcoYSl7aCgpO2lmKDA9PT14Lmxpc3RlbmVyQ291bnQodGhpcywiZXJyb3IiKSl0aHJvdyBhO31mdW5jdGlvbiBoKCl7ay5yZW1vdmVMaXN0ZW5lcigiZGF0YSIsYik7Yy5yZW1vdmVMaXN0ZW5lcigiZHJhaW4iLGQpO2sucmVtb3ZlTGlzdGVuZXIoImVuZCIsZSk7ay5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGYpO2sucmVtb3ZlTGlzdGVuZXIoImVycm9yIixnKTtjLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsZyk7ay5yZW1vdmVMaXN0ZW5lcigiZW5kIixoKTtrLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsaCk7Yy5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGgpfXZhciBrPXRoaXM7ay5vbigiZGF0YSIsYik7Yy5vbigiZHJhaW4iLGQpO2MuX2lzU3RkaW98fGEmJiExPT09YS5lbmR8fChrLm9uKCJlbmQiLGUpLGsub24oImNsb3NlIixmKSk7dmFyIHQ9ITE7ay5vbigiZXJyb3IiLGcpO2Mub24oImVycm9yIixnKTtrLm9uKCJlbmQiLGgpO2sub24oImNsb3NlIixoKTtjLm9uKCJjbG9zZSIsCmgpO2MuZW1pdCgicGlwZSIsayk7cmV0dXJuIGN9O3ZhciBYZz1BcnJheS5wcm90b3R5cGUuc2xpY2UsWWc9ZnVuY3Rpb24gZChhLGIpe2Zvcih2YXIgZSBpbiBiKWFbZV09YltlXTtyZXR1cm4gMz5hcmd1bWVudHMubGVuZ3RoP2E6ZC5hcHBseShudWxsLFthXS5jb25jYXQoWGcuY2FsbChhcmd1bWVudHMsMikpKX0sb2Y9SyhmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoYSxiLGQpe3ZvaWQgMD09PWQmJihkPWZ1bmN0aW9uKGEpe3JldHVybiBhfSk7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBmPVtdLGg9MDtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWZbaF09YXJndW1lbnRzW2hdO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihoLGcpe2FbYl0uYmluZChhKS5hcHBseSh2b2lkIDAsZShmLFtmdW5jdGlvbihhLGIpe3JldHVybiBhP2coYSk6aChkKGIpKX1dKSl9KX19dmFyIGU9TiYmTi5fX3NwcmVhZEFycmF5c3x8ZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxiPTAsZD1hcmd1bWVudHMubGVuZ3RoO2I8CmQ7YisrKWErPWFyZ3VtZW50c1tiXS5sZW5ndGg7YT1BcnJheShhKTt2YXIgZT0wO2ZvcihiPTA7YjxkO2IrKylmb3IodmFyIGY9YXJndW1lbnRzW2JdLGw9MCxyPWYubGVuZ3RoO2w8cjtsKyssZSsrKWFbZV09ZltsXTtyZXR1cm4gYX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe3RoaXMudm9sPWE7dGhpcy5mZD1ifWEucHJvdG90eXBlLmFwcGVuZEZpbGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZCh0aGlzLnZvbCwiYXBwZW5kRmlsZSIpKHRoaXMuZmQsYSxiKX07YS5wcm90b3R5cGUuY2htb2Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGQodGhpcy52b2wsImZjaG1vZCIpKHRoaXMuZmQsYSl9O2EucHJvdG90eXBlLmNob3duPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGQodGhpcy52b2wsImZjaG93biIpKHRoaXMuZmQsYSxiKX07YS5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXtyZXR1cm4gZCh0aGlzLnZvbCwKImNsb3NlIikodGhpcy5mZCl9O2EucHJvdG90eXBlLmRhdGFzeW5jPWZ1bmN0aW9uKCl7cmV0dXJuIGQodGhpcy52b2wsImZkYXRhc3luYyIpKHRoaXMuZmQpfTthLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKGEsYixlLGYpe3JldHVybiBkKHRoaXMudm9sLCJyZWFkIixmdW5jdGlvbihiKXtyZXR1cm57Ynl0ZXNSZWFkOmIsYnVmZmVyOmF9fSkodGhpcy5mZCxhLGIsZSxmKX07YS5wcm90b3R5cGUucmVhZEZpbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGQodGhpcy52b2wsInJlYWRGaWxlIikodGhpcy5mZCxhKX07YS5wcm90b3R5cGUuc3RhdD1mdW5jdGlvbihhKXtyZXR1cm4gZCh0aGlzLnZvbCwiZnN0YXQiKSh0aGlzLmZkLGEpfTthLnByb3RvdHlwZS5zeW5jPWZ1bmN0aW9uKCl7cmV0dXJuIGQodGhpcy52b2wsImZzeW5jIikodGhpcy5mZCl9O2EucHJvdG90eXBlLnRydW5jYXRlPWZ1bmN0aW9uKGEpe3JldHVybiBkKHRoaXMudm9sLCJmdHJ1bmNhdGUiKSh0aGlzLmZkLGEpfTthLnByb3RvdHlwZS51dGltZXM9CmZ1bmN0aW9uKGEsYil7cmV0dXJuIGQodGhpcy52b2wsImZ1dGltZXMiKSh0aGlzLmZkLGEsYil9O2EucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGEsYixlLGYpe3JldHVybiBkKHRoaXMudm9sLCJ3cml0ZSIsZnVuY3Rpb24oYil7cmV0dXJue2J5dGVzV3JpdHRlbjpiLGJ1ZmZlcjphfX0pKHRoaXMuZmQsYSxiLGUsZil9O2EucHJvdG90eXBlLndyaXRlRmlsZT1mdW5jdGlvbihhLGIpe3JldHVybiBkKHRoaXMudm9sLCJ3cml0ZUZpbGUiKSh0aGlzLmZkLGEsYil9O3JldHVybiBhfSgpO2IuRmlsZUhhbmRsZT1mO2IuZGVmYXVsdD1mdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIj09PXR5cGVvZiBQcm9taXNlP251bGw6e0ZpbGVIYW5kbGU6ZixhY2Nlc3M6ZnVuY3Rpb24oYixlKXtyZXR1cm4gZChhLCJhY2Nlc3MiKShiLGUpfSxhcHBlbmRGaWxlOmZ1bmN0aW9uKGIsZSxnKXtyZXR1cm4gZChhLCJhcHBlbmRGaWxlIikoYiBpbnN0YW5jZW9mIGY/Yi5mZDpiLGUsZyl9LGNobW9kOmZ1bmN0aW9uKGIsCmUpe3JldHVybiBkKGEsImNobW9kIikoYixlKX0sY2hvd246ZnVuY3Rpb24oYixlLGYpe3JldHVybiBkKGEsImNob3duIikoYixlLGYpfSxjb3B5RmlsZTpmdW5jdGlvbihiLGUsZil7cmV0dXJuIGQoYSwiY29weUZpbGUiKShiLGUsZil9LGxjaG1vZDpmdW5jdGlvbihiLGUpe3JldHVybiBkKGEsImxjaG1vZCIpKGIsZSl9LGxjaG93bjpmdW5jdGlvbihiLGUsZil7cmV0dXJuIGQoYSwibGNob3duIikoYixlLGYpfSxsaW5rOmZ1bmN0aW9uKGIsZSl7cmV0dXJuIGQoYSwibGluayIpKGIsZSl9LGxzdGF0OmZ1bmN0aW9uKGIsZSl7cmV0dXJuIGQoYSwibHN0YXQiKShiLGUpfSxta2RpcjpmdW5jdGlvbihiLGUpe3JldHVybiBkKGEsIm1rZGlyIikoYixlKX0sbWtkdGVtcDpmdW5jdGlvbihiLGUpe3JldHVybiBkKGEsIm1rZHRlbXAiKShiLGUpfSxvcGVuOmZ1bmN0aW9uKGIsZSxnKXtyZXR1cm4gZChhLCJvcGVuIixmdW5jdGlvbihiKXtyZXR1cm4gbmV3IGYoYSxiKX0pKGIsZSxnKX0scmVhZGRpcjpmdW5jdGlvbihiLAplKXtyZXR1cm4gZChhLCJyZWFkZGlyIikoYixlKX0scmVhZEZpbGU6ZnVuY3Rpb24oYixlKXtyZXR1cm4gZChhLCJyZWFkRmlsZSIpKGIgaW5zdGFuY2VvZiBmP2IuZmQ6YixlKX0scmVhZGxpbms6ZnVuY3Rpb24oYixlKXtyZXR1cm4gZChhLCJyZWFkbGluayIpKGIsZSl9LHJlYWxwYXRoOmZ1bmN0aW9uKGIsZSl7cmV0dXJuIGQoYSwicmVhbHBhdGgiKShiLGUpfSxyZW5hbWU6ZnVuY3Rpb24oYixlKXtyZXR1cm4gZChhLCJyZW5hbWUiKShiLGUpfSxybWRpcjpmdW5jdGlvbihiKXtyZXR1cm4gZChhLCJybWRpciIpKGIpfSxzdGF0OmZ1bmN0aW9uKGIsZSl7cmV0dXJuIGQoYSwic3RhdCIpKGIsZSl9LHN5bWxpbms6ZnVuY3Rpb24oYixlLGYpe3JldHVybiBkKGEsInN5bWxpbmsiKShiLGUsZil9LHRydW5jYXRlOmZ1bmN0aW9uKGIsZSl7cmV0dXJuIGQoYSwidHJ1bmNhdGUiKShiLGUpfSx1bmxpbms6ZnVuY3Rpb24oYil7cmV0dXJuIGQoYSwidW5saW5rIikoYil9LHV0aW1lczpmdW5jdGlvbihiLAplLGYpe3JldHVybiBkKGEsInV0aW1lcyIpKGIsZSxmKX0sd3JpdGVGaWxlOmZ1bmN0aW9uKGIsZSxnKXtyZXR1cm4gZChhLCJ3cml0ZUZpbGUiKShiIGluc3RhbmNlb2YgZj9iLmZkOmIsZSxnKX19fX0pO1Eob2YpO3ZhciB3Zz0vW15ceDIwLVx4N0VdLyx1Zz0vW1x4MkVcdTMwMDJcdUZGMEVcdUZGNjFdL2csRGU9e292ZXJmbG93OiJPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcyIsIm5vdC1iYXNpYyI6IklsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCkiLCJpbnZhbGlkLWlucHV0IjoiSW52YWxpZCBpbnB1dCJ9LFphPU1hdGguZmxvb3IsTWM9U3RyaW5nLmZyb21DaGFyQ29kZSxGZT1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfSx5Zz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oYSl7dmFyIGI9W10sZDtmb3IoZCBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLApkKSYmYi5wdXNoKGQpO3JldHVybiBifSxaZz17cGFyc2U6UmIscmVzb2x2ZTpmdW5jdGlvbihhLGIpe3JldHVybiBSYihhLCExLCEwKS5yZXNvbHZlKGIpfSxyZXNvbHZlT2JqZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE/UmIoYSwhMSwhMCkucmVzb2x2ZU9iamVjdChiKTpifSxmb3JtYXQ6ZnVuY3Rpb24oYSl7SmEoYSkmJihhPUhlKHt9LGEpKTtyZXR1cm4gUGMoYSl9LFVybDpkYX0sQWc9L14oW2EtejAtOS4rLV0rOikvaSxFZz0vOlswLTldKiQvLHpnPS9eKFwvXC8/KD8hXC8pW15cP1xzXSopKFw/W15cc10qKT8kLywkZz0ie318XFxeYCIuc3BsaXQoIiIpLmNvbmNhdCgnPD4iYCBcclxuXHQnLnNwbGl0KCIiKSksT2M9WyInIl0uY29uY2F0KCRnKSxKZT1bIiUiLCIvIiwiPyIsIjsiLCIjIl0uY29uY2F0KE9jKSxJZT1bIi8iLCI/IiwiIyJdLENnPTI1NSxMZT0vXlsrYS16MC05QS1aXy1dezAsNjN9JC8sQmc9L14oWythLXowLTlBLVpfLV17MCw2M30pKC4qKSQvLERnPXtqYXZhc2NyaXB0OiEwLAoiamF2YXNjcmlwdDoiOiEwfSxOYz17amF2YXNjcmlwdDohMCwiamF2YXNjcmlwdDoiOiEwfSwkYT17aHR0cDohMCxodHRwczohMCxmdHA6ITAsZ29waGVyOiEwLGZpbGU6ITAsImh0dHA6IjohMCwiaHR0cHM6IjohMCwiZnRwOiI6ITAsImdvcGhlcjoiOiEwLCJmaWxlOiI6ITB9O2RhLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihhLGIsZCl7cmV0dXJuIEhlKHRoaXMsYSxiLGQpfTtkYS5wcm90b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIFBjKHRoaXMpfTtkYS5wcm90b3R5cGUucmVzb2x2ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZXNvbHZlT2JqZWN0KFJiKGEsITEsITApKS5mb3JtYXQoKX07ZGEucHJvdG90eXBlLnJlc29sdmVPYmplY3Q9ZnVuY3Rpb24oYSl7aWYoSmEoYSkpe3ZhciBiPW5ldyBkYTtiLnBhcnNlKGEsITEsITApO2E9Yn1iPW5ldyBkYTtmb3IodmFyIGQ9T2JqZWN0LmtleXModGhpcyksZT0wO2U8ZC5sZW5ndGg7ZSsrKXt2YXIgZj1kW2VdO2JbZl09CnRoaXNbZl19Yi5oYXNoPWEuaGFzaDtpZigiIj09PWEuaHJlZilyZXR1cm4gYi5ocmVmPWIuZm9ybWF0KCksYjtpZihhLnNsYXNoZXMmJiFhLnByb3RvY29sKXtkPU9iamVjdC5rZXlzKGEpO2ZvcihlPTA7ZTxkLmxlbmd0aDtlKyspZj1kW2VdLCJwcm90b2NvbCIhPT1mJiYoYltmXT1hW2ZdKTskYVtiLnByb3RvY29sXSYmYi5ob3N0bmFtZSYmIWIucGF0aG5hbWUmJihiLnBhdGg9Yi5wYXRobmFtZT0iLyIpO2IuaHJlZj1iLmZvcm1hdCgpO3JldHVybiBifXZhciBnO2lmKGEucHJvdG9jb2wmJmEucHJvdG9jb2whPT1iLnByb3RvY29sKXtpZighJGFbYS5wcm90b2NvbF0pe2Q9T2JqZWN0LmtleXMoYSk7Zm9yKGU9MDtlPGQubGVuZ3RoO2UrKylmPWRbZV0sYltmXT1hW2ZdO2IuaHJlZj1iLmZvcm1hdCgpO3JldHVybiBifWIucHJvdG9jb2w9YS5wcm90b2NvbDtpZihhLmhvc3R8fE5jW2EucHJvdG9jb2xdKWIucGF0aG5hbWU9YS5wYXRobmFtZTtlbHNle2ZvcihnPShhLnBhdGhuYW1lfHwKIiIpLnNwbGl0KCIvIik7Zy5sZW5ndGgmJiEoYS5ob3N0PWcuc2hpZnQoKSk7KTthLmhvc3R8fChhLmhvc3Q9IiIpO2EuaG9zdG5hbWV8fChhLmhvc3RuYW1lPSIiKTsiIiE9PWdbMF0mJmcudW5zaGlmdCgiIik7Mj5nLmxlbmd0aCYmZy51bnNoaWZ0KCIiKTtiLnBhdGhuYW1lPWcuam9pbigiLyIpfWIuc2VhcmNoPWEuc2VhcmNoO2IucXVlcnk9YS5xdWVyeTtiLmhvc3Q9YS5ob3N0fHwiIjtiLmF1dGg9YS5hdXRoO2IuaG9zdG5hbWU9YS5ob3N0bmFtZXx8YS5ob3N0O2IucG9ydD1hLnBvcnQ7aWYoYi5wYXRobmFtZXx8Yi5zZWFyY2gpYi5wYXRoPShiLnBhdGhuYW1lfHwiIikrKGIuc2VhcmNofHwiIik7Yi5zbGFzaGVzPWIuc2xhc2hlc3x8YS5zbGFzaGVzO2IuaHJlZj1iLmZvcm1hdCgpO3JldHVybiBifWQ9Yi5wYXRobmFtZSYmIi8iPT09Yi5wYXRobmFtZS5jaGFyQXQoMCk7dmFyIGg9YS5ob3N0fHxhLnBhdGhuYW1lJiYiLyI9PT1hLnBhdGhuYW1lLmNoYXJBdCgwKSxrPWQ9aHx8CmR8fGIuaG9zdCYmYS5wYXRobmFtZTtlPWIucGF0aG5hbWUmJmIucGF0aG5hbWUuc3BsaXQoIi8iKXx8W107Zj1iLnByb3RvY29sJiYhJGFbYi5wcm90b2NvbF07Zz1hLnBhdGhuYW1lJiZhLnBhdGhuYW1lLnNwbGl0KCIvIil8fFtdO2YmJihiLmhvc3RuYW1lPSIiLGIucG9ydD1udWxsLGIuaG9zdCYmKCIiPT09ZVswXT9lWzBdPWIuaG9zdDplLnVuc2hpZnQoYi5ob3N0KSksYi5ob3N0PSIiLGEucHJvdG9jb2wmJihhLmhvc3RuYW1lPW51bGwsYS5wb3J0PW51bGwsYS5ob3N0JiYoIiI9PT1nWzBdP2dbMF09YS5ob3N0OmcudW5zaGlmdChhLmhvc3QpKSxhLmhvc3Q9bnVsbCksZD1kJiYoIiI9PT1nWzBdfHwiIj09PWVbMF0pKTtpZihoKWIuaG9zdD1hLmhvc3R8fCIiPT09YS5ob3N0P2EuaG9zdDpiLmhvc3QsYi5ob3N0bmFtZT1hLmhvc3RuYW1lfHwiIj09PWEuaG9zdG5hbWU/YS5ob3N0bmFtZTpiLmhvc3RuYW1lLGIuc2VhcmNoPWEuc2VhcmNoLGIucXVlcnk9YS5xdWVyeSxlPWc7ZWxzZSBpZihnLmxlbmd0aCllfHwKKGU9W10pLGUucG9wKCksZT1lLmNvbmNhdChnKSxiLnNlYXJjaD1hLnNlYXJjaCxiLnF1ZXJ5PWEucXVlcnk7ZWxzZSBpZihudWxsIT1hLnNlYXJjaCl7ZiYmKGIuaG9zdG5hbWU9Yi5ob3N0PWUuc2hpZnQoKSxmPWIuaG9zdCYmMDxiLmhvc3QuaW5kZXhPZigiQCIpP2IuaG9zdC5zcGxpdCgiQCIpOiExKSYmKGIuYXV0aD1mLnNoaWZ0KCksYi5ob3N0PWIuaG9zdG5hbWU9Zi5zaGlmdCgpKTtiLnNlYXJjaD1hLnNlYXJjaDtiLnF1ZXJ5PWEucXVlcnk7aWYobnVsbCE9PWIucGF0aG5hbWV8fG51bGwhPT1iLnNlYXJjaCliLnBhdGg9KGIucGF0aG5hbWU/Yi5wYXRobmFtZToiIikrKGIuc2VhcmNoP2Iuc2VhcmNoOiIiKTtiLmhyZWY9Yi5mb3JtYXQoKTtyZXR1cm4gYn1pZighZS5sZW5ndGgpcmV0dXJuIGIucGF0aG5hbWU9bnVsbCxiLnBhdGg9Yi5zZWFyY2g/Ii8iK2Iuc2VhcmNoOm51bGwsYi5ocmVmPWIuZm9ybWF0KCksYjtoPWUuc2xpY2UoLTEpWzBdO2c9KGIuaG9zdHx8YS5ob3N0fHwKMTxlLmxlbmd0aCkmJigiLiI9PT1ofHwiLi4iPT09aCl8fCIiPT09aDtmb3IodmFyIGw9MCxxPWUubGVuZ3RoOzA8PXE7cS0tKWg9ZVtxXSwiLiI9PT1oP2Uuc3BsaWNlKHEsMSk6Ii4uIj09PWg/KGUuc3BsaWNlKHEsMSksbCsrKTpsJiYoZS5zcGxpY2UocSwxKSxsLS0pO2lmKCFkJiYhaylmb3IoO2wtLTtsKWUudW5zaGlmdCgiLi4iKTshZHx8IiI9PT1lWzBdfHxlWzBdJiYiLyI9PT1lWzBdLmNoYXJBdCgwKXx8ZS51bnNoaWZ0KCIiKTtnJiYiLyIhPT1lLmpvaW4oIi8iKS5zdWJzdHIoLTEpJiZlLnB1c2goIiIpO2s9IiI9PT1lWzBdfHxlWzBdJiYiLyI9PT1lWzBdLmNoYXJBdCgwKTtmJiYoYi5ob3N0bmFtZT1iLmhvc3Q9az8iIjplLmxlbmd0aD9lLnNoaWZ0KCk6IiIsZj1iLmhvc3QmJjA8Yi5ob3N0LmluZGV4T2YoIkAiKT9iLmhvc3Quc3BsaXQoIkAiKTohMSkmJihiLmF1dGg9Zi5zaGlmdCgpLGIuaG9zdD1iLmhvc3RuYW1lPWYuc2hpZnQoKSk7KGR8fGIuaG9zdCYmZS5sZW5ndGgpJiYKIWsmJmUudW5zaGlmdCgiIik7ZS5sZW5ndGg/Yi5wYXRobmFtZT1lLmpvaW4oIi8iKTooYi5wYXRobmFtZT1udWxsLGIucGF0aD1udWxsKTtpZihudWxsIT09Yi5wYXRobmFtZXx8bnVsbCE9PWIuc2VhcmNoKWIucGF0aD0oYi5wYXRobmFtZT9iLnBhdGhuYW1lOiIiKSsoYi5zZWFyY2g/Yi5zZWFyY2g6IiIpO2IuYXV0aD1hLmF1dGh8fGIuYXV0aDtiLnNsYXNoZXM9Yi5zbGFzaGVzfHxhLnNsYXNoZXM7Yi5ocmVmPWIuZm9ybWF0KCk7cmV0dXJuIGJ9O2RhLnByb3RvdHlwZS5wYXJzZUhvc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gS2UodGhpcyl9O3ZhciBwZj1LKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZChhLGIpe2E9YVtiXTtyZXR1cm4gMDxiJiYoIi8iPT09YXx8ZiYmIlxcIj09PWEpfWZ1bmN0aW9uIGUoYSl7dmFyIGI9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiEwO2lmKGYpe3ZhciBlPWE7aWYoInN0cmluZyIhPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJleHBlY3RlZCBhIHN0cmluZyIpOwplPWUucmVwbGFjZSgvW1xcXC9dKy9nLCIvIik7aWYoITEhPT1iKWlmKGI9ZSxlPWIubGVuZ3RoLTEsMj5lKWU9YjtlbHNle2Zvcig7ZChiLGUpOyllLS07ZT1iLnN1YnN0cigwLGUrMSl9cmV0dXJuIGUucmVwbGFjZSgvXihbYS16QS1aXSs6fFwuXC8pLywiIil9cmV0dXJuIGF9T2JqZWN0LmRlZmluZVByb3BlcnR5KGIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2IudW5peGlmeT1lO2IuY29ycmVjdFBhdGg9ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYS5yZXBsYWNlKC9eXFxcXFw/XFwuOlxcLywiXFwiKSl9O3ZhciBmPSJ3aW4zMiI9PT1WYS5wbGF0Zm9ybX0pO1EocGYpO3ZhciBRYT1LKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZChhLGIpe3ZvaWQgMD09PWImJihiPVkuZGVmYXVsdC5jd2QoKSk7cmV0dXJuIGFoKGIsYSl9ZnVuY3Rpb24gZShhLGIpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYT9bZigpLGFdOltmKGEpLHIoYildfWZ1bmN0aW9uIGYoYSl7dm9pZCAwPT09YSYmKGE9Cnt9KTtyZXR1cm4geGEoe30sdWEsYSl9ZnVuY3Rpb24gZyhhKXtyZXR1cm4ibnVtYmVyIj09PXR5cGVvZiBhP3hhKHt9LGthLHttb2RlOmF9KTp4YSh7fSxrYSxhKX1mdW5jdGlvbiBoKGEsYixkLGUpe3ZvaWQgMD09PWImJihiPSIiKTt2b2lkIDA9PT1kJiYoZD0iIik7dm9pZCAwPT09ZSYmKGU9IiIpO3ZhciB2PSIiO2QmJih2PSIgJyIrZCsiJyIpO2UmJih2Kz0iIC0+ICciK2UrIiciKTtzd2l0Y2goYSl7Y2FzZSAiRU5PRU5UIjpyZXR1cm4iRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LCAiK2IrdjtjYXNlICJFQkFERiI6cmV0dXJuIkVCQURGOiBiYWQgZmlsZSBkZXNjcmlwdG9yLCAiK2IrdjtjYXNlICJFSU5WQUwiOnJldHVybiJFSU5WQUw6IGludmFsaWQgYXJndW1lbnQsICIrYit2O2Nhc2UgIkVQRVJNIjpyZXR1cm4iRVBFUk06IG9wZXJhdGlvbiBub3QgcGVybWl0dGVkLCAiK2IrdjtjYXNlICJFUFJPVE8iOnJldHVybiJFUFJPVE86IHByb3RvY29sIGVycm9yLCAiKwpiK3Y7Y2FzZSAiRUVYSVNUIjpyZXR1cm4iRUVYSVNUOiBmaWxlIGFscmVhZHkgZXhpc3RzLCAiK2IrdjtjYXNlICJFTk9URElSIjpyZXR1cm4iRU5PVERJUjogbm90IGEgZGlyZWN0b3J5LCAiK2IrdjtjYXNlICJFSVNESVIiOnJldHVybiJFSVNESVI6IGlsbGVnYWwgb3BlcmF0aW9uIG9uIGEgZGlyZWN0b3J5LCAiK2IrdjtjYXNlICJFQUNDRVMiOnJldHVybiJFQUNDRVM6IHBlcm1pc3Npb24gZGVuaWVkLCAiK2IrdjtjYXNlICJFTk9URU1QVFkiOnJldHVybiJFTk9URU1QVFk6IGRpcmVjdG9yeSBub3QgZW1wdHksICIrYit2O2Nhc2UgIkVNRklMRSI6cmV0dXJuIkVNRklMRTogdG9vIG1hbnkgb3BlbiBmaWxlcywgIitiK3Y7Y2FzZSAiRU5PU1lTIjpyZXR1cm4iRU5PU1lTOiBmdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQsICIrYit2O2RlZmF1bHQ6cmV0dXJuIGErIjogZXJyb3Igb2NjdXJyZWQsICIrYit2fX1mdW5jdGlvbiBrKGEsYixkLGUsZil7dm9pZCAwPT09YiYmKGI9IiIpO3ZvaWQgMD09PQpkJiYoZD0iIik7dm9pZCAwPT09ZSYmKGU9IiIpO3ZvaWQgMD09PWYmJihmPUVycm9yKTtiPW5ldyBmKGgoYSxiLGQsZSkpO2IuY29kZT1hO3JldHVybiBifWZ1bmN0aW9uIGwoYSl7aWYoIm51bWJlciI9PT10eXBlb2YgYSlyZXR1cm4gYTtpZigic3RyaW5nIj09PXR5cGVvZiBhKXt2YXIgYj1SW2FdO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGIpcmV0dXJuIGJ9dGhyb3cgbmV3IHhiLlR5cGVFcnJvcigiRVJSX0lOVkFMSURfT1BUX1ZBTFVFIiwiZmxhZ3MiLGEpO31mdW5jdGlvbiBxKGEsYil7aWYoYil7dmFyIGQ9dHlwZW9mIGI7c3dpdGNoKGQpe2Nhc2UgInN0cmluZyI6YT14YSh7fSxhLHtlbmNvZGluZzpifSk7YnJlYWs7Y2FzZSAib2JqZWN0IjphPXhhKHt9LGEsYik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBUeXBlRXJyb3IoIkV4cGVjdGVkIG9wdGlvbnMgdG8gYmUgZWl0aGVyIGFuIG9iamVjdCBvciBhIHN0cmluZywgYnV0IGdvdCAiK2QrIiBpbnN0ZWFkIik7fX1lbHNlIHJldHVybiBhOwoiYnVmZmVyIiE9PWEuZW5jb2RpbmcmJm9hLmFzc2VydEVuY29kaW5nKGEuZW5jb2RpbmcpO3JldHVybiBhfWZ1bmN0aW9uIG0oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBxKGEsYil9fWZ1bmN0aW9uIHIoYSl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IFR5cGVFcnJvcihNLkNCKTtyZXR1cm4gYX1mdW5jdGlvbiBQKGEpe3JldHVybiBmdW5jdGlvbihiLGQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYj9bYSgpLGJdOlthKGIpLHIoZCldfX1mdW5jdGlvbiBwKGEpe2lmKCJzdHJpbmciIT09dHlwZW9mIGEmJiFKLkJ1ZmZlci5pc0J1ZmZlcihhKSl7dHJ5e2lmKCEoYSBpbnN0YW5jZW9mIFpnLlVSTCkpdGhyb3cgbmV3IFR5cGVFcnJvcihNLlBBVEhfU1RSKTt9Y2F0Y2goY2Qpe3Rocm93IG5ldyBUeXBlRXJyb3IoTS5QQVRIX1NUUik7fWlmKCIiIT09YS5ob3N0bmFtZSl0aHJvdyBuZXcgeGIuVHlwZUVycm9yKCJFUlJfSU5WQUxJRF9GSUxFX1VSTF9IT1NUIiwKWS5kZWZhdWx0LnBsYXRmb3JtKTthPWEucGF0aG5hbWU7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspaWYoIiUiPT09YVtiXSl7dmFyIGQ9YS5jb2RlUG9pbnRBdChiKzIpfDMyO2lmKCIyIj09PWFbYisxXSYmMTAyPT09ZCl0aHJvdyBuZXcgeGIuVHlwZUVycm9yKCJFUlJfSU5WQUxJRF9GSUxFX1VSTF9QQVRIIiwibXVzdCBub3QgaW5jbHVkZSBlbmNvZGVkIC8gY2hhcmFjdGVycyIpO31hPWRlY29kZVVSSUNvbXBvbmVudChhKX1hPVN0cmluZyhhKTtFKGEpO3JldHVybiBhfWZ1bmN0aW9uIG4oYSxiKXtyZXR1cm4oYT1kKGEsYikuc3Vic3RyKDEpKT9hLnNwbGl0KEgpOltdfWZ1bmN0aW9uIEIoYSl7cmV0dXJuIG4ocChhKSl9ZnVuY3Rpb24geihhLGIpe3ZvaWQgMD09PWImJihiPW9hLkVOQ09ESU5HX1VURjgpO3JldHVybiBKLkJ1ZmZlci5pc0J1ZmZlcihhKT9hOmEgaW5zdGFuY2VvZiBVaW50OEFycmF5P0ouYnVmZmVyRnJvbShhKTpKLmJ1ZmZlckZyb20oU3RyaW5nKGEpLGIpfQpmdW5jdGlvbiBDKGEsYil7cmV0dXJuIGImJiJidWZmZXIiIT09Yj9hLnRvU3RyaW5nKGIpOmF9ZnVuY3Rpb24gRShhLGIpe2lmKC0xIT09KCIiK2EpLmluZGV4T2YoIlx4MDAiKSl7YT1FcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nIHdpdGhvdXQgbnVsbCBieXRlcyIpO2EuY29kZT0iRU5PRU5UIjtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGIpdGhyb3cgYTtZLmRlZmF1bHQubmV4dFRpY2soYixhKTtyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiB5KGEsYil7YT0ibnVtYmVyIj09PXR5cGVvZiBhP2E6InN0cmluZyI9PT10eXBlb2YgYT9wYXJzZUludChhLDgpOmI/eShiKTp2b2lkIDA7aWYoIm51bWJlciIhPT10eXBlb2YgYXx8aXNOYU4oYSkpdGhyb3cgbmV3IFR5cGVFcnJvcihNLk1PREVfSU5UKTtyZXR1cm4gYX1mdW5jdGlvbiBHKGEpe2lmKGE+Pj4wIT09YSl0aHJvdyBUeXBlRXJyb3IoTS5GRCk7fWZ1bmN0aW9uIEQoYSl7aWYoInN0cmluZyI9PT10eXBlb2YgYSYmK2E9PWEpcmV0dXJuK2E7CmlmKGEgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBhLmdldFRpbWUoKS8xRTM7aWYoaXNGaW5pdGUoYSkpcmV0dXJuIDA+YT9EYXRlLm5vdygpLzFFMzphO3Rocm93IEVycm9yKCJDYW5ub3QgcGFyc2UgdGltZTogIithKTt9ZnVuY3Rpb24gdyhhKXtpZigibnVtYmVyIiE9PXR5cGVvZiBhKXRocm93IFR5cGVFcnJvcihNLlVJRCk7fWZ1bmN0aW9uIEYoYSl7aWYoIm51bWJlciIhPT10eXBlb2YgYSl0aHJvdyBUeXBlRXJyb3IoTS5HSUQpO31mdW5jdGlvbiBiYyhhKXthLmVtaXQoInN0b3AiKX1mdW5jdGlvbiB0YShhLGIsZCl7aWYoISh0aGlzIGluc3RhbmNlb2YgdGEpKXJldHVybiBuZXcgdGEoYSxiLGQpO3RoaXMuX3ZvbD1hO2Q9eGEoe30scShkLHt9KSk7dm9pZCAwPT09ZC5oaWdoV2F0ZXJNYXJrJiYoZC5oaWdoV2F0ZXJNYXJrPTY1NTM2KTtjYS5SZWFkYWJsZS5jYWxsKHRoaXMsZCk7dGhpcy5wYXRoPXAoYik7dGhpcy5mZD12b2lkIDA9PT1kLmZkP251bGw6ZC5mZDt0aGlzLmZsYWdzPQp2b2lkIDA9PT1kLmZsYWdzPyJyIjpkLmZsYWdzO3RoaXMubW9kZT12b2lkIDA9PT1kLm1vZGU/NDM4OmQubW9kZTt0aGlzLnN0YXJ0PWQuc3RhcnQ7dGhpcy5lbmQ9ZC5lbmQ7dGhpcy5hdXRvQ2xvc2U9dm9pZCAwPT09ZC5hdXRvQ2xvc2U/ITA6ZC5hdXRvQ2xvc2U7dGhpcy5wb3M9dm9pZCAwO3RoaXMuYnl0ZXNSZWFkPTA7aWYodm9pZCAwIT09dGhpcy5zdGFydCl7aWYoIm51bWJlciIhPT10eXBlb2YgdGhpcy5zdGFydCl0aHJvdyBuZXcgVHlwZUVycm9yKCcic3RhcnQiIG9wdGlvbiBtdXN0IGJlIGEgTnVtYmVyJyk7aWYodm9pZCAwPT09dGhpcy5lbmQpdGhpcy5lbmQ9SW5maW5pdHk7ZWxzZSBpZigibnVtYmVyIiE9PXR5cGVvZiB0aGlzLmVuZCl0aHJvdyBuZXcgVHlwZUVycm9yKCciZW5kIiBvcHRpb24gbXVzdCBiZSBhIE51bWJlcicpO2lmKHRoaXMuc3RhcnQ+dGhpcy5lbmQpdGhyb3cgRXJyb3IoJyJzdGFydCIgb3B0aW9uIG11c3QgYmUgPD0gImVuZCIgb3B0aW9uJyk7dGhpcy5wb3M9CnRoaXMuc3RhcnR9Im51bWJlciIhPT10eXBlb2YgdGhpcy5mZCYmdGhpcy5vcGVuKCk7dGhpcy5vbigiZW5kIixmdW5jdGlvbigpe3RoaXMuYXV0b0Nsb3NlJiZ0aGlzLmRlc3Ryb3kmJnRoaXMuZGVzdHJveSgpfSl9ZnVuY3Rpb24gYmgoKXt0aGlzLmNsb3NlKCl9ZnVuY3Rpb24gWihhLGIsZCl7aWYoISh0aGlzIGluc3RhbmNlb2YgWikpcmV0dXJuIG5ldyBaKGEsYixkKTt0aGlzLl92b2w9YTtkPXhhKHt9LHEoZCx7fSkpO2NhLldyaXRhYmxlLmNhbGwodGhpcyxkKTt0aGlzLnBhdGg9cChiKTt0aGlzLmZkPXZvaWQgMD09PWQuZmQ/bnVsbDpkLmZkO3RoaXMuZmxhZ3M9dm9pZCAwPT09ZC5mbGFncz8idyI6ZC5mbGFnczt0aGlzLm1vZGU9dm9pZCAwPT09ZC5tb2RlPzQzODpkLm1vZGU7dGhpcy5zdGFydD1kLnN0YXJ0O3RoaXMuYXV0b0Nsb3NlPXZvaWQgMD09PWQuYXV0b0Nsb3NlPyEwOiEhZC5hdXRvQ2xvc2U7dGhpcy5wb3M9dm9pZCAwO3RoaXMuYnl0ZXNXcml0dGVuPTA7aWYodm9pZCAwIT09CnRoaXMuc3RhcnQpe2lmKCJudW1iZXIiIT09dHlwZW9mIHRoaXMuc3RhcnQpdGhyb3cgbmV3IFR5cGVFcnJvcignInN0YXJ0IiBvcHRpb24gbXVzdCBiZSBhIE51bWJlcicpO2lmKDA+dGhpcy5zdGFydCl0aHJvdyBFcnJvcignInN0YXJ0IiBtdXN0IGJlID49IHplcm8nKTt0aGlzLnBvcz10aGlzLnN0YXJ0fWQuZW5jb2RpbmcmJnRoaXMuc2V0RGVmYXVsdEVuY29kaW5nKGQuZW5jb2RpbmcpOyJudW1iZXIiIT09dHlwZW9mIHRoaXMuZmQmJnRoaXMub3BlbigpO3RoaXMub25jZSgiZmluaXNoIixmdW5jdGlvbigpe3RoaXMuYXV0b0Nsb3NlJiZ0aGlzLmNsb3NlKCl9KX12YXIgaGI9TiYmTi5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGQpe2E9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShkKSYmCihhW2RdPWJbZF0pfTtyZXR1cm4gYShiLGQpfXJldHVybiBmdW5jdGlvbihiLGQpe2Z1bmN0aW9uIGUoKXt0aGlzLmNvbnN0cnVjdG9yPWJ9YShiLGQpO2IucHJvdG90eXBlPW51bGw9PT1kP09iamVjdC5jcmVhdGUoZCk6KGUucHJvdG90eXBlPWQucHJvdG90eXBlLG5ldyBlKX19KCksZmQ9TiYmTi5fX3NwcmVhZEFycmF5c3x8ZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxiPTAsZD1hcmd1bWVudHMubGVuZ3RoO2I8ZDtiKyspYSs9YXJndW1lbnRzW2JdLmxlbmd0aDthPUFycmF5KGEpO3ZhciBlPTA7Zm9yKGI9MDtiPGQ7YisrKWZvcih2YXIgZj1hcmd1bWVudHNbYl0saD0wLGc9Zi5sZW5ndGg7aDxnO2grKyxlKyspYVtlXT1mW2hdO3JldHVybiBhfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHhhPVlnLGFoPUhjLGNjPXUuY29uc3RhbnRzLk9fUkRPTkxZLGliPXUuY29uc3RhbnRzLk9fV1JPTkxZLEFhPXUuY29uc3RhbnRzLk9fUkRXUiwKTz11LmNvbnN0YW50cy5PX0NSRUFULEk9dS5jb25zdGFudHMuT19FWENMLEs9dS5jb25zdGFudHMuT19UUlVOQyxMPXUuY29uc3RhbnRzLk9fQVBQRU5ELFE9dS5jb25zdGFudHMuT19TWU5DLFQ9dS5jb25zdGFudHMuT19ESVJFQ1RPUlksUz11LmNvbnN0YW50cy5GX09LLFY9dS5jb25zdGFudHMuQ09QWUZJTEVfRVhDTCxYPXUuY29uc3RhbnRzLkNPUFlGSUxFX0ZJQ0xPTkVfRk9SQ0UsSD0iLyIsVT0id2luMzIiPT09WS5kZWZhdWx0LnBsYXRmb3JtLE09e1BBVEhfU1RSOiJwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgQnVmZmVyIixGRDoiZmQgbXVzdCBiZSBhIGZpbGUgZGVzY3JpcHRvciIsTU9ERV9JTlQ6Im1vZGUgbXVzdCBiZSBhbiBpbnQiLENCOiJjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iLFVJRDoidWlkIG11c3QgYmUgYW4gdW5zaWduZWQgaW50IixHSUQ6ImdpZCBtdXN0IGJlIGFuIHVuc2lnbmVkIGludCIsTEVOOiJsZW4gbXVzdCBiZSBhbiBpbnRlZ2VyIixBVElNRToiYXRpbWUgbXVzdCBiZSBhbiBpbnRlZ2VyIiwKTVRJTUU6Im10aW1lIG11c3QgYmUgYW4gaW50ZWdlciIsUFJFRklYOiJmaWxlbmFtZSBwcmVmaXggaXMgcmVxdWlyZWQiLEJVRkZFUjoiYnVmZmVyIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgQnVmZmVyIG9yIFN0YXRpY0J1ZmZlciIsT0ZGU0VUOiJvZmZzZXQgbXVzdCBiZSBhbiBpbnRlZ2VyIixMRU5HVEg6Imxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIiLFBPU0lUSU9OOiJwb3NpdGlvbiBtdXN0IGJlIGFuIGludGVnZXIifSxSOyhmdW5jdGlvbihhKXthW2Eucj1jY109InIiO2FbYVsicisiXT1BYV09InIrIjthW2EucnM9Y2N8UV09InJzIjthW2Euc3I9YS5yc109InNyIjthW2FbInJzKyJdPUFhfFFdPSJycysiO2FbYVsic3IrIl09YVsicnMrIl1dPSJzcisiO2FbYS53PWlifE98S109InciO2FbYS53eD1pYnxPfEt8SV09Ind4IjthW2EueHc9YS53eF09Inh3IjthW2FbIncrIl09QWF8T3xLXT0idysiO2FbYVsid3grIl09QWF8T3xLfEldPSJ3eCsiO2FbYVsieHcrIl09YVsid3grIl1dPQoieHcrIjthW2EuYT1pYnxMfE9dPSJhIjthW2EuYXg9aWJ8THxPfEldPSJheCI7YVthLnhhPWEuYXhdPSJ4YSI7YVthWyJhKyJdPUFhfEx8T109ImErIjthW2FbImF4KyJdPUFhfEx8T3xJXT0iYXgrIjthW2FbInhhKyJdPWFbImF4KyJdXT0ieGErIn0pKFI9Yi5GTEFHU3x8KGIuRkxBR1M9e30pKTtiLmZsYWdzVG9OdW1iZXI9bDthPXtlbmNvZGluZzoidXRmOCJ9O3ZhciBXPW0oYSksYWE9UChXKSxiYT1tKHtmbGFnOiJyIn0pLGRhPXtlbmNvZGluZzoidXRmOCIsbW9kZTo0MzgsZmxhZzpSW1Iud119LGVhPW0oZGEpLGZhPXtlbmNvZGluZzoidXRmOCIsbW9kZTo0MzgsZmxhZzpSW1IuYV19LGhhPW0oZmEpLG5hPVAoaGEpLGphPW0oYSkscGE9UChqYSksa2E9e21vZGU6NTExLHJlY3Vyc2l2ZTohMX0sbGE9e3JlY3Vyc2l2ZTohMX0sbWE9bSh7ZW5jb2Rpbmc6InV0ZjgiLHdpdGhGaWxlVHlwZXM6ITF9KSxzYT1QKG1hKSx1YT17YmlnaW50OiExfTtiLnBhdGhUb0ZpbGVuYW1lPXA7aWYoVSl7dmFyIHZhPQpkLHdhPXBmLnVuaXhpZnk7ZD1mdW5jdGlvbihhLGIpe3JldHVybiB3YSh2YShhLGIpKX19Yi5maWxlbmFtZVRvU3RlcHM9bjtiLnBhdGhUb1N0ZXBzPUI7Yi5kYXRhVG9TdHI9ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj1vYS5FTkNPRElOR19VVEY4KTtyZXR1cm4gSi5CdWZmZXIuaXNCdWZmZXIoYSk/YS50b1N0cmluZyhiKTphIGluc3RhbmNlb2YgVWludDhBcnJheT9KLmJ1ZmZlckZyb20oYSkudG9TdHJpbmcoYik6U3RyaW5nKGEpfTtiLmRhdGFUb0J1ZmZlcj16O2IuYnVmZmVyVG9FbmNvZGluZz1DO2IudG9Vbml4VGltZXN0YW1wPUQ7YT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dm9pZCAwPT09YSYmKGE9e30pO3RoaXMuaW5vPTA7dGhpcy5pbm9kZXM9e307dGhpcy5yZWxlYXNlZElub3M9W107dGhpcy5mZHM9e307dGhpcy5yZWxlYXNlZEZkcz1bXTt0aGlzLm1heEZpbGVzPTFFNDt0aGlzLm9wZW5GaWxlcz0wO3RoaXMucHJvbWlzZXNBcGk9b2YuZGVmYXVsdCh0aGlzKTsKdGhpcy5zdGF0V2F0Y2hlcnM9e307dGhpcy5wcm9wcz14YSh7Tm9kZTp5Yi5Ob2RlLExpbms6eWIuTGluayxGaWxlOnliLkZpbGV9LGEpO2E9dGhpcy5jcmVhdGVMaW5rKCk7YS5zZXROb2RlKHRoaXMuY3JlYXRlTm9kZSghMCkpO3ZhciBiPXRoaXM7dGhpcy5TdGF0V2F0Y2hlcj1mdW5jdGlvbihhKXtmdW5jdGlvbiBkKCl7cmV0dXJuIGEuY2FsbCh0aGlzLGIpfHx0aGlzfWhiKGQsYSk7cmV0dXJuIGR9KHFhKTt0aGlzLlJlYWRTdHJlYW09ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZCgpe2Zvcih2YXIgZD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylkW2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gYS5hcHBseSh0aGlzLGZkKFtiXSxkKSl8fHRoaXN9aGIoZCxhKTtyZXR1cm4gZH0odGEpO3RoaXMuV3JpdGVTdHJlYW09ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZCgpe2Zvcih2YXIgZD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylkW2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gYS5hcHBseSh0aGlzLApmZChbYl0sZCkpfHx0aGlzfWhiKGQsYSk7cmV0dXJuIGR9KFopO3RoaXMuRlNXYXRjaGVyPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGQoKXtyZXR1cm4gYS5jYWxsKHRoaXMsYil8fHRoaXN9aGIoZCxhKTtyZXR1cm4gZH0ocmEpO3RoaXMucm9vdD1hfWEuZnJvbUpTT049ZnVuY3Rpb24oYixkKXt2YXIgZT1uZXcgYTtlLmZyb21KU09OKGIsZCk7cmV0dXJuIGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSwicHJvbWlzZXMiLHtnZXQ6ZnVuY3Rpb24oKXtpZihudWxsPT09dGhpcy5wcm9taXNlc0FwaSl0aHJvdyBFcnJvcigiUHJvbWlzZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZW52aXJvbm1lbnQuIik7cmV0dXJuIHRoaXMucHJvbWlzZXNBcGl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7YS5wcm90b3R5cGUuY3JlYXRlTGluaz1mdW5jdGlvbihhLGIsZCxlKXt2b2lkIDA9PT1kJiYoZD0hMSk7aWYoIWEpcmV0dXJuIG5ldyB0aGlzLnByb3BzLkxpbmsodGhpcywKbnVsbCwiIik7aWYoIWIpdGhyb3cgRXJyb3IoImNyZWF0ZUxpbms6IG5hbWUgY2Fubm90IGJlIGVtcHR5Iik7cmV0dXJuIGEuY3JlYXRlQ2hpbGQoYix0aGlzLmNyZWF0ZU5vZGUoZCxlKSl9O2EucHJvdG90eXBlLmRlbGV0ZUxpbms9ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnQ7cmV0dXJuIGI/KGIuZGVsZXRlQ2hpbGQoYSksITApOiExfTthLnByb3RvdHlwZS5uZXdJbm9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJlbGVhc2VkSW5vcy5wb3AoKTtyZXR1cm4gYT9hOnRoaXMuaW5vPSh0aGlzLmlubysxKSU0Mjk0OTY3Mjk1fTthLnByb3RvdHlwZS5uZXdGZE51bWJlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMucmVsZWFzZWRGZHMucG9wKCk7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgYj9iOmEuZmQtLX07YS5wcm90b3R5cGUuY3JlYXRlTm9kZT1mdW5jdGlvbihhLGIpe3ZvaWQgMD09PWEmJihhPSExKTtiPW5ldyB0aGlzLnByb3BzLk5vZGUodGhpcy5uZXdJbm9OdW1iZXIoKSwKYik7YSYmYi5zZXRJc0RpcmVjdG9yeSgpO3JldHVybiB0aGlzLmlub2Rlc1tiLmlub109Yn07YS5wcm90b3R5cGUuZ2V0Tm9kZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pbm9kZXNbYV19O2EucHJvdG90eXBlLmRlbGV0ZU5vZGU9ZnVuY3Rpb24oYSl7YS5kZWwoKTtkZWxldGUgdGhpcy5pbm9kZXNbYS5pbm9dO3RoaXMucmVsZWFzZWRJbm9zLnB1c2goYS5pbm8pfTthLnByb3RvdHlwZS5nZW5SbmRTdHI9ZnVuY3Rpb24oKXt2YXIgYT0oTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyKDIsNik7cmV0dXJuIDY9PT1hLmxlbmd0aD9hOnRoaXMuZ2VuUm5kU3RyKCl9O2EucHJvdG90eXBlLmdldExpbms9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucm9vdC53YWxrKGEpfTthLnByb3RvdHlwZS5nZXRMaW5rT3JUaHJvdz1mdW5jdGlvbihhLGIpe3ZhciBkPW4oYSk7ZD10aGlzLmdldExpbmsoZCk7aWYoIWQpdGhyb3cgaygiRU5PRU5UIixiLGEpO3JldHVybiBkfTthLnByb3RvdHlwZS5nZXRSZXNvbHZlZExpbms9CmZ1bmN0aW9uKGEpe2E9InN0cmluZyI9PT10eXBlb2YgYT9uKGEpOmE7Zm9yKHZhciBiPXRoaXMucm9vdCxkPTA7ZDxhLmxlbmd0aDspe2I9Yi5nZXRDaGlsZChhW2RdKTtpZighYilyZXR1cm4gbnVsbDt2YXIgZT1iLmdldE5vZGUoKTtlLmlzU3ltbGluaygpPyhhPWUuc3ltbGluay5jb25jYXQoYS5zbGljZShkKzEpKSxiPXRoaXMucm9vdCxkPTApOmQrK31yZXR1cm4gYn07YS5wcm90b3R5cGUuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdz1mdW5jdGlvbihhLGIpe3ZhciBkPXRoaXMuZ2V0UmVzb2x2ZWRMaW5rKGEpO2lmKCFkKXRocm93IGsoIkVOT0VOVCIsYixhKTtyZXR1cm4gZH07YS5wcm90b3R5cGUucmVzb2x2ZVN5bWxpbmtzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdldFJlc29sdmVkTGluayhhLnN0ZXBzLnNsaWNlKDEpKX07YS5wcm90b3R5cGUuZ2V0TGlua0FzRGlyT3JUaHJvdz1mdW5jdGlvbihhLGIpe3ZhciBkPXRoaXMuZ2V0TGlua09yVGhyb3coYSxiKTtpZighZC5nZXROb2RlKCkuaXNEaXJlY3RvcnkoKSl0aHJvdyBrKCJFTk9URElSIiwKYixhKTtyZXR1cm4gZH07YS5wcm90b3R5cGUuZ2V0TGlua1BhcmVudD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yb290LndhbGsoYSxhLmxlbmd0aC0xKX07YS5wcm90b3R5cGUuZ2V0TGlua1BhcmVudEFzRGlyT3JUaHJvdz1mdW5jdGlvbihhLGIpe2E9YSBpbnN0YW5jZW9mIEFycmF5P2E6bihhKTt2YXIgZD10aGlzLmdldExpbmtQYXJlbnQoYSk7aWYoIWQpdGhyb3cgaygiRU5PRU5UIixiLEgrYS5qb2luKEgpKTtpZighZC5nZXROb2RlKCkuaXNEaXJlY3RvcnkoKSl0aHJvdyBrKCJFTk9URElSIixiLEgrYS5qb2luKEgpKTtyZXR1cm4gZH07YS5wcm90b3R5cGUuZ2V0RmlsZUJ5RmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZmRzW1N0cmluZyhhKV19O2EucHJvdG90eXBlLmdldEZpbGVCeUZkT3JUaHJvdz1mdW5jdGlvbihhLGIpe2lmKGE+Pj4wIT09YSl0aHJvdyBUeXBlRXJyb3IoTS5GRCk7YT10aGlzLmdldEZpbGVCeUZkKGEpO2lmKCFhKXRocm93IGsoIkVCQURGIixiKTtyZXR1cm4gYX07CmEucHJvdG90eXBlLmdldE5vZGVCeUlkT3JDcmVhdGU9ZnVuY3Rpb24oYSxiLGQpe2lmKCJudW1iZXIiPT09dHlwZW9mIGEpe2E9dGhpcy5nZXRGaWxlQnlGZChhKTtpZighYSl0aHJvdyBFcnJvcigiRmlsZSBudG8gZm91bmQiKTtyZXR1cm4gYS5ub2RlfXZhciBlPUIoYSksZj10aGlzLmdldExpbmsoZSk7aWYoZilyZXR1cm4gZi5nZXROb2RlKCk7aWYoYiZPJiYoYj10aGlzLmdldExpbmtQYXJlbnQoZSkpKXJldHVybiBmPXRoaXMuY3JlYXRlTGluayhiLGVbZS5sZW5ndGgtMV0sITEsZCksZi5nZXROb2RlKCk7dGhyb3cgaygiRU5PRU5UIiwiZ2V0Tm9kZUJ5SWRPckNyZWF0ZSIscChhKSk7fTthLnByb3RvdHlwZS53cmFwQXN5bmM9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPXRoaXM7cihkKTtnYi5kZWZhdWx0KGZ1bmN0aW9uKCl7dHJ5e2QobnVsbCxhLmFwcGx5KGUsYikpfWNhdGNoKEFiKXtkKEFiKX19KX07YS5wcm90b3R5cGUuX3RvSlNPTj1mdW5jdGlvbihhLGIsZCl7dmFyIGU7dm9pZCAwPT09CmEmJihhPXRoaXMucm9vdCk7dm9pZCAwPT09YiYmKGI9e30pO3ZhciBmPSEwLHY9YS5jaGlsZHJlbjthLmdldE5vZGUoKS5pc0ZpbGUoKSYmKHY9KGU9e30sZVthLmdldE5hbWUoKV09YS5wYXJlbnQuZ2V0Q2hpbGQoYS5nZXROYW1lKCkpLGUpLGE9YS5wYXJlbnQpO2Zvcih2YXIgaCBpbiB2KXtmPSExO3Y9YS5nZXRDaGlsZChoKTtpZighdil0aHJvdyBFcnJvcigiX3RvSlNPTjogdW5leHBlY3RlZCB1bmRlZmluZWQiKTtlPXYuZ2V0Tm9kZSgpO2UuaXNGaWxlKCk/KHY9di5nZXRQYXRoKCksZCYmKHY9UGIoZCx2KSksYlt2XT1lLmdldFN0cmluZygpKTplLmlzRGlyZWN0b3J5KCkmJnRoaXMuX3RvSlNPTih2LGIsZCl9YT1hLmdldFBhdGgoKTtkJiYoYT1QYihkLGEpKTthJiZmJiYoYlthXT1udWxsKTtyZXR1cm4gYn07YS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGEsYixkKXt2b2lkIDA9PT1iJiYoYj17fSk7dm9pZCAwPT09ZCYmKGQ9ITEpO3ZhciBlPVtdO2lmKGEpe2EgaW5zdGFuY2VvZgpBcnJheXx8KGE9W2FdKTtmb3IodmFyIGY9MDtmPGEubGVuZ3RoO2YrKyl7dmFyIHY9cChhW2ZdKTsodj10aGlzLmdldFJlc29sdmVkTGluayh2KSkmJmUucHVzaCh2KX19ZWxzZSBlLnB1c2godGhpcy5yb290KTtpZighZS5sZW5ndGgpcmV0dXJuIGI7Zm9yKGY9MDtmPGUubGVuZ3RoO2YrKyl2PWVbZl0sdGhpcy5fdG9KU09OKHYsYixkP3YuZ2V0UGF0aCgpOiIiKTtyZXR1cm4gYn07YS5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj1ZLmRlZmF1bHQuY3dkKCkpO2Zvcih2YXIgZSBpbiBhKXt2YXIgZj1hW2VdO2lmKCJzdHJpbmciPT09dHlwZW9mIGYpe2U9ZChlLGIpO3ZhciB2PW4oZSk7MTx2Lmxlbmd0aCYmKHY9SCt2LnNsaWNlKDAsdi5sZW5ndGgtMSkuam9pbihIKSx0aGlzLm1rZGlycEJhc2Uodiw1MTEpKTt0aGlzLndyaXRlRmlsZVN5bmMoZSxmKX1lbHNlIHRoaXMubWtkaXJwQmFzZShlLDUxMSl9fTthLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuaW5vPQowO3RoaXMuaW5vZGVzPXt9O3RoaXMucmVsZWFzZWRJbm9zPVtdO3RoaXMuZmRzPXt9O3RoaXMucmVsZWFzZWRGZHM9W107dGhpcy5vcGVuRmlsZXM9MDt0aGlzLnJvb3Q9dGhpcy5jcmVhdGVMaW5rKCk7dGhpcy5yb290LnNldE5vZGUodGhpcy5jcmVhdGVOb2RlKCEwKSl9O2EucHJvdG90eXBlLm1vdW50U3luYz1mdW5jdGlvbihhLGIpe3RoaXMuZnJvbUpTT04oYixhKX07YS5wcm90b3R5cGUub3Blbkxpbms9ZnVuY3Rpb24oYSxiLGQpe3ZvaWQgMD09PWQmJihkPSEwKTtpZih0aGlzLm9wZW5GaWxlcz49dGhpcy5tYXhGaWxlcyl0aHJvdyBrKCJFTUZJTEUiLCJvcGVuIixhLmdldFBhdGgoKSk7dmFyIGU9YTtkJiYoZT10aGlzLnJlc29sdmVTeW1saW5rcyhhKSk7aWYoIWUpdGhyb3cgaygiRU5PRU5UIiwib3BlbiIsYS5nZXRQYXRoKCkpO2Q9ZS5nZXROb2RlKCk7aWYoZC5pc0RpcmVjdG9yeSgpKXtpZigoYiYoY2N8QWF8aWIpKSE9PWNjKXRocm93IGsoIkVJU0RJUiIsIm9wZW4iLGEuZ2V0UGF0aCgpKTsKfWVsc2UgaWYoYiZUKXRocm93IGsoIkVOT1RESVIiLCJvcGVuIixhLmdldFBhdGgoKSk7aWYoIShiJmlifHxkLmNhblJlYWQoKSkpdGhyb3cgaygiRUFDQ0VTIiwib3BlbiIsYS5nZXRQYXRoKCkpO2E9bmV3IHRoaXMucHJvcHMuRmlsZShhLGQsYix0aGlzLm5ld0ZkTnVtYmVyKCkpO3RoaXMuZmRzW2EuZmRdPWE7dGhpcy5vcGVuRmlsZXMrKztiJksmJmEudHJ1bmNhdGUoKTtyZXR1cm4gYX07YS5wcm90b3R5cGUub3BlbkZpbGU9ZnVuY3Rpb24oYSxiLGQsZSl7dm9pZCAwPT09ZSYmKGU9ITApO3ZhciBmPW4oYSksdj1lP3RoaXMuZ2V0UmVzb2x2ZWRMaW5rKGYpOnRoaXMuZ2V0TGluayhmKTtpZighdiYmYiZPKXt2YXIgaD10aGlzLmdldFJlc29sdmVkTGluayhmLnNsaWNlKDAsZi5sZW5ndGgtMSkpO2lmKCFoKXRocm93IGsoIkVOT0VOVCIsIm9wZW4iLEgrZi5qb2luKEgpKTtiJk8mJiJudW1iZXIiPT09dHlwZW9mIGQmJih2PXRoaXMuY3JlYXRlTGluayhoLGZbZi5sZW5ndGgtMV0sCiExLGQpKX1pZih2KXJldHVybiB0aGlzLm9wZW5MaW5rKHYsYixlKTt0aHJvdyBrKCJFTk9FTlQiLCJvcGVuIixhKTt9O2EucHJvdG90eXBlLm9wZW5CYXNlPWZ1bmN0aW9uKGEsYixkLGUpe3ZvaWQgMD09PWUmJihlPSEwKTtiPXRoaXMub3BlbkZpbGUoYSxiLGQsZSk7aWYoIWIpdGhyb3cgaygiRU5PRU5UIiwib3BlbiIsYSk7cmV0dXJuIGIuZmR9O2EucHJvdG90eXBlLm9wZW5TeW5jPWZ1bmN0aW9uKGEsYixkKXt2b2lkIDA9PT1kJiYoZD00MzgpO2Q9eShkKTthPXAoYSk7Yj1sKGIpO3JldHVybiB0aGlzLm9wZW5CYXNlKGEsYixkKX07YS5wcm90b3R5cGUub3Blbj1mdW5jdGlvbihhLGIsZCxlKXt2YXIgZj1kOyJmdW5jdGlvbiI9PT10eXBlb2YgZCYmKGY9NDM4LGU9ZCk7ZD15KGZ8fDQzOCk7YT1wKGEpO2I9bChiKTt0aGlzLndyYXBBc3luYyh0aGlzLm9wZW5CYXNlLFthLGIsZF0sZSl9O2EucHJvdG90eXBlLmNsb3NlRmlsZT1mdW5jdGlvbihhKXt0aGlzLmZkc1thLmZkXSYmKHRoaXMub3BlbkZpbGVzLS0sCmRlbGV0ZSB0aGlzLmZkc1thLmZkXSx0aGlzLnJlbGVhc2VkRmRzLnB1c2goYS5mZCkpfTthLnByb3RvdHlwZS5jbG9zZVN5bmM9ZnVuY3Rpb24oYSl7RyhhKTthPXRoaXMuZ2V0RmlsZUJ5RmRPclRocm93KGEsImNsb3NlIik7dGhpcy5jbG9zZUZpbGUoYSl9O2EucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKGEsYil7RyhhKTt0aGlzLndyYXBBc3luYyh0aGlzLmNsb3NlU3luYyxbYV0sYil9O2EucHJvdG90eXBlLm9wZW5GaWxlT3JHZXRCeUlkPWZ1bmN0aW9uKGEsYixkKXtpZigibnVtYmVyIj09PXR5cGVvZiBhKXthPXRoaXMuZmRzW2FdO2lmKCFhKXRocm93IGsoIkVOT0VOVCIpO3JldHVybiBhfXJldHVybiB0aGlzLm9wZW5GaWxlKHAoYSksYixkKX07YS5wcm90b3R5cGUucmVhZEJhc2U9ZnVuY3Rpb24oYSxiLGQsZSxmKXtyZXR1cm4gdGhpcy5nZXRGaWxlQnlGZE9yVGhyb3coYSkucmVhZChiLE51bWJlcihkKSxOdW1iZXIoZSksZil9O2EucHJvdG90eXBlLnJlYWRTeW5jPWZ1bmN0aW9uKGEsCmIsZCxlLGYpe0coYSk7cmV0dXJuIHRoaXMucmVhZEJhc2UoYSxiLGQsZSxmKX07YS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihhLGIsZCxlLGYsaCl7dmFyIGc9dGhpcztyKGgpO2lmKDA9PT1lKXJldHVybiBZLmRlZmF1bHQubmV4dFRpY2soZnVuY3Rpb24oKXtoJiZoKG51bGwsMCxiKX0pO2diLmRlZmF1bHQoZnVuY3Rpb24oKXt0cnl7dmFyIHY9Zy5yZWFkQmFzZShhLGIsZCxlLGYpO2gobnVsbCx2LGIpfWNhdGNoKGNoKXtoKGNoKX19KX07YS5wcm90b3R5cGUucmVhZEZpbGVCYXNlPWZ1bmN0aW9uKGEsYixkKXt2YXIgZT0ibnVtYmVyIj09PXR5cGVvZiBhJiZhPj4+MD09PWE7aWYoIWUpe3ZhciBmPXAoYSk7Zj1uKGYpO2lmKChmPXRoaXMuZ2V0UmVzb2x2ZWRMaW5rKGYpKSYmZi5nZXROb2RlKCkuaXNEaXJlY3RvcnkoKSl0aHJvdyBrKCJFSVNESVIiLCJvcGVuIixmLmdldFBhdGgoKSk7YT10aGlzLm9wZW5TeW5jKGEsYil9dHJ5e3ZhciBoPUModGhpcy5nZXRGaWxlQnlGZE9yVGhyb3coYSkuZ2V0QnVmZmVyKCksCmQpfWZpbmFsbHl7ZXx8dGhpcy5jbG9zZVN5bmMoYSl9cmV0dXJuIGh9O2EucHJvdG90eXBlLnJlYWRGaWxlU3luYz1mdW5jdGlvbihhLGIpe2I9YmEoYik7dmFyIGQ9bChiLmZsYWcpO3JldHVybiB0aGlzLnJlYWRGaWxlQmFzZShhLGQsYi5lbmNvZGluZyl9O2EucHJvdG90eXBlLnJlYWRGaWxlPWZ1bmN0aW9uKGEsYixkKXtkPVAoYmEpKGIsZCk7Yj1kWzBdO2Q9ZFsxXTt2YXIgZT1sKGIuZmxhZyk7dGhpcy53cmFwQXN5bmModGhpcy5yZWFkRmlsZUJhc2UsW2EsZSxiLmVuY29kaW5nXSxkKX07YS5wcm90b3R5cGUud3JpdGVCYXNlPWZ1bmN0aW9uKGEsYixkLGUsZil7cmV0dXJuIHRoaXMuZ2V0RmlsZUJ5RmRPclRocm93KGEsIndyaXRlIikud3JpdGUoYixkLGUsZil9O2EucHJvdG90eXBlLndyaXRlU3luYz1mdW5jdGlvbihhLGIsZCxlLGYpe0coYSk7dmFyIGg9InN0cmluZyIhPT10eXBlb2YgYjtpZihoKXt2YXIgZz0oZHx8MCl8MCx2PWU7ZD1mfWVsc2UgdmFyIHpiPWU7Yj16KGIsCnpiKTtoPyJ1bmRlZmluZWQiPT09dHlwZW9mIHYmJih2PWIubGVuZ3RoKTooZz0wLHY9Yi5sZW5ndGgpO3JldHVybiB0aGlzLndyaXRlQmFzZShhLGIsZyx2LGQpfTthLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihhLGIsZCxlLGYsaCl7dmFyIGc9dGhpcztHKGEpO3ZhciB2PXR5cGVvZiBiLHpiPXR5cGVvZiBkLGNkPXR5cGVvZiBlLGs9dHlwZW9mIGY7aWYoInN0cmluZyIhPT12KWlmKCJmdW5jdGlvbiI9PT16Yil2YXIgdz1kO2Vsc2UgaWYoImZ1bmN0aW9uIj09PWNkKXt2YXIgRj1kfDA7dz1lfWVsc2UgaWYoImZ1bmN0aW9uIj09PWspe0Y9ZHwwO3ZhciBsPWU7dz1mfWVsc2V7Rj1kfDA7bD1lO3ZhciBkZD1mO3c9aH1lbHNlIGlmKCJmdW5jdGlvbiI9PT16Yil3PWQ7ZWxzZSBpZigiZnVuY3Rpb24iPT09Y2QpZGQ9ZCx3PWU7ZWxzZSBpZigiZnVuY3Rpb24iPT09ayl7ZGQ9ZDt2YXIgcT1lO3c9Zn12YXIgcD16KGIscSk7InN0cmluZyIhPT12PyJ1bmRlZmluZWQiPT09dHlwZW9mIGwmJgoobD1wLmxlbmd0aCk6KEY9MCxsPXAubGVuZ3RoKTt2YXIgbT1yKHcpO2diLmRlZmF1bHQoZnVuY3Rpb24oKXt0cnl7dmFyIGQ9Zy53cml0ZUJhc2UoYSxwLEYsbCxkZCk7InN0cmluZyIhPT12P20obnVsbCxkLHApOm0obnVsbCxkLGIpfWNhdGNoKGRoKXttKGRoKX19KX07YS5wcm90b3R5cGUud3JpdGVGaWxlQmFzZT1mdW5jdGlvbihhLGIsZCxlKXt2YXIgZj0ibnVtYmVyIj09PXR5cGVvZiBhO2E9Zj9hOnRoaXMub3BlbkJhc2UocChhKSxkLGUpO2U9MDt2YXIgaD1iLmxlbmd0aDtkPWQmTD92b2lkIDA6MDt0cnl7Zm9yKDswPGg7KXt2YXIgZz10aGlzLndyaXRlU3luYyhhLGIsZSxoLGQpO2UrPWc7aC09Zzt2b2lkIDAhPT1kJiYoZCs9Zyl9fWZpbmFsbHl7Znx8dGhpcy5jbG9zZVN5bmMoYSl9fTthLnByb3RvdHlwZS53cml0ZUZpbGVTeW5jPWZ1bmN0aW9uKGEsYixkKXt2YXIgZT1lYShkKTtkPWwoZS5mbGFnKTt2YXIgZj15KGUubW9kZSk7Yj16KGIsZS5lbmNvZGluZyk7dGhpcy53cml0ZUZpbGVCYXNlKGEsCmIsZCxmKX07YS5wcm90b3R5cGUud3JpdGVGaWxlPWZ1bmN0aW9uKGEsYixkLGUpe3ZhciBmPWQ7ImZ1bmN0aW9uIj09PXR5cGVvZiBkJiYoZj1kYSxlPWQpO2Q9cihlKTt2YXIgaD1lYShmKTtmPWwoaC5mbGFnKTtlPXkoaC5tb2RlKTtiPXooYixoLmVuY29kaW5nKTt0aGlzLndyYXBBc3luYyh0aGlzLndyaXRlRmlsZUJhc2UsW2EsYixmLGVdLGQpfTthLnByb3RvdHlwZS5saW5rQmFzZT1mdW5jdGlvbihhLGIpe3ZhciBkPW4oYSksZT10aGlzLmdldExpbmsoZCk7aWYoIWUpdGhyb3cgaygiRU5PRU5UIiwibGluayIsYSxiKTt2YXIgZj1uKGIpO2Q9dGhpcy5nZXRMaW5rUGFyZW50KGYpO2lmKCFkKXRocm93IGsoIkVOT0VOVCIsImxpbmsiLGEsYik7Zj1mW2YubGVuZ3RoLTFdO2lmKGQuZ2V0Q2hpbGQoZikpdGhyb3cgaygiRUVYSVNUIiwibGluayIsYSxiKTthPWUuZ2V0Tm9kZSgpO2EubmxpbmsrKztkLmNyZWF0ZUNoaWxkKGYsYSl9O2EucHJvdG90eXBlLmNvcHlGaWxlQmFzZT1mdW5jdGlvbihhLApiLGQpe3ZhciBlPXRoaXMucmVhZEZpbGVTeW5jKGEpO2lmKGQmViYmdGhpcy5leGlzdHNTeW5jKGIpKXRocm93IGsoIkVFWElTVCIsImNvcHlGaWxlIixhLGIpO2lmKGQmWCl0aHJvdyBrKCJFTk9TWVMiLCJjb3B5RmlsZSIsYSxiKTt0aGlzLndyaXRlRmlsZUJhc2UoYixlLFIudyw0MzgpfTthLnByb3RvdHlwZS5jb3B5RmlsZVN5bmM9ZnVuY3Rpb24oYSxiLGQpe2E9cChhKTtiPXAoYik7cmV0dXJuIHRoaXMuY29weUZpbGVCYXNlKGEsYiwoZHx8MCl8MCl9O2EucHJvdG90eXBlLmNvcHlGaWxlPWZ1bmN0aW9uKGEsYixkLGUpe2E9cChhKTtiPXAoYik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBkKXZhciBmPTA7ZWxzZSBmPWQsZD1lO3IoZCk7dGhpcy53cmFwQXN5bmModGhpcy5jb3B5RmlsZUJhc2UsW2EsYixmXSxkKX07YS5wcm90b3R5cGUubGlua1N5bmM9ZnVuY3Rpb24oYSxiKXthPXAoYSk7Yj1wKGIpO3RoaXMubGlua0Jhc2UoYSxiKX07YS5wcm90b3R5cGUubGluaz1mdW5jdGlvbihhLApiLGQpe2E9cChhKTtiPXAoYik7dGhpcy53cmFwQXN5bmModGhpcy5saW5rQmFzZSxbYSxiXSxkKX07YS5wcm90b3R5cGUudW5saW5rQmFzZT1mdW5jdGlvbihhKXt2YXIgYj1uKGEpO2I9dGhpcy5nZXRMaW5rKGIpO2lmKCFiKXRocm93IGsoIkVOT0VOVCIsInVubGluayIsYSk7aWYoYi5sZW5ndGgpdGhyb3cgRXJyb3IoIkRpciBub3QgZW1wdHkuLi4iKTt0aGlzLmRlbGV0ZUxpbmsoYik7YT1iLmdldE5vZGUoKTthLm5saW5rLS07MD49YS5ubGluayYmdGhpcy5kZWxldGVOb2RlKGEpfTthLnByb3RvdHlwZS51bmxpbmtTeW5jPWZ1bmN0aW9uKGEpe2E9cChhKTt0aGlzLnVubGlua0Jhc2UoYSl9O2EucHJvdG90eXBlLnVubGluaz1mdW5jdGlvbihhLGIpe2E9cChhKTt0aGlzLndyYXBBc3luYyh0aGlzLnVubGlua0Jhc2UsW2FdLGIpfTthLnByb3RvdHlwZS5zeW1saW5rQmFzZT1mdW5jdGlvbihhLGIpe3ZhciBkPW4oYiksZT10aGlzLmdldExpbmtQYXJlbnQoZCk7aWYoIWUpdGhyb3cgaygiRU5PRU5UIiwKInN5bWxpbmsiLGEsYik7ZD1kW2QubGVuZ3RoLTFdO2lmKGUuZ2V0Q2hpbGQoZCkpdGhyb3cgaygiRUVYSVNUIiwic3ltbGluayIsYSxiKTtiPWUuY3JlYXRlQ2hpbGQoZCk7Yi5nZXROb2RlKCkubWFrZVN5bWxpbmsobihhKSk7cmV0dXJuIGJ9O2EucHJvdG90eXBlLnN5bWxpbmtTeW5jPWZ1bmN0aW9uKGEsYil7YT1wKGEpO2I9cChiKTt0aGlzLnN5bWxpbmtCYXNlKGEsYil9O2EucHJvdG90eXBlLnN5bWxpbms9ZnVuY3Rpb24oYSxiLGQsZSl7ZD1yKCJmdW5jdGlvbiI9PT10eXBlb2YgZD9kOmUpO2E9cChhKTtiPXAoYik7dGhpcy53cmFwQXN5bmModGhpcy5zeW1saW5rQmFzZSxbYSxiXSxkKX07YS5wcm90b3R5cGUucmVhbHBhdGhCYXNlPWZ1bmN0aW9uKGEsYil7dmFyIGQ9bihhKTtkPXRoaXMuZ2V0UmVzb2x2ZWRMaW5rKGQpO2lmKCFkKXRocm93IGsoIkVOT0VOVCIsInJlYWxwYXRoIixhKTtyZXR1cm4gb2Euc3RyVG9FbmNvZGluZyhkLmdldFBhdGgoKSxiKX07YS5wcm90b3R5cGUucmVhbHBhdGhTeW5jPQpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnJlYWxwYXRoQmFzZShwKGEpLGphKGIpLmVuY29kaW5nKX07YS5wcm90b3R5cGUucmVhbHBhdGg9ZnVuY3Rpb24oYSxiLGQpe2Q9cGEoYixkKTtiPWRbMF07ZD1kWzFdO2E9cChhKTt0aGlzLndyYXBBc3luYyh0aGlzLnJlYWxwYXRoQmFzZSxbYSxiLmVuY29kaW5nXSxkKX07YS5wcm90b3R5cGUubHN0YXRCYXNlPWZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGI9ITEpO3ZhciBkPXRoaXMuZ2V0TGluayhuKGEpKTtpZighZCl0aHJvdyBrKCJFTk9FTlQiLCJsc3RhdCIsYSk7cmV0dXJuIGViLmRlZmF1bHQuYnVpbGQoZC5nZXROb2RlKCksYil9O2EucHJvdG90eXBlLmxzdGF0U3luYz1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmxzdGF0QmFzZShwKGEpLGYoYikuYmlnaW50KX07YS5wcm90b3R5cGUubHN0YXQ9ZnVuY3Rpb24oYSxiLGQpe2Q9ZShiLGQpO2I9ZFswXTtkPWRbMV07dGhpcy53cmFwQXN5bmModGhpcy5sc3RhdEJhc2UsW3AoYSksCmIuYmlnaW50XSxkKX07YS5wcm90b3R5cGUuc3RhdEJhc2U9ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj0hMSk7dmFyIGQ9dGhpcy5nZXRSZXNvbHZlZExpbmsobihhKSk7aWYoIWQpdGhyb3cgaygiRU5PRU5UIiwic3RhdCIsYSk7cmV0dXJuIGViLmRlZmF1bHQuYnVpbGQoZC5nZXROb2RlKCksYil9O2EucHJvdG90eXBlLnN0YXRTeW5jPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuc3RhdEJhc2UocChhKSxmKGIpLmJpZ2ludCl9O2EucHJvdG90eXBlLnN0YXQ9ZnVuY3Rpb24oYSxiLGQpe2Q9ZShiLGQpO2I9ZFswXTtkPWRbMV07dGhpcy53cmFwQXN5bmModGhpcy5zdGF0QmFzZSxbcChhKSxiLmJpZ2ludF0sZCl9O2EucHJvdG90eXBlLmZzdGF0QmFzZT1mdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPSExKTthPXRoaXMuZ2V0RmlsZUJ5RmQoYSk7aWYoIWEpdGhyb3cgaygiRUJBREYiLCJmc3RhdCIpO3JldHVybiBlYi5kZWZhdWx0LmJ1aWxkKGEubm9kZSxiKX07YS5wcm90b3R5cGUuZnN0YXRTeW5jPQpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmZzdGF0QmFzZShhLGYoYikuYmlnaW50KX07YS5wcm90b3R5cGUuZnN0YXQ9ZnVuY3Rpb24oYSxiLGQpe2I9ZShiLGQpO3RoaXMud3JhcEFzeW5jKHRoaXMuZnN0YXRCYXNlLFthLGJbMF0uYmlnaW50XSxiWzFdKX07YS5wcm90b3R5cGUucmVuYW1lQmFzZT1mdW5jdGlvbihhLGIpe3ZhciBkPXRoaXMuZ2V0TGluayhuKGEpKTtpZighZCl0aHJvdyBrKCJFTk9FTlQiLCJyZW5hbWUiLGEsYik7dmFyIGU9bihiKSxmPXRoaXMuZ2V0TGlua1BhcmVudChlKTtpZighZil0aHJvdyBrKCJFTk9FTlQiLCJyZW5hbWUiLGEsYik7KGE9ZC5wYXJlbnQpJiZhLmRlbGV0ZUNoaWxkKGQpO2Quc3RlcHM9ZmQoZi5zdGVwcyxbZVtlLmxlbmd0aC0xXV0pO2Yuc2V0Q2hpbGQoZC5nZXROYW1lKCksZCl9O2EucHJvdG90eXBlLnJlbmFtZVN5bmM9ZnVuY3Rpb24oYSxiKXthPXAoYSk7Yj1wKGIpO3RoaXMucmVuYW1lQmFzZShhLGIpfTthLnByb3RvdHlwZS5yZW5hbWU9CmZ1bmN0aW9uKGEsYixkKXthPXAoYSk7Yj1wKGIpO3RoaXMud3JhcEFzeW5jKHRoaXMucmVuYW1lQmFzZSxbYSxiXSxkKX07YS5wcm90b3R5cGUuZXhpc3RzQmFzZT1mdW5jdGlvbihhKXtyZXR1cm4hIXRoaXMuc3RhdEJhc2UoYSl9O2EucHJvdG90eXBlLmV4aXN0c1N5bmM9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiB0aGlzLmV4aXN0c0Jhc2UocChhKSl9Y2F0Y2goemIpe3JldHVybiExfX07YS5wcm90b3R5cGUuZXhpc3RzPWZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcyxlPXAoYSk7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKE0uQ0IpO2diLmRlZmF1bHQoZnVuY3Rpb24oKXt0cnl7YihkLmV4aXN0c0Jhc2UoZSkpfWNhdGNoKEFiKXtiKCExKX19KX07YS5wcm90b3R5cGUuYWNjZXNzQmFzZT1mdW5jdGlvbihhKXt0aGlzLmdldExpbmtPclRocm93KGEsImFjY2VzcyIpfTthLnByb3RvdHlwZS5hY2Nlc3NTeW5jPWZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGI9Uyk7CmE9cChhKTt0aGlzLmFjY2Vzc0Jhc2UoYSxifDApfTthLnByb3RvdHlwZS5hY2Nlc3M9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPVM7ImZ1bmN0aW9uIiE9PXR5cGVvZiBiJiYoZT1ifDAsYj1yKGQpKTthPXAoYSk7dGhpcy53cmFwQXN5bmModGhpcy5hY2Nlc3NCYXNlLFthLGVdLGIpfTthLnByb3RvdHlwZS5hcHBlbmRGaWxlU3luYz1mdW5jdGlvbihhLGIsZCl7dm9pZCAwPT09ZCYmKGQ9ZmEpO2Q9aGEoZCk7ZC5mbGFnJiZhPj4+MCE9PWF8fChkLmZsYWc9ImEiKTt0aGlzLndyaXRlRmlsZVN5bmMoYSxiLGQpfTthLnByb3RvdHlwZS5hcHBlbmRGaWxlPWZ1bmN0aW9uKGEsYixkLGUpe2U9bmEoZCxlKTtkPWVbMF07ZT1lWzFdO2QuZmxhZyYmYT4+PjAhPT1hfHwoZC5mbGFnPSJhIik7dGhpcy53cml0ZUZpbGUoYSxiLGQsZSl9O2EucHJvdG90eXBlLnJlYWRkaXJCYXNlPWZ1bmN0aW9uKGEsYil7dmFyIGQ9bihhKTtkPXRoaXMuZ2V0UmVzb2x2ZWRMaW5rKGQpO2lmKCFkKXRocm93IGsoIkVOT0VOVCIsCiJyZWFkZGlyIixhKTtpZighZC5nZXROb2RlKCkuaXNEaXJlY3RvcnkoKSl0aHJvdyBrKCJFTk9URElSIiwic2NhbmRpciIsYSk7aWYoYi53aXRoRmlsZVR5cGVzKXt2YXIgZT1bXTtmb3IoZiBpbiBkLmNoaWxkcmVuKShhPWQuZ2V0Q2hpbGQoZikpJiZlLnB1c2goJGMuZGVmYXVsdC5idWlsZChhLGIuZW5jb2RpbmcpKTtVfHwiYnVmZmVyIj09PWIuZW5jb2Rpbmd8fGUuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLm5hbWU8Yi5uYW1lPy0xOmEubmFtZT5iLm5hbWU/MTowfSk7cmV0dXJuIGV9dmFyIGY9W107Zm9yKGUgaW4gZC5jaGlsZHJlbilmLnB1c2gob2Euc3RyVG9FbmNvZGluZyhlLGIuZW5jb2RpbmcpKTtVfHwiYnVmZmVyIj09PWIuZW5jb2Rpbmd8fGYuc29ydCgpO3JldHVybiBmfTthLnByb3RvdHlwZS5yZWFkZGlyU3luYz1mdW5jdGlvbihhLGIpe2I9bWEoYik7YT1wKGEpO3JldHVybiB0aGlzLnJlYWRkaXJCYXNlKGEsYil9O2EucHJvdG90eXBlLnJlYWRkaXI9ZnVuY3Rpb24oYSwKYixkKXtkPXNhKGIsZCk7Yj1kWzBdO2Q9ZFsxXTthPXAoYSk7dGhpcy53cmFwQXN5bmModGhpcy5yZWFkZGlyQmFzZSxbYSxiXSxkKX07YS5wcm90b3R5cGUucmVhZGxpbmtCYXNlPWZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5nZXRMaW5rT3JUaHJvdyhhLCJyZWFkbGluayIpLmdldE5vZGUoKTtpZighZC5pc1N5bWxpbmsoKSl0aHJvdyBrKCJFSU5WQUwiLCJyZWFkbGluayIsYSk7YT1IK2Quc3ltbGluay5qb2luKEgpO3JldHVybiBvYS5zdHJUb0VuY29kaW5nKGEsYil9O2EucHJvdG90eXBlLnJlYWRsaW5rU3luYz1mdW5jdGlvbihhLGIpe2I9VyhiKTthPXAoYSk7cmV0dXJuIHRoaXMucmVhZGxpbmtCYXNlKGEsYi5lbmNvZGluZyl9O2EucHJvdG90eXBlLnJlYWRsaW5rPWZ1bmN0aW9uKGEsYixkKXtkPWFhKGIsZCk7Yj1kWzBdO2Q9ZFsxXTthPXAoYSk7dGhpcy53cmFwQXN5bmModGhpcy5yZWFkbGlua0Jhc2UsW2EsYi5lbmNvZGluZ10sZCl9O2EucHJvdG90eXBlLmZzeW5jQmFzZT0KZnVuY3Rpb24oYSl7dGhpcy5nZXRGaWxlQnlGZE9yVGhyb3coYSwiZnN5bmMiKX07YS5wcm90b3R5cGUuZnN5bmNTeW5jPWZ1bmN0aW9uKGEpe3RoaXMuZnN5bmNCYXNlKGEpfTthLnByb3RvdHlwZS5mc3luYz1mdW5jdGlvbihhLGIpe3RoaXMud3JhcEFzeW5jKHRoaXMuZnN5bmNCYXNlLFthXSxiKX07YS5wcm90b3R5cGUuZmRhdGFzeW5jQmFzZT1mdW5jdGlvbihhKXt0aGlzLmdldEZpbGVCeUZkT3JUaHJvdyhhLCJmZGF0YXN5bmMiKX07YS5wcm90b3R5cGUuZmRhdGFzeW5jU3luYz1mdW5jdGlvbihhKXt0aGlzLmZkYXRhc3luY0Jhc2UoYSl9O2EucHJvdG90eXBlLmZkYXRhc3luYz1mdW5jdGlvbihhLGIpe3RoaXMud3JhcEFzeW5jKHRoaXMuZmRhdGFzeW5jQmFzZSxbYV0sYil9O2EucHJvdG90eXBlLmZ0cnVuY2F0ZUJhc2U9ZnVuY3Rpb24oYSxiKXt0aGlzLmdldEZpbGVCeUZkT3JUaHJvdyhhLCJmdHJ1bmNhdGUiKS50cnVuY2F0ZShiKX07YS5wcm90b3R5cGUuZnRydW5jYXRlU3luYz0KZnVuY3Rpb24oYSxiKXt0aGlzLmZ0cnVuY2F0ZUJhc2UoYSxiKX07YS5wcm90b3R5cGUuZnRydW5jYXRlPWZ1bmN0aW9uKGEsYixkKXt2YXIgZT0ibnVtYmVyIj09PXR5cGVvZiBiP2I6MDtiPXIoIm51bWJlciI9PT10eXBlb2YgYj9kOmIpO3RoaXMud3JhcEFzeW5jKHRoaXMuZnRydW5jYXRlQmFzZSxbYSxlXSxiKX07YS5wcm90b3R5cGUudHJ1bmNhdGVCYXNlPWZ1bmN0aW9uKGEsYil7YT10aGlzLm9wZW5TeW5jKGEsInIrIik7dHJ5e3RoaXMuZnRydW5jYXRlU3luYyhhLGIpfWZpbmFsbHl7dGhpcy5jbG9zZVN5bmMoYSl9fTthLnByb3RvdHlwZS50cnVuY2F0ZVN5bmM9ZnVuY3Rpb24oYSxiKXtpZihhPj4+MD09PWEpcmV0dXJuIHRoaXMuZnRydW5jYXRlU3luYyhhLGIpO3RoaXMudHJ1bmNhdGVCYXNlKGEsYil9O2EucHJvdG90eXBlLnRydW5jYXRlPWZ1bmN0aW9uKGEsYixkKXt2YXIgZT0ibnVtYmVyIj09PXR5cGVvZiBiP2I6MDtiPXIoIm51bWJlciI9PT10eXBlb2YgYj9kOmIpOwppZihhPj4+MD09PWEpcmV0dXJuIHRoaXMuZnRydW5jYXRlKGEsZSxiKTt0aGlzLndyYXBBc3luYyh0aGlzLnRydW5jYXRlQmFzZSxbYSxlXSxiKX07YS5wcm90b3R5cGUuZnV0aW1lc0Jhc2U9ZnVuY3Rpb24oYSxiLGQpe2E9dGhpcy5nZXRGaWxlQnlGZE9yVGhyb3coYSwiZnV0aW1lcyIpLm5vZGU7YS5hdGltZT1uZXcgRGF0ZSgxRTMqYik7YS5tdGltZT1uZXcgRGF0ZSgxRTMqZCl9O2EucHJvdG90eXBlLmZ1dGltZXNTeW5jPWZ1bmN0aW9uKGEsYixkKXt0aGlzLmZ1dGltZXNCYXNlKGEsRChiKSxEKGQpKX07YS5wcm90b3R5cGUuZnV0aW1lcz1mdW5jdGlvbihhLGIsZCxlKXt0aGlzLndyYXBBc3luYyh0aGlzLmZ1dGltZXNCYXNlLFthLEQoYiksRChkKV0sZSl9O2EucHJvdG90eXBlLnV0aW1lc0Jhc2U9ZnVuY3Rpb24oYSxiLGQpe2E9dGhpcy5vcGVuU3luYyhhLCJyKyIpO3RyeXt0aGlzLmZ1dGltZXNCYXNlKGEsYixkKX1maW5hbGx5e3RoaXMuY2xvc2VTeW5jKGEpfX07YS5wcm90b3R5cGUudXRpbWVzU3luYz0KZnVuY3Rpb24oYSxiLGQpe3RoaXMudXRpbWVzQmFzZShwKGEpLEQoYiksRChkKSl9O2EucHJvdG90eXBlLnV0aW1lcz1mdW5jdGlvbihhLGIsZCxlKXt0aGlzLndyYXBBc3luYyh0aGlzLnV0aW1lc0Jhc2UsW3AoYSksRChiKSxEKGQpXSxlKX07YS5wcm90b3R5cGUubWtkaXJCYXNlPWZ1bmN0aW9uKGEsYil7dmFyIGQ9bihhKTtpZighZC5sZW5ndGgpdGhyb3cgaygiRUlTRElSIiwibWtkaXIiLGEpO3ZhciBlPXRoaXMuZ2V0TGlua1BhcmVudEFzRGlyT3JUaHJvdyhhLCJta2RpciIpO2Q9ZFtkLmxlbmd0aC0xXTtpZihlLmdldENoaWxkKGQpKXRocm93IGsoIkVFWElTVCIsIm1rZGlyIixhKTtlLmNyZWF0ZUNoaWxkKGQsdGhpcy5jcmVhdGVOb2RlKCEwLGIpKX07YS5wcm90b3R5cGUubWtkaXJwQmFzZT1mdW5jdGlvbihhLGIpe2E9bihhKTtmb3IodmFyIGQ9dGhpcy5yb290LGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9YVtlXTtpZighZC5nZXROb2RlKCkuaXNEaXJlY3RvcnkoKSl0aHJvdyBrKCJFTk9URElSIiwKIm1rZGlyIixkLmdldFBhdGgoKSk7dmFyIGg9ZC5nZXRDaGlsZChmKTtpZihoKWlmKGguZ2V0Tm9kZSgpLmlzRGlyZWN0b3J5KCkpZD1oO2Vsc2UgdGhyb3cgaygiRU5PVERJUiIsIm1rZGlyIixoLmdldFBhdGgoKSk7ZWxzZSBkPWQuY3JlYXRlQ2hpbGQoZix0aGlzLmNyZWF0ZU5vZGUoITAsYikpfX07YS5wcm90b3R5cGUubWtkaXJTeW5jPWZ1bmN0aW9uKGEsYil7Yj1nKGIpO3ZhciBkPXkoYi5tb2RlLDUxMSk7YT1wKGEpO2IucmVjdXJzaXZlP3RoaXMubWtkaXJwQmFzZShhLGQpOnRoaXMubWtkaXJCYXNlKGEsZCl9O2EucHJvdG90eXBlLm1rZGlyPWZ1bmN0aW9uKGEsYixkKXt2YXIgZT1nKGIpO2I9cigiZnVuY3Rpb24iPT09dHlwZW9mIGI/YjpkKTtkPXkoZS5tb2RlLDUxMSk7YT1wKGEpO2UucmVjdXJzaXZlP3RoaXMud3JhcEFzeW5jKHRoaXMubWtkaXJwQmFzZSxbYSxkXSxiKTp0aGlzLndyYXBBc3luYyh0aGlzLm1rZGlyQmFzZSxbYSxkXSxiKX07YS5wcm90b3R5cGUubWtkaXJwU3luYz0KZnVuY3Rpb24oYSxiKXt0aGlzLm1rZGlyU3luYyhhLHttb2RlOmIscmVjdXJzaXZlOiEwfSl9O2EucHJvdG90eXBlLm1rZGlycD1mdW5jdGlvbihhLGIsZCl7dmFyIGU9ImZ1bmN0aW9uIj09PXR5cGVvZiBiP3ZvaWQgMDpiO2I9cigiZnVuY3Rpb24iPT09dHlwZW9mIGI/YjpkKTt0aGlzLm1rZGlyKGEse21vZGU6ZSxyZWN1cnNpdmU6ITB9LGIpfTthLnByb3RvdHlwZS5ta2R0ZW1wQmFzZT1mdW5jdGlvbihhLGIsZCl7dm9pZCAwPT09ZCYmKGQ9NSk7dmFyIGU9YSt0aGlzLmdlblJuZFN0cigpO3RyeXtyZXR1cm4gdGhpcy5ta2RpckJhc2UoZSw1MTEpLG9hLnN0clRvRW5jb2RpbmcoZSxiKX1jYXRjaChBYil7aWYoIkVFWElTVCI9PT1BYi5jb2RlKXtpZigxPGQpcmV0dXJuIHRoaXMubWtkdGVtcEJhc2UoYSxiLGQtMSk7dGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBjcmVhdGUgdGVtcCBkaXIuIik7fXRocm93IEFiO319O2EucHJvdG90eXBlLm1rZHRlbXBTeW5jPWZ1bmN0aW9uKGEsYil7Yj0KVyhiKS5lbmNvZGluZztpZighYXx8InN0cmluZyIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJmaWxlbmFtZSBwcmVmaXggaXMgcmVxdWlyZWQiKTtFKGEpO3JldHVybiB0aGlzLm1rZHRlbXBCYXNlKGEsYil9O2EucHJvdG90eXBlLm1rZHRlbXA9ZnVuY3Rpb24oYSxiLGQpe2Q9YWEoYixkKTtiPWRbMF0uZW5jb2Rpbmc7ZD1kWzFdO2lmKCFhfHwic3RyaW5nIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoImZpbGVuYW1lIHByZWZpeCBpcyByZXF1aXJlZCIpO0UoYSkmJnRoaXMud3JhcEFzeW5jKHRoaXMubWtkdGVtcEJhc2UsW2EsYl0sZCl9O2EucHJvdG90eXBlLnJtZGlyQmFzZT1mdW5jdGlvbihhLGIpe2I9eGEoe30sbGEsYik7dmFyIGQ9dGhpcy5nZXRMaW5rQXNEaXJPclRocm93KGEsInJtZGlyIik7aWYoZC5sZW5ndGgmJiFiLnJlY3Vyc2l2ZSl0aHJvdyBrKCJFTk9URU1QVFkiLCJybWRpciIsYSk7dGhpcy5kZWxldGVMaW5rKGQpfTthLnByb3RvdHlwZS5ybWRpclN5bmM9CmZ1bmN0aW9uKGEsYil7dGhpcy5ybWRpckJhc2UocChhKSxiKX07YS5wcm90b3R5cGUucm1kaXI9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPXhhKHt9LGxhLGIpO2I9cigiZnVuY3Rpb24iPT09dHlwZW9mIGI/YjpkKTt0aGlzLndyYXBBc3luYyh0aGlzLnJtZGlyQmFzZSxbcChhKSxlXSxiKX07YS5wcm90b3R5cGUuZmNobW9kQmFzZT1mdW5jdGlvbihhLGIpe3RoaXMuZ2V0RmlsZUJ5RmRPclRocm93KGEsImZjaG1vZCIpLmNobW9kKGIpfTthLnByb3RvdHlwZS5mY2htb2RTeW5jPWZ1bmN0aW9uKGEsYil7dGhpcy5mY2htb2RCYXNlKGEseShiKSl9O2EucHJvdG90eXBlLmZjaG1vZD1mdW5jdGlvbihhLGIsZCl7dGhpcy53cmFwQXN5bmModGhpcy5mY2htb2RCYXNlLFthLHkoYildLGQpfTthLnByb3RvdHlwZS5jaG1vZEJhc2U9ZnVuY3Rpb24oYSxiKXthPXRoaXMub3BlblN5bmMoYSwicisiKTt0cnl7dGhpcy5mY2htb2RCYXNlKGEsYil9ZmluYWxseXt0aGlzLmNsb3NlU3luYyhhKX19OwphLnByb3RvdHlwZS5jaG1vZFN5bmM9ZnVuY3Rpb24oYSxiKXtiPXkoYik7YT1wKGEpO3RoaXMuY2htb2RCYXNlKGEsYil9O2EucHJvdG90eXBlLmNobW9kPWZ1bmN0aW9uKGEsYixkKXtiPXkoYik7YT1wKGEpO3RoaXMud3JhcEFzeW5jKHRoaXMuY2htb2RCYXNlLFthLGJdLGQpfTthLnByb3RvdHlwZS5sY2htb2RCYXNlPWZ1bmN0aW9uKGEsYil7YT10aGlzLm9wZW5CYXNlKGEsQWEsMCwhMSk7dHJ5e3RoaXMuZmNobW9kQmFzZShhLGIpfWZpbmFsbHl7dGhpcy5jbG9zZVN5bmMoYSl9fTthLnByb3RvdHlwZS5sY2htb2RTeW5jPWZ1bmN0aW9uKGEsYil7Yj15KGIpO2E9cChhKTt0aGlzLmxjaG1vZEJhc2UoYSxiKX07YS5wcm90b3R5cGUubGNobW9kPWZ1bmN0aW9uKGEsYixkKXtiPXkoYik7YT1wKGEpO3RoaXMud3JhcEFzeW5jKHRoaXMubGNobW9kQmFzZSxbYSxiXSxkKX07YS5wcm90b3R5cGUuZmNob3duQmFzZT1mdW5jdGlvbihhLGIsZCl7dGhpcy5nZXRGaWxlQnlGZE9yVGhyb3coYSwKImZjaG93biIpLmNob3duKGIsZCl9O2EucHJvdG90eXBlLmZjaG93blN5bmM9ZnVuY3Rpb24oYSxiLGQpe3coYik7RihkKTt0aGlzLmZjaG93bkJhc2UoYSxiLGQpfTthLnByb3RvdHlwZS5mY2hvd249ZnVuY3Rpb24oYSxiLGQsZSl7dyhiKTtGKGQpO3RoaXMud3JhcEFzeW5jKHRoaXMuZmNob3duQmFzZSxbYSxiLGRdLGUpfTthLnByb3RvdHlwZS5jaG93bkJhc2U9ZnVuY3Rpb24oYSxiLGQpe3RoaXMuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhhLCJjaG93biIpLmdldE5vZGUoKS5jaG93bihiLGQpfTthLnByb3RvdHlwZS5jaG93blN5bmM9ZnVuY3Rpb24oYSxiLGQpe3coYik7RihkKTt0aGlzLmNob3duQmFzZShwKGEpLGIsZCl9O2EucHJvdG90eXBlLmNob3duPWZ1bmN0aW9uKGEsYixkLGUpe3coYik7RihkKTt0aGlzLndyYXBBc3luYyh0aGlzLmNob3duQmFzZSxbcChhKSxiLGRdLGUpfTthLnByb3RvdHlwZS5sY2hvd25CYXNlPWZ1bmN0aW9uKGEsYixkKXt0aGlzLmdldExpbmtPclRocm93KGEsCiJsY2hvd24iKS5nZXROb2RlKCkuY2hvd24oYixkKX07YS5wcm90b3R5cGUubGNob3duU3luYz1mdW5jdGlvbihhLGIsZCl7dyhiKTtGKGQpO3RoaXMubGNob3duQmFzZShwKGEpLGIsZCl9O2EucHJvdG90eXBlLmxjaG93bj1mdW5jdGlvbihhLGIsZCxlKXt3KGIpO0YoZCk7dGhpcy53cmFwQXN5bmModGhpcy5sY2hvd25CYXNlLFtwKGEpLGIsZF0sZSl9O2EucHJvdG90eXBlLndhdGNoRmlsZT1mdW5jdGlvbihhLGIsZCl7YT1wKGEpO3ZhciBlPWI7ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiYoZD1iLGU9bnVsbCk7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBkKXRocm93IEVycm9yKCcid2F0Y2hGaWxlKCkiIHJlcXVpcmVzIGEgbGlzdGVuZXIgZnVuY3Rpb24nKTtiPTUwMDc7dmFyIGY9ITA7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKCJudW1iZXIiPT09dHlwZW9mIGUuaW50ZXJ2YWwmJihiPWUuaW50ZXJ2YWwpLCJib29sZWFuIj09PXR5cGVvZiBlLnBlcnNpc3RlbnQmJihmPWUucGVyc2lzdGVudCkpOwooZT10aGlzLnN0YXRXYXRjaGVyc1thXSl8fChlPW5ldyB0aGlzLlN0YXRXYXRjaGVyLGUuc3RhcnQoYSxmLGIpLHRoaXMuc3RhdFdhdGNoZXJzW2FdPWUpO2UuYWRkTGlzdGVuZXIoImNoYW5nZSIsZCk7cmV0dXJuIGV9O2EucHJvdG90eXBlLnVud2F0Y2hGaWxlPWZ1bmN0aW9uKGEsYil7YT1wKGEpO3ZhciBkPXRoaXMuc3RhdFdhdGNoZXJzW2FdO2QmJigiZnVuY3Rpb24iPT09dHlwZW9mIGI/ZC5yZW1vdmVMaXN0ZW5lcigiY2hhbmdlIixiKTpkLnJlbW92ZUFsbExpc3RlbmVycygiY2hhbmdlIiksMD09PWQubGlzdGVuZXJDb3VudCgiY2hhbmdlIikmJihkLnN0b3AoKSxkZWxldGUgdGhpcy5zdGF0V2F0Y2hlcnNbYV0pKX07YS5wcm90b3R5cGUuY3JlYXRlUmVhZFN0cmVhbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgdGhpcy5SZWFkU3RyZWFtKGEsYil9O2EucHJvdG90eXBlLmNyZWF0ZVdyaXRlU3RyZWFtPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyB0aGlzLldyaXRlU3RyZWFtKGEsCmIpfTthLnByb3RvdHlwZS53YXRjaD1mdW5jdGlvbihhLGIsZCl7YT1wKGEpO3ZhciBlPWI7ImZ1bmN0aW9uIj09PXR5cGVvZiBiJiYoZD1iLGU9bnVsbCk7dmFyIGY9VyhlKTtiPWYucGVyc2lzdGVudDtlPWYucmVjdXJzaXZlO2Y9Zi5lbmNvZGluZzt2b2lkIDA9PT1iJiYoYj0hMCk7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciBoPW5ldyB0aGlzLkZTV2F0Y2hlcjtoLnN0YXJ0KGEsYixlLGYpO2QmJmguYWRkTGlzdGVuZXIoImNoYW5nZSIsZCk7cmV0dXJuIGh9O2EuZmQ9MjE0NzQ4MzY0NztyZXR1cm4gYX0oKTtiLlZvbHVtZT1hO3ZhciBxYT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIpe3ZhciBkPWEuY2FsbCh0aGlzKXx8dGhpcztkLm9uSW50ZXJ2YWw9ZnVuY3Rpb24oKXt0cnl7dmFyIGE9ZC52b2wuc3RhdFN5bmMoZC5maWxlbmFtZSk7ZC5oYXNDaGFuZ2VkKGEpJiYoZC5lbWl0KCJjaGFuZ2UiLGEsZC5wcmV2KSxkLnByZXY9YSl9ZmluYWxseXtkLmxvb3AoKX19O2Qudm9sPWI7cmV0dXJuIGR9CmhiKGIsYSk7Yi5wcm90b3R5cGUubG9vcD1mdW5jdGlvbigpe3RoaXMudGltZW91dFJlZj10aGlzLnNldFRpbWVvdXQodGhpcy5vbkludGVydmFsLHRoaXMuaW50ZXJ2YWwpfTtiLnByb3RvdHlwZS5oYXNDaGFuZ2VkPWZ1bmN0aW9uKGEpe3JldHVybiBhLm10aW1lTXM+dGhpcy5wcmV2Lm10aW1lTXN8fGEubmxpbmshPT10aGlzLnByZXYubmxpbms/ITA6ITF9O2IucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEsYixkKXt2b2lkIDA9PT1iJiYoYj0hMCk7dm9pZCAwPT09ZCYmKGQ9NTAwNyk7dGhpcy5maWxlbmFtZT1wKGEpO3RoaXMuc2V0VGltZW91dD1iP3NldFRpbWVvdXQ6bWYuZGVmYXVsdDt0aGlzLmludGVydmFsPWQ7dGhpcy5wcmV2PXRoaXMudm9sLnN0YXRTeW5jKHRoaXMuZmlsZW5hbWUpO3RoaXMubG9vcCgpfTtiLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlZik7WS5kZWZhdWx0Lm5leHRUaWNrKGJjLHRoaXMpfTtyZXR1cm4gYn0oeC5FdmVudEVtaXR0ZXIpOwpiLlN0YXRXYXRjaGVyPXFhO3ZhciBpYTt3Yi5pbmhlcml0cyh0YSxjYS5SZWFkYWJsZSk7Yi5SZWFkU3RyZWFtPXRhO3RhLnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLl92b2wub3Blbih0aGlzLnBhdGgsdGhpcy5mbGFncyx0aGlzLm1vZGUsZnVuY3Rpb24oYixkKXtiPyhhLmF1dG9DbG9zZSYmYS5kZXN0cm95JiZhLmRlc3Ryb3koKSxhLmVtaXQoImVycm9yIixiKSk6KGEuZmQ9ZCxhLmVtaXQoIm9wZW4iLGQpLGEucmVhZCgpKX0pfTt0YS5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oYSl7aWYoIm51bWJlciIhPT10eXBlb2YgdGhpcy5mZClyZXR1cm4gdGhpcy5vbmNlKCJvcGVuIixmdW5jdGlvbigpe3RoaXMuX3JlYWQoYSl9KTtpZighdGhpcy5kZXN0cm95ZWQpe2lmKCFpYXx8MTI4PmlhLmxlbmd0aC1pYS51c2VkKWlhPUouYnVmZmVyQWxsb2NVbnNhZmUodGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrKSxpYS51c2VkPTA7dmFyIGI9aWEsCmQ9TWF0aC5taW4oaWEubGVuZ3RoLWlhLnVzZWQsYSksZT1pYS51c2VkO3ZvaWQgMCE9PXRoaXMucG9zJiYoZD1NYXRoLm1pbih0aGlzLmVuZC10aGlzLnBvcysxLGQpKTtpZigwPj1kKXJldHVybiB0aGlzLnB1c2gobnVsbCk7dmFyIGY9dGhpczt0aGlzLl92b2wucmVhZCh0aGlzLmZkLGlhLGlhLnVzZWQsZCx0aGlzLnBvcyxmdW5jdGlvbihhLGQpe2E/KGYuYXV0b0Nsb3NlJiZmLmRlc3Ryb3kmJmYuZGVzdHJveSgpLGYuZW1pdCgiZXJyb3IiLGEpKTooYT1udWxsLDA8ZCYmKGYuYnl0ZXNSZWFkKz1kLGE9Yi5zbGljZShlLGUrZCkpLGYucHVzaChhKSl9KTt2b2lkIDAhPT10aGlzLnBvcyYmKHRoaXMucG9zKz1kKTtpYS51c2VkKz1kfX07dGEucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGEsYil7dGhpcy5jbG9zZShmdW5jdGlvbihkKXtiKGF8fGQpfSl9O3RhLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzO2lmKGEpdGhpcy5vbmNlKCJjbG9zZSIsYSk7aWYodGhpcy5jbG9zZWR8fAoibnVtYmVyIiE9PXR5cGVvZiB0aGlzLmZkKXtpZigibnVtYmVyIiE9PXR5cGVvZiB0aGlzLmZkKXt0aGlzLm9uY2UoIm9wZW4iLGJoKTtyZXR1cm59cmV0dXJuIFkuZGVmYXVsdC5uZXh0VGljayhmdW5jdGlvbigpe3JldHVybiBiLmVtaXQoImNsb3NlIil9KX10aGlzLmNsb3NlZD0hMDt0aGlzLl92b2wuY2xvc2UodGhpcy5mZCxmdW5jdGlvbihhKXthP2IuZW1pdCgiZXJyb3IiLGEpOmIuZW1pdCgiY2xvc2UiKX0pO3RoaXMuZmQ9bnVsbH07d2IuaW5oZXJpdHMoWixjYS5Xcml0YWJsZSk7Yi5Xcml0ZVN0cmVhbT1aO1oucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oKXt0aGlzLl92b2wub3Blbih0aGlzLnBhdGgsdGhpcy5mbGFncyx0aGlzLm1vZGUsZnVuY3Rpb24oYSxiKXthPyh0aGlzLmF1dG9DbG9zZSYmdGhpcy5kZXN0cm95JiZ0aGlzLmRlc3Ryb3koKSx0aGlzLmVtaXQoImVycm9yIixhKSk6KHRoaXMuZmQ9Yix0aGlzLmVtaXQoIm9wZW4iLGIpKX0uYmluZCh0aGlzKSl9O1oucHJvdG90eXBlLl93cml0ZT0KZnVuY3Rpb24oYSxiLGQpe2lmKCEoYSBpbnN0YW5jZW9mIEouQnVmZmVyKSlyZXR1cm4gdGhpcy5lbWl0KCJlcnJvciIsRXJyb3IoIkludmFsaWQgZGF0YSIpKTtpZigibnVtYmVyIiE9PXR5cGVvZiB0aGlzLmZkKXJldHVybiB0aGlzLm9uY2UoIm9wZW4iLGZ1bmN0aW9uKCl7dGhpcy5fd3JpdGUoYSxiLGQpfSk7dmFyIGU9dGhpczt0aGlzLl92b2wud3JpdGUodGhpcy5mZCxhLDAsYS5sZW5ndGgsdGhpcy5wb3MsZnVuY3Rpb24oYSxiKXtpZihhKXJldHVybiBlLmF1dG9DbG9zZSYmZS5kZXN0cm95JiZlLmRlc3Ryb3koKSxkKGEpO2UuYnl0ZXNXcml0dGVuKz1iO2QoKX0pO3ZvaWQgMCE9PXRoaXMucG9zJiYodGhpcy5wb3MrPWEubGVuZ3RoKX07Wi5wcm90b3R5cGUuX3dyaXRldj1mdW5jdGlvbihhLGIpe2lmKCJudW1iZXIiIT09dHlwZW9mIHRoaXMuZmQpcmV0dXJuIHRoaXMub25jZSgib3BlbiIsZnVuY3Rpb24oKXt0aGlzLl93cml0ZXYoYSxiKX0pO2Zvcih2YXIgZD10aGlzLGU9CmEubGVuZ3RoLGY9QXJyYXkoZSksaD0wLGc9MDtnPGU7ZysrKXt2YXIgaz1hW2ddLmNodW5rO2ZbZ109aztoKz1rLmxlbmd0aH1lPUouQnVmZmVyLmNvbmNhdChmKTt0aGlzLl92b2wud3JpdGUodGhpcy5mZCxlLDAsZS5sZW5ndGgsdGhpcy5wb3MsZnVuY3Rpb24oYSxlKXtpZihhKXJldHVybiBkLmRlc3Ryb3kmJmQuZGVzdHJveSgpLGIoYSk7ZC5ieXRlc1dyaXR0ZW4rPWU7YigpfSk7dm9pZCAwIT09dGhpcy5wb3MmJih0aGlzLnBvcys9aCl9O1oucHJvdG90eXBlLl9kZXN0cm95PXRhLnByb3RvdHlwZS5fZGVzdHJveTtaLnByb3RvdHlwZS5jbG9zZT10YS5wcm90b3R5cGUuY2xvc2U7Wi5wcm90b3R5cGUuZGVzdHJveVNvb249Wi5wcm90b3R5cGUuZW5kO3ZhciByYT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIpe3ZhciBkPWEuY2FsbCh0aGlzKXx8dGhpcztkLl9maWxlbmFtZT0iIjtkLl9maWxlbmFtZUVuY29kZWQ9IiI7ZC5fcmVjdXJzaXZlPSExO2QuX2VuY29kaW5nPW9hLkVOQ09ESU5HX1VURjg7CmQuX29uTm9kZUNoYW5nZT1mdW5jdGlvbigpe2QuX2VtaXQoImNoYW5nZSIpfTtkLl9vblBhcmVudENoaWxkPWZ1bmN0aW9uKGEpe2EuZ2V0TmFtZSgpPT09ZC5fZ2V0TmFtZSgpJiZkLl9lbWl0KCJyZW5hbWUiKX07ZC5fZW1pdD1mdW5jdGlvbihhKXtkLmVtaXQoImNoYW5nZSIsYSxkLl9maWxlbmFtZUVuY29kZWQpfTtkLl9wZXJzaXN0PWZ1bmN0aW9uKCl7ZC5fdGltZXI9c2V0VGltZW91dChkLl9wZXJzaXN0LDFFNil9O2QuX3ZvbD1iO3JldHVybiBkfWhiKGIsYSk7Yi5wcm90b3R5cGUuX2dldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcHMubGVuZ3RoLTFdfTtiLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihhLGIsZCxlKXt2b2lkIDA9PT1iJiYoYj0hMCk7dm9pZCAwPT09ZCYmKGQ9ITEpO3ZvaWQgMD09PWUmJihlPW9hLkVOQ09ESU5HX1VURjgpO3RoaXMuX2ZpbGVuYW1lPXAoYSk7dGhpcy5fc3RlcHM9bih0aGlzLl9maWxlbmFtZSk7dGhpcy5fZmlsZW5hbWVFbmNvZGVkPQpvYS5zdHJUb0VuY29kaW5nKHRoaXMuX2ZpbGVuYW1lKTt0aGlzLl9yZWN1cnNpdmU9ZDt0aGlzLl9lbmNvZGluZz1lO3RyeXt0aGlzLl9saW5rPXRoaXMuX3ZvbC5nZXRMaW5rT3JUaHJvdyh0aGlzLl9maWxlbmFtZSwiRlNXYXRjaGVyIil9Y2F0Y2goZWQpe3Rocm93IGI9RXJyb3IoIndhdGNoICIrdGhpcy5fZmlsZW5hbWUrIiAiK2VkLmNvZGUpLGIuY29kZT1lZC5jb2RlLGIuZXJybm89ZWQuY29kZSxiO310aGlzLl9saW5rLmdldE5vZGUoKS5vbigiY2hhbmdlIix0aGlzLl9vbk5vZGVDaGFuZ2UpO3RoaXMuX2xpbmsub24oImNoaWxkOmFkZCIsdGhpcy5fb25Ob2RlQ2hhbmdlKTt0aGlzLl9saW5rLm9uKCJjaGlsZDpkZWxldGUiLHRoaXMuX29uTm9kZUNoYW5nZSk7aWYoYT10aGlzLl9saW5rLnBhcmVudClhLnNldE1heExpc3RlbmVycyhhLmdldE1heExpc3RlbmVycygpKzEpLGEub24oImNoaWxkOmRlbGV0ZSIsdGhpcy5fb25QYXJlbnRDaGlsZCk7YiYmdGhpcy5fcGVyc2lzdCgpfTsKYi5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO3RoaXMuX2xpbmsuZ2V0Tm9kZSgpLnJlbW92ZUxpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuX29uTm9kZUNoYW5nZSk7dmFyIGE9dGhpcy5fbGluay5wYXJlbnQ7YSYmYS5yZW1vdmVMaXN0ZW5lcigiY2hpbGQ6ZGVsZXRlIix0aGlzLl9vblBhcmVudENoaWxkKX07cmV0dXJuIGJ9KHguRXZlbnRFbWl0dGVyKTtiLkZTV2F0Y2hlcj1yYX0pO1EoUWEpO3ZhciBlaD1RYS5wYXRoVG9GaWxlbmFtZSxmaD1RYS5maWxlbmFtZVRvU3RlcHMscWY9UWEuVm9sdW1lLGdkPUsoZnVuY3Rpb24oYSxiKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Yi5mc1Byb3BzPSJjb25zdGFudHMgRl9PSyBSX09LIFdfT0sgWF9PSyBTdGF0cyIuc3BsaXQoIiAiKTtiLmZzU3luY01ldGhvZHM9InJlbmFtZVN5bmMgZnRydW5jYXRlU3luYyB0cnVuY2F0ZVN5bmMgY2hvd25TeW5jIGZjaG93blN5bmMgbGNob3duU3luYyBjaG1vZFN5bmMgZmNobW9kU3luYyBsY2htb2RTeW5jIHN0YXRTeW5jIGxzdGF0U3luYyBmc3RhdFN5bmMgbGlua1N5bmMgc3ltbGlua1N5bmMgcmVhZGxpbmtTeW5jIHJlYWxwYXRoU3luYyB1bmxpbmtTeW5jIHJtZGlyU3luYyBta2RpclN5bmMgbWtkaXJwU3luYyByZWFkZGlyU3luYyBjbG9zZVN5bmMgb3BlblN5bmMgdXRpbWVzU3luYyBmdXRpbWVzU3luYyBmc3luY1N5bmMgd3JpdGVTeW5jIHJlYWRTeW5jIHJlYWRGaWxlU3luYyB3cml0ZUZpbGVTeW5jIGFwcGVuZEZpbGVTeW5jIGV4aXN0c1N5bmMgYWNjZXNzU3luYyBmZGF0YXN5bmNTeW5jIG1rZHRlbXBTeW5jIGNvcHlGaWxlU3luYyBjcmVhdGVSZWFkU3RyZWFtIGNyZWF0ZVdyaXRlU3RyZWFtIi5zcGxpdCgiICIpOwpiLmZzQXN5bmNNZXRob2RzPSJyZW5hbWUgZnRydW5jYXRlIHRydW5jYXRlIGNob3duIGZjaG93biBsY2hvd24gY2htb2QgZmNobW9kIGxjaG1vZCBzdGF0IGxzdGF0IGZzdGF0IGxpbmsgc3ltbGluayByZWFkbGluayByZWFscGF0aCB1bmxpbmsgcm1kaXIgbWtkaXIgbWtkaXJwIHJlYWRkaXIgY2xvc2Ugb3BlbiB1dGltZXMgZnV0aW1lcyBmc3luYyB3cml0ZSByZWFkIHJlYWRGaWxlIHdyaXRlRmlsZSBhcHBlbmRGaWxlIGV4aXN0cyBhY2Nlc3MgZmRhdGFzeW5jIG1rZHRlbXAgY29weUZpbGUgd2F0Y2hGaWxlIHVud2F0Y2hGaWxlIHdhdGNoIi5zcGxpdCgiICIpfSk7UShnZCk7dmFyIHJmPUsoZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKGEpe2Zvcih2YXIgYj17Rl9PSzpoLFJfT0s6ayxXX09LOmwsWF9PSzptLGNvbnN0YW50czp1LmNvbnN0YW50cyxTdGF0czplYi5kZWZhdWx0LERpcmVudDokYy5kZWZhdWx0fSxkPTAsZT1mO2Q8ZS5sZW5ndGg7ZCsrKXt2YXIgcT1lW2RdOyJmdW5jdGlvbiI9PT0KdHlwZW9mIGFbcV0mJihiW3FdPWFbcV0uYmluZChhKSl9ZD0wO2ZvcihlPWc7ZDxlLmxlbmd0aDtkKyspcT1lW2RdLCJmdW5jdGlvbiI9PT10eXBlb2YgYVtxXSYmKGJbcV09YVtxXS5iaW5kKGEpKTtiLlN0YXRXYXRjaGVyPWEuU3RhdFdhdGNoZXI7Yi5GU1dhdGNoZXI9YS5GU1dhdGNoZXI7Yi5Xcml0ZVN0cmVhbT1hLldyaXRlU3RyZWFtO2IuUmVhZFN0cmVhbT1hLlJlYWRTdHJlYW07Yi5wcm9taXNlcz1hLnByb21pc2VzO2IuX3RvVW5peFRpbWVzdGFtcD1RYS50b1VuaXhUaW1lc3RhbXA7cmV0dXJuIGJ9dmFyIGU9TiYmTi5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGEpe2Zvcih2YXIgYixkPTEsZT1hcmd1bWVudHMubGVuZ3RoO2Q8ZTtkKyspe2I9YXJndW1lbnRzW2RdO2Zvcih2YXIgZiBpbiBiKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGYpJiYoYVtmXT1iW2ZdKX1yZXR1cm4gYX07cmV0dXJuIGUuYXBwbHkodGhpcywKYXJndW1lbnRzKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBmPWdkLmZzU3luY01ldGhvZHMsZz1nZC5mc0FzeW5jTWV0aG9kcyxoPXUuY29uc3RhbnRzLkZfT0ssaz11LmNvbnN0YW50cy5SX09LLGw9dS5jb25zdGFudHMuV19PSyxtPXUuY29uc3RhbnRzLlhfT0s7Yi5Wb2x1bWU9UWEuVm9sdW1lO2Iudm9sPW5ldyBRYS5Wb2x1bWU7Yi5jcmVhdGVGc0Zyb21Wb2x1bWU9ZDtiLmZzPWQoYi52b2wpO2EuZXhwb3J0cz1lKGUoe30sYS5leHBvcnRzKSxiLmZzKTthLmV4cG9ydHMuc2VtYW50aWM9ITB9KTtRKHJmKTt2YXIgc2Y9cmYuY3JlYXRlRnNGcm9tVm9sdW1lO1dnLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYixkLGU9W10sZj0xO2Y8YXJndW1lbnRzLmxlbmd0aDtmKyspZVtmLTFdPWFyZ3VtZW50c1tmXTtmPXRoaXMubGlzdGVuZXJzKGEpO3RyeXtmb3IodmFyIGc9cmMoZiksaD1nLm5leHQoKTshaC5kb25lO2g9CmcubmV4dCgpKXt2YXIgaz1oLnZhbHVlO3RyeXtrLmFwcGx5KHZvaWQgMCxKZihlKSl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcih0KX19fWNhdGNoKHQpe2I9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2gmJiFoLmRvbmUmJihkPWcucmV0dXJuKSYmZC5jYWxsKGcpfWZpbmFsbHl7aWYoYil0aHJvdyBiLmVycm9yO319cmV0dXJuIDA8Zi5sZW5ndGh9O3ZhciBnaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt0aGlzLnZvbHVtZT1uZXcgcWY7dGhpcy5mcz1zZih0aGlzLnZvbHVtZSk7dGhpcy5mcm9tSlNPTih7Ii9kZXYvc3RkaW4iOiIiLCIvZGV2L3N0ZG91dCI6IiIsIi9kZXYvc3RkZXJyIjoiIn0pfWEucHJvdG90eXBlLl90b0pTT049ZnVuY3Rpb24oYSxkLGUpe3ZvaWQgMD09PWQmJihkPXt9KTt2YXIgYj0hMCxnO2ZvcihnIGluIGEuY2hpbGRyZW4pe2I9ITE7dmFyIGg9YS5nZXRDaGlsZChnKTtpZihoKXt2YXIgaz1oLmdldE5vZGUoKTtrJiZrLmlzRmlsZSgpPyhoPWguZ2V0UGF0aCgpLAplJiYoaD1QYihlLGgpKSxkW2hdPWsuZ2V0QnVmZmVyKCkpOmsmJmsuaXNEaXJlY3RvcnkoKSYmdGhpcy5fdG9KU09OKGgsZCxlKX19YT1hLmdldFBhdGgoKTtlJiYoYT1QYihlLGEpKTthJiZiJiYoZFthXT1udWxsKTtyZXR1cm4gZH07YS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGEsZCxlKXt2YXIgYixnO3ZvaWQgMD09PWQmJihkPXt9KTt2b2lkIDA9PT1lJiYoZT0hMSk7dmFyIGg9W107aWYoYSl7YSBpbnN0YW5jZW9mIEFycmF5fHwoYT1bYV0pO3RyeXtmb3IodmFyIGs9cmMoYSksbD1rLm5leHQoKTshbC5kb25lO2w9ay5uZXh0KCkpe3ZhciBxPWVoKGwudmFsdWUpLG09dGhpcy52b2x1bWUuZ2V0UmVzb2x2ZWRMaW5rKHEpO20mJmgucHVzaChtKX19Y2F0Y2goWmMpe3ZhciBuPXtlcnJvcjpaY319ZmluYWxseXt0cnl7bCYmIWwuZG9uZSYmKGI9ay5yZXR1cm4pJiZiLmNhbGwoayl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3I7fX19ZWxzZSBoLnB1c2godGhpcy52b2x1bWUucm9vdCk7CmlmKCFoLmxlbmd0aClyZXR1cm4gZDt0cnl7Zm9yKHZhciBQPXJjKGgpLHA9UC5uZXh0KCk7IXAuZG9uZTtwPVAubmV4dCgpKW09cC52YWx1ZSx0aGlzLl90b0pTT04obSxkLGU/bS5nZXRQYXRoKCk6IiIpfWNhdGNoKFpjKXt2YXIgdT17ZXJyb3I6WmN9fWZpbmFsbHl7dHJ5e3AmJiFwLmRvbmUmJihnPVAucmV0dXJuKSYmZy5jYWxsKFApfWZpbmFsbHl7aWYodSl0aHJvdyB1LmVycm9yO319cmV0dXJuIGR9O2EucHJvdG90eXBlLmZyb21KU09ORml4ZWQ9ZnVuY3Rpb24oYSxkKXtmb3IodmFyIGIgaW4gZCl7dmFyIGY9ZFtiXTtpZihmP251bGwhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZik6bnVsbCE9PWYpe3ZhciBnPWZoKGIpOzE8Zy5sZW5ndGgmJihnPSIvIitnLnNsaWNlKDAsZy5sZW5ndGgtMSkuam9pbigiLyIpLGEubWtkaXJwQmFzZShnLDUxMSkpO2Eud3JpdGVGaWxlU3luYyhiLGZ8fCIiKX1lbHNlIGEubWtkaXJwQmFzZShiLDUxMSl9fTthLnByb3RvdHlwZS5mcm9tSlNPTj0KZnVuY3Rpb24oYSl7dGhpcy52b2x1bWU9bmV3IHFmO3RoaXMuZnJvbUpTT05GaXhlZCh0aGlzLnZvbHVtZSxhKTt0aGlzLmZzPXNmKHRoaXMudm9sdW1lKTt0aGlzLnZvbHVtZS5yZWxlYXNlZEZkcz1bMCwxLDJdO2E9dGhpcy52b2x1bWUub3BlblN5bmMoIi9kZXYvc3RkZXJyIiwidyIpO3ZhciBiPXRoaXMudm9sdW1lLm9wZW5TeW5jKCIvZGV2L3N0ZG91dCIsInciKSxlPXRoaXMudm9sdW1lLm9wZW5TeW5jKCIvZGV2L3N0ZGluIiwiciIpO2lmKDIhPT1hKXRocm93IEVycm9yKCJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkZXJyOiAiK2EpO2lmKDEhPT1iKXRocm93IEVycm9yKCJpbnZhbGlkIGhhbmRsZSBmb3Igc3Rkb3V0OiAiK2IpO2lmKDAhPT1lKXRocm93IEVycm9yKCJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkaW46ICIrZSk7fTthLnByb3RvdHlwZS5nZXRTdGRPdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gR2YodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGEsZD10aGlzO3JldHVybiBIZih0aGlzLApmdW5jdGlvbigpe2E9bmV3IFByb21pc2UoZnVuY3Rpb24oYSl7YShkLmZzLnJlYWRGaWxlU3luYygiL2Rldi9zdGRvdXQiLCJ1dGY4IikpfSk7cmV0dXJuWzIsYV19KX0pfTtyZXR1cm4gYX0oKSxkYz12b2lkIDA7Im9iamVjdCI9PT10eXBlb2Ygd2luZG93P2RjPXdpbmRvdy5UZXh0RGVjb2Rlcjoib2JqZWN0Ij09PXR5cGVvZiBzZWxmP2RjPXNlbGYuVGV4dERlY29kZXI6ImZ1bmN0aW9uIj09PXR5cGVvZiByZXF1aXJlJiYoZGM9cmVxdWlyZSgidXRpbCIpLlRleHREZWNvZGVyKTt2YXIgaGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3RoaXMud2FzbUZzPWE7dGhpcy53YXNtRnMudm9sdW1lLm1rZGlyU3luYygiL193YXNtZXIvZGV2L2ZiMCIse3JlY3Vyc2l2ZTohMH0pO3RoaXMud2FzbUZzLnZvbHVtZS53cml0ZUZpbGVTeW5jKCIvX3dhc21lci9kZXYvZmIwL2ZiIiwiIik7dGhpcy53YXNtRnMudm9sdW1lLndyaXRlRmlsZVN5bmMoIi9fd2FzbWVyL2Rldi9mYjAvdmlydHVhbF9zaXplIiwKIiIpO3RoaXMud2FzbUZzLnZvbHVtZS53cml0ZUZpbGVTeW5jKCIvX3dhc21lci9kZXYvZmIwL2RyYXciLCIiKTt0aGlzLndhc21Gcy52b2x1bWUud3JpdGVGaWxlU3luYygiL193YXNtZXIvZGV2L2ZiMC9pbnB1dCIsIiIpO3RoaXMud2luZG93U2l6ZUNhbGxiYWNrPWZ1bmN0aW9uKCl7fTt0aGlzLmJ1ZmZlckluZGV4RGlzcGxheUNhbGxiYWNrPWZ1bmN0aW9uKCl7fTt0aGlzLmlucHV0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXl9O3RoaXMuZmRGcmFtZUJ1ZmZlcj10aGlzLndhc21Gcy52b2x1bWUub3BlblN5bmMoIi9fd2FzbWVyL2Rldi9mYjAvZmIiLCJ3KyIpO3RoaXMuZmRCdWZmZXJJbmRleERpc3BsYXk9dGhpcy53YXNtRnMudm9sdW1lLm9wZW5TeW5jKCIvX3dhc21lci9kZXYvZmIwL2RyYXciLCJ3KyIpO3RoaXMuZmRXaW5kb3dTaXplPXRoaXMud2FzbUZzLmZzLm9wZW5TeW5jKCIvX3dhc21lci9kZXYvZmIwL3ZpcnR1YWxfc2l6ZSIsIncrIik7CnRoaXMuZmRJbnB1dD10aGlzLndhc21Gcy52b2x1bWUub3BlblN5bmMoIi9fd2FzbWVyL2Rldi9mYjAvaW5wdXQiLCJ3KyIpO3ZhciBiPXRoaXMsZT10aGlzLndhc21Gcy52b2x1bWUuZmRzW3RoaXMuZmRJbnB1dF0ubm9kZS5yZWFkO3RoaXMud2FzbUZzLnZvbHVtZS5mZHNbdGhpcy5mZElucHV0XS5ub2RlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgYT1iLmlucHV0Q2FsbGJhY2soKTtiLndhc21Gcy52b2x1bWUud3JpdGVGaWxlU3luYygiL193YXNtZXIvZGV2L2ZiMC9pbnB1dCIsYSk7YT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiBlLmFwcGx5KGIud2FzbUZzLnZvbHVtZS5mZHNbYi5mZElucHV0XS5ub2RlLGEpfTt2YXIgZj10aGlzLndhc21Gcy52b2x1bWUuZmRzW3RoaXMuZmRXaW5kb3dTaXplXS5ub2RlLndyaXRlO3RoaXMud2FzbUZzLnZvbHVtZS5mZHNbdGhpcy5mZFdpbmRvd1NpemVdLm5vZGUud3JpdGU9ZnVuY3Rpb24oKXt2YXIgYT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwphPWYuYXBwbHkoYi53YXNtRnMudm9sdW1lLmZkc1tiLmZkV2luZG93U2l6ZV0ubm9kZSxhKTtiLndpbmRvd1NpemVDYWxsYmFjaygpO3JldHVybiBhfTt2YXIgZz10aGlzLndhc21Gcy52b2x1bWUuZmRzW3RoaXMuZmRCdWZmZXJJbmRleERpc3BsYXldLm5vZGUud3JpdGU7dGhpcy53YXNtRnMudm9sdW1lLmZkc1t0aGlzLmZkQnVmZmVySW5kZXhEaXNwbGF5XS5ub2RlLndyaXRlPWZ1bmN0aW9uKCl7dmFyIGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTthPWcuYXBwbHkoYi53YXNtRnMudm9sdW1lLmZkc1tiLmZkQnVmZmVySW5kZXhEaXNwbGF5XS5ub2RlLGEpO2IuYnVmZmVySW5kZXhEaXNwbGF5Q2FsbGJhY2soKTtyZXR1cm4gYX19YS5wcm90b3R5cGUuZ2V0RnJhbWVCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53YXNtRnMuZnMucmVhZEZpbGVTeW5jKCIvX3dhc21lci9kZXYvZmIwL2ZiIil9O2EucHJvdG90eXBlLmdldFdpbmRvd1NpemU9ZnVuY3Rpb24oKXt2YXIgYT0KdGhpcy53YXNtRnMuZnMucmVhZEZpbGVTeW5jKCIvX3dhc21lci9kZXYvZmIwL3ZpcnR1YWxfc2l6ZSIpO3JldHVybiAwPGEubGVuZ3RoPyhhPShuZXcgZGMoInV0Zi04IikpLmRlY29kZShhKS5zcGxpdCgieCIpLFtwYXJzZUludChhWzBdLDEwKSxwYXJzZUludChhWzFdLDEwKV0pOlswLDBdfTthLnByb3RvdHlwZS5zZXRXaW5kb3dTaXplQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7dGhpcy53aW5kb3dTaXplQ2FsbGJhY2s9YX07YS5wcm90b3R5cGUuc2V0QnVmZmVySW5kZXhEaXNwbGF5Q2FsbGJhY2s9ZnVuY3Rpb24oYSl7dGhpcy5idWZmZXJJbmRleERpc3BsYXlDYWxsYmFjaz1hfTthLnByb3RvdHlwZS5zZXRJbnB1dENhbGxiYWNrPWZ1bmN0aW9uKGEpe3RoaXMuaW5wdXRDYWxsYmFjaz1hfTtyZXR1cm4gYX0oKSxpaD0idW5kZWZpbmVkIiE9PXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPT10eXBlb2YgbmE/bmE6e30sbj0idW5kZWZpbmVkIiE9PXR5cGVvZiBCaWdJbnQ/CkJpZ0ludDppaC5CaWdJbnR8fE51bWJlcixlYz1EYXRhVmlldztlYy5wcm90b3R5cGUuc2V0QmlnVWludDY0fHwoZWMucHJvdG90eXBlLnNldEJpZ1VpbnQ2ND1mdW5jdGlvbihhLGIsZCl7aWYoYjxNYXRoLnBvdygyLDMyKSl7Yj1OdW1iZXIoYik7dmFyIGU9MH1lbHNle2U9Yi50b1N0cmluZygyKTtiPSIiO2Zvcih2YXIgZj0wO2Y8NjQtZS5sZW5ndGg7ZisrKWIrPSIwIjtiKz1lO2U9cGFyc2VJbnQoYi5zdWJzdHJpbmcoMCwzMiksMik7Yj1wYXJzZUludChiLnN1YnN0cmluZygzMiksMil9dGhpcy5zZXRVaW50MzIoYSsoZD8wOjQpLGIsZCk7dGhpcy5zZXRVaW50MzIoYSsoZD80OjApLGUsZCl9LGVjLnByb3RvdHlwZS5nZXRCaWdVaW50NjQ9ZnVuY3Rpb24oYSxiKXt2YXIgZD10aGlzLmdldFVpbnQzMihhKyhiPzA6NCksYik7YT10aGlzLmdldFVpbnQzMihhKyhiPzQ6MCksYik7ZD1kLnRvU3RyaW5nKDIpO2E9YS50b1N0cmluZygyKTtiPSIiO2Zvcih2YXIgZT0wO2U8MzItZC5sZW5ndGg7ZSsrKWIrPQoiMCI7cmV0dXJuIG4oIjBiIithKyhiK2QpKX0pO3ZhciBCYj0idW5kZWZpbmVkIiE9PXR5cGVvZiBuYT9uYToidW5kZWZpbmVkIiE9PXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxlYT1bXSxNPVtdLEpnPSJ1bmRlZmluZWQiIT09dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxTYz0hMSxqaD17fS50b1N0cmluZyxSZT1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1qaC5jYWxsKGEpfTttLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwIT09QmIuVFlQRURfQVJSQVlfU1VQUE9SVD9CYi5UWVBFRF9BUlJBWV9TVVBQT1JUOiEwO3ZhciBraD1tLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzO20ucG9vbFNpemU9ODE5MjttLl9hdWdtZW50PWZ1bmN0aW9uKGEpe2EuX19wcm90b19fPW0ucHJvdG90eXBlO3JldHVybiBhfTttLmZyb209ZnVuY3Rpb24oYSwKYixkKXtyZXR1cm4gT2UobnVsbCxhLGIsZCl9O20uVFlQRURfQVJSQVlfU1VQUE9SVCYmKG0ucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxtLl9fcHJvdG9fXz1VaW50OEFycmF5KTttLmFsbG9jPWZ1bmN0aW9uKGEsYixkKXtRZShhKTtyZXR1cm4gYT0wPj1hP21hKG51bGwsYSk6dm9pZCAwIT09Yj8ic3RyaW5nIj09PXR5cGVvZiBkP21hKG51bGwsYSkuZmlsbChiLGQpOm1hKG51bGwsYSkuZmlsbChiKTptYShudWxsLGEpfTttLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGEpe3JldHVybiBUYyhudWxsLGEpfTttLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihhKXtyZXR1cm4gVGMobnVsbCxhKX07bS5pc0J1ZmZlcj1ZZTttLmNvbXBhcmU9ZnVuY3Rpb24oYSxiKXtpZighZmEoYSl8fCFmYShiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzIik7aWYoYT09PWIpcmV0dXJuIDA7Zm9yKHZhciBkPWEubGVuZ3RoLGU9Yi5sZW5ndGgsCmY9MCxnPU1hdGgubWluKGQsZSk7ZjxnOysrZilpZihhW2ZdIT09YltmXSl7ZD1hW2ZdO2U9YltmXTticmVha31yZXR1cm4gZDxlPy0xOmU8ZD8xOjB9O20uaXNFbmNvZGluZz1mdW5jdGlvbihhKXtzd2l0Y2goU3RyaW5nKGEpLnRvTG93ZXJDYXNlKCkpe2Nhc2UgImhleCI6Y2FzZSAidXRmOCI6Y2FzZSAidXRmLTgiOmNhc2UgImFzY2lpIjpjYXNlICJsYXRpbjEiOmNhc2UgImJpbmFyeSI6Y2FzZSAiYmFzZTY0IjpjYXNlICJ1Y3MyIjpjYXNlICJ1Y3MtMiI6Y2FzZSAidXRmMTZsZSI6Y2FzZSAidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fTttLmNvbmNhdD1mdW5jdGlvbihhLGIpe2lmKCFSZShhKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWEubGVuZ3RoKXJldHVybiBtLmFsbG9jKDApO3ZhciBkO2lmKHZvaWQgMD09PWIpZm9yKGQ9Yj0wO2Q8YS5sZW5ndGg7KytkKWIrPQphW2RdLmxlbmd0aDtiPW0uYWxsb2NVbnNhZmUoYik7dmFyIGU9MDtmb3IoZD0wO2Q8YS5sZW5ndGg7KytkKXt2YXIgZj1hW2RdO2lmKCFmYShmKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7Zi5jb3B5KGIsZSk7ZSs9Zi5sZW5ndGh9cmV0dXJuIGJ9O20uYnl0ZUxlbmd0aD1QZTttLnByb3RvdHlwZS5faXNCdWZmZXI9ITA7bS5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5sZW5ndGg7aWYoMCE9PWElMil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIGI9MDtiPGE7Yis9MilNYSh0aGlzLGIsYisxKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5sZW5ndGg7aWYoMCE9PWElNCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTsKZm9yKHZhciBiPTA7YjxhO2IrPTQpTWEodGhpcyxiLGIrMyksTWEodGhpcyxiKzEsYisyKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5sZW5ndGg7aWYoMCE9PWElOCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIGI9MDtiPGE7Yis9OClNYSh0aGlzLGIsYis3KSxNYSh0aGlzLGIrMSxiKzYpLE1hKHRoaXMsYisyLGIrNSksTWEodGhpcyxiKzMsYis0KTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxlbmd0aHwwO3JldHVybiAwPT09YT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9UZSh0aGlzLDAsYSk6SGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTttLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oYSl7aWYoIWZhKGEpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTsKcmV0dXJuIHRoaXM9PT1hPyEwOjA9PT1tLmNvbXBhcmUodGhpcyxhKX07bS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBhPSIiOzA8dGhpcy5sZW5ndGgmJihhPXRoaXMudG9TdHJpbmcoImhleCIsMCw1MCkubWF0Y2goLy57Mn0vZykuam9pbigiICIpLDUwPHRoaXMubGVuZ3RoJiYoYSs9IiAuLi4gIikpO3JldHVybiI8QnVmZmVyICIrYSsiPiJ9O20ucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oYSxiLGQsZSxmKXtpZighZmEoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3ZvaWQgMD09PWImJihiPTApO3ZvaWQgMD09PWQmJihkPWE/YS5sZW5ndGg6MCk7dm9pZCAwPT09ZSYmKGU9MCk7dm9pZCAwPT09ZiYmKGY9dGhpcy5sZW5ndGgpO2lmKDA+Ynx8ZD5hLmxlbmd0aHx8MD5lfHxmPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihlPj1mJiZiPj1kKXJldHVybiAwOwppZihlPj1mKXJldHVybi0xO2lmKGI+PWQpcmV0dXJuIDE7Yj4+Pj0wO2Q+Pj49MDtlPj4+PTA7Zj4+Pj0wO2lmKHRoaXM9PT1hKXJldHVybiAwO3ZhciBnPWYtZSxoPWQtYixrPU1hdGgubWluKGcsaCk7ZT10aGlzLnNsaWNlKGUsZik7YT1hLnNsaWNlKGIsZCk7Zm9yKGI9MDtiPGs7KytiKWlmKGVbYl0hPT1hW2JdKXtnPWVbYl07aD1hW2JdO2JyZWFrfXJldHVybiBnPGg/LTE6aDxnPzE6MH07bS5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oYSxiLGQpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGEsYixkKX07bS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihhLGIsZCl7cmV0dXJuIFVlKHRoaXMsYSxiLGQsITApfTttLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihhLGIsZCl7cmV0dXJuIFVlKHRoaXMsYSxiLGQsITEpfTttLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihhLGIsZCxlKXtpZih2b2lkIDA9PT1iKWU9InV0ZjgiLGQ9dGhpcy5sZW5ndGgsYj0wO2Vsc2UgaWYodm9pZCAwPT09CmQmJiJzdHJpbmciPT09dHlwZW9mIGIpZT1iLGQ9dGhpcy5sZW5ndGgsYj0wO2Vsc2UgaWYoaXNGaW5pdGUoYikpYnw9MCxpc0Zpbml0ZShkKT8oZHw9MCx2b2lkIDA9PT1lJiYoZT0idXRmOCIpKTooZT1kLGQ9dm9pZCAwKTtlbHNlIHRocm93IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3ZhciBmPXRoaXMubGVuZ3RoLWI7aWYodm9pZCAwPT09ZHx8ZD5mKWQ9ZjtpZigwPGEubGVuZ3RoJiYoMD5kfHwwPmIpfHxiPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO2V8fChlPSJ1dGY4Iik7Zm9yKGY9ITE7Oylzd2l0Y2goZSl7Y2FzZSAiaGV4IjphOntiPU51bWJlcihiKXx8MDtlPXRoaXMubGVuZ3RoLWI7ZD8oZD1OdW1iZXIoZCksZD5lJiYoZD1lKSk6ZD1lO2U9YS5sZW5ndGg7aWYoMCE9PWUlMil0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmciKTsKZD5lLzImJihkPWUvMik7Zm9yKGU9MDtlPGQ7KytlKXtmPXBhcnNlSW50KGEuc3Vic3RyKDIqZSwyKSwxNik7aWYoaXNOYU4oZikpe2E9ZTticmVhayBhfXRoaXNbYitlXT1mfWE9ZX1yZXR1cm4gYTtjYXNlICJ1dGY4IjpjYXNlICJ1dGYtOCI6cmV0dXJuIHViKFhiKGEsdGhpcy5sZW5ndGgtYiksdGhpcyxiLGQpO2Nhc2UgImFzY2lpIjpyZXR1cm4gdWIoWGUoYSksdGhpcyxiLGQpO2Nhc2UgImxhdGluMSI6Y2FzZSAiYmluYXJ5IjpyZXR1cm4gdWIoWGUoYSksdGhpcyxiLGQpO2Nhc2UgImJhc2U2NCI6cmV0dXJuIHViKFNlKGEpLHRoaXMsYixkKTtjYXNlICJ1Y3MyIjpjYXNlICJ1Y3MtMiI6Y2FzZSAidXRmMTZsZSI6Y2FzZSAidXRmLTE2bGUiOmU9YTtmPXRoaXMubGVuZ3RoLWI7Zm9yKHZhciBnPVtdLGg9MDtoPGUubGVuZ3RoJiYhKDA+KGYtPTIpKTsrK2gpe3ZhciBrPWUuY2hhckNvZGVBdChoKTthPWs+Pjg7ayU9MjU2O2cucHVzaChrKTtnLnB1c2goYSl9cmV0dXJuIHViKGcsCnRoaXMsYixkKTtkZWZhdWx0OmlmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlKTtlPSgiIitlKS50b0xvd2VyQ2FzZSgpO2Y9ITB9fTttLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciBXZT00MDk2O20ucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5sZW5ndGg7YT1+fmE7Yj12b2lkIDA9PT1iP2Q6fn5iOzA+YT8oYSs9ZCwwPmEmJihhPTApKTphPmQmJihhPWQpOzA+Yj8oYis9ZCwwPmImJihiPTApKTpiPmQmJihiPWQpO2I8YSYmKGI9YSk7aWYobS5UWVBFRF9BUlJBWV9TVVBQT1JUKWI9dGhpcy5zdWJhcnJheShhLGIpLGIuX19wcm90b19fPW0ucHJvdG90eXBlO2Vsc2V7ZD1iLWE7Yj1uZXcgbShkLHZvaWQgMCk7Zm9yKHZhciBlPTA7ZTxkOysrZSliW2VdPXRoaXNbZSthXX1yZXR1cm4gYn07Cm0ucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oYSxiLGQpe2F8PTA7Ynw9MDtkfHxJKGEsYix0aGlzLmxlbmd0aCk7ZD10aGlzW2FdO2Zvcih2YXIgZT0xLGY9MDsrK2Y8YiYmKGUqPTI1Nik7KWQrPXRoaXNbYStmXSplO3JldHVybiBkfTttLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGEsYixkKXthfD0wO2J8PTA7ZHx8SShhLGIsdGhpcy5sZW5ndGgpO2Q9dGhpc1thKy0tYl07Zm9yKHZhciBlPTE7MDxiJiYoZSo9MjU2KTspZCs9dGhpc1thKy0tYl0qZTtyZXR1cm4gZH07bS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGEsYil7Ynx8SShhLDEsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2FdfTttLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oYSxiKXtifHxJKGEsMix0aGlzLmxlbmd0aCk7cmV0dXJuIHRoaXNbYV18dGhpc1thKzFdPDw4fTttLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oYSxiKXtifHxJKGEsMix0aGlzLmxlbmd0aCk7CnJldHVybiB0aGlzW2FdPDw4fHRoaXNbYSsxXX07bS5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKGEsYil7Ynx8SShhLDQsdGhpcy5sZW5ndGgpO3JldHVybih0aGlzW2FdfHRoaXNbYSsxXTw8OHx0aGlzW2ErMl08PDE2KSsxNjc3NzIxNip0aGlzW2ErM119O20ucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihhLGIpe2J8fEkoYSw0LHRoaXMubGVuZ3RoKTtyZXR1cm4gMTY3NzcyMTYqdGhpc1thXSsodGhpc1thKzFdPDwxNnx0aGlzW2ErMl08PDh8dGhpc1thKzNdKX07bS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGEsYixkKXthfD0wO2J8PTA7ZHx8SShhLGIsdGhpcy5sZW5ndGgpO2Q9dGhpc1thXTtmb3IodmFyIGU9MSxmPTA7KytmPGImJihlKj0yNTYpOylkKz10aGlzW2ErZl0qZTtkPj0xMjgqZSYmKGQtPU1hdGgucG93KDIsOCpiKSk7cmV0dXJuIGR9O20ucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihhLGIsZCl7YXw9MDtifD0wO2R8fEkoYSwKYix0aGlzLmxlbmd0aCk7ZD1iO2Zvcih2YXIgZT0xLGY9dGhpc1thKy0tZF07MDxkJiYoZSo9MjU2KTspZis9dGhpc1thKy0tZF0qZTtmPj0xMjgqZSYmKGYtPU1hdGgucG93KDIsOCpiKSk7cmV0dXJuIGZ9O20ucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGEsYil7Ynx8SShhLDEsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2FdJjEyOD8tMSooMjU1LXRoaXNbYV0rMSk6dGhpc1thXX07bS5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oYSxiKXtifHxJKGEsMix0aGlzLmxlbmd0aCk7YT10aGlzW2FdfHRoaXNbYSsxXTw8ODtyZXR1cm4gYSYzMjc2OD9hfDQyOTQ5MDE3NjA6YX07bS5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oYSxiKXtifHxJKGEsMix0aGlzLmxlbmd0aCk7YT10aGlzW2ErMV18dGhpc1thXTw8ODtyZXR1cm4gYSYzMjc2OD9hfDQyOTQ5MDE3NjA6YX07bS5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oYSxiKXtifHxJKGEsNCx0aGlzLmxlbmd0aCk7CnJldHVybiB0aGlzW2FdfHRoaXNbYSsxXTw8OHx0aGlzW2ErMl08PDE2fHRoaXNbYSszXTw8MjR9O20ucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGEsYil7Ynx8SShhLDQsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2FdPDwyNHx0aGlzW2ErMV08PDE2fHRoaXNbYSsyXTw8OHx0aGlzW2ErM119O20ucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGEsYil7Ynx8SShhLDQsdGhpcy5sZW5ndGgpO3JldHVybiBWYih0aGlzLGEsITAsMjMsNCl9O20ucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGEsYil7Ynx8SShhLDQsdGhpcy5sZW5ndGgpO3JldHVybiBWYih0aGlzLGEsITEsMjMsNCl9O20ucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihhLGIpe2J8fEkoYSw4LHRoaXMubGVuZ3RoKTtyZXR1cm4gVmIodGhpcyxhLCEwLDUyLDgpfTttLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oYSxiKXtifHxJKGEsOCx0aGlzLmxlbmd0aCk7cmV0dXJuIFZiKHRoaXMsCmEsITEsNTIsOCl9O20ucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGEsYixkLGUpe2E9K2E7Ynw9MDtkfD0wO2V8fFYodGhpcyxhLGIsZCxNYXRoLnBvdygyLDgqZCktMSwwKTtlPTE7dmFyIGY9MDtmb3IodGhpc1tiXT1hJjI1NTsrK2Y8ZCYmKGUqPTI1Nik7KXRoaXNbYitmXT1hL2UmMjU1O3JldHVybiBiK2R9O20ucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKGEsYixkLGUpe2E9K2E7Ynw9MDtkfD0wO2V8fFYodGhpcyxhLGIsZCxNYXRoLnBvdygyLDgqZCktMSwwKTtlPWQtMTt2YXIgZj0xO2Zvcih0aGlzW2IrZV09YSYyNTU7MDw9LS1lJiYoZio9MjU2KTspdGhpc1tiK2VdPWEvZiYyNTU7cmV0dXJuIGIrZH07bS5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihhLGIsZCl7YT0rYTtifD0wO2R8fFYodGhpcyxhLGIsMSwyNTUsMCk7bS5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoYT1NYXRoLmZsb29yKGEpKTt0aGlzW2JdPWEmMjU1O3JldHVybiBiKzF9O20ucHJvdG90eXBlLndyaXRlVUludDE2TEU9CmZ1bmN0aW9uKGEsYixkKXthPSthO2J8PTA7ZHx8Vih0aGlzLGEsYiwyLDY1NTM1LDApO20uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tiXT1hJjI1NSx0aGlzW2IrMV09YT4+PjgpOlliKHRoaXMsYSxiLCEwKTtyZXR1cm4gYisyfTttLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGEsYixkKXthPSthO2J8PTA7ZHx8Vih0aGlzLGEsYiwyLDY1NTM1LDApO20uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tiXT1hPj4+OCx0aGlzW2IrMV09YSYyNTUpOlliKHRoaXMsYSxiLCExKTtyZXR1cm4gYisyfTttLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGEsYixkKXthPSthO2J8PTA7ZHx8Vih0aGlzLGEsYiw0LDQyOTQ5NjcyOTUsMCk7bS5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2IrM109YT4+PjI0LHRoaXNbYisyXT1hPj4+MTYsdGhpc1tiKzFdPWE+Pj44LHRoaXNbYl09YSYyNTUpOlpiKHRoaXMsYSxiLCEwKTtyZXR1cm4gYis0fTttLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPQpmdW5jdGlvbihhLGIsZCl7YT0rYTtifD0wO2R8fFYodGhpcyxhLGIsNCw0Mjk0OTY3Mjk1LDApO20uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tiXT1hPj4+MjQsdGhpc1tiKzFdPWE+Pj4xNix0aGlzW2IrMl09YT4+PjgsdGhpc1tiKzNdPWEmMjU1KTpaYih0aGlzLGEsYiwhMSk7cmV0dXJuIGIrNH07bS5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihhLGIsZCxlKXthPSthO2J8PTA7ZXx8KGU9TWF0aC5wb3coMiw4KmQtMSksVih0aGlzLGEsYixkLGUtMSwtZSkpO2U9MDt2YXIgZj0xLGc9MDtmb3IodGhpc1tiXT1hJjI1NTsrK2U8ZCYmKGYqPTI1Nik7KTA+YSYmMD09PWcmJjAhPT10aGlzW2IrZS0xXSYmKGc9MSksdGhpc1tiK2VdPShhL2Y+PjApLWcmMjU1O3JldHVybiBiK2R9O20ucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oYSxiLGQsZSl7YT0rYTtifD0wO2V8fChlPU1hdGgucG93KDIsOCpkLTEpLFYodGhpcyxhLGIsZCxlLTEsLWUpKTtlPWQtMTt2YXIgZj0KMSxnPTA7Zm9yKHRoaXNbYitlXT1hJjI1NTswPD0tLWUmJihmKj0yNTYpOykwPmEmJjA9PT1nJiYwIT09dGhpc1tiK2UrMV0mJihnPTEpLHRoaXNbYitlXT0oYS9mPj4wKS1nJjI1NTtyZXR1cm4gYitkfTttLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oYSxiLGQpe2E9K2E7Ynw9MDtkfHxWKHRoaXMsYSxiLDEsMTI3LC0xMjgpO20uVFlQRURfQVJSQVlfU1VQUE9SVHx8KGE9TWF0aC5mbG9vcihhKSk7MD5hJiYoYT0yNTUrYSsxKTt0aGlzW2JdPWEmMjU1O3JldHVybiBiKzF9O20ucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihhLGIsZCl7YT0rYTtifD0wO2R8fFYodGhpcyxhLGIsMiwzMjc2NywtMzI3NjgpO20uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tiXT1hJjI1NSx0aGlzW2IrMV09YT4+PjgpOlliKHRoaXMsYSxiLCEwKTtyZXR1cm4gYisyfTttLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oYSxiLGQpe2E9K2E7Ynw9MDtkfHxWKHRoaXMsYSxiLAoyLDMyNzY3LC0zMjc2OCk7bS5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2JdPWE+Pj44LHRoaXNbYisxXT1hJjI1NSk6WWIodGhpcyxhLGIsITEpO3JldHVybiBiKzJ9O20ucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihhLGIsZCl7YT0rYTtifD0wO2R8fFYodGhpcyxhLGIsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KTttLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbYl09YSYyNTUsdGhpc1tiKzFdPWE+Pj44LHRoaXNbYisyXT1hPj4+MTYsdGhpc1tiKzNdPWE+Pj4yNCk6WmIodGhpcyxhLGIsITApO3JldHVybiBiKzR9O20ucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihhLGIsZCl7YT0rYTtifD0wO2R8fFYodGhpcyxhLGIsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KTswPmEmJihhPTQyOTQ5NjcyOTUrYSsxKTttLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbYl09YT4+PjI0LHRoaXNbYisxXT1hPj4+MTYsdGhpc1tiKzJdPWE+Pj44LHRoaXNbYiszXT0KYSYyNTUpOlpiKHRoaXMsYSxiLCExKTtyZXR1cm4gYis0fTttLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oYSxiLGQpe2R8fCRiKHRoaXMsYSxiLDQpO1diKHRoaXMsYSxiLCEwLDIzLDQpO3JldHVybiBiKzR9O20ucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihhLGIsZCl7ZHx8JGIodGhpcyxhLGIsNCk7V2IodGhpcyxhLGIsITEsMjMsNCk7cmV0dXJuIGIrNH07bS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihhLGIsZCl7ZHx8JGIodGhpcyxhLGIsOCk7V2IodGhpcyxhLGIsITAsNTIsOCk7cmV0dXJuIGIrOH07bS5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihhLGIsZCl7ZHx8JGIodGhpcyxhLGIsOCk7V2IodGhpcyxhLGIsITEsNTIsOCk7cmV0dXJuIGIrOH07bS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhLGIsZCxlKXtkfHwoZD0wKTtlfHwwPT09ZXx8KGU9dGhpcy5sZW5ndGgpO2I+PWEubGVuZ3RoJiYoYj1hLmxlbmd0aCk7CmJ8fChiPTApOzA8ZSYmZTxkJiYoZT1kKTtpZihlPT09ZHx8MD09PWEubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYoMD5iKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYoMD5kfHxkPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKDA+ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtlPnRoaXMubGVuZ3RoJiYoZT10aGlzLmxlbmd0aCk7YS5sZW5ndGgtYjxlLWQmJihlPWEubGVuZ3RoLWIrZCk7dmFyIGY9ZS1kO2lmKHRoaXM9PT1hJiZkPGImJmI8ZSlmb3IoZT1mLTE7MDw9ZTstLWUpYVtlK2JdPXRoaXNbZStkXTtlbHNlIGlmKDFFMz5mfHwhbS5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihlPTA7ZTxmOysrZSlhW2UrYl09dGhpc1tlK2RdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoYSx0aGlzLnN1YmFycmF5KGQsCmQrZiksYik7cmV0dXJuIGZ9O20ucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oYSxiLGQsZSl7aWYoInN0cmluZyI9PT10eXBlb2YgYSl7InN0cmluZyI9PT10eXBlb2YgYj8oZT1iLGI9MCxkPXRoaXMubGVuZ3RoKToic3RyaW5nIj09PXR5cGVvZiBkJiYoZT1kLGQ9dGhpcy5sZW5ndGgpO2lmKDE9PT1hLmxlbmd0aCl7dmFyIGY9YS5jaGFyQ29kZUF0KDApOzI1Nj5mJiYoYT1mKX1pZih2b2lkIDAhPT1lJiYic3RyaW5nIiE9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09PXR5cGVvZiBlJiYhbS5pc0VuY29kaW5nKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZSk7fWVsc2UibnVtYmVyIj09PXR5cGVvZiBhJiYoYSY9MjU1KTtpZigwPmJ8fHRoaXMubGVuZ3RoPGJ8fHRoaXMubGVuZ3RoPGQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKGQ8PQpiKXJldHVybiB0aGlzO2I+Pj49MDtkPXZvaWQgMD09PWQ/dGhpcy5sZW5ndGg6ZD4+PjA7YXx8KGE9MCk7aWYoIm51bWJlciI9PT10eXBlb2YgYSlmb3IoZT1iO2U8ZDsrK2UpdGhpc1tlXT1hO2Vsc2UgZm9yKGE9ZmEoYSk/YTpYYigobmV3IG0oYSxlKSkudG9TdHJpbmcoKSksZj1hLmxlbmd0aCxlPTA7ZTxkLWI7KytlKXRoaXNbZStiXT1hW2UlZl07cmV0dXJuIHRoaXN9O3ZhciBJZz0vW14rXC8wLTlBLVphLXotX10vZyxmYz1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxJTlNQRUNUX01BWF9CWVRFUzo1MCxrTWF4TGVuZ3RoOmtoLEJ1ZmZlcjptLFNsb3dCdWZmZXI6ZnVuY3Rpb24oYSl7K2EhPWEmJihhPTApO3JldHVybiBtLmFsbG9jKCthKX0saXNCdWZmZXI6WWV9KSxHPW0sZ2M9InVuZGVmaW5lZCIhPT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPT10eXBlb2YgbmE/bmE6InVuZGVmaW5lZCIhPT0KdHlwZW9mIHNlbGY/c2VsZjp7fSxyYT0kZSx5YT1hZjsiZnVuY3Rpb24iPT09dHlwZW9mIEJiLnNldFRpbWVvdXQmJihyYT1zZXRUaW1lb3V0KTsiZnVuY3Rpb24iPT09dHlwZW9mIEJiLmNsZWFyVGltZW91dCYmKHlhPWNsZWFyVGltZW91dCk7dmFyIHNhPVtdLGFiPSExLE5hLGFjPS0xO2VmLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTt2YXIgamI9QmIucGVyZm9ybWFuY2V8fHt9LGxoPWpiLm5vd3x8amIubW96Tm93fHxqYi5tc05vd3x8amIub05vd3x8amIud2Via2l0Tm93fHxmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSxtaD1uZXcgRGF0ZSxuaD17bmV4dFRpY2s6ZGYsdGl0bGU6ImJyb3dzZXIiLGJyb3dzZXI6ITAsZW52Ont9LGFyZ3Y6W10sdmVyc2lvbjoiIix2ZXJzaW9uczp7fSxvbjpPYSxhZGRMaXN0ZW5lcjpPYSxvbmNlOk9hLG9mZjpPYSxyZW1vdmVMaXN0ZW5lcjpPYSxyZW1vdmVBbGxMaXN0ZW5lcnM6T2EsCmVtaXQ6T2EsYmluZGluZzpmdW5jdGlvbigpe3Rocm93IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpO30sY3dkOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxjaGRpcjpmdW5jdGlvbigpe3Rocm93IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKTt9LHVtYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGhydGltZTpmdW5jdGlvbihhKXt2YXIgYj0uMDAxKmxoLmNhbGwoamIpLGQ9TWF0aC5mbG9vcihiKTtiPU1hdGguZmxvb3IoYiUxKjFFOSk7YSYmKGQtPWFbMF0sYi09YVsxXSwwPmImJihkLS0sYis9MUU5KSk7cmV0dXJuW2QsYl19LHBsYXRmb3JtOiJicm93c2VyIixyZWxlYXNlOnt9LGNvbmZpZzp7fSx1cHRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUtbWgpLzFFM319LHRmPVdjKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZChhLGIpe2Zvcih2YXIgZCBpbiBhKWJbZF09YVtkXX1mdW5jdGlvbiBlKGEsYixkKXtyZXR1cm4gZihhLApiLGQpfXZhciBmPWZjLkJ1ZmZlcjtmLmZyb20mJmYuYWxsb2MmJmYuYWxsb2NVbnNhZmUmJmYuYWxsb2NVbnNhZmVTbG93P2EuZXhwb3J0cz1mYzooZChmYyxiKSxiLkJ1ZmZlcj1lKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGYucHJvdG90eXBlKTtkKGYsZSk7ZS5mcm9tPWZ1bmN0aW9uKGEsYixkKXtpZigibnVtYmVyIj09PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIGYoYSxiLGQpfTtlLmFsbG9jPWZ1bmN0aW9uKGEsYixkKXtpZigibnVtYmVyIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTthPWYoYSk7dm9pZCAwIT09Yj8ic3RyaW5nIj09PXR5cGVvZiBkP2EuZmlsbChiLGQpOmEuZmlsbChiKTphLmZpbGwoMCk7cmV0dXJuIGF9O2UuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oYSl7aWYoIm51bWJlciIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7CnJldHVybiBmKGEpfTtlLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihhKXtpZigibnVtYmVyIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gZmMuU2xvd0J1ZmZlcihhKX19KSxvaD1XYyhmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoKXt0aHJvdyBFcnJvcigic2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlclxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpO31mdW5jdGlvbiBlKGEsYil7aWYoIm51bWJlciIhPT10eXBlb2YgYXx8YSE9PWEpdGhyb3cgbmV3IFR5cGVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSBudW1iZXIiKTtpZihhPnJ8fDA+YSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIHVpbnQzMiIpO2lmKGE+bXx8YT5iKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgb3V0IG9mIHJhbmdlIik7Cn1mdW5jdGlvbiBmKGEsYixkKXtpZigibnVtYmVyIiE9PXR5cGVvZiBhfHxhIT09YSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSBudW1iZXIiKTtpZihhPnJ8fDA+YSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSB1aW50MzIiKTtpZihhK2I+ZHx8YT5tKXRocm93IG5ldyBSYW5nZUVycm9yKCJidWZmZXIgdG9vIHNtYWxsIik7fWZ1bmN0aW9uIGcoYSxiLGQsZyl7aWYoIShsLmlzQnVmZmVyKGEpfHxhIGluc3RhbmNlb2YgZ2MuVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZiIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBiKWc9YixiPTAsZD1hLmxlbmd0aDtlbHNlIGlmKCJmdW5jdGlvbiI9PT10eXBlb2YgZClnPWQsZD1hLmxlbmd0aC1iO2Vsc2UgaWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBnKXRocm93IG5ldyBUeXBlRXJyb3IoJyJjYiIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CmUoYixhLmxlbmd0aCk7ZihkLGIsYS5sZW5ndGgpO3JldHVybiBoKGEsYixkLGcpfWZ1bmN0aW9uIGgoYSxiLGQsZSl7Yj1uZXcgVWludDhBcnJheShhLmJ1ZmZlcixiLGQpO24uZ2V0UmFuZG9tVmFsdWVzKGIpO2lmKGUpZGYoZnVuY3Rpb24oKXtlKG51bGwsYSl9KTtlbHNlIHJldHVybiBhfWZ1bmN0aW9uIGsoYSxiLGQpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGImJihiPTApO2lmKCEobC5pc0J1ZmZlcihhKXx8YSBpbnN0YW5jZW9mIGdjLlVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWYiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpO2UoYixhLmxlbmd0aCk7dm9pZCAwPT09ZCYmKGQ9YS5sZW5ndGgtYik7ZihkLGIsYS5sZW5ndGgpO3JldHVybiBoKGEsYixkKX12YXIgbD10Zi5CdWZmZXIsbT10Zi5rTWF4TGVuZ3RoLG49Z2MuY3J5cHRvfHxnYy5tc0NyeXB0byxyPU1hdGgucG93KDIsMzIpLTE7biYmbi5nZXRSYW5kb21WYWx1ZXM/KGIucmFuZG9tRmlsbD0KZyxiLnJhbmRvbUZpbGxTeW5jPWspOihiLnJhbmRvbUZpbGw9ZCxiLnJhbmRvbUZpbGxTeW5jPWQpfSkscGg9V2MoZnVuY3Rpb24oYSl7YS5leHBvcnRzPW9ofSkucmFuZG9tRmlsbFN5bmMscWg9TWF0aC5mbG9vciguMDAxKihEYXRlLm5vdygpLXBlcmZvcm1hbmNlLm5vdygpKSksQ2I9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9IiIsYj0hMSxkLGU9YXJndW1lbnRzLmxlbmd0aC0xOy0xPD1lJiYhYjtlLS0pe2lmKDA8PWUpdmFyIGY9YXJndW1lbnRzW2VdO2Vsc2Ugdm9pZCAwPT09ZCYmKGQ9bmguY3dkKCkpLGY9ZDtoYShmKTswIT09Zi5sZW5ndGgmJihhPWYrIi8iK2EsYj00Nz09PWYuY2hhckNvZGVBdCgwKSl9YT1mZihhLCFiKTtyZXR1cm4gYj8wPGEubGVuZ3RoPyIvIithOiIvIjowPGEubGVuZ3RoP2E6Ii4ifSxub3JtYWxpemU6ZnVuY3Rpb24oYSl7aGEoYSk7aWYoMD09PWEubGVuZ3RoKXJldHVybiIuIjt2YXIgYj00Nz09PWEuY2hhckNvZGVBdCgwKSxkPTQ3PT09CmEuY2hhckNvZGVBdChhLmxlbmd0aC0xKTthPWZmKGEsIWIpOzAhPT1hLmxlbmd0aHx8Ynx8KGE9Ii4iKTswPGEubGVuZ3RoJiZkJiYoYSs9Ii8iKTtyZXR1cm4gYj8iLyIrYTphfSxpc0Fic29sdXRlOmZ1bmN0aW9uKGEpe2hhKGEpO3JldHVybiAwPGEubGVuZ3RoJiY0Nz09PWEuY2hhckNvZGVBdCgwKX0sam9pbjpmdW5jdGlvbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIGEsYj0wO2I8YXJndW1lbnRzLmxlbmd0aDsrK2Ipe3ZhciBkPWFyZ3VtZW50c1tiXTtoYShkKTswPGQubGVuZ3RoJiYoYT12b2lkIDA9PT1hP2Q6YSsoIi8iK2QpKX1yZXR1cm4gdm9pZCAwPT09YT8iLiI6Q2Iubm9ybWFsaXplKGEpfSxyZWxhdGl2ZTpmdW5jdGlvbihhLGIpe2hhKGEpO2hhKGIpO2lmKGE9PT1iKXJldHVybiIiO2E9Q2IucmVzb2x2ZShhKTtiPUNiLnJlc29sdmUoYik7aWYoYT09PWIpcmV0dXJuIiI7Zm9yKHZhciBkPTE7ZDxhLmxlbmd0aCYmNDc9PT1hLmNoYXJDb2RlQXQoZCk7KytkKTsKZm9yKHZhciBlPWEubGVuZ3RoLGY9ZS1kLGc9MTtnPGIubGVuZ3RoJiY0Nz09PWIuY2hhckNvZGVBdChnKTsrK2cpO2Zvcih2YXIgaD1iLmxlbmd0aC1nLGs9ZjxoP2Y6aCxsPS0xLG09MDttPD1rOysrbSl7aWYobT09PWspe2lmKGg+ayl7aWYoNDc9PT1iLmNoYXJDb2RlQXQoZyttKSlyZXR1cm4gYi5zbGljZShnK20rMSk7aWYoMD09PW0pcmV0dXJuIGIuc2xpY2UoZyttKX1lbHNlIGY+ayYmKDQ3PT09YS5jaGFyQ29kZUF0KGQrbSk/bD1tOjA9PT1tJiYobD0wKSk7YnJlYWt9dmFyIG49YS5jaGFyQ29kZUF0KGQrbSkscj1iLmNoYXJDb2RlQXQoZyttKTtpZihuIT09cilicmVhaztlbHNlIDQ3PT09biYmKGw9bSl9Zj0iIjtmb3IobT1kK2wrMTttPD1lOysrbSlpZihtPT09ZXx8NDc9PT1hLmNoYXJDb2RlQXQobSkpZj0wPT09Zi5sZW5ndGg/ZisiLi4iOmYrIi8uLiI7aWYoMDxmLmxlbmd0aClyZXR1cm4gZitiLnNsaWNlKGcrbCk7Zys9bDs0Nz09PWIuY2hhckNvZGVBdChnKSYmKytnOwpyZXR1cm4gYi5zbGljZShnKX0sX21ha2VMb25nOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxkaXJuYW1lOmZ1bmN0aW9uKGEpe2hhKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4iLiI7Zm9yKHZhciBiPWEuY2hhckNvZGVBdCgwKSxkPTQ3PT09YixlPS0xLGY9ITAsZz1hLmxlbmd0aC0xOzE8PWc7LS1nKWlmKGI9YS5jaGFyQ29kZUF0KGcpLDQ3PT09Yil7aWYoIWYpe2U9ZzticmVha319ZWxzZSBmPSExO3JldHVybi0xPT09ZT9kPyIvIjoiLiI6ZCYmMT09PWU/Ii8vIjphLnNsaWNlKDAsZSl9LGJhc2VuYW1lOmZ1bmN0aW9uKGEsYil7aWYodm9pZCAwIT09YiYmInN0cmluZyIhPT10eXBlb2YgYil0aHJvdyBuZXcgVHlwZUVycm9yKCciZXh0IiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7aGEoYSk7dmFyIGQ9MCxlPS0xLGY9ITAsZztpZih2b2lkIDAhPT1iJiYwPGIubGVuZ3RoJiZiLmxlbmd0aDw9YS5sZW5ndGgpe2lmKGIubGVuZ3RoPT09YS5sZW5ndGgmJmI9PT1hKXJldHVybiIiOwp2YXIgaD1iLmxlbmd0aC0xLGs9LTE7Zm9yKGc9YS5sZW5ndGgtMTswPD1nOy0tZyl7dmFyIGw9YS5jaGFyQ29kZUF0KGcpO2lmKDQ3PT09bCl7aWYoIWYpe2Q9ZysxO2JyZWFrfX1lbHNlLTE9PT1rJiYoZj0hMSxrPWcrMSksMDw9aCYmKGw9PT1iLmNoYXJDb2RlQXQoaCk/LTE9PT0tLWgmJihlPWcpOihoPS0xLGU9aykpfWQ9PT1lP2U9azotMT09PWUmJihlPWEubGVuZ3RoKTtyZXR1cm4gYS5zbGljZShkLGUpfWZvcihnPWEubGVuZ3RoLTE7MDw9ZzstLWcpaWYoNDc9PT1hLmNoYXJDb2RlQXQoZykpe2lmKCFmKXtkPWcrMTticmVha319ZWxzZS0xPT09ZSYmKGY9ITEsZT1nKzEpO3JldHVybi0xPT09ZT8iIjphLnNsaWNlKGQsZSl9LGV4dG5hbWU6ZnVuY3Rpb24oYSl7aGEoYSk7Zm9yKHZhciBiPS0xLGQ9MCxlPS0xLGY9ITAsZz0wLGg9YS5sZW5ndGgtMTswPD1oOy0taCl7dmFyIGs9YS5jaGFyQ29kZUF0KGgpO2lmKDQ3PT09ayl7aWYoIWYpe2Q9aCsxO2JyZWFrfX1lbHNlLTE9PT0KZSYmKGY9ITEsZT1oKzEpLDQ2PT09az8tMT09PWI/Yj1oOjEhPT1nJiYoZz0xKTotMSE9PWImJihnPS0xKX1yZXR1cm4tMT09PWJ8fC0xPT09ZXx8MD09PWd8fDE9PT1nJiZiPT09ZS0xJiZiPT09ZCsxPyIiOmEuc2xpY2UoYixlKX0sZm9ybWF0OmZ1bmN0aW9uKGEpe2lmKG51bGw9PT1hfHwib2JqZWN0IiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAicGF0aE9iamVjdCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBhKTt2YXIgYj1hLmRpcnx8YS5yb290LGQ9YS5iYXNlfHwoYS5uYW1lfHwiIikrKGEuZXh0fHwiIik7cmV0dXJuIGE9Yj9iPT09YS5yb290P2IrZDpiKyIvIitkOmR9LHBhcnNlOmZ1bmN0aW9uKGEpe2hhKGEpO3ZhciBiPXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09YS5sZW5ndGgpcmV0dXJuIGI7dmFyIGQ9YS5jaGFyQ29kZUF0KDApLGU9NDc9PT1kO2lmKGUpe2Iucm9vdD0KIi8iO3ZhciBmPTF9ZWxzZSBmPTA7Zm9yKHZhciBnPS0xLGg9MCxrPS0xLGw9ITAsbT1hLmxlbmd0aC0xLG49MDttPj1mOy0tbSlpZihkPWEuY2hhckNvZGVBdChtKSw0Nz09PWQpe2lmKCFsKXtoPW0rMTticmVha319ZWxzZS0xPT09ayYmKGw9ITEsaz1tKzEpLDQ2PT09ZD8tMT09PWc/Zz1tOjEhPT1uJiYobj0xKTotMSE9PWcmJihuPS0xKTstMT09PWd8fC0xPT09a3x8MD09PW58fDE9PT1uJiZnPT09ay0xJiZnPT09aCsxPy0xIT09ayYmKGIuYmFzZT0wPT09aCYmZT9iLm5hbWU9YS5zbGljZSgxLGspOmIubmFtZT1hLnNsaWNlKGgsaykpOigwPT09aCYmZT8oYi5uYW1lPWEuc2xpY2UoMSxnKSxiLmJhc2U9YS5zbGljZSgxLGspKTooYi5uYW1lPWEuc2xpY2UoaCxnKSxiLmJhc2U9YS5zbGljZShoLGspKSxiLmV4dD1hLnNsaWNlKGcsaykpOzA8aD9iLmRpcj1hLnNsaWNlKDAsaC0xKTplJiYoYi5kaXI9Ii8iKTtyZXR1cm4gYn0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwsCnBvc2l4Om51bGx9LHVmPUNiLnBvc2l4PUNiLHJoPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLCJkZWZhdWx0Ijp1ZixfX21vZHVsZUV4cG9ydHM6dWZ9KSx3Zj17aHJ0aW1lOmZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtiPWEoYik7cmV0dXJuIDFFOSpiWzBdK2JbMV19fShmdW5jdGlvbihhKXt2YXIgYj0uMDAxKnBlcmZvcm1hbmNlLm5vdygpLGQ9TWF0aC5mbG9vcihiKStxaDtiPU1hdGguZmxvb3IoYiUxKjFFOSk7YSYmKGQtPWFbMF0sYi09YVsxXSwwPmImJihkLS0sYis9MUU5KSk7cmV0dXJuW2QsYl19KSxleGl0OmZ1bmN0aW9uKGEpe3Rocm93IG5ldyB2ZihhKTt9LGtpbGw6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IHNoKGEpO30scmFuZG9tRmlsbFN5bmM6cGgsaXNUVFk6ZnVuY3Rpb24oKXtyZXR1cm4hMH0scGF0aDpyaCxmczpudWxsfSxDLFJhPW4oMSksQmE9bigyKSxrYj1uKDQpLGxiPW4oOCksQ2E9bigxNiksaGQ9bigzMiksRGE9big2NCksbWI9bigxMjgpLApoYz1uKDI1NiksaWQ9big1MTIpLGpkPW4oMTAyNCksa2Q9bigyMDQ4KSxsZD1uKDQwOTYpLGljPW4oODE5MiksamM9bigxNjM4NCksbWQ9bigzMjc2OCksbmQ9big2NTUzNiksb2Q9bigxMzEwNzIpLHBkPW4oMjYyMTQ0KSxxZD1uKDUyNDI4OCkscmQ9bigxMDQ4NTc2KSxFYT1uKDIwOTcxNTIpLGtjPW4oNDE5NDMwNCksbGM9big4Mzg4NjA4KSxzZD1uKDE2Nzc3MjE2KSx0ZD1uKDMzNTU0NDMyKSx1ZD1uKDY3MTA4ODY0KSxTYT1uKDEzNDIxNzcyOCkseGY9bigyNjg0MzU0NTYpLGNiPVJhfEJhfGtifGxifENhfGhkfERhfG1ifGhjfGlkfGpkfGtkfGxkfGljfGpjfG1kfG5kfG9kfHBkfHFkfHJkfEVhfGxjfGtjfHNkfHVkfHRkfFNhfHhmLGxmPVJhfEJhfGtifGxifENhfGhkfERhfG1ifGhjfEVhfGtjfGxjfFNhLFBnPW4oMCksWWM9bGJ8Q2F8bWJ8aWR8amR8a2R8bGR8aWN8amN8bWR8bmR8b2R8cGR8cWR8cmR8RWF8bGN8c2R8dWR8dGR8U2EsamY9WWN8bGYsa2Y9QmF8bGJ8RGF8RWF8ClNhfHhmLE5nPUJhfGxifERhfEVhfFNhLE9nPW4oMCksTWc9e0UyQklHOjEsRUFDQ0VTOjIsRUFERFJJTlVTRTozLEVBRERSTk9UQVZBSUw6NCxFQUZOT1NVUFBPUlQ6NSxFQUxSRUFEWTo3LEVBR0FJTjo2LEVCQURGOjgsRUJBRE1TRzo5LEVCVVNZOjEwLEVDQU5DRUxFRDoxMSxFQ0hJTEQ6MTIsRUNPTk5BQk9SVEVEOjEzLEVDT05OUkVGVVNFRDoxNCxFQ09OTlJFU0VUOjE1LEVERUFETE9DSzoxNixFREVTVEFERFJSRVE6MTcsRURPTToxOCxFRFFVT1Q6MTksRUVYSVNUOjIwLEVGQVVMVDoyMSxFRkJJRzoyMixFSE9TVERPV046MjMsRUhPU1RVTlJFQUNIOjIzLEVJRFJNOjI0LEVJTFNFUToyNSxFSU5QUk9HUkVTUzoyNixFSU5UUjoyNyxFSU5WQUw6MjgsRUlPOjI5LEVJU0NPTk46MzAsRUlTRElSOjMxLEVMT09QOjMyLEVNRklMRTozMyxFTUxJTks6MzQsRU1TR1NJWkU6MzUsRU1VTFRJSE9QOjM2LEVOQU1FVE9PTE9ORzozNyxFTkVURE9XTjozOCxFTkVUUkVTRVQ6MzksRU5FVFVOUkVBQ0g6NDAsCkVORklMRTo0MSxFTk9CVUZTOjQyLEVOT0RFVjo0MyxFTk9FTlQ6NDQsRU5PRVhFQzo0NSxFTk9MQ0s6NDYsRU5PTElOSzo0NyxFTk9NRU06NDgsRU5PTVNHOjQ5LEVOT1BST1RPT1BUOjUwLEVOT1NQQzo1MSxFTk9TWVM6NTIsRU5PVENPTk46NTMsRU5PVERJUjo1NCxFTk9URU1QVFk6NTUsRU5PVFJFQ09WRVJBQkxFOjU2LEVOT1RTT0NLOjU3LEVOT1RUWTo1OSxFTlhJTzo2MCxFT1ZFUkZMT1c6NjEsRU9XTkVSREVBRDo2MixFUEVSTTo2MyxFUElQRTo2NCxFUFJPVE86NjUsRVBST1RPTk9TVVBQT1JUOjY2LEVQUk9UT1RZUEU6NjcsRVJBTkdFOjY4LEVST0ZTOjY5LEVTUElQRTo3MCxFU1JDSDo3MSxFU1RBTEU6NzIsRVRJTUVET1VUOjczLEVUWFRCU1k6NzQsRVhERVY6NzV9LHlmPShDPXt9LENbNl09IlNJR0hVUCIsQ1s4XT0iU0lHSU5UIixDWzExXT0iU0lHUVVJVCIsQ1s3XT0iU0lHSUxMIixDWzE1XT0iU0lHVFJBUCIsQ1swXT0iU0lHQUJSVCIsQ1syXT0iU0lHQlVTIixDWzVdPQoiU0lHRlBFIixDWzldPSJTSUdLSUxMIixDWzIwXT0iU0lHVVNSMSIsQ1sxMl09IlNJR1NFR1YiLENbMjFdPSJTSUdVU1IyIixDWzEwXT0iU0lHUElQRSIsQ1sxXT0iU0lHQUxSTSIsQ1sxNF09IlNJR1RFUk0iLENbM109IlNJR0NITEQiLENbNF09IlNJR0NPTlQiLENbMTNdPSJTSUdTVE9QIixDWzE2XT0iU0lHVFNUUCIsQ1sxN109IlNJR1RUSU4iLENbMThdPSJTSUdUVE9VIixDWzE5XT0iU0lHVVJHIixDWzIzXT0iU0lHWENQVSIsQ1syNF09IlNJR1hGU1oiLENbMjJdPSJTSUdWVEFMUk0iLEMpLHRoPVJhfEJhfENhfG1ifEVhfFNhLHpmPVJhfERhfENhfG1ifEVhfFNhLFhjPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7dmFyIGU9YS5jYWxsKHRoaXMpfHx0aGlzO2UuZXJybm89ZDtPYmplY3Quc2V0UHJvdG90eXBlT2YoZSxiLnByb3RvdHlwZSk7cmV0dXJuIGV9UmMoYixhKTtyZXR1cm4gYn0oRXJyb3IpLHZmPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7dmFyIGU9YS5jYWxsKHRoaXMsCiJXQVNJIEV4aXQgZXJyb3I6ICIrZCl8fHRoaXM7ZS5jb2RlPWQ7T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsYi5wcm90b3R5cGUpO3JldHVybiBlfVJjKGIsYSk7cmV0dXJuIGJ9KEVycm9yKSxzaD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQpe3ZhciBlPWEuY2FsbCh0aGlzLCJXQVNJIEtpbGwgc2lnbmFsOiAiK2QpfHx0aGlzO2Uuc2lnbmFsPWQ7T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsYi5wcm90b3R5cGUpO3JldHVybiBlfVJjKGIsYSk7cmV0dXJuIGJ9KEVycm9yKSxBZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7ZnVuY3Rpb24gYihhKXtzd2l0Y2goYSl7Y2FzZSAxOnJldHVybiBBLmhydGltZSgpO2Nhc2UgMDpyZXR1cm4gUGEoRGF0ZS5ub3coKSk7Y2FzZSAyOmNhc2UgMzpyZXR1cm4gQS5ocnRpbWUoKS1JO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGUoYSxiKXthPWdmKGgsYSk7aWYoYiE9PW4oMCkmJihhLnJpZ2h0cy5iYXNlJmIpPT09bigwKSl0aHJvdyBuZXcgWGMoNjMpOwpyZXR1cm4gYX1mdW5jdGlvbiBmKGEsYil7aC5yZWZyZXNoTWVtb3J5KCk7cmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDpifSxmdW5jdGlvbihiLGQpe2Q9YSs4KmQ7Yj1oLnZpZXcuZ2V0VWludDMyKGQsITApO2Q9aC52aWV3LmdldFVpbnQzMihkKzQsITApO3JldHVybiBuZXcgVWludDhBcnJheShoLm1lbW9yeS5idWZmZXIsYixkKX0pfXZhciBnLGg9dGhpcyxrPXt9O2EmJmEucHJlb3BlbnM/az1hLnByZW9wZW5zOmEmJmEucHJlb3BlbkRpcmVjdG9yaWVzJiYoaz1hLnByZW9wZW5EaXJlY3Rvcmllcyk7dmFyIGw9e307YSYmYS5lbnYmJihsPWEuZW52KTt2YXIgbT1bXTthJiZhLmFyZ3MmJihtPWEuYXJncyk7dmFyIEE9d2Y7YSYmYS5iaW5kaW5ncyYmKEE9YS5iaW5kaW5ncyk7dGhpcy52aWV3PXRoaXMubWVtb3J5PXZvaWQgMDt0aGlzLmJpbmRpbmdzPUE7dGhpcy5GRF9NQVA9bmV3IE1hcChbWzAse3JlYWw6MCxmaWxldHlwZToyLHJpZ2h0czp7YmFzZTp0aCxpbmhlcml0aW5nOm4oMCl9LApwYXRoOnZvaWQgMH1dLFsxLHtyZWFsOjEsZmlsZXR5cGU6MixyaWdodHM6e2Jhc2U6emYsaW5oZXJpdGluZzpuKDApfSxwYXRoOnZvaWQgMH1dLFsyLHtyZWFsOjIsZmlsZXR5cGU6MixyaWdodHM6e2Jhc2U6emYsaW5oZXJpdGluZzpuKDApfSxwYXRoOnZvaWQgMH1dXSk7dmFyIHI9dGhpcy5iaW5kaW5ncy5mcyx1PXRoaXMuYmluZGluZ3MucGF0aDt0cnl7Zm9yKHZhciBwPVNiKE9iamVjdC5lbnRyaWVzKGspKSx4PXAubmV4dCgpOyF4LmRvbmU7eD1wLm5leHQoKSl7dmFyIHk9VGIoeC52YWx1ZSwyKSx6PXlbMF0sQz15WzFdLEQ9ci5vcGVuU3luYyhDLHIuY29uc3RhbnRzLk9fUkRPTkxZKSxFPVViKHRoaXMuRkRfTUFQLmtleXMoKSkucmV2ZXJzZSgpWzBdKzE7dGhpcy5GRF9NQVAuc2V0KEUse3JlYWw6RCxmaWxldHlwZTozLHJpZ2h0czp7YmFzZTpZYyxpbmhlcml0aW5nOmpmfSxmYWtlUGF0aDp6LHBhdGg6Q30pfX1jYXRjaCh3KXt2YXIgSD17ZXJyb3I6d319ZmluYWxseXt0cnl7eCYmCiF4LmRvbmUmJihnPXAucmV0dXJuKSYmZy5jYWxsKHApfWZpbmFsbHl7aWYoSCl0aHJvdyBILmVycm9yO319dmFyIEk9QS5ocnRpbWUoKTt0aGlzLndhc2lJbXBvcnQ9e2FyZ3NfZ2V0OmZ1bmN0aW9uKGEsYil7aC5yZWZyZXNoTWVtb3J5KCk7dmFyIGQ9YSxlPWI7bS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2gudmlldy5zZXRVaW50MzIoZCxlLCEwKTtkKz00O2UrPUcuZnJvbShoLm1lbW9yeS5idWZmZXIpLndyaXRlKGErIlx4MDAiLGUpfSk7cmV0dXJuIDB9LGFyZ3Nfc2l6ZXNfZ2V0OmZ1bmN0aW9uKGEsYil7aC5yZWZyZXNoTWVtb3J5KCk7aC52aWV3LnNldFVpbnQzMihhLG0ubGVuZ3RoLCEwKTthPW0ucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErRy5ieXRlTGVuZ3RoKGIpKzF9LDApO2gudmlldy5zZXRVaW50MzIoYixhLCEwKTtyZXR1cm4gMH0sZW52aXJvbl9nZXQ6ZnVuY3Rpb24oYSxiKXtoLnJlZnJlc2hNZW1vcnkoKTt2YXIgZD1hLGU9YjtPYmplY3QuZW50cmllcyhsKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPQpUYihhLDIpO2E9YlswXTtiPWJbMV07aC52aWV3LnNldFVpbnQzMihkLGUsITApO2QrPTQ7ZSs9Ry5mcm9tKGgubWVtb3J5LmJ1ZmZlcikud3JpdGUoYSsiPSIrYisiXHgwMCIsZSl9KTtyZXR1cm4gMH0sZW52aXJvbl9zaXplc19nZXQ6ZnVuY3Rpb24oYSxiKXtoLnJlZnJlc2hNZW1vcnkoKTt2YXIgZD1PYmplY3QuZW50cmllcyhsKS5tYXAoZnVuY3Rpb24oYSl7YT1UYihhLDIpO3JldHVybiBhWzBdKyI9IithWzFdKyJceDAwIn0pLGU9ZC5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStHLmJ5dGVMZW5ndGgoYil9LDApO2gudmlldy5zZXRVaW50MzIoYSxkLmxlbmd0aCwhMCk7aC52aWV3LnNldFVpbnQzMihiLGUsITApO3JldHVybiAwfSxjbG9ja19yZXNfZ2V0OmZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBkPW4oMSk7YnJlYWs7Y2FzZSAwOmQ9bigxRTMpfWgudmlldy5zZXRCaWdVaW50NjQoYixkKTtyZXR1cm4gMH0sY2xvY2tfdGltZV9nZXQ6ZnVuY3Rpb24oYSwKZCxlKXtoLnJlZnJlc2hNZW1vcnkoKTthPWIoYSk7aWYobnVsbD09PWEpcmV0dXJuIDI4O2gudmlldy5zZXRCaWdVaW50NjQoZSxuKGEpLCEwKTtyZXR1cm4gMH0sZmRfYWR2aXNlOkIoZnVuY3Rpb24oYSl7ZShhLG1iKTtyZXR1cm4gNTJ9KSxmZF9hbGxvY2F0ZTpCKGZ1bmN0aW9uKGEpe2UoYSxoYyk7cmV0dXJuIDUyfSksZmRfY2xvc2U6QihmdW5jdGlvbihhKXt2YXIgYj1lKGEsbigwKSk7ci5jbG9zZVN5bmMoYi5yZWFsKTtoLkZEX01BUC5kZWxldGUoYSk7cmV0dXJuIDB9KSxmZF9kYXRhc3luYzpCKGZ1bmN0aW9uKGEpe2E9ZShhLFJhKTtyLmZkYXRhc3luY1N5bmMoYS5yZWFsKTtyZXR1cm4gMH0pLGZkX2Zkc3RhdF9nZXQ6QihmdW5jdGlvbihhLGIpe2E9ZShhLG4oMCkpO2gucmVmcmVzaE1lbW9yeSgpO2gudmlldy5zZXRVaW50OChiLGEuZmlsZXR5cGUpO2gudmlldy5zZXRVaW50MTYoYisyLDAsITApO2gudmlldy5zZXRVaW50MTYoYis0LDAsITApO2gudmlldy5zZXRCaWdVaW50NjQoYisKOCxuKGEucmlnaHRzLmJhc2UpLCEwKTtoLnZpZXcuc2V0QmlnVWludDY0KGIrOCs4LG4oYS5yaWdodHMuaW5oZXJpdGluZyksITApO3JldHVybiAwfSksZmRfZmRzdGF0X3NldF9mbGFnczpCKGZ1bmN0aW9uKGEpe2UoYSxsYik7cmV0dXJuIDUyfSksZmRfZmRzdGF0X3NldF9yaWdodHM6QihmdW5jdGlvbihhLGIsZCl7YT1lKGEsbigwKSk7aWYoKGEucmlnaHRzLmJhc2V8Yik+YS5yaWdodHMuYmFzZXx8KGEucmlnaHRzLmluaGVyaXRpbmd8ZCk+YS5yaWdodHMuaW5oZXJpdGluZylyZXR1cm4gNjM7YS5yaWdodHMuYmFzZT1iO2EucmlnaHRzLmluaGVyaXRpbmc9ZDtyZXR1cm4gMH0pLGZkX2ZpbGVzdGF0X2dldDpCKGZ1bmN0aW9uKGEsYil7YT1lKGEsRWEpO3ZhciBkPXIuZnN0YXRTeW5jKGEucmVhbCk7aC5yZWZyZXNoTWVtb3J5KCk7aC52aWV3LnNldEJpZ1VpbnQ2NChiLG4oZC5kZXYpLCEwKTtiKz04O2gudmlldy5zZXRCaWdVaW50NjQoYixuKGQuaW5vKSwhMCk7Yis9ODtoLnZpZXcuc2V0VWludDgoYiwKYS5maWxldHlwZSk7Yis9ODtoLnZpZXcuc2V0QmlnVWludDY0KGIsbihkLm5saW5rKSwhMCk7Yis9ODtoLnZpZXcuc2V0QmlnVWludDY0KGIsbihkLnNpemUpLCEwKTtiKz04O2gudmlldy5zZXRCaWdVaW50NjQoYixQYShkLmF0aW1lTXMpLCEwKTtiKz04O2gudmlldy5zZXRCaWdVaW50NjQoYixQYShkLm10aW1lTXMpLCEwKTtoLnZpZXcuc2V0QmlnVWludDY0KGIrOCxQYShkLmN0aW1lTXMpLCEwKTtyZXR1cm4gMH0pLGZkX2ZpbGVzdGF0X3NldF9zaXplOkIoZnVuY3Rpb24oYSxiKXthPWUoYSxrYyk7ci5mdHJ1bmNhdGVTeW5jKGEucmVhbCxOdW1iZXIoYikpO3JldHVybiAwfSksZmRfZmlsZXN0YXRfc2V0X3RpbWVzOkIoZnVuY3Rpb24oYSxkLGYsaCl7YT1lKGEsbGMpO3ZhciBnPXIuZnN0YXRTeW5jKGEucmVhbCksaz1nLmF0aW1lO2c9Zy5tdGltZTt2YXIgbD1iYihiKDApKTtpZigzPT09KGgmMyl8fDEyPT09KGgmMTIpKXJldHVybiAyODsxPT09KGgmMSk/az1iYihkKToyPT09CihoJjIpJiYoaz1sKTs0PT09KGgmNCk/Zz1iYihmKTo4PT09KGgmOCkmJihnPWwpO3IuZnV0aW1lc1N5bmMoYS5yZWFsLG5ldyBEYXRlKGspLG5ldyBEYXRlKGcpKTtyZXR1cm4gMH0pLGZkX3ByZXN0YXRfZ2V0OkIoZnVuY3Rpb24oYSxiKXthPWUoYSxuKDApKTtpZighYS5wYXRoKXJldHVybiAyODtoLnJlZnJlc2hNZW1vcnkoKTtoLnZpZXcuc2V0VWludDgoYiwwKTtoLnZpZXcuc2V0VWludDMyKGIrNCxHLmJ5dGVMZW5ndGgoYS5mYWtlUGF0aCksITApO3JldHVybiAwfSksZmRfcHJlc3RhdF9kaXJfbmFtZTpCKGZ1bmN0aW9uKGEsYixkKXthPWUoYSxuKDApKTtpZighYS5wYXRoKXJldHVybiAyODtoLnJlZnJlc2hNZW1vcnkoKTtHLmZyb20oaC5tZW1vcnkuYnVmZmVyKS53cml0ZShhLmZha2VQYXRoLGIsZCwidXRmOCIpO3JldHVybiAwfSksZmRfcHdyaXRlOkIoZnVuY3Rpb24oYSxiLGQsZyxrKXt2YXIgbD1lKGEsRGF8a2IpLG09MDtmKGIsZCkuZm9yRWFjaChmdW5jdGlvbihhKXtmb3IodmFyIGI9CjA7YjxhLmJ5dGVMZW5ndGg7KWIrPXIud3JpdGVTeW5jKGwucmVhbCxhLGIsYS5ieXRlTGVuZ3RoLWIsTnVtYmVyKGcpK20rYik7bSs9Yn0pO2gudmlldy5zZXRVaW50MzIoayxtLCEwKTtyZXR1cm4gMH0pLGZkX3dyaXRlOkIoZnVuY3Rpb24oYSxiLGQsZyl7dmFyIGs9ZShhLERhKSxsPTA7ZihiLGQpLmZvckVhY2goZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmJ5dGVMZW5ndGg7KXt2YXIgZD1yLndyaXRlU3luYyhrLnJlYWwsYSxiLGEuYnl0ZUxlbmd0aC1iLGsub2Zmc2V0P051bWJlcihrLm9mZnNldCk6bnVsbCk7ay5vZmZzZXQmJihrLm9mZnNldCs9bihkKSk7Yis9ZH1sKz1ifSk7aC52aWV3LnNldFVpbnQzMihnLGwsITApO3JldHVybiAwfSksZmRfcHJlYWQ6QihmdW5jdGlvbihhLGIsZCxnLGspe3ZhciBsO2E9ZShhLEJhfGtiKTt2YXIgbT0wO3RyeXt2YXIgdz1TYihmKGIsZCkpLG49dy5uZXh0KCk7YTpmb3IoOyFuLmRvbmU7bj13Lm5leHQoKSl7dmFyIEY9bi52YWx1ZTsKZm9yKGI9MDtiPEYuYnl0ZUxlbmd0aDspe3ZhciBxPUYuYnl0ZUxlbmd0aC1iLHA9ci5yZWFkU3luYyhhLnJlYWwsRixiLEYuYnl0ZUxlbmd0aC1iLE51bWJlcihnKSttK2IpO2IrPXA7bSs9cDtpZigwPT09cHx8cDxxKWJyZWFrIGF9bSs9Yn19Y2F0Y2goTyl7dmFyIHQ9e2Vycm9yOk99fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihsPXcucmV0dXJuKSYmbC5jYWxsKHcpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yO319aC52aWV3LnNldFVpbnQzMihrLG0sITApO3JldHVybiAwfSksZmRfcmVhZDpCKGZ1bmN0aW9uKGEsYixkLGcpe3ZhciBrO2E9ZShhLEJhKTt2YXIgbD0wPT09YS5yZWFsLG09MDt0cnl7dmFyIHc9U2IoZihiLGQpKSxGPXcubmV4dCgpO2E6Zm9yKDshRi5kb25lO0Y9dy5uZXh0KCkpe3ZhciBwPUYudmFsdWU7Zm9yKGI9MDtiPHAuYnl0ZUxlbmd0aDspe3ZhciBxPXAuYnl0ZUxlbmd0aC1iLHQ9ci5yZWFkU3luYyhhLnJlYWwscCxiLHEsbHx8dm9pZCAwPT09YS5vZmZzZXQ/Cm51bGw6TnVtYmVyKGEub2Zmc2V0KSk7bHx8KGEub2Zmc2V0PShhLm9mZnNldD9hLm9mZnNldDpuKDApKStuKHQpKTtiKz10O20rPXQ7aWYoMD09PXR8fHQ8cSlicmVhayBhfX19Y2F0Y2goTyl7dmFyIGJjPXtlcnJvcjpPfX1maW5hbGx5e3RyeXtGJiYhRi5kb25lJiYoaz13LnJldHVybikmJmsuY2FsbCh3KX1maW5hbGx5e2lmKGJjKXRocm93IGJjLmVycm9yO319aC52aWV3LnNldFVpbnQzMihnLG0sITApO3JldHVybiAwfSksZmRfcmVhZGRpcjpCKGZ1bmN0aW9uKGEsYixkLGYsZyl7YT1lKGEsamMpO2gucmVmcmVzaE1lbW9yeSgpO3ZhciBrPXIucmVhZGRpclN5bmMoYS5wYXRoLHt3aXRoRmlsZVR5cGVzOiEwfSksbD1iO2ZvcihmPU51bWJlcihmKTtmPGsubGVuZ3RoO2YrPTEpe3ZhciBtPWtbZl0sdz1HLmJ5dGVMZW5ndGgobS5uYW1lKTtpZihiLWw+ZClicmVhaztoLnZpZXcuc2V0QmlnVWludDY0KGIsbihmKzEpLCEwKTtiKz04O2lmKGItbD5kKWJyZWFrO3ZhciBwPXIuc3RhdFN5bmModS5yZXNvbHZlKGEucGF0aCwKbS5uYW1lKSk7aC52aWV3LnNldEJpZ1VpbnQ2NChiLG4ocC5pbm8pLCEwKTtiKz04O2lmKGItbD5kKWJyZWFrO2gudmlldy5zZXRVaW50MzIoYix3LCEwKTtiKz00O2lmKGItbD5kKWJyZWFrO3N3aXRjaCghMCl7Y2FzZSBwLmlzQmxvY2tEZXZpY2UoKTpwPTE7YnJlYWs7Y2FzZSBwLmlzQ2hhcmFjdGVyRGV2aWNlKCk6cD0yO2JyZWFrO2Nhc2UgcC5pc0RpcmVjdG9yeSgpOnA9MzticmVhaztjYXNlIHAuaXNGSUZPKCk6cD02O2JyZWFrO2Nhc2UgcC5pc0ZpbGUoKTpwPTQ7YnJlYWs7Y2FzZSBwLmlzU29ja2V0KCk6cD02O2JyZWFrO2Nhc2UgcC5pc1N5bWJvbGljTGluaygpOnA9NzticmVhaztkZWZhdWx0OnA9MH1oLnZpZXcuc2V0VWludDgoYixwKTtiKz0xO2IrPTM7aWYoYit3Pj1sK2QpYnJlYWs7Ry5mcm9tKGgubWVtb3J5LmJ1ZmZlcikud3JpdGUobS5uYW1lLGIpO2IrPXd9aC52aWV3LnNldFVpbnQzMihnLE1hdGgubWluKGItbCxkKSwhMCk7cmV0dXJuIDB9KSxmZF9yZW51bWJlcjpCKGZ1bmN0aW9uKGEsCmIpe2UoYSxuKDApKTtlKGIsbigwKSk7ci5jbG9zZVN5bmMoaC5GRF9NQVAuZ2V0KGEpLnJlYWwpO2guRkRfTUFQLnNldChhLGguRkRfTUFQLmdldChiKSk7aC5GRF9NQVAuZGVsZXRlKGIpO3JldHVybiAwfSksZmRfc2VlazpCKGZ1bmN0aW9uKGEsYixkLGYpe2E9ZShhLGtiKTtoLnJlZnJlc2hNZW1vcnkoKTtzd2l0Y2goZCl7Y2FzZSAxOmEub2Zmc2V0PShhLm9mZnNldD9hLm9mZnNldDpuKDApKStuKGIpO2JyZWFrO2Nhc2UgMjpkPXIuZnN0YXRTeW5jKGEucmVhbCkuc2l6ZTthLm9mZnNldD1uKGQpK24oYik7YnJlYWs7Y2FzZSAwOmEub2Zmc2V0PW4oYil9aC52aWV3LnNldEJpZ1VpbnQ2NChmLGEub2Zmc2V0LCEwKTtyZXR1cm4gMH0pLGZkX3RlbGw6QihmdW5jdGlvbihhLGIpe2E9ZShhLGhkKTtoLnJlZnJlc2hNZW1vcnkoKTthLm9mZnNldHx8KGEub2Zmc2V0PW4oMCkpO2gudmlldy5zZXRCaWdVaW50NjQoYixhLm9mZnNldCwhMCk7cmV0dXJuIDB9KSxmZF9zeW5jOkIoZnVuY3Rpb24oYSl7YT0KZShhLENhKTtyLmZzeW5jU3luYyhhLnJlYWwpO3JldHVybiAwfSkscGF0aF9jcmVhdGVfZGlyZWN0b3J5OkIoZnVuY3Rpb24oYSxiLGQpe2E9ZShhLGlkKTtpZighYS5wYXRoKXJldHVybiAyODtoLnJlZnJlc2hNZW1vcnkoKTtiPUcuZnJvbShoLm1lbW9yeS5idWZmZXIsYixkKS50b1N0cmluZygpO3IubWtkaXJTeW5jKHUucmVzb2x2ZShhLnBhdGgsYikpO3JldHVybiAwfSkscGF0aF9maWxlc3RhdF9nZXQ6QihmdW5jdGlvbihhLGIsZCxmLGcpe2E9ZShhLHBkKTtpZighYS5wYXRoKXJldHVybiAyODtoLnJlZnJlc2hNZW1vcnkoKTtkPUcuZnJvbShoLm1lbW9yeS5idWZmZXIsZCxmKS50b1N0cmluZygpO2Q9ci5zdGF0U3luYyh1LnJlc29sdmUoYS5wYXRoLGQpKTtoLnZpZXcuc2V0QmlnVWludDY0KGcsbihkLmRldiksITApO2crPTg7aC52aWV3LnNldEJpZ1VpbnQ2NChnLG4oZC5pbm8pLCEwKTtnKz04O2gudmlldy5zZXRVaW50OChnLGhmKGgsdm9pZCAwLGQpLmZpbGV0eXBlKTtnKz0KODtoLnZpZXcuc2V0QmlnVWludDY0KGcsbihkLm5saW5rKSwhMCk7Zys9ODtoLnZpZXcuc2V0QmlnVWludDY0KGcsbihkLnNpemUpLCEwKTtnKz04O2gudmlldy5zZXRCaWdVaW50NjQoZyxQYShkLmF0aW1lTXMpLCEwKTtnKz04O2gudmlldy5zZXRCaWdVaW50NjQoZyxQYShkLm10aW1lTXMpLCEwKTtoLnZpZXcuc2V0QmlnVWludDY0KGcrOCxQYShkLmN0aW1lTXMpLCEwKTtyZXR1cm4gMH0pLHBhdGhfZmlsZXN0YXRfc2V0X3RpbWVzOkIoZnVuY3Rpb24oYSxkLGYsZyxrLGwsbSl7YT1lKGEscmQpO2lmKCFhLnBhdGgpcmV0dXJuIDI4O2gucmVmcmVzaE1lbW9yeSgpO3ZhciBuPXIuZnN0YXRTeW5jKGEucmVhbCk7ZD1uLmF0aW1lO249bi5tdGltZTt2YXIgcD1iYihiKDApKTtpZigzPT09KG0mMyl8fDEyPT09KG0mMTIpKXJldHVybiAyODsxPT09KG0mMSk/ZD1iYihrKToyPT09KG0mMikmJihkPXApOzQ9PT0obSY0KT9uPWJiKGwpOjg9PT0obSY4KSYmKG49cCk7Zj1HLmZyb20oaC5tZW1vcnkuYnVmZmVyLApmLGcpLnRvU3RyaW5nKCk7ci51dGltZXNTeW5jKHUucmVzb2x2ZShhLnBhdGgsZiksbmV3IERhdGUoZCksbmV3IERhdGUobikpO3JldHVybiAwfSkscGF0aF9saW5rOkIoZnVuY3Rpb24oYSxiLGQsZixnLGssbCl7YT1lKGEsa2QpO2c9ZShnLGxkKTtpZighYS5wYXRofHwhZy5wYXRoKXJldHVybiAyODtoLnJlZnJlc2hNZW1vcnkoKTtkPUcuZnJvbShoLm1lbW9yeS5idWZmZXIsZCxmKS50b1N0cmluZygpO2s9Ry5mcm9tKGgubWVtb3J5LmJ1ZmZlcixrLGwpLnRvU3RyaW5nKCk7ci5saW5rU3luYyh1LnJlc29sdmUoYS5wYXRoLGQpLHUucmVzb2x2ZShnLnBhdGgsaykpO3JldHVybiAwfSkscGF0aF9vcGVuOkIoZnVuY3Rpb24oYSxiLGQsZixnLGssbCxtLHApe2I9ZShhLGljKTtrPW4oayk7bD1uKGwpO2E9KGsmKEJhfGpjKSkhPT1uKDApO3ZhciBxPShrJihSYXxEYXxoY3xrYykpIT09bigwKTtpZihxJiZhKXZhciB3PXIuY29uc3RhbnRzLk9fUkRXUjtlbHNlIGE/dz1yLmNvbnN0YW50cy5PX1JET05MWToKcSYmKHc9ci5jb25zdGFudHMuT19XUk9OTFkpO2E9a3xpYztrfD1sOzAhPT0oZyYxKSYmKHd8PXIuY29uc3RhbnRzLk9fQ1JFQVQsYXw9amQpOzAhPT0oZyYyKSYmKHd8PXIuY29uc3RhbnRzLk9fRElSRUNUT1JZKTswIT09KGcmNCkmJih3fD1yLmNvbnN0YW50cy5PX0VYQ0wpOzAhPT0oZyY4KSYmKHd8PXIuY29uc3RhbnRzLk9fVFJVTkMsYXw9cWQpOzAhPT0obSYxKSYmKHd8PXIuY29uc3RhbnRzLk9fQVBQRU5EKTswIT09KG0mMikmJih3PXIuY29uc3RhbnRzLk9fRFNZTkM/d3xyLmNvbnN0YW50cy5PX0RTWU5DOnd8ci5jb25zdGFudHMuT19TWU5DLGt8PVJhKTswIT09KG0mNCkmJih3fD1yLmNvbnN0YW50cy5PX05PTkJMT0NLKTswIT09KG0mOCkmJih3PXIuY29uc3RhbnRzLk9fUlNZTkM/d3xyLmNvbnN0YW50cy5PX1JTWU5DOnd8ci5jb25zdGFudHMuT19TWU5DLGt8PUNhKTswIT09KG0mMTYpJiYod3w9ci5jb25zdGFudHMuT19TWU5DLGt8PUNhKTtxJiYwPT09KHcmKHIuY29uc3RhbnRzLk9fQVBQRU5EfApyLmNvbnN0YW50cy5PX1RSVU5DKSkmJihrfD1rYik7aC5yZWZyZXNoTWVtb3J5KCk7ZD1HLmZyb20oaC5tZW1vcnkuYnVmZmVyLGQsZikudG9TdHJpbmcoKTtkPXUucmVzb2x2ZShiLnBhdGgsZCk7aWYodS5yZWxhdGl2ZShiLnBhdGgsZCkuc3RhcnRzV2l0aCgiLi4iKSlyZXR1cm4gNzY7dHJ5e3ZhciB0PXIucmVhbHBhdGhTeW5jKGQpO2lmKHUucmVsYXRpdmUoYi5wYXRoLHQpLnN0YXJ0c1dpdGgoIi4uIikpcmV0dXJuIDc2fWNhdGNoKE8pe2lmKCJFTk9FTlQiPT09Ty5jb2RlKXQ9ZDtlbHNlIHRocm93IE87fXRyeXt2YXIgRj1yLnN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCl9Y2F0Y2goTyl7fXc9IXEmJkY/ci5vcGVuU3luYyh0LHIuY29uc3RhbnRzLk9fUkRPTkxZKTpyLm9wZW5TeW5jKHQsdyk7Rj1VYihoLkZEX01BUC5rZXlzKCkpLnJldmVyc2UoKVswXSsxO2guRkRfTUFQLnNldChGLHtyZWFsOncsZmlsZXR5cGU6dm9pZCAwLHJpZ2h0czp7YmFzZTphLGluaGVyaXRpbmc6a30sCnBhdGg6dH0pO2dmKGgsRik7aC52aWV3LnNldFVpbnQzMihwLEYsITApO3JldHVybiAwfSkscGF0aF9yZWFkbGluazpCKGZ1bmN0aW9uKGEsYixkLGYsZyxrKXthPWUoYSxtZCk7aWYoIWEucGF0aClyZXR1cm4gMjg7aC5yZWZyZXNoTWVtb3J5KCk7Yj1HLmZyb20oaC5tZW1vcnkuYnVmZmVyLGIsZCkudG9TdHJpbmcoKTtiPXUucmVzb2x2ZShhLnBhdGgsYik7Yj1yLnJlYWRsaW5rU3luYyhiKTtmPUcuZnJvbShoLm1lbW9yeS5idWZmZXIpLndyaXRlKGIsZixnKTtoLnZpZXcuc2V0VWludDMyKGssZiwhMCk7cmV0dXJuIDB9KSxwYXRoX3JlbW92ZV9kaXJlY3Rvcnk6QihmdW5jdGlvbihhLGIsZCl7YT1lKGEsdGQpO2lmKCFhLnBhdGgpcmV0dXJuIDI4O2gucmVmcmVzaE1lbW9yeSgpO2I9Ry5mcm9tKGgubWVtb3J5LmJ1ZmZlcixiLGQpLnRvU3RyaW5nKCk7ci5ybWRpclN5bmModS5yZXNvbHZlKGEucGF0aCxiKSk7cmV0dXJuIDB9KSxwYXRoX3JlbmFtZTpCKGZ1bmN0aW9uKGEsYixkLApmLGcsayl7YT1lKGEsbmQpO2Y9ZShmLG9kKTtpZighYS5wYXRofHwhZi5wYXRoKXJldHVybiAyODtoLnJlZnJlc2hNZW1vcnkoKTtiPUcuZnJvbShoLm1lbW9yeS5idWZmZXIsYixkKS50b1N0cmluZygpO2c9Ry5mcm9tKGgubWVtb3J5LmJ1ZmZlcixnLGspLnRvU3RyaW5nKCk7ci5yZW5hbWVTeW5jKHUucmVzb2x2ZShhLnBhdGgsYiksdS5yZXNvbHZlKGYucGF0aCxnKSk7cmV0dXJuIDB9KSxwYXRoX3N5bWxpbms6QihmdW5jdGlvbihhLGIsZCxmLGcpe2Q9ZShkLHNkKTtpZighZC5wYXRoKXJldHVybiAyODtoLnJlZnJlc2hNZW1vcnkoKTthPUcuZnJvbShoLm1lbW9yeS5idWZmZXIsYSxiKS50b1N0cmluZygpO2Y9Ry5mcm9tKGgubWVtb3J5LmJ1ZmZlcixmLGcpLnRvU3RyaW5nKCk7ci5zeW1saW5rU3luYyhhLHUucmVzb2x2ZShkLnBhdGgsZikpO3JldHVybiAwfSkscGF0aF91bmxpbmtfZmlsZTpCKGZ1bmN0aW9uKGEsYixkKXthPWUoYSx1ZCk7aWYoIWEucGF0aClyZXR1cm4gMjg7CmgucmVmcmVzaE1lbW9yeSgpO2I9Ry5mcm9tKGgubWVtb3J5LmJ1ZmZlcixiLGQpLnRvU3RyaW5nKCk7ci51bmxpbmtTeW5jKHUucmVzb2x2ZShhLnBhdGgsYikpO3JldHVybiAwfSkscG9sbF9vbmVvZmY6ZnVuY3Rpb24oYSxkLGUsZil7dmFyIGc9MCxrPTA7aC5yZWZyZXNoTWVtb3J5KCk7Zm9yKHZhciBsPTA7bDxlO2wrPTEpe3ZhciBtPWgudmlldy5nZXRCaWdVaW50NjQoYSwhMCk7YSs9ODt2YXIgcD1oLnZpZXcuZ2V0VWludDgoYSk7YSs9MTtzd2l0Y2gocCl7Y2FzZSAwOmErPTc7aC52aWV3LmdldEJpZ1VpbnQ2NChhLCEwKTthKz04O3ZhciBxPWgudmlldy5nZXRVaW50MzIoYSwhMCk7YSs9NDthKz00O3A9aC52aWV3LmdldEJpZ1VpbnQ2NChhLCEwKTthKz04O2gudmlldy5nZXRCaWdVaW50NjQoYSwhMCk7YSs9ODt2YXIgcj1oLnZpZXcuZ2V0VWludDE2KGEsITApO2ErPTI7YSs9Njt2YXIgdD0xPT09cjtyPTA7cT1uKGIocSkpO251bGw9PT1xP3I9Mjg6KHA9dD9wOnErcCxrPQpwPms/cDprKTtoLnZpZXcuc2V0QmlnVWludDY0KGQsbSwhMCk7ZCs9ODtoLnZpZXcuc2V0VWludDE2KGQsciwhMCk7ZCs9MjtoLnZpZXcuc2V0VWludDgoZCwwKTtkKz0xO2QrPTU7Zys9MTticmVhaztjYXNlIDE6Y2FzZSAyOmErPTM7aC52aWV3LmdldFVpbnQzMihhLCEwKTthKz00O2gudmlldy5zZXRCaWdVaW50NjQoZCxtLCEwKTtkKz04O2gudmlldy5zZXRVaW50MTYoZCw1MiwhMCk7ZCs9MjtoLnZpZXcuc2V0VWludDgoZCxwKTtkKz0xO2QrPTU7Zys9MTticmVhaztkZWZhdWx0OnJldHVybiAyOH19Zm9yKGgudmlldy5zZXRVaW50MzIoZixnLCEwKTtBLmhydGltZSgpPGs7KTtyZXR1cm4gMH0scHJvY19leGl0OmZ1bmN0aW9uKGEpe0EuZXhpdChhKTtyZXR1cm4gMH0scHJvY19yYWlzZTpmdW5jdGlvbihhKXtpZighKGEgaW4geWYpKXJldHVybiAyODtBLmtpbGwoeWZbYV0pO3JldHVybiAwfSxyYW5kb21fZ2V0OmZ1bmN0aW9uKGEsYil7aC5yZWZyZXNoTWVtb3J5KCk7QS5yYW5kb21GaWxsU3luYyhuZXcgVWludDhBcnJheShoLm1lbW9yeS5idWZmZXIpLAphLGIpO3JldHVybiAwfSxzY2hlZF95aWVsZDpmdW5jdGlvbigpe3JldHVybiAwfSxzb2NrX3JlY3Y6ZnVuY3Rpb24oKXtyZXR1cm4gNTJ9LHNvY2tfc2VuZDpmdW5jdGlvbigpe3JldHVybiA1Mn0sc29ja19zaHV0ZG93bjpmdW5jdGlvbigpe3JldHVybiA1Mn19O2EudHJhY2VTeXNjYWxscyYmT2JqZWN0LmtleXModGhpcy53YXNpSW1wb3J0KS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWgud2FzaUltcG9ydFthXTtoLndhc2lJbXBvcnRbYV09ZnVuY3Rpb24oKXtmb3IodmFyIGQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspZFtlXT1hcmd1bWVudHNbZV07Y29uc29sZS5sb2coIldBU0k6IHdhc2lJbXBvcnQgY2FsbGVkOiAiK2ErIiAoIitkKyIpIik7dHJ5e3ZhciBmPWIuYXBwbHkodm9pZCAwLFViKGQpKTtjb25zb2xlLmxvZygiV0FTSTogID0+ICIrZik7cmV0dXJuIGZ9Y2F0Y2goWil7dGhyb3cgY29uc29sZS5sb2coIkNhdGNoZWQgZXJyb3I6ICIrWiksWjt9fX0pfWEucHJvdG90eXBlLnJlZnJlc2hNZW1vcnk9CmZ1bmN0aW9uKCl7dGhpcy52aWV3JiYwIT09dGhpcy52aWV3LmJ1ZmZlci5ieXRlTGVuZ3RofHwodGhpcy52aWV3PW5ldyBlYyh0aGlzLm1lbW9yeS5idWZmZXIpKX07YS5wcm90b3R5cGUuc2V0TWVtb3J5PWZ1bmN0aW9uKGEpe3RoaXMubWVtb3J5PWF9O2EucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEpe2E9YS5leHBvcnRzO2lmKG51bGw9PT1hfHwib2JqZWN0IiE9PXR5cGVvZiBhKXRocm93IEVycm9yKCJpbnN0YW5jZS5leHBvcnRzIG11c3QgYmUgYW4gT2JqZWN0LiBSZWNlaXZlZCAiK2ErIi4iKTt2YXIgYj1hLm1lbW9yeTtpZighKGIgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5NZW1vcnkpKXRocm93IEVycm9yKCJpbnN0YW5jZS5leHBvcnRzLm1lbW9yeSBtdXN0IGJlIGEgV2ViQXNzZW1ibHkuTWVtb3J5LiBSZWNjZWl2ZWQgIitiKyIuIik7dGhpcy5zZXRNZW1vcnkoYik7YS5fc3RhcnQmJmEuX3N0YXJ0KCl9O2EucHJvdG90eXBlLmdldEltcG9ydE5hbWVzcGFjZT1mdW5jdGlvbihhKXt2YXIgYiwKZT1udWxsO3RyeXtmb3IodmFyIGY9U2IoV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMoYSkpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlO2lmKCJmdW5jdGlvbiI9PT1oLmtpbmQmJmgubW9kdWxlLnN0YXJ0c1dpdGgoIndhc2lfIikpaWYoIWUpZT1oLm1vZHVsZTtlbHNlIGlmKGUhPT1oLm1vZHVsZSl0aHJvdyBFcnJvcigiTXVsdGlwbGUgbmFtZXNwYWNlcyBkZXRlY3RlZC4iKTt9fWNhdGNoKHQpe3ZhciBrPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtnJiYhZy5kb25lJiYoYj1mLnJldHVybikmJmIuY2FsbChmKX1maW5hbGx5e2lmKGspdGhyb3cgay5lcnJvcjt9fXJldHVybiBlfTthLnByb3RvdHlwZS5nZXRJbXBvcnRzPWZ1bmN0aW9uKGEpe3N3aXRjaCh0aGlzLmdldEltcG9ydE5hbWVzcGFjZShhKSl7Y2FzZSAid2FzaV91bnN0YWJsZSI6cmV0dXJue3dhc2lfdW5zdGFibGU6dGhpcy53YXNpSW1wb3J0fTtjYXNlICJ3YXNpX3NuYXBzaG90X3ByZXZpZXcxIjpyZXR1cm57d2FzaV9zbmFwc2hvdF9wcmV2aWV3MTp0aGlzLndhc2lJbXBvcnR9OwpkZWZhdWx0OnRocm93IEVycm9yKCJDYW4ndCBkZXRlY3QgYSBXQVNJIG5hbWVzcGFjZSBmb3IgdGhlIFdlYkFzc2VtYmx5IE1vZHVsZSIpO319O2EuZGVmYXVsdEJpbmRpbmdzPXdmO3JldHVybiBhfSgpLEJmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt0aGlzLm9wdGlvbnM9YX1hLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oYSl7cmV0dXJuIEViKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBGYih0aGlzLGZ1bmN0aW9uKGEpe3Rocm93IEVycm9yKCJydW4gbm90IGltcGxlbWVudGVkIGJ5IHRoZSBDb21tYW5kIHN1YmNsYXNzIik7fSl9KX07cmV0dXJuIGF9KCksdWg9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiKXt2YXIgZD1hLmNhbGwodGhpcyxiKXx8dGhpcztpZighYi5tb2R1bGUpdGhyb3cgRXJyb3IoIkRpZCBub3QgZmluZCBhIFdlYkFzc2VtYmx5Lk1vZHVsZSBmb3IgdGhlIFdBU0kgQ29tbWFuZCIpO3JldHVybiBkfXpkKGIsYSk7Yi5wcm90b3R5cGUucnVuPQpmdW5jdGlvbihhKXtyZXR1cm4gRWIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGIsZCxnLGg7cmV0dXJuIEZiKHRoaXMsZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gYj17cHJlb3BlbnM6ZGIoeyIuIjoiLiIsIi8iOiIvIn0sdGhpcy5vcHRpb25zLnByZW9wZW5zfHx7fSksZW52OnRoaXMub3B0aW9ucy5lbnYsYXJnczp0aGlzLm9wdGlvbnMuYXJncyxiaW5kaW5nczpkYihkYih7fSxBZi5kZWZhdWx0QmluZGluZ3MpLHtmczphLmZzfSl9LGQ9bmV3IEFmKGIpLGc9dGhpcy5vcHRpb25zLm1vZHVsZSxbNCxXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShnLGRiKHt9LGQuZ2V0SW1wb3J0cyhnKSkpXTtjYXNlIDE6cmV0dXJuIGg9ZS5zZW50KCksZC5zdGFydChoKSxbMl19fSl9KX07cmV0dXJuIGJ9KEJmKSx2aD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIpe3ZhciBkPWEuY2FsbCh0aGlzLGIpfHx0aGlzO2lmKCFiLmNhbGxiYWNrKXRocm93IEVycm9yKCJUaGUgQ29tbWFuZCBPcHRpb25zIHByb3ZpZGVkIGFyZSBub3QgZm9yIGEgQ2FsbGJhY2sgQ29tbWFuZCIpOwpkLmNhbGxiYWNrPWIuY2FsbGJhY2s7cmV0dXJuIGR9emQoYixhKTtiLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oYSl7cmV0dXJuIEViKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBiO3JldHVybiBGYih0aGlzLGZ1bmN0aW9uKGQpe3N3aXRjaChkLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsUHJvbWlzZS5yZXNvbHZlKHRoaXMuY2FsbGJhY2sodGhpcy5vcHRpb25zLGEpKV07Y2FzZSAxOnJldHVybiBiPWQuc2VudCgpLCJzdHJpbmciPT10eXBlb2YgYiYmYS5mcy53cml0ZUZpbGVTeW5jKCIvZGV2L3N0ZG91dCIsKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGIrIlxuIikpLFsyXX19KX0pfTtyZXR1cm4gYn0oQmYpLHdoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGQsZSxmLGcsaCxrLGwsbSl7dmFyIGI9dGhpczt0aGlzLnN0ZGluUHJvbXB0PSIiO3RoaXMuY29tbWFuZE9wdGlvbnM9YTt0aGlzLndhc21Gcz1uZXcgZ2g7dGhpcy53YXNtRnMuZnJvbUpTT04oZCk7dGhpcy5vcmlnaW5hbFdhc21Gc0pzb249CmQ7dGhpcy5pb0RldmljZXM9bmV3IGhoKHRoaXMud2FzbUZzKTt0aGlzLmlvRGV2aWNlV2luZG93PWg7dGhpcy5pb0RldmljZXMuc2V0V2luZG93U2l6ZUNhbGxiYWNrKGZ1bmN0aW9uKCl7dmFyIGE9Yi5pb0RldmljZXMuZ2V0V2luZG93U2l6ZSgpO2IuaW9EZXZpY2VXaW5kb3cucmVzaXplKGFbMF0sYVsxXSl9KTt0aGlzLmlvRGV2aWNlcy5zZXRCdWZmZXJJbmRleERpc3BsYXlDYWxsYmFjayhmdW5jdGlvbigpe3ZhciBhPWIuaW9EZXZpY2VzLmdldEZyYW1lQnVmZmVyKCk7Yi5pb0RldmljZVdpbmRvdy5kcmF3UmdiYUFycmF5VG9GcmFtZUJ1ZmZlcihhKX0pO3RoaXMuaW9EZXZpY2VzLnNldElucHV0Q2FsbGJhY2soZnVuY3Rpb24oKXtpZihiLnNoYXJlZElvRGV2aWNlSW5wdXQpe2IuaW9EZXZpY2VXaW5kb3cuZ2V0SW5wdXRCdWZmZXIoKTtBdG9taWNzLndhaXQoYi5zaGFyZWRJb0RldmljZUlucHV0LDAsLTEpO3ZhciBhPWIuc2hhcmVkSW9EZXZpY2VJbnB1dFswXTtiLnNoYXJlZElvRGV2aWNlSW5wdXRbMF09Ci0xO2lmKDA8YSl7Zm9yKHZhciBkPW5ldyBVaW50OEFycmF5KGEpLGU9MDtlPGE7ZSsrKWRbZV09Yi5zaGFyZWRJb0RldmljZUlucHV0W2UrMV07cmV0dXJuIGR9cmV0dXJuIG5ldyBVaW50OEFycmF5fXJldHVybiBiLmlvRGV2aWNlV2luZG93LmdldElucHV0QnVmZmVyKCl9KTt0aGlzLmRhdGFDYWxsYmFjaz1lO3RoaXMuZW5kQ2FsbGJhY2s9Zjt0aGlzLmVycm9yQ2FsbGJhY2s9ZztkPXZvaWQgMDtrJiYoZD1uZXcgSW50MzJBcnJheShrKSk7dGhpcy5zaGFyZWRJb0RldmljZUlucHV0PWQ7az12b2lkIDA7bCYmKGs9bmV3IEludDMyQXJyYXkobCkpO3RoaXMuY29tbWFuZD1hLm1vZHVsZT9uZXcgdWgoYSk6bmV3IHZoKGEpO3RoaXMud2FzbUZzLnZvbHVtZS5mZHNbMF0ubm9kZS5yZWFkPXRoaXMuc3RkaW5SZWFkLmJpbmQodGhpcyk7dGhpcy53YXNtRnMudm9sdW1lLmZkc1sxXS5ub2RlLndyaXRlPXRoaXMuc3Rkb3V0V3JpdGUuYmluZCh0aGlzKTt0aGlzLndhc21Gcy52b2x1bWUuZmRzWzJdLm5vZGUud3JpdGU9CnRoaXMuc3Rkb3V0V3JpdGUuYmluZCh0aGlzKTthPXRoaXMud2FzbUZzLnZvbHVtZS5vcGVuU3luYygiL2Rldi90dHkiLCJ3KyIpO3RoaXMud2FzbUZzLnZvbHVtZS5mZHNbYV0ubm9kZS5yZWFkPXRoaXMuc3RkaW5SZWFkLmJpbmQodGhpcyk7dGhpcy53YXNtRnMudm9sdW1lLmZkc1thXS5ub2RlLndyaXRlPXRoaXMuc3Rkb3V0V3JpdGUuYmluZCh0aGlzKTt0aGlzLnNoYXJlZFN0ZGluPWs7dGhpcy5zdGFydFN0ZGluUmVhZENhbGxiYWNrPW07dGhpcy5yZWFkU3RkaW5Db3VudGVyPTA7dGhpcy5waXBlZFN0ZGluPSIifWEucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEpe3JldHVybiBFYih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYixlLGYsZz10aGlzO3JldHVybiBGYih0aGlzLGZ1bmN0aW9uKGQpe3N3aXRjaChkLmxhYmVsKXtjYXNlIDA6Yj1mdW5jdGlvbigpe2cuaW9EZXZpY2VXaW5kb3cucmVzaXplKDAsMCk7c2V0VGltZW91dChmdW5jdGlvbigpe2cuZW5kQ2FsbGJhY2soZy53YXNtRnMudG9KU09OKCkpfSwKNTApfSxkLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBkLnRyeXMucHVzaChbMSwzLCw0XSksYSYmKHRoaXMucGlwZWRTdGRpbj0obmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpKS5kZWNvZGUoYSkpLFs0LHRoaXMuY29tbWFuZC5ydW4odGhpcy53YXNtRnMpXTtjYXNlIDI6cmV0dXJuIGQuc2VudCgpLGIoKSxbMyw0XTtjYXNlIDM6ZT1kLnNlbnQoKTtpZihlIGluc3RhbmNlb2YgdmYpcmV0dXJuIGIoKSxbMl07Zj0iVW5rbm93biBFcnJvciI7aWYodm9pZCAwIT09ZS5jb2RlKWY9ImV4aXRlZCB3aXRoIGNvZGU6ICIrZS5jb2RlO2Vsc2UgaWYodm9pZCAwIT09ZS5zaWduYWwpZj0ia2lsbGVkIHdpdGggc2lnbmFsOiAiK2Uuc2lnbmFsO2Vsc2UgaWYodm9pZCAwIT09ZS51c2VyKXJldHVybiBiKCksWzJdO2NvbnNvbGUuZXJyb3IoZSk7dGhpcy5lcnJvckNhbGxiYWNrKGYsdGhpcy53YXNtRnMudG9KU09OKCksdm9pZCAwIT09ZS51c2VyKTtyZXR1cm5bMyw0XTtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9OwphLnByb3RvdHlwZS5zdGRvdXRXcml0ZT1mdW5jdGlvbihhLGQsZSxmKXt0aGlzLmRhdGFDYWxsYmFjayYmdGhpcy5kYXRhQ2FsbGJhY2soYSk7ZD0obmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpKS5kZWNvZGUoYSkuc3BsaXQoIlxuIik7dGhpcy5zdGRpblByb21wdD0wPGQubGVuZ3RoP2RbZC5sZW5ndGgtMV0ucmVwbGFjZSgvW1x1MDAxQlx1MDA5Ql1bW1xdKCkjOz9dKig/Oig/Oig/OlthLXpBLVpcZF0qKD86O1stYS16QS1aXGRcLyMmLjo9PyVAfl9dKikqKT9cdTAwMDcpfCg/Oig/OlxkezEsNH0oPzo7XGR7MCw0fSkqKT9bXGRBLVBSLVRaY2YtbnRxcnk9Pjx+XSkpL2csIiIpOiIiO3JldHVybiBhLmxlbmd0aH07YS5wcm90b3R5cGUuc3RkaW5SZWFkPWZ1bmN0aW9uKGEsZCxlLGYpe2lmKDAhPT10aGlzLnJlYWRTdGRpbkNvdW50ZXIlMilyZXR1cm4gdGhpcy5yZWFkU3RkaW5Db3VudGVyKyssMDtpZih0aGlzLnBpcGVkU3RkaW4pZD10aGlzLnBpcGVkU3RkaW4sdGhpcy5waXBlZFN0ZGluPQoiIix0aGlzLnJlYWRTdGRpbkNvdW50ZXIrKztlbHNlIGlmKHRoaXMuc2hhcmVkU3RkaW4mJnRoaXMuc3RhcnRTdGRpblJlYWRDYWxsYmFjayl7dGhpcy5zdGFydFN0ZGluUmVhZENhbGxiYWNrKCk7QXRvbWljcy53YWl0KHRoaXMuc2hhcmVkU3RkaW4sMCwtMSk7ZD10aGlzLnNoYXJlZFN0ZGluWzBdO3RoaXMuc2hhcmVkU3RkaW5bMF09LTE7ZT1uZXcgVWludDhBcnJheShkKTtmb3IoZj0wO2Y8ZDtmKyspZVtmXT10aGlzLnNoYXJlZFN0ZGluWzErZl07ZD0obmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpKS5kZWNvZGUoZSl9ZWxzZXtkPXByb21wdCgiUGxlYXNlIGVudGVyIHRleHQgZm9yIHN0ZGluOlxuIit0aGlzLnN0ZGluUHJvbXB0KTtpZihudWxsPT09ZCl0aHJvdyB0aGlzLmRhdGFDYWxsYmFjayYmdGhpcy5kYXRhQ2FsbGJhY2soKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKCJcbiIpKSxhPUVycm9yKCJQcm9jZXNzIGtpbGxlZCBieSB1c2VyIiksYS51c2VyPSEwLGE7ZCs9IlxuIjsKdGhpcy5kYXRhQ2FsbGJhY2smJnRoaXMuZGF0YUNhbGxiYWNrKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShkKSl9aWYoIWQpcmV0dXJuIDA7ZD0obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoZCk7Zm9yKGU9MDtlPGQubGVuZ3RoOysrZSlhW2VdPWRbZV07cmV0dXJuIGQubGVuZ3RofTtyZXR1cm4gYX0oKTttYyh3aCl9KSgpCg==";
|
|
return[4,this._getBlobUrlForProcessWorker(b,this.wasmTty)];case 1:return d=c.sent(),e=new Worker(d),g=yh(e,[],void 0),f=new SharedArrayBuffer(8192),h=this.wasmTerminalConfig.wasmFs.toJSON(),k=new SharedArrayBuffer(8192),r=new Uk(k),[4,new g(this.commandOptionsForProcessesToRun[a],h,Bh(this._processDataCallback.bind(this,{commandOptionIndex:a,sync:!1})),Bh(this._processEndCallback.bind(this,{commandOptionIndex:a,processWorker:e})),Bh(this._processErrorCallback.bind(this,{commandOptionIndex:a})),Bh(r),
|
|
k,f,Bh(this._processStartStdinReadCallback.bind(this)))];case 2:return q=c.sent(),t=new Int32Array(f),t[0]=-1,[2,{process:q,commandOptionIndex:a,ioDeviceWindow:r,worker:e,sharedStdin:t}]}})})};b.prototype._spawnProcessAsService=function(a){return rg(this,void 0,void 0,function(){var b,d,e;return sg(this,function(){b=this.wasmTerminalConfig.wasmFs.toJSON();d=new Uk;e=new Tk(this.commandOptionsForProcessesToRun[a],b,this._processDataCallback.bind(this,{commandOptionIndex:a,sync:!0}),this._processEndCallback.bind(this,
|
|
{commandOptionIndex:a}),this._processErrorCallback.bind(this,{commandOptionIndex:a}),d);return[2,{process:e,commandOptionIndex:a,ioDeviceWindow:d}]})})};b.prototype._processDataCallback=function(a,b){var c=a.commandOptionIndex;a=a.sync;this.isRunning&&(c<this.commandOptionsForProcessesToRun.length-1?this.supportsSharedArrayBuffer&&1<this.spawnedProcessObjects.length&&this.spawnedProcessObjects[this.spawnedProcessObjects.length-1].commandOptionIndex>c?this._addStdinToSharedStdin(b,1):(c=new Uint8Array(b.length+
|
|
this.pipedStdinDataForNextProcess.length),c.set(this.pipedStdinDataForNextProcess),c.set(b,this.pipedStdinDataForNextProcess.length),this.pipedStdinDataForNextProcess=c):(b=(new TextDecoder("utf-8")).decode(b),this.wasmTty&&this.wasmTty.print(b,a)))};b.prototype._processEndCallback=function(a,b){var c=a.commandOptionIndex;(a=a.processWorker)&&a.terminate();b&&this.wasmTerminalConfig.wasmFs.fromJSON(b);c<this.commandOptionsForProcessesToRun.length-1?this._tryToSpawnProcess(c+1):(this.isRunning=!1,
|
|
this.commandEndCallback());this.spawnedProcessObjects.shift()};b.prototype._processErrorCallback=function(a,b,d){console.error(this.commandOptionsForProcessesToRun[a.commandOptionIndex].args[0]+": "+b);d&&this.wasmTerminalConfig.wasmFs.fromJSON(d);this.kill();this.commandEndCallback()};b.prototype._processStartStdinReadCallback=function(){var a=this;this.commandStartReadCallback().then(function(b){b=(new TextEncoder).encode(b+"\n");a._addStdinToSharedStdin(b,0)})};b.prototype._getBlobUrlForProcessWorker=
|
|
function(a,b){return rg(this,void 0,void 0,function(){var c,e;return sg(this,function(d){switch(d.label){case 0:if(Wk)return[2,Wk];b&&b.printStatus("[INFO] Downloading the process Web Worker (This happens once)...");return[4,Promise.all([fetch(a).then(function(a){return a.text()}),new Promise(function(a){return setTimeout(a,500)})]).then(function(a){return a[0]})];case 1:return c=d.sent(),b&&b.clearStatus(),e=new Blob([c]),Wk=window.URL.createObjectURL(e),[2,Wk]}})})};b.prototype._getCommandOptionsFromAST=
|
|
function(a,b,d){return rg(this,void 0,void 0,function(){var c,g,f,h,k,r,q,t,v,l,n,y,B=this;return sg(this,function(e){switch(e.label){case 0:return c=[],g=a.command.value,f=a.args.map(function(a){return a.value}),h=ug([g],f),k=Object.entries(a.env).map(function(a){a=tg(a,2);return[a[0],a[1].value]}),r={},k.forEach(function(a){a=tg(a,2);r[a[0]]=a[1]}),d&&(q=d.getTermSize(),t=q.rows,v=q.cols,r.LINES=t,r.COLUMNS=v),l=function(){return rg(B,void 0,void 0,function(){var e,f;return sg(this,function(g){switch(g.label){case 0:return a.redirects?
|
|
(e=a.redirects[0])&&"pipe"===e.type?[4,this._getCommandOptionsFromAST(e.command,b,d)]:[3,2]:[3,2];case 1:f=g.sent(),c=c.concat(f),g.label=2;case 2:return[2]}})})},[4,l()];case 1:return e.sent(),d&&d.printStatus("[INFO] Fetching the command "+g+" ..."),[4,b.fetchCommand({args:h,env:r})];case 2:return n=e.sent(),d&&d.clearStatus(),n instanceof Uint8Array?[4,WebAssembly.compile(n)]:[3,4];case 3:return y=e.sent(),c.unshift({args:h,env:r,module:y}),[3,5];case 4:Vk(n)?c.unshift({args:h,env:r,callback:n}):
|
|
c.unshift(n),e.label=5;case 5:return[2,c]}})})};return b}(),Yk=function(){function b(a,b,d){var c=this;void 0===d&&(d={historySize:10,maxAutocompleteEntries:100});this.handleCursorMove=function(a){0<a?(a=Math.min(a,c.wasmTty.getInput().length-c.wasmTty.getCursor()),c.wasmTty.setCursorDirectly(c.wasmTty.getCursor()+a)):0>a&&(a=Math.max(a,-c.wasmTty.getCursor()),c.wasmTty.setCursorDirectly(c.wasmTty.getCursor()+a))};this.handleCursorErase=function(a){a?0>=c.wasmTty.getCursor()||(a=c.wasmTty.getInput().substr(0,
|
|
c.wasmTty.getCursor()-1)+c.wasmTty.getInput().substr(c.wasmTty.getCursor()),c.wasmTty.clearInput(),c.wasmTty.setCursorDirectly(c.wasmTty.getCursor()-1),c.wasmTty.setInput(a,!0)):(a=c.wasmTty.getInput().substr(0,c.wasmTty.getCursor())+c.wasmTty.getInput().substr(c.wasmTty.getCursor()+1),c.wasmTty.setInput(a))};this.handleCursorInsert=function(a){var b=c.wasmTty.getInput().substr(0,c.wasmTty.getCursor())+a+c.wasmTty.getInput().substr(c.wasmTty.getCursor());c.wasmTty.setCursorDirectly(c.wasmTty.getCursor()+
|
|
a.length);c.wasmTty.setInput(b)};this.handleReadComplete=function(){c._activePrompt&&c._activePrompt.resolve&&(c._activePrompt.resolve(c.wasmTty.getInput()),c._activePrompt=void 0);c.wasmTty.print("\r\n");c._active=!1};this.handleTermData=function(a){if(c._active||"\u0003"===a){if(c.wasmTty.getFirstInit()&&c._activePrompt){var b=c.wasmTty.getBuffer().getLine(c.wasmTty.getBuffer().cursorY+c.wasmTty.getBuffer().baseY).translateToString(!1,0,c.wasmTty.getBuffer().cursorX);c._activePrompt.promptPrefix=
|
|
b;c.wasmTty.setPromptPrefix(b);c.wasmTty.setFirstInit(!1)}c._activeCharPrompt&&c._activeCharPrompt.resolve?(c._activeCharPrompt.resolve(a),c._activeCharPrompt=void 0,c.wasmTty.print("\r\n")):3<a.length&&27!==a.charCodeAt(0)?(a=a.replace(/[\r\n]+/g,"\r"),Array.from(a).forEach(function(a){return c.handleData(a)})):c.handleData(a)}};this.handleData=function(a){if(c._active||"\u0003"===a){var b=a.charCodeAt(0);if(27===b)switch(a.substr(1)){case "[A":c.history&&(a=c.history.getPrevious())&&(c.wasmTty.setInput(a),
|
|
c.wasmTty.setCursor(a.length));break;case "[B":c.history&&((a=c.history.getNext())||(a=""),c.wasmTty.setInput(a),c.wasmTty.setCursor(a.length));break;case "[D":c.handleCursorMove(-1);break;case "[C":c.handleCursorMove(1);break;case "[3~":c.handleCursorErase(!1);break;case "[F":c.wasmTty.setCursor(c.wasmTty.getInput().length);break;case "[H":c.wasmTty.setCursor(0);break;case "b":(a=Hg(c.wasmTty.getInput(),c.wasmTty.getCursor()))&&c.wasmTty.setCursor(a);break;case "f":(a=Ig(c.wasmTty.getInput(),c.wasmTty.getCursor()))&&
|
|
c.wasmTty.setCursor(a);break;case "\u007f":if(a=Hg(c.wasmTty.getInput(),c.wasmTty.getCursor()))c.wasmTty.setInput(c.wasmTty.getInput().substr(0,a)+c.wasmTty.getInput().substr(c.wasmTty.getCursor())),c.wasmTty.setCursor(a)}else if(32>b||127===b)switch(a){case "\r":case "\n":case "\r":Jg(c.wasmTty.getInput())?c.handleCursorInsert("\n"):c.handleReadComplete();break;case "\u007f":case "\b":case "\u0004":c.handleCursorErase(!0);break;case "\t":if(0<c._autocompleteHandlers.length){a=c.wasmTty.getInput().substr(0,
|
|
c.wasmTty.getCursor());b=Kg(a);var d=Mg(c._autocompleteHandlers,a);d.sort();0===d.length?b||c.handleCursorInsert(" "):1===d.length?(a=Lg(a),c.handleCursorInsert(d[0].substr(a.length)+" ")):d.length<=c.maxAutocompleteEntries?c.printAndRestartPrompt(function(){c.wasmTty.printWide(d)}):c.printAndRestartPrompt(function(){return c.wasmTty.readChar("Display all "+d.length+" possibilities? (y or n)").promise.then(function(a){"y"!==a&&"Y"!==a||c.wasmTty.printWide(d)})})}else c.handleCursorInsert(" ");
|
|
break;case "\u0001":c.wasmTty.setCursor(0);break;case "\u0002":c.handleCursorMove(-1);break;case "\u0003":case "\u001a":a=c.wasmTty.getInput();c.wasmTty.setCursor(a.length);c.wasmTty.setInput("");c.wasmTty.setCursorDirectly(0);c.wasmTty.print(a+"^C\r\n");c.history&&c.history.rewind();c.commandRunner&&(c.commandRunner.kill(),c.commandRunner=void 0);c.resolveActiveRead();break;case "\u0005":c.wasmTty.setCursor(c.wasmTty.getInput().length);break;case "\u0006":c.handleCursorMove(1);break;case "\u0007":c.history&&
|
|
c.history.rewind();c.wasmTty.setInput("");break;case "\x0B":c.wasmTty.setInput(c.wasmTty.getInput().substring(0,c.wasmTty.getCursor()));c.wasmTty.setCursor(c.wasmTty.getInput().length);break;case "\f":c.wasmTty.clearTty();c.wasmTty.print("$ "+c.wasmTty.getInput());break;case "\u000e":c.history&&((a=c.history.getNext())||(a=""),c.wasmTty.setInput(a),c.wasmTty.setCursor(a.length));break;case "\u0010":c.history&&(a=c.history.getPrevious())&&(c.wasmTty.setInput(a),c.wasmTty.setCursor(a.length));break;
|
|
case "\u0015":c.wasmTty.setInput(c.wasmTty.getInput().substring(c.wasmTty.getCursor())),c.wasmTty.setCursor(0)}else c.handleCursorInsert(a)}};this.wasmTerminalConfig=a;this.wasmTty=b;this.history=new Ng(d.historySize);this.commandRunner=void 0;this.maxAutocompleteEntries=d.maxAutocompleteEntries;this._autocompleteHandlers=[function(){return c.history.entries}];this._active=!1}b.prototype.prompt=function(){return rg(this,void 0,void 0,function(){var a,b;return sg(this,function(c){switch(c.label){case 0:if(this._activePrompt)return[2];
|
|
c.label=1;case 1:return c.trys.push([1,4,,5]),this._activePrompt=this.wasmTty.read("$ "),this._active=!0,[4,this._activePrompt.promise];case 2:a=c.sent();this.commandRunner&&this.commandRunner.kill();if(""===a)return this.prompt(),[2];if("!!"===a)if(this.history&&0<this.history.entries.length)a=this.history.entries[this.history.entries.length-1];else throw Error("No Previous command in History");else this.history&&this.history.push(this.wasmTty.getInput());this.commandRunner=this.getCommandRunner(a);
|
|
return[4,this.commandRunner.runCommand()];case 3:return c.sent(),[3,5];case 4:return b=c.sent(),this.wasmTty.println(""+b.toString()),this.prompt(),[3,5];case 5:return[2]}})})};b.prototype.isPrompting=function(){return this._active};b.prototype.getCommandRunner=function(a){var b=this;return new Xk(this.wasmTerminalConfig,a,function(){return rg(b,void 0,void 0,function(){return sg(this,function(){this._activePrompt=this.wasmTty.read("");this._active=!0;return[2,this._activePrompt.promise]})})},function(){setTimeout(function(){b.prompt()})},
|
|
this.wasmTty)};b.prototype.printAndRestartPrompt=function(a){function b(){d.wasmTty.setCursor(d.wasmTty.getCursor());d.wasmTty.setInput(d.wasmTty.getInput())}var d=this;this.wasmTty.getCursor();this.wasmTty.setCursor(this.wasmTty.getInput().length);this.wasmTty.print("\r\n");(a=a())?a.then(b):b()};b.prototype.resolveActiveRead=function(){this._activePrompt&&this._activePrompt.resolve&&(this._activePrompt.resolve(""),this._activePrompt=void 0);this._activeCharPrompt&&this._activeCharPrompt.resolve&&
|
|
(this._activeCharPrompt.resolve(""),this._activeCharPrompt=void 0);this._active=!1};b.prototype.rejectActiveRead=function(a){void 0===a&&(a="aborted");(this._activePrompt||this._activeCharPrompt)&&this.wasmTty.print("\r\n");this._activePrompt&&this._activePrompt.reject&&(this._activePrompt.reject(Error(a)),this._activePrompt=void 0);this._activeCharPrompt&&this._activeCharPrompt.reject&&(this._activeCharPrompt.reject(Error(a)),this._activeCharPrompt=void 0);this._active=!1};return b}(),Zk=fa||ea.Terminal,
|
|
$k=["click","tap"],al=function(){function b(a){var b=this;this.handleTermResize=function(a){var c=a.rows;a=a.cols;b.wasmTty.clearInput();b.wasmTty.setTermSize(a,c);b.wasmTty.setInput(b.wasmTty.getInput(),!0)};this.wasmTerminalConfig=new ng(a);this.xterm=new Zk({});this.resizeEvent=this.xterm.onResize(this.handleTermResize);this.xterm.onKey(function(a){if(" "===a.key)return a.domEvent.preventDefault(),!1});this.container=void 0;this.webLinksAddon=new oa;this.fitAddon=new la;this.xterm.loadAddon(this.fitAddon);
|
|
this.xterm.loadAddon(this.webLinksAddon);this.wasmTerminalConfig=new ng(a);this.wasmTty=new wg(this.xterm);this.wasmShell=new Yk(this.wasmTerminalConfig,this.wasmTty);this.dataEvent=this.xterm.onData(this.wasmShell.handleTermData);this.isOpen=!1;this.pendingPrintOnOpen=""}b.prototype.open=function(a){var b=this,d=this.focus.bind(this);void 0!==this.container&&$k.forEach(function(a){b.container.removeEventListener(a,d)});this.container=a;this.xterm.open(a);this.isOpen=!0;setTimeout(function(){void 0!==
|
|
b.container&&$k.forEach(function(a){b.container.addEventListener(a,d)});b.pendingPrintOnOpen&&(b.wasmTty.print(b.pendingPrintOnOpen+"\n"),b.pendingPrintOnOpen="");b.wasmShell.prompt()})};b.prototype.fit=function(){this.fitAddon.fit()};b.prototype.focus=function(){this.xterm.focus();this.scrollToCursor()};b.prototype.scrollToCursor=function(){if(this.container){var a=this.wasmTty.getBuffer().cursorY,b=this.wasmTty.getSize(),d=this.container.getBoundingClientRect(),e=d.left;a=d.top+a/b.rows*d.height+
|
|
10;0>e&&(e=0);a>document.body.scrollHeight&&(a=document.body.scrollHeight);window.scrollTo(e,a)}};b.prototype.print=function(a,b){var c=this;a=a.replace(/\n\n/g,"\n \n");this.isOpen?this.wasmShell.isPrompting?this.wasmShell.printAndRestartPrompt(function(){c.wasmTty.print(a+"\n",b)}):this.wasmTty.print(a,b):this.pendingPrintOnOpen=this.pendingPrintOnOpen?this.pendingPrintOnOpen+a:a};b.prototype.runCommand=function(a){this.wasmShell.isPrompting()&&(this.wasmTty.setInput(a),this.wasmShell.handleReadComplete())};
|
|
b.prototype.destroy=function(){this.xterm.dispose();delete this.xterm};b.prototype.onPaste=function(a){this.wasmTty.print(a)};return b}();
|
|
function bl(b){return rg(void 0,void 0,void 0,function(){var a,c,d,e;return sg(this,function(g){switch(g.label){case 0:return[4,fetch("https://registry.wapm.io/graphql",{method:"POST",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({operationName:"shellGetCommandQuery",query:"query shellGetCommandQuery($command: String!) {\n command: getCommand(name: $command) {\n command\n module {\n abi\n publicUrl\n }\n packageVersion {\n package {\n displayName\n }\n }\n }\n}",variables:{command:b}})})];
|
|
case 1:return a=g.sent(),[4,a.json()];case 2:c=g.sent();d=function(a,b){a=a[b[0]];b.shift();return a?1<b.length?d(a,b):!0:!1};if(d(c,["data","command","module","publicUrl"])){e=c.data.command.module;if("wasi"!==e.abi)throw Error(b+" does not use the wasi abi. Currently, only the wasi abi is supported on the wapm shell.");return[2,e.publicUrl]}throw Error("command not found "+b);}})})}
|
|
function cl(b){return rg(void 0,void 0,void 0,function(){var a,c;return sg(this,function(d){switch(d.label){case 0:return[4,fetch(b)];case 1:return a=d.sent(),[4,a.arrayBuffer()];case 2:return c=d.sent(),[2,new Uint8Array(c)]}})})}export default al;function fetchCommandFromWAPM$1(b){var a=b.args;return rg(void 0,void 0,void 0,function(){var b,d;return sg(this,function(c){switch(c.label){case 0:return b=a[0],[4,bl(b)];case 1:return d=c.sent(),[4,cl(d)];case 2:return[2,c.sent()]}})})};export{fetchCommandFromWAPM$1 as fetchCommandFromWAPM}
|