9remote 2.5.3 → 2.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +80 -80
- package/dist/server.cjs +3 -3
- package/dist/ui/assets/index-MX08IV5-.js +58 -0
- package/dist/ui/index.html +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/index-Hks7z_wE.js +0 -58
package/dist/cli.cjs
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
const __importMetaUrl = require('url').pathToFileURL(__filename).href;
|
|
3
|
-
var
|
|
4
|
-
`)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return T.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return T.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return T.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(T){var g=c((0,d.execSync)(A[R]).toString());return T?g:a(g)}function u(T){return new p.default(function(g,x){return(0,d.exec)(A[R],{},function(S,P,$){if(S)return x(new Error("Error while obtaining machine id: "+S.stack));var F=c(P.toString());return g(T?F:a(F))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=t(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=t(70),h=t(71),w=process,R=w.platform,O={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},A={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:O[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(r,o,t){r.exports={default:t(36),__esModule:!0}},function(r,o,t){t(66),t(68),t(69),t(67),r.exports=t(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(r,o,t){var i=t(13),s=t(31),a=t(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),w=a(f,h);if(c&&u!=u){for(;h>w;)if(p=d[w++],p!=p)return!0}else for(;h>w;w++)if((c||w in d)&&d[w]===u)return c||w||0;return!c&&-1}}},function(r,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=r.exports=function(h,w,R,O,A){var T,g,x,S,P=A?function(){return h}:u(h),$=i(R,O,w?2:1),F=0;if(typeof P!="function")throw TypeError(h+" is not iterable!");if(a(P)){for(T=l(h.length);T>F;F++)if(S=w?$(c(g=h[F])[0],g[1]):$(h[F]),S===f||S===p)return S}else for(x=P.call(h);!(g=x.next()).done;)if(S=s(x,$,g.value,w),S===f||S===p)return S};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(r,o,t){var i=t(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,t){var i=t(3);r.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(r,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}r.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(r,o){r.exports=function(t,i){return{value:i,done:!!t}}},function(r,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=t(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var A,T;for(u&&(A=c.domain)&&A.exit();f;){T=f.fn,f=f.next;try{T()}catch(g){throw f?d():p=void 0,g}}p=void 0,A&&A.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var w=!0,R=document.createTextNode("");new a(h).observe(R,{characterData:!0}),d=function(){R.data=w=!w}}else if(l&&l.resolve){var O=l.resolve();d=function(){O.then(h)}}else d=function(){s.call(i,h)};return function(A){var T={fn:A,next:void 0};p&&(p.next=T),f||(f=T,d()),p=T}}},function(r,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=t(16)("iframe"),h=a.length,w=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+w),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};r.exports=Object.create||function(p,d){var h;return p!==null?(l[u]=i(p),h=new l,l[u]=null,h[c]=p):h=f(),d===void 0?h:s(h,d)}},function(r,o,t){var i=t(12),s=t(3),a=t(54);r.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(r,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),u=t(26),f=Object.getOwnPropertyDescriptor;o.f=t(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(r,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;r.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(r,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");r.exports=function(l,u){var f,p=s(l),d=0,h=[];for(f in p)f!=c&&i(p,f)&&h.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(h,f)||h.push(f));return h}},function(r,o,t){var i=t(53),s=t(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,t){var i=t(5);r.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(r,o,t){r.exports=t(5)},function(r,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};r.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(r,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");r.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(r,o,t){var i=t(3),s=t(14),a=t(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,t){var i=t(20),s=t(15);r.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),h=p.length;return d<0||d>=h?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===h||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(r,o,t){var i=t(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,t){var i=t(15);r.exports=function(s){return Object(i(s))}},function(r,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);r.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);r.exports=t(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(r,o){},function(r,o,t){"use strict";var i,s,a,c=t(28),l=t(2),u=t(7),f=t(21),p=t(23),d=t(9),h=(t(3),t(14)),w=t(38),R=t(40),O=(t(58).set,t(60)),A=t(30).set,T=t(48)(),g="Promise",x=l.TypeError,P=l.process,S=l[g],P=l.process,$=f(P)=="process",F=function(){},q=!!(function(){try{var y=S.resolve(1),v=(y.constructor={})[t(1)("species")]=function(b){b(F,F)};return($||typeof PromiseRejectionEvent=="function")&&y.then(F)instanceof v}catch{}})(),de=function(y,v){return y===v||y===S&&v===a},me=function(y){var v;return!(!d(y)||typeof(v=y.then)!="function")&&v},ee=function(y){return de(S,y)?new Ie(y):new s(y)},Ie=s=function(y){var v,b;this.promise=new y(function(N,Q){if(v!==void 0||b!==void 0)throw x("Bad Promise constructor");v=N,b=Q}),this.resolve=h(v),this.reject=h(b)},vt=function(y){try{y()}catch(v){return{error:v}}},st=function(y,v){if(!y._n){y._n=!0;var b=y._c;T(function(){for(var N=y._v,Q=y._s==1,at=0,Et=function(Ke){var Ee,Mn,en=Q?Ke.ok:Ke.fail,tn=Ke.resolve,St=Ke.reject,Dn=Ke.domain;try{en?(Q||(y._h==2&&je(y),y._h=1),en===!0?Ee=N:(Dn&&Dn.enter(),Ee=en(N),Dn&&Dn.exit()),Ee===Ke.promise?St(x("Promise-chain cycle")):(Mn=me(Ee))?Mn.call(Ee,tn,St):tn(Ee)):St(N)}catch(Zs){St(Zs)}};b.length>at;)Et(b[at++]);y._c=[],y._n=!1,v&&!y._h&&Zt(y)})}},Zt=function(y){A.call(l,function(){var v,b,N,Q=y._v;if(te(y)&&(v=vt(function(){$?P.emit("unhandledRejection",Q,y):(b=l.onunhandledrejection)?b({promise:y,reason:Q}):(N=l.console)&&N.error&&N.error("Unhandled promise rejection",Q)}),y._h=$||te(y)?2:1),y._a=void 0,v)throw v.error})},te=function(y){if(y._h==1)return!1;for(var v,b=y._a||y._c,N=0;b.length>N;)if(v=b[N++],v.fail||!te(v.promise))return!1;return!0},je=function(y){A.call(l,function(){var v;$?P.emit("rejectionHandled",y):(v=l.onrejectionhandled)&&v({promise:y,reason:y._v})})},se=function(y){var v=this;v._d||(v._d=!0,v=v._w||v,v._v=y,v._s=2,v._a||(v._a=v._c.slice()),st(v,!0))},zt=function(y){var v,b=this;if(!b._d){b._d=!0,b=b._w||b;try{if(b===y)throw x("Promise can't be resolved itself");(v=me(y))?T(function(){var N={_w:b,_d:!1};try{v.call(y,u(zt,N,1),u(se,N,1))}catch(Q){se.call(N,Q)}}):(b._v=y,b._s=1,st(b,!1))}catch(N){se.call({_w:b,_d:!1},N)}}};q||(S=function(y){w(this,S,g,"_h"),h(y),i.call(this);try{y(u(zt,this,1),u(se,this,1))}catch(v){se.call(this,v)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(S.prototype,{then:function(y,v){var b=ee(O(this,S));return b.ok=typeof y!="function"||y,b.fail=typeof v=="function"&&v,b.domain=$?P.domain:void 0,this._c.push(b),this._a&&this._a.push(b),this._s&&st(this,!1),b.promise},catch:function(y){return this.then(void 0,y)}}),Ie=function(){var y=new i;this.promise=y,this.resolve=u(zt,y,1),this.reject=u(se,y,1)}),p(p.G+p.W+p.F*!q,{Promise:S}),t(18)(S,g),t(59)(g),a=t(6)[g],p(p.S+p.F*!q,g,{reject:function(y){var v=ee(this),b=v.reject;return b(y),v.promise}}),p(p.S+p.F*(c||!q),g,{resolve:function(y){if(y instanceof S&&de(y.constructor,this))return y;var v=ee(this),b=v.resolve;return b(y),v.promise}}),p(p.S+p.F*!(q&&t(46)(function(y){S.all(y).catch(F)})),g,{all:function(y){var v=this,b=ee(v),N=b.resolve,Q=b.reject,at=vt(function(){var Et=[],Ke=0,Ee=1;R(y,!1,function(Mn){var en=Ke++,tn=!1;Et.push(void 0),Ee++,v.resolve(Mn).then(function(St){tn||(tn=!0,Et[en]=St,--Ee||N(Et))},Q)}),--Ee||N(Et)});return at&&Q(at.error),b.promise},race:function(y){var v=this,b=ee(v),N=b.reject,Q=vt(function(){R(y,!1,function(at){v.resolve(at).then(b.resolve,N)})});return Q&&N(Q.error),b.promise}})},function(r,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(r,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var ss={};ia(ss,{initTray:()=>no,killTray:()=>Pn,openBrowser:()=>On,showTrayNotification:()=>ro,updateTrayTooltip:()=>dr});function Zi(e){for(let n of e)try{if(Gt.default.existsSync(n))return n}catch{}return null}function Pc(){if(process.platform==="win32"){for(let e of rs)try{if(Gt.default.existsSync(e))return Gt.default.readFileSync(e).toString("base64")}catch{}return Xi}return Xi}function Oc(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function os(){let{port:e,tunnelUrl:n,running:r}=Wt,o=r?n?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
|
|
3
|
+
var oa=Object.create;var br=Object.defineProperty;var ia=Object.getOwnPropertyDescriptor;var sa=Object.getOwnPropertyNames;var aa=Object.getPrototypeOf,ca=Object.prototype.hasOwnProperty;var la=(e,n)=>()=>(e&&(n=e(e=0)),n);var le=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),ua=(e,n)=>{for(var r in n)br(e,r,{get:n[r],enumerable:!0})},fa=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of sa(n))!ca.call(e,t)&&t!==r&&br(e,t,{get:()=>n[t],enumerable:!(o=ia(n,t))||o.enumerable});return e};var k=(e,n,r)=>(r=e!=null?oa(aa(e)):{},fa(n||!e||!e.__esModule?br(r,"default",{value:e,enumerable:!0}):r,e));var Oo=le((ln,kr)=>{(function(e,n){typeof ln=="object"&&typeof kr=="object"?kr.exports=n(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],n):typeof ln=="object"?ln["electron-machine-id"]=n(require("child_process"),require("crypto")):e["electron-machine-id"]=n(e.child_process,e.crypto)})(ln,function(e,n){return(function(r){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=r,o.c=t,o.p="",o(0)})([function(r,o,t){r.exports=t(34)},function(r,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=r.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(r,o){var t=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(r,o,t){var i=t(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,t){r.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,t){var i=t(12),s=t(17);r.exports=t(4)?function(a,c,l){return i.f(a,c,s(1,l))}:function(a,c,l){return a[c]=l,a}},function(r,o){var t=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(r,o,t){var i=t(14);r.exports=function(s,a,c){if(i(s),a===void 0)return s;switch(c){case 1:return function(l){return s.call(a,l)};case 2:return function(l,u){return s.call(a,l,u)};case 3:return function(l,u,f){return s.call(a,l,u,f)}}return function(){return s.apply(a,arguments)}}},function(r,o){var t={}.hasOwnProperty;r.exports=function(i,s){return t.call(i,s)}},function(r,o){r.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(r,o){r.exports={}},function(r,o){var t={}.toString;r.exports=function(i){return t.call(i).slice(8,-1)}},function(r,o,t){var i=t(3),s=t(26),a=t(32),c=Object.defineProperty;o.f=t(4)?Object.defineProperty:function(l,u,f){if(i(l),u=a(u,!0),i(f),s)try{return c(l,u,f)}catch{}if("get"in f||"set"in f)throw TypeError("Accessors not supported!");return"value"in f&&(l[u]=f.value),l}},function(r,o,t){var i=t(42),s=t(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(r,o){r.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(r,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(r,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");r.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(r,o,t){var i=t(29)("keys"),s=t(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var t=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(r,o,t){var i=t(11),s=t(1)("toStringTag"),a=i((function(){return arguments})())=="Arguments",c=function(l,u){try{return l[u]}catch{}};r.exports=function(l){var u,f,p;return l===void 0?"Undefined":l===null?"Null":typeof(f=c(u=Object(l),s))=="string"?f:a?i(u):(p=i(u))=="Object"&&typeof u.callee=="function"?"Arguments":p}},function(r,o){r.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(r,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",u=function(f,p,d){var h,w,R,O=f&u.F,A=f&u.G,T=f&u.S,g=f&u.P,b=f&u.B,S=f&u.W,P=A?s:s[p]||(s[p]={}),$=P[l],F=A?i:T?i[p]:(i[p]||{})[l];A&&(d=p);for(h in d)w=!O&&F&&F[h]!==void 0,w&&h in P||(R=w?F[h]:d[h],P[h]=A&&typeof F[h]!="function"?d[h]:b&&w?a(R,i):S&&F[h]==R?(function(Q){var me=function(he,ee,$e){if(this instanceof Q){switch(arguments.length){case 0:return new Q;case 1:return new Q(he);case 2:return new Q(he,ee)}return new Q(he,ee,$e)}return Q.apply(this,arguments)};return me[l]=Q[l],me})(R):g&&typeof R=="function"?a(Function.call,R):R,g&&((P.virtual||(P.virtual={}))[h]=R,f&u.R&&$&&!$[h]&&c($,h,R)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,r.exports=u},function(r,o){r.exports=function(t){try{return!!t()}catch{return!0}}},function(r,o,t){r.exports=t(2).document&&document.documentElement},function(r,o,t){r.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,o,t){"use strict";var i=t(28),s=t(23),a=t(57),c=t(5),l=t(8),u=t(10),f=t(45),p=t(18),d=t(52),h=t(1)("iterator"),w=!([].keys&&"next"in[].keys()),R="@@iterator",O="keys",A="values",T=function(){return this};r.exports=function(g,b,S,P,$,F,Q){f(S,b,P);var me,he,ee,$e=function(v){if(!w&&v in te)return te[v];switch(v){case O:return function(){return new S(this,v)};case A:return function(){return new S(this,v)}}return function(){return new S(this,v)}},Tt=b+" Iterator",ct=$==A,nn=!1,te=g.prototype,We=te[h]||te[R]||$&&te[$],se=We||$e($),rn=$?ct?$e("entries"):se:void 0,y=b=="Array"&&te.entries||We;if(y&&(ee=d(y.call(new g)),ee!==Object.prototype&&(p(ee,Tt,!0),i||l(ee,h)||c(ee,h,T))),ct&&We&&We.name!==A&&(nn=!0,se=function(){return We.call(this)}),i&&!Q||!w&&!nn&&te[h]||c(te,h,se),u[b]=se,u[Tt]=T,$)if(me={values:ct?se:$e(A),keys:F?se:$e(O),entries:rn},Q)for(he in me)he in te||a(te,he,me[he]);else s(s.P+s.F*(w||nn),b,me);return me}},function(r,o){r.exports=!0},function(r,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,o,t){var i,s,a,c=t(7),l=t(41),u=t(25),f=t(16),p=t(2),d=p.process,h=p.setImmediate,w=p.clearImmediate,R=p.MessageChannel,O=0,A={},T="onreadystatechange",g=function(){var S=+this;if(A.hasOwnProperty(S)){var P=A[S];delete A[S],P()}},b=function(S){g.call(S.data)};h&&w||(h=function(S){for(var P=[],$=1;arguments.length>$;)P.push(arguments[$++]);return A[++O]=function(){l(typeof S=="function"?S:Function(S),P)},i(O),O},w=function(S){delete A[S]},t(11)(d)=="process"?i=function(S){d.nextTick(c(g,S,1))}:R?(s=new R,a=s.port2,s.port1.onmessage=b,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(S){p.postMessage(S+"","*")},p.addEventListener("message",b,!1)):i=T in f("script")?function(S){u.appendChild(f("script"))[T]=function(){u.removeChild(this),g.call(S)}}:function(S){setTimeout(c(g,S,1),0)}),r.exports={set:h,clear:w}},function(r,o,t){var i=t(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,t){var i=t(9);r.exports=function(s,a){if(!i(s))return s;var c,l;if(a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s))||typeof(c=s.valueOf)=="function"&&!i(l=c.call(s))||!a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s)))return l;throw TypeError("Can't convert object to primitive value")}},function(r,o){var t=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(r,o,t){"use strict";function i(T){return T&&T.__esModule?T:{default:T}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(T){return(0,h.createHash)("sha256").update(T).digest("hex")}function c(T){switch(R){case"darwin":return T.split("IOPlatformUUID")[1].split(`
|
|
4
|
+
`)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return T.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return T.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return T.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(T){var g=c((0,d.execSync)(A[R]).toString());return T?g:a(g)}function u(T){return new p.default(function(g,b){return(0,d.exec)(A[R],{},function(S,P,$){if(S)return b(new Error("Error while obtaining machine id: "+S.stack));var F=c(P.toString());return g(T?F:a(F))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=t(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=t(70),h=t(71),w=process,R=w.platform,O={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},A={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:O[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(r,o,t){r.exports={default:t(36),__esModule:!0}},function(r,o,t){t(66),t(68),t(69),t(67),r.exports=t(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(r,o,t){var i=t(13),s=t(31),a=t(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),w=a(f,h);if(c&&u!=u){for(;h>w;)if(p=d[w++],p!=p)return!0}else for(;h>w;w++)if((c||w in d)&&d[w]===u)return c||w||0;return!c&&-1}}},function(r,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=r.exports=function(h,w,R,O,A){var T,g,b,S,P=A?function(){return h}:u(h),$=i(R,O,w?2:1),F=0;if(typeof P!="function")throw TypeError(h+" is not iterable!");if(a(P)){for(T=l(h.length);T>F;F++)if(S=w?$(c(g=h[F])[0],g[1]):$(h[F]),S===f||S===p)return S}else for(b=P.call(h);!(g=b.next()).done;)if(S=s(b,$,g.value,w),S===f||S===p)return S};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(r,o,t){var i=t(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,t){var i=t(3);r.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(r,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}r.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(r,o){r.exports=function(t,i){return{value:i,done:!!t}}},function(r,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=t(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var A,T;for(u&&(A=c.domain)&&A.exit();f;){T=f.fn,f=f.next;try{T()}catch(g){throw f?d():p=void 0,g}}p=void 0,A&&A.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var w=!0,R=document.createTextNode("");new a(h).observe(R,{characterData:!0}),d=function(){R.data=w=!w}}else if(l&&l.resolve){var O=l.resolve();d=function(){O.then(h)}}else d=function(){s.call(i,h)};return function(A){var T={fn:A,next:void 0};p&&(p.next=T),f||(f=T,d()),p=T}}},function(r,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=t(16)("iframe"),h=a.length,w=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+w),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};r.exports=Object.create||function(p,d){var h;return p!==null?(l[u]=i(p),h=new l,l[u]=null,h[c]=p):h=f(),d===void 0?h:s(h,d)}},function(r,o,t){var i=t(12),s=t(3),a=t(54);r.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(r,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),u=t(26),f=Object.getOwnPropertyDescriptor;o.f=t(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(r,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;r.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(r,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");r.exports=function(l,u){var f,p=s(l),d=0,h=[];for(f in p)f!=c&&i(p,f)&&h.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(h,f)||h.push(f));return h}},function(r,o,t){var i=t(53),s=t(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,t){var i=t(5);r.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(r,o,t){r.exports=t(5)},function(r,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};r.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(r,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");r.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(r,o,t){var i=t(3),s=t(14),a=t(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,t){var i=t(20),s=t(15);r.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),h=p.length;return d<0||d>=h?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===h||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(r,o,t){var i=t(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,t){var i=t(15);r.exports=function(s){return Object(i(s))}},function(r,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);r.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);r.exports=t(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(r,o){},function(r,o,t){"use strict";var i,s,a,c=t(28),l=t(2),u=t(7),f=t(21),p=t(23),d=t(9),h=(t(3),t(14)),w=t(38),R=t(40),O=(t(58).set,t(60)),A=t(30).set,T=t(48)(),g="Promise",b=l.TypeError,P=l.process,S=l[g],P=l.process,$=f(P)=="process",F=function(){},Q=!!(function(){try{var y=S.resolve(1),v=(y.constructor={})[t(1)("species")]=function(x){x(F,F)};return($||typeof PromiseRejectionEvent=="function")&&y.then(F)instanceof v}catch{}})(),me=function(y,v){return y===v||y===S&&v===a},he=function(y){var v;return!(!d(y)||typeof(v=y.then)!="function")&&v},ee=function(y){return me(S,y)?new $e(y):new s(y)},$e=s=function(y){var v,x;this.promise=new y(function(N,J){if(v!==void 0||x!==void 0)throw b("Bad Promise constructor");v=N,x=J}),this.resolve=h(v),this.reject=h(x)},Tt=function(y){try{y()}catch(v){return{error:v}}},ct=function(y,v){if(!y._n){y._n=!0;var x=y._c;T(function(){for(var N=y._v,J=y._s==1,lt=0,Rt=function(Ve){var Se,Fn,on=J?Ve.ok:Ve.fail,sn=Ve.resolve,bt=Ve.reject,Bn=Ve.domain;try{on?(J||(y._h==2&&We(y),y._h=1),on===!0?Se=N:(Bn&&Bn.enter(),Se=on(N),Bn&&Bn.exit()),Se===Ve.promise?bt(b("Promise-chain cycle")):(Fn=he(Se))?Fn.call(Se,sn,bt):sn(Se)):bt(N)}catch(ra){bt(ra)}};x.length>lt;)Rt(x[lt++]);y._c=[],y._n=!1,v&&!y._h&&nn(y)})}},nn=function(y){A.call(l,function(){var v,x,N,J=y._v;if(te(y)&&(v=Tt(function(){$?P.emit("unhandledRejection",J,y):(x=l.onunhandledrejection)?x({promise:y,reason:J}):(N=l.console)&&N.error&&N.error("Unhandled promise rejection",J)}),y._h=$||te(y)?2:1),y._a=void 0,v)throw v.error})},te=function(y){if(y._h==1)return!1;for(var v,x=y._a||y._c,N=0;x.length>N;)if(v=x[N++],v.fail||!te(v.promise))return!1;return!0},We=function(y){A.call(l,function(){var v;$?P.emit("rejectionHandled",y):(v=l.onrejectionhandled)&&v({promise:y,reason:y._v})})},se=function(y){var v=this;v._d||(v._d=!0,v=v._w||v,v._v=y,v._s=2,v._a||(v._a=v._c.slice()),ct(v,!0))},rn=function(y){var v,x=this;if(!x._d){x._d=!0,x=x._w||x;try{if(x===y)throw b("Promise can't be resolved itself");(v=he(y))?T(function(){var N={_w:x,_d:!1};try{v.call(y,u(rn,N,1),u(se,N,1))}catch(J){se.call(N,J)}}):(x._v=y,x._s=1,ct(x,!1))}catch(N){se.call({_w:x,_d:!1},N)}}};Q||(S=function(y){w(this,S,g,"_h"),h(y),i.call(this);try{y(u(rn,this,1),u(se,this,1))}catch(v){se.call(this,v)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(S.prototype,{then:function(y,v){var x=ee(O(this,S));return x.ok=typeof y!="function"||y,x.fail=typeof v=="function"&&v,x.domain=$?P.domain:void 0,this._c.push(x),this._a&&this._a.push(x),this._s&&ct(this,!1),x.promise},catch:function(y){return this.then(void 0,y)}}),$e=function(){var y=new i;this.promise=y,this.resolve=u(rn,y,1),this.reject=u(se,y,1)}),p(p.G+p.W+p.F*!Q,{Promise:S}),t(18)(S,g),t(59)(g),a=t(6)[g],p(p.S+p.F*!Q,g,{reject:function(y){var v=ee(this),x=v.reject;return x(y),v.promise}}),p(p.S+p.F*(c||!Q),g,{resolve:function(y){if(y instanceof S&&me(y.constructor,this))return y;var v=ee(this),x=v.resolve;return x(y),v.promise}}),p(p.S+p.F*!(Q&&t(46)(function(y){S.all(y).catch(F)})),g,{all:function(y){var v=this,x=ee(v),N=x.resolve,J=x.reject,lt=Tt(function(){var Rt=[],Ve=0,Se=1;R(y,!1,function(Fn){var on=Ve++,sn=!1;Rt.push(void 0),Se++,v.resolve(Fn).then(function(bt){sn||(sn=!0,Rt[on]=bt,--Se||N(Rt))},J)}),--Se||N(Rt)});return lt&&J(lt.error),x.promise},race:function(y){var v=this,x=ee(v),N=x.reject,J=Tt(function(){R(y,!1,function(lt){v.resolve(lt).then(x.resolve,N)})});return J&&N(J.error),x.promise}})},function(r,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(r,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var fs={};ua(fs,{initTray:()=>io,killTray:()=>$n,openBrowser:()=>Cn,showTrayNotification:()=>so,updateTrayTooltip:()=>yr});function rs(e){for(let n of e)try{if(Qt.default.existsSync(n))return n}catch{}return null}function Uc(){if(process.platform==="win32"){for(let e of cs)try{if(Qt.default.existsSync(e))return Qt.default.readFileSync(e).toString("base64")}catch{}return ns}return ns}function Fc(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function ls(){let{port:e,tunnelUrl:n,running:r}=Jt,o=r?n?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
|
|
5
5
|
Local: ${t}
|
|
6
|
-
Right-click to open / quit`}function
|
|
7
|
-
`,"utf8")}catch{}};return zi.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(n?.(),Pn(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function no({port:e,onQuit:n,onOpenUI:r}){if(!Oc())return null;if(process.platform==="win32")return Wt={port:e,tunnelUrl:"",running:!0},z=$c({port:e,onQuit:n,onOpenUI:r}),z;try{let o=Ic();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=_e.default.join(ns,"systray2","traybin",i);if(!Gt.default.existsSync(s))return null;if(process.platform!=="win32")try{Gt.default.chmodSync(s,493)}catch{}return Wt={port:e,tunnelUrl:"",running:!0},z=new o({menu:is(),debug:!1,copyDir:!0}),z.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(n?.(),Pn(),setTimeout(()=>process.exit(0),500))}),typeof z.ready=="function"?z.ready().catch(()=>{}):(z.onReady(()=>{}),z.onError(()=>{})),z}catch{return null}}function dr({tunnelUrl:e,running:n}={}){if(e!==void 0&&(Wt.tunnelUrl=e),n!==void 0&&(Wt.running=n),!!z){if(z._isWin){z._setTooltip?.(os());return}try{z.sendAction({type:"update-menu",menu:is(),seq_id:-1})}catch{}}}function Pn(){let e=z;if(z=null,e)try{e.kill(!0)}catch{}}function ro({title:e="9Remote",message:n}){let r=process.platform;if(n){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,"""),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(n)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(n)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,Ue.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(n)}" with title "${o(e)}"`;(0,Ue.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,Ue.spawn)("notify-send",[e,n],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function On(e){let n=process.platform;if(n==="win32"){try{(0,Ue.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,Ue.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{(0,Ue.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of r)try{(0,Ue.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var Ue,zi,Gt,_e,es,ts,ns,z,Wt,pr,Xi,rs,_c,Vt=oa(()=>{Ue=require("child_process"),zi=k(require("readline"),1),Gt=k(require("fs"),1),_e=k(require("path"),1),es=k(require("os"),1),ts=require("url"),ns=(0,_e.join)(es.default.homedir(),".9remote","runtime","node_modules"),z=null,Wt={port:0,tunnelUrl:"",running:!1},pr=_e.default.dirname((0,ts.fileURLToPath)(__importMetaUrl)),Xi="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAFw0lEQVR4nOWbaWwUVQDHf2+2tXRbCqmoKGgAuRIJoBwKkSAoDVKamDYLxUYUBSJHNCD30RhAbVWQqKCgXFGodKUfqGLljERsRaNQQoKoCKGFRhBp6XZ7sPv8MF0o7NTO7hzb4/dt5/9m3v/9d/fNO2YEOpEZiQnUeZMRYjQwAOgGdASi9V7DIuqAq8BZBMeQ8iDeuK/F7svX9JwsmiogJ8b0RjgWIkkHnAbN2kUVkIPDly121Pz+fwUbDUC6iEWJXQniVSDKbIc2UQdyLbHeTLGVaq0CmgHIZ2N64XPkAf0stWcfRUSTKj6vuni7EBSATHc+jORb4C5brNmFpASHSBY5nuKGh28JoP6bP0Jra3wASQlSDBFuT1ngkHJDe4F2+BxuWmvjAQRdccivpIvYwKEbAeCNXYV6e2vdSAahOBcFPgqov9XhOEnL7e1DpRK/6CXcnjL1FyAcC2k7jQeIR5GZAEJmJCZwvfoiLWeQYxYevM57Feq8ybS9xgPE4fSMU+rH9m0TKUZHEUrPH9cBnp4F9/SA4/vg+53WmbOH/lFAd11FHVGwvAC69Vc/j5gEPQfD1vnW2bMaSQ8FSNBVuO/wm40PMHYmpC7SLt8SEHRQgDsMXWTCchgz1RxD9hOjNF2mnlM/wNlibW3KGngs1SRP9qI/AN91eDsNLp3TuIoDZm+CAU+ZaM0e9AcAcOUCvJEC5X8Ha1F3wNwc6P2oSdbsIbQAAMr+hOw08FYGazFOmO+GLn1MsGYPoQcAcOYXeNcFdTXBWvs7YWk+dHrAoDV7CC8AgJOH4f3nwe8L1hK7wLJ8SGj+SwvhBwDwUz5snqOtde4JC76EdvGGqrAaYwEA7N8EuSu1tZ6DYd5OiI4xXI1VGA8AIC8L9nygrfV7AmZsAGFOVWZjnqvPFsN327W14S6Ystq0qszEvACkhI2z4NhebT1perOcN5j7u/TVwXsZ8Fuhtj5huTqdbkaY/8esqVKHzOdOaOuTs2BYmunVhos1PZOnXB0tXj4frAkFZn4SPLWOENZ1zVdK4c0UqLgcrEXHwJMvWlZ1KDTPe5ONWBdAYhdYkg8JnYK1uho4sNmyqkPBmgDaJ8KS3dDp/mBN+mH9tMYXV2zG/ABinDAvF7r21da3LYTCXaZXGy7mBuCIhjnboc8wbT13BRSsN7VKo5gXgBAwfR0MTNLW926EvGzTqjML8wJ4LgtGZmhrR3Jhy2umVWUm5gSQthjGzdbWThyCj19WO79miPEAxkwF1zJt7Y+fYXW69tJZM8FYAENS1D0BLUpOQdYzUK2xeNqMCD+Ah0bCK9vUPYHbuVKqNr7yXwPW7CG8AB4cpN7rtZa6rv0Dq8ZrT4SaIaEHEFjsjNVY7KypgndccOG0CdbsIbTnghLvU5e7O9wdrF2vhTWT4PSPobt4fCIMSIJoA/u0UkLpKfhmnTod14n+ABxRsGCX9oaH3wcfvgTH9+u+3A1SF6krRWYxOAWWjlD3MnWg/y+g9XxAgC1zoShP96VuYeyM8M5rjG79Va86UYBaQxXmroR9nxq6RASpUYAKXUW1ng8oWK/uCRih4CNj59/O2WLVqx4k5UJOdB4Fhug6waqHpCLXCRYJme7ciGRa+DW3aDYoSHkw0i4ihzwgpIt4FGcZEBdpOzbjwV/VWRFuKoEvIu3GdgQ7hJtKdRzg8GWjvn7WVqhF8WdB/UBIfbVMro2sJzuRa8SO6jPQcCQY680EiiJlyTYEhVR4X7/5sQHSFdcZRR4FNBb0WwUX8Muhwu0tDRy4ZS4g3J4yFDEeSYn93iznPH4xtmHjQWMyJHI8xUjlERCH7fNmMYJC/GKocHuC9uw1Z4PCXXmJCk8SsALwWO3PQmoRvEV51aiG7wo2pOmXp9V+IROYTMsZLHmA7Tj82YHevjGaDCCAdBGPIzYZKUYBA5F0R9ARo4/bG6cWyVUEfyH4Fb88hPTuqR/gNcl/yU6WmseVCn8AAAAASUVORK5CYII=",rs=[_e.default.join(pr,"assets","trayIcon.ico"),_e.default.join(pr,"..","assets","trayIcon.ico")],_c=[_e.default.join(pr,"assets","tray.ps1"),_e.default.join(pr,"..","assets","tray.ps1")]});var so=le((Ju,ms)=>{ms.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var ys=le((Xu,gs)=>{var Mc=so();function hs(e){this.mode=Mc.MODE_8BIT_BYTE,this.data=e}hs.prototype={getLength:function(){return this.data.length},write:function(e){for(var n=0;n<this.data.length;n++)e.put(this.data.charCodeAt(n),8)}};gs.exports=hs});var ao=le((Zu,ws)=>{var ve={glog:function(e){if(e<1)throw new Error("glog("+e+")");return ve.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return ve.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(K=0;K<8;K++)ve.EXP_TABLE[K]=1<<K;var K;for(K=8;K<256;K++)ve.EXP_TABLE[K]=ve.EXP_TABLE[K-4]^ve.EXP_TABLE[K-5]^ve.EXP_TABLE[K-6]^ve.EXP_TABLE[K-8];var K;for(K=0;K<255;K++)ve.LOG_TABLE[ve.EXP_TABLE[K]]=K;var K;ws.exports=ve});var co=le((zu,vs)=>{var wt=ao();function gr(e,n){if(e.length===void 0)throw new Error(e.length+"/"+n);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+n);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}gr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var n=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)n[r+o]^=wt.gexp(wt.glog(this.get(r))+wt.glog(e.get(o)));return new gr(n,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var n=wt.glog(this.get(0))-wt.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var t=0;t<e.getLength();t++)r[t]^=wt.gexp(wt.glog(e.get(t))+n);return new gr(r,0).mod(e)}};vs.exports=gr});var Ss=le((ef,Es)=>{Es.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var xs=le((tf,Rs)=>{var pe=so(),Ts=co(),Dc=ao(),nt=Ss(),Y={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var n=e<<10;Y.getBCHDigit(n)-Y.getBCHDigit(Y.G15)>=0;)n^=Y.G15<<Y.getBCHDigit(n)-Y.getBCHDigit(Y.G15);return(e<<10|n)^Y.G15_MASK},getBCHTypeNumber:function(e){for(var n=e<<12;Y.getBCHDigit(n)-Y.getBCHDigit(Y.G18)>=0;)n^=Y.G18<<Y.getBCHDigit(n)-Y.getBCHDigit(Y.G18);return e<<12|n},getBCHDigit:function(e){for(var n=0;e!==0;)n++,e>>>=1;return n},getPatternPosition:function(e){return Y.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,n,r){switch(e){case nt.PATTERN000:return(n+r)%2===0;case nt.PATTERN001:return n%2===0;case nt.PATTERN010:return r%3===0;case nt.PATTERN011:return(n+r)%3===0;case nt.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2===0;case nt.PATTERN101:return n*r%2+n*r%3===0;case nt.PATTERN110:return(n*r%2+n*r%3)%2===0;case nt.PATTERN111:return(n*r%3+(n+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var n=new Ts([1],0),r=0;r<e;r++)n=n.multiply(new Ts([1,Dc.gexp(r)],0));return n},getLengthInBits:function(e,n){if(1<=n&&n<10)switch(e){case pe.MODE_NUMBER:return 10;case pe.MODE_ALPHA_NUM:return 9;case pe.MODE_8BIT_BYTE:return 8;case pe.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(n<27)switch(e){case pe.MODE_NUMBER:return 12;case pe.MODE_ALPHA_NUM:return 11;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(n<41)switch(e){case pe.MODE_NUMBER:return 14;case pe.MODE_ALPHA_NUM:return 13;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+n)},getLostPoint:function(e){var n=e.getModuleCount(),r=0,o=0,t=0;for(o=0;o<n;o++)for(t=0;t<n;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||n<=o+a))for(var c=-1;c<=1;c++)t+c<0||n<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<n-1;o++)for(t=0;t<n-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<n;o++)for(t=0;t<n-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(r+=40);for(t=0;t<n;t++)for(o=0;o<n-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(r+=40);var u=0;for(t=0;t<n;t++)for(o=0;o<n;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/n/n-50)/5;return r+=f*10,r}};Rs.exports=Y});var lo=le((nf,bs)=>{bs.exports={L:1,M:0,Q:3,H:2}});var ks=le((rf,As)=>{var yr=lo();function Pe(e,n){this.totalCount=e,this.dataCount=n}Pe.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];Pe.getRSBlocks=function(e,n){var r=Pe.getRsBlockTable(e,n);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+n);for(var o=r.length/3,t=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)t.push(new Pe(a,c));return t};Pe.getRsBlockTable=function(e,n){switch(n){case yr.L:return Pe.RS_BLOCK_TABLE[(e-1)*4+0];case yr.M:return Pe.RS_BLOCK_TABLE[(e-1)*4+1];case yr.Q:return Pe.RS_BLOCK_TABLE[(e-1)*4+2];case yr.H:return Pe.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};As.exports=Pe});var Os=le((of,Ps)=>{function _s(){this.buffer=[],this.length=0}_s.prototype={get:function(e){var n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)==1},put:function(e,n){for(var r=0;r<n;r++)this.putBit((e>>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};Ps.exports=_s});var Ls=le((sf,Cs)=>{var Uc=ys(),rt=xs(),Fc=co(),Is=ks(),$s=Os();function Oe(e,n){this.typeNumber=e,this.errorCorrectLevel=n,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Oe.prototype={addData:function(e){var n=new Uc(e);this.dataList.push(n),this.dataCache=null},isDark:function(e,n){if(e<0||this.moduleCount<=e||n<0||this.moduleCount<=n)throw new Error(e+","+n);return this.modules[e][n]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var n=Is.getRSBlocks(e,this.errorCorrectLevel),r=new $s,o=0,t=0;t<n.length;t++)o+=n[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),rt.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,n){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,n),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Oe.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,n)},setupPositionProbePattern:function(e,n){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)n+o<=-1||this.moduleCount<=n+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][n+o]=!0:this.modules[e+r][n+o]=!1)},getBestMaskPattern:function(){for(var e=0,n=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=rt.getLostPoint(this);(r===0||e>o)&&(e=o,n=r)}return n},createMovieClip:function(e,n,r){var o=e.createEmptyMovieClip(n,r),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var n=8;n<this.moduleCount-8;n++)this.modules[6][n]===null&&(this.modules[6][n]=n%2===0)},setupPositionAdjustPattern:function(){for(var e=rt.getPatternPosition(this.typeNumber),n=0;n<e.length;n++)for(var r=0;r<e.length;r++){var o=e[n],t=e[r];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var n=rt.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(n>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var t=0;t<18;t++)r=!e&&(n>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=r},setupTypeInfo:function(e,n){for(var r=this.errorCorrectLevel<<3|n,o=rt.getBCHTypeInfo(r),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,n){for(var r=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=rt.getMask(n,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Oe.PAD0=236;Oe.PAD1=17;Oe.createData=function(e,n,r){for(var o=Is.getRSBlocks(e,n),t=new $s,i=0;i<r.length;i++){var s=r[i];t.put(s.mode,4),t.put(s.getLength(),rt.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(Oe.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Oe.PAD1,8);return Oe.createBytes(t,o)};Oe.createBytes=function(e,n){for(var r=0,o=0,t=0,i=new Array(n.length),s=new Array(n.length),a=0;a<n.length;a++){var c=n[a].dataCount,l=n[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+r];r+=c;var f=rt.getErrorCorrectPolynomial(l),p=new Fc(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var h=0;h<s[a].length;h++){var w=h+d.getLength()-s[a].length;s[a][h]=w>=0?d.get(w):0}}for(var R=0,O=0;O<n.length;O++)R+=n[O].totalCount;for(var A=new Array(R),T=0,g=0;g<o;g++)for(var x=0;x<n.length;x++)g<i[x].length&&(A[T++]=i[x][g]);for(var S=0;S<t;S++)for(var P=0;P<n.length;P++)S<s[P].length&&(A[T++]=s[P][S]);return A};Cs.exports=Oe});var Ds=le((af,Ms)=>{var Bc=Ls(),Ns=lo(),Hc="\x1B[40m \x1B[0m",wr="\x1B[47m \x1B[0m",jc=function(e){return e?Hc:wr},uo=function(e){return{times:function(n){return new Array(n).join(e)}}},Kc=function(e,n){for(var r=new Array(e),o=0;o<e;o++)r[o]=n;return r};Ms.exports={error:Ns.L,generate:function(e,n,r){typeof n=="function"&&(r=n,n={});var o=new Bc(-1,this.error);o.addData(e),o.make();var t="";if(n&&n.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(Kc(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=uo(u.BLACK_WHITE).times(a+3),p=uo(u.WHITE_BLACK).times(a+3);t+=f+`
|
|
6
|
+
Right-click to open / quit`}function us(){let{port:e,tunnelUrl:n}=Jt,r=process.platform==="win32",o=n?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:Uc(),title:r?`9Remote - Port ${e}`:"",tooltip:ls(),items:[{title:o,tooltip:n||`http://localhost:${e}`,checked:!1,enabled:!1},{title:"Open Web UI",tooltip:`Open http://localhost:${e} in your browser`,checked:!1,enabled:!0},{title:"Shutdown",tooltip:"Stop 9Remote server, tunnel and quit",checked:!1,enabled:!0}]}}function Bc(){try{let e=require(Pe.default.join(as,"systray2"));return e.default?.default||e.default||e}catch{return null}}function Hc({port:e,onQuit:n,onOpenUI:r}){let o=rs(cs),t=rs(Dc);if(!o||!t)return null;let i;try{i=(0,Be.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",t,"-IconPath",o,"-Tooltip",`9Remote - Port ${e}`],{windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch{return null}let s=c=>{try{i.stdin.writable&&i.stdin.write(`${JSON.stringify(c)}
|
|
7
|
+
`,"utf8")}catch{}};return os.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(n?.(),$n(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function io({port:e,onQuit:n,onOpenUI:r}){if(!Fc())return null;if(process.platform==="win32")return Jt={port:e,tunnelUrl:"",running:!0},z=Hc({port:e,onQuit:n,onOpenUI:r}),z;try{let o=Bc();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=Pe.default.join(as,"systray2","traybin",i);if(!Qt.default.existsSync(s))return null;if(process.platform!=="win32")try{Qt.default.chmodSync(s,493)}catch{}return Jt={port:e,tunnelUrl:"",running:!0},z=new o({menu:us(),debug:!1,copyDir:!0}),z.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(n?.(),$n(),setTimeout(()=>process.exit(0),500))}),typeof z.ready=="function"?z.ready().catch(()=>{}):(z.onReady(()=>{}),z.onError(()=>{})),z}catch{return null}}function yr({tunnelUrl:e,running:n}={}){if(e!==void 0&&(Jt.tunnelUrl=e),n!==void 0&&(Jt.running=n),!!z){if(z._isWin){z._setTooltip?.(ls());return}try{z.sendAction({type:"update-menu",menu:us(),seq_id:-1})}catch{}}}function $n(){let e=z;if(z=null,e)try{e.kill(!0)}catch{}}function so({title:e="9Remote",message:n}){let r=process.platform;if(n){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,"""),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(n)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(n)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,Be.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(n)}" with title "${o(e)}"`;(0,Be.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,Be.spawn)("notify-send",[e,n],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function Cn(e){let n=process.platform;if(n==="win32"){try{(0,Be.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,Be.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{(0,Be.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of r)try{(0,Be.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var Be,os,Qt,Pe,is,ss,as,z,Jt,gr,ns,cs,Dc,Xt=la(()=>{Be=require("child_process"),os=k(require("readline"),1),Qt=k(require("fs"),1),Pe=k(require("path"),1),is=k(require("os"),1),ss=require("url"),as=(0,Pe.join)(is.default.homedir(),".9remote","runtime","node_modules"),z=null,Jt={port:0,tunnelUrl:"",running:!1},gr=Pe.default.dirname((0,ss.fileURLToPath)(__importMetaUrl)),ns="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAFw0lEQVR4nOWbaWwUVQDHf2+2tXRbCqmoKGgAuRIJoBwKkSAoDVKamDYLxUYUBSJHNCD30RhAbVWQqKCgXFGodKUfqGLljERsRaNQQoKoCKGFRhBp6XZ7sPv8MF0o7NTO7hzb4/dt5/9m3v/9d/fNO2YEOpEZiQnUeZMRYjQwAOgGdASi9V7DIuqAq8BZBMeQ8iDeuK/F7svX9JwsmiogJ8b0RjgWIkkHnAbN2kUVkIPDly121Pz+fwUbDUC6iEWJXQniVSDKbIc2UQdyLbHeTLGVaq0CmgHIZ2N64XPkAf0stWcfRUSTKj6vuni7EBSATHc+jORb4C5brNmFpASHSBY5nuKGh28JoP6bP0Jra3wASQlSDBFuT1ngkHJDe4F2+BxuWmvjAQRdccivpIvYwKEbAeCNXYV6e2vdSAahOBcFPgqov9XhOEnL7e1DpRK/6CXcnjL1FyAcC2k7jQeIR5GZAEJmJCZwvfoiLWeQYxYevM57Feq8ybS9xgPE4fSMU+rH9m0TKUZHEUrPH9cBnp4F9/SA4/vg+53WmbOH/lFAd11FHVGwvAC69Vc/j5gEPQfD1vnW2bMaSQ8FSNBVuO/wm40PMHYmpC7SLt8SEHRQgDsMXWTCchgz1RxD9hOjNF2mnlM/wNlibW3KGngs1SRP9qI/AN91eDsNLp3TuIoDZm+CAU+ZaM0e9AcAcOUCvJEC5X8Ha1F3wNwc6P2oSdbsIbQAAMr+hOw08FYGazFOmO+GLn1MsGYPoQcAcOYXeNcFdTXBWvs7YWk+dHrAoDV7CC8AgJOH4f3nwe8L1hK7wLJ8SGj+SwvhBwDwUz5snqOtde4JC76EdvGGqrAaYwEA7N8EuSu1tZ6DYd5OiI4xXI1VGA8AIC8L9nygrfV7AmZsAGFOVWZjnqvPFsN327W14S6Ystq0qszEvACkhI2z4NhebT1perOcN5j7u/TVwXsZ8Fuhtj5huTqdbkaY/8esqVKHzOdOaOuTs2BYmunVhos1PZOnXB0tXj4frAkFZn4SPLWOENZ1zVdK4c0UqLgcrEXHwJMvWlZ1KDTPe5ONWBdAYhdYkg8JnYK1uho4sNmyqkPBmgDaJ8KS3dDp/mBN+mH9tMYXV2zG/ABinDAvF7r21da3LYTCXaZXGy7mBuCIhjnboc8wbT13BRSsN7VKo5gXgBAwfR0MTNLW926EvGzTqjML8wJ4LgtGZmhrR3Jhy2umVWUm5gSQthjGzdbWThyCj19WO79miPEAxkwF1zJt7Y+fYXW69tJZM8FYAENS1D0BLUpOQdYzUK2xeNqMCD+Ah0bCK9vUPYHbuVKqNr7yXwPW7CG8AB4cpN7rtZa6rv0Dq8ZrT4SaIaEHEFjsjNVY7KypgndccOG0CdbsIbTnghLvU5e7O9wdrF2vhTWT4PSPobt4fCIMSIJoA/u0UkLpKfhmnTod14n+ABxRsGCX9oaH3wcfvgTH9+u+3A1SF6krRWYxOAWWjlD3MnWg/y+g9XxAgC1zoShP96VuYeyM8M5rjG79Va86UYBaQxXmroR9nxq6RASpUYAKXUW1ng8oWK/uCRih4CNj59/O2WLVqx4k5UJOdB4Fhug6waqHpCLXCRYJme7ciGRa+DW3aDYoSHkw0i4ihzwgpIt4FGcZEBdpOzbjwV/VWRFuKoEvIu3GdgQ7hJtKdRzg8GWjvn7WVqhF8WdB/UBIfbVMro2sJzuRa8SO6jPQcCQY680EiiJlyTYEhVR4X7/5sQHSFdcZRR4FNBb0WwUX8Muhwu0tDRy4ZS4g3J4yFDEeSYn93iznPH4xtmHjQWMyJHI8xUjlERCH7fNmMYJC/GKocHuC9uw1Z4PCXXmJCk8SsALwWO3PQmoRvEV51aiG7wo2pOmXp9V+IROYTMsZLHmA7Tj82YHevjGaDCCAdBGPIzYZKUYBA5F0R9ARo4/bG6cWyVUEfyH4Fb88hPTuqR/gNcl/yU6WmseVCn8AAAAASUVORK5CYII=",cs=[Pe.default.join(gr,"assets","trayIcon.ico"),Pe.default.join(gr,"..","assets","trayIcon.ico")],Dc=[Pe.default.join(gr,"assets","tray.ps1"),Pe.default.join(gr,"..","assets","tray.ps1")]});var lo=le((sf,vs)=>{vs.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var Ts=le((af,Ss)=>{var Wc=lo();function Es(e){this.mode=Wc.MODE_8BIT_BYTE,this.data=e}Es.prototype={getLength:function(){return this.data.length},write:function(e){for(var n=0;n<this.data.length;n++)e.put(this.data.charCodeAt(n),8)}};Ss.exports=Es});var uo=le((cf,Rs)=>{var Ee={glog:function(e){if(e<1)throw new Error("glog("+e+")");return Ee.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return Ee.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(K=0;K<8;K++)Ee.EXP_TABLE[K]=1<<K;var K;for(K=8;K<256;K++)Ee.EXP_TABLE[K]=Ee.EXP_TABLE[K-4]^Ee.EXP_TABLE[K-5]^Ee.EXP_TABLE[K-6]^Ee.EXP_TABLE[K-8];var K;for(K=0;K<255;K++)Ee.LOG_TABLE[Ee.EXP_TABLE[K]]=K;var K;Rs.exports=Ee});var fo=le((lf,bs)=>{var St=uo();function Er(e,n){if(e.length===void 0)throw new Error(e.length+"/"+n);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+n);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}Er.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var n=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)n[r+o]^=St.gexp(St.glog(this.get(r))+St.glog(e.get(o)));return new Er(n,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var n=St.glog(this.get(0))-St.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var t=0;t<e.getLength();t++)r[t]^=St.gexp(St.glog(e.get(t))+n);return new Er(r,0).mod(e)}};bs.exports=Er});var As=le((uf,xs)=>{xs.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Ps=le((ff,_s)=>{var de=lo(),ks=fo(),Vc=uo(),ot=As(),q={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var n=e<<10;q.getBCHDigit(n)-q.getBCHDigit(q.G15)>=0;)n^=q.G15<<q.getBCHDigit(n)-q.getBCHDigit(q.G15);return(e<<10|n)^q.G15_MASK},getBCHTypeNumber:function(e){for(var n=e<<12;q.getBCHDigit(n)-q.getBCHDigit(q.G18)>=0;)n^=q.G18<<q.getBCHDigit(n)-q.getBCHDigit(q.G18);return e<<12|n},getBCHDigit:function(e){for(var n=0;e!==0;)n++,e>>>=1;return n},getPatternPosition:function(e){return q.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,n,r){switch(e){case ot.PATTERN000:return(n+r)%2===0;case ot.PATTERN001:return n%2===0;case ot.PATTERN010:return r%3===0;case ot.PATTERN011:return(n+r)%3===0;case ot.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2===0;case ot.PATTERN101:return n*r%2+n*r%3===0;case ot.PATTERN110:return(n*r%2+n*r%3)%2===0;case ot.PATTERN111:return(n*r%3+(n+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var n=new ks([1],0),r=0;r<e;r++)n=n.multiply(new ks([1,Vc.gexp(r)],0));return n},getLengthInBits:function(e,n){if(1<=n&&n<10)switch(e){case de.MODE_NUMBER:return 10;case de.MODE_ALPHA_NUM:return 9;case de.MODE_8BIT_BYTE:return 8;case de.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(n<27)switch(e){case de.MODE_NUMBER:return 12;case de.MODE_ALPHA_NUM:return 11;case de.MODE_8BIT_BYTE:return 16;case de.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(n<41)switch(e){case de.MODE_NUMBER:return 14;case de.MODE_ALPHA_NUM:return 13;case de.MODE_8BIT_BYTE:return 16;case de.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+n)},getLostPoint:function(e){var n=e.getModuleCount(),r=0,o=0,t=0;for(o=0;o<n;o++)for(t=0;t<n;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||n<=o+a))for(var c=-1;c<=1;c++)t+c<0||n<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<n-1;o++)for(t=0;t<n-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<n;o++)for(t=0;t<n-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(r+=40);for(t=0;t<n;t++)for(o=0;o<n-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(r+=40);var u=0;for(t=0;t<n;t++)for(o=0;o<n;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/n/n-50)/5;return r+=f*10,r}};_s.exports=q});var po=le((pf,Os)=>{Os.exports={L:1,M:0,Q:3,H:2}});var $s=le((df,Is)=>{var Sr=po();function Oe(e,n){this.totalCount=e,this.dataCount=n}Oe.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];Oe.getRSBlocks=function(e,n){var r=Oe.getRsBlockTable(e,n);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+n);for(var o=r.length/3,t=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)t.push(new Oe(a,c));return t};Oe.getRsBlockTable=function(e,n){switch(n){case Sr.L:return Oe.RS_BLOCK_TABLE[(e-1)*4+0];case Sr.M:return Oe.RS_BLOCK_TABLE[(e-1)*4+1];case Sr.Q:return Oe.RS_BLOCK_TABLE[(e-1)*4+2];case Sr.H:return Oe.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Is.exports=Oe});var Ns=le((mf,Ls)=>{function Cs(){this.buffer=[],this.length=0}Cs.prototype={get:function(e){var n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)==1},put:function(e,n){for(var r=0;r<n;r++)this.putBit((e>>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};Ls.exports=Cs});var Fs=le((hf,Us)=>{var Yc=Ts(),it=Ps(),qc=fo(),Ms=$s(),Ds=Ns();function Ie(e,n){this.typeNumber=e,this.errorCorrectLevel=n,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Ie.prototype={addData:function(e){var n=new Yc(e);this.dataList.push(n),this.dataCache=null},isDark:function(e,n){if(e<0||this.moduleCount<=e||n<0||this.moduleCount<=n)throw new Error(e+","+n);return this.modules[e][n]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var n=Ms.getRSBlocks(e,this.errorCorrectLevel),r=new Ds,o=0,t=0;t<n.length;t++)o+=n[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),it.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,n){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,n),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Ie.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,n)},setupPositionProbePattern:function(e,n){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)n+o<=-1||this.moduleCount<=n+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][n+o]=!0:this.modules[e+r][n+o]=!1)},getBestMaskPattern:function(){for(var e=0,n=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=it.getLostPoint(this);(r===0||e>o)&&(e=o,n=r)}return n},createMovieClip:function(e,n,r){var o=e.createEmptyMovieClip(n,r),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var n=8;n<this.moduleCount-8;n++)this.modules[6][n]===null&&(this.modules[6][n]=n%2===0)},setupPositionAdjustPattern:function(){for(var e=it.getPatternPosition(this.typeNumber),n=0;n<e.length;n++)for(var r=0;r<e.length;r++){var o=e[n],t=e[r];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var n=it.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(n>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var t=0;t<18;t++)r=!e&&(n>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=r},setupTypeInfo:function(e,n){for(var r=this.errorCorrectLevel<<3|n,o=it.getBCHTypeInfo(r),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,n){for(var r=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=it.getMask(n,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Ie.PAD0=236;Ie.PAD1=17;Ie.createData=function(e,n,r){for(var o=Ms.getRSBlocks(e,n),t=new Ds,i=0;i<r.length;i++){var s=r[i];t.put(s.mode,4),t.put(s.getLength(),it.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(Ie.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Ie.PAD1,8);return Ie.createBytes(t,o)};Ie.createBytes=function(e,n){for(var r=0,o=0,t=0,i=new Array(n.length),s=new Array(n.length),a=0;a<n.length;a++){var c=n[a].dataCount,l=n[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+r];r+=c;var f=it.getErrorCorrectPolynomial(l),p=new qc(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var h=0;h<s[a].length;h++){var w=h+d.getLength()-s[a].length;s[a][h]=w>=0?d.get(w):0}}for(var R=0,O=0;O<n.length;O++)R+=n[O].totalCount;for(var A=new Array(R),T=0,g=0;g<o;g++)for(var b=0;b<n.length;b++)g<i[b].length&&(A[T++]=i[b][g]);for(var S=0;S<t;S++)for(var P=0;P<n.length;P++)S<s[P].length&&(A[T++]=s[P][S]);return A};Us.exports=Ie});var js=le((gf,Hs)=>{var Qc=Fs(),Bs=po(),Jc="\x1B[40m \x1B[0m",Tr="\x1B[47m \x1B[0m",Xc=function(e){return e?Jc:Tr},mo=function(e){return{times:function(n){return new Array(n).join(e)}}},Zc=function(e,n){for(var r=new Array(e),o=0;o<e;o++)r[o]=n;return r};Hs.exports={error:Bs.L,generate:function(e,n,r){typeof n=="function"&&(r=n,n={});var o=new Qc(-1,this.error);o.addData(e),o.make();var t="";if(n&&n.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(Zc(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=mo(u.BLACK_WHITE).times(a+3),p=mo(u.WHITE_BLACK).times(a+3);t+=f+`
|
|
8
8
|
`;for(var d=0;d<a;d+=2){t+=u.WHITE_ALL;for(var h=0;h<a;h++)c[d][h]===s&&c[d+1][h]===s?t+=u.WHITE_ALL:c[d][h]===s&&c[d+1][h]===i?t+=u.WHITE_BLACK:c[d][h]===i&&c[d+1][h]===s?t+=u.BLACK_WHITE:t+=u.BLACK_ALL;t+=u.WHITE_ALL+`
|
|
9
|
-
`}l||(t+=p)}else{var w=
|
|
10
|
-
`,o.modules.forEach(function(R){t+=
|
|
11
|
-
`}),t+=w}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=
|
|
12
|
-
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of
|
|
13
|
-
`)}catch{}}function
|
|
14
|
-
=== SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),
|
|
15
|
-
`).filter(Boolean).slice(-e)}catch{return[]}}var
|
|
9
|
+
`}l||(t+=p)}else{var w=mo(Tr).times(o.getModuleCount()+3);t+=w+`
|
|
10
|
+
`,o.modules.forEach(function(R){t+=Tr,t+=R.map(Xc).join(""),t+=Tr+`
|
|
11
|
+
`}),t+=w}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=Bs[e]||this.error}}});var jn=require("fs"),cn=require("path"),_o=require("url"),Po=k(require("os"),1);var Hn=k(require("dns"),1),Ce=k(require("path"),1),Eo=k(require("os"),1),ne="9remote",Ar=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${ne}/latest`,Le=`${ne}@latest`,Ye=Ce.default.join(Eo.default.homedir(),".9remote"),re={ROOT:Ye,LOGS:Ce.default.join(Ye,"logs"),STATE:Ce.default.join(Ye,"state"),CONFIG:Ce.default.join(Ye,"config"),BIN:Ce.default.join(Ye,"bin"),PIDS:Ce.default.join(Ye,"pids"),BUFFERS:Ce.default.join(Ye,"buffers"),DAEMON:Ce.default.join(Ye,"daemon")},So=new Hn.default.promises.Resolver;So.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var xr=Hn.default.lookup,pa=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;Hn.default.lookup=(e,n,r)=>{if(typeof n=="function"&&(r=n,n={}),e==="localhost"||pa.test(e))return xr(e,n,r);So.resolve4(e).then(o=>{if(!o?.length)return xr(e,n,r);n.all?r(null,o.map(t=>({address:t,family:4}))):r(null,o[0],4)}).catch(()=>xr(e,n,r))};var _=2208,To=process.execPath,Ro=(e=process.env)=>process.versions.electron?{...e,ELECTRON_RUN_AS_NODE:"1"}:{...e};var vo=5173;var Sl=[`http://localhost:${_}`,`http://127.0.0.1:${_}`,`http://localhost:${vo}`,`http://127.0.0.1:${vo}`],an={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},bo=60,I={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},xo={showTunnelUrlInMenu:!1};var Ao={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var ko={checkIntervalMs:3e4,requestTimeoutMs:5e3},ae={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},tunnelRateLimit:{strategy:"exp",baseMs:6e4,maxMs:9e5},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},da={Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache",Pragma:"no-cache","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"};function G(e,n={}){return fetch(e,{...n,headers:{...da,...n.headers}})}var ma=(0,cn.dirname)((0,_o.fileURLToPath)(__importMetaUrl)),ha=[(0,cn.join)(Po.default.homedir(),".9remote",".env"),(0,cn.join)(ma,"..",".env")];function ga(e){for(let n of e.split(`
|
|
12
|
+
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of ha)if((0,jn.existsSync)(e))try{ga((0,jn.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(Ao))process.env[e]||(process.env[e]=n);var Ir=k(require("path"),1),Mo=k(require("fs"),1),Do=require("url");var Io=k(Oo(),1),_r=k(require("crypto"),1),{machineIdSync:ya}=Io.default;async function xt(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=ya();return _r.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),_r.default.randomUUID().replace(/-/g,"").substring(0,16)}}var $o=k(require("crypto"),1),wa=process.env.API_KEY_SECRET||"9remote-api-key-secret";function va(){let e="abcdefghijklmnopqrstuvwxyz0123456789",n="";for(let r=0;r<4;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n}function Ea(e,n){return $o.default.createHmac("sha256",wa).update(e+n).digest("hex").slice(0,6)}function At(e){let n=e.slice(0,8),r=va(),o=Ea(n,r);return{key:`sk-${n}-${r}-${o}`,keyId:r}}function Kn(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var ce=k(require("fs"),1),un=k(require("path"),1);var kl=re.STATE,Pr=un.default.join(re.STATE,"state.json"),Or=un.default.join(re.ROOT,"keys.json"),Gn=un.default.join(re.STATE,"cmd.json"),_l=un.default.join(re.STATE,"settings.json");function Wn(){for(let e of[re.ROOT,re.STATE])ce.default.existsSync(e)||ce.default.mkdirSync(e,{recursive:!0})}function fn(e){try{Wn(),ce.default.writeFileSync(Pr,JSON.stringify(e,null,2),{mode:384})}catch(n){console.error("Error saving state:",n)}}function Co(){try{ce.default.existsSync(Pr)&&ce.default.unlinkSync(Pr)}catch{}}function Vn(){try{return Wn(),ce.default.existsSync(Or)?JSON.parse(ce.default.readFileSync(Or,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function kt(e){try{Wn(),ce.default.writeFileSync(Gn,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function Lo(){try{if(!ce.default.existsSync(Gn))return null;let e=JSON.parse(ce.default.readFileSync(Gn,"utf8"));return ce.default.unlinkSync(Gn),e.cmd}catch{return null}}function ut(e,n,r="Default"){try{Wn();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return ce.default.writeFileSync(Or,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}function No(){return process.env.CODESPACES==="true"}var Sa=Ir.default.dirname((0,Do.fileURLToPath)(__importMetaUrl));async function qe(){let e=await xt();if(No()&&process.env.NREMOTE_API_KEY)return ut(e,process.env.NREMOTE_API_KEY,"Codespace");let n=Vn();if(!n.key){let{key:r}=At(e);n=ut(e,r,"Default")}return n}function Te(){return"2.5.5"}var Re=k(require("fs"),1),$r=k(require("path"),1);var qn=re.LOGS,pn=$r.default.join(qn,an.fileName),Qn=$r.default.join(qn,an.rotatedName),Uo=!1,Fo=null;function Ta(){Re.default.existsSync(qn)||Re.default.mkdirSync(qn,{recursive:!0})}function Ra(){try{if(Re.default.statSync(pn).size<an.maxBytes)return;try{Re.default.rmSync(Qn,{force:!0})}catch{}Re.default.renameSync(pn,Qn)}catch{}}function ba(){try{let e=Re.default.statSync(Qn);Date.now()-e.mtimeMs>an.cleanupAfterDays*864e5&&Re.default.rmSync(Qn,{force:!0})}catch{}}function Cr(e){try{Ra(),Re.default.appendFileSync(pn,e+`
|
|
13
|
+
`)}catch{}}function Yn(e){return e.map(n=>{if(n instanceof Error)return n.stack||n.message;if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}).join(" ")}function Bo(){let e=new Date,n=(r,o=2)=>String(r).padStart(o,"0");return`${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}.${n(e.getMilliseconds(),3)}`}var xa=/\x1b\[[0-9;]*m/g,Aa=/https?:\/\/[^\s]+/g;function ka(e){return String(e).replace(xa,"").replace(Aa,"").replace(/\s+$/g,"")}function _t(e,n,r){let o=ka(r);if(!o)return;let t=n==="info"?e:`${e}:${n}`,i=`${Bo()} [${t}] ${o}`;if(Cr(i),Fo)try{Fo(i)}catch{}}function _a(){process.on("uncaughtException",e=>_t("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let n=e instanceof Error?e.stack||e.message:String(e);_t("crash","error",`unhandledRejection: ${n}`)}),process.on("exit",e=>Cr(`${Bo()} [exit] code=${e} pid=${process.pid}`))}function Ho(){Uo||(Uo=!0,Ta(),ba(),Cr(`
|
|
14
|
+
=== SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),_a())}function jo(e=60){try{return Re.default.readFileSync(pn,"utf8").split(`
|
|
15
|
+
`).filter(Boolean).slice(-e)}catch{return[]}}var Pa=process.env.NODE_ENV==="development"||process.env.AGENT_DEBUG==="1";function j(e){return{debug:(...n)=>{Pa&&_t(e,"debug",Yn(n))},info:(...n)=>_t(e,"info",Yn(n)),warn:(...n)=>_t(e,"warn",Yn(n)),error:(...n)=>_t(e,"error",Yn(n))}}var dn=pn;var Ko=(e=0)=>n=>`\x1B[${n+e}m`,Go=(e=0)=>n=>`\x1B[${38+e};5;${n}m`,Wo=(e=0)=>(n,r,o)=>`\x1B[${38+e};2;${n};${r};${o}m`,M={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Ul=Object.keys(M.modifier),Oa=Object.keys(M.color),Ia=Object.keys(M.bgColor),Fl=[...Oa,...Ia];function $a(){let e=new Map;for(let[n,r]of Object.entries(M)){for(let[o,t]of Object.entries(r))M[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},r[o]=M[o],e.set(t[0],t[1]);Object.defineProperty(M,n,{value:r,enumerable:!1})}return Object.defineProperty(M,"codes",{value:e,enumerable:!1}),M.color.close="\x1B[39m",M.bgColor.close="\x1B[49m",M.color.ansi=Ko(),M.color.ansi256=Go(),M.color.ansi16m=Wo(),M.bgColor.ansi=Ko(10),M.bgColor.ansi256=Go(10),M.bgColor.ansi16m=Wo(10),Object.defineProperties(M,{rgbToAnsi256:{value(n,r,o){return n===r&&r===o?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(n){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(n.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let t=Number.parseInt(o,16);return[t>>16&255,t>>8&255,t&255]},enumerable:!1},hexToAnsi256:{value:n=>M.rgbToAnsi256(...M.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value(n){if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,o,t;if(n>=232)r=((n-232)*10+8)/255,o=r,t=r;else{n-=16;let a=n%36;r=Math.floor(n/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(r,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(n,r,o)=>M.ansi256ToAnsi(M.rgbToAnsi256(n,r,o)),enumerable:!1},hexToAnsi:{value:n=>M.ansi256ToAnsi(M.hexToAnsi256(n)),enumerable:!1}}),M}var Ca=$a(),ge=Ca;var Xn=k(require("node:process"),1),Yo=k(require("node:os"),1),Lr=k(require("node:tty"),1);function ue(e,n=globalThis.Deno?globalThis.Deno.args:Xn.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=n.indexOf(r+e),t=n.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:D}=Xn.default,Jn;ue("no-color")||ue("no-colors")||ue("color=false")||ue("color=never")?Jn=0:(ue("color")||ue("colors")||ue("color=true")||ue("color=always"))&&(Jn=1);function La(){if("FORCE_COLOR"in D)return D.FORCE_COLOR==="true"?1:D.FORCE_COLOR==="false"?0:D.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(D.FORCE_COLOR,10),3)}function Na(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Ma(e,{streamIsTTY:n,sniffFlags:r=!0}={}){let o=La();o!==void 0&&(Jn=o);let t=r?Jn:o;if(t===0)return 0;if(r){if(ue("color=16m")||ue("color=full")||ue("color=truecolor"))return 3;if(ue("color=256"))return 2}if("TF_BUILD"in D&&"AGENT_NAME"in D)return 1;if(e&&!n&&t===void 0)return 0;let i=t||0;if(D.TERM==="dumb")return i;if(Xn.default.platform==="win32"){let s=Yo.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in D)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in D)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in D)||D.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in D)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(D.TEAMCITY_VERSION)?1:0;if(D.COLORTERM==="truecolor"||D.TERM==="xterm-kitty"||D.TERM==="xterm-ghostty"||D.TERM==="wezterm")return 3;if("TERM_PROGRAM"in D){let s=Number.parseInt((D.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(D.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(D.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(D.TERM)||"COLORTERM"in D?1:i}function Vo(e,n={}){let r=Ma(e,{streamIsTTY:e&&e.isTTY,...n});return Na(r)}var Da={stdout:Vo({isTTY:Lr.default.isatty(1)}),stderr:Vo({isTTY:Lr.default.isatty(2)})},qo=Da;function Qo(e,n,r){let o=e.indexOf(n);if(o===-1)return e;let t=n.length,i=0,s="";do s+=e.slice(i,o)+n+r,i=o+t,o=e.indexOf(n,i);while(o!==-1);return s+=e.slice(i),s}function Jo(e,n,r,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+n+(s?`\r
|
|
16
16
|
`:`
|
|
17
17
|
`)+r,t=o+1,o=e.indexOf(`
|
|
18
|
-
`,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:
|
|
19
|
-
`);return i!==-1&&(n=
|
|
20
|
-
`),(0,
|
|
18
|
+
`,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:Xo,stderr:Zo}=qo,Nr=Symbol("GENERATOR"),Pt=Symbol("STYLER"),mn=Symbol("IS_EMPTY"),zo=["ansi","ansi","ansi256","ansi16m"],Ot=Object.create(null),Ua=(e,n={})=>{if(n.level&&!(Number.isInteger(n.level)&&n.level>=0&&n.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Xo?Xo.level:0;e.level=n.level===void 0?r:n.level};var Fa=e=>{let n=(...r)=>r.join(" ");return Ua(n,e),Object.setPrototypeOf(n,hn.prototype),n};function hn(e){return Fa(e)}Object.setPrototypeOf(hn.prototype,Function.prototype);for(let[e,n]of Object.entries(ge))Ot[e]={get(){let r=Zn(this,Dr(n.open,n.close,this[Pt]),this[mn]);return Object.defineProperty(this,e,{value:r}),r}};Ot.visible={get(){let e=Zn(this,this[Pt],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Mr=(e,n,r,...o)=>e==="rgb"?n==="ansi16m"?ge[r].ansi16m(...o):n==="ansi256"?ge[r].ansi256(ge.rgbToAnsi256(...o)):ge[r].ansi(ge.rgbToAnsi(...o)):e==="hex"?Mr("rgb",n,r,...ge.hexToRgb(...o)):ge[r][e](...o),Ba=["rgb","hex","ansi256"];for(let e of Ba){Ot[e]={get(){let{level:r}=this;return function(...o){let t=Dr(Mr(e,zo[r],"color",...o),ge.color.close,this[Pt]);return Zn(this,t,this[mn])}}};let n="bg"+e[0].toUpperCase()+e.slice(1);Ot[n]={get(){let{level:r}=this;return function(...o){let t=Dr(Mr(e,zo[r],"bgColor",...o),ge.bgColor.close,this[Pt]);return Zn(this,t,this[mn])}}}}var Ha=Object.defineProperties(()=>{},{...Ot,level:{enumerable:!0,get(){return this[Nr].level},set(e){this[Nr].level=e}}}),Dr=(e,n,r)=>{let o,t;return r===void 0?(o=e,t=n):(o=r.openAll+e,t=n+r.closeAll),{open:e,close:n,openAll:o,closeAll:t,parent:r}},Zn=(e,n,r)=>{let o=(...t)=>ja(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,Ha),o[Nr]=e,o[Pt]=n,o[mn]=r,o},ja=(e,n)=>{if(e.level<=0||!n)return e[mn]?"":n;let r=e[Pt];if(r===void 0)return n;let{openAll:o,closeAll:t}=r;if(n.includes("\x1B"))for(;r!==void 0;)n=Qo(n,r.close,r.open),r=r.parent;let i=n.indexOf(`
|
|
19
|
+
`);return i!==-1&&(n=Jo(n,t,o,i)),o+n+t};Object.defineProperties(hn.prototype,Ot);var Ka=hn(),Vl=hn({level:Zo?Zo.level:0});var m=Ka;var W=require("fs"),hi=require("url"),yn=require("child_process"),Ae=k(require("path"),1),Lt=k(require("os"),1);var It=k(require("fs"),1),Ur=k(require("path"),1),ei=k(require("os"),1),ti=require("child_process"),zn=Ur.default.join(ei.default.homedir(),".9remote","pids");function Ga(){try{It.default.existsSync(zn)||It.default.mkdirSync(zn,{recursive:!0})}catch{}}function Fr(e){return Ur.default.join(zn,`${e}.pid`)}function Qe(e,n){if(n)try{Ga(),It.default.writeFileSync(Fr(e),String(n))}catch{}}function $t(e){try{let n=It.default.readFileSync(Fr(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function be(e){try{It.default.unlinkSync(Fr(e))}catch{}}function er(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Wa(e){let n=$t(e);if(be(e),!n)return!1;try{process.platform==="win32"?(0,ti.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var Va=["cloudflared","agent"];function ni(){for(let e of Va)Wa(e)}function ri(){return zn}var dt=require("child_process"),L=require("fs"),ft=require("path"),Hr=k(require("os"),1),pt=k(require("path"),1),ii=require("url");var nr=(0,ft.join)(re.LOGS,"autostart.log"),tr="cc.9remote.agent",rr="9Remote",or=["--tray","--skip-update","--start"],gn=Hr.default.homedir(),oi=pt.default.dirname((0,ii.fileURLToPath)(__importMetaUrl)),X={darwin:(0,ft.join)(gn,"Library","LaunchAgents",`${tr}.plist`),linux:(0,ft.join)(gn,".config","autostart",`${tr}.desktop`),linuxSystemd:(0,ft.join)(gn,".config","systemd","user",`${tr}.service`),win:(0,ft.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${rr}.vbs`)};function Je(){for(let e=oi,n=null;e!==n;n=e,e=pt.default.dirname(e)){let r=pt.default.join(e,"package.json");if((0,L.existsSync)(r)){try{let o=JSON.parse((0,L.readFileSync)(r,"utf8"));if(o.name!==ne)continue;let t=typeof o.bin=="string"?o.bin:o.bin?.[ne];if(t){let i=pt.default.resolve(e,t);if((0,L.existsSync)(i))return i}}catch{}break}}return process.argv[1]||pt.default.resolve(oi,"..","index.js")}function xe(){return process.execPath}function si(){return process.versions.electron?"env ELECTRON_RUN_AS_NODE=1 ":""}function ai(e){let n=xe(),r=Je();if(process.platform==="win32"){let t=e.join(" "),i=(0,ft.join)(Hr.default.tmpdir(),`${ne}-launch.vbs`);return(0,L.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${n}"" ""${r}"" ${t}", 0, False
|
|
20
|
+
`),(0,dt.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,dt.spawn)(n,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function ci(){let e=pt.default.dirname(xe()),n=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return n.includes(e)||n.unshift(e),n.join(":")}function Br(e){return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Ya(e,n){let r=[e,n,...or].map(o=>` <string>${Br(o)}</string>`).join(`
|
|
21
21
|
`);return`<?xml version="1.0" encoding="UTF-8"?>
|
|
22
22
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
23
23
|
<plist version="1.0">
|
|
24
24
|
<dict>
|
|
25
25
|
<key>Label</key>
|
|
26
|
-
<string>${
|
|
26
|
+
<string>${tr}</string>
|
|
27
27
|
<key>ProgramArguments</key>
|
|
28
28
|
<array>
|
|
29
29
|
${r}
|
|
@@ -35,43 +35,43 @@ ${r}
|
|
|
35
35
|
<key>EnvironmentVariables</key>
|
|
36
36
|
<dict>
|
|
37
37
|
<key>PATH</key>
|
|
38
|
-
<string>${
|
|
38
|
+
<string>${Br(ci())}</string>
|
|
39
39
|
<key>HOME</key>
|
|
40
|
-
<string>${
|
|
40
|
+
<string>${Br(gn)}</string>
|
|
41
41
|
</dict>
|
|
42
42
|
<key>StandardOutPath</key>
|
|
43
|
-
<string>${
|
|
43
|
+
<string>${nr}</string>
|
|
44
44
|
<key>StandardErrorPath</key>
|
|
45
|
-
<string>${
|
|
45
|
+
<string>${nr}</string>
|
|
46
46
|
</dict>
|
|
47
47
|
</plist>
|
|
48
|
-
`}function
|
|
49
|
-
WshShell.Run """${xe()}"" ""${
|
|
50
|
-
`}function
|
|
48
|
+
`}function qa(){return(0,L.existsSync)(X.darwin)}function Qa(){let e=or.join(" ");return`Set WshShell = CreateObject("WScript.Shell")
|
|
49
|
+
WshShell.Run """${xe()}"" ""${Je()}"" ${e}", 0, False
|
|
50
|
+
`}function Ja(){try{(0,dt.execFileSync)("reg",["DELETE","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",rr,"/F"],{windowsHide:!0,stdio:"ignore"})}catch{}}function Xa(){return(0,L.existsSync)(X.win)}function Za(){let e=`${xe()} ${Je()} ${or.join(" ")}`;return`[Desktop Entry]
|
|
51
51
|
Type=Application
|
|
52
|
-
Name=${
|
|
52
|
+
Name=${rr}
|
|
53
53
|
Exec=${e}
|
|
54
54
|
X-GNOME-Autostart-enabled=true
|
|
55
55
|
NoDisplay=false
|
|
56
56
|
Terminal=false
|
|
57
|
-
`}function
|
|
58
|
-
Description=${
|
|
57
|
+
`}function za(){let e=or.map(n=>`'${n}'`).join(" ");return`[Unit]
|
|
58
|
+
Description=${rr} Agent
|
|
59
59
|
After=network-online.target
|
|
60
60
|
Wants=network-online.target
|
|
61
61
|
|
|
62
62
|
[Service]
|
|
63
63
|
Type=simple
|
|
64
|
-
ExecStart=${xe()} ${
|
|
64
|
+
ExecStart=${xe()} ${Je()} ${e}
|
|
65
65
|
Restart=always
|
|
66
66
|
RestartSec=10
|
|
67
|
-
Environment=PATH=${
|
|
68
|
-
Environment=HOME=${
|
|
69
|
-
StandardOutput=append:${
|
|
70
|
-
StandardError=append:${
|
|
67
|
+
Environment=PATH=${ci()}
|
|
68
|
+
Environment=HOME=${gn}
|
|
69
|
+
StandardOutput=append:${nr}
|
|
70
|
+
StandardError=append:${nr}
|
|
71
71
|
|
|
72
72
|
[Install]
|
|
73
73
|
WantedBy=default.target
|
|
74
|
-
`}function
|
|
74
|
+
`}function ec(e){try{return(0,dt.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function tc(){return(0,L.existsSync)(X.linux)||(0,L.existsSync)(X.linuxSystemd)}async function nc(){try{if(process.platform==="darwin")return qa();if(process.platform==="win32")return await Xa();if(process.platform==="linux")return tc()}catch{}return!1}async function li(){try{if(process.platform==="win32"&&Ja(),!await nc())return!1;if(process.platform==="darwin"){let e=Ya(xe(),Je());return((0,L.existsSync)(X.darwin)?(0,L.readFileSync)(X.darwin,"utf8"):"")===e?!1:((0,L.writeFileSync)(X.darwin,e),!0)}if(process.platform==="win32"){let e=Qa();return((0,L.existsSync)(X.win)?(0,L.readFileSync)(X.win,"utf8"):"")===e?!1:((0,L.writeFileSync)(X.win,e),!0)}if(process.platform==="linux"){if((0,L.existsSync)(X.linuxSystemd)){let e=za();return(0,L.readFileSync)(X.linuxSystemd,"utf8")===e?!1:((0,L.writeFileSync)(X.linuxSystemd,e),ec(["daemon-reload"]),!0)}if((0,L.existsSync)(X.linux)){let e=Za();return(0,L.readFileSync)(X.linux,"utf8")===e?!1:((0,L.writeFileSync)(X.linux,e),!0)}}}catch{}return!1}var Zl=process.env.NODE_ENV==="development";var C=process.env.NREMOTE_WORKER_URL||"https://9remote.cc",ui=3e4,fi=500,jr=300,ye={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},Xe={intervalMs:2e3,timeoutMs:12e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},fe={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400};var Ne={maxLogLines:200,headerWidth:44},Ct={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},pi=5e3,di=2,mi=3e4,oe={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var rc=Ae.default.dirname((0,hi.fileURLToPath)(__importMetaUrl)),gi=3e3;var sr=2208,Kr=Ae.default.join(Lt.default.homedir(),".9remote","cloudflared.pid");function oc(){try{ni()}catch{}try{if((0,W.existsSync)(Kr)){let e=parseInt((0,W.readFileSync)(Kr,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,W.unlinkSync)(Kr)}catch{}}}catch{}try{process.platform==="win32"?(0,yn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${sr}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,yn.execSync)(`lsof -ti:${sr} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function yi(){return"2.5.5"}function wi(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function ic(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,W.existsSync)("/.dockerenv")?"Docker":null}function ar(){oc()}async function vi(){try{let e=yi();if(!e)return null;let n=await G(Ar,{signal:AbortSignal.timeout(gi)});if(!n.ok)return null;let{version:r}=await n.json();return r&&wi(e,r)?{current:e,latest:r}:null}catch{return null}}var ir=Ae.default.join(re.STATE,Ct.lockFile);function sc(){try{if((0,W.existsSync)(ir)){let{pid:e,ts:n}=JSON.parse((0,W.readFileSync)(ir,"utf8")),r=Date.now()-n<Ct.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,W.writeFileSync)(ir,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function ac(){try{let e=await G(Ar,{signal:AbortSignal.timeout(gi)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function cc(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function lc(){let e=Je(),n=Ae.default.sep;for(let r of[`${n}lib${n}node_modules${n}`,`${n}node_modules${n}`]){let o=e.indexOf(r);if(o>0)return`--prefix "${e.slice(0,o)}"`}return""}function uc(){let e=process.env.NREMOTE_NPM_CLI;return e&&(0,W.existsSync)(e)?process.platform==="win32"?`"${xe()}" "${e}"`:`env ELECTRON_RUN_AS_NODE=1 "${xe()}" "${e}"`:"npm"}function fc({currentVersion:e,latest:n,agentPid:r}){let o=ri(),t=cc(),i=xe(),s=si(),a=Je(),c=ir,l=`--prefer-online --no-audit --no-fund ${t} ${lc()}`.trim(),u=uc();if(process.platform==="win32"){let d=Ae.default.join(Lt.default.tmpdir(),`${ne}-restart.vbs`),h=`@echo off
|
|
75
75
|
setlocal EnableDelayedExpansion
|
|
76
76
|
set "NODE=${i}"
|
|
77
77
|
set "CLI=${a}"
|
|
@@ -90,16 +90,16 @@ for %%N in (cloudflared agent) do (
|
|
|
90
90
|
del /f /q "${o}\\%%N.pid" >nul 2>&1
|
|
91
91
|
)
|
|
92
92
|
)
|
|
93
|
-
for /f "tokens=5" %%a in ('netstat -aon ^| findstr :${
|
|
93
|
+
for /f "tokens=5" %%a in ('netstat -aon ^| findstr :${sr}') do taskkill /F /PID %%a >nul 2>&1
|
|
94
94
|
timeout /t 3 /nobreak >nul
|
|
95
95
|
|
|
96
96
|
set ATTEMPT=0
|
|
97
97
|
:installloop
|
|
98
98
|
set /a ATTEMPT+=1
|
|
99
|
-
call ${u} install -g ${
|
|
99
|
+
call ${u} install -g ${Le} ${l} >nul 2>&1
|
|
100
100
|
if !ERRORLEVEL! EQU 0 goto verify
|
|
101
|
-
if !ATTEMPT! GEQ ${
|
|
102
|
-
call ${u} install -g ${
|
|
101
|
+
if !ATTEMPT! GEQ ${Ct.maxRetry} (
|
|
102
|
+
call ${u} install -g ${Le} ${l} --omit=optional >nul 2>&1
|
|
103
103
|
goto verify
|
|
104
104
|
)
|
|
105
105
|
timeout /t 3 /nobreak >nul
|
|
@@ -124,8 +124,8 @@ del /f /q "${c}" >nul 2>&1
|
|
|
124
124
|
|
|
125
125
|
wscript "${d}"
|
|
126
126
|
exit /b 0
|
|
127
|
-
`,w=
|
|
128
|
-
`);let R=
|
|
127
|
+
`,w=Ae.default.join(Lt.default.tmpdir(),`${ne}-update.bat`);(0,W.writeFileSync)(w,h),(0,W.writeFileSync)(d,'CreateObject("WScript.Shell").Run """%NODE%"" ""%CLI%"" --tray --skip-update --start", 0, False'.replace("%NODE%",i).replace("%CLI%",a)+`
|
|
128
|
+
`);let R=Ae.default.join(Lt.default.tmpdir(),`${ne}-update.vbs`);return(0,W.writeFileSync)(R,`CreateObject("WScript.Shell").Run "cmd /c ""${w}""", 0, False
|
|
129
129
|
`),{shellCmd:["wscript.exe",[R]],windowsVerbatim:!1}}let f=`#!/bin/bash
|
|
130
130
|
# Wait for agent to exit so it releases the cli.cjs file lock
|
|
131
131
|
while kill -0 ${r} 2>/dev/null; do sleep 1; done
|
|
@@ -139,16 +139,16 @@ for name in cloudflared agent; do
|
|
|
139
139
|
rm -f "$f"
|
|
140
140
|
fi
|
|
141
141
|
done
|
|
142
|
-
lsof -ti:${
|
|
142
|
+
lsof -ti:${sr} | xargs kill -9 2>/dev/null || true
|
|
143
143
|
sleep 2
|
|
144
144
|
|
|
145
145
|
attempt=0
|
|
146
|
-
while [ $attempt -lt ${
|
|
146
|
+
while [ $attempt -lt ${Ct.maxRetry} ]; do
|
|
147
147
|
attempt=$((attempt+1))
|
|
148
148
|
echo "Installing (attempt $attempt)..."
|
|
149
|
-
if ${u} install -g ${
|
|
150
|
-
if [ $attempt -eq ${
|
|
151
|
-
${u} install -g ${
|
|
149
|
+
if ${u} install -g ${Le} ${l}; then break; fi
|
|
150
|
+
if [ $attempt -eq ${Ct.maxRetry} ]; then
|
|
151
|
+
${u} install -g ${Le} ${l} --omit=optional || true
|
|
152
152
|
fi
|
|
153
153
|
sleep 3
|
|
154
154
|
done
|
|
@@ -163,17 +163,17 @@ fi
|
|
|
163
163
|
|
|
164
164
|
rm -f "${c}"
|
|
165
165
|
${s}"${i}" "${a}" --tray --skip-update --start
|
|
166
|
-
`,p=
|
|
167
|
-
`)}function
|
|
166
|
+
`,p=Ae.default.join(Lt.default.tmpdir(),`${ne}-update.sh`);return(0,W.writeFileSync)(p,f,{mode:493}),{shellCmd:["sh",[p]],windowsVerbatim:!1}}async function Ei(){let e=yi();if(!e||ic())return!1;let n=await ac();if(!n||!wi(e,n)||!sc())return!1;let{shellCmd:r,windowsVerbatim:o}=fc({currentVersion:e,latest:n,agentPid:process.pid});return(0,yn.spawn)(r[0],r[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:o}).unref(),setTimeout(()=>process.exit(0),500),!0}var Ci=k(require("os"),1);var pr=k(require("readline"),1),Ti=k(require("http"),1);var Gr=require("child_process"),pc={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function cr(e){let n=pc[e];n&&process.platform==="darwin"&&(0,Gr.exec)(`open "${n}"`,()=>{})}function we({strategy:e,baseMs:n,maxMs:r},o){let t=Math.max(1,o),i=e==="exp"?n*Math.pow(2,t-1):n*t;return Math.min(i,r)}async function lr({config:e,task:n,label:r="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await n(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=we(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var E={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},Ri=()=>Math.min(44,process.stdout.columns||44);function Vr(e,n=null){let o=Ri()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return E.orange+"\u2551"+E.reset+a+" ".repeat(l)+E.orange+"\u2551"+E.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),u=Math.floor((o-l.length)/2),f=o-l.length-u;return E.orange+"\u2551"+E.reset+" ".repeat(u)+c(a)+" ".repeat(f)+E.orange+"\u2551"+E.reset},s=["",E.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+E.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>E.bold+E.orange+a+E.reset),i("Remote terminal access from anywhere",a=>E.dim+a+E.reset),t()];return n&&(s.push(i(`\u2B06 New version v${n} available!`,a=>E.yellow+E.bold+a+E.reset)),s.push(i(`Run: npm i -g ${Le}`,a=>E.dim+a+E.reset)),s.push(t())),s.push(E.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+E.reset),s.push(""),s.join(`
|
|
167
|
+
`)}function Mt(e,n=null){console.log(Vr(e,n))}var Si=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],Wr=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],dc=process.platform==="win32",mc=dc?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var bi=(e,n)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(n)};process.on("SIGINT",()=>bi("SIGINT",130));process.on("SIGTERM",()=>bi("SIGTERM",143));var Me=0,mt=null,ur=0,ke=-1,wn=null,Nt=null,fr=!1;function xi(){let e=[],n=ke===Wr.length-1;return Wr.forEach((r,o)=>{let t=o===ke&&wn?wn:r.desc;if(o<ke||n&&o===ke)e.push(` ${E.green}\u2713${E.reset} ${E.dim}${r.label}${E.reset}`),Nt&&o===Nt.afterIdx&&e.push(` ${E.green}\u2713${E.reset} ${E.cyan}${Nt.text}${E.reset}`);else if(o===ke){let i=Si[ur%Si.length];e.push(` ${E.orange}${i}${E.reset} ${E.bold}${r.label}${E.reset} ${E.dim}${t}${E.reset}`)}else e.push(` ${E.dim}\u25CB ${r.label}${E.reset}`)}),e}function Ai(){let e=xi();Me>0&&process.stdout.write(`\x1B[${Me}A\x1B[0J`),process.stdout.write(e.join(`
|
|
168
168
|
`)+`
|
|
169
|
-
`),
|
|
169
|
+
`),Me=e.length}function ki(){if(Me===0||ke<0)return;let e=xi();if(e.length!==Me){Ai();return}let n=ke+(Nt&&Nt.afterIdx<ke?1:0),r=Me-n;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[n]}\x1B[${r}B\r`)}function hc(){fr||(process.stdout.write("\x1B[?25l"),fr=!0)}function _i(){fr&&(process.stdout.write("\x1B[?25h"),fr=!1)}function Pi(e,n=!1,r=null){mt&&(clearInterval(mt),mt=null),ke=e,wn=r,ur=0,n||(Me=0),Ai(),e<Wr.length-1?(hc(),mt=setInterval(()=>{ur++,ki()},mc)):_i()}function Dt(e){wn=e,Me>0&&ki()}function Oi(){mt&&(clearInterval(mt),mt=null),_i(),Me=0,ke=-1,wn=null,Nt=null,ur=0}function _e(e,n,r=0,o="",t=null,i=null){return new Promise(s=>{let a=r,c=!0,l=!0,u=process.platform==="win32",f=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let w=typeof o=="function"?o():o;if(w)for(let R of w.split(`
|
|
170
170
|
`))process.stdout.write(R+`\x1B[K
|
|
171
171
|
`);e&&process.stdout.write(`${E.dim}${e}${E.reset}\x1B[K
|
|
172
172
|
\x1B[K
|
|
173
173
|
`),n.forEach((R,O)=>{let A=O===a?u?">":"\u2605":u?" ":"\u2606",T=O===a?` \x1B[7m${E.bold}${A} ${R.label}${E.reset}`:` ${A} ${R.label}`;process.stdout.write(T+`\x1B[K
|
|
174
|
-
`)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(w,R)=>{!c||!R||(R.name==="up"?(a=(a-1+n.length)%n.length,f()):R.name==="down"?(a=(a+1)%n.length,f()):R.name==="return"?(p(),s(a)):R.name==="escape"?(p(),s(-1)):R.ctrl&&R.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),
|
|
174
|
+
`)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(w,R)=>{!c||!R||(R.name==="up"?(a=(a-1+n.length)%n.length,f()):R.name==="down"?(a=(a+1)%n.length,f()):R.name==="return"?(p(),s(a)):R.name==="escape"?(p(),s(-1)):R.ctrl&&R.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),pr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),f(),t&&t(f,()=>{c&&(p(),s(-2))})})}function Yr(e){return new Promise(n=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),pr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
|
|
175
175
|
`),process.exit(0));let i=(t.name||"").toLowerCase()==="y";process.stdout.write((i?"y":"n")+`
|
|
176
|
-
`),n(i)};process.stdin.on("keypress",r)})}function
|
|
176
|
+
`),n(i)};process.stdin.on("keypress",r)})}function Ii(e,n){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",t=Ri(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${E.orange}${"\u2550".repeat(t)}${E.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
|
|
177
177
|
${s}
|
|
178
178
|
${E.orange}${E.bold} \u{1F514} New Device Connection${E.reset}
|
|
179
179
|
${s}
|
|
@@ -181,50 +181,50 @@ ${s}
|
|
|
181
181
|
IP: ${E.cyan}${n}${E.reset}
|
|
182
182
|
${s}
|
|
183
183
|
|
|
184
|
-
Allow this device? ${E.dim}(y/n)${E.reset} `),
|
|
184
|
+
Allow this device? ${E.dim}(y/n)${E.reset} `),pr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,u)=>{if(!u)return;let f=(u.name||"").toLowerCase(),p=f==="y"||u.name==="return",d=f==="n"||u.name==="escape",h=u.ctrl&&u.name==="c";if(!p&&!d&&!h)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}h&&process.exit(0);let w=p,R=w?`${E.green}y${E.reset}
|
|
185
185
|
|
|
186
186
|
${E.green}\u2713 Device approved${E.reset}
|
|
187
187
|
`:`${E.red}n${E.reset}
|
|
188
188
|
|
|
189
189
|
${E.red}\u2717 Device rejected${E.reset}
|
|
190
|
-
`;process.stdout.write(R),setTimeout(()=>{try{a()}catch{}r(w)},500)};process.stdin.on("keypress",c)})}function
|
|
191
|
-
`);u=p.pop();let d="";for(let h of p)if(h.startsWith("data: "))d=h.slice(6);else if(h===""&&d){try{let w=JSON.parse(d);Promise.resolve(n(w.type,w)).catch(()=>{})}catch{}d=""}}),l.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,
|
|
192
|
-
`).find(c=>c.includes(r));if(!t){
|
|
193
|
-
`,"utf8");let a=!1,c=()=>{if(!a){a=!0;try{H.default.rmSync(i,{recursive:!0,force:!0})}catch{}}},l=(0,
|
|
194
|
-
`).slice(-5).join(" | ");
|
|
195
|
-
`).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(n))
|
|
196
|
-
${n}`)),
|
|
197
|
-
`+r.trim())})})}async function
|
|
198
|
-
\u274C Failed to create one-time key \u2014 generate a new one from the menu`)),console.log(oe.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(oe.orange("\u2550".repeat(o)));return}let t=`${C}/login?k=${r.tempKey}`;await B(I.READY,{tunnelUrl:n,oneTimeKey:r.tempKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:t,workerUrl:C}),
|
|
190
|
+
`;process.stdout.write(R),setTimeout(()=>{try{a()}catch{}r(w)},500)};process.stdin.on("keypress",c)})}function $i(e,n){let r=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=async()=>{if(o)return;let c=await Ut();r=Ti.default.get(`http://${c}:${e}/api/ui/events`,l=>{let u="";s(),l.on("data",f=>{s(),u+=f.toString();let p=u.split(`
|
|
191
|
+
`);u=p.pop();let d="";for(let h of p)if(h.startsWith("data: "))d=h.slice(6);else if(h===""&&d){try{let w=JSON.parse(d);Promise.resolve(n(w.type,w)).catch(()=>{})}catch{}d=""}}),l.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,we(ae.sse,1))})}),r.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,we(ae.sse,1))})};return a(),()=>{o=!0,t&&clearTimeout(t),r?.destroy()}}var qr=!1;function Li(e){qr=e}var vn=null;async function Ut(){if(vn)return vn;let e=o=>fetch(`http://${o}:${_}/api/health`,{signal:AbortSignal.timeout(2e3)}).then(t=>t.ok?o:Promise.reject()),r=(await Promise.allSettled(["localhost","127.0.0.1"].map(e))).map((o,t)=>o.status==="fulfilled"?["localhost","127.0.0.1"][t]:null);return vn=r.find(o=>o==="localhost")||r.find(Boolean)||null,vn||"127.0.0.1"}function Ni(){vn=null}async function Z(e,n){let r=await Ut();try{return await fetch(`http://${r}:${_}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}catch{return Ni(),null}}async function V(e){let n=await Ut();try{let r=await fetch(`http://${n}:${_}${e}`);return r.ok?await r.json():null}catch{return Ni(),null}}async function U(e){await Z("/api/ui/state",e)}async function B(e,n={}){qr&&Pi(e-1,e>I.PREPARING),await U({step:e,stepDesc:"",...n})}function dr({phase:e,percent:n}){let r=e==="download"?`Downloading tunnel binary ${n??0}%`:"Extracting tunnel binary";qr&&Dt(r),U({stepDesc:r})}async function ie(){return!!await V("/api/health")}async function Qr(){let[e,n,r,o]=await Promise.all([V("/api/ui/state"),V("/api/device/auto-approve"),V("/api/autostart"),V("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!n?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function Mi(){let e=Ci.default.networkInterfaces();for(let n of Object.values(e))for(let r of n)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var Ln=require("child_process"),Nn=k(require("path"),1),ao=k(require("fs"),1),ms=require("url");var H=k(require("fs"),1),ze=k(require("path"),1),oo=k(require("https"),1),et=k(require("os"),1),Qi=k(require("net"),1),yt=require("child_process");var Di=k(require("dns"),1),Ui=require("child_process");var gc=2e3,yc=5e3,Fi=new Di.default.promises.Resolver;Fi.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function Ft(){process.platform==="win32"&&(0,Ui.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function Jr(e,n=gc){let r=Date.now();try{return{ok:!0,addrs:await Promise.race([Fi.resolve4(e),new Promise((t,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),n))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function Bt(e,{flushDns:n=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(n&&Ft(),o){let t=await Jr(o);if(!t.ok)return Ft(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-r}}try{let t=await G(`${e}/api/health`,{signal:AbortSignal.timeout(yc)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-r}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-r}}}var wc=j("tunnel"),En=null,Sn=null,Ht=null,ht=null,Ze=0,Xr=!1;async function Zr(e){try{let n=await Ut();await fetch(`http://${n}:${_}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}async function Bi(){if(!Sn||Xr)return;let e=await Bt(Sn),n=e.ok?"healthy":"unreachable";if(n===Ht){ht=null,Ze=0;return}if(n!==ht){ht=n,Ze=1;return}Ze++,!(Ze<di)&&(wc.info(`${Ht??"init"} \u2192 ${n}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),Ht=n,ht=null,Ze=0,await Zr({tunnelHealth:{status:n,checkedAt:Date.now()}}))}function Hi(e){if(!e)return Tn();e!==Sn&&(Sn=e,Ht=null,ht=null,Ze=0,Ft(),En||(En=setInterval(Bi,ko.checkIntervalMs)),Bi())}var ji=Hi,jt=Hi;function Ki(){Xr=!0}function Gi(){Xr=!1}function gt(e){Ht=e,ht=null,Ze=0,Zr({tunnelHealth:{status:e,checkedAt:Date.now()}})}function Tn(){En&&(clearInterval(En),En=null),Sn=null,Ht=null,ht=null,Ze=0,Zr({tunnelHealth:{status:"unknown",checkedAt:null}})}var Y=j("tunnel"),De={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443,edgeProbeIntervalMs:15e3,edgeProbeFailureThreshold:3,readyTimeoutMs:1500},vc=[20241,20242,20243,20244,20245],Wt=null;async function Ec(e,n){try{let o=await(await fetch(`http://localhost:${e}/ready`,{signal:AbortSignal.timeout(n)})).json();return typeof o?.readyConnections=="number"?o:null}catch{return null}}async function Wi(e,n){let r=await Ec(e,n);if(!r)return null;let o=await Tc(e,n);return o&&pe&&!pe.includes(o)?null:r.readyConnections}async function Sc(e){if(Wt!==null){let o=await Wi(Wt,e);if(o!==null)return o;Wt=null}let r=(await Promise.all(vc.map(async o=>({port:o,conns:await Wi(o,e)})))).find(o=>o.conns!==null);return r?(Wt=r.port,r.conns):null}async function Tc(e,n){try{return(await(await fetch(`http://localhost:${e}/quicktunnel`,{signal:AbortSignal.timeout(n)})).json())?.hostname||null}catch{return null}}var Rc=3e4,zr=0,xn=null,mr=null,Vt=null,_n=null,Yt=!1,Rn=0,ro=!1,pe=null,qt=0,eo=0,to=!1,Pn=0,Ue=0,Vi=3e4,bc=5e3,bn=ze.default.join(et.default.homedir(),".9remote","bin"),Yi="cloudflared",On=et.default.platform()==="win32",xc=On?`${Yi}.exe`:Yi,Kt=ze.default.join(bn,xc),no=ze.default.join(et.default.homedir(),".9remote","cloudflared.pid"),An=!1,Gt=null,Ac="2026.6.1",Ji=`https://github.com/cloudflare/cloudflared/releases/download/${Ac}`;function Xi(){return new Promise(e=>{let n=new Qi.default.Socket,r=!1,o=t=>{if(!r){r=!0;try{n.destroy()}catch{}e(t)}};n.setTimeout(De.internetCheckTimeoutMs),n.once("connect",()=>o(!0)),n.once("timeout",()=>o(!1)),n.once("error",()=>o(!1));try{n.connect(De.internetCheckPort,De.internetCheckHost)}catch{o(!1)}})}async function kc(){ro=!0;try{let e=0;for(;;){if(e++,await Xi())return;await new Promise(n=>setTimeout(n,we(ae.internet,e)))}}finally{ro=!1}}async function kn(e,n){if(!_n){Y.warn("No restartCallback registered \u2014 skip");return}if(!Yt&&!(Date.now()-eo<bc)){eo=Date.now(),Yt=!0;try{await kc();let r=we(ae.tunnelRestart,Rn+1);await new Promise(o=>setTimeout(o,r)),await _n(e),Rn=0,eo=0}catch(r){Rn++,Y.error(`restart failed (#${Rn}): ${r?.message||r}`),setImmediate(()=>{Yt=!1,kn(e,"retry after fail")});return}finally{Yt=!1}}}var _c={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function Pc(){let e=et.default.platform(),n=et.default.arch(),r=_c[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[n];if(!o)throw new Error(`Unsupported architecture: ${n} for platform ${e}`);return`${Ji}/${o}`}var Oc=150;async function Zi(e,n,r){return new Promise((o,t)=>{let i=H.default.createWriteStream(n);oo.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),H.default.unlinkSync(n),Zi(s.headers.location,n,r).then(o).catch(t);return}if(s.statusCode!==200){i.close(),H.default.unlinkSync(n),t(new Error(`Download failed with status ${s.statusCode}`));return}let a=parseInt(s.headers["content-length"]||"0",10),c=0,l=0,u=-1;s.on("data",f=>{if(c+=f.length,!r||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=Oc&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(n))}),i.on("error",f=>{i.close(),H.default.unlinkSync(n),t(f)})}).on("error",s=>{i.close(),H.default.existsSync(n)&&H.default.unlinkSync(n),t(s)})})}async function In(e){if(H.default.existsSync(bn)||H.default.mkdirSync(bn,{recursive:!0}),H.default.existsSync(Kt))return On||H.default.chmodSync(Kt,"755"),Kt;let n=Pc(),r=n.endsWith(".tgz"),o=r?ze.default.join(bn,"cloudflared.tgz"):Kt;try{return e?.({phase:"download",percent:0}),await Zi(n,o,t=>{e?.({phase:"download",percent:t})}),await Ic(n,o),r&&(e?.({phase:"extract"}),(0,yt.execSync)(`tar -xzf "${o}" -C "${bn}"`,{stdio:"pipe",windowsHide:!0}),H.default.unlinkSync(o)),On||H.default.chmodSync(Kt,"755"),Kt}catch(t){try{H.default.existsSync(o)&&H.default.unlinkSync(o)}catch{}throw console.error("Failed to download cloudflared:",t.message),t}}function zi(e){return new Promise((n,r)=>{oo.default.get(e,o=>{if([301,302].includes(o.statusCode))return zi(o.headers.location).then(n).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>n(t))}).on("error",r)})}async function Ic(e,n){let r=ze.default.basename(e),o;try{o=await zi(`${Ji}/sha256sum.txt`)}catch(c){Y.warn(`sha256 manifest unavailable (${c.message}), skipping verify`);return}let t=o.split(`
|
|
192
|
+
`).find(c=>c.includes(r));if(!t){Y.warn(`No sha256 entry for ${r}, skipping verify`);return}let i=t.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(H.default.readFileSync(n)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`)}function $c(e){let n=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(n))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Fe(e,n=null,r=null){let o=await In(),t=$t("cloudflared");t&&er(t)&&(Y.info(`killing stale cloudflared pid=${t}`),hr(t),be("cloudflared")),r&&(_n=r),Vt=e;let i=H.default.mkdtempSync(ze.default.join(et.default.tmpdir(),"9remote-quick-")),s=ze.default.join(i,"config.yml");H.default.writeFileSync(s,`# quick-tunnel
|
|
193
|
+
`,"utf8");let a=!1,c=()=>{if(!a){a=!0;try{H.default.rmSync(i,{recursive:!0,force:!0})}catch{}}},l=(0,yt.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",s,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Qe("cloudflared",l.pid),Gt=l.pid,An=!1,new Promise((u,f)=>{let p=!1,d=null,h="",w=setTimeout(()=>{if(!p){p=!0,c(),Gt===l.pid&&(Gt=null);try{l.kill("SIGKILL")}catch{}be("cloudflared"),f(new Error("Quick tunnel timed out after 90s"))}},9e4),R=O=>{let A=O.toString();h+=A,h.length>4096&&(h=h.slice(-4096));let T=$c(A);if(T){if(!p){p=!0,d=T,pe=T,qt=Date.now(),Ue=0,Pn=0,Wt=null,clearTimeout(w),c(),Nc(),Y.info(`tunnel ready: ${T}`),u({child:l,tunnelUrl:T});return}T!==d&&(Y.info(`URL rotated: ${T}`),d=T,pe=T,qt=Date.now(),Ue=0,Pn=0,n?.(T))}};l.stdout.on("data",R),l.stderr.on("data",R),l.on("error",O=>{p||(p=!0,clearTimeout(w),c(),f(O))}),l.on("exit",(O,A)=>{c();let T=Gt!==l.pid,g=An||T;if(Y.info(`cloudflared exited (intentional=${An} superseded=${T})`),g||gt("unreachable"),!p){p=!0,clearTimeout(w);let b=h.trim().split(`
|
|
194
|
+
`).slice(-5).join(" | ");Gt=null,f(new Error(`cloudflared exited (code=${O}, signal=${A}) output: ${b||"(empty)"}`));return}g||kn(e,`quick tunnel exit code ${O}`)})})}function hr(e){if(On)try{(0,yt.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function Cc(e){try{let n=[];if(On){let r=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;n=(0,yt.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else n=(0,yt.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
|
|
195
|
+
`).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(n))hr(r)}catch{}}function ve(){if(!to){to=!0;try{try{if(H.default.existsSync(no)){let n=parseInt(H.default.readFileSync(no,"utf8"));Number.isFinite(n)&&(An=!0,hr(n)),H.default.unlinkSync(no)}}catch{}let e=$t("cloudflared");An=!0,Gt=null,e&&(hr(e),be("cloudflared")),Cc(_)}finally{setTimeout(()=>{to=!1},2e3)}}}function es(){if(!pe)return!1;let e=$t("cloudflared");return!!e&&er(e)}function ts(){Rn=0,Yt=!1,_n=null,Vt=null,pe=null,Ue=0,Pn=0,Wt=null,Mc()}var Lc=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function qi(){let e=et.default.networkInterfaces(),n=[];for(let[r,o]of Object.entries(e))if(o&&!Lc.test(r))for(let t of o)!t.internal&&t.family==="IPv4"&&n.push(`${r}:${t.address}`);return n.sort().join("|")}function Nc(){xn||(mr=qi(),zr=Date.now(),xn=setInterval(async()=>{try{let e=Date.now(),n=e-zr;if(zr=e,ro||Yt||!_n||Vt==null)return;if(n>Rc){if(Y.info(`Sleep/wake detected (gap=${n}ms)`),pe){let s=!1;for(let a=0;a<3;a++){if((await Bt(pe)).ok){s=!0;break}a<2&&await new Promise(l=>setTimeout(l,3e3))}if(s)return;Y.info("tunnel unresponsive after sleep \u2192 restarting")}gt("unreachable"),ve(),kn(Vt,"woke from sleep");return}let r=qi(),o=r!==mr;mr=r;let t=$t("cloudflared"),i=!t||!er(t);if(!o&&!i){if(pe&&qt&&Date.now()-qt>Vi&&e-Pn>=De.edgeProbeIntervalMs){Pn=e;let s=await Bt(pe);if(s.ok)Ue=0;else if(++Ue>=De.edgeProbeFailureThreshold){let a=await Sc(De.readyTimeoutMs);if(a>0){Y.info(`edge probe failing but cloudflared holds ${a} connection(s) \u2014 not restarting`),Ue=0;return}Y.warn(`tunnel unreachable but cloudflared alive \u2014 edge lost after ${Ue} probes (ready=${a??"unknown"}), restarting`),Ue=0,gt("unreachable"),ve(),kn(Vt,"tunnel unreachable (edge lost)")}else Y.debug(`edge probe failed (${Ue}/${De.edgeProbeFailureThreshold}) \u2014 ${s.dnsCode??s.httpStatus??"no response"}`)}return}if(o&&!i&&qt&&Date.now()-qt<Vi||(o&&Y.info("Network change detected"),i&&Y.warn("cloudflared not alive \u2014 watchdog"),gt("unreachable"),await new Promise(s=>setTimeout(s,De.networkRestoreDelayMs)),!await Xi()))return;if(o&&!i&&pe){let s=!1;for(let a=0;a<2;a++){if((await Bt(pe)).ok){s=!0;break}a===0&&await new Promise(l=>setTimeout(l,2e3))}if(s){Y.info("Tunnel survived network change, skip restart");return}}o&&!i&&ve(),kn(Vt,o?"network change":"liveness watchdog")}catch(e){Y.error(`network monitor tick failed: ${e?.message||e}`)}},De.networkCheckIntervalMs))}function Mc(){xn&&(clearInterval(xn),xn=null),mr=null}Xt();var He=j("server"),hs=Nn.default.dirname((0,ms.fileURLToPath)(__importMetaUrl)),jc=Nn.default.resolve(hs,"./server.cjs"),ps=Nn.default.resolve(hs,"../../index.js");function wr(e){try{process.platform==="win32"?(0,Ln.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,Ln.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function tt(e,n,r){let o=null,t=!1,i=!1,s=!0,a=0,c=null,l=()=>{s&&(wr(_),s=!1);let u=process.env.NODE_ENV==="development"&&ao.default.existsSync(ps),f=u?ps:jc;ao.default.existsSync(f)||(He.error(`Server not found: ${f}`),process.exit(1));let p={...process.env,PORT:String(_)};u||delete p.NODE_ENV,o=(0,Ln.spawn)(To,[f],{cwd:Nn.default.dirname(f),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:Ro(p)}),c&&clearTimeout(c),c=setTimeout(()=>{a=0},ui),o.on("exit",(d,h)=>{if(c&&(clearTimeout(c),c=null),t)return;if(i){i=!1,He.info("Restarting server (requested)..."),setTimeout(()=>{l(),r?.()},500);return}He.error(`Server exited unexpectedly (code: ${d}, signal: ${h})`),a++;let w=we(ae.server,a);He.warn(`Restarting server in ${w}ms (fail#${a})`),n&&n(),setTimeout(()=>{l(),r?.()},w)}),o.on("error",d=>{He.error(`Server error: ${d.message}`)}),e?.(o)};return l(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}},restart:()=>{if(!o)return!1;i=!0;try{o.kill("SIGTERM")}catch{}return setTimeout(()=>{try{o&&i&&o.kill("SIGKILL")}catch{}},2e3),!0}}}function gs(e){return e?.restart?e.restart():!1}function wt({serverManager:e,tunnelProcess:n,exit:r=!0,code:o=0}={}){try{Tn()}catch{}try{e?.shutdown?.()}catch{}try{n?.kill?.()}catch{}try{ve()}catch{}try{$n()}catch{}try{wr(_)}catch{}try{ts()}catch{}try{Co()}catch{}try{be("agent")}catch{}try{be("cloudflared")}catch{}r&&setTimeout(()=>process.exit(o),fi)}var ds=!1;function nt(e,n){if(ds)return;ds=!0;let r=!1,o=t=>{r||(r=!0,He.info(`Stopping 9Remote (${t})...`),wt({serverManager:e,tunnelProcess:n}),He.info("Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:t})=>{t({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",t=>{He.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),jr)}),process.on("unhandledRejection",t=>{He.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),jr)})}Xt();var vt=j("tunnel");async function Kc(e,n,r,o){let t=0;for(;;){t++;try{return await Fe(e,n,r)}catch(i){let s=we(ae.tunnelSpawn,t);vt.warn(`spawn attempt ${t} failed: ${i?.message||i} \u2014 retry in ${s}ms`),o?.({attempt:t,delay:s}),await new Promise(a=>setTimeout(a,s))}}}function je({onUrlUpdate:e,setTunnel:n,onRetry:r}){return async o=>{try{let t=await Kc(o,e,null,r);Ke(),n(t.child),await e(t.tunnelUrl),vt.info(`Tunnel restarted: ${t.tunnelUrl}`)}catch(t){vt.error(`Tunnel restart failed: ${t?.message||t}`)}}}var vr=null;function Ke(){vr&&(vr.cancelled=!0,vr=null)}function Zt(e,{onUrlUpdate:n,onRestart:r,setActiveTunnel:o,onReady:t}){Ke();let i={cancelled:!1};return vr=i,lr({config:ae.tunnelRateLimit,task:async()=>{if(i.cancelled)return!0;if(es())return vt.info("bg-tunnel: a tunnel is already live \u2014 standing down"),!0;let s=await Fe(e,n,r);if(i.cancelled){try{ve()}catch{}return!0}try{o?.(s.child),await n?.(s.tunnelUrl),await t?.(s),vt.info(`bg tunnel up: ${s.tunnelUrl}`)}catch(a){vt.error(`bg tunnel post-spawn failed: ${a?.message||a}`)}return!0},label:"bg-tunnel",log:s=>vt.info(s),ctx:i}),i}async function rt(e,n={}){let r=n.intervalMs??Xe.intervalMs,o=n.timeoutMs??Xe.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await U({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>Xe.maxLogEntries?c.slice(-Xe.maxLogEntries):c;U({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,Ft(),i){let f=await Jr(i,Xe.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;Dt(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(h=>setTimeout(h,r));continue}}let u=Date.now();try{let f=await G(t,{signal:AbortSignal.timeout(Xe.fetchTimeoutMs)}),p=Date.now()-u;if(Dt(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await U({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,Xe.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",w=h?"connecting...":d;Dt(`#${a} \u2192 ${w}`),l({attempt:a,status:w,elapsedMs:p,ok:!1,waiting:h,time:Date.now()})}await new Promise(f=>setTimeout(f,r))}return await U({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var Mn=j("tunnel"),co=null,ys=null,ws=0;async function Et(e,n){if(Mn.debug(`updateTunnelUrl: key=${e?.slice(0,8)} url=${n}`),n&&n===ys&&Date.now()-ws<pi){Mn.debug("updateTunnelUrl: skipped (debounce, same URL)");return}co&&(co.cancelled=!0);let r={cancelled:!1};co=r;let o=Mi();lr({config:ae.urlSync,label:`urlSync ${n}`,log:t=>Mn.warn(t),ctx:r,task:async()=>{let t=await G(`${C}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,tunnelUrl:n,localIp:o?`${o}:${_}`:null})});if(r.cancelled)return!0;if(t.ok)return ys=n,ws=Date.now(),Mn.debug(`urlSync OK: pushed ${n} to server`),Gc(n),!0;let i=await t.text().catch(()=>"");return Mn.warn(`urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),n&&ji(n)}var Dn=null;async function Gc(e){if(Dn?.url===e)return;let n={url:e};Dn=n,Ki();try{let r=await rt(e,{timeoutMs:mi});if(Dn!==n)return;r&>("healthy")}catch{}finally{Dn===n&&(Dn=null),Gi()}}var ho=k(js(),1);var zc=j("session"),el=30;async function zt(e,n){try{let r=await G(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,expiryMinutes:el})});if(!r.ok){let o=await r.json().catch(()=>null);throw new Error(o?.error||`HTTP ${r.status}`)}return await r.json()}catch(r){return zc.error(`Temp key creation failed: ${r?.message||r}`),null}}var tl=j("session");function nl(e,n="\u{1F4F1} Scan QR to connect:"){console.log(oe.orange(`
|
|
196
|
+
${n}`)),ho.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function rl(e){return new Promise(n=>{ho.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{n(oe.orangeDim("\u{1F4F1} Scan QR to connect:")+`
|
|
197
|
+
`+r.trim())})})}async function Rr(e,n){let r=await zt(e,C),o=Math.min(Ne.headerWidth,process.stdout.columns||55);if(!r){tl.warn("Temp key creation failed \u2014 showing UI without a QR"),await B(I.READY,{tunnelUrl:n,permanentKey:e,workerUrl:C}),console.log(m.red(`
|
|
198
|
+
\u274C Failed to create one-time key \u2014 generate a new one from the menu`)),console.log(oe.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(oe.orange("\u2550".repeat(o)));return}let t=`${C}/login?k=${r.tempKey}`;await B(I.READY,{tunnelUrl:n,oneTimeKey:r.tempKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:t,workerUrl:C}),nl(t),console.log(m.gray(`
|
|
199
199
|
QR will expire in 30 minutes (one-time use)
|
|
200
|
-
`)),console.log(oe.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),console.log(m.white("One-Time Key".padEnd(14))+oe.orange.bold(r.tempKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(oe.orange("\u2550".repeat(o)))}async function
|
|
200
|
+
`)),console.log(oe.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),console.log(m.white("One-Time Key".padEnd(14))+oe.orange.bold(r.tempKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(oe.orange("\u2550".repeat(o)))}async function en(e,n,r,o=""){let t=Math.min(Ne.headerWidth,process.stdout.columns||Ne.headerWidth),i=[];return e&&r?(i.push(await rl(r)),i.push(m.gray(`
|
|
201
201
|
QR expires in 30 minutes (one-time use)
|
|
202
202
|
`))):i.push(m.gray(`
|
|
203
203
|
(One-time key used \u2014 generate a new one from menu)
|
|
204
|
-
`)),i.push(oe.orange("\u2550".repeat(t)),m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),
|
|
205
|
-
`)}var
|
|
206
|
-
\u{1F310} UI ready at ${i}`));let s=null;await U({permanentKey:e.key,step:I.STOPPED,theme:r}),
|
|
207
|
-
\u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+
|
|
204
|
+
`)),i.push(oe.orange("\u2550".repeat(t)),m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),xo.showTunnelUrlInMenu&&i.push(m.white("Tunnel".padEnd(14))+(o?m.cyan(o):m.gray("\u2014"))),i.push(m.white("One-Time Key".padEnd(14))+(e?oe.orange.bold(e)+m.dim(" (expires in 30m)"):m.gray("\u2014")),m.white("Key".padEnd(14))+m.dim(n),oe.orange("\u2550".repeat(t))),i.join(`
|
|
205
|
+
`)}var Ge=j("cmd");function st(e,n,r,o){let t=!1;setInterval(async()=>{if(t)return;let i=Lo();if(i){t=!0;try{if(i==="stop-tunnel")await Ks(e,n);else if(i==="restart-tunnel")await Ks(e,n),await Gs(e,n,r);else if(i==="start-tunnel"){if(await Gs(e,n,r)==="alreadyRunning"){t=!1;return}}else i==="regenerate-key"?await ol():i==="shutdown"?il(e,n):i==="update"?await Ei():i==="restart"&&gs(o?.())}catch(s){Ge.error(`cmd "${i}" failed: ${s?.message||s}`)}finally{t=!1}}},ye.cmdMs)}async function Ks(e,n){Ke(),Tn();let r=e();r&&(r.kill(),n(null),Ge.info("Tunnel stopped")),await B(I.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),yr({tunnelUrl:"",running:!0})}async function Gs(e,n,r){let o=e();if(o)if(o.killed||o.exitCode!=null)n(null);else{let t=await V("/api/ui/state");return await B(I.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}Ke(),Ge.info("Starting...");try{await B(I.PREPARING),await In(dr),await B(I.CONNECTING);let t=await G(`${C}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await B(I.TUNNELING);let i=async l=>{await Et(r,l),await U({tunnelUrl:l}),jt(l),yr({tunnelUrl:l,running:!0})},s=({attempt:l,delay:u})=>{U({tunnelRetry:{attempt:l,delay:u,at:Date.now()}})},a=null;try{a=await Fe(_,i,je({onUrlUpdate:i,setTunnel:l=>n(l),onRetry:s}))}catch(l){Ge.error(`Tunnel spawn failed: ${l?.message||l} \u2014 QR RTC-only, bg retry`)}U({tunnelRetry:null});let c="";a&&(n(a.child),c=a.tunnelUrl,await B(I.VERIFYING),await rt(c)||(Ge.warn("Tunnel health check timed out \u2014 bg reconnect"),c="",n(null),a=null)),await Rr(r,c),a||Zt(_,{onUrlUpdate:i,onRestart:je({onUrlUpdate:i,setTunnel:l=>n(l),onRetry:s}),setActiveTunnel:n,onReady:async l=>{await B(I.READY,{tunnelUrl:l.tunnelUrl})}})}catch(t){Ge.error(`Failed to start: ${t.message}`),await B(I.STOPPED)}}async function ol(){let e=await xt(),{key:n}=At(e),r=Vn();ut(e,n,r?.name||"Default"),await U({permanentKey:n}),Ge.info(`Key regenerated: ${Kn(n)}`)}function il(e,n){Ke(),Ge.info("Shutting down 9Remote completely...");let r=e();n(null),wt({tunnelProcess:r}),Ge.info("9Remote stopped")}async function Ws(){Qe("agent",process.pid),Mt(Te());let e=await qe(),n=process.argv.find(a=>a.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await ie(),t=o?{getProcess:()=>null,shutdown:()=>{}}:tt(null,null);o||await new Promise(a=>setTimeout(a,fe.serverBootMs));let i=`http://localhost:${_}`;console.log(m.green(`
|
|
206
|
+
\u{1F310} UI ready at ${i}`));let s=null;await U({permanentKey:e.key,step:I.STOPPED,theme:r}),nt(t,null),st(()=>s,a=>{s=a},e.key,()=>t),process.argv.includes("--start")&&kt("start-tunnel"),await new Promise(()=>{})}Xt();async function Vs(){Qe("agent",process.pid),li().catch(()=>{});let e=await qe(),n=process.argv.find(l=>l.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await ie(),t=o?{getProcess:()=>null,shutdown:()=>{}}:tt(null,null);o||await new Promise(l=>setTimeout(l,fe.serverBootMs));let i=`http://localhost:${_}`,s=null;await U({permanentKey:e.key,step:I.STOPPED,theme:r});let a=()=>{let l=s;s=null,wt({serverManager:t,tunnelProcess:l,exit:!1})};nt(t,null),st(()=>s,l=>{s=l},e.key,()=>t);try{be("cloudflared")}catch{}process.argv.includes("--start")&&kt("start-tunnel"),await io({port:_,onQuit:a,onOpenUI:()=>Cn(i)})&&so({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var at=j("mode");async function sl(e){at.info("Starting server..."),await B(I.PREPARING);try{ve(),await new Promise(a=>setTimeout(a,fe.killCloudflaredMs))}catch{}try{let a=await G(`${C}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!a.ok)return at.error(`Session create failed: ${a.status}`),null}catch(a){return at.error(`Session create failed: ${a.message}`),null}let n=await ie(),r=n?{getProcess:()=>null,shutdown:()=>{}}:tt(null,null);n||await new Promise(a=>setTimeout(a,fe.serverBootMs)),at.info("Starting tunnel..."),await B(I.CONNECTING);let o={current:null},t="",i=async a=>{at.info(`Tunnel URL rotated: ${a}`),await Et(e,a),U({tunnelUrl:a}),jt(a)},s=null;try{s=await Fe(_,i,je({onUrlUpdate:i,setTunnel:a=>{o.current=a}}))}catch(a){at.error(`Tunnel spawn failed: ${a.message} \u2014 RTC-only, bg retry`)}return s&&(o.current=s.child,t=s.tunnelUrl,await rt(t)||(at.warn("Tunnel health check timed out \u2014 bg reconnect"),o.current=null,t="",s=null)),s||Zt(_,{onUrlUpdate:i,onRestart:je({onUrlUpdate:i,setTunnel:a=>{o.current=a}}),setActiveTunnel:a=>{o.current=a},onReady:async a=>{await B(I.READY,{tunnelUrl:a.tunnelUrl})}}),t&&await Et(e,t),fn({apiKey:e,tunnelUrl:t,serverPid:r.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:r,tunnelRef:o,tunnelUrl:t}}async function Ys(){Mt(Te());let e=await qe();at.info(`Using key: ${Kn(e.key)} (${e.name})`);let n=await sl(e.key);n||process.exit(1);let{serverManager:r,tunnelRef:o,tunnelUrl:t}=n;await Rr(e.key,t),nt(r,o.current),st(()=>o.current,s=>{o.current=s},e.key);let i=Date.now();setInterval(()=>{let s=Math.floor((Date.now()-i)/1e3),a=Math.floor(s/3600),c=Math.floor(s%3600/60),l=s%60;U({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},ye.statsMs),await new Promise(()=>{})}var qs=k(require("path"),1),Qs=k(require("fs"),1);Xt();async function Js(){let e=`http://localhost:${_}`;await ie()&&(wr(_),await new Promise(c=>setTimeout(c,500)));let n=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&n.push(r);let o=dn;try{Qs.default.mkdirSync(qs.default.dirname(o),{recursive:!0})}catch{}let t=null;try{t=ai(n),t&&Qe("agent",t)}catch(c){console.log(m.red(`
|
|
207
|
+
\u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+ye.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await ie()){s=!0;break}await new Promise(c=>setTimeout(c,ye.bgServerReadyIntervalMs))}s||(console.log(m.red(`
|
|
208
208
|
\u274C Background server failed to start.`)),console.log(m.gray(` Check log: ${o}
|
|
209
|
-
`)),process.exit(1)),
|
|
209
|
+
`)),process.exit(1)),kt("start-tunnel"),Cn(e);let a=t?` (PID: ${t})`:"";console.log(m.green(`
|
|
210
210
|
\u{1F310} 9Remote running at ${e}${a}`)),console.log(m.gray(`\u{1F4A1} Log: ${o}
|
|
211
|
-
`)),await new Promise(c=>setTimeout(c,fe.bgSpawnFlushMs)),process.exit(0)}var
|
|
211
|
+
`)),await new Promise(c=>setTimeout(c,fe.bgSpawnFlushMs)),process.exit(0)}var Xs=k(require("readline"),1);var go=j("mode"),tn=null;async function Zs(){console.clear(),Oi(),Li(!0),await B(I.PREPARING);let e=await qe(),n=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await ie()){r=tt(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{Xs.default.emitKeypressEvents(process.stdin)}catch{}n?.()});let g=Date.now()+ye.serverReadyTimeoutMs;for(;Date.now()<g&&!await ie();)await new Promise(b=>setTimeout(b,ye.serverReadyIntervalMs))}try{ve(),await new Promise(g=>setTimeout(g,fe.killCloudflaredTuiMs))}catch{}await In(dr),await B(I.CONNECTING);try{let g=await G(`${C}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e.key})});if(!g.ok)throw new Error(`Session create failed: ${g.status}`)}catch(g){go.error(`Failed to connect: ${g.message}`),process.exit(1)}await B(I.TUNNELING);let t=await zt(e.key,C),i=t?`${C}/login?k=${t.tempKey}`:`${C}/login`,s=t?.tempKey||"",a=i,c="",l=null,u={current:null},f=async g=>{c=g,await Et(e.key,g),await U({tunnelUrl:g}),jt(g),l!==null&&(l=await en(s,e.key,a,c),n?.())},p=null;try{p=await Fe(_,f,je({onUrlUpdate:f,setTunnel:g=>{u.current=g}}))}catch(g){go.error(`Tunnel spawn failed: ${g?.message||g} \u2014 QR RTC-only, bg retry`)}p&&(u.current=p.child,c=p.tunnelUrl,fn({apiKey:e.key,tunnelUrl:p.tunnelUrl,tunnelPid:p.child?.pid}),await B(I.VERIFYING),await rt(p.tunnelUrl)?await f(p.tunnelUrl):(go.warn("Tunnel health check timed out \u2014 bg reconnect"),u.current=null,c="",p=null)),p||Zt(_,{onUrlUpdate:f,onRestart:je({onUrlUpdate:f,setTunnel:g=>{u.current=g}}),setActiveTunnel:g=>{u.current=g},onReady:async g=>{fn({apiKey:e.key,tunnelUrl:g.tunnelUrl,tunnelPid:g.child?.pid}),await B(I.READY,{tunnelUrl:g.tunnelUrl})}}),await B(I.READY,{tunnelUrl:c,oneTimeKey:t?.tempKey||"",oneTimeKeyExpiresAt:t?.expiresAt||null,permanentKey:e.key,qrUrl:i,workerUrl:C}),await new Promise(g=>setTimeout(g,fe.trayReadyMs)),l=await en(s,e.key,a,c);let d=[],h=!1,w=()=>{h||n?.()},R=async(g,b,S)=>{if(!h){h=!0;try{let P=await Ii(b,S);await Z(`/api/device/${P?"approve":"reject"}`,{socketId:g})}catch{}finally{h=!1,n?.()}}},O=$i(_,async(g,b)=>{if(g==="log"&&b.message)d.push(b.message),d.length>Ne.maxLogLines&&d.shift();else if(g==="state"){let S=b.permanentKey||e.key,P=b.oneTimeKey!==void 0?b.oneTimeKey:s,$=b.qrUrl!==void 0?b.qrUrl:a,F=b.tunnelUrl!==void 0?b.tunnelUrl:c;(P!==s||S!==e.key||F!==c)&&(s=P,a=$,c=F,b.permanentKey&&(e={...e,key:b.permanentKey}),l=await en(s,e.key,a,c),w())}else g==="permissions"?(h||Promise.resolve(tn?.()).catch(()=>{}),w()):g==="autostart"||g==="sleepInhibit"?(h||Promise.resolve(tn?.()).catch(()=>{}),w()):g==="deviceApproval"&&b.action==="pending"&&await R(b.socketId,b.deviceId,b.ip)}),A=setInterval(async()=>{if(!h)try{let b=(await V("/api/device/pending"))?.pending?.[0];b&&await R(b.socketId,b.deviceId,b.ip)}catch{}},ye.pendingApprovalMs);nt({getProcess:r.getProcess,shutdown:()=>{Ke(),r.shutdown();try{u.current?.kill()}catch{}O(),clearInterval(A)}}),st(()=>u.current,g=>{u.current=g},e.key,()=>r),await al(e,c,()=>l,g=>{l=g},g=>{n=g},()=>{Ke();try{O()}catch{}try{clearInterval(A)}catch{}wt({serverManager:r,tunnelProcess:u.current,exit:!1})},d)}async function al(e,n,r,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await Qr(),u=[{label:"Open Web UI",action:"webui"},{label:"Keys \u25B6",action:"keys"}];c&&u.push({label:`Remote Desktop: ${a?m.green("ON"):m.gray("OFF")} \u25B6`,action:"desktop"}),u.push({label:`Manage Devices \u25B6 ${m.dim("(Auto-approve:")} ${l?m.green("ON"):m.gray("OFF")}${m.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:m.gray("Exit"),action:"exit"});let f=null;t(()=>f?.());let p=await _e("",u,0,r,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${_}`,{openBrowser:w}=await Promise.resolve().then(()=>(Xt(),fs));w(h),console.log(m.green(`
|
|
212
212
|
\u{1F310} Opening ${h}
|
|
213
|
-
`))}else if(d==="keys")await
|
|
213
|
+
`))}else if(d==="keys")await cl(e,n,o,r);else if(d==="desktop")await fl();else if(d==="devices")await pl();else if(d==="settings")await ul();else if(d==="logs")await dl();else{try{i?.()}catch{}console.log(m.gray(`
|
|
214
214
|
Goodbye!
|
|
215
|
-
`)),process.exit(0)}}}async function
|
|
215
|
+
`)),process.exit(0)}}}async function cl(e,n,r,o){let t=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:m.gray("\u2190 Back"),action:"back"}],i=await _e("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await zt(e.key,C);if(a){let c=`${C}/login?k=${a.tempKey}`;r(await en(a.tempKey,e.key,c,n)),await U({oneTimeKey:a.tempKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await Yr(m.yellow("Replace current key and disconnect all sessions? Continue?"))){let c=await xt(),{key:l}=At(c),u=ut(c,l,e.name||"Default");Object.assign(e,u),await U({permanentKey:e.key});let f=await zt(e.key,C);if(f){let p=`${C}/login?k=${f.tempKey}`;r(await en(f.tempKey,e.key,p,n)),await U({oneTimeKey:f.tempKey,oneTimeKeyExpiresAt:f.expiresAt,qrUrl:p})}}}var zs={"30m":"Off after 30 min idle","1h":"Off after 1 hour idle","2h":"Off after 2 hours idle","4h":"Off after 4 hours idle","24h":"Off after 24 hours idle",never:"Never off"};async function ll(e,n){let r=n.map(s=>({label:zs[s]||s,action:s}));r.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,n.indexOf(e)),t=await _e("Prevent sleep",r,o),i=t>=0?r[t].action:"back";i!=="back"&&await Z("/api/sleep-inhibit",{mode:i})}async function ul(){for(;;){let e=!1,n="never",r=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${m.green(zs[n]||n)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await Qr();e=!!l.autoStart,n=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),tn=s;let a=await _e("Settings",t,0,"",l=>{i=l});tn=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await Z("/api/autostart",{enabled:!e});else if(c==="sleep")await ll(n,r);else return}}async function fl(){for(;;){let e=!1,n={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${n.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${n.accessibility?m.green("\u2713"):m.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:m.gray("\u2190 Back")}],t=null,i=async()=>{let a=await V("/api/ui/state")||{};e=!!a.desktopEnabled,n={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),tn=i;let s=await _e("Remote Desktop",o,0,"",a=>{t=a});if(tn=null,s===0)await Z("/api/desktop/toggle",{enabled:!e});else if(s===1&&!n.screenRecording)await Z("/api/permissions/request",{type:"screenRecording"})||cr("screenRecording");else if(s===2&&!n.accessibility)await Z("/api/permissions/request",{type:"accessibility"})||cr("accessibility");else if(s===3||s===-1)return}}async function pl(){for(;;){let[e,n]=await Promise.all([V("/api/device/approved"),V("/api/device/auto-approve")]),r=e?.devices||[],o=!!n?.enabled,t=[{label:`Auto-approve new devices: ${o?m.green("ON"):m.gray("OFF")}`,action:"toggle"},...r.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${m.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:m.gray("\u2190 Back"),action:"back"}],i=await _e(`Approved Devices (${r.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await Z("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await Yr(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await Z("/api/device/remove",{deviceId:s.deviceId})}}async function dl(){let e=jo(bo),n=e.length?e.join(`
|
|
216
216
|
`):m.gray(" No logs yet"),r=`
|
|
217
|
-
${m.dim("Log file:")} ${m.cyan(
|
|
218
|
-
${m.dim(`Tail: tail -f ${
|
|
217
|
+
${m.dim("Log file:")} ${m.cyan(dn)}
|
|
218
|
+
${m.dim(`Tail: tail -f ${dn}`)}`;await _e("Logs",[{label:m.gray("\u2190 Back")}],0,n+r)}async function ea(){let e=Te(),n=await vi(),r=Vr(e,n?.latest??null),o=[];n?.latest&&o.push({label:m.yellow(`Update to v${n.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:m.gray("Exit"),action:"exit"});let t=await _e("",o,0,r),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(Ne.headerWidth,process.stdout.columns||Ne.headerWidth);ar(),console.log(oe.orange(`
|
|
219
219
|
`+"\u2550".repeat(s))),console.log(m.gray(` \u2713 Stopped running instances
|
|
220
220
|
`)),console.log(m.yellow(` \u2B06 Run this command to update:
|
|
221
|
-
`)),console.log(m.white.bold(` npm i -g ${
|
|
221
|
+
`)),console.log(m.white.bold(` npm i -g ${Le}
|
|
222
222
|
`)),console.log(oe.orange("\u2550".repeat(s))+`
|
|
223
|
-
`),process.exit(0)}else i==="ui"?await
|
|
223
|
+
`),process.exit(0)}else i==="ui"?await Js():i==="tui"?await Zs():process.exit(0)}var ta=[["9remote","Interactive menu (TUI). Falls back to help with no TTY."],["9remote start","Run server + tunnel in foreground (headless)."],["9remote key","Show permanent key + connect URL."],["9remote key --new","Regenerate the permanent key."],["9remote otk","Create a fresh one-time connect key + URL."],["9remote devices","List approved devices."],["9remote auto-approve <on|off>","Toggle device auto-approve."],["9remote approve <socketId>","Approve a pending device."],["9remote help","Show this help."]];function yo(){Mt(Te()),console.log(m.white.bold(`
|
|
224
224
|
Usage:
|
|
225
|
-
`));let e=Math.max(...
|
|
225
|
+
`));let e=Math.max(...ta.map(([n])=>n.length))+2;for(let[n,r]of ta)console.log(" "+m.cyan(n.padEnd(e))+m.gray(r));console.log()}async function Un(){return await ie()?!0:(console.log(m.red(`
|
|
226
226
|
\u2717 Server not running. Start it first: `)+m.cyan("9remote start")+`
|
|
227
|
-
`),!1)}async function
|
|
227
|
+
`),!1)}async function ml(e){if(!await Un())return;if(e){let r=await Z("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(m.red(`
|
|
228
228
|
\u2717 Regenerate failed
|
|
229
229
|
`));return}console.log(m.green(`
|
|
230
230
|
\u2713 New key: `)+m.white.bold(o.permanentKey)+`
|
|
@@ -232,24 +232,24 @@ Usage:
|
|
|
232
232
|
\u2717 No key yet. Run: `)+m.cyan("9remote start")+`
|
|
233
233
|
`);return}console.log(m.white(`
|
|
234
234
|
Key`.padEnd(14))+m.white.bold(n.permanentKey)),n.qrUrl&&console.log(m.white("Connect URL".padEnd(14))+m.cyan(n.qrUrl)),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)+`
|
|
235
|
-
`)}async function
|
|
235
|
+
`)}async function hl(){if(!await Un())return;let e=await Z("/api/key/one-time"),n=e&&e.ok?await e.json():null;if(!n?.qrUrl){console.log(m.red(`
|
|
236
236
|
\u2717 Failed to create one-time key
|
|
237
237
|
`));return}console.log(m.green(`
|
|
238
238
|
\u2713 One-time key (30 min): `)+m.white.bold(n.oneTimeKey)),console.log(m.white("Connect URL ")+m.cyan(n.qrUrl)+`
|
|
239
|
-
`)}async function
|
|
239
|
+
`)}async function gl(){if(!await Un())return;let n=(await V("/api/device/approved")||{}).devices||[],r=await V("/api/device/auto-approve")||{};if(console.log(m.white(`
|
|
240
240
|
Auto-approve: `)+(r.enabled?m.green("ON"):m.gray("OFF"))),!n.length){console.log(m.gray(`No approved devices
|
|
241
|
-
`));return}console.log(m.white(`Approved devices (${n.length}):`));for(let o of n)console.log(" "+m.cyan(o.deviceId));console.log()}async function
|
|
241
|
+
`));return}console.log(m.white(`Approved devices (${n.length}):`));for(let o of n)console.log(" "+m.cyan(o.deviceId));console.log()}async function yl(e){if(!await Un())return;let n=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
|
|
242
242
|
\u2717 Usage: 9remote auto-approve <on|off>
|
|
243
|
-
`));return}let r=await
|
|
243
|
+
`));return}let r=await Z("/api/device/auto-approve",{enabled:n}),o=r&&r.ok?await r.json():null;console.log(m.green(`
|
|
244
244
|
\u2713 Auto-approve: `)+(o?.enabled?m.green("ON"):m.gray("OFF"))+`
|
|
245
|
-
`)}async function
|
|
245
|
+
`)}async function wl(e){if(!await Un())return;if(!e){let t=(await V("/api/device/pending")||{}).pending||[];if(!t.length){console.log(m.gray(`
|
|
246
246
|
No pending devices
|
|
247
247
|
`));return}console.log(m.white(`
|
|
248
248
|
Pending devices (${t.length}):`));for(let i of t)console.log(" "+m.cyan(i.socketId)+m.gray(` ${i.deviceId?.slice(0,8)||""} ${i.ip||""}`));console.log(m.gray(`
|
|
249
249
|
Approve with: `)+m.cyan("9remote approve <socketId>")+`
|
|
250
|
-
`);return}let n=await
|
|
250
|
+
`);return}let n=await Z("/api/device/approve",{socketId:e}),r=n&&n.ok?await n.json():null;console.log(r?.ok?m.green(`
|
|
251
251
|
\u2713 Approved
|
|
252
252
|
`):m.red(`
|
|
253
253
|
\u2717 Approve failed (invalid socketId?)
|
|
254
|
-
`))}async function
|
|
255
|
-
`),process.exit(0));
|
|
254
|
+
`))}async function na(e){let n=e[2],r=e.slice(3);switch(n){case"help":case"-h":case"--help":return yo(),!0;case"key":return await ml(r.includes("--new")),!0;case"otk":return await hl(),!0;case"devices":return await gl(),!0;case"auto-approve":return await yl(r[0]),!0;case"approve":return await wl(r[0]),!0;default:return!1}}var wo=process.argv[2];(wo==="version"||wo==="--version"||wo==="-v")&&(process.stdout.write(Te()+`
|
|
255
|
+
`),process.exit(0));Ho();async function vl(){let e=process.argv[2];if(await na(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||ar(),e==="ui"?await Ws():e==="start"||process.argv.includes("--auto")?await Ys():process.argv.includes("--tray")||process.argv.includes("--start")?await Vs():process.stdin.isTTY?await ea():yo()}vl().catch(console.error);
|