From e1539e76b4a969a46f02152eee09711d3c7476a4 Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Mon, 15 Feb 2021 22:47:42 -0800 Subject: [PATCH] Tweak register script to use less permissions --- bin/git-peek | 2 +- bin/registerProtocol.js | 30 +++++++++++++++--------------- bin/registerProtocol.js.map | 4 ++-- src/registerProtocol.mac.ts | 37 +++++++++++++++++++------------------ 4 files changed, 37 insertions(+), 36 deletions(-) diff --git a/bin/git-peek b/bin/git-peek index 00e775b..dbb5b7f 100755 --- a/bin/git-peek +++ b/bin/git-peek @@ -31,7 +31,7 @@ See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof be))r `).join(` `+s),t.push(n+"m+"+ge.humanize(this.diff)+"")}else t[0]=kP()+e+" "+t[0]}function kP(){return ge.inspectOpts.hideDate?"":new Date().toISOString()+" "}function IP(){return process.stderr.write(Oa.format.apply(Oa,arguments)+` `)}function DP(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function pS(){return process.env.DEBUG}function NP(t){t.inspectOpts={};for(var e=Object.keys(ge.inspectOpts),r=0;r{typeof process=="undefined"||process.type==="renderer"?Df.exports=oS():Df.exports=dS()});var gS=d((l6,mS)=>{function St(t,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||Infinity,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}mS.exports=St;St.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};St.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};St.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(t);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var i=this,n=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},r);return this._options.unref&&n.unref(),!0};St.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};St.prototype.try=function(t){console.log("Using RetryOperation.try() is deprecated"),this.attempt(t)};St.prototype.start=function(t){console.log("Using RetryOperation.start() is deprecated"),this.attempt(t)};St.prototype.start=St.prototype.try;St.prototype.errors=function(){return this._errors};St.prototype.attempts=function(){return this._attempts};St.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,r=0,i=0;i=r&&(e=n,r=o)}return e}});var yS=d(fi=>{var qP=gS();fi.operation=function(t){var e=fi.timeouts(t);return new qP(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};fi.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:Infinity,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],n=0;n{vS.exports=yS()});var ES=d((p6,bS)=>{var jP=kf();function $P(t,e){function r(i,n){var s=e||{};"randomize"in s||(s.randomize=!0);var o=jP.operation(s);function a(l){n(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):n(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(h){u(h,l);return}Promise.resolve(f).then(i).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}bS.exports=$P});var OS=d((qf,wS)=>{var MP=ES(),SS=Ff()("fetch-retry"),BP=10,UP=5,GP=20,zP=6;wS.exports=qf=HP;function WP(t){return t?t.code==="ERR_UNESCAPED_CHARACTERS"||t.message==="Request path contains unescaped characters":!1}function HP(t){t||(t=ys());async function e(r,i={}){let n=Object.assign({minTimeout:BP,retries:UP,factor:zP,maxRetryAfter:GP},i.retry);i.onRetry&&(n.onRetry=s=>{i.onRetry(s,i),i.retry&&i.retry.onRetry&&i.retry.onRetry(s)});try{return await MP(async(s,o)=>{let{method:a="GET"}=i;try{let u=await t(r,i);if(SS("status %d",u.status),u.status>=500&&u.status<600||u.status===429){let c=parseInt(u.headers.get("retry-after"),10);if(c){if(c>n.maxRetryAfter)return u;await new Promise(l=>setTimeout(l,c*1e3))}throw new hn(u)}else return u}catch(u){let c=WP(u),l=!c&&o<=n.retries;if(SS(`${a} ${r} error (status = ${u.status}). ${l?"retrying":""}`,u),c)return s(u);throw u}},n)}catch(s){if(s instanceof hn)return s.res;throw s}}for(let r of Object.keys(t))e[r]=t[r];return e.default=e,e}var hn=class extends Error{constructor(e){super(e.statusText);Error.captureStackTrace&&Error.captureStackTrace(this,hn),this.name=this.constructor.name,this.res=e,this.code=this.status=this.statusCode=e.status,this.url=e.url}};qf.ResponseError=hn});var _S=d((d6,RS)=>{"use strict";RS.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var AS=d((m6,CS)=>{"use strict";CS.exports=K;K.Node=hi;K.create=K;function K(t){var e=this;if(e instanceof K||(e=new K),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};K.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};K.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};K.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};K.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new K;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};K.prototype.splice=function(t,e){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var r=0,i=this.head;i!==null&&r{"use strict";var KP=AS(),pi=Symbol("max"),or=Symbol("length"),pn=Symbol("lengthCalculator"),Ss=Symbol("allowStale"),di=Symbol("maxAge"),ar=Symbol("dispose"),LS=Symbol("noDisposeOnSet"),Ae=Symbol("lruList"),At=Symbol("cache"),xS=Symbol("updateAgeOnGet"),jf=()=>1,NS=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[pi]=e.max||Infinity,i=e.length||jf;if(this[pn]=typeof i!="function"?jf:i,this[Ss]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[di]=e.maxAge||0,this[ar]=e.dispose,this[LS]=e.noDisposeOnSet||!1,this[xS]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[pi]=e||Infinity,Os(this)}get max(){return this[pi]}set allowStale(e){this[Ss]=!!e}get allowStale(){return this[Ss]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[di]=e,Os(this)}get maxAge(){return this[di]}set lengthCalculator(e){typeof e!="function"&&(e=jf),e!==this[pn]&&(this[pn]=e,this[or]=0,this[Ae].forEach(r=>{r.length=this[pn](r.value,r.key),this[or]+=r.length})),Os(this)}get lengthCalculator(){return this[pn]}get length(){return this[or]}get itemCount(){return this[Ae].length}rforEach(e,r){r=r||this;for(let i=this[Ae].tail;i!==null;){let n=i.prev;PS(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[Ae].head;i!==null;){let n=i.next;PS(this,e,i,r),i=n}}keys(){return this[Ae].toArray().map(e=>e.key)}values(){return this[Ae].toArray().map(e=>e.value)}reset(){this[ar]&&this[Ae]&&this[Ae].length&&this[Ae].forEach(e=>this[ar](e.key,e.value)),this[At]=new Map,this[Ae]=new KP,this[or]=0}dump(){return this[Ae].map(e=>Ra(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ae]}set(e,r,i){if(i=i||this[di],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[pn](r,e);if(this[At].has(e)){if(s>this[pi])return dn(this,this[At].get(e)),!1;let u=this[At].get(e).value;return this[ar]&&(this[LS]||this[ar](e,u.value)),u.now=n,u.maxAge=i,u.value=r,this[or]+=s-u.length,u.length=s,this.get(e),Os(this),!0}let o=new IS(e,r,s,n,i);return o.length>this[pi]?(this[ar]&&this[ar](e,r),!1):(this[or]+=o.length,this[Ae].unshift(o),this[At].set(e,this[Ae].head),Os(this),!0)}has(e){if(!this[At].has(e))return!1;let r=this[At].get(e).value;return!Ra(this,r)}get(e){return $f(this,e,!0)}peek(e){return $f(this,e,!1)}pop(){let e=this[Ae].tail;return e?(dn(this,e),e.value):null}del(e){dn(this,this[At].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[At].forEach((e,r)=>$f(this,r,!1))}},$f=(t,e,r)=>{let i=t[At].get(e);if(i){let n=i.value;if(Ra(t,n)){if(dn(t,i),!t[Ss])return}else r&&(t[xS]&&(i.value.now=Date.now()),t[Ae].unshiftNode(i));return n.value}},Ra=(t,e)=>{if(!e||!e.maxAge&&!t[di])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[di]&&r>t[di]},Os=t=>{if(t[or]>t[pi])for(let e=t[Ae].tail;t[or]>t[pi]&&e!==null;){let r=e.prev;dn(t,e),e=r}},dn=(t,e)=>{if(e){let r=e.value;t[ar]&&t[ar](r.key,r.value),t[or]-=r.length,t[At].delete(r.key),t[Ae].removeNode(e)}},IS=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},PS=(t,e,r,i)=>{let n=r.value;Ra(t,n)&&(dn(t,r),t[Ss]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};TS.exports=NS});var kS=d((y6,FS)=>{var ZP=kf();function JP(t,e){function r(i,n){var s=e||{},o=ZP.operation(s);function a(l){n(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):n(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(h){u(h,l);return}Promise.resolve(f).then(i).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}FS.exports=JP});var qS=d(Mf=>{"use strict";Object.defineProperty(Mf,"__esModule",{value:!0});function QP(t,e){return new Promise((r,i)=>{e.resolve4(t,{ttl:!0},(n,s)=>{if(n)return i(n);r(s)})})}Mf.default=QP});var jS=d(Bf=>{"use strict";Object.defineProperty(Bf,"__esModule",{value:!0});function eD(t,e){return new Promise((r,i)=>{e.resolve6(t,{ttl:!0},(n,s)=>{if(n)return i(n);r(s)})})}Bf.default=eD});var zS=d(mn=>{"use strict";var Rs=mn&&mn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mn,"__esModule",{value:!0});var tD=Rs(require("dns")),$S=Rs(DS()),rD=Rs(kS()),iD=Rs(qS()),nD=Rs(jS()),MS={max:500},BS,US;GS();async function sD(t,e={}){let{ipv6:r=!1,minimumCacheTime:i=300,refreshCache:n=!1,retryOpts:s={minTimeout:10,retries:3,factor:5},resolver:o=tD.default}=e,{cache:a,resolve:u}=r?{cache:US,resolve:nD.default}:{cache:BS,resolve:iD.default};if(n)a.del(t);else{let l=a.get(t);if(l)return await l}let c=(async()=>{let l=await rD.default(()=>u(t,o),s),f=l[Math.floor(Math.random()*l.length)],h=Math.max(f.ttl,i);return a.set(t,f.address,h*1e3),f.address})();return a.set(t,c,5e3),c}mn.default=sD;function GS(){BS=new $S.default(MS),US=new $S.default(MS)}mn.setupCache=GS});var HS=d(Uf=>{"use strict";Object.defineProperty(Uf,"__esModule",{value:!0});var oD=zS();Uf.default=oD.default});var VS=d(WS=>{WS.dnsCachedUrl=Symbol("dnsCachedUrl")});var ZS=d((O6,YS)=>{var{isIP:aD}=require("net"),{format:XS,parse:KS}=require("url"),uD=HS().default,{dnsCachedUrl:cD}=VS();YS.exports=lD;var fD=t=>(t/100|0)==3;function lD(t){t||(t=ys());let{Headers:e}=t;async function r(i,n){let s=KS(i),o=s.host;aD(s.hostname)===0&&(n||(n={}),n.headers=new e(n.headers),n.headers.has("Host")||n.headers.set("Host",s.host),n.redirect="manual",s.host=await uD(s.hostname),s.port&&(s.host+=`:${s.port}`),i=XS(s));let u=await t(i,n);if(u[cD]=i,Object.defineProperty(u,"url",{get(){return s.href}}),fD(u.status)){let c=Object.assign({},n);c.headers=new e(n.headers),(u.status===303||(u.status===301||u.status===302)&&n.method==="POST")&&(c.method="GET",c.body=null,c.headers.delete("content-length"));let l=u.headers.get("Location"),f=KS(l);return f.host===s.host&&(f.host=o),c.headers.set("Host",f.host),n.onRedirect&&n.onRedirect(u,c),r(XS(f),c)}return u}for(let i of Object.keys(t))r[i]=t[i];return r.default=r,r}});var i2=d((R6,JS)=>{var{parse:hD}=require("url"),QS=eS(),Gf=Ff()("@vercel/fetch"),pD=OS(),dD=ZS(),mD=require("url"),{HttpsAgent:gD}=QS,{URLSearchParams:yD}=mD,vD={maxSockets:200,maxFreeSockets:20,timeout:6e4,freeSocketTimeout:3e4,freeSocketKeepAliveTimeout:3e4},e2,t2;function bD(t){return e2=e2||(Gf("init http agent"),new QS(t))}function ED(t){return t2=t2||(Gf("init https agent"),new gD(t))}function r2(t,e){return/^https/.test(t)?ED(e):bD(e)}function wD(t,e={}){return async function(i,n={}){n.agent||(n.agent=r2(i,{AGENT_OPTIONS:vD,...e})),n.redirect="manual",n.headers=new t.Headers(n.headers),n.headers.set("host",n.headers.get("host")||hD(i).host),n.body&&!(n.body instanceof yD)&&typeof n.body=="object"&&!Buffer.isBuffer(n.body)&&(n.body=JSON.stringify(n.body),n.headers.set("Content-Type","application/json"),n.headers.set("Content-Length",Buffer.byteLength(n.body))),n.onRedirect=(s,o)=>{o.agent=r2(s.headers.get("Location"))};try{return Gf("%s %s",n.method||"GET",i),await t(i,n)}catch(s){throw s.url=i,s.opts=n,s}}}function SD(t,e){t||(t=ys());let r=t.default;if(r&&(t=Object.assign((...i)=>r(...i),r,t)),typeof t!="function")throw new Error("fetch() argument isn't a function; did you forget to initialize your `@vercel/fetch` import?");return t=dD(t),t=pD(t),t=wD(t,e),t}JS.exports=SD});var c2=d((C6,s2)=>{s2.exports=o2;o2.sync=RD;var a2=require("fs");function _D(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{l2.exports=f2;f2.sync=CD;var h2=require("fs");function f2(t,e,r){h2.stat(t,function(i,n){r(i,i?!1:p2(n,e))})}function CD(t,e){return p2(h2.statSync(t),e)}function p2(t,e){return t.isFile()&&AD(t,e)}function AD(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),u=parseInt("010",8),c=parseInt("001",8),l=a|u,f=r&c||r&u&&n===o||r&a&&i===s||r&l&&s===0;return f}});var g2=d((L6,m2)=>{var T6=require("fs"),_a;process.platform==="win32"||global.TESTING_WINDOWS?_a=c2():_a=d2();m2.exports=Hf;Hf.sync=TD;function Hf(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){Hf(t,e||{},function(s,o){s?n(s):i(o)})})}_a(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function TD(t,e){try{return _a.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var O2=d((x6,y2)=>{var gn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",v2=require("path"),LD=gn?";":":",b2=g2(),E2=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),w2=(t,e)=>{let r=e.colon||LD,i=t.match(/\//)||gn&&t.match(/\\/)?[""]:[...gn?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=gn?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=gn?n.split(r):[""];return gn&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},S2=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=w2(t,e),o=[],a=c=>new Promise((l,f)=>{if(c===i.length)return e.all&&o.length?l(o):f(E2(t));let h=i[c],y=/^".*"$/.test(h)?h.slice(1,-1):h,m=v2.join(y,t),p=!y&&/^\.[\\\/]/.test(t)?t.slice(0,2)+m:m;l(u(p,c,0))}),u=(c,l,f)=>new Promise((h,y)=>{if(f===n.length)return h(a(l+1));let m=n[f];b2(c+m,{pathExt:s},(p,E)=>{if(!p&&E)if(e.all)o.push(c+m);else return h(c+m);return h(u(c,l,f+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},xD=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=w2(t,e),s=[];for(let o=0;o{var ND=require("fs"),ID=require("path");function R2(t){console.log(`[dotenv][DEBUG] ${t}`)}var PD=` -`,DD=/^\s*([\w.-]+)\s*=\s*(.*)?\s*$/,FD=/\\n/g,kD=/\n|\r|\r\n/;function _2(t,e){let r=Boolean(e&&e.debug),i={};return t.toString().split(kD).forEach(function(n,s){let o=n.match(DD);if(o!=null){let a=o[1],u=o[2]||"",c=u.length-1,l=u[0]==='"'&&u[c]==='"';u[0]==="'"&&u[c]==="'"||l?(u=u.substring(1,c),l&&(u=u.replace(FD,PD))):u=u.trim(),i[a]=u}else r&&R2(`did not match key and value when parsing line ${s+1}: ${n}`)}),i}function qD(t){let e=ID.resolve(process.cwd(),".env"),r="utf8",i=!1;t&&(t.path!=null&&(e=t.path),t.encoding!=null&&(r=t.encoding),t.debug!=null&&(i=!0));try{let n=_2(ND.readFileSync(e,{encoding:r}),{debug:i});return Object.keys(n).forEach(function(s){Object.prototype.hasOwnProperty.call(process.env,s)?i&&R2(`"${s}" is already defined in \`process.env\` and will not be overwritten`):process.env[s]=n[s]}),{parsed:n}}catch(n){return{error:n}}}Wf.exports.config=qD;Wf.exports.parse=_2});var A2=d(Ca=>{"use strict";var jD=Ca&&Ca.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(n,s){function o(c){try{u(i.next(c))}catch(l){s(l)}}function a(c){try{u(i.throw(c))}catch(l){s(l)}}function u(c){var l;c.done?n(c.value):(l=c.value,l instanceof r?l:new r(function(f){f(l)})).then(o,a)}u((i=i.apply(t,e||[])).next())})};Object.defineProperty(Ca,"__esModule",{value:!0}),Promise.any=t=>jD(void 0,void 0,void 0,function*(){return new Promise((e,r)=>{let i=!1,n=0,s=[],o=u=>{i||(i=!0,e(u))},a=u=>{s.push(u),s.length>=n&&r(s)};for(let u of t)if(n++,u.then!==void 0){let c=u;c.then(l=>o(l)),u.catch!==void 0&&c.catch(l=>a(l))}})})});var L2=d((P6,T2)=>{T2.exports={name:"@jarred/git-peek",version:"1.3.10",author:"Jarred Sumner @Jarred-Sumner",description:"Quickly preview remote Git repositories in your local editor",bin:{"git-peek":"bin/git-peek"},bugs:"https://github.com/Jarred-Sumner/git-peek/issues",devDependencies:{"@types/js-yaml":"^4.0.0","@types/lodash":"^4.14.168","@types/lodash-es":"^4.17.4","@types/node":"latest","@types/rimraf":"^3.0.0","@types/tar":"^4.0.4","@types/tmp":"^0.2.0","@vercel/fetch":"^6.1.0",chalk:"^4.1.0",dotenv:"^8.2.0","dotenv-cli":"^4.0.0",esbuild:"^0.8.43","git-url-parse":"^11.4.4",ink:"^3.0.8","ink-select-input":"^4.2.0","ink-text-input":"^4.0.1",keypress:"^0.2.1","lodash-es":"^4.17.20",meow:"^9.0.0","node-fetch":"^2.6.1","normalize-git-url":"^3.0.2","open-editor":"^3.0.0",pkg:"^4.4.9",pnpm:"^5.17.2","promise-any-polyfill":"^0.1.2",qs:"^6.9.6",react:"^17.0.1","register-url-windows":"1.0.24","release-it":"*",rimraf:"^3.0.2","simple-plist":"^1.1.1",swr:"^0.4.2",tar:"^6.1.0",tmp:"^0.2.1",typescript:"beta",which:"^2.0.2"},engines:{node:">=10.0.0"},files:["bin/git-peek","bin/git-peek-win32.exe","bin/confirmPrompt.js","bin/Search.js","bin/registerProtocol.js"],homepage:"https://github.com/Jarred-Sumner/git-peek",keywords:["git-peek","git","github","preview git","editor","peek","clone","fetch","github-api","github-client","pull","git-pull","git pull","open-editor","open-in","open-in-editor","open"],license:"MIT",main:"lib/index.js",repository:"Jarred-Sumner/git-peek",scripts:{build:"node build.js",test:"echo NO TESTS",reinstall:"npm uninstall -g @jarred/git-peek; npm install -g jarred-git-peek-1.3.5.tgz",release:"dotenv release-it",bt:"pnpm build && git-peek Jarred-Sumner/git-peek","copy-win32":"cp win32/git-peek-windows-launcher/git-peek-windows-launcher/git-peek-windows-launcher/bin/net5.0/win-x64/publish/git-peek-win32.exe bin/git-peek-win32.exe","pkg-mac":"pkg --public --options='no-warnings' -t 'node14-macos-x64' ./pkgbin/git-peek -o ./brew/git-peek-macOS","pkg-windows":"pkg --public --options='no-warnings' -t 'node14-windows-x64' ./pkgbin/git-peek -o ./brew/git-peek.exe","pkg-all":"pnpm pkg-mac; pnpm pkg-windows",prerelease:"pnpm pkg-all","build-cs":"dotnet publish -c Release --self-contained false"},"release-it":{git:{requireCleanWorkingDir:!1},github:{release:!0,assets:["./brew/git-peek-macOS","./brew/git-peek.exe"]}}}});var mi=Te(require("child_process")),Ir=Te(require("fs")),x2=Te(Nh()),N2=Te(vv()),ut=Te(require("path"));function mx(){var t,e,r;return((r=(e=(t=process.env.GITHUB_TOKEN)==null?void 0:t.trim())==null?void 0:e.length)!=null?r:0)?process.env.GITHUB_TOKEN.trim():null}var vc;function bv(){return typeof vc=="undefined"&&(vc=mx()),vc}var I2=Te(lE()),P2=Te(Lw());var OD=Te(ys()),n2=Te(i2()),zf=n2.default(OD);var D2=Te(O2()),F2=Te(C2()),Aa=Te(ya()),$D=ut.default.join(__dirname,"Search"),MD=ut.default.join(__dirname,"registerProtocol"),BD=ut.default.join(__dirname,"confirmPrompt");function UD(t){return new Promise((e,r)=>setTimeout(e,t))}var ur=!1,GD=process.platform==="win32"?ut.default.join(process.env.HOMEDRIVE,process.env.HOMEPATH):process.env.HOME,Vf=ut.default.join(GD,".git-peek"),k2=["code","subl","code-insiders","vim","vi"],cr=!1,k6=console.log,q2=(...t)=>{ur||console.error(...t)};if(!Ir.default.rmSync){let t=ya();Ir.default.rmSync=(e,r)=>{if(e!=="/"&&e!=="/Applications")return t.sync(e)}}async function j2(t,e){var i;let r=!t||t==="auto"?process.env.EDITOR:t;if(!(r==null?void 0:r.trim().length))for(let n of k2)try{r=await D2.default(n),(r.includes("code")||r.includes("subl"))&&(r='"'+r+'"');break}catch(s){}return(!r||!((i=r==null?void 0:r.trim())==null?void 0:i.length))&&(e||console.warn("No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag"),r="code"),r}var $2=Ir.default.existsSync(Vf);typeof Promise.any!="function"&&A2();var Ve;(function(t){t[t.childProcessExit=0]="childProcessExit",t[t.downloadComplete=1]="downloadComplete",t[t.confirm=2]="confirm"})(Ve||(Ve={}));var $e={confirm:!1,waitFor:1};function zD(t){return!(!t.includes(_s)||!t.includes("/pull/"))}async function HD(t){let e=t.replace(`https://${_s}`,""),[r,i,n,s,o]=e.split("/"),a=`https://${Cs}/repos/${i}/${n}/pulls/${o}`,u=await Yf(a);u.ok||(console.error("Failed to load pull request url: HTTP ",u.status,` +`,DD=/^\s*([\w.-]+)\s*=\s*(.*)?\s*$/,FD=/\\n/g,kD=/\n|\r|\r\n/;function _2(t,e){let r=Boolean(e&&e.debug),i={};return t.toString().split(kD).forEach(function(n,s){let o=n.match(DD);if(o!=null){let a=o[1],u=o[2]||"",c=u.length-1,l=u[0]==='"'&&u[c]==='"';u[0]==="'"&&u[c]==="'"||l?(u=u.substring(1,c),l&&(u=u.replace(FD,PD))):u=u.trim(),i[a]=u}else r&&R2(`did not match key and value when parsing line ${s+1}: ${n}`)}),i}function qD(t){let e=ID.resolve(process.cwd(),".env"),r="utf8",i=!1;t&&(t.path!=null&&(e=t.path),t.encoding!=null&&(r=t.encoding),t.debug!=null&&(i=!0));try{let n=_2(ND.readFileSync(e,{encoding:r}),{debug:i});return Object.keys(n).forEach(function(s){Object.prototype.hasOwnProperty.call(process.env,s)?i&&R2(`"${s}" is already defined in \`process.env\` and will not be overwritten`):process.env[s]=n[s]}),{parsed:n}}catch(n){return{error:n}}}Wf.exports.config=qD;Wf.exports.parse=_2});var A2=d(Ca=>{"use strict";var jD=Ca&&Ca.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(n,s){function o(c){try{u(i.next(c))}catch(l){s(l)}}function a(c){try{u(i.throw(c))}catch(l){s(l)}}function u(c){var l;c.done?n(c.value):(l=c.value,l instanceof r?l:new r(function(f){f(l)})).then(o,a)}u((i=i.apply(t,e||[])).next())})};Object.defineProperty(Ca,"__esModule",{value:!0}),Promise.any=t=>jD(void 0,void 0,void 0,function*(){return new Promise((e,r)=>{let i=!1,n=0,s=[],o=u=>{i||(i=!0,e(u))},a=u=>{s.push(u),s.length>=n&&r(s)};for(let u of t)if(n++,u.then!==void 0){let c=u;c.then(l=>o(l)),u.catch!==void 0&&c.catch(l=>a(l))}})})});var L2=d((P6,T2)=>{T2.exports={name:"@jarred/git-peek",version:"1.3.11",author:"Jarred Sumner @Jarred-Sumner",description:"Quickly preview remote Git repositories in your local editor",bin:{"git-peek":"bin/git-peek"},bugs:"https://github.com/Jarred-Sumner/git-peek/issues",devDependencies:{"@types/js-yaml":"^4.0.0","@types/lodash":"^4.14.168","@types/lodash-es":"^4.17.4","@types/node":"latest","@types/rimraf":"^3.0.0","@types/tar":"^4.0.4","@types/tmp":"^0.2.0","@vercel/fetch":"^6.1.0",chalk:"^4.1.0",dotenv:"^8.2.0","dotenv-cli":"^4.0.0",esbuild:"^0.8.43","git-url-parse":"^11.4.4",ink:"^3.0.8","ink-select-input":"^4.2.0","ink-text-input":"^4.0.1",keypress:"^0.2.1","lodash-es":"^4.17.20",meow:"^9.0.0","node-fetch":"^2.6.1","normalize-git-url":"^3.0.2","open-editor":"^3.0.0",pkg:"^4.4.9",pnpm:"^5.17.2","promise-any-polyfill":"^0.1.2",qs:"^6.9.6",react:"^17.0.1","register-url-windows":"1.0.24","release-it":"*",rimraf:"^3.0.2","simple-plist":"^1.1.1",swr:"^0.4.2",tar:"^6.1.0",tmp:"^0.2.1",typescript:"beta",which:"^2.0.2"},engines:{node:">=10.0.0"},files:["bin/git-peek","bin/git-peek-win32.exe","bin/confirmPrompt.js","bin/Search.js","bin/registerProtocol.js"],homepage:"https://github.com/Jarred-Sumner/git-peek",keywords:["git-peek","git","github","preview git","editor","peek","clone","fetch","github-api","github-client","pull","git-pull","git pull","open-editor","open-in","open-in-editor","open"],license:"MIT",main:"lib/index.js",repository:"Jarred-Sumner/git-peek",scripts:{build:"node build.js",test:"echo NO TESTS",reinstall:"npm uninstall -g @jarred/git-peek; npm install -g jarred-git-peek-1.3.5.tgz",release:"dotenv release-it",bt:"pnpm build && git-peek Jarred-Sumner/git-peek","copy-win32":"cp win32/git-peek-windows-launcher/git-peek-windows-launcher/git-peek-windows-launcher/bin/net5.0/win-x64/publish/git-peek-win32.exe bin/git-peek-win32.exe","pkg-mac":"pkg --public --options='no-warnings' -t 'node14-macos-x64' ./pkgbin/git-peek -o ./brew/git-peek-macOS","pkg-windows":"pkg --public --options='no-warnings' -t 'node14-windows-x64' ./pkgbin/git-peek -o ./brew/git-peek.exe","pkg-all":"pnpm pkg-mac; pnpm pkg-windows",prerelease:"pnpm pkg-all","build-cs":"dotnet publish -c Release --self-contained false"},"release-it":{git:{requireCleanWorkingDir:!1},github:{release:!0,assets:["./brew/git-peek-macOS","./brew/git-peek.exe"]}}}});var mi=Te(require("child_process")),Ir=Te(require("fs")),x2=Te(Nh()),N2=Te(vv()),ut=Te(require("path"));function mx(){var t,e,r;return((r=(e=(t=process.env.GITHUB_TOKEN)==null?void 0:t.trim())==null?void 0:e.length)!=null?r:0)?process.env.GITHUB_TOKEN.trim():null}var vc;function bv(){return typeof vc=="undefined"&&(vc=mx()),vc}var I2=Te(lE()),P2=Te(Lw());var OD=Te(ys()),n2=Te(i2()),zf=n2.default(OD);var D2=Te(O2()),F2=Te(C2()),Aa=Te(ya()),$D=ut.default.join(__dirname,"Search"),MD=ut.default.join(__dirname,"registerProtocol"),BD=ut.default.join(__dirname,"confirmPrompt");function UD(t){return new Promise((e,r)=>setTimeout(e,t))}var ur=!1,GD=process.platform==="win32"?ut.default.join(process.env.HOMEDRIVE,process.env.HOMEPATH):process.env.HOME,Vf=ut.default.join(GD,".git-peek"),k2=["code","subl","code-insiders","vim","vi"],cr=!1,k6=console.log,q2=(...t)=>{ur||console.error(...t)};if(!Ir.default.rmSync){let t=ya();Ir.default.rmSync=(e,r)=>{if(e!=="/"&&e!=="/Applications")return t.sync(e)}}async function j2(t,e){var i;let r=!t||t==="auto"?process.env.EDITOR:t;if(!(r==null?void 0:r.trim().length))for(let n of k2)try{r=await D2.default(n),(r.includes("code")||r.includes("subl"))&&(r='"'+r+'"');break}catch(s){}return(!r||!((i=r==null?void 0:r.trim())==null?void 0:i.length))&&(e||console.warn("No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag"),r="code"),r}var $2=Ir.default.existsSync(Vf);typeof Promise.any!="function"&&A2();var Ve;(function(t){t[t.childProcessExit=0]="childProcessExit",t[t.downloadComplete=1]="downloadComplete",t[t.confirm=2]="confirm"})(Ve||(Ve={}));var $e={confirm:!1,waitFor:1};function zD(t){return!(!t.includes(_s)||!t.includes("/pull/"))}async function HD(t){let e=t.replace(`https://${_s}`,""),[r,i,n,s,o]=e.split("/"),a=`https://${Cs}/repos/${i}/${n}/pulls/${o}`,u=await Yf(a);u.ok||(console.error("Failed to load pull request url: HTTP ",u.status,` `,await u.text()),process.exit());let c=await u.json(),{label:l,sha:f}=c.head;return[l.split(":")[0],n,f]}async function WD(t,e){var s;let r=`https://${Cs}/repos/${t}/${e}`;process.env.VERBOSE&&console.log("Couldn't auto-detect ref, asking github what the ref is");let i=await Yf(r);return i.ok||(console.error("Failed to load github url: HTTP ",i.status,` `,await i.text()),process.exit()),(s=(await i.json()).default_branch)!=null?s:"main"}var yn=!1,Ye;var ae,Xf={redirect:"follow"},kt;(function(t){t[t.unknown=0]="unknown",t[t.vscode=1]="vscode",t[t.sublime=2]="sublime",t[t.vim=3]="vim"})(kt||(kt={}));function Yf(t){let e=bv();return e&&!Xf.headers&&(Xf.headers={authorization:`Bearer ${e}`}),zf(t,Xf)}function M2(){}var Kf=0,B2=!1;function gi(){var e,r;let t=ur;if(ur=!0,!yn&&!cr&&Ye)try{Ye==null||Ye.removeCallback(),Ye=null,yn=!1}catch(i){}if((ae==null?void 0:ae._tar)&&!ae._tar.writableEnded)try{ae._tar.warn=M2,ae._tar.abort()}catch(i){}if((ae==null?void 0:ae.slowTask)&&$e.waitFor!==1&&ae.slowTask.connected)try{ae.slowTask.kill(),ae.slowTask.disconnect()}catch(i){}if(!cr&&((e=ae==null?void 0:ae.destination)==null?void 0:e.length)&&Kf<10){if(process.platform==="win32")try{Aa.default.sync(ae.destination+"/*/**"),Aa.default.sync(ae.destination)}catch(i){process.env.VERBOSE&&console.error(i)}else try{Aa.default.sync(ae.destination)}catch(i){process.env.VERBOSE&&console.error(i)}if(Ir.default.existsSync(ae.destination)){setTimeout(gi,32),process.env.VERBOSE&&console.log(`Failed to delete, retry attempt #${Kf}/10`),Kf++;return}}!cr&&((r=ae==null?void 0:ae.destination)==null?void 0:r.length)&&!Ir.default.existsSync(ae.destination)&&!B2&&(ae.slowTask=null,ae.log("\u{1F5D1} Deleted repository"),B2=!0),process.emitWarning=M2,process.exit()}process.once("SIGINT",gi);var As=class{constructor(){this.editorMode=0;this.didFinish=!1;this.slowTask=null;this.didUseFallback=!1}log(e){this.editorMode===3&&this.slowTask||console.log(e)}async _prefetchGithub(e,r,i,n,s){let o=`https://cdn.jsdelivr.net/gh/${r}/${e}@${n}/${i||"README.md"}`,a=await zf(o,{redirect:"follow"});if(!a.ok||a.status===404)return!1;if(ur)return;let u=await a.text();if(u.trim().length)return ur||(await Ir.default.promises.mkdir(ut.default.dirname(s),{recursive:!0}),ur)?void 0:(await Ir.default.promises.writeFile(s,u,"utf8"),!0);throw"nope"}prefetchGithub(e,r,i,n,s,o){return Promise.any([this._prefetchGithub(e,r,i,n,o),this._prefetchGithub(e,r,i,s,o)])}search(e){let r=process.emitWarning;process.emitWarning=()=>{};let{renderInk:i}=require($D);return process.emitWarning=r,i(e)}async _unzip(e){let r=await Yf(e);if(r.ok)return r.body;if(r.status===403||r.status===401){let i=`Failed to load git repo: HTTP ${r.status} ${await r.text()} diff --git a/bin/registerProtocol.js b/bin/registerProtocol.js index 07c4c0e..8d81dc7 100644 --- a/bin/registerProtocol.js +++ b/bin/registerProtocol.js @@ -1,17 +1,17 @@ -var Ny=Object.create,Vi=Object.defineProperty,Dy=Object.getPrototypeOf,Ty=Object.prototype.hasOwnProperty,Ry=Object.getOwnPropertyNames,Ay=Object.getOwnPropertyDescriptor;var Yi=e=>Vi(e,"__esModule",{value:!0});var x=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),ks=(e,t)=>{for(var r in t)Vi(e,r,{get:t[r],enumerable:!0})},Iy=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ry(t))!Ty.call(e,i)&&i!=="default"&&Vi(e,i,{get:()=>t[i],enumerable:!(r=Ay(t,i))||r.enumerable});return e},Et=e=>e&&e.__esModule?e:Iy(Yi(Vi(e!=null?Ny(Dy(e)):{},"default",{value:e,enumerable:!0})),e);var Ml=x((g1,Al)=>{Al.exports=Il;Il.sync=xy;var xl=require("fs");function Ly(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{Cl.exports=Pl;Pl.sync=My;var kl=require("fs");function Pl(e,t,r){kl.stat(e,function(i,n){r(i,i?!1:Bl(n,t))})}function My(e,t){return Bl(kl.statSync(e),t)}function Bl(e,t){return e.isFile()&&Cy(e,t)}function Cy(e,t){var r=e.mode,i=e.uid,n=e.gid,s=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),o=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),l=parseInt("100",8),a=parseInt("010",8),c=parseInt("001",8),u=l|a,f=r&c||r&a&&n===o||r&l&&i===s||r&u&&s===0;return f}});var Ul=x((E1,ql)=>{var w1=require("fs"),Zi;process.platform==="win32"||global.TESTING_WINDOWS?Zi=Ml():Zi=Fl();ql.exports=Bs;Bs.sync=Py;function Bs(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){Bs(e,t||{},function(s,o){s?n(s):i(o)})})}Zi(e,t||{},function(i,n){i&&(i.code==="EACCES"||t&&t.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function Py(e,t){try{return Zi.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var Fs=x((b1,jl)=>{var ar=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",Xl=require("path"),ky=ar?";":":",zl=Ul(),Gl=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),$l=(e,t)=>{let r=t.colon||ky,i=e.match(/\//)||ar&&e.match(/\\/)?[""]:[...ar?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],n=ar?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=ar?n.split(r):[""];return ar&&e.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},Wl=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:i,pathExt:n,pathExtExe:s}=$l(e,t),o=[],l=c=>new Promise((u,f)=>{if(c===i.length)return t.all&&o.length?u(o):f(Gl(e));let y=i[c],b=/^".*"$/.test(y)?y.slice(1,-1):y,E=Xl.join(b,e),m=!b&&/^\.[\\\/]/.test(e)?e.slice(0,2)+E:E;u(a(m,c,0))}),a=(c,u,f)=>new Promise((y,b)=>{if(f===n.length)return y(l(u+1));let E=n[f];zl(c+E,{pathExt:s},(m,w)=>{if(!m&&w)if(t.all)o.push(c+E);else return y(c+E);return y(a(c,u,f+1))})});return r?l(0).then(c=>r(null,c),r):l(0)},By=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=$l(e,t),s=[];for(let o=0;o{var nt=function(e){"use strict";var t=1e7,r=7,i=9007199254740992,n=y(i),s="0123456789abcdefghijklmnopqrstuvwxyz",o=typeof BigInt=="function";function l(h,p,v,S){return typeof h=="undefined"?l[0]:typeof p!="undefined"?+p==10&&!v?j(h):_y(h,p,v,S):j(h)}function a(h,p){this.value=h,this.sign=p,this.isSmall=!1}a.prototype=Object.create(l.prototype);function c(h){this.value=h,this.sign=h<0,this.isSmall=!0}c.prototype=Object.create(l.prototype);function u(h){this.value=h}u.prototype=Object.create(l.prototype);function f(h){return-i0?Math.floor(h):Math.ceil(h)}function O(h,p){var v=h.length,S=p.length,I=new Array(v),T=0,M=t,C,k;for(k=0;k=M?1:0,I[k]=C-T*M;for(;k0&&I.push(T),I}function d(h,p){return h.length>=p.length?O(h,p):O(p,h)}function g(h,p){var v=h.length,S=new Array(v),I=t,T,M;for(M=0;M0;)S[M++]=p%I,p=Math.floor(p/I);return S}a.prototype.add=function(h){var p=j(h);if(this.sign!==p.sign)return this.subtract(p.negate());var v=this.value,S=p.value;return p.isSmall?new a(g(v,Math.abs(S)),this.sign):new a(d(v,S),this.sign)},a.prototype.plus=a.prototype.add,c.prototype.add=function(h){var p=j(h),v=this.value;if(v<0!==p.sign)return this.subtract(p.negate());var S=p.value;if(p.isSmall){if(f(v+S))return new c(v+S);S=y(Math.abs(S))}return new a(g(S,Math.abs(v)),v<0)},c.prototype.plus=c.prototype.add,u.prototype.add=function(h){return new u(this.value+j(h).value)},u.prototype.plus=u.prototype.add;function N(h,p){var v=h.length,S=p.length,I=new Array(v),T=0,M=t,C,k;for(C=0;C=0?S=N(h,p):(S=N(p,h),v=!v),S=b(S),typeof S=="number"?(v&&(S=-S),new c(S)):new a(S,v)}function _(h,p,v){var S=h.length,I=new Array(S),T=-p,M=t,C,k;for(C=0;C=0)},c.prototype.minus=c.prototype.subtract,u.prototype.subtract=function(h){return new u(this.value-j(h).value)},u.prototype.minus=u.prototype.subtract,a.prototype.negate=function(){return new a(this.value,!this.sign)},c.prototype.negate=function(){var h=this.sign,p=new c(-this.value);return p.sign=!h,p},u.prototype.negate=function(){return new u(-this.value)},a.prototype.abs=function(){return new a(this.value,!1)},c.prototype.abs=function(){return new c(Math.abs(this.value))},u.prototype.abs=function(){return new u(this.value>=0?this.value:-this.value)};function R(h,p){var v=h.length,S=p.length,I=v+S,T=m(I),M=t,C,k,X,W,z;for(X=0;X0;)S[C++]=T%I,T=Math.floor(T/I);return S}function P(h,p){for(var v=[];p-- >0;)v.push(0);return v.concat(h)}function D(h,p){var v=Math.max(h.length,p.length);if(v<=30)return R(h,p);v=Math.ceil(v/2);var S=h.slice(v),I=h.slice(0,v),T=p.slice(v),M=p.slice(0,v),C=D(I,M),k=D(S,T),X=D(d(I,S),d(M,T)),W=d(d(C,P(N(N(X,C),k),v)),P(k,2*v));return E(W),W}function L(h,p){return-.012*h-.012*p+15e-6*h*p>0}a.prototype.multiply=function(h){var p=j(h),v=this.value,S=p.value,I=this.sign!==p.sign,T;if(p.isSmall){if(S===0)return l[0];if(S===1)return this;if(S===-1)return this.negate();if(T=Math.abs(S),T=0;z--){for(W=I-1,k[z+S]!==M&&(W=Math.floor((k[z+S]*I+k[z+S-1])/M)),Z=0,At=0,Cs=X.length,wt=0;wtS&&(X=(X+1)*M),C=Math.ceil(X/W);do{if(z=B(p,C),zt(z,T)<=0)break;C--}while(C);I.push(C),T=N(T,z)}return I.reverse(),[b(I),b(T)]}function G(h,p){var v=h.length,S=m(v),I=t,T,M,C,k;for(C=0,T=v-1;T>=0;--T)k=C*I+h[T],M=w(k/p),C=k-M*p,S[T]=M|0;return[S,C|0]}function it(h,p){var v,S=j(p);if(o)return[new u(h.value/S.value),new u(h.value%S.value)];var I=h.value,T=S.value,M;if(T===0)throw new Error("Cannot divide by zero");if(h.isSmall)return S.isSmall?[new c(w(I/T)),new c(I%T)]:[l[0],h];if(S.isSmall){if(T===1)return[h,l[0]];if(T==-1)return[h.negate(),l[0]];var C=Math.abs(T);if(Cp.length?1:-1;for(var v=h.length-1;v>=0;v--)if(h[v]!==p[v])return h[v]>p[v]?1:-1;return 0}a.prototype.compareAbs=function(h){var p=j(h),v=this.value,S=p.value;return p.isSmall?1:zt(v,S)},c.prototype.compareAbs=function(h){var p=j(h),v=Math.abs(this.value),S=p.value;return p.isSmall?(S=Math.abs(S),v===S?0:v>S?1:-1):-1},u.prototype.compareAbs=function(h){var p=this.value,v=j(h).value;return p=p>=0?p:-p,v=v>=0?v:-v,p===v?0:p>v?1:-1},a.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=j(h),v=this.value,S=p.value;return this.sign!==p.sign?p.sign?1:-1:p.isSmall?this.sign?-1:1:zt(v,S)*(this.sign?-1:1)},a.prototype.compareTo=a.prototype.compare,c.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=j(h),v=this.value,S=p.value;return p.isSmall?v==S?0:v>S?1:-1:v<0!==p.sign?v<0?-1:1:v<0?1:-1},c.prototype.compareTo=c.prototype.compare,u.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=this.value,v=j(h).value;return p===v?0:p>v?1:-1},u.prototype.compareTo=u.prototype.compare,a.prototype.equals=function(h){return this.compare(h)===0},u.prototype.eq=u.prototype.equals=c.prototype.eq=c.prototype.equals=a.prototype.eq=a.prototype.equals,a.prototype.notEquals=function(h){return this.compare(h)!==0},u.prototype.neq=u.prototype.notEquals=c.prototype.neq=c.prototype.notEquals=a.prototype.neq=a.prototype.notEquals,a.prototype.greater=function(h){return this.compare(h)>0},u.prototype.gt=u.prototype.greater=c.prototype.gt=c.prototype.greater=a.prototype.gt=a.prototype.greater,a.prototype.lesser=function(h){return this.compare(h)<0},u.prototype.lt=u.prototype.lesser=c.prototype.lt=c.prototype.lesser=a.prototype.lt=a.prototype.lesser,a.prototype.greaterOrEquals=function(h){return this.compare(h)>=0},u.prototype.geq=u.prototype.greaterOrEquals=c.prototype.geq=c.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals,a.prototype.lesserOrEquals=function(h){return this.compare(h)<=0},u.prototype.leq=u.prototype.lesserOrEquals=c.prototype.leq=c.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals,a.prototype.isEven=function(){return(this.value[0]&1)==0},c.prototype.isEven=function(){return(this.value&1)==0},u.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)},a.prototype.isOdd=function(){return(this.value[0]&1)==1},c.prototype.isOdd=function(){return(this.value&1)==1},u.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)},a.prototype.isPositive=function(){return!this.sign},c.prototype.isPositive=function(){return this.value>0},u.prototype.isPositive=c.prototype.isPositive,a.prototype.isNegative=function(){return this.sign},c.prototype.isNegative=function(){return this.value<0},u.prototype.isNegative=c.prototype.isNegative,a.prototype.isUnit=function(){return!1},c.prototype.isUnit=function(){return Math.abs(this.value)===1},u.prototype.isUnit=function(){return this.abs().value===BigInt(1)},a.prototype.isZero=function(){return!1},c.prototype.isZero=function(){return this.value===0},u.prototype.isZero=function(){return this.value===BigInt(0)},a.prototype.isDivisibleBy=function(h){var p=j(h);return p.isZero()?!1:p.isUnit()?!0:p.compareAbs(2)===0?this.isEven():this.mod(p).isZero()},u.prototype.isDivisibleBy=c.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function sr(h){var p=h.abs();if(p.isUnit())return!1;if(p.equals(2)||p.equals(3)||p.equals(5))return!0;if(p.isEven()||p.isDivisibleBy(3)||p.isDivisibleBy(5))return!1;if(p.lesser(49))return!0}function or(h,p){for(var v=h.prev(),S=v,I=0,T,M,C,k;S.isEven();)S=S.divide(2),I++;t:for(C=0;C-i?new c(h-1):new a(n,!0)},u.prototype.prev=function(){return new u(this.value-BigInt(1))};for(var Ct=[1];2*Ct[Ct.length-1]<=t;)Ct.push(2*Ct[Ct.length-1]);var te=Ct.length,Be=Ct[te-1];function _l(h){return Math.abs(h)<=t}a.prototype.shiftLeft=function(h){var p=j(h).toJSNumber();if(!_l(p))throw new Error(String(p)+" is too large for shifting.");if(p<0)return this.shiftRight(-p);var v=this;if(v.isZero())return v;for(;p>=te;)v=v.multiply(Be),p-=te-1;return v.multiply(Ct[p])},u.prototype.shiftLeft=c.prototype.shiftLeft=a.prototype.shiftLeft,a.prototype.shiftRight=function(h){var p,v=j(h).toJSNumber();if(!_l(v))throw new Error(String(v)+" is too large for shifting.");if(v<0)return this.shiftLeft(-v);for(var S=this;v>=te;){if(S.isZero()||S.isNegative()&&S.isUnit())return S;p=it(S,Be),S=p[1].isNegative()?p[0].prev():p[0],v-=te-1}return p=it(S,Ct[v]),p[1].isNegative()?p[0].prev():p[0]},u.prototype.shiftRight=c.prototype.shiftRight=a.prototype.shiftRight;function xs(h,p,v){p=j(p);for(var S=h.isNegative(),I=p.isNegative(),T=S?h.not():h,M=I?p.not():p,C=0,k=0,X=null,W=null,z=[];!T.isZero()||!M.isZero();)X=it(T,Be),C=X[1].toJSNumber(),S&&(C=Be-1-C),W=it(M,Be),k=W[1].toJSNumber(),I&&(k=Be-1-k),T=X[0],M=W[0],z.push(v(C,k));for(var Z=v(S?1:0,I?1:0)!==0?nt(-1):nt(0),At=z.length-1;At>=0;At-=1)Z=Z.multiply(Be).add(nt(z[At]));return Z}a.prototype.not=function(){return this.negate().prev()},u.prototype.not=c.prototype.not=a.prototype.not,a.prototype.and=function(h){return xs(this,h,function(p,v){return p&v})},u.prototype.and=c.prototype.and=a.prototype.and,a.prototype.or=function(h){return xs(this,h,function(p,v){return p|v})},u.prototype.or=c.prototype.or=a.prototype.or,a.prototype.xor=function(h){return xs(this,h,function(p,v){return p^v})},u.prototype.xor=c.prototype.xor=a.prototype.xor;var Ls=1<<30,wy=(t&-t)*(t&-t)|Ls;function Hi(h){var p=h.value,v=typeof p=="number"?p|Ls:typeof p=="bigint"?p|BigInt(Ls):p[0]+p[1]*t|wy;return v&-v}function Sl(h,p){if(p.compareTo(h)<=0){var v=Sl(h,p.square(p)),S=v.p,I=v.e,T=S.multiply(p);return T.compareTo(h)<=0?{p:T,e:I*2+1}:{p:S,e:I*2}}return{p:nt(1),e:0}}a.prototype.bitLength=function(){var h=this;return h.compareTo(nt(0))<0&&(h=h.negate().subtract(nt(1))),h.compareTo(nt(0))===0?nt(0):nt(Sl(h,nt(2)).e).add(nt(1))},u.prototype.bitLength=c.prototype.bitLength=a.prototype.bitLength;function Ol(h,p){return h=j(h),p=j(p),h.greater(p)?h:p}function Ms(h,p){return h=j(h),p=j(p),h.lesser(p)?h:p}function Nl(h,p){if(h=j(h).abs(),p=j(p).abs(),h.equals(p))return h;if(h.isZero())return p;if(p.isZero())return h;for(var v=l[1],S,I;h.isEven()&&p.isEven();)S=Ms(Hi(h),Hi(p)),h=h.divide(S),p=p.divide(S),v=v.multiply(S);for(;h.isEven();)h=h.divide(Hi(h));do{for(;p.isEven();)p=p.divide(Hi(p));h.greater(p)&&(I=p,p=h,h=I),p=p.subtract(h)}while(!p.isZero());return v.isUnit()?h:h.multiply(v)}function Ey(h,p){return h=j(h).abs(),p=j(p).abs(),h.divide(Nl(h,p)).multiply(p)}function by(h,p,v){h=j(h),p=j(p);var S=v||Math.random,I=Ms(h,p),T=Ol(h,p),M=T.subtract(I).add(1);if(M.isSmall)return I.add(Math.floor(S()*M));for(var C=Qr(M,t).value,k=[],X=!0,W=0;W=M){if(k==="1"&&M===1)continue;throw new Error(k+" is not a valid digit in base "+p+".")}}p=j(p);var X=[],W=h[0]==="-";for(T=W?1:0;T"&&T=0;T--)S=S.add(h[T].times(I)),I=I.times(p);return v?S.negate():S}function Sy(h,p){return p=p||s,h"}function Qr(h,p){if(p=nt(p),p.isZero()){if(h.isZero())return{value:[0],isNegative:!1};throw new Error("Cannot convert nonzero numbers to base 0.")}if(p.equals(-1)){if(h.isZero())return{value:[0],isNegative:!1};if(h.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-h.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:!1};var v=Array.apply(null,Array(h.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);return v.unshift([1]),{value:[].concat.apply([],v),isNegative:!1}}var S=!1;if(h.isNegative()&&p.isPositive()&&(S=!0,h=h.abs()),p.isUnit())return h.isZero()?{value:[0],isNegative:!1}:{value:Array.apply(null,Array(h.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:S};for(var I=[],T=h,M;T.isNegative()||T.compareAbs(p)>=0;){M=T.divmod(p),T=M.quotient;var C=M.remainder;C.isNegative()&&(C=p.minus(C).abs(),T=T.next()),I.push(C.toJSNumber())}return I.push(T.toJSNumber()),{value:I.reverse(),isNegative:S}}function Tl(h,p,v){var S=Qr(h,p);return(S.isNegative?"-":"")+S.value.map(function(I){return Sy(I,v)}).join("")}a.prototype.toArray=function(h){return Qr(this,h)},c.prototype.toArray=function(h){return Qr(this,h)},u.prototype.toArray=function(h){return Qr(this,h)},a.prototype.toString=function(h,p){if(h===e&&(h=10),h!==10)return Tl(this,h,p);for(var v=this.value,S=v.length,I=String(v[--S]),T="0000000",M;--S>=0;)M=String(v[S]),I+=T.slice(M.length)+M;var C=this.sign?"-":"";return C+I},c.prototype.toString=function(h,p){return h===e&&(h=10),h!=10?Tl(this,h,p):String(this.value)},u.prototype.toString=c.prototype.toString,u.prototype.toJSON=a.prototype.toJSON=c.prototype.toJSON=function(){return this.toString()},a.prototype.valueOf=function(){return parseInt(this.toString(),10)},a.prototype.toJSNumber=a.prototype.valueOf,c.prototype.valueOf=function(){return this.value},c.prototype.toJSNumber=c.prototype.valueOf,u.prototype.valueOf=u.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function Rl(h){if(f(+h)){var p=+h;if(p===w(p))return o?new u(BigInt(p)):new c(p);throw new Error("Invalid integer: "+h)}var v=h[0]==="-";v&&(h=h.slice(1));var S=h.split(/e/i);if(S.length>2)throw new Error("Invalid integer: "+S.join("e"));if(S.length===2){var I=S[1];if(I[0]==="+"&&(I=I.slice(1)),I=+I,I!==w(I)||!f(I))throw new Error("Invalid integer: "+I+" is not a valid exponent.");var T=S[0],M=T.indexOf(".");if(M>=0&&(I-=T.length-M-1,T=T.slice(0,M)+T.slice(M+1)),I<0)throw new Error("Cannot include negative exponent part for integers");T+=new Array(I+1).join("0"),h=T}var C=/^([0-9][0-9]*)$/.test(h);if(!C)throw new Error("Invalid integer: "+h);if(o)return new u(BigInt(v?"-"+h:h));for(var k=[],X=h.length,W=r,z=X-W;X>0;)k.push(+h.slice(z,X)),z-=W,z<0&&(z=0),X-=W;return E(k),new a(k,v)}function Oy(h){if(o)return new u(BigInt(h));if(f(h)){if(h!==w(h))throw new Error(h+" is not an integer.");return new c(h)}return Rl(h.toString())}function j(h){return typeof h=="number"?Oy(h):typeof h=="string"?Rl(h):typeof h=="bigint"?new u(h):h}for(var Fe=0;Fe<1e3;Fe++)l[Fe]=j(Fe),Fe>0&&(l[-Fe]=j(-Fe));return l.one=l[1],l.zero=l[0],l.minusOne=l[-1],l.max=Ol,l.min=Ms,l.gcd=Nl,l.lcm=Ey,l.isInstance=function(h){return h instanceof a||h instanceof c||h instanceof u},l.randBetween=by,l.fromArray=function(h,p,v){return Dl(h.map(j),j(p||10),v)},l}();typeof Ki!="undefined"&&Ki.hasOwnProperty("exports")&&(Ki.exports=nt);typeof define=="function"&&define.amd&&define(function(){return nt})});var Vl=x(st=>{"use strict";var Fy=require("fs"),qy=Hl(),me=!1;st.maxObjectSize=100*1e3*1e3;st.maxObjectCount=32768;var Uy=9783072e5,jy=st.UID=function(e){this.UID=e},S1=st.parseFile=function(e,t){return new Promise(function(r,i){function n(s){let o=null,l;try{l=Xy(s),r(l)}catch(a){o=a,i(o)}finally{t&&t(o,l)}}if(Buffer.isBuffer(e))return n(e);Fy.readFile(e,function(s,o){if(s)return i(s),t(s);n(o)})})},Xy=st.parseBuffer=function(e){if(e.slice(0,"bplist".length).toString("utf8")!=="bplist")throw new Error("Invalid binary plist. Expected 'bplist' at offset 0.");let r=e.slice(e.length-32,e.length),i=r.readUInt8(6);me&&console.log("offsetSize: "+i);let n=r.readUInt8(7);me&&console.log("objectRefSize: "+n);let s=qs(r,8);me&&console.log("numObjects: "+s);let o=qs(r,16);me&&console.log("topObject: "+o);let l=qs(r,24);if(me&&console.log("offsetTableOffset: "+l),s>st.maxObjectCount)throw new Error("maxObjectCount exceeded");let a=[];for(let u=0;u>4,E=y&15;switch(b){case 0:return m();case 1:return O();case 8:return d();case 2:return g();case 3:return N();case 4:return A();case 5:return _();case 6:return _(!0);case 10:return R();case 13:return B();default:throw new Error("Unhandled type 0x"+b.toString(16))}function m(){switch(E){case 0:return null;case 8:return!1;case 9:return!0;case 15:return null;default:throw new Error("Unhandled simple type 0x"+b.toString(16))}}function w(P){let D="",L;for(L=0;Lst.maxObjectSize)throw new Error("To little heap space available!");let L=[];for(let F=0;Fst.maxObjectSize)throw new Error("To little heap space available!");me&&console.log("Parsing dictionary #"+u);let L={};for(let F=0;F{Yl.exports={DEFAULT_INITIAL_SIZE:8*1024,DEFAULT_INCREMENT_AMOUNT:8*1024,DEFAULT_FREQUENCY:1,DEFAULT_CHUNK_SIZE:1024}});var Jl=x((D1,Zl)=>{var Kl=require("stream"),Qi=Ji(),Gy=require("util"),$y=Zl.exports=function(e){var t=this;Kl.Stream.call(this),e=e||{};var r=e.hasOwnProperty("frequency")?e.frequency:Qi.DEFAULT_FREQUENCY,i=e.chunkSize||Qi.DEFAULT_CHUNK_SIZE,n=e.initialSize||Qi.DEFAULT_INITIAL_SIZE,s=e.incrementAmount||Qi.DEFAULT_INCREMENT_AMOUNT,o=0,l=new Buffer(n),a=null;this.readable=!0,this.writable=!1;var c=function(){var f=Math.min(i,o);if(f>0){var y=null;a?y=l.toString(a,0,f):(y=new Buffer(f),l.copy(y,0,0,f)),t.emit("data",y),f0&&this.emit("readable"),!this.isPaused&&!r)for(;o>0;)c()}},this.pause=function(){this.isPaused=!0,c&&c.interval&&(clearInterval(c.interval),delete c.interval)},this.resume=function(){this.isPaused=!1,c&&!c.interval&&r>0&&(c.interval=setInterval(c,r))},this.destroy=function(){t.emit("end"),c.interval&&clearInterval(c.interval),c=null,t.readable=!1,t.emit("close")},this.destroySoon=function(){t.readable=!1,c.interval||(t.emit("end"),t.emit("close"))},this.setEncoding=function(f){a=f},this.resume()};Gy.inherits($y,Kl.Stream)});var rc=x((T1,Ql)=>{var Wy=require("util"),tc=require("stream"),ec=Ji(),Hy=Ql.exports=function(e){var t=this;tc.Stream.call(this),e=e||{};var r=e.initialSize||ec.DEFAULT_INITIAL_SIZE,i=e.incrementAmount||ec.DEFAULT_INCREMENT_AMOUNT,n=new Buffer(r),s=0;this.writable=!0,this.readable=!1,this.size=function(){return s},this.maxSize=function(){return n.length},this.getContents=function(l){if(!s)return!1;var a=new Buffer(Math.min(l||s,s));return n.copy(a,0,0,a.length),a.length{tn.exports=Ji();tn.exports.ReadableStreamBuffer=Jl();tn.exports.WritableStreamBuffer=rc()});var sc=x((A1,Us)=>{"use strict";var Vy=ic(),lt=!1;function nc(e){this.value=e}Us.exports=function(e){var t=new Vy.WritableStreamBuffer;t.write(new Buffer("bplist00")),lt&&console.log("create",require("util").inspect(e,!1,10)),e instanceof Array&&e.length===1&&(e=e[0]);var r=en(e);lt&&console.log("entries",r);var i=Zy(r.length),n=[],s,o;return l(),r.forEach(function(D,L){n[L]=t.size(),D?u(D):t.write(0)}),c(),a(),t.getContents();function l(){var D={},L=0;r.forEach(function(F){F.id||(F.type==="string"?!F.bplistOverride&&D.hasOwnProperty(F.value)?(F.type="stringref",F.id=D[F.value]):D[F.value]=F.id=L++:F.id=L++)}),r=r.filter(function(F){return F.type!=="stringref"})}function a(){lt&&console.log("0x"+t.size().toString(16),"writeTrailer"),t.write(new Buffer([0,0,0,0,0,0])),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",s),N(s),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",i),N(i),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(number of objects):",r.length),g(r.length),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(top object)"),g(0),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offset table offset):",o),g(o)}function c(){lt&&console.log("0x"+t.size().toString(16),"writeOffsetTable"),o=t.size(),s=Yy(o),n.forEach(function(D){B(D,s)})}function u(D){switch(D.type){case"dict":y(D);break;case"number":case"double":b(D);break;case"UID":E(D);break;case"array":m(D);break;case"boolean":w(D);break;case"string":case"string-utf16":O(D);break;case"date":f(D);break;case"data":d(D);break;default:throw new Error("unhandled entry type: "+D.type)}}function f(D){N(51);var L=Date.parse(D.value)/1e3-978307200;A(L)}function y(D){if(lt){var L=D.entryKeys.map(function(U){return U.id}),F=D.entryValues.map(function(U){return U.id});console.log("0x"+t.size().toString(16),"writeDict","(id: "+D.id+")","(keys: "+L+")","(values: "+F+")")}_(13,D.entryKeys.length),D.entryKeys.forEach(function(U){R(U.id)}),D.entryValues.forEach(function(U){R(U.id)})}function b(D){lt&&console.log("0x"+t.size().toString(16),"writeNumber",D.value," (type: "+D.type+")","(id: "+D.id+")"),D.type!=="double"&&parseFloat(D.value.toFixed())==D.value?D.value<0?(N(19),B(D.value,8,!0)):D.value<=255?(N(16),B(D.value,1)):D.value<=65535?(N(17),B(D.value,2)):D.value<=4294967295?(N(18),B(D.value,4)):(N(20),B(D.value,8)):(N(35),A(D.value))}function E(D){lt&&console.log("0x"+t.size().toString(16),"writeUID",D.value," (type: "+D.type+")","(id: "+D.id+")"),_(8,0),R(D.value)}function m(D){lt&&console.log("0x"+t.size().toString(16),"writeArray (length: "+D.entries.length+")","(id: "+D.id+")"),_(10,D.entries.length),D.entries.forEach(function(L){R(L.id)})}function w(D){lt&&console.log("0x"+t.size().toString(16),"writeBoolean",D.value,"(id: "+D.id+")"),N(D.value?9:8)}function O(D){if(lt&&console.log("0x"+t.size().toString(16),"writeString",D.value,"(id: "+D.id+")"),D.type==="string-utf16"||P(D.value)){var L=new Buffer(D.value,"ucs2");_(6,L.length/2);for(var F=0;F4;)U[Y++]=0,L--;for(var $=L-1;$>=0;$--)U[Y++]=D>>8*$;t.write(U)}function P(D){return Buffer.byteLength(D,"utf8")!=D.length}};function en(e){if(e.bplistOverride)return[e];if(e instanceof Array)return Ky(e);if(e instanceof Buffer)return[{type:"data",value:e}];if(e instanceof nc)return[{type:"double",value:e.value}];if(typeof e=="object")return e instanceof Date?[{type:"date",value:e}]:Object.keys(e).length==1&&typeof e.UID=="number"?[{type:"UID",value:e.UID}]:Jy(e);if(typeof e=="string")return[{type:"string",value:e}];if(typeof e=="number")return[{type:"number",value:e}];if(typeof e=="boolean")return[{type:"boolean",value:e}];if(typeof e=="bigint")return[{type:"number",value:Number(BigInt.asIntN(32,e))}];throw new Error("unhandled entry: "+e)}function Ky(e){lt&&console.log("toEntriesArray");var t=[{type:"array",entries:[]}];return e.forEach(function(r){var i=en(r);t[0].entries.push(i[0]),t=t.concat(i)}),t}function Jy(e){lt&&console.log("toEntriesObject");var t=[{type:"dict",entryKeys:[],entryValues:[]}];return Object.keys(e).forEach(function(r){var i=en(r);t[0].entryKeys.push(i[0]),t=t.concat(i[0])}),Object.keys(e).forEach(function(r){var i=en(e[r]);t[0].entryValues.push(i[0]),t=t.concat(i)}),t}function Yy(e){return e<256?1:e<65536?2:e<4294967296?4:8}function Zy(e){return e<256?1:e<65536?2:4}Us.exports.Real=nc});var dc=x(oc=>{var js=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,ac=new RegExp("[\\-\\.0-9"+js.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),lc=new RegExp("^"+js.source+ac.source+"*(?::"+js.source+ac.source+"*)?$"),ti=0,ye=1,lr=2,ei=3,cr=4,ur=5,ri=6,rn=7;function cc(){}cc.prototype={parse:function(e,t,r){var i=this.domBuilder;i.startDocument(),uc(t,t={}),Qy(e,t,r,i,this.errorHandler),i.endDocument()}};function Qy(e,t,r,i,n){function s(G){if(G>65535){G-=65536;var it=55296+(G>>10),zt=56320+(G&1023);return String.fromCharCode(it,zt)}else return String.fromCharCode(G)}function o(G){var it=G.slice(1,-1);return it in r?r[it]:it.charAt(0)==="#"?s(parseInt(it.substr(1).replace("x","0x"))):(n.error("entity not found:"+G),G)}function l(G){if(G>m){var it=e.substring(m,G).replace(/&#?\w+;/g,o);y&&a(m),i.characters(it,0,G-m),m=G}}function a(G,it){for(;G>=u&&(it=f.exec(e));)c=it.index,u=c+it[0].length,y.lineNumber++;y.columnNumber=G-c+1}for(var c=0,u=0,f=/.*(?:\r\n?|\n)|.*$/g,y=i.locator,b=[{currentNSMap:t}],E={},m=0;;){try{var w=e.indexOf("<",m);if(w<0){if(!e.substr(m).match(/^\s*$/)){var O=i.doc,d=O.createTextNode(e.substr(m));O.appendChild(d),i.currentElement=d}return}switch(w>m&&l(w),e.charAt(w+1)){case"/":var g=e.indexOf(">",w+3),N=e.substring(w+2,g),A=b.pop();g<0?(N=e.substring(w+2).replace(/[\s<].*/,""),n.error("end tag name: "+N+" is not complete:"+A.tagName),g=w+1+N.length):N.match(/\sm?m=g:l(Math.max(w,m)+1)}}function hc(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function tg(e,t,r,i,n,s){for(var o,l,a=++t,c=ti;;){var u=e.charAt(a);switch(u){case"=":if(c===ye)o=e.slice(t,a),c=ei;else if(c===lr)c=ei;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(c===ei||c===ye)if(c===ye&&(s.warning('attribute value must after "="'),o=e.slice(t,a)),t=a+1,a=e.indexOf(u,t),a>0)l=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,l,t-1),c=ur;else throw new Error("attribute value no end '"+u+"' match");else if(c==cr)l=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,l,t),s.warning('attribute "'+o+'" missed start quot('+u+")!!"),t=a+1,c=ur;else throw new Error('attribute value must after "="');break;case"/":switch(c){case ti:r.setTagName(e.slice(t,a));case ur:case ri:case rn:c=rn,r.closed=!0;case cr:case ye:case lr:break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),c==ti&&r.setTagName(e.slice(t,a)),a;case">":switch(c){case ti:r.setTagName(e.slice(t,a));case ur:case ri:case rn:break;case cr:case ye:l=e.slice(t,a),l.slice(-1)==="/"&&(r.closed=!0,l=l.slice(0,-1));case lr:c===lr&&(l=o),c==cr?(s.warning('attribute "'+l+'" missed quot(")!!'),r.add(o,l.replace(/&#?\w+;/g,n),t)):((i[""]!=="http://www.w3.org/1999/xhtml"||!l.match(/^(?:disabled|checked|selected)$/i))&&s.warning('attribute "'+l+'" missed value!! "'+l+'" instead!!'),r.add(l,l,t));break;case ei:throw new Error("attribute value missed!!")}return a;case"\x80":u=" ";default:if(u<=" ")switch(c){case ti:r.setTagName(e.slice(t,a)),c=ri;break;case ye:o=e.slice(t,a),c=lr;break;case cr:var l=e.slice(t,a).replace(/&#?\w+;/g,n);s.warning('attribute "'+l+'" missed quot(")!!'),r.add(o,l,t);case ur:c=ri;break}else switch(c){case lr:var f=r.tagName;(i[""]!=="http://www.w3.org/1999/xhtml"||!o.match(/^(?:disabled|checked|selected)$/i))&&s.warning('attribute "'+o+'" missed value!! "'+o+'" instead2!!'),r.add(o,o,t),t=a,c=ye;break;case ur:s.warning('attribute space is required"'+o+'"!!');case ri:c=ye,t=a;break;case ei:c=cr,t=a;break;case rn:throw new Error("elements closed character '/' and '>' must be connected to")}}a++}}function fc(e,t,r){for(var i=e.tagName,n=null,s=e.length;s--;){var o=e[s],l=o.qName,a=o.value,y=l.indexOf(":");if(y>0)var c=o.prefix=l.slice(0,y),u=l.slice(y+1),f=c==="xmlns"&&u;else u=l,c=null,f=l==="xmlns"&&"";o.localName=u,f!==!1&&(n==null&&(n={},uc(r,r={})),r[f]=n[f]=a,o.uri="http://www.w3.org/2000/xmlns/",t.startPrefixMapping(f,a))}for(var s=e.length;s--;){o=e[s];var c=o.prefix;c&&(c==="xml"&&(o.uri="http://www.w3.org/XML/1998/namespace"),c!=="xmlns"&&(o.uri=r[c||""]))}var y=i.indexOf(":");y>0?(c=e.prefix=i.slice(0,y),u=e.localName=i.slice(y+1)):(c=null,u=e.localName=i);var b=e.uri=r[c||""];if(t.startElement(b,u,i,e),e.closed){if(t.endElement(b,u,i),n)for(c in n)t.endPrefixMapping(c)}else return e.currentNSMap=r,e.localNSMap=n,!0}function eg(e,t,r,i,n){if(/^(?:script|textarea)$/i.test(r)){var s=e.indexOf("",t),o=e.substring(t+1,s);if(/[&<]/.test(o))return/^script$/i.test(r)?(n.characters(o,0,o.length),s):(o=o.replace(/&#?\w+;/g,i),n.characters(o,0,o.length),s)}return t+1}function rg(e,t,r,i){var n=i[r];return n==null&&(n=e.lastIndexOf(""),n",t+4);return s>t?(r.comment(e,t+4,s-t-4),s+3):(i.error("Unclosed comment"),-1)}else return-1;default:if(e.substr(t+3,6)=="CDATA["){var s=e.indexOf("]]>",t+9);return r.startCDATA(),r.characters(e,t+9,s-t-9),r.endCDATA(),s+3}var o=sg(e,t),l=o.length;if(l>1&&/!doctype/i.test(o[0][0])){var a=o[1][0],c=l>3&&/^public$/i.test(o[2][0])&&o[3][0],u=l>4&&o[4][0],f=o[l-1];return r.startDTD(a,c&&c.replace(/^(['"])(.*?)\1$/,"$2"),u&&u.replace(/^(['"])(.*?)\1$/,"$2")),r.endDTD(),f.index+f[0].length}}return-1}function ng(e,t,r){var i=e.indexOf("?>",t);if(i){var n=e.substring(t,i).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(n){var s=n[0].length;return r.processingInstruction(n[1],n[2]),i+2}else return-1}return-1}function pc(e){}pc.prototype={setTagName:function(e){if(!lc.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},add:function(e,t,r){if(!lc.test(e))throw new Error("invalid attribute:"+e);this[this.length++]={qName:e,value:t,offset:r}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}};function nn(e,t){return e.__proto__=t,e}nn({},nn.prototype)instanceof nn||(nn=function(e,t){function r(){}r.prototype=t,r=new r;for(t in e)r[t]=e[t];return r});function sg(e,t){var r,i=[],n=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;for(n.lastIndex=t,n.exec(e);r=n.exec(e);)if(i.push(r),r[1])return i}oc.XMLReader=cc});var Js=x(Xs=>{function ii(e,t){for(var r in e)t[r]=e[r]}function _t(e,t){var r=e.prototype;if(Object.create){var i=Object.create(t.prototype);r.__proto__=i}if(!(r instanceof t)){let s=function(){};var n=s;s.prototype=t.prototype,s=new s,ii(r,s),e.prototype=r=s}r.constructor!=e&&(typeof e!="function"&&console.error("unknow Class:"+e),r.constructor=e)}var og="http://www.w3.org/1999/xhtml",St={},Wt=St.ELEMENT_NODE=1,hr=St.ATTRIBUTE_NODE=2,sn=St.TEXT_NODE=3,mc=St.CDATA_SECTION_NODE=4,yc=St.ENTITY_REFERENCE_NODE=5,ag=St.ENTITY_NODE=6,gc=St.PROCESSING_INSTRUCTION_NODE=7,vc=St.COMMENT_NODE=8,wc=St.DOCUMENT_NODE=9,Ec=St.DOCUMENT_TYPE_NODE=10,ee=St.DOCUMENT_FRAGMENT_NODE=11,lg=St.NOTATION_NODE=12,pt={},ct={},x1=pt.INDEX_SIZE_ERR=(ct[1]="Index size error",1),L1=pt.DOMSTRING_SIZE_ERR=(ct[2]="DOMString size error",2),cg=pt.HIERARCHY_REQUEST_ERR=(ct[3]="Hierarchy request error",3),M1=pt.WRONG_DOCUMENT_ERR=(ct[4]="Wrong document",4),C1=pt.INVALID_CHARACTER_ERR=(ct[5]="Invalid character",5),P1=pt.NO_DATA_ALLOWED_ERR=(ct[6]="No data allowed",6),k1=pt.NO_MODIFICATION_ALLOWED_ERR=(ct[7]="No modification allowed",7),ug=pt.NOT_FOUND_ERR=(ct[8]="Not found",8),B1=pt.NOT_SUPPORTED_ERR=(ct[9]="Not supported",9),bc=pt.INUSE_ATTRIBUTE_ERR=(ct[10]="Attribute in use",10),F1=pt.INVALID_STATE_ERR=(ct[11]="Invalid state",11),q1=pt.SYNTAX_ERR=(ct[12]="Syntax error",12),U1=pt.INVALID_MODIFICATION_ERR=(ct[13]="Invalid modification",13),j1=pt.NAMESPACE_ERR=(ct[14]="Invalid namespace",14),X1=pt.INVALID_ACCESS_ERR=(ct[15]="Invalid access",15);function fr(e,t){if(t instanceof Error)var r=t;else r=this,Error.call(this,ct[e]),this.message=ct[e],Error.captureStackTrace&&Error.captureStackTrace(this,fr);return r.code=e,t&&(this.message=this.message+": "+t),r}fr.prototype=Error.prototype;ii(pt,fr);function ge(){}ge.prototype={length:0,item:function(e){return this[e]||null},toString:function(e,t){for(var r=[],i=0;i=0){for(var n=t.length-1;i0},lookupPrefix:function(e){for(var t=this;t;){var r=t._nsMap;if(r){for(var i in r)if(r[i]==e)return i}t=t.nodeType==hr?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){for(var t=this;t;){var r=t._nsMap;if(r&&e in r)return r[e];t=t.nodeType==hr?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){var t=this.lookupPrefix(e);return t==null}};function Ic(e){return e=="<"&&"<"||e==">"&&">"||e=="&"&&"&"||e=='"'&&"""||"&#"+e.charCodeAt()+";"}ii(St,yt);ii(St,yt.prototype);function an(e,t){if(t(e))return!0;if(e=e.firstChild)do if(an(e,t))return!0;while(e=e.nextSibling)}function si(){}function hg(e,t,r){e&&e._inc++;var i=r.namespaceURI;i=="http://www.w3.org/2000/xmlns/"&&(t._nsMap[r.prefix?r.localName:""]=r.value)}function Oc(e,t,r,i){e&&e._inc++;var n=r.namespaceURI;n=="http://www.w3.org/2000/xmlns/"&&delete t._nsMap[r.prefix?r.localName:""]}function Ws(e,t,r){if(e&&e._inc){e._inc++;var i=t.childNodes;if(r)i[i.length++]=r;else{for(var n=t.firstChild,s=0;n;)i[s++]=n,n=n.nextSibling;i.length=s}}}function Rc(e,t){var r=t.previousSibling,i=t.nextSibling;return r?r.nextSibling=i:e.firstChild=i,i?i.previousSibling=r:e.lastChild=r,Ws(e.ownerDocument,e),t}function Ac(e,t,r){var i=t.parentNode;if(i&&i.removeChild(t),t.nodeType===ee){var n=t.firstChild;if(n==null)return t;var s=t.lastChild}else n=s=t;var o=r?r.previousSibling:e.lastChild;n.previousSibling=o,s.nextSibling=r,o?o.nextSibling=n:e.firstChild=n,r==null?e.lastChild=s:r.previousSibling=s;do n.parentNode=e;while(n!==s&&(n=n.nextSibling));return Ws(e.ownerDocument||e,e),t.nodeType==ee&&(t.firstChild=t.lastChild=null),t}function fg(e,t){var r=t.parentNode;if(r){var i=e.lastChild;r.removeChild(t);var i=e.lastChild}var i=e.lastChild;return t.parentNode=e,t.previousSibling=i,t.nextSibling=null,i?i.nextSibling=t:e.firstChild=t,e.lastChild=t,Ws(e.ownerDocument,e,t),t}si.prototype={nodeName:"#document",nodeType:wc,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==ee){for(var r=e.firstChild;r;){var i=r.nextSibling;this.insertBefore(r,t),r=i}return e}return this.documentElement==null&&e.nodeType==Wt&&(this.documentElement=e),Ac(this,e,t),e.ownerDocument=this,e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),Rc(this,e)},importNode:function(e,t){return xc(this,e,t)},getElementById:function(e){var t=null;return an(this.documentElement,function(r){if(r.nodeType==Wt&&r.getAttribute("id")==e)return t=r,!0}),t},createElement:function(e){var t=new dr;t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.childNodes=new ge;var r=t.attributes=new on;return r._ownerElement=t,t},createDocumentFragment:function(){var e=new cn;return e.ownerDocument=this,e.childNodes=new ge,e},createTextNode:function(e){var t=new Hs;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new Vs;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new Ys;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var r=new Ks;return r.ownerDocument=this,r.tagName=r.target=e,r.nodeValue=r.data=t,r},createAttribute:function(e){var t=new ln;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new Zs;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var r=new dr,i=t.split(":"),n=r.attributes=new on;return r.childNodes=new ge,r.ownerDocument=this,r.nodeName=t,r.tagName=t,r.namespaceURI=e,i.length==2?(r.prefix=i[0],r.localName=i[1]):r.localName=t,n._ownerElement=r,r},createAttributeNS:function(e,t){var r=new ln,i=t.split(":");return r.ownerDocument=this,r.nodeName=t,r.name=t,r.namespaceURI=e,r.specified=!0,i.length==2?(r.prefix=i[0],r.localName=i[1]):r.localName=t,r}};_t(si,yt);function dr(){this._nsMap={}}dr.prototype={nodeType:Wt,hasAttribute:function(e){return this.getAttributeNode(e)!=null},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var r=this.ownerDocument.createAttribute(e);r.value=r.nodeValue=""+t,this.setAttributeNode(r)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===ee?this.insertBefore(e,null):fg(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);r&&this.removeAttributeNode(r)},hasAttributeNS:function(e,t){return this.getAttributeNodeNS(e,t)!=null},getAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);return r&&r.value||""},setAttributeNS:function(e,t,r){var i=this.ownerDocument.createAttributeNS(e,t);i.value=i.nodeValue=""+r,this.setAttributeNode(i)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new ni(this,function(t){var r=[];return an(t,function(i){i!==t&&i.nodeType==Wt&&(e==="*"||i.tagName==e)&&r.push(i)}),r})},getElementsByTagNameNS:function(e,t){return new ni(this,function(r){var i=[];return an(r,function(n){n!==r&&n.nodeType===Wt&&(e==="*"||n.namespaceURI===e)&&(t==="*"||n.localName==t)&&i.push(n)}),i})}};si.prototype.getElementsByTagName=dr.prototype.getElementsByTagName;si.prototype.getElementsByTagNameNS=dr.prototype.getElementsByTagNameNS;_t(dr,yt);function ln(){}ln.prototype.nodeType=hr;_t(ln,yt);function oi(){}oi.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(ct[cg])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,r){var i=this.data.substring(0,e),n=this.data.substring(e+t);r=i+r+n,this.nodeValue=this.data=r,this.length=r.length}};_t(oi,yt);function Hs(){}Hs.prototype={nodeName:"#text",nodeType:sn,splitText:function(e){var t=this.data,r=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var i=this.ownerDocument.createTextNode(r);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}};_t(Hs,oi);function Vs(){}Vs.prototype={nodeName:"#comment",nodeType:vc};_t(Vs,oi);function Ys(){}Ys.prototype={nodeName:"#cdata-section",nodeType:mc};_t(Ys,oi);function Gs(){}Gs.prototype.nodeType=Ec;_t(Gs,yt);function Lc(){}Lc.prototype.nodeType=lg;_t(Lc,yt);function Mc(){}Mc.prototype.nodeType=ag;_t(Mc,yt);function Zs(){}Zs.prototype.nodeType=yc;_t(Zs,yt);function cn(){}cn.prototype.nodeName="#document-fragment";cn.prototype.nodeType=ee;_t(cn,yt);function Ks(){}Ks.prototype.nodeType=gc;_t(Ks,yt);function Cc(){}Cc.prototype.serializeToString=function(e,t,r){return Pc.call(e,t,r)};yt.prototype.toString=Pc;function Pc(e,t){var r=[],i=this.nodeType==9?this.documentElement:this,n=i.prefix,s=i.namespaceURI;if(s&&n==null){var n=i.lookupPrefix(s);if(n==null)var o=[{namespace:s,prefix:null}]}return pr(this,r,e,t,o),r.join("")}function kc(e,t,r){var i=e.prefix||"",n=e.namespaceURI;if(!i&&!n||i==="xml"&&n==="http://www.w3.org/XML/1998/namespace"||n=="http://www.w3.org/2000/xmlns/")return!1;for(var s=r.length;s--;){var o=r[s];if(o.prefix==i)return o.namespace!=n}return!0}function pr(e,t,r,i,n){if(i)if(e=i(e),e){if(typeof e=="string"){t.push(e);return}}else return;switch(e.nodeType){case Wt:n||(n=[]);var s=n.length,o=e.attributes,l=o.length,a=e.firstChild,c=e.tagName;r=og===e.namespaceURI||r,t.push("<",c);for(var u=0;u"),r&&/^script$/i.test(c))for(;a;)a.data?t.push(a.data):pr(a,t,r,i,n),a=a.nextSibling;else for(;a;)pr(a,t,r,i,n),a=a.nextSibling;t.push("")}else t.push("/>");return;case wc:case ee:for(var a=e.firstChild;a;)pr(a,t,r,i,n),a=a.nextSibling;return;case hr:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,Ic),'"');case sn:return t.push(e.data.replace(/[<&]/g,Ic));case mc:return t.push("");case vc:return t.push("");case Ec:var m=e.publicId,w=e.systemId;if(t.push("');else if(w&&w!=".")t.push(' SYSTEM "',w,'">');else{var O=e.internalSubset;O&&t.push(" [",O,"]"),t.push(">")}return;case gc:return t.push("");case yc:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function xc(e,t,r){var i;switch(t.nodeType){case Wt:i=t.cloneNode(!1),i.ownerDocument=e;case ee:break;case hr:r=!0;break}if(i||(i=t.cloneNode(!1)),i.ownerDocument=e,i.parentNode=null,r)for(var n=t.firstChild;n;)i.appendChild(xc(e,n,r)),n=n.nextSibling;return i}function $s(e,t,r){var i=new t.constructor;for(var n in t){var s=t[n];typeof s!="object"&&s!=i[n]&&(i[n]=s)}switch(t.childNodes&&(i.childNodes=new ge),i.ownerDocument=e,i.nodeType){case Wt:var o=t.attributes,l=i.attributes=new on,a=o.length;l._ownerElement=i;for(var c=0;c{function Bc(e){this.options=e||{locator:{}}}Bc.prototype.parseFromString=function(e,t){var r=this.options,i=new dg,n=r.domBuilder||new hn,s=r.errorHandler,o=r.locator,l=r.xmlns||{},a={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return o&&n.setDocumentLocator(o),i.errorHandler=pg(s,n,o),i.domBuilder=r.domBuilder||n,/\/x?html?$/.test(t)&&(a.nbsp="\xA0",a.copy="\xA9",l[""]="http://www.w3.org/1999/xhtml"),l.xml=l.xml||"http://www.w3.org/XML/1998/namespace",e?i.parse(e,l,a):i.errorHandler.error("invalid doc source"),n.doc};function pg(e,t,r){if(!e){if(t instanceof hn)return t;e=t}var i={},n=e instanceof Function;r=r||{};function s(o){var l=e[o];!l&&n&&(l=e.length==2?function(a){e(o,a)}:e),i[o]=l&&function(a){l("[xmldom "+o+"] "+a+fn(r))}||function(){}}return s("warning"),s("error"),s("fatalError"),i}function hn(){this.cdata=!1}function mr(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}hn.prototype={startDocument:function(){this.doc=new mg().createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,r,i){var n=this.doc,s=n.createElementNS(e,r||t),o=i.length;pn(this,s),this.currentElement=s,this.locator&&mr(this.locator,s);for(var l=0;l=t+r||t?new java.lang.String(e,t,r)+"":e}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(e){hn.prototype[e]=function(){return null}});function pn(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}var dg=dc().XMLReader,mg=un.DOMImplementation=Js().DOMImplementation;un.XMLSerializer=Js().XMLSerializer;un.DOMParser=Bc});var Xc=x(Uc=>{var yg=qc().DOMParser;Uc.parse=gg;var dn=3,jc=4,vg=8;function Qs(e){return e.nodeType===dn||e.nodeType===vg||e.nodeType===jc}function re(e){return!e.childNodes||e.childNodes.length===0}function yr(e,t){if(!e)throw new Error(t)}function gg(e){var t=new yg().parseFromString(e);yr(t.documentElement.nodeName==="plist","malformed document. First element should be ");var r=gr(t.documentElement);return r.length==1&&(r=r[0]),r}function gr(e){var t,r,i,n,s,o,l,a;if(!e)return null;if(e.nodeName==="plist"){if(s=[],re(e))return s;for(t=0;t."),i=gr(e.childNodes[t])):(yr(e.childNodes[t].nodeName!=="key",'Unexpected key "'+gr(e.childNodes[t])+'" while parsing .'),r[i]=gr(e.childNodes[t])),l+=1);if(l%2==1)throw new Error('Missing value for "'+i+'" while parsing ');return r}else if(e.nodeName==="array"){if(s=[],re(e))return s;for(t=0;t{"use strict";mn.byteLength=wg;mn.toByteArray=Eg;mn.fromByteArray=bg;var Ht=[],Pt=[],_g=typeof Uint8Array!="undefined"?Uint8Array:Array,to="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var vr=0,Sg=to.length;vr0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function wg(e){var t=zc(e),r=t[0],i=t[1];return(r+i)*3/4-i}function Og(e,t,r){return(t+r)*3/4-r}function Eg(e){var t,r=zc(e),i=r[0],n=r[1],s=new _g(Og(e,i,n)),o=0,l=n>0?i-4:i,a;for(a=0;a>16&255,s[o++]=t>>8&255,s[o++]=t&255;return n===2&&(t=Pt[e.charCodeAt(a)]<<2|Pt[e.charCodeAt(a+1)]>>4,s[o++]=t&255),n===1&&(t=Pt[e.charCodeAt(a)]<<10|Pt[e.charCodeAt(a+1)]<<4|Pt[e.charCodeAt(a+2)]>>2,s[o++]=t>>8&255,s[o++]=t&255),s}function Ng(e){return Ht[e>>18&63]+Ht[e>>12&63]+Ht[e>>6&63]+Ht[e&63]}function Dg(e,t,r){for(var i,n=[],s=t;sl?l:o+s));return i===1?(t=e[r-1],n.push(Ht[t>>2]+Ht[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],n.push(Ht[t>>10]+Ht[t>>4&63]+Ht[t<<2&63]+"=")),n.join("")}});var ie=x(($c,qe)=>{(function(){var e,t,r,i,n,s,o=[].slice,l={}.hasOwnProperty;e=function(){var a,c,u,f,y,b;if(b=arguments[0],y=2<=arguments.length?o.call(arguments,1):[],i(Object.assign))Object.assign.apply(null,arguments);else for(a=0,u=y.length;a{(function(){var e;Hc.exports=e=function(){function t(r,i,n){if(this.options=r.options,this.stringify=r.stringify,i==null)throw new Error("Missing attribute name of element "+r.name);if(n==null)throw new Error("Missing attribute value for attribute "+i+" of element "+r.name);this.name=this.stringify.attName(i),this.value=this.stringify.attValue(n)}return t.prototype.clone=function(){return Object.create(this)},t.prototype.toString=function(r){return this.options.writer.set(r).attribute(this)},t}()}).call(Wc)});var ai=x((Vc,Yc)=>{(function(){var e,t,r,i,n,s,o=function(a,c){for(var u in c)l.call(c,u)&&(a[u]=c[u]);function f(){this.constructor=a}return f.prototype=c.prototype,a.prototype=new f,a.__super__=c.prototype,a},l={}.hasOwnProperty;s=ie(),n=s.isObject,i=s.isFunction,r=Ot(),e=eo(),Yc.exports=t=function(a){o(c,a);function c(u,f,y){if(c.__super__.constructor.call(this,u),f==null)throw new Error("Missing element name");this.name=this.stringify.eleName(f),this.attributes={},y!=null&&this.attribute(y),u.isDocument&&(this.isRoot=!0,this.documentObject=u,u.rootObject=this)}return c.prototype.clone=function(){var u,f,y,b;y=Object.create(this),y.isRoot&&(y.documentObject=null),y.attributes={},b=this.attributes;for(f in b)!l.call(b,f)||(u=b[f],y.attributes[f]=u.clone());return y.children=[],this.children.forEach(function(E){var m;return m=E.clone(),m.parent=y,y.children.push(m)}),y},c.prototype.attribute=function(u,f){var y,b;if(u!=null&&(u=u.valueOf()),n(u))for(y in u)!l.call(u,y)||(b=u[y],this.attribute(y,b));else i(f)&&(f=f.apply()),(!this.options.skipNullAttributes||f!=null)&&(this.attributes[u]=new e(this,u,f));return this},c.prototype.removeAttribute=function(u){var f,y,b;if(u==null)throw new Error("Missing attribute name");if(u=u.valueOf(),Array.isArray(u))for(y=0,b=u.length;y{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),Kc.exports=e=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing CDATA text");this.text=this.stringify.cdata(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).cdata(this)},s}(t)}).call(Zc)});var ci=x((Jc,Qc)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),Qc.exports=e=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing comment text");this.text=this.stringify.comment(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).comment(this)},s}(t)}).call(Jc)});var ui=x((tu,eu)=>{(function(){var e,t,r,i=function(s,o){for(var l in o)n.call(o,l)&&(s[l]=o[l]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=ie().isObject,t=Ot(),eu.exports=e=function(s){i(o,s);function o(l,a,c,u){var f;o.__super__.constructor.call(this,l),r(a)&&(f=a,a=f.version,c=f.encoding,u=f.standalone),a||(a="1.0"),this.version=this.stringify.xmlVersion(a),c!=null&&(this.encoding=this.stringify.xmlEncoding(c)),u!=null&&(this.standalone=this.stringify.xmlStandalone(u))}return o.prototype.toString=function(l){return this.options.writer.set(l).declaration(this)},o}(t)}).call(tu)});var hi=x((ru,iu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),iu.exports=e=function(n){r(s,n);function s(o,l,a,c,u,f){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing DTD element name");if(a==null)throw new Error("Missing DTD attribute name");if(!c)throw new Error("Missing DTD attribute type");if(!u)throw new Error("Missing DTD attribute default");if(u.indexOf("#")!==0&&(u="#"+u),!u.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT");if(f&&!u.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT");this.elementName=this.stringify.eleName(l),this.attributeName=this.stringify.attName(a),this.attributeType=this.stringify.dtdAttType(c),this.defaultValue=this.stringify.dtdAttDefault(f),this.defaultValueType=u}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdAttList(this)},s}(t)}).call(ru)});var fi=x((nu,su)=>{(function(){var e,t,r,i=function(s,o){for(var l in o)n.call(o,l)&&(s[l]=o[l]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=ie().isObject,t=Ot(),su.exports=e=function(s){i(o,s);function o(l,a,c,u){if(o.__super__.constructor.call(this,l),c==null)throw new Error("Missing entity name");if(u==null)throw new Error("Missing entity value");if(this.pe=!!a,this.name=this.stringify.eleName(c),!r(u))this.value=this.stringify.dtdEntityValue(u);else{if(!u.pubID&&!u.sysID)throw new Error("Public and/or system identifiers are required for an external entity");if(u.pubID&&!u.sysID)throw new Error("System identifier is required for a public external entity");if(u.pubID!=null&&(this.pubID=this.stringify.dtdPubID(u.pubID)),u.sysID!=null&&(this.sysID=this.stringify.dtdSysID(u.sysID)),u.nData!=null&&(this.nData=this.stringify.dtdNData(u.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity")}}return o.prototype.toString=function(l){return this.options.writer.set(l).dtdEntity(this)},o}(t)}).call(nu)});var pi=x((ou,au)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),au.exports=e=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing DTD element name");a||(a="(#PCDATA)"),Array.isArray(a)&&(a="("+a.join(",")+")"),this.name=this.stringify.eleName(l),this.value=this.stringify.dtdElementValue(a)}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdElement(this)},s}(t)}).call(ou)});var di=x((lu,cu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),cu.exports=e=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing notation name");if(!a.pubID&&!a.sysID)throw new Error("Public or system identifiers are required for an external entity");this.name=this.stringify.eleName(l),a.pubID!=null&&(this.pubID=this.stringify.dtdPubID(a.pubID)),a.sysID!=null&&(this.sysID=this.stringify.dtdSysID(a.sysID))}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdNotation(this)},s}(t)}).call(lu)});var mi=x((uu,hu)=>{(function(){var e,t,r,i,n,s,o,l=function(c,u){for(var f in u)a.call(u,f)&&(c[f]=u[f]);function y(){this.constructor=c}return y.prototype=u.prototype,c.prototype=new y,c.__super__=u.prototype,c},a={}.hasOwnProperty;o=ie().isObject,s=Ot(),e=hi(),r=fi(),t=pi(),i=di(),hu.exports=n=function(c){l(u,c);function u(f,y,b){var E,m;u.__super__.constructor.call(this,f),this.documentObject=f,o(y)&&(E=y,y=E.pubID,b=E.sysID),b==null&&(m=[y,b],b=m[0],y=m[1]),y!=null&&(this.pubID=this.stringify.dtdPubID(y)),b!=null&&(this.sysID=this.stringify.dtdSysID(b))}return u.prototype.element=function(f,y){var b;return b=new t(this,f,y),this.children.push(b),this},u.prototype.attList=function(f,y,b,E,m){var w;return w=new e(this,f,y,b,E,m),this.children.push(w),this},u.prototype.entity=function(f,y){var b;return b=new r(this,!1,f,y),this.children.push(b),this},u.prototype.pEntity=function(f,y){var b;return b=new r(this,!0,f,y),this.children.push(b),this},u.prototype.notation=function(f,y){var b;return b=new i(this,f,y),this.children.push(b),this},u.prototype.toString=function(f){return this.options.writer.set(f).docType(this)},u.prototype.ele=function(f,y){return this.element(f,y)},u.prototype.att=function(f,y,b,E,m){return this.attList(f,y,b,E,m)},u.prototype.ent=function(f,y){return this.entity(f,y)},u.prototype.pent=function(f,y){return this.pEntity(f,y)},u.prototype.not=function(f,y){return this.notation(f,y)},u.prototype.up=function(){return this.root()||this.documentObject},u}(s)}).call(uu)});var yi=x((fu,pu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=Ot(),pu.exports=t=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing raw text");this.value=this.stringify.raw(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).raw(this)},s}(e)}).call(fu)});var gi=x((du,mu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=Ot(),mu.exports=t=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing element text");this.value=this.stringify.eleText(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).text(this)},s}(e)}).call(du)});var vi=x((yu,gu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=Ot(),gu.exports=t=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing instruction target");this.target=this.stringify.insTarget(l),a&&(this.value=this.stringify.insValue(a))}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).processingInstruction(this)},s}(e)}).call(yu)});var Ot=x((vu,wu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b={}.hasOwnProperty;y=ie(),f=y.isObject,u=y.isFunction,c=y.isEmpty,n=null,e=null,t=null,r=null,i=null,l=null,a=null,o=null,wu.exports=s=function(){function E(m){this.parent=m,this.parent&&(this.options=this.parent.options,this.stringify=this.parent.stringify),this.children=[],n||(n=ai(),e=li(),t=ci(),r=ui(),i=mi(),l=yi(),a=gi(),o=vi())}return E.prototype.element=function(m,w,O){var d,g,N,A,_,R,B,P,D,L;if(R=null,w==null&&(w={}),w=w.valueOf(),f(w)||(D=[w,O],O=D[0],w=D[1]),m!=null&&(m=m.valueOf()),Array.isArray(m))for(N=0,B=m.length;N{(function(){var e,t=function(i,n){return function(){return i.apply(n,arguments)}},r={}.hasOwnProperty;bu.exports=e=function(){function i(n){this.assertLegalChar=t(this.assertLegalChar,this);var s,o,l;n||(n={}),this.noDoubleEncoding=n.noDoubleEncoding,o=n.stringify||{};for(s in o)!r.call(o,s)||(l=o[s],this[s]=l)}return i.prototype.eleName=function(n){return n=""+n||"",this.assertLegalChar(n)},i.prototype.eleText=function(n){return n=""+n||"",this.assertLegalChar(this.elEscape(n))},i.prototype.cdata=function(n){return n=""+n||"",n=n.replace("]]>","]]]]>"),this.assertLegalChar(n)},i.prototype.comment=function(n){if(n=""+n||"",n.match(/--/))throw new Error("Comment text cannot contain double-hypen: "+n);return this.assertLegalChar(n)},i.prototype.raw=function(n){return""+n||""},i.prototype.attName=function(n){return n=""+n||""},i.prototype.attValue=function(n){return n=""+n||"",this.attEscape(n)},i.prototype.insTarget=function(n){return""+n||""},i.prototype.insValue=function(n){if(n=""+n||"",n.match(/\?>/))throw new Error("Invalid processing instruction value: "+n);return n},i.prototype.xmlVersion=function(n){if(n=""+n||"",!n.match(/1\.[0-9]+/))throw new Error("Invalid version number: "+n);return n},i.prototype.xmlEncoding=function(n){if(n=""+n||"",!n.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/))throw new Error("Invalid encoding: "+n);return n},i.prototype.xmlStandalone=function(n){return n?"yes":"no"},i.prototype.dtdPubID=function(n){return""+n||""},i.prototype.dtdSysID=function(n){return""+n||""},i.prototype.dtdElementValue=function(n){return""+n||""},i.prototype.dtdAttType=function(n){return""+n||""},i.prototype.dtdAttDefault=function(n){return n!=null?""+n||"":n},i.prototype.dtdEntityValue=function(n){return""+n||""},i.prototype.dtdNData=function(n){return""+n||""},i.prototype.convertAttKey="@",i.prototype.convertPIKey="?",i.prototype.convertTextKey="#text",i.prototype.convertCDataKey="#cdata",i.prototype.convertCommentKey="#comment",i.prototype.convertRawKey="#raw",i.prototype.assertLegalChar=function(n){var s;if(s=n.match(/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/),s)throw new Error("Invalid character in string: "+n+" at index "+s.index);return n},i.prototype.elEscape=function(n){var s;return s=this.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,n.replace(s,"&").replace(//g,">").replace(/\r/g," ")},i.prototype.attEscape=function(n){var s;return s=this.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,n.replace(s,"&").replace(/{(function(){var e,t={}.hasOwnProperty;Su.exports=e=function(){function r(i){var n,s,o,l,a,c,u,f,y;i||(i={}),this.pretty=i.pretty||!1,this.allowEmpty=(s=i.allowEmpty)!=null?s:!1,this.pretty?(this.indent=(o=i.indent)!=null?o:" ",this.newline=(l=i.newline)!=null?l:` +var Ny=Object.create,Yi=Object.defineProperty,Dy=Object.getPrototypeOf,Ty=Object.prototype.hasOwnProperty,Ry=Object.getOwnPropertyNames,Ay=Object.getOwnPropertyDescriptor;var Zi=e=>Yi(e,"__esModule",{value:!0});var x=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Bs=(e,t)=>{for(var r in t)Yi(e,r,{get:t[r],enumerable:!0})},Iy=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ry(t))!Ty.call(e,i)&&i!=="default"&&Yi(e,i,{get:()=>t[i],enumerable:!(r=Ay(t,i))||r.enumerable});return e},Et=e=>e&&e.__esModule?e:Iy(Zi(Yi(e!=null?Ny(Dy(e)):{},"default",{value:e,enumerable:!0})),e);var Ml=x((g1,Al)=>{Al.exports=Il;Il.sync=xy;var xl=require("fs");function Ly(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{Cl.exports=Pl;Pl.sync=My;var kl=require("fs");function Pl(e,t,r){kl.stat(e,function(i,n){r(i,i?!1:Bl(n,t))})}function My(e,t){return Bl(kl.statSync(e),t)}function Bl(e,t){return e.isFile()&&Cy(e,t)}function Cy(e,t){var r=e.mode,i=e.uid,n=e.gid,s=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),o=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),l=parseInt("100",8),a=parseInt("010",8),c=parseInt("001",8),u=l|a,f=r&c||r&a&&n===o||r&l&&i===s||r&u&&s===0;return f}});var Ul=x((E1,ql)=>{var w1=require("fs"),Ki;process.platform==="win32"||global.TESTING_WINDOWS?Ki=Ml():Ki=Fl();ql.exports=Fs;Fs.sync=Py;function Fs(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){Fs(e,t||{},function(s,o){s?n(s):i(o)})})}Ki(e,t||{},function(i,n){i&&(i.code==="EACCES"||t&&t.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function Py(e,t){try{return Ki.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var qs=x((b1,jl)=>{var ar=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",Xl=require("path"),ky=ar?";":":",zl=Ul(),Gl=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),$l=(e,t)=>{let r=t.colon||ky,i=e.match(/\//)||ar&&e.match(/\\/)?[""]:[...ar?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],n=ar?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=ar?n.split(r):[""];return ar&&e.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},Wl=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});let{pathEnv:i,pathExt:n,pathExtExe:s}=$l(e,t),o=[],l=c=>new Promise((u,f)=>{if(c===i.length)return t.all&&o.length?u(o):f(Gl(e));let y=i[c],b=/^".*"$/.test(y)?y.slice(1,-1):y,E=Xl.join(b,e),m=!b&&/^\.[\\\/]/.test(e)?e.slice(0,2)+E:E;u(a(m,c,0))}),a=(c,u,f)=>new Promise((y,b)=>{if(f===n.length)return y(l(u+1));let E=n[f];zl(c+E,{pathExt:s},(m,w)=>{if(!m&&w)if(t.all)o.push(c+E);else return y(c+E);return y(a(c,u,f+1))})});return r?l(0).then(c=>r(null,c),r):l(0)},By=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=$l(e,t),s=[];for(let o=0;o{var nt=function(e){"use strict";var t=1e7,r=7,i=9007199254740992,n=y(i),s="0123456789abcdefghijklmnopqrstuvwxyz",o=typeof BigInt=="function";function l(h,p,v,S){return typeof h=="undefined"?l[0]:typeof p!="undefined"?+p==10&&!v?j(h):_y(h,p,v,S):j(h)}function a(h,p){this.value=h,this.sign=p,this.isSmall=!1}a.prototype=Object.create(l.prototype);function c(h){this.value=h,this.sign=h<0,this.isSmall=!0}c.prototype=Object.create(l.prototype);function u(h){this.value=h}u.prototype=Object.create(l.prototype);function f(h){return-i0?Math.floor(h):Math.ceil(h)}function O(h,p){var v=h.length,S=p.length,I=new Array(v),T=0,M=t,C,k;for(k=0;k=M?1:0,I[k]=C-T*M;for(;k0&&I.push(T),I}function d(h,p){return h.length>=p.length?O(h,p):O(p,h)}function g(h,p){var v=h.length,S=new Array(v),I=t,T,M;for(M=0;M0;)S[M++]=p%I,p=Math.floor(p/I);return S}a.prototype.add=function(h){var p=j(h);if(this.sign!==p.sign)return this.subtract(p.negate());var v=this.value,S=p.value;return p.isSmall?new a(g(v,Math.abs(S)),this.sign):new a(d(v,S),this.sign)},a.prototype.plus=a.prototype.add,c.prototype.add=function(h){var p=j(h),v=this.value;if(v<0!==p.sign)return this.subtract(p.negate());var S=p.value;if(p.isSmall){if(f(v+S))return new c(v+S);S=y(Math.abs(S))}return new a(g(S,Math.abs(v)),v<0)},c.prototype.plus=c.prototype.add,u.prototype.add=function(h){return new u(this.value+j(h).value)},u.prototype.plus=u.prototype.add;function N(h,p){var v=h.length,S=p.length,I=new Array(v),T=0,M=t,C,k;for(C=0;C=0?S=N(h,p):(S=N(p,h),v=!v),S=b(S),typeof S=="number"?(v&&(S=-S),new c(S)):new a(S,v)}function _(h,p,v){var S=h.length,I=new Array(S),T=-p,M=t,C,k;for(C=0;C=0)},c.prototype.minus=c.prototype.subtract,u.prototype.subtract=function(h){return new u(this.value-j(h).value)},u.prototype.minus=u.prototype.subtract,a.prototype.negate=function(){return new a(this.value,!this.sign)},c.prototype.negate=function(){var h=this.sign,p=new c(-this.value);return p.sign=!h,p},u.prototype.negate=function(){return new u(-this.value)},a.prototype.abs=function(){return new a(this.value,!1)},c.prototype.abs=function(){return new c(Math.abs(this.value))},u.prototype.abs=function(){return new u(this.value>=0?this.value:-this.value)};function R(h,p){var v=h.length,S=p.length,I=v+S,T=m(I),M=t,C,k,X,W,z;for(X=0;X0;)S[C++]=T%I,T=Math.floor(T/I);return S}function P(h,p){for(var v=[];p-- >0;)v.push(0);return v.concat(h)}function D(h,p){var v=Math.max(h.length,p.length);if(v<=30)return R(h,p);v=Math.ceil(v/2);var S=h.slice(v),I=h.slice(0,v),T=p.slice(v),M=p.slice(0,v),C=D(I,M),k=D(S,T),X=D(d(I,S),d(M,T)),W=d(d(C,P(N(N(X,C),k),v)),P(k,2*v));return E(W),W}function L(h,p){return-.012*h-.012*p+15e-6*h*p>0}a.prototype.multiply=function(h){var p=j(h),v=this.value,S=p.value,I=this.sign!==p.sign,T;if(p.isSmall){if(S===0)return l[0];if(S===1)return this;if(S===-1)return this.negate();if(T=Math.abs(S),T=0;z--){for(W=I-1,k[z+S]!==M&&(W=Math.floor((k[z+S]*I+k[z+S-1])/M)),Z=0,At=0,Ps=X.length,wt=0;wtS&&(X=(X+1)*M),C=Math.ceil(X/W);do{if(z=B(p,C),zt(z,T)<=0)break;C--}while(C);I.push(C),T=N(T,z)}return I.reverse(),[b(I),b(T)]}function G(h,p){var v=h.length,S=m(v),I=t,T,M,C,k;for(C=0,T=v-1;T>=0;--T)k=C*I+h[T],M=w(k/p),C=k-M*p,S[T]=M|0;return[S,C|0]}function it(h,p){var v,S=j(p);if(o)return[new u(h.value/S.value),new u(h.value%S.value)];var I=h.value,T=S.value,M;if(T===0)throw new Error("Cannot divide by zero");if(h.isSmall)return S.isSmall?[new c(w(I/T)),new c(I%T)]:[l[0],h];if(S.isSmall){if(T===1)return[h,l[0]];if(T==-1)return[h.negate(),l[0]];var C=Math.abs(T);if(Cp.length?1:-1;for(var v=h.length-1;v>=0;v--)if(h[v]!==p[v])return h[v]>p[v]?1:-1;return 0}a.prototype.compareAbs=function(h){var p=j(h),v=this.value,S=p.value;return p.isSmall?1:zt(v,S)},c.prototype.compareAbs=function(h){var p=j(h),v=Math.abs(this.value),S=p.value;return p.isSmall?(S=Math.abs(S),v===S?0:v>S?1:-1):-1},u.prototype.compareAbs=function(h){var p=this.value,v=j(h).value;return p=p>=0?p:-p,v=v>=0?v:-v,p===v?0:p>v?1:-1},a.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=j(h),v=this.value,S=p.value;return this.sign!==p.sign?p.sign?1:-1:p.isSmall?this.sign?-1:1:zt(v,S)*(this.sign?-1:1)},a.prototype.compareTo=a.prototype.compare,c.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=j(h),v=this.value,S=p.value;return p.isSmall?v==S?0:v>S?1:-1:v<0!==p.sign?v<0?-1:1:v<0?1:-1},c.prototype.compareTo=c.prototype.compare,u.prototype.compare=function(h){if(h===Infinity)return-1;if(h===-Infinity)return 1;var p=this.value,v=j(h).value;return p===v?0:p>v?1:-1},u.prototype.compareTo=u.prototype.compare,a.prototype.equals=function(h){return this.compare(h)===0},u.prototype.eq=u.prototype.equals=c.prototype.eq=c.prototype.equals=a.prototype.eq=a.prototype.equals,a.prototype.notEquals=function(h){return this.compare(h)!==0},u.prototype.neq=u.prototype.notEquals=c.prototype.neq=c.prototype.notEquals=a.prototype.neq=a.prototype.notEquals,a.prototype.greater=function(h){return this.compare(h)>0},u.prototype.gt=u.prototype.greater=c.prototype.gt=c.prototype.greater=a.prototype.gt=a.prototype.greater,a.prototype.lesser=function(h){return this.compare(h)<0},u.prototype.lt=u.prototype.lesser=c.prototype.lt=c.prototype.lesser=a.prototype.lt=a.prototype.lesser,a.prototype.greaterOrEquals=function(h){return this.compare(h)>=0},u.prototype.geq=u.prototype.greaterOrEquals=c.prototype.geq=c.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals,a.prototype.lesserOrEquals=function(h){return this.compare(h)<=0},u.prototype.leq=u.prototype.lesserOrEquals=c.prototype.leq=c.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals,a.prototype.isEven=function(){return(this.value[0]&1)==0},c.prototype.isEven=function(){return(this.value&1)==0},u.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)},a.prototype.isOdd=function(){return(this.value[0]&1)==1},c.prototype.isOdd=function(){return(this.value&1)==1},u.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)},a.prototype.isPositive=function(){return!this.sign},c.prototype.isPositive=function(){return this.value>0},u.prototype.isPositive=c.prototype.isPositive,a.prototype.isNegative=function(){return this.sign},c.prototype.isNegative=function(){return this.value<0},u.prototype.isNegative=c.prototype.isNegative,a.prototype.isUnit=function(){return!1},c.prototype.isUnit=function(){return Math.abs(this.value)===1},u.prototype.isUnit=function(){return this.abs().value===BigInt(1)},a.prototype.isZero=function(){return!1},c.prototype.isZero=function(){return this.value===0},u.prototype.isZero=function(){return this.value===BigInt(0)},a.prototype.isDivisibleBy=function(h){var p=j(h);return p.isZero()?!1:p.isUnit()?!0:p.compareAbs(2)===0?this.isEven():this.mod(p).isZero()},u.prototype.isDivisibleBy=c.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function sr(h){var p=h.abs();if(p.isUnit())return!1;if(p.equals(2)||p.equals(3)||p.equals(5))return!0;if(p.isEven()||p.isDivisibleBy(3)||p.isDivisibleBy(5))return!1;if(p.lesser(49))return!0}function or(h,p){for(var v=h.prev(),S=v,I=0,T,M,C,k;S.isEven();)S=S.divide(2),I++;t:for(C=0;C-i?new c(h-1):new a(n,!0)},u.prototype.prev=function(){return new u(this.value-BigInt(1))};for(var Ct=[1];2*Ct[Ct.length-1]<=t;)Ct.push(2*Ct[Ct.length-1]);var Qt=Ct.length,ke=Ct[Qt-1];function _l(h){return Math.abs(h)<=t}a.prototype.shiftLeft=function(h){var p=j(h).toJSNumber();if(!_l(p))throw new Error(String(p)+" is too large for shifting.");if(p<0)return this.shiftRight(-p);var v=this;if(v.isZero())return v;for(;p>=Qt;)v=v.multiply(ke),p-=Qt-1;return v.multiply(Ct[p])},u.prototype.shiftLeft=c.prototype.shiftLeft=a.prototype.shiftLeft,a.prototype.shiftRight=function(h){var p,v=j(h).toJSNumber();if(!_l(v))throw new Error(String(v)+" is too large for shifting.");if(v<0)return this.shiftLeft(-v);for(var S=this;v>=Qt;){if(S.isZero()||S.isNegative()&&S.isUnit())return S;p=it(S,ke),S=p[1].isNegative()?p[0].prev():p[0],v-=Qt-1}return p=it(S,Ct[v]),p[1].isNegative()?p[0].prev():p[0]},u.prototype.shiftRight=c.prototype.shiftRight=a.prototype.shiftRight;function Ls(h,p,v){p=j(p);for(var S=h.isNegative(),I=p.isNegative(),T=S?h.not():h,M=I?p.not():p,C=0,k=0,X=null,W=null,z=[];!T.isZero()||!M.isZero();)X=it(T,ke),C=X[1].toJSNumber(),S&&(C=ke-1-C),W=it(M,ke),k=W[1].toJSNumber(),I&&(k=ke-1-k),T=X[0],M=W[0],z.push(v(C,k));for(var Z=v(S?1:0,I?1:0)!==0?nt(-1):nt(0),At=z.length-1;At>=0;At-=1)Z=Z.multiply(ke).add(nt(z[At]));return Z}a.prototype.not=function(){return this.negate().prev()},u.prototype.not=c.prototype.not=a.prototype.not,a.prototype.and=function(h){return Ls(this,h,function(p,v){return p&v})},u.prototype.and=c.prototype.and=a.prototype.and,a.prototype.or=function(h){return Ls(this,h,function(p,v){return p|v})},u.prototype.or=c.prototype.or=a.prototype.or,a.prototype.xor=function(h){return Ls(this,h,function(p,v){return p^v})},u.prototype.xor=c.prototype.xor=a.prototype.xor;var Ms=1<<30,wy=(t&-t)*(t&-t)|Ms;function Vi(h){var p=h.value,v=typeof p=="number"?p|Ms:typeof p=="bigint"?p|BigInt(Ms):p[0]+p[1]*t|wy;return v&-v}function Sl(h,p){if(p.compareTo(h)<=0){var v=Sl(h,p.square(p)),S=v.p,I=v.e,T=S.multiply(p);return T.compareTo(h)<=0?{p:T,e:I*2+1}:{p:S,e:I*2}}return{p:nt(1),e:0}}a.prototype.bitLength=function(){var h=this;return h.compareTo(nt(0))<0&&(h=h.negate().subtract(nt(1))),h.compareTo(nt(0))===0?nt(0):nt(Sl(h,nt(2)).e).add(nt(1))},u.prototype.bitLength=c.prototype.bitLength=a.prototype.bitLength;function Ol(h,p){return h=j(h),p=j(p),h.greater(p)?h:p}function Cs(h,p){return h=j(h),p=j(p),h.lesser(p)?h:p}function Nl(h,p){if(h=j(h).abs(),p=j(p).abs(),h.equals(p))return h;if(h.isZero())return p;if(p.isZero())return h;for(var v=l[1],S,I;h.isEven()&&p.isEven();)S=Cs(Vi(h),Vi(p)),h=h.divide(S),p=p.divide(S),v=v.multiply(S);for(;h.isEven();)h=h.divide(Vi(h));do{for(;p.isEven();)p=p.divide(Vi(p));h.greater(p)&&(I=p,p=h,h=I),p=p.subtract(h)}while(!p.isZero());return v.isUnit()?h:h.multiply(v)}function Ey(h,p){return h=j(h).abs(),p=j(p).abs(),h.divide(Nl(h,p)).multiply(p)}function by(h,p,v){h=j(h),p=j(p);var S=v||Math.random,I=Cs(h,p),T=Ol(h,p),M=T.subtract(I).add(1);if(M.isSmall)return I.add(Math.floor(S()*M));for(var C=Qr(M,t).value,k=[],X=!0,W=0;W=M){if(k==="1"&&M===1)continue;throw new Error(k+" is not a valid digit in base "+p+".")}}p=j(p);var X=[],W=h[0]==="-";for(T=W?1:0;T"&&T=0;T--)S=S.add(h[T].times(I)),I=I.times(p);return v?S.negate():S}function Sy(h,p){return p=p||s,h"}function Qr(h,p){if(p=nt(p),p.isZero()){if(h.isZero())return{value:[0],isNegative:!1};throw new Error("Cannot convert nonzero numbers to base 0.")}if(p.equals(-1)){if(h.isZero())return{value:[0],isNegative:!1};if(h.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-h.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:!1};var v=Array.apply(null,Array(h.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);return v.unshift([1]),{value:[].concat.apply([],v),isNegative:!1}}var S=!1;if(h.isNegative()&&p.isPositive()&&(S=!0,h=h.abs()),p.isUnit())return h.isZero()?{value:[0],isNegative:!1}:{value:Array.apply(null,Array(h.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:S};for(var I=[],T=h,M;T.isNegative()||T.compareAbs(p)>=0;){M=T.divmod(p),T=M.quotient;var C=M.remainder;C.isNegative()&&(C=p.minus(C).abs(),T=T.next()),I.push(C.toJSNumber())}return I.push(T.toJSNumber()),{value:I.reverse(),isNegative:S}}function Tl(h,p,v){var S=Qr(h,p);return(S.isNegative?"-":"")+S.value.map(function(I){return Sy(I,v)}).join("")}a.prototype.toArray=function(h){return Qr(this,h)},c.prototype.toArray=function(h){return Qr(this,h)},u.prototype.toArray=function(h){return Qr(this,h)},a.prototype.toString=function(h,p){if(h===e&&(h=10),h!==10)return Tl(this,h,p);for(var v=this.value,S=v.length,I=String(v[--S]),T="0000000",M;--S>=0;)M=String(v[S]),I+=T.slice(M.length)+M;var C=this.sign?"-":"";return C+I},c.prototype.toString=function(h,p){return h===e&&(h=10),h!=10?Tl(this,h,p):String(this.value)},u.prototype.toString=c.prototype.toString,u.prototype.toJSON=a.prototype.toJSON=c.prototype.toJSON=function(){return this.toString()},a.prototype.valueOf=function(){return parseInt(this.toString(),10)},a.prototype.toJSNumber=a.prototype.valueOf,c.prototype.valueOf=function(){return this.value},c.prototype.toJSNumber=c.prototype.valueOf,u.prototype.valueOf=u.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function Rl(h){if(f(+h)){var p=+h;if(p===w(p))return o?new u(BigInt(p)):new c(p);throw new Error("Invalid integer: "+h)}var v=h[0]==="-";v&&(h=h.slice(1));var S=h.split(/e/i);if(S.length>2)throw new Error("Invalid integer: "+S.join("e"));if(S.length===2){var I=S[1];if(I[0]==="+"&&(I=I.slice(1)),I=+I,I!==w(I)||!f(I))throw new Error("Invalid integer: "+I+" is not a valid exponent.");var T=S[0],M=T.indexOf(".");if(M>=0&&(I-=T.length-M-1,T=T.slice(0,M)+T.slice(M+1)),I<0)throw new Error("Cannot include negative exponent part for integers");T+=new Array(I+1).join("0"),h=T}var C=/^([0-9][0-9]*)$/.test(h);if(!C)throw new Error("Invalid integer: "+h);if(o)return new u(BigInt(v?"-"+h:h));for(var k=[],X=h.length,W=r,z=X-W;X>0;)k.push(+h.slice(z,X)),z-=W,z<0&&(z=0),X-=W;return E(k),new a(k,v)}function Oy(h){if(o)return new u(BigInt(h));if(f(h)){if(h!==w(h))throw new Error(h+" is not an integer.");return new c(h)}return Rl(h.toString())}function j(h){return typeof h=="number"?Oy(h):typeof h=="string"?Rl(h):typeof h=="bigint"?new u(h):h}for(var Be=0;Be<1e3;Be++)l[Be]=j(Be),Be>0&&(l[-Be]=j(-Be));return l.one=l[1],l.zero=l[0],l.minusOne=l[-1],l.max=Ol,l.min=Cs,l.gcd=Nl,l.lcm=Ey,l.isInstance=function(h){return h instanceof a||h instanceof c||h instanceof u},l.randBetween=by,l.fromArray=function(h,p,v){return Dl(h.map(j),j(p||10),v)},l}();typeof Ji!="undefined"&&Ji.hasOwnProperty("exports")&&(Ji.exports=nt);typeof define=="function"&&define.amd&&define(function(){return nt})});var Vl=x(st=>{"use strict";var Fy=require("fs"),qy=Hl(),de=!1;st.maxObjectSize=100*1e3*1e3;st.maxObjectCount=32768;var Uy=9783072e5,jy=st.UID=function(e){this.UID=e},S1=st.parseFile=function(e,t){return new Promise(function(r,i){function n(s){let o=null,l;try{l=Xy(s),r(l)}catch(a){o=a,i(o)}finally{t&&t(o,l)}}if(Buffer.isBuffer(e))return n(e);Fy.readFile(e,function(s,o){if(s)return i(s),t(s);n(o)})})},Xy=st.parseBuffer=function(e){if(e.slice(0,"bplist".length).toString("utf8")!=="bplist")throw new Error("Invalid binary plist. Expected 'bplist' at offset 0.");let r=e.slice(e.length-32,e.length),i=r.readUInt8(6);de&&console.log("offsetSize: "+i);let n=r.readUInt8(7);de&&console.log("objectRefSize: "+n);let s=Us(r,8);de&&console.log("numObjects: "+s);let o=Us(r,16);de&&console.log("topObject: "+o);let l=Us(r,24);if(de&&console.log("offsetTableOffset: "+l),s>st.maxObjectCount)throw new Error("maxObjectCount exceeded");let a=[];for(let u=0;u>4,E=y&15;switch(b){case 0:return m();case 1:return O();case 8:return d();case 2:return g();case 3:return N();case 4:return A();case 5:return _();case 6:return _(!0);case 10:return R();case 13:return B();default:throw new Error("Unhandled type 0x"+b.toString(16))}function m(){switch(E){case 0:return null;case 8:return!1;case 9:return!0;case 15:return null;default:throw new Error("Unhandled simple type 0x"+b.toString(16))}}function w(P){let D="",L;for(L=0;Lst.maxObjectSize)throw new Error("To little heap space available!");let L=[];for(let F=0;Fst.maxObjectSize)throw new Error("To little heap space available!");de&&console.log("Parsing dictionary #"+u);let L={};for(let F=0;F{Yl.exports={DEFAULT_INITIAL_SIZE:8*1024,DEFAULT_INCREMENT_AMOUNT:8*1024,DEFAULT_FREQUENCY:1,DEFAULT_CHUNK_SIZE:1024}});var Jl=x((D1,Zl)=>{var Kl=require("stream"),tn=Qi(),Gy=require("util"),$y=Zl.exports=function(e){var t=this;Kl.Stream.call(this),e=e||{};var r=e.hasOwnProperty("frequency")?e.frequency:tn.DEFAULT_FREQUENCY,i=e.chunkSize||tn.DEFAULT_CHUNK_SIZE,n=e.initialSize||tn.DEFAULT_INITIAL_SIZE,s=e.incrementAmount||tn.DEFAULT_INCREMENT_AMOUNT,o=0,l=new Buffer(n),a=null;this.readable=!0,this.writable=!1;var c=function(){var f=Math.min(i,o);if(f>0){var y=null;a?y=l.toString(a,0,f):(y=new Buffer(f),l.copy(y,0,0,f)),t.emit("data",y),f0&&this.emit("readable"),!this.isPaused&&!r)for(;o>0;)c()}},this.pause=function(){this.isPaused=!0,c&&c.interval&&(clearInterval(c.interval),delete c.interval)},this.resume=function(){this.isPaused=!1,c&&!c.interval&&r>0&&(c.interval=setInterval(c,r))},this.destroy=function(){t.emit("end"),c.interval&&clearInterval(c.interval),c=null,t.readable=!1,t.emit("close")},this.destroySoon=function(){t.readable=!1,c.interval||(t.emit("end"),t.emit("close"))},this.setEncoding=function(f){a=f},this.resume()};Gy.inherits($y,Kl.Stream)});var rc=x((T1,Ql)=>{var Wy=require("util"),tc=require("stream"),ec=Qi(),Hy=Ql.exports=function(e){var t=this;tc.Stream.call(this),e=e||{};var r=e.initialSize||ec.DEFAULT_INITIAL_SIZE,i=e.incrementAmount||ec.DEFAULT_INCREMENT_AMOUNT,n=new Buffer(r),s=0;this.writable=!0,this.readable=!1,this.size=function(){return s},this.maxSize=function(){return n.length},this.getContents=function(l){if(!s)return!1;var a=new Buffer(Math.min(l||s,s));return n.copy(a,0,0,a.length),a.length{en.exports=Qi();en.exports.ReadableStreamBuffer=Jl();en.exports.WritableStreamBuffer=rc()});var sc=x((A1,js)=>{"use strict";var Vy=ic(),lt=!1;function nc(e){this.value=e}js.exports=function(e){var t=new Vy.WritableStreamBuffer;t.write(new Buffer("bplist00")),lt&&console.log("create",require("util").inspect(e,!1,10)),e instanceof Array&&e.length===1&&(e=e[0]);var r=rn(e);lt&&console.log("entries",r);var i=Zy(r.length),n=[],s,o;return l(),r.forEach(function(D,L){n[L]=t.size(),D?u(D):t.write(0)}),c(),a(),t.getContents();function l(){var D={},L=0;r.forEach(function(F){F.id||(F.type==="string"?!F.bplistOverride&&D.hasOwnProperty(F.value)?(F.type="stringref",F.id=D[F.value]):D[F.value]=F.id=L++:F.id=L++)}),r=r.filter(function(F){return F.type!=="stringref"})}function a(){lt&&console.log("0x"+t.size().toString(16),"writeTrailer"),t.write(new Buffer([0,0,0,0,0,0])),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",s),N(s),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offsetSizeInBytes):",i),N(i),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(number of objects):",r.length),g(r.length),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(top object)"),g(0),lt&&console.log("0x"+t.size().toString(16),"writeTrailer(offset table offset):",o),g(o)}function c(){lt&&console.log("0x"+t.size().toString(16),"writeOffsetTable"),o=t.size(),s=Yy(o),n.forEach(function(D){B(D,s)})}function u(D){switch(D.type){case"dict":y(D);break;case"number":case"double":b(D);break;case"UID":E(D);break;case"array":m(D);break;case"boolean":w(D);break;case"string":case"string-utf16":O(D);break;case"date":f(D);break;case"data":d(D);break;default:throw new Error("unhandled entry type: "+D.type)}}function f(D){N(51);var L=Date.parse(D.value)/1e3-978307200;A(L)}function y(D){if(lt){var L=D.entryKeys.map(function(U){return U.id}),F=D.entryValues.map(function(U){return U.id});console.log("0x"+t.size().toString(16),"writeDict","(id: "+D.id+")","(keys: "+L+")","(values: "+F+")")}_(13,D.entryKeys.length),D.entryKeys.forEach(function(U){R(U.id)}),D.entryValues.forEach(function(U){R(U.id)})}function b(D){lt&&console.log("0x"+t.size().toString(16),"writeNumber",D.value," (type: "+D.type+")","(id: "+D.id+")"),D.type!=="double"&&parseFloat(D.value.toFixed())==D.value?D.value<0?(N(19),B(D.value,8,!0)):D.value<=255?(N(16),B(D.value,1)):D.value<=65535?(N(17),B(D.value,2)):D.value<=4294967295?(N(18),B(D.value,4)):(N(20),B(D.value,8)):(N(35),A(D.value))}function E(D){lt&&console.log("0x"+t.size().toString(16),"writeUID",D.value," (type: "+D.type+")","(id: "+D.id+")"),_(8,0),R(D.value)}function m(D){lt&&console.log("0x"+t.size().toString(16),"writeArray (length: "+D.entries.length+")","(id: "+D.id+")"),_(10,D.entries.length),D.entries.forEach(function(L){R(L.id)})}function w(D){lt&&console.log("0x"+t.size().toString(16),"writeBoolean",D.value,"(id: "+D.id+")"),N(D.value?9:8)}function O(D){if(lt&&console.log("0x"+t.size().toString(16),"writeString",D.value,"(id: "+D.id+")"),D.type==="string-utf16"||P(D.value)){var L=new Buffer(D.value,"ucs2");_(6,L.length/2);for(var F=0;F4;)U[Y++]=0,L--;for(var $=L-1;$>=0;$--)U[Y++]=D>>8*$;t.write(U)}function P(D){return Buffer.byteLength(D,"utf8")!=D.length}};function rn(e){if(e.bplistOverride)return[e];if(e instanceof Array)return Ky(e);if(e instanceof Buffer)return[{type:"data",value:e}];if(e instanceof nc)return[{type:"double",value:e.value}];if(typeof e=="object")return e instanceof Date?[{type:"date",value:e}]:Object.keys(e).length==1&&typeof e.UID=="number"?[{type:"UID",value:e.UID}]:Jy(e);if(typeof e=="string")return[{type:"string",value:e}];if(typeof e=="number")return[{type:"number",value:e}];if(typeof e=="boolean")return[{type:"boolean",value:e}];if(typeof e=="bigint")return[{type:"number",value:Number(BigInt.asIntN(32,e))}];throw new Error("unhandled entry: "+e)}function Ky(e){lt&&console.log("toEntriesArray");var t=[{type:"array",entries:[]}];return e.forEach(function(r){var i=rn(r);t[0].entries.push(i[0]),t=t.concat(i)}),t}function Jy(e){lt&&console.log("toEntriesObject");var t=[{type:"dict",entryKeys:[],entryValues:[]}];return Object.keys(e).forEach(function(r){var i=rn(r);t[0].entryKeys.push(i[0]),t=t.concat(i[0])}),Object.keys(e).forEach(function(r){var i=rn(e[r]);t[0].entryValues.push(i[0]),t=t.concat(i)}),t}function Yy(e){return e<256?1:e<65536?2:e<4294967296?4:8}function Zy(e){return e<256?1:e<65536?2:4}js.exports.Real=nc});var dc=x(oc=>{var Xs=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,ac=new RegExp("[\\-\\.0-9"+Xs.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),lc=new RegExp("^"+Xs.source+ac.source+"*(?::"+Xs.source+ac.source+"*)?$"),ti=0,me=1,lr=2,ei=3,cr=4,ur=5,ri=6,nn=7;function cc(){}cc.prototype={parse:function(e,t,r){var i=this.domBuilder;i.startDocument(),uc(t,t={}),Qy(e,t,r,i,this.errorHandler),i.endDocument()}};function Qy(e,t,r,i,n){function s(G){if(G>65535){G-=65536;var it=55296+(G>>10),zt=56320+(G&1023);return String.fromCharCode(it,zt)}else return String.fromCharCode(G)}function o(G){var it=G.slice(1,-1);return it in r?r[it]:it.charAt(0)==="#"?s(parseInt(it.substr(1).replace("x","0x"))):(n.error("entity not found:"+G),G)}function l(G){if(G>m){var it=e.substring(m,G).replace(/&#?\w+;/g,o);y&&a(m),i.characters(it,0,G-m),m=G}}function a(G,it){for(;G>=u&&(it=f.exec(e));)c=it.index,u=c+it[0].length,y.lineNumber++;y.columnNumber=G-c+1}for(var c=0,u=0,f=/.*(?:\r\n?|\n)|.*$/g,y=i.locator,b=[{currentNSMap:t}],E={},m=0;;){try{var w=e.indexOf("<",m);if(w<0){if(!e.substr(m).match(/^\s*$/)){var O=i.doc,d=O.createTextNode(e.substr(m));O.appendChild(d),i.currentElement=d}return}switch(w>m&&l(w),e.charAt(w+1)){case"/":var g=e.indexOf(">",w+3),N=e.substring(w+2,g),A=b.pop();g<0?(N=e.substring(w+2).replace(/[\s<].*/,""),n.error("end tag name: "+N+" is not complete:"+A.tagName),g=w+1+N.length):N.match(/\sm?m=g:l(Math.max(w,m)+1)}}function hc(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function tg(e,t,r,i,n,s){for(var o,l,a=++t,c=ti;;){var u=e.charAt(a);switch(u){case"=":if(c===me)o=e.slice(t,a),c=ei;else if(c===lr)c=ei;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(c===ei||c===me)if(c===me&&(s.warning('attribute value must after "="'),o=e.slice(t,a)),t=a+1,a=e.indexOf(u,t),a>0)l=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,l,t-1),c=ur;else throw new Error("attribute value no end '"+u+"' match");else if(c==cr)l=e.slice(t,a).replace(/&#?\w+;/g,n),r.add(o,l,t),s.warning('attribute "'+o+'" missed start quot('+u+")!!"),t=a+1,c=ur;else throw new Error('attribute value must after "="');break;case"/":switch(c){case ti:r.setTagName(e.slice(t,a));case ur:case ri:case nn:c=nn,r.closed=!0;case cr:case me:case lr:break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),c==ti&&r.setTagName(e.slice(t,a)),a;case">":switch(c){case ti:r.setTagName(e.slice(t,a));case ur:case ri:case nn:break;case cr:case me:l=e.slice(t,a),l.slice(-1)==="/"&&(r.closed=!0,l=l.slice(0,-1));case lr:c===lr&&(l=o),c==cr?(s.warning('attribute "'+l+'" missed quot(")!!'),r.add(o,l.replace(/&#?\w+;/g,n),t)):((i[""]!=="http://www.w3.org/1999/xhtml"||!l.match(/^(?:disabled|checked|selected)$/i))&&s.warning('attribute "'+l+'" missed value!! "'+l+'" instead!!'),r.add(l,l,t));break;case ei:throw new Error("attribute value missed!!")}return a;case"\x80":u=" ";default:if(u<=" ")switch(c){case ti:r.setTagName(e.slice(t,a)),c=ri;break;case me:o=e.slice(t,a),c=lr;break;case cr:var l=e.slice(t,a).replace(/&#?\w+;/g,n);s.warning('attribute "'+l+'" missed quot(")!!'),r.add(o,l,t);case ur:c=ri;break}else switch(c){case lr:var f=r.tagName;(i[""]!=="http://www.w3.org/1999/xhtml"||!o.match(/^(?:disabled|checked|selected)$/i))&&s.warning('attribute "'+o+'" missed value!! "'+o+'" instead2!!'),r.add(o,o,t),t=a,c=me;break;case ur:s.warning('attribute space is required"'+o+'"!!');case ri:c=me,t=a;break;case ei:c=cr,t=a;break;case nn:throw new Error("elements closed character '/' and '>' must be connected to")}}a++}}function fc(e,t,r){for(var i=e.tagName,n=null,s=e.length;s--;){var o=e[s],l=o.qName,a=o.value,y=l.indexOf(":");if(y>0)var c=o.prefix=l.slice(0,y),u=l.slice(y+1),f=c==="xmlns"&&u;else u=l,c=null,f=l==="xmlns"&&"";o.localName=u,f!==!1&&(n==null&&(n={},uc(r,r={})),r[f]=n[f]=a,o.uri="http://www.w3.org/2000/xmlns/",t.startPrefixMapping(f,a))}for(var s=e.length;s--;){o=e[s];var c=o.prefix;c&&(c==="xml"&&(o.uri="http://www.w3.org/XML/1998/namespace"),c!=="xmlns"&&(o.uri=r[c||""]))}var y=i.indexOf(":");y>0?(c=e.prefix=i.slice(0,y),u=e.localName=i.slice(y+1)):(c=null,u=e.localName=i);var b=e.uri=r[c||""];if(t.startElement(b,u,i,e),e.closed){if(t.endElement(b,u,i),n)for(c in n)t.endPrefixMapping(c)}else return e.currentNSMap=r,e.localNSMap=n,!0}function eg(e,t,r,i,n){if(/^(?:script|textarea)$/i.test(r)){var s=e.indexOf("",t),o=e.substring(t+1,s);if(/[&<]/.test(o))return/^script$/i.test(r)?(n.characters(o,0,o.length),s):(o=o.replace(/&#?\w+;/g,i),n.characters(o,0,o.length),s)}return t+1}function rg(e,t,r,i){var n=i[r];return n==null&&(n=e.lastIndexOf(""),n",t+4);return s>t?(r.comment(e,t+4,s-t-4),s+3):(i.error("Unclosed comment"),-1)}else return-1;default:if(e.substr(t+3,6)=="CDATA["){var s=e.indexOf("]]>",t+9);return r.startCDATA(),r.characters(e,t+9,s-t-9),r.endCDATA(),s+3}var o=sg(e,t),l=o.length;if(l>1&&/!doctype/i.test(o[0][0])){var a=o[1][0],c=l>3&&/^public$/i.test(o[2][0])&&o[3][0],u=l>4&&o[4][0],f=o[l-1];return r.startDTD(a,c&&c.replace(/^(['"])(.*?)\1$/,"$2"),u&&u.replace(/^(['"])(.*?)\1$/,"$2")),r.endDTD(),f.index+f[0].length}}return-1}function ng(e,t,r){var i=e.indexOf("?>",t);if(i){var n=e.substring(t,i).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(n){var s=n[0].length;return r.processingInstruction(n[1],n[2]),i+2}else return-1}return-1}function pc(e){}pc.prototype={setTagName:function(e){if(!lc.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},add:function(e,t,r){if(!lc.test(e))throw new Error("invalid attribute:"+e);this[this.length++]={qName:e,value:t,offset:r}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}};function sn(e,t){return e.__proto__=t,e}sn({},sn.prototype)instanceof sn||(sn=function(e,t){function r(){}r.prototype=t,r=new r;for(t in e)r[t]=e[t];return r});function sg(e,t){var r,i=[],n=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;for(n.lastIndex=t,n.exec(e);r=n.exec(e);)if(i.push(r),r[1])return i}oc.XMLReader=cc});var Qs=x(zs=>{function ii(e,t){for(var r in e)t[r]=e[r]}function _t(e,t){var r=e.prototype;if(Object.create){var i=Object.create(t.prototype);r.__proto__=i}if(!(r instanceof t)){let s=function(){};var n=s;s.prototype=t.prototype,s=new s,ii(r,s),e.prototype=r=s}r.constructor!=e&&(typeof e!="function"&&console.error("unknow Class:"+e),r.constructor=e)}var og="http://www.w3.org/1999/xhtml",St={},$t=St.ELEMENT_NODE=1,hr=St.ATTRIBUTE_NODE=2,on=St.TEXT_NODE=3,mc=St.CDATA_SECTION_NODE=4,yc=St.ENTITY_REFERENCE_NODE=5,ag=St.ENTITY_NODE=6,gc=St.PROCESSING_INSTRUCTION_NODE=7,vc=St.COMMENT_NODE=8,wc=St.DOCUMENT_NODE=9,Ec=St.DOCUMENT_TYPE_NODE=10,te=St.DOCUMENT_FRAGMENT_NODE=11,lg=St.NOTATION_NODE=12,pt={},ct={},x1=pt.INDEX_SIZE_ERR=(ct[1]="Index size error",1),L1=pt.DOMSTRING_SIZE_ERR=(ct[2]="DOMString size error",2),cg=pt.HIERARCHY_REQUEST_ERR=(ct[3]="Hierarchy request error",3),M1=pt.WRONG_DOCUMENT_ERR=(ct[4]="Wrong document",4),C1=pt.INVALID_CHARACTER_ERR=(ct[5]="Invalid character",5),P1=pt.NO_DATA_ALLOWED_ERR=(ct[6]="No data allowed",6),k1=pt.NO_MODIFICATION_ALLOWED_ERR=(ct[7]="No modification allowed",7),ug=pt.NOT_FOUND_ERR=(ct[8]="Not found",8),B1=pt.NOT_SUPPORTED_ERR=(ct[9]="Not supported",9),bc=pt.INUSE_ATTRIBUTE_ERR=(ct[10]="Attribute in use",10),F1=pt.INVALID_STATE_ERR=(ct[11]="Invalid state",11),q1=pt.SYNTAX_ERR=(ct[12]="Syntax error",12),U1=pt.INVALID_MODIFICATION_ERR=(ct[13]="Invalid modification",13),j1=pt.NAMESPACE_ERR=(ct[14]="Invalid namespace",14),X1=pt.INVALID_ACCESS_ERR=(ct[15]="Invalid access",15);function fr(e,t){if(t instanceof Error)var r=t;else r=this,Error.call(this,ct[e]),this.message=ct[e],Error.captureStackTrace&&Error.captureStackTrace(this,fr);return r.code=e,t&&(this.message=this.message+": "+t),r}fr.prototype=Error.prototype;ii(pt,fr);function ye(){}ye.prototype={length:0,item:function(e){return this[e]||null},toString:function(e,t){for(var r=[],i=0;i=0){for(var n=t.length-1;i0},lookupPrefix:function(e){for(var t=this;t;){var r=t._nsMap;if(r){for(var i in r)if(r[i]==e)return i}t=t.nodeType==hr?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){for(var t=this;t;){var r=t._nsMap;if(r&&e in r)return r[e];t=t.nodeType==hr?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){var t=this.lookupPrefix(e);return t==null}};function Ic(e){return e=="<"&&"<"||e==">"&&">"||e=="&"&&"&"||e=='"'&&"""||"&#"+e.charCodeAt()+";"}ii(St,yt);ii(St,yt.prototype);function ln(e,t){if(t(e))return!0;if(e=e.firstChild)do if(ln(e,t))return!0;while(e=e.nextSibling)}function si(){}function hg(e,t,r){e&&e._inc++;var i=r.namespaceURI;i=="http://www.w3.org/2000/xmlns/"&&(t._nsMap[r.prefix?r.localName:""]=r.value)}function Oc(e,t,r,i){e&&e._inc++;var n=r.namespaceURI;n=="http://www.w3.org/2000/xmlns/"&&delete t._nsMap[r.prefix?r.localName:""]}function Hs(e,t,r){if(e&&e._inc){e._inc++;var i=t.childNodes;if(r)i[i.length++]=r;else{for(var n=t.firstChild,s=0;n;)i[s++]=n,n=n.nextSibling;i.length=s}}}function Rc(e,t){var r=t.previousSibling,i=t.nextSibling;return r?r.nextSibling=i:e.firstChild=i,i?i.previousSibling=r:e.lastChild=r,Hs(e.ownerDocument,e),t}function Ac(e,t,r){var i=t.parentNode;if(i&&i.removeChild(t),t.nodeType===te){var n=t.firstChild;if(n==null)return t;var s=t.lastChild}else n=s=t;var o=r?r.previousSibling:e.lastChild;n.previousSibling=o,s.nextSibling=r,o?o.nextSibling=n:e.firstChild=n,r==null?e.lastChild=s:r.previousSibling=s;do n.parentNode=e;while(n!==s&&(n=n.nextSibling));return Hs(e.ownerDocument||e,e),t.nodeType==te&&(t.firstChild=t.lastChild=null),t}function fg(e,t){var r=t.parentNode;if(r){var i=e.lastChild;r.removeChild(t);var i=e.lastChild}var i=e.lastChild;return t.parentNode=e,t.previousSibling=i,t.nextSibling=null,i?i.nextSibling=t:e.firstChild=t,e.lastChild=t,Hs(e.ownerDocument,e,t),t}si.prototype={nodeName:"#document",nodeType:wc,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==te){for(var r=e.firstChild;r;){var i=r.nextSibling;this.insertBefore(r,t),r=i}return e}return this.documentElement==null&&e.nodeType==$t&&(this.documentElement=e),Ac(this,e,t),e.ownerDocument=this,e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),Rc(this,e)},importNode:function(e,t){return xc(this,e,t)},getElementById:function(e){var t=null;return ln(this.documentElement,function(r){if(r.nodeType==$t&&r.getAttribute("id")==e)return t=r,!0}),t},createElement:function(e){var t=new dr;t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.childNodes=new ye;var r=t.attributes=new an;return r._ownerElement=t,t},createDocumentFragment:function(){var e=new un;return e.ownerDocument=this,e.childNodes=new ye,e},createTextNode:function(e){var t=new Vs;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new Ys;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new Zs;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var r=new Js;return r.ownerDocument=this,r.tagName=r.target=e,r.nodeValue=r.data=t,r},createAttribute:function(e){var t=new cn;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new Ks;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var r=new dr,i=t.split(":"),n=r.attributes=new an;return r.childNodes=new ye,r.ownerDocument=this,r.nodeName=t,r.tagName=t,r.namespaceURI=e,i.length==2?(r.prefix=i[0],r.localName=i[1]):r.localName=t,n._ownerElement=r,r},createAttributeNS:function(e,t){var r=new cn,i=t.split(":");return r.ownerDocument=this,r.nodeName=t,r.name=t,r.namespaceURI=e,r.specified=!0,i.length==2?(r.prefix=i[0],r.localName=i[1]):r.localName=t,r}};_t(si,yt);function dr(){this._nsMap={}}dr.prototype={nodeType:$t,hasAttribute:function(e){return this.getAttributeNode(e)!=null},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var r=this.ownerDocument.createAttribute(e);r.value=r.nodeValue=""+t,this.setAttributeNode(r)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===te?this.insertBefore(e,null):fg(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);r&&this.removeAttributeNode(r)},hasAttributeNS:function(e,t){return this.getAttributeNodeNS(e,t)!=null},getAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);return r&&r.value||""},setAttributeNS:function(e,t,r){var i=this.ownerDocument.createAttributeNS(e,t);i.value=i.nodeValue=""+r,this.setAttributeNode(i)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new ni(this,function(t){var r=[];return ln(t,function(i){i!==t&&i.nodeType==$t&&(e==="*"||i.tagName==e)&&r.push(i)}),r})},getElementsByTagNameNS:function(e,t){return new ni(this,function(r){var i=[];return ln(r,function(n){n!==r&&n.nodeType===$t&&(e==="*"||n.namespaceURI===e)&&(t==="*"||n.localName==t)&&i.push(n)}),i})}};si.prototype.getElementsByTagName=dr.prototype.getElementsByTagName;si.prototype.getElementsByTagNameNS=dr.prototype.getElementsByTagNameNS;_t(dr,yt);function cn(){}cn.prototype.nodeType=hr;_t(cn,yt);function oi(){}oi.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(ct[cg])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,r){var i=this.data.substring(0,e),n=this.data.substring(e+t);r=i+r+n,this.nodeValue=this.data=r,this.length=r.length}};_t(oi,yt);function Vs(){}Vs.prototype={nodeName:"#text",nodeType:on,splitText:function(e){var t=this.data,r=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var i=this.ownerDocument.createTextNode(r);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}};_t(Vs,oi);function Ys(){}Ys.prototype={nodeName:"#comment",nodeType:vc};_t(Ys,oi);function Zs(){}Zs.prototype={nodeName:"#cdata-section",nodeType:mc};_t(Zs,oi);function $s(){}$s.prototype.nodeType=Ec;_t($s,yt);function Lc(){}Lc.prototype.nodeType=lg;_t(Lc,yt);function Mc(){}Mc.prototype.nodeType=ag;_t(Mc,yt);function Ks(){}Ks.prototype.nodeType=yc;_t(Ks,yt);function un(){}un.prototype.nodeName="#document-fragment";un.prototype.nodeType=te;_t(un,yt);function Js(){}Js.prototype.nodeType=gc;_t(Js,yt);function Cc(){}Cc.prototype.serializeToString=function(e,t,r){return Pc.call(e,t,r)};yt.prototype.toString=Pc;function Pc(e,t){var r=[],i=this.nodeType==9?this.documentElement:this,n=i.prefix,s=i.namespaceURI;if(s&&n==null){var n=i.lookupPrefix(s);if(n==null)var o=[{namespace:s,prefix:null}]}return pr(this,r,e,t,o),r.join("")}function kc(e,t,r){var i=e.prefix||"",n=e.namespaceURI;if(!i&&!n||i==="xml"&&n==="http://www.w3.org/XML/1998/namespace"||n=="http://www.w3.org/2000/xmlns/")return!1;for(var s=r.length;s--;){var o=r[s];if(o.prefix==i)return o.namespace!=n}return!0}function pr(e,t,r,i,n){if(i)if(e=i(e),e){if(typeof e=="string"){t.push(e);return}}else return;switch(e.nodeType){case $t:n||(n=[]);var s=n.length,o=e.attributes,l=o.length,a=e.firstChild,c=e.tagName;r=og===e.namespaceURI||r,t.push("<",c);for(var u=0;u"),r&&/^script$/i.test(c))for(;a;)a.data?t.push(a.data):pr(a,t,r,i,n),a=a.nextSibling;else for(;a;)pr(a,t,r,i,n),a=a.nextSibling;t.push("")}else t.push("/>");return;case wc:case te:for(var a=e.firstChild;a;)pr(a,t,r,i,n),a=a.nextSibling;return;case hr:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,Ic),'"');case on:return t.push(e.data.replace(/[<&]/g,Ic));case mc:return t.push("");case vc:return t.push("");case Ec:var m=e.publicId,w=e.systemId;if(t.push("');else if(w&&w!=".")t.push(' SYSTEM "',w,'">');else{var O=e.internalSubset;O&&t.push(" [",O,"]"),t.push(">")}return;case gc:return t.push("");case yc:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function xc(e,t,r){var i;switch(t.nodeType){case $t:i=t.cloneNode(!1),i.ownerDocument=e;case te:break;case hr:r=!0;break}if(i||(i=t.cloneNode(!1)),i.ownerDocument=e,i.parentNode=null,r)for(var n=t.firstChild;n;)i.appendChild(xc(e,n,r)),n=n.nextSibling;return i}function Ws(e,t,r){var i=new t.constructor;for(var n in t){var s=t[n];typeof s!="object"&&s!=i[n]&&(i[n]=s)}switch(t.childNodes&&(i.childNodes=new ye),i.ownerDocument=e,i.nodeType){case $t:var o=t.attributes,l=i.attributes=new an,a=o.length;l._ownerElement=i;for(var c=0;c{function Bc(e){this.options=e||{locator:{}}}Bc.prototype.parseFromString=function(e,t){var r=this.options,i=new dg,n=r.domBuilder||new fn,s=r.errorHandler,o=r.locator,l=r.xmlns||{},a={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return o&&n.setDocumentLocator(o),i.errorHandler=pg(s,n,o),i.domBuilder=r.domBuilder||n,/\/x?html?$/.test(t)&&(a.nbsp="\xA0",a.copy="\xA9",l[""]="http://www.w3.org/1999/xhtml"),l.xml=l.xml||"http://www.w3.org/XML/1998/namespace",e?i.parse(e,l,a):i.errorHandler.error("invalid doc source"),n.doc};function pg(e,t,r){if(!e){if(t instanceof fn)return t;e=t}var i={},n=e instanceof Function;r=r||{};function s(o){var l=e[o];!l&&n&&(l=e.length==2?function(a){e(o,a)}:e),i[o]=l&&function(a){l("[xmldom "+o+"] "+a+pn(r))}||function(){}}return s("warning"),s("error"),s("fatalError"),i}function fn(){this.cdata=!1}function mr(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}fn.prototype={startDocument:function(){this.doc=new mg().createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,r,i){var n=this.doc,s=n.createElementNS(e,r||t),o=i.length;dn(this,s),this.currentElement=s,this.locator&&mr(this.locator,s);for(var l=0;l=t+r||t?new java.lang.String(e,t,r)+"":e}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(e){fn.prototype[e]=function(){return null}});function dn(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}var dg=dc().XMLReader,mg=hn.DOMImplementation=Qs().DOMImplementation;hn.XMLSerializer=Qs().XMLSerializer;hn.DOMParser=Bc});var Xc=x(Uc=>{var yg=qc().DOMParser;Uc.parse=gg;var mn=3,jc=4,vg=8;function to(e){return e.nodeType===mn||e.nodeType===vg||e.nodeType===jc}function ee(e){return!e.childNodes||e.childNodes.length===0}function yr(e,t){if(!e)throw new Error(t)}function gg(e){var t=new yg().parseFromString(e);yr(t.documentElement.nodeName==="plist","malformed document. First element should be ");var r=gr(t.documentElement);return r.length==1&&(r=r[0]),r}function gr(e){var t,r,i,n,s,o,l,a;if(!e)return null;if(e.nodeName==="plist"){if(s=[],ee(e))return s;for(t=0;t."),i=gr(e.childNodes[t])):(yr(e.childNodes[t].nodeName!=="key",'Unexpected key "'+gr(e.childNodes[t])+'" while parsing .'),r[i]=gr(e.childNodes[t])),l+=1);if(l%2==1)throw new Error('Missing value for "'+i+'" while parsing ');return r}else if(e.nodeName==="array"){if(s=[],ee(e))return s;for(t=0;t{"use strict";yn.byteLength=wg;yn.toByteArray=Eg;yn.fromByteArray=bg;var Wt=[],Pt=[],_g=typeof Uint8Array!="undefined"?Uint8Array:Array,eo="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var vr=0,Sg=eo.length;vr0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var i=r===t?0:4-r%4;return[r,i]}function wg(e){var t=zc(e),r=t[0],i=t[1];return(r+i)*3/4-i}function Og(e,t,r){return(t+r)*3/4-r}function Eg(e){var t,r=zc(e),i=r[0],n=r[1],s=new _g(Og(e,i,n)),o=0,l=n>0?i-4:i,a;for(a=0;a>16&255,s[o++]=t>>8&255,s[o++]=t&255;return n===2&&(t=Pt[e.charCodeAt(a)]<<2|Pt[e.charCodeAt(a+1)]>>4,s[o++]=t&255),n===1&&(t=Pt[e.charCodeAt(a)]<<10|Pt[e.charCodeAt(a+1)]<<4|Pt[e.charCodeAt(a+2)]>>2,s[o++]=t>>8&255,s[o++]=t&255),s}function Ng(e){return Wt[e>>18&63]+Wt[e>>12&63]+Wt[e>>6&63]+Wt[e&63]}function Dg(e,t,r){for(var i,n=[],s=t;sl?l:o+s));return i===1?(t=e[r-1],n.push(Wt[t>>2]+Wt[t<<4&63]+"==")):i===2&&(t=(e[r-2]<<8)+e[r-1],n.push(Wt[t>>10]+Wt[t>>4&63]+Wt[t<<2&63]+"=")),n.join("")}});var re=x(($c,Fe)=>{(function(){var e,t,r,i,n,s,o=[].slice,l={}.hasOwnProperty;e=function(){var a,c,u,f,y,b;if(b=arguments[0],y=2<=arguments.length?o.call(arguments,1):[],i(Object.assign))Object.assign.apply(null,arguments);else for(a=0,u=y.length;a{(function(){var e;Hc.exports=e=function(){function t(r,i,n){if(this.options=r.options,this.stringify=r.stringify,i==null)throw new Error("Missing attribute name of element "+r.name);if(n==null)throw new Error("Missing attribute value for attribute "+i+" of element "+r.name);this.name=this.stringify.attName(i),this.value=this.stringify.attValue(n)}return t.prototype.clone=function(){return Object.create(this)},t.prototype.toString=function(r){return this.options.writer.set(r).attribute(this)},t}()}).call(Wc)});var ai=x((Vc,Yc)=>{(function(){var e,t,r,i,n,s,o=function(a,c){for(var u in c)l.call(c,u)&&(a[u]=c[u]);function f(){this.constructor=a}return f.prototype=c.prototype,a.prototype=new f,a.__super__=c.prototype,a},l={}.hasOwnProperty;s=re(),n=s.isObject,i=s.isFunction,r=Ot(),e=ro(),Yc.exports=t=function(a){o(c,a);function c(u,f,y){if(c.__super__.constructor.call(this,u),f==null)throw new Error("Missing element name");this.name=this.stringify.eleName(f),this.attributes={},y!=null&&this.attribute(y),u.isDocument&&(this.isRoot=!0,this.documentObject=u,u.rootObject=this)}return c.prototype.clone=function(){var u,f,y,b;y=Object.create(this),y.isRoot&&(y.documentObject=null),y.attributes={},b=this.attributes;for(f in b)!l.call(b,f)||(u=b[f],y.attributes[f]=u.clone());return y.children=[],this.children.forEach(function(E){var m;return m=E.clone(),m.parent=y,y.children.push(m)}),y},c.prototype.attribute=function(u,f){var y,b;if(u!=null&&(u=u.valueOf()),n(u))for(y in u)!l.call(u,y)||(b=u[y],this.attribute(y,b));else i(f)&&(f=f.apply()),(!this.options.skipNullAttributes||f!=null)&&(this.attributes[u]=new e(this,u,f));return this},c.prototype.removeAttribute=function(u){var f,y,b;if(u==null)throw new Error("Missing attribute name");if(u=u.valueOf(),Array.isArray(u))for(y=0,b=u.length;y{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),Kc.exports=e=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing CDATA text");this.text=this.stringify.cdata(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).cdata(this)},s}(t)}).call(Zc)});var ci=x((Jc,Qc)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),Qc.exports=e=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing comment text");this.text=this.stringify.comment(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).comment(this)},s}(t)}).call(Jc)});var ui=x((tu,eu)=>{(function(){var e,t,r,i=function(s,o){for(var l in o)n.call(o,l)&&(s[l]=o[l]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=re().isObject,t=Ot(),eu.exports=e=function(s){i(o,s);function o(l,a,c,u){var f;o.__super__.constructor.call(this,l),r(a)&&(f=a,a=f.version,c=f.encoding,u=f.standalone),a||(a="1.0"),this.version=this.stringify.xmlVersion(a),c!=null&&(this.encoding=this.stringify.xmlEncoding(c)),u!=null&&(this.standalone=this.stringify.xmlStandalone(u))}return o.prototype.toString=function(l){return this.options.writer.set(l).declaration(this)},o}(t)}).call(tu)});var hi=x((ru,iu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),iu.exports=e=function(n){r(s,n);function s(o,l,a,c,u,f){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing DTD element name");if(a==null)throw new Error("Missing DTD attribute name");if(!c)throw new Error("Missing DTD attribute type");if(!u)throw new Error("Missing DTD attribute default");if(u.indexOf("#")!==0&&(u="#"+u),!u.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT");if(f&&!u.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT");this.elementName=this.stringify.eleName(l),this.attributeName=this.stringify.attName(a),this.attributeType=this.stringify.dtdAttType(c),this.defaultValue=this.stringify.dtdAttDefault(f),this.defaultValueType=u}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdAttList(this)},s}(t)}).call(ru)});var fi=x((nu,su)=>{(function(){var e,t,r,i=function(s,o){for(var l in o)n.call(o,l)&&(s[l]=o[l]);function a(){this.constructor=s}return a.prototype=o.prototype,s.prototype=new a,s.__super__=o.prototype,s},n={}.hasOwnProperty;r=re().isObject,t=Ot(),su.exports=e=function(s){i(o,s);function o(l,a,c,u){if(o.__super__.constructor.call(this,l),c==null)throw new Error("Missing entity name");if(u==null)throw new Error("Missing entity value");if(this.pe=!!a,this.name=this.stringify.eleName(c),!r(u))this.value=this.stringify.dtdEntityValue(u);else{if(!u.pubID&&!u.sysID)throw new Error("Public and/or system identifiers are required for an external entity");if(u.pubID&&!u.sysID)throw new Error("System identifier is required for a public external entity");if(u.pubID!=null&&(this.pubID=this.stringify.dtdPubID(u.pubID)),u.sysID!=null&&(this.sysID=this.stringify.dtdSysID(u.sysID)),u.nData!=null&&(this.nData=this.stringify.dtdNData(u.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity")}}return o.prototype.toString=function(l){return this.options.writer.set(l).dtdEntity(this)},o}(t)}).call(nu)});var pi=x((ou,au)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),au.exports=e=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing DTD element name");a||(a="(#PCDATA)"),Array.isArray(a)&&(a="("+a.join(",")+")"),this.name=this.stringify.eleName(l),this.value=this.stringify.dtdElementValue(a)}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdElement(this)},s}(t)}).call(ou)});var di=x((lu,cu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;t=Ot(),cu.exports=e=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing notation name");if(!a.pubID&&!a.sysID)throw new Error("Public or system identifiers are required for an external entity");this.name=this.stringify.eleName(l),a.pubID!=null&&(this.pubID=this.stringify.dtdPubID(a.pubID)),a.sysID!=null&&(this.sysID=this.stringify.dtdSysID(a.sysID))}return s.prototype.toString=function(o){return this.options.writer.set(o).dtdNotation(this)},s}(t)}).call(lu)});var mi=x((uu,hu)=>{(function(){var e,t,r,i,n,s,o,l=function(c,u){for(var f in u)a.call(u,f)&&(c[f]=u[f]);function y(){this.constructor=c}return y.prototype=u.prototype,c.prototype=new y,c.__super__=u.prototype,c},a={}.hasOwnProperty;o=re().isObject,s=Ot(),e=hi(),r=fi(),t=pi(),i=di(),hu.exports=n=function(c){l(u,c);function u(f,y,b){var E,m;u.__super__.constructor.call(this,f),this.documentObject=f,o(y)&&(E=y,y=E.pubID,b=E.sysID),b==null&&(m=[y,b],b=m[0],y=m[1]),y!=null&&(this.pubID=this.stringify.dtdPubID(y)),b!=null&&(this.sysID=this.stringify.dtdSysID(b))}return u.prototype.element=function(f,y){var b;return b=new t(this,f,y),this.children.push(b),this},u.prototype.attList=function(f,y,b,E,m){var w;return w=new e(this,f,y,b,E,m),this.children.push(w),this},u.prototype.entity=function(f,y){var b;return b=new r(this,!1,f,y),this.children.push(b),this},u.prototype.pEntity=function(f,y){var b;return b=new r(this,!0,f,y),this.children.push(b),this},u.prototype.notation=function(f,y){var b;return b=new i(this,f,y),this.children.push(b),this},u.prototype.toString=function(f){return this.options.writer.set(f).docType(this)},u.prototype.ele=function(f,y){return this.element(f,y)},u.prototype.att=function(f,y,b,E,m){return this.attList(f,y,b,E,m)},u.prototype.ent=function(f,y){return this.entity(f,y)},u.prototype.pent=function(f,y){return this.pEntity(f,y)},u.prototype.not=function(f,y){return this.notation(f,y)},u.prototype.up=function(){return this.root()||this.documentObject},u}(s)}).call(uu)});var yi=x((fu,pu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=Ot(),pu.exports=t=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing raw text");this.value=this.stringify.raw(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).raw(this)},s}(e)}).call(fu)});var gi=x((du,mu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=Ot(),mu.exports=t=function(n){r(s,n);function s(o,l){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing element text");this.value=this.stringify.eleText(l)}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).text(this)},s}(e)}).call(du)});var vi=x((yu,gu)=>{(function(){var e,t,r=function(n,s){for(var o in s)i.call(s,o)&&(n[o]=s[o]);function l(){this.constructor=n}return l.prototype=s.prototype,n.prototype=new l,n.__super__=s.prototype,n},i={}.hasOwnProperty;e=Ot(),gu.exports=t=function(n){r(s,n);function s(o,l,a){if(s.__super__.constructor.call(this,o),l==null)throw new Error("Missing instruction target");this.target=this.stringify.insTarget(l),a&&(this.value=this.stringify.insValue(a))}return s.prototype.clone=function(){return Object.create(this)},s.prototype.toString=function(o){return this.options.writer.set(o).processingInstruction(this)},s}(e)}).call(yu)});var Ot=x((vu,wu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b={}.hasOwnProperty;y=re(),f=y.isObject,u=y.isFunction,c=y.isEmpty,n=null,e=null,t=null,r=null,i=null,l=null,a=null,o=null,wu.exports=s=function(){function E(m){this.parent=m,this.parent&&(this.options=this.parent.options,this.stringify=this.parent.stringify),this.children=[],n||(n=ai(),e=li(),t=ci(),r=ui(),i=mi(),l=yi(),a=gi(),o=vi())}return E.prototype.element=function(m,w,O){var d,g,N,A,_,R,B,P,D,L;if(R=null,w==null&&(w={}),w=w.valueOf(),f(w)||(D=[w,O],O=D[0],w=D[1]),m!=null&&(m=m.valueOf()),Array.isArray(m))for(N=0,B=m.length;N{(function(){var e,t=function(i,n){return function(){return i.apply(n,arguments)}},r={}.hasOwnProperty;bu.exports=e=function(){function i(n){this.assertLegalChar=t(this.assertLegalChar,this);var s,o,l;n||(n={}),this.noDoubleEncoding=n.noDoubleEncoding,o=n.stringify||{};for(s in o)!r.call(o,s)||(l=o[s],this[s]=l)}return i.prototype.eleName=function(n){return n=""+n||"",this.assertLegalChar(n)},i.prototype.eleText=function(n){return n=""+n||"",this.assertLegalChar(this.elEscape(n))},i.prototype.cdata=function(n){return n=""+n||"",n=n.replace("]]>","]]]]>"),this.assertLegalChar(n)},i.prototype.comment=function(n){if(n=""+n||"",n.match(/--/))throw new Error("Comment text cannot contain double-hypen: "+n);return this.assertLegalChar(n)},i.prototype.raw=function(n){return""+n||""},i.prototype.attName=function(n){return n=""+n||""},i.prototype.attValue=function(n){return n=""+n||"",this.attEscape(n)},i.prototype.insTarget=function(n){return""+n||""},i.prototype.insValue=function(n){if(n=""+n||"",n.match(/\?>/))throw new Error("Invalid processing instruction value: "+n);return n},i.prototype.xmlVersion=function(n){if(n=""+n||"",!n.match(/1\.[0-9]+/))throw new Error("Invalid version number: "+n);return n},i.prototype.xmlEncoding=function(n){if(n=""+n||"",!n.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/))throw new Error("Invalid encoding: "+n);return n},i.prototype.xmlStandalone=function(n){return n?"yes":"no"},i.prototype.dtdPubID=function(n){return""+n||""},i.prototype.dtdSysID=function(n){return""+n||""},i.prototype.dtdElementValue=function(n){return""+n||""},i.prototype.dtdAttType=function(n){return""+n||""},i.prototype.dtdAttDefault=function(n){return n!=null?""+n||"":n},i.prototype.dtdEntityValue=function(n){return""+n||""},i.prototype.dtdNData=function(n){return""+n||""},i.prototype.convertAttKey="@",i.prototype.convertPIKey="?",i.prototype.convertTextKey="#text",i.prototype.convertCDataKey="#cdata",i.prototype.convertCommentKey="#comment",i.prototype.convertRawKey="#raw",i.prototype.assertLegalChar=function(n){var s;if(s=n.match(/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/),s)throw new Error("Invalid character in string: "+n+" at index "+s.index);return n},i.prototype.elEscape=function(n){var s;return s=this.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,n.replace(s,"&").replace(//g,">").replace(/\r/g," ")},i.prototype.attEscape=function(n){var s;return s=this.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,n.replace(s,"&").replace(/{(function(){var e,t={}.hasOwnProperty;Su.exports=e=function(){function r(i){var n,s,o,l,a,c,u,f,y;i||(i={}),this.pretty=i.pretty||!1,this.allowEmpty=(s=i.allowEmpty)!=null?s:!1,this.pretty?(this.indent=(o=i.indent)!=null?o:" ",this.newline=(l=i.newline)!=null?l:` `,this.offset=(a=i.offset)!=null?a:0,this.dontprettytextnodes=(c=i.dontprettytextnodes)!=null?c:0):(this.indent="",this.newline="",this.offset=0,this.dontprettytextnodes=0),this.spacebeforeslash=(u=i.spacebeforeslash)!=null?u:"",this.spacebeforeslash===!0&&(this.spacebeforeslash=" "),this.newlinedefault=this.newline,this.prettydefault=this.pretty,f=i.writer||{};for(n in f)!t.call(f,n)||(y=f[n],this[n]=y)}return r.prototype.set=function(i){var n,s,o;i||(i={}),"pretty"in i&&(this.pretty=i.pretty),"allowEmpty"in i&&(this.allowEmpty=i.allowEmpty),this.pretty?(this.indent="indent"in i?i.indent:" ",this.newline="newline"in i?i.newline:` -`,this.offset="offset"in i?i.offset:0,this.dontprettytextnodes="dontprettytextnodes"in i?i.dontprettytextnodes:0):(this.indent="",this.newline="",this.offset=0,this.dontprettytextnodes=0),this.spacebeforeslash="spacebeforeslash"in i?i.spacebeforeslash:"",this.spacebeforeslash===!0&&(this.spacebeforeslash=" "),this.newlinedefault=this.newline,this.prettydefault=this.pretty,s=i.writer||{};for(n in s)!t.call(s,n)||(o=s[n],this[n]=o);return this},r.prototype.space=function(i){var n;return this.pretty?(n=(i||0)+this.offset+1,n>0?new Array(n).join(this.indent):""):""},r}()}).call(_u)});var yn=x((Ou,Nu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E=function(w,O){for(var d in O)m.call(O,d)&&(w[d]=O[d]);function g(){this.constructor=w}return g.prototype=O.prototype,w.prototype=new g,w.__super__=O.prototype,w},m={}.hasOwnProperty;o=ui(),l=mi(),e=li(),t=ci(),a=ai(),u=yi(),y=gi(),c=vi(),r=hi(),i=pi(),n=fi(),s=di(),b=io(),Nu.exports=f=function(w){E(O,w);function O(d){O.__super__.constructor.call(this,d)}return O.prototype.document=function(d){var g,N,A,_,R;for(this.textispresent=!1,_="",R=d.children,N=0,A=R.length;N"+this.newline},O.prototype.comment=function(d,g){return this.space(g)+""+this.newline},O.prototype.declaration=function(d,g){var N;return N=this.space(g),N+='",N+=this.newline,N},O.prototype.docType=function(d,g){var N,A,_,R,B;if(g||(g=0),R=this.space(g),R+="0){for(R+=" [",R+=this.newline,B=d.children,A=0,_=B.length;A<_;A++)N=B[A],R+=function(){switch(!1){case!(N instanceof r):return this.dtdAttList(N,g+1);case!(N instanceof i):return this.dtdElement(N,g+1);case!(N instanceof n):return this.dtdEntity(N,g+1);case!(N instanceof s):return this.dtdNotation(N,g+1);case!(N instanceof e):return this.cdata(N,g+1);case!(N instanceof t):return this.comment(N,g+1);case!(N instanceof c):return this.processingInstruction(N,g+1);default:throw new Error("Unknown DTD node type: "+N.constructor.name)}}.call(this);R+="]"}return R+=this.spacebeforeslash+">",R+=this.newline,R},O.prototype.element=function(d,g){var N,A,_,R,B,P,D,L,F,U,Y,$,G;g||(g=0),G=!1,this.textispresent?(this.newline="",this.pretty=!1):(this.newline=this.newlinedefault,this.pretty=this.prettydefault),$=this.space(g),L="",L+=$+"<"+d.name,F=d.attributes;for(D in F)!m.call(F,D)||(N=F[D],L+=this.attribute(N));if(d.children.length===0||d.children.every(function(it){return it.value===""}))this.allowEmpty?L+=">"+this.newline:L+=this.spacebeforeslash+"/>"+this.newline;else if(this.pretty&&d.children.length===1&&d.children[0].value!=null)L+=">",L+=d.children[0].value,L+=""+this.newline;else{if(this.dontprettytextnodes){for(U=d.children,_=0,B=U.length;_"+this.newline,Y=d.children,R=0,P=Y.length;R"+this.newline}return L},O.prototype.processingInstruction=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.raw=function(d,g){return this.space(g)+d.value+this.newline},O.prototype.text=function(d,g){return this.space(g)+d.value+this.newline},O.prototype.dtdAttList=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.dtdElement=function(d,g){return this.space(g)+""+this.newline},O.prototype.dtdEntity=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.dtdNotation=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.openNode=function(d,g){var N,A,_,R;if(g||(g=0),d instanceof a){_=this.space(g)+"<"+d.name,R=d.attributes;for(A in R)!m.call(R,A)||(N=R[A],_+=this.attribute(N));return _+=(d.children?">":"/>")+this.newline,_}else return _=this.space(g)+"")+this.newline,_},O.prototype.closeNode=function(d,g){switch(g||(g=0),!1){case!(d instanceof a):return this.space(g)+""+this.newline;case!(d instanceof l):return this.space(g)+"]>"+this.newline}},O}(b)}).call(Ou)});var Ru=x((Du,Tu)=>{(function(){var e,t,r,i,n,s=function(l,a){for(var c in a)o.call(a,c)&&(l[c]=a[c]);function u(){this.constructor=l}return u.prototype=a.prototype,l.prototype=new u,l.__super__=a.prototype,l},o={}.hasOwnProperty;n=ie().isPlainObject,t=Ot(),i=ro(),r=yn(),Tu.exports=e=function(l){s(a,l);function a(c){a.__super__.constructor.call(this,null),c||(c={}),c.writer||(c.writer=new r),this.options=c,this.stringify=new i(c),this.isDocument=!0}return a.prototype.end=function(c){var u;return c?n(c)&&(u=c,c=this.options.writer.set(u)):c=this.options.writer,c.document(this)},a.prototype.toString=function(c){return this.options.writer.set(c).document(this)},a}(t)}).call(Du)});var xu=x((Au,Iu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E,m,w,O,d,g,N={}.hasOwnProperty;g=ie(),O=g.isObject,w=g.isFunction,d=g.isPlainObject,u=ai(),t=li(),r=ci(),y=yi(),m=gi(),f=vi(),l=ui(),a=mi(),i=hi(),s=fi(),n=pi(),o=di(),e=eo(),E=ro(),b=yn(),Iu.exports=c=function(){function A(_,R,B){var P;_||(_={}),_.writer?d(_.writer)&&(P=_.writer,_.writer=new b(P)):_.writer=new b(_),this.options=_,this.writer=_.writer,this.stringify=new E(_),this.onDataCallback=R||function(){},this.onEndCallback=B||function(){},this.currentNode=null,this.currentLevel=-1,this.openTags={},this.documentStarted=!1,this.documentCompleted=!1,this.root=null}return A.prototype.node=function(_,R,B){var P;if(_==null)throw new Error("Missing node name");if(this.root&&this.currentLevel===-1)throw new Error("Document can only have one root node");return this.openCurrent(),_=_.valueOf(),R==null&&(R={}),R=R.valueOf(),O(R)||(P=[R,B],B=P[0],R=P[1]),this.currentNode=new u(this,_,R),this.currentNode.children=!1,this.currentLevel++,this.openTags[this.currentLevel]=this.currentNode,B!=null&&this.text(B),this},A.prototype.element=function(_,R,B){return this.currentNode&&this.currentNode instanceof a?this.dtdElement.apply(this,arguments):this.node(_,R,B)},A.prototype.attribute=function(_,R){var B,P;if(!this.currentNode||this.currentNode.children)throw new Error("att() can only be used immediately after an ele() call in callback mode");if(_!=null&&(_=_.valueOf()),O(_))for(B in _)!N.call(_,B)||(P=_[B],this.attribute(B,P));else w(R)&&(R=R.apply()),(!this.options.skipNullAttributes||R!=null)&&(this.currentNode.attributes[_]=new e(this,_,R));return this},A.prototype.text=function(_){var R;return this.openCurrent(),R=new m(this,_),this.onData(this.writer.text(R,this.currentLevel+1)),this},A.prototype.cdata=function(_){var R;return this.openCurrent(),R=new t(this,_),this.onData(this.writer.cdata(R,this.currentLevel+1)),this},A.prototype.comment=function(_){var R;return this.openCurrent(),R=new r(this,_),this.onData(this.writer.comment(R,this.currentLevel+1)),this},A.prototype.raw=function(_){var R;return this.openCurrent(),R=new y(this,_),this.onData(this.writer.raw(R,this.currentLevel+1)),this},A.prototype.instruction=function(_,R){var B,P,D,L,F;if(this.openCurrent(),_!=null&&(_=_.valueOf()),R!=null&&(R=R.valueOf()),Array.isArray(_))for(B=0,L=_.length;B=0;)this.up();return this.onEnd()},A.prototype.openCurrent=function(){if(this.currentNode)return this.currentNode.children=!0,this.openNode(this.currentNode)},A.prototype.openNode=function(_){if(!_.isOpen)return!this.root&&this.currentLevel===0&&_ instanceof u&&(this.root=_),this.onData(this.writer.openNode(_,this.currentLevel)),_.isOpen=!0},A.prototype.closeNode=function(_){if(!_.isClosed)return this.onData(this.writer.closeNode(_,this.currentLevel)),_.isClosed=!0},A.prototype.onData=function(_){return this.documentStarted=!0,this.onDataCallback(_)},A.prototype.onEnd=function(){return this.documentCompleted=!0,this.onEndCallback()},A.prototype.ele=function(){return this.element.apply(this,arguments)},A.prototype.nod=function(_,R,B){return this.node(_,R,B)},A.prototype.txt=function(_){return this.text(_)},A.prototype.dat=function(_){return this.cdata(_)},A.prototype.com=function(_){return this.comment(_)},A.prototype.ins=function(_,R){return this.instruction(_,R)},A.prototype.dec=function(_,R,B){return this.declaration(_,R,B)},A.prototype.dtd=function(_,R,B){return this.doctype(_,R,B)},A.prototype.e=function(_,R,B){return this.element(_,R,B)},A.prototype.n=function(_,R,B){return this.node(_,R,B)},A.prototype.t=function(_){return this.text(_)},A.prototype.d=function(_){return this.cdata(_)},A.prototype.c=function(_){return this.comment(_)},A.prototype.r=function(_){return this.raw(_)},A.prototype.i=function(_,R){return this.instruction(_,R)},A.prototype.att=function(){return this.currentNode&&this.currentNode instanceof a?this.attList.apply(this,arguments):this.attribute.apply(this,arguments)},A.prototype.a=function(){return this.currentNode&&this.currentNode instanceof a?this.attList.apply(this,arguments):this.attribute.apply(this,arguments)},A.prototype.ent=function(_,R){return this.entity(_,R)},A.prototype.pent=function(_,R){return this.pEntity(_,R)},A.prototype.not=function(_,R){return this.notation(_,R)},A}()}).call(Au)});var Cu=x((Lu,Mu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E=function(w,O){for(var d in O)m.call(O,d)&&(w[d]=O[d]);function g(){this.constructor=w}return g.prototype=O.prototype,w.prototype=new g,w.__super__=O.prototype,w},m={}.hasOwnProperty;o=ui(),l=mi(),e=li(),t=ci(),a=ai(),u=yi(),y=gi(),c=vi(),r=hi(),i=pi(),n=fi(),s=di(),b=io(),Mu.exports=f=function(w){E(O,w);function O(d,g){O.__super__.constructor.call(this,g),this.stream=d}return O.prototype.document=function(d){var g,N,A,_,R,B,P,D;for(B=d.children,N=0,_=B.length;N<_;N++)g=B[N],g.isLastRootNode=!1;for(d.children[d.children.length-1].isLastRootNode=!0,P=d.children,D=[],A=0,R=P.length;A"+this.endline(d))},O.prototype.comment=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.declaration=function(d,g){return this.stream.write(this.space(g)),this.stream.write('"),this.stream.write(this.endline(d))},O.prototype.docType=function(d,g){var N,A,_,R;if(g||(g=0),this.stream.write(this.space(g)),this.stream.write("0){for(this.stream.write(" ["),this.stream.write(this.endline(d)),R=d.children,A=0,_=R.length;A<_;A++)switch(N=R[A],!1){case!(N instanceof r):this.dtdAttList(N,g+1);break;case!(N instanceof i):this.dtdElement(N,g+1);break;case!(N instanceof n):this.dtdEntity(N,g+1);break;case!(N instanceof s):this.dtdNotation(N,g+1);break;case!(N instanceof e):this.cdata(N,g+1);break;case!(N instanceof t):this.comment(N,g+1);break;case!(N instanceof c):this.processingInstruction(N,g+1);break;default:throw new Error("Unknown DTD node type: "+N.constructor.name)}this.stream.write("]")}return this.stream.write(this.spacebeforeslash+">"),this.stream.write(this.endline(d))},O.prototype.element=function(d,g){var N,A,_,R,B,P,D,L;g||(g=0),L=this.space(g),this.stream.write(L+"<"+d.name),P=d.attributes;for(B in P)!m.call(P,B)||(N=P[B],this.attribute(N));if(d.children.length===0||d.children.every(function(F){return F.value===""}))this.allowEmpty?this.stream.write(">"):this.stream.write(this.spacebeforeslash+"/>");else if(this.pretty&&d.children.length===1&&d.children[0].value!=null)this.stream.write(">"),this.stream.write(d.children[0].value),this.stream.write("");else{for(this.stream.write(">"+this.newline),D=d.children,_=0,R=D.length;_")}return this.stream.write(this.endline(d))},O.prototype.processingInstruction=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.raw=function(d,g){return this.stream.write(this.space(g)+d.value+this.endline(d))},O.prototype.text=function(d,g){return this.stream.write(this.space(g)+d.value+this.endline(d))},O.prototype.dtdAttList=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdElement=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdEntity=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdNotation=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.endline=function(d){return d.isLastRootNode?"":this.newline},O}(b)}).call(Lu)});var ku=x((Pu,wi)=>{(function(){var e,t,r,i,n,s,o;o=ie(),n=o.assign,s=o.isFunction,e=Ru(),t=xu(),i=yn(),r=Cu(),wi.exports.create=function(l,a,c,u){var f,y;if(l==null)throw new Error("Root element needs a name");return u=n({},a,c,u),f=new e(u),y=f.element(l),u.headless||(f.declaration(u),(u.pubID!=null||u.sysID!=null)&&f.doctype(u)),y},wi.exports.begin=function(l,a,c){var u;return s(l)&&(u=[l,a],a=u[0],c=u[1],l={}),a?new t(l,a,c):new e(l)},wi.exports.stringWriter=function(l){return new i(l)},wi.exports.streamWriter=function(l,a){return new r(l,a)}}).call(Pu)});var Uu=x(Bu=>{var Fu=Gc(),Tg=ku();Bu.build=Rg;function Ag(e){function t(r){return r<10?"0"+r:r}return e.getUTCFullYear()+"-"+t(e.getUTCMonth()+1)+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"Z"}var Ig=Object.prototype.toString;function qu(e){var t=Ig.call(e).match(/\[object (.*)\]/);return t&&t[1]}function Rg(e,t){var r={version:"1.0",encoding:"UTF-8"},i={pubid:"-//Apple//DTD PLIST 1.0//EN",sysid:"http://www.apple.com/DTDs/PropertyList-1.0.dtd"},n=Tg.create("plist");return n.dec(r.version,r.encoding,r.standalone),n.dtd(i.pubid,i.sysid),n.att("version","1.0"),no(e,n),t||(t={}),t.pretty=t.pretty!==!1,n.end(t)}function no(e,t){var r,i,n,s=qu(e);if(s!="Undefined")if(Array.isArray(e))for(t=t.ele("array"),i=0;i{var ju=Xc();Object.keys(ju).forEach(function(e){so[e]=ju[e]});var Xu=Uu();Object.keys(Xu).forEach(function(e){so[e]=Xu[e]})});var Wu=x((Y1,Gu)=>{var $u=Vl(),gn=sc(),wr=zu(),ve=require("fs");function oo(e,t){let r=e[0],i;try{if(r===60||r==="<")i=wr.parse(e.toString());else if(r===98)[i]=$u.parseBuffer(e);else throw t!=null?new Error(`Unable to determine format for '${t}'`):new Error("Unable to determine format for plist aStringOrBuffer")}catch(n){throw new Error(n)}return i}function xg(e){let t=ve.readFileSync(e);return t.length===0?{}:oo(t,e)}function Lg(e,t){ve.readFile(e,(r,i)=>{if(r)return t(r);let n;try{n=oo(i,e)}catch(s){return t(s)}return t(null,n)})}function Mg(e,t,r){let i=wr.build(t);return ve.writeFileSync(e,i,r)}function Cg(e,t,r,i){arguments.length===3&&typeof r=="function"?ve.writeFile(e,wr.build(t),r):ve.writeFile(e,wr.build(t),r,i)}function Pg(e,t,r){return ve.writeFileSync(e,gn(t),r)}function kg(e,t,r,i){arguments.length===3&&typeof r=="function"?ve.writeFile(e,gn(t),r):ve.writeFile(e,gn(t),r,i)}function Bg(e){return wr.build(e)}Gu.exports={bplistCreator:gn,bplistParser:$u,parse:oo,plist:wr,readFile:Lg,readFileSync:xg,stringify:Bg,writeBinaryFile:kg,writeBinaryFileSync:Pg,writeFile:Cg,writeFileSync:Mg}});var Vu=x((Z1,Hu)=>{"use strict";Hu.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var ao=x((K1,Yu)=>{var Ei=Vu(),Zu={};for(let e of Object.keys(Ei))Zu[Ei[e]]=e;var q={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};Yu.exports=q;for(let e of Object.keys(q)){if(!("channels"in q[e]))throw new Error("missing channels property: "+e);if(!("labels"in q[e]))throw new Error("missing channel labels property: "+e);if(q[e].labels.length!==q[e].channels)throw new Error("channel and label counts mismatch: "+e);let{channels:t,labels:r}=q[e];delete q[e].channels,delete q[e].labels,Object.defineProperty(q[e],"channels",{value:t}),Object.defineProperty(q[e],"labels",{value:r})}q.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.min(t,r,i),s=Math.max(t,r,i),o=s-n,l,a;s===n?l=0:t===s?l=(r-i)/o:r===s?l=2+(i-t)/o:i===s&&(l=4+(t-r)/o),l=Math.min(l*60,360),l<0&&(l+=360);let c=(n+s)/2;return s===n?a=0:c<=.5?a=o/(s+n):a=o/(2-s-n),[l,a*100,c*100]};q.rgb.hsv=function(e){let t,r,i,n,s,o=e[0]/255,l=e[1]/255,a=e[2]/255,c=Math.max(o,l,a),u=c-Math.min(o,l,a),f=function(y){return(c-y)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,t=f(o),r=f(l),i=f(a),o===c?n=i-r:l===c?n=1/3+t-i:a===c&&(n=2/3+r-t),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};q.rgb.hwb=function(e){let t=e[0],r=e[1],i=e[2],n=q.rgb.hsl(e)[0],s=1/255*Math.min(t,Math.min(r,i));return i=1-1/255*Math.max(t,Math.max(r,i)),[n,s*100,i*100]};q.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.min(1-t,1-r,1-i),s=(1-t-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,l=(1-i-n)/(1-n)||0;return[s*100,o*100,l*100,n*100]};function Fg(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}q.rgb.keyword=function(e){let t=Zu[e];if(t)return t;let r=Infinity,i;for(let n of Object.keys(Ei)){let s=Ei[n],o=Fg(e,s);o.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=t*.4124+r*.3576+i*.1805,s=t*.2126+r*.7152+i*.0722,o=t*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};q.rgb.lab=function(e){let t=q.rgb.xyz(e),r=t[0],i=t[1],n=t[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),l=200*(i-n);return[s,o,l]};q.hsl.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let l=2*i-n,a=[0,0,0];for(let c=0;c<3;c++)s=t+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=l+(n-l)*6*s:2*s<1?o=n:3*s<2?o=l+(n-l)*(2/3-s)*6:o=l,a[c]=o*255;return a};q.hsl.hsv=function(e){let t=e[0],r=e[1]/100,i=e[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,l=i===0?2*n/(s+n):2*r/(i+r);return[t,l*100,o*100]};q.hsv.rgb=function(e){let t=e[0]/60,r=e[1]/100,i=e[2]/100,n=Math.floor(t)%6,s=t-Math.floor(t),o=255*i*(1-r),l=255*i*(1-r*s),a=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,a,o];case 1:return[l,i,o];case 2:return[o,i,a];case 3:return[o,l,i];case 4:return[a,o,i];case 5:return[i,o,l]}};q.hsv.hsl=function(e){let t=e[0],r=e[1]/100,i=e[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let l=(2-r)*n;return s=r*n,s/=l<=1?l:2-l,s=s||0,o/=2,[t,s*100,o*100]};q.hwb.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*t),l=1-i;s=6*t-o,(o&1)!=0&&(s=1-s);let a=r+s*(l-r),c,u,f;switch(o){default:case 6:case 0:c=l,u=a,f=r;break;case 1:c=a,u=l,f=r;break;case 2:c=r,u=l,f=a;break;case 3:c=r,u=a,f=l;break;case 4:c=a,u=r,f=l;break;case 5:c=l,u=r,f=a;break}return[c*255,u*255,f*255]};q.cmyk.rgb=function(e){let t=e[0]/100,r=e[1]/100,i=e[2]/100,n=e[3]/100,s=1-Math.min(1,t*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),l=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,l*255]};q.xyz.rgb=function(e){let t=e[0]/100,r=e[1]/100,i=e[2]/100,n,s,o;return n=t*3.2406+r*-1.5372+i*-.4986,s=t*-.9689+r*1.8758+i*.0415,o=t*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};q.xyz.lab=function(e){let t=e[0],r=e[1],i=e[2];t/=95.047,r/=100,i/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(t-r),o=200*(r-i);return[n,s,o]};q.lab.xyz=function(e){let t=e[0],r=e[1],i=e[2],n,s,o;s=(t+16)/116,n=r/500+s,o=s-i/200;let l=s**3,a=n**3,c=o**3;return s=l>.008856?l:(s-16/116)/7.787,n=a>.008856?a:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};q.lab.lch=function(e){let t=e[0],r=e[1],i=e[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[t,o,n]};q.lch.lab=function(e){let t=e[0],r=e[1],n=e[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[t,s,o]};q.rgb.ansi16=function(e,t=null){let[r,i,n]=e,s=t===null?q.rgb.hsv(e)[2]:t;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};q.hsv.ansi16=function(e){return q.rgb.ansi16(q.hsv.rgb(e),e[2])};q.rgb.ansi256=function(e){let t=e[0],r=e[1],i=e[2];return t===r&&r===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};q.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(e>50)+1)*.5,i=(t&1)*r*255,n=(t>>1&1)*r*255,s=(t>>2&1)*r*255;return[i,n,s]};q.ansi256.rgb=function(e){if(e>=232){let s=(e-232)*10+8;return[s,s,s]}e-=16;let t,r=Math.floor(e/36)/5*255,i=Math.floor((t=e%36)/6)/5*255,n=t%6/5*255;return[r,i,n]};q.rgb.hex=function(e){let r=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};q.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split("").map(l=>l+l).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};q.rgb.hcg=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.max(Math.max(t,r),i),s=Math.min(Math.min(t,r),i),o=n-s,l,a;return o<1?l=s/(1-o):l=0,o<=0?a=0:n===t?a=(r-i)/o%6:n===r?a=2+(i-t)/o:a=4+(t-r)/o,a/=6,a%=1,[a*360,o*100,l*100]};q.hsl.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=r<.5?2*t*r:2*t*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[e[0],i*100,n*100]};q.hsv.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=t*r,n=0;return i<1&&(n=(r-i)/(1-i)),[e[0],i*100,n*100]};q.hcg.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=t%1*6,o=s%1,l=1-o,a=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=l,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=l,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=l}return a=(1-r)*i,[(r*n[0]+a)*255,(r*n[1]+a)*255,(r*n[2]+a)*255]};q.hcg.hsv=function(e){let t=e[1]/100,r=e[2]/100,i=t+r*(1-t),n=0;return i>0&&(n=t/i),[e[0],n*100,i*100]};q.hcg.hsl=function(e){let t=e[1]/100,i=e[2]/100*(1-t)+.5*t,n=0;return i>0&&i<.5?n=t/(2*i):i>=.5&&i<1&&(n=t/(2*(1-i))),[e[0],n*100,i*100]};q.hcg.hwb=function(e){let t=e[1]/100,r=e[2]/100,i=t+r*(1-t);return[e[0],(i-t)*100,(1-i)*100]};q.hwb.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=1-r,n=i-t,s=0;return n<1&&(s=(i-n)/(1-n)),[e[0],n*100,s*100]};q.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};q.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};q.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};q.gray.hsl=function(e){return[0,0,e[0]]};q.gray.hsv=q.gray.hsl;q.gray.hwb=function(e){return[0,100,e[0]]};q.gray.cmyk=function(e){return[0,0,0,e[0]]};q.gray.lab=function(e){return[e[0],0,0]};q.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,i=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(i.length)+i};q.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}});var Ju=x((J1,Ku)=>{var vn=ao();function qg(){let e={},t=Object.keys(vn);for(let r=t.length,i=0;i{var lo=ao(),zg=Ju(),Er={},Gg=Object.keys(lo);function $g(e){let t=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),e(r))};return"conversion"in e&&(t.conversion=e.conversion),t}function Wg(e){let t=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=e(r);if(typeof n=="object")for(let s=n.length,o=0;o{Er[e]={},Object.defineProperty(Er[e],"channels",{value:lo[e].channels}),Object.defineProperty(Er[e],"labels",{value:lo[e].labels});let t=zg(e);Object.keys(t).forEach(i=>{let n=t[i];Er[e][i]=Wg(n),Er[e][i].raw=$g(n)})});Qu.exports=Er});var oh=x((tb,eh)=>{"use strict";var rh=(e,t)=>(...r)=>`[${e(...r)+t}m`,ih=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};5;${i}m`},nh=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};2;${i[0]};${i[1]};${i[2]}m`},wn=e=>e,sh=(e,t,r)=>[e,t,r],br=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{let i=r();return Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},co,_r=(e,t,r,i)=>{co===void 0&&(co=th());let n=i?10:0,s={};for(let[o,l]of Object.entries(co)){let a=o==="ansi16"?"ansi":o;o===t?s[a]=e(r,n):typeof l=="object"&&(s[a]=e(l[t],n))}return s};function Hg(){let e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],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],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],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,i]of Object.entries(t)){for(let[n,s]of Object.entries(i))t[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=t[n],e.set(s[0],s[1]);Object.defineProperty(t,r,{value:i,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="",t.bgColor.close="",br(t.color,"ansi",()=>_r(rh,"ansi16",wn,!1)),br(t.color,"ansi256",()=>_r(ih,"ansi256",wn,!1)),br(t.color,"ansi16m",()=>_r(nh,"rgb",sh,!1)),br(t.bgColor,"ansi",()=>_r(rh,"ansi16",wn,!0)),br(t.bgColor,"ansi256",()=>_r(ih,"ansi256",wn,!0)),br(t.bgColor,"ansi16m",()=>_r(nh,"rgb",sh,!0)),t}Object.defineProperty(eh,"exports",{enumerable:!0,get:Hg})});var lh=x((eb,ah)=>{"use strict";ah.exports=(e,t=process.argv)=>{let r=e.startsWith("-")?"":e.length===1?"-":"--",i=t.indexOf(r+e),n=t.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Vg=require("os"),uh=require("tty"),kt=lh(),{env:ut}=process,we;kt("no-color")||kt("no-colors")||kt("color=false")||kt("color=never")?we=0:(kt("color")||kt("colors")||kt("color=true")||kt("color=always"))&&(we=1);"FORCE_COLOR"in ut&&(ut.FORCE_COLOR==="true"?we=1:ut.FORCE_COLOR==="false"?we=0:we=ut.FORCE_COLOR.length===0?1:Math.min(parseInt(ut.FORCE_COLOR,10),3));function uo(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function ho(e,t){if(we===0)return 0;if(kt("color=16m")||kt("color=full")||kt("color=truecolor"))return 3;if(kt("color=256"))return 2;if(e&&!t&&we===void 0)return 0;let r=we||0;if(ut.TERM==="dumb")return r;if(process.platform==="win32"){let i=Vg.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in ut)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(i=>i in ut)||ut.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in ut)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ut.TEAMCITY_VERSION)?1:0;if(ut.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ut){let i=parseInt((ut.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ut.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ut.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ut.TERM)||"COLORTERM"in ut?1:r}function Yg(e){let t=ho(e,e&&e.isTTY);return uo(t)}ch.exports={supportsColor:Yg,stdout:uo(ho(!0,uh.isatty(1))),stderr:uo(ho(!0,uh.isatty(2)))}});var ph=x((ib,fh)=>{"use strict";var Zg=(e,t,r)=>{let i=e.indexOf(t);if(i===-1)return e;let n=t.length,s=0,o="";do o+=e.substr(s,i-s)+t+r,s=i+n,i=e.indexOf(t,s);while(i!==-1);return o+=e.substr(s),o},Kg=(e,t,r,i)=>{let n=0,s="";do{let o=e[i-1]==="\r";s+=e.substr(n,(o?i-1:i)-n)+t+(o?`\r +`,this.offset="offset"in i?i.offset:0,this.dontprettytextnodes="dontprettytextnodes"in i?i.dontprettytextnodes:0):(this.indent="",this.newline="",this.offset=0,this.dontprettytextnodes=0),this.spacebeforeslash="spacebeforeslash"in i?i.spacebeforeslash:"",this.spacebeforeslash===!0&&(this.spacebeforeslash=" "),this.newlinedefault=this.newline,this.prettydefault=this.pretty,s=i.writer||{};for(n in s)!t.call(s,n)||(o=s[n],this[n]=o);return this},r.prototype.space=function(i){var n;return this.pretty?(n=(i||0)+this.offset+1,n>0?new Array(n).join(this.indent):""):""},r}()}).call(_u)});var gn=x((Ou,Nu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E=function(w,O){for(var d in O)m.call(O,d)&&(w[d]=O[d]);function g(){this.constructor=w}return g.prototype=O.prototype,w.prototype=new g,w.__super__=O.prototype,w},m={}.hasOwnProperty;o=ui(),l=mi(),e=li(),t=ci(),a=ai(),u=yi(),y=gi(),c=vi(),r=hi(),i=pi(),n=fi(),s=di(),b=no(),Nu.exports=f=function(w){E(O,w);function O(d){O.__super__.constructor.call(this,d)}return O.prototype.document=function(d){var g,N,A,_,R;for(this.textispresent=!1,_="",R=d.children,N=0,A=R.length;N"+this.newline},O.prototype.comment=function(d,g){return this.space(g)+""+this.newline},O.prototype.declaration=function(d,g){var N;return N=this.space(g),N+='",N+=this.newline,N},O.prototype.docType=function(d,g){var N,A,_,R,B;if(g||(g=0),R=this.space(g),R+="0){for(R+=" [",R+=this.newline,B=d.children,A=0,_=B.length;A<_;A++)N=B[A],R+=function(){switch(!1){case!(N instanceof r):return this.dtdAttList(N,g+1);case!(N instanceof i):return this.dtdElement(N,g+1);case!(N instanceof n):return this.dtdEntity(N,g+1);case!(N instanceof s):return this.dtdNotation(N,g+1);case!(N instanceof e):return this.cdata(N,g+1);case!(N instanceof t):return this.comment(N,g+1);case!(N instanceof c):return this.processingInstruction(N,g+1);default:throw new Error("Unknown DTD node type: "+N.constructor.name)}}.call(this);R+="]"}return R+=this.spacebeforeslash+">",R+=this.newline,R},O.prototype.element=function(d,g){var N,A,_,R,B,P,D,L,F,U,Y,$,G;g||(g=0),G=!1,this.textispresent?(this.newline="",this.pretty=!1):(this.newline=this.newlinedefault,this.pretty=this.prettydefault),$=this.space(g),L="",L+=$+"<"+d.name,F=d.attributes;for(D in F)!m.call(F,D)||(N=F[D],L+=this.attribute(N));if(d.children.length===0||d.children.every(function(it){return it.value===""}))this.allowEmpty?L+=">"+this.newline:L+=this.spacebeforeslash+"/>"+this.newline;else if(this.pretty&&d.children.length===1&&d.children[0].value!=null)L+=">",L+=d.children[0].value,L+=""+this.newline;else{if(this.dontprettytextnodes){for(U=d.children,_=0,B=U.length;_"+this.newline,Y=d.children,R=0,P=Y.length;R"+this.newline}return L},O.prototype.processingInstruction=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.raw=function(d,g){return this.space(g)+d.value+this.newline},O.prototype.text=function(d,g){return this.space(g)+d.value+this.newline},O.prototype.dtdAttList=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.dtdElement=function(d,g){return this.space(g)+""+this.newline},O.prototype.dtdEntity=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.dtdNotation=function(d,g){var N;return N=this.space(g)+""+this.newline,N},O.prototype.openNode=function(d,g){var N,A,_,R;if(g||(g=0),d instanceof a){_=this.space(g)+"<"+d.name,R=d.attributes;for(A in R)!m.call(R,A)||(N=R[A],_+=this.attribute(N));return _+=(d.children?">":"/>")+this.newline,_}else return _=this.space(g)+"")+this.newline,_},O.prototype.closeNode=function(d,g){switch(g||(g=0),!1){case!(d instanceof a):return this.space(g)+""+this.newline;case!(d instanceof l):return this.space(g)+"]>"+this.newline}},O}(b)}).call(Ou)});var Ru=x((Du,Tu)=>{(function(){var e,t,r,i,n,s=function(l,a){for(var c in a)o.call(a,c)&&(l[c]=a[c]);function u(){this.constructor=l}return u.prototype=a.prototype,l.prototype=new u,l.__super__=a.prototype,l},o={}.hasOwnProperty;n=re().isPlainObject,t=Ot(),i=io(),r=gn(),Tu.exports=e=function(l){s(a,l);function a(c){a.__super__.constructor.call(this,null),c||(c={}),c.writer||(c.writer=new r),this.options=c,this.stringify=new i(c),this.isDocument=!0}return a.prototype.end=function(c){var u;return c?n(c)&&(u=c,c=this.options.writer.set(u)):c=this.options.writer,c.document(this)},a.prototype.toString=function(c){return this.options.writer.set(c).document(this)},a}(t)}).call(Du)});var xu=x((Au,Iu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E,m,w,O,d,g,N={}.hasOwnProperty;g=re(),O=g.isObject,w=g.isFunction,d=g.isPlainObject,u=ai(),t=li(),r=ci(),y=yi(),m=gi(),f=vi(),l=ui(),a=mi(),i=hi(),s=fi(),n=pi(),o=di(),e=ro(),E=io(),b=gn(),Iu.exports=c=function(){function A(_,R,B){var P;_||(_={}),_.writer?d(_.writer)&&(P=_.writer,_.writer=new b(P)):_.writer=new b(_),this.options=_,this.writer=_.writer,this.stringify=new E(_),this.onDataCallback=R||function(){},this.onEndCallback=B||function(){},this.currentNode=null,this.currentLevel=-1,this.openTags={},this.documentStarted=!1,this.documentCompleted=!1,this.root=null}return A.prototype.node=function(_,R,B){var P;if(_==null)throw new Error("Missing node name");if(this.root&&this.currentLevel===-1)throw new Error("Document can only have one root node");return this.openCurrent(),_=_.valueOf(),R==null&&(R={}),R=R.valueOf(),O(R)||(P=[R,B],B=P[0],R=P[1]),this.currentNode=new u(this,_,R),this.currentNode.children=!1,this.currentLevel++,this.openTags[this.currentLevel]=this.currentNode,B!=null&&this.text(B),this},A.prototype.element=function(_,R,B){return this.currentNode&&this.currentNode instanceof a?this.dtdElement.apply(this,arguments):this.node(_,R,B)},A.prototype.attribute=function(_,R){var B,P;if(!this.currentNode||this.currentNode.children)throw new Error("att() can only be used immediately after an ele() call in callback mode");if(_!=null&&(_=_.valueOf()),O(_))for(B in _)!N.call(_,B)||(P=_[B],this.attribute(B,P));else w(R)&&(R=R.apply()),(!this.options.skipNullAttributes||R!=null)&&(this.currentNode.attributes[_]=new e(this,_,R));return this},A.prototype.text=function(_){var R;return this.openCurrent(),R=new m(this,_),this.onData(this.writer.text(R,this.currentLevel+1)),this},A.prototype.cdata=function(_){var R;return this.openCurrent(),R=new t(this,_),this.onData(this.writer.cdata(R,this.currentLevel+1)),this},A.prototype.comment=function(_){var R;return this.openCurrent(),R=new r(this,_),this.onData(this.writer.comment(R,this.currentLevel+1)),this},A.prototype.raw=function(_){var R;return this.openCurrent(),R=new y(this,_),this.onData(this.writer.raw(R,this.currentLevel+1)),this},A.prototype.instruction=function(_,R){var B,P,D,L,F;if(this.openCurrent(),_!=null&&(_=_.valueOf()),R!=null&&(R=R.valueOf()),Array.isArray(_))for(B=0,L=_.length;B=0;)this.up();return this.onEnd()},A.prototype.openCurrent=function(){if(this.currentNode)return this.currentNode.children=!0,this.openNode(this.currentNode)},A.prototype.openNode=function(_){if(!_.isOpen)return!this.root&&this.currentLevel===0&&_ instanceof u&&(this.root=_),this.onData(this.writer.openNode(_,this.currentLevel)),_.isOpen=!0},A.prototype.closeNode=function(_){if(!_.isClosed)return this.onData(this.writer.closeNode(_,this.currentLevel)),_.isClosed=!0},A.prototype.onData=function(_){return this.documentStarted=!0,this.onDataCallback(_)},A.prototype.onEnd=function(){return this.documentCompleted=!0,this.onEndCallback()},A.prototype.ele=function(){return this.element.apply(this,arguments)},A.prototype.nod=function(_,R,B){return this.node(_,R,B)},A.prototype.txt=function(_){return this.text(_)},A.prototype.dat=function(_){return this.cdata(_)},A.prototype.com=function(_){return this.comment(_)},A.prototype.ins=function(_,R){return this.instruction(_,R)},A.prototype.dec=function(_,R,B){return this.declaration(_,R,B)},A.prototype.dtd=function(_,R,B){return this.doctype(_,R,B)},A.prototype.e=function(_,R,B){return this.element(_,R,B)},A.prototype.n=function(_,R,B){return this.node(_,R,B)},A.prototype.t=function(_){return this.text(_)},A.prototype.d=function(_){return this.cdata(_)},A.prototype.c=function(_){return this.comment(_)},A.prototype.r=function(_){return this.raw(_)},A.prototype.i=function(_,R){return this.instruction(_,R)},A.prototype.att=function(){return this.currentNode&&this.currentNode instanceof a?this.attList.apply(this,arguments):this.attribute.apply(this,arguments)},A.prototype.a=function(){return this.currentNode&&this.currentNode instanceof a?this.attList.apply(this,arguments):this.attribute.apply(this,arguments)},A.prototype.ent=function(_,R){return this.entity(_,R)},A.prototype.pent=function(_,R){return this.pEntity(_,R)},A.prototype.not=function(_,R){return this.notation(_,R)},A}()}).call(Au)});var Cu=x((Lu,Mu)=>{(function(){var e,t,r,i,n,s,o,l,a,c,u,f,y,b,E=function(w,O){for(var d in O)m.call(O,d)&&(w[d]=O[d]);function g(){this.constructor=w}return g.prototype=O.prototype,w.prototype=new g,w.__super__=O.prototype,w},m={}.hasOwnProperty;o=ui(),l=mi(),e=li(),t=ci(),a=ai(),u=yi(),y=gi(),c=vi(),r=hi(),i=pi(),n=fi(),s=di(),b=no(),Mu.exports=f=function(w){E(O,w);function O(d,g){O.__super__.constructor.call(this,g),this.stream=d}return O.prototype.document=function(d){var g,N,A,_,R,B,P,D;for(B=d.children,N=0,_=B.length;N<_;N++)g=B[N],g.isLastRootNode=!1;for(d.children[d.children.length-1].isLastRootNode=!0,P=d.children,D=[],A=0,R=P.length;A"+this.endline(d))},O.prototype.comment=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.declaration=function(d,g){return this.stream.write(this.space(g)),this.stream.write('"),this.stream.write(this.endline(d))},O.prototype.docType=function(d,g){var N,A,_,R;if(g||(g=0),this.stream.write(this.space(g)),this.stream.write("0){for(this.stream.write(" ["),this.stream.write(this.endline(d)),R=d.children,A=0,_=R.length;A<_;A++)switch(N=R[A],!1){case!(N instanceof r):this.dtdAttList(N,g+1);break;case!(N instanceof i):this.dtdElement(N,g+1);break;case!(N instanceof n):this.dtdEntity(N,g+1);break;case!(N instanceof s):this.dtdNotation(N,g+1);break;case!(N instanceof e):this.cdata(N,g+1);break;case!(N instanceof t):this.comment(N,g+1);break;case!(N instanceof c):this.processingInstruction(N,g+1);break;default:throw new Error("Unknown DTD node type: "+N.constructor.name)}this.stream.write("]")}return this.stream.write(this.spacebeforeslash+">"),this.stream.write(this.endline(d))},O.prototype.element=function(d,g){var N,A,_,R,B,P,D,L;g||(g=0),L=this.space(g),this.stream.write(L+"<"+d.name),P=d.attributes;for(B in P)!m.call(P,B)||(N=P[B],this.attribute(N));if(d.children.length===0||d.children.every(function(F){return F.value===""}))this.allowEmpty?this.stream.write(">"):this.stream.write(this.spacebeforeslash+"/>");else if(this.pretty&&d.children.length===1&&d.children[0].value!=null)this.stream.write(">"),this.stream.write(d.children[0].value),this.stream.write("");else{for(this.stream.write(">"+this.newline),D=d.children,_=0,R=D.length;_")}return this.stream.write(this.endline(d))},O.prototype.processingInstruction=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.raw=function(d,g){return this.stream.write(this.space(g)+d.value+this.endline(d))},O.prototype.text=function(d,g){return this.stream.write(this.space(g)+d.value+this.endline(d))},O.prototype.dtdAttList=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdElement=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdEntity=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.dtdNotation=function(d,g){return this.stream.write(this.space(g)+""+this.endline(d))},O.prototype.endline=function(d){return d.isLastRootNode?"":this.newline},O}(b)}).call(Lu)});var ku=x((Pu,wi)=>{(function(){var e,t,r,i,n,s,o;o=re(),n=o.assign,s=o.isFunction,e=Ru(),t=xu(),i=gn(),r=Cu(),wi.exports.create=function(l,a,c,u){var f,y;if(l==null)throw new Error("Root element needs a name");return u=n({},a,c,u),f=new e(u),y=f.element(l),u.headless||(f.declaration(u),(u.pubID!=null||u.sysID!=null)&&f.doctype(u)),y},wi.exports.begin=function(l,a,c){var u;return s(l)&&(u=[l,a],a=u[0],c=u[1],l={}),a?new t(l,a,c):new e(l)},wi.exports.stringWriter=function(l){return new i(l)},wi.exports.streamWriter=function(l,a){return new r(l,a)}}).call(Pu)});var Uu=x(Bu=>{var Fu=Gc(),Tg=ku();Bu.build=Rg;function Ag(e){function t(r){return r<10?"0"+r:r}return e.getUTCFullYear()+"-"+t(e.getUTCMonth()+1)+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"Z"}var Ig=Object.prototype.toString;function qu(e){var t=Ig.call(e).match(/\[object (.*)\]/);return t&&t[1]}function Rg(e,t){var r={version:"1.0",encoding:"UTF-8"},i={pubid:"-//Apple//DTD PLIST 1.0//EN",sysid:"http://www.apple.com/DTDs/PropertyList-1.0.dtd"},n=Tg.create("plist");return n.dec(r.version,r.encoding,r.standalone),n.dtd(i.pubid,i.sysid),n.att("version","1.0"),so(e,n),t||(t={}),t.pretty=t.pretty!==!1,n.end(t)}function so(e,t){var r,i,n,s=qu(e);if(s!="Undefined")if(Array.isArray(e))for(t=t.ele("array"),i=0;i{var ju=Xc();Object.keys(ju).forEach(function(e){oo[e]=ju[e]});var Xu=Uu();Object.keys(Xu).forEach(function(e){oo[e]=Xu[e]})});var Wu=x((Y1,Gu)=>{var $u=Vl(),vn=sc(),wr=zu(),ge=require("fs");function ao(e,t){let r=e[0],i;try{if(r===60||r==="<")i=wr.parse(e.toString());else if(r===98)[i]=$u.parseBuffer(e);else throw t!=null?new Error(`Unable to determine format for '${t}'`):new Error("Unable to determine format for plist aStringOrBuffer")}catch(n){throw new Error(n)}return i}function xg(e){let t=ge.readFileSync(e);return t.length===0?{}:ao(t,e)}function Lg(e,t){ge.readFile(e,(r,i)=>{if(r)return t(r);let n;try{n=ao(i,e)}catch(s){return t(s)}return t(null,n)})}function Mg(e,t,r){let i=wr.build(t);return ge.writeFileSync(e,i,r)}function Cg(e,t,r,i){arguments.length===3&&typeof r=="function"?ge.writeFile(e,wr.build(t),r):ge.writeFile(e,wr.build(t),r,i)}function Pg(e,t,r){return ge.writeFileSync(e,vn(t),r)}function kg(e,t,r,i){arguments.length===3&&typeof r=="function"?ge.writeFile(e,vn(t),r):ge.writeFile(e,vn(t),r,i)}function Bg(e){return wr.build(e)}Gu.exports={bplistCreator:vn,bplistParser:$u,parse:ao,plist:wr,readFile:Lg,readFileSync:xg,stringify:Bg,writeBinaryFile:kg,writeBinaryFileSync:Pg,writeFile:Cg,writeFileSync:Mg}});var Vu=x((Z1,Hu)=>{"use strict";Hu.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var lo=x((K1,Yu)=>{var Ei=Vu(),Zu={};for(let e of Object.keys(Ei))Zu[Ei[e]]=e;var q={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};Yu.exports=q;for(let e of Object.keys(q)){if(!("channels"in q[e]))throw new Error("missing channels property: "+e);if(!("labels"in q[e]))throw new Error("missing channel labels property: "+e);if(q[e].labels.length!==q[e].channels)throw new Error("channel and label counts mismatch: "+e);let{channels:t,labels:r}=q[e];delete q[e].channels,delete q[e].labels,Object.defineProperty(q[e],"channels",{value:t}),Object.defineProperty(q[e],"labels",{value:r})}q.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.min(t,r,i),s=Math.max(t,r,i),o=s-n,l,a;s===n?l=0:t===s?l=(r-i)/o:r===s?l=2+(i-t)/o:i===s&&(l=4+(t-r)/o),l=Math.min(l*60,360),l<0&&(l+=360);let c=(n+s)/2;return s===n?a=0:c<=.5?a=o/(s+n):a=o/(2-s-n),[l,a*100,c*100]};q.rgb.hsv=function(e){let t,r,i,n,s,o=e[0]/255,l=e[1]/255,a=e[2]/255,c=Math.max(o,l,a),u=c-Math.min(o,l,a),f=function(y){return(c-y)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,t=f(o),r=f(l),i=f(a),o===c?n=i-r:l===c?n=1/3+t-i:a===c&&(n=2/3+r-t),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};q.rgb.hwb=function(e){let t=e[0],r=e[1],i=e[2],n=q.rgb.hsl(e)[0],s=1/255*Math.min(t,Math.min(r,i));return i=1-1/255*Math.max(t,Math.max(r,i)),[n,s*100,i*100]};q.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.min(1-t,1-r,1-i),s=(1-t-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,l=(1-i-n)/(1-n)||0;return[s*100,o*100,l*100,n*100]};function Fg(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}q.rgb.keyword=function(e){let t=Zu[e];if(t)return t;let r=Infinity,i;for(let n of Object.keys(Ei)){let s=Ei[n],o=Fg(e,s);o.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=t*.4124+r*.3576+i*.1805,s=t*.2126+r*.7152+i*.0722,o=t*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};q.rgb.lab=function(e){let t=q.rgb.xyz(e),r=t[0],i=t[1],n=t[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),l=200*(i-n);return[s,o,l]};q.hsl.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let l=2*i-n,a=[0,0,0];for(let c=0;c<3;c++)s=t+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=l+(n-l)*6*s:2*s<1?o=n:3*s<2?o=l+(n-l)*(2/3-s)*6:o=l,a[c]=o*255;return a};q.hsl.hsv=function(e){let t=e[0],r=e[1]/100,i=e[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,l=i===0?2*n/(s+n):2*r/(i+r);return[t,l*100,o*100]};q.hsv.rgb=function(e){let t=e[0]/60,r=e[1]/100,i=e[2]/100,n=Math.floor(t)%6,s=t-Math.floor(t),o=255*i*(1-r),l=255*i*(1-r*s),a=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,a,o];case 1:return[l,i,o];case 2:return[o,i,a];case 3:return[o,l,i];case 4:return[a,o,i];case 5:return[i,o,l]}};q.hsv.hsl=function(e){let t=e[0],r=e[1]/100,i=e[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let l=(2-r)*n;return s=r*n,s/=l<=1?l:2-l,s=s||0,o/=2,[t,s*100,o*100]};q.hwb.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*t),l=1-i;s=6*t-o,(o&1)!=0&&(s=1-s);let a=r+s*(l-r),c,u,f;switch(o){default:case 6:case 0:c=l,u=a,f=r;break;case 1:c=a,u=l,f=r;break;case 2:c=r,u=l,f=a;break;case 3:c=r,u=a,f=l;break;case 4:c=a,u=r,f=l;break;case 5:c=l,u=r,f=a;break}return[c*255,u*255,f*255]};q.cmyk.rgb=function(e){let t=e[0]/100,r=e[1]/100,i=e[2]/100,n=e[3]/100,s=1-Math.min(1,t*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),l=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,l*255]};q.xyz.rgb=function(e){let t=e[0]/100,r=e[1]/100,i=e[2]/100,n,s,o;return n=t*3.2406+r*-1.5372+i*-.4986,s=t*-.9689+r*1.8758+i*.0415,o=t*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};q.xyz.lab=function(e){let t=e[0],r=e[1],i=e[2];t/=95.047,r/=100,i/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(t-r),o=200*(r-i);return[n,s,o]};q.lab.xyz=function(e){let t=e[0],r=e[1],i=e[2],n,s,o;s=(t+16)/116,n=r/500+s,o=s-i/200;let l=s**3,a=n**3,c=o**3;return s=l>.008856?l:(s-16/116)/7.787,n=a>.008856?a:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};q.lab.lch=function(e){let t=e[0],r=e[1],i=e[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[t,o,n]};q.lch.lab=function(e){let t=e[0],r=e[1],n=e[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[t,s,o]};q.rgb.ansi16=function(e,t=null){let[r,i,n]=e,s=t===null?q.rgb.hsv(e)[2]:t;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};q.hsv.ansi16=function(e){return q.rgb.ansi16(q.hsv.rgb(e),e[2])};q.rgb.ansi256=function(e){let t=e[0],r=e[1],i=e[2];return t===r&&r===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};q.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(e>50)+1)*.5,i=(t&1)*r*255,n=(t>>1&1)*r*255,s=(t>>2&1)*r*255;return[i,n,s]};q.ansi256.rgb=function(e){if(e>=232){let s=(e-232)*10+8;return[s,s,s]}e-=16;let t,r=Math.floor(e/36)/5*255,i=Math.floor((t=e%36)/6)/5*255,n=t%6/5*255;return[r,i,n]};q.rgb.hex=function(e){let r=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};q.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split("").map(l=>l+l).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};q.rgb.hcg=function(e){let t=e[0]/255,r=e[1]/255,i=e[2]/255,n=Math.max(Math.max(t,r),i),s=Math.min(Math.min(t,r),i),o=n-s,l,a;return o<1?l=s/(1-o):l=0,o<=0?a=0:n===t?a=(r-i)/o%6:n===r?a=2+(i-t)/o:a=4+(t-r)/o,a/=6,a%=1,[a*360,o*100,l*100]};q.hsl.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=r<.5?2*t*r:2*t*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[e[0],i*100,n*100]};q.hsv.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=t*r,n=0;return i<1&&(n=(r-i)/(1-i)),[e[0],i*100,n*100]};q.hcg.rgb=function(e){let t=e[0]/360,r=e[1]/100,i=e[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=t%1*6,o=s%1,l=1-o,a=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=l,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=l,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=l}return a=(1-r)*i,[(r*n[0]+a)*255,(r*n[1]+a)*255,(r*n[2]+a)*255]};q.hcg.hsv=function(e){let t=e[1]/100,r=e[2]/100,i=t+r*(1-t),n=0;return i>0&&(n=t/i),[e[0],n*100,i*100]};q.hcg.hsl=function(e){let t=e[1]/100,i=e[2]/100*(1-t)+.5*t,n=0;return i>0&&i<.5?n=t/(2*i):i>=.5&&i<1&&(n=t/(2*(1-i))),[e[0],n*100,i*100]};q.hcg.hwb=function(e){let t=e[1]/100,r=e[2]/100,i=t+r*(1-t);return[e[0],(i-t)*100,(1-i)*100]};q.hwb.hcg=function(e){let t=e[1]/100,r=e[2]/100,i=1-r,n=i-t,s=0;return n<1&&(s=(i-n)/(1-n)),[e[0],n*100,s*100]};q.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};q.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};q.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};q.gray.hsl=function(e){return[0,0,e[0]]};q.gray.hsv=q.gray.hsl;q.gray.hwb=function(e){return[0,100,e[0]]};q.gray.cmyk=function(e){return[0,0,0,e[0]]};q.gray.lab=function(e){return[e[0],0,0]};q.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,i=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(i.length)+i};q.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}});var Ju=x((J1,Ku)=>{var wn=lo();function qg(){let e={},t=Object.keys(wn);for(let r=t.length,i=0;i{var co=lo(),zg=Ju(),Er={},Gg=Object.keys(co);function $g(e){let t=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),e(r))};return"conversion"in e&&(t.conversion=e.conversion),t}function Wg(e){let t=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=e(r);if(typeof n=="object")for(let s=n.length,o=0;o{Er[e]={},Object.defineProperty(Er[e],"channels",{value:co[e].channels}),Object.defineProperty(Er[e],"labels",{value:co[e].labels});let t=zg(e);Object.keys(t).forEach(i=>{let n=t[i];Er[e][i]=Wg(n),Er[e][i].raw=$g(n)})});Qu.exports=Er});var oh=x((tb,eh)=>{"use strict";var rh=(e,t)=>(...r)=>`[${e(...r)+t}m`,ih=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};5;${i}m`},nh=(e,t)=>(...r)=>{let i=e(...r);return`[${38+t};2;${i[0]};${i[1]};${i[2]}m`},En=e=>e,sh=(e,t,r)=>[e,t,r],br=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{let i=r();return Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},uo,_r=(e,t,r,i)=>{uo===void 0&&(uo=th());let n=i?10:0,s={};for(let[o,l]of Object.entries(uo)){let a=o==="ansi16"?"ansi":o;o===t?s[a]=e(r,n):typeof l=="object"&&(s[a]=e(l[t],n))}return s};function Hg(){let e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],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],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],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,i]of Object.entries(t)){for(let[n,s]of Object.entries(i))t[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=t[n],e.set(s[0],s[1]);Object.defineProperty(t,r,{value:i,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="",t.bgColor.close="",br(t.color,"ansi",()=>_r(rh,"ansi16",En,!1)),br(t.color,"ansi256",()=>_r(ih,"ansi256",En,!1)),br(t.color,"ansi16m",()=>_r(nh,"rgb",sh,!1)),br(t.bgColor,"ansi",()=>_r(rh,"ansi16",En,!0)),br(t.bgColor,"ansi256",()=>_r(ih,"ansi256",En,!0)),br(t.bgColor,"ansi16m",()=>_r(nh,"rgb",sh,!0)),t}Object.defineProperty(eh,"exports",{enumerable:!0,get:Hg})});var lh=x((eb,ah)=>{"use strict";ah.exports=(e,t=process.argv)=>{let r=e.startsWith("-")?"":e.length===1?"-":"--",i=t.indexOf(r+e),n=t.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Vg=require("os"),uh=require("tty"),kt=lh(),{env:ut}=process,ve;kt("no-color")||kt("no-colors")||kt("color=false")||kt("color=never")?ve=0:(kt("color")||kt("colors")||kt("color=true")||kt("color=always"))&&(ve=1);"FORCE_COLOR"in ut&&(ut.FORCE_COLOR==="true"?ve=1:ut.FORCE_COLOR==="false"?ve=0:ve=ut.FORCE_COLOR.length===0?1:Math.min(parseInt(ut.FORCE_COLOR,10),3));function ho(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function fo(e,t){if(ve===0)return 0;if(kt("color=16m")||kt("color=full")||kt("color=truecolor"))return 3;if(kt("color=256"))return 2;if(e&&!t&&ve===void 0)return 0;let r=ve||0;if(ut.TERM==="dumb")return r;if(process.platform==="win32"){let i=Vg.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in ut)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(i=>i in ut)||ut.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in ut)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ut.TEAMCITY_VERSION)?1:0;if(ut.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ut){let i=parseInt((ut.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ut.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ut.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ut.TERM)||"COLORTERM"in ut?1:r}function Yg(e){let t=fo(e,e&&e.isTTY);return ho(t)}ch.exports={supportsColor:Yg,stdout:ho(fo(!0,uh.isatty(1))),stderr:ho(fo(!0,uh.isatty(2)))}});var ph=x((ib,fh)=>{"use strict";var Zg=(e,t,r)=>{let i=e.indexOf(t);if(i===-1)return e;let n=t.length,s=0,o="";do o+=e.substr(s,i-s)+t+r,s=i+n,i=e.indexOf(t,s);while(i!==-1);return o+=e.substr(s),o},Kg=(e,t,r,i)=>{let n=0,s="";do{let o=e[i-1]==="\r";s+=e.substr(n,(o?i-1:i)-n)+t+(o?`\r `:` `)+r,n=i+1,i=e.indexOf(` `,n)}while(i!==-1);return s+=e.substr(n),s};fh.exports={stringReplaceAll:Zg,stringEncaseCRLFWithFirstIndex:Kg}});var vh=x((nb,dh)=>{"use strict";var Jg=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,mh=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Qg=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,tv=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,ev=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function yh(e){let t=e[0]==="u",r=e[1]==="{";return t&&!r&&e.length===5||e[0]==="x"&&e.length===3?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):ev.get(e)||e}function rv(e,t){let r=[],i=t.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Qg))r.push(n[2].replace(tv,(l,a,c)=>a?yh(a):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${e}')`)}return r}function iv(e){mh.lastIndex=0;let t=[],r;for(;(r=mh.exec(e))!==null;){let i=r[1];if(r[2]){let n=rv(i,r[2]);t.push([i].concat(n))}else t.push([i])}return t}function gh(e,t){let r={};for(let n of t)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=e;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}dh.exports=(e,t)=>{let r=[],i=[],n=[];if(t.replace(Jg,(s,o,l,a,c,u)=>{if(o)n.push(yh(o));else if(a){let f=n.join("");n=[],i.push(r.length===0?f:gh(e,r)(f)),r.push({inverse:l,styles:iv(a)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(gh(e,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var go=x((sb,wh)=>{"use strict";var bi=oh(),{stdout:fo,stderr:po}=hh(),{stringReplaceAll:nv,stringEncaseCRLFWithFirstIndex:sv}=ph(),{isArray:En}=Array,Eh=["ansi","ansi","ansi256","ansi16m"],Sr=Object.create(null),ov=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=fo?fo.level:0;e.level=t.level===void 0?r:t.level},bh=class{constructor(t){return _h(t)}},_h=e=>{let t={};return ov(t,e),t.template=(...r)=>Sh(t.template,...r),Object.setPrototypeOf(t,bn.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=bh,t.template};function bn(e){return _h(e)}for(let[e,t]of Object.entries(bi))Sr[e]={get(){let r=_n(this,mo(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};Sr.visible={get(){let e=_n(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Oh=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of Oh)Sr[e]={get(){let{level:t}=this;return function(...r){let i=mo(bi.color[Eh[t]][e](...r),bi.color.close,this._styler);return _n(this,i,this._isEmpty)}}};for(let e of Oh){let t="bg"+e[0].toUpperCase()+e.slice(1);Sr[t]={get(){let{level:r}=this;return function(...i){let n=mo(bi.bgColor[Eh[r]][e](...i),bi.bgColor.close,this._styler);return _n(this,n,this._isEmpty)}}}}var av=Object.defineProperties(()=>{},{...Sr,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),mo=(e,t,r)=>{let i,n;return r===void 0?(i=e,n=t):(i=r.openAll+e,n=t+r.closeAll),{open:e,close:t,openAll:i,closeAll:n,parent:r}},_n=(e,t,r)=>{let i=(...n)=>En(n[0])&&En(n[0].raw)?Nh(i,Sh(i,...n)):Nh(i,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(i,av),i._generator=e,i._styler=t,i._isEmpty=r,i},Nh=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(r===void 0)return t;let{openAll:i,closeAll:n}=r;if(t.indexOf("")!==-1)for(;r!==void 0;)t=nv(t,r.close,r.open),r=r.parent;let s=t.indexOf(` -`);return s!==-1&&(t=sv(t,n,i,s)),i+t+n},yo,Sh=(e,...t)=>{let[r]=t;if(!En(r)||!En(r.raw))return t.join(" ");let i=t.slice(1),n=[r.raw[0]];for(let s=1;s{var Ue=require("path"),Ee=process.platform==="win32",be=require("fs"),lv=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function cv(){var e;if(lv){var t=new Error;e=r}else e=i;return e;function r(n){n&&(t.message=n.message,n=t,i(n))}function i(n){if(n){if(process.throwDeprecation)throw n;if(!process.noDeprecation){var s="fs: missing callback "+(n.stack||n.message);process.traceDeprecation?console.trace(s):console.error(s)}}}}function uv(e){return typeof e=="function"?e:cv()}var ob=Ue.normalize;Ee?ne=/(.*?)(?:[\/\\]+|$)/g:ne=/(.*?)(?:[\/]+|$)/g;var ne;Ee?_i=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/:_i=/^[\/]*/;var _i;vo.realpathSync=function(t,r){if(t=Ue.resolve(t),r&&Object.prototype.hasOwnProperty.call(r,t))return r[t];var i=t,n={},s={},o,l,a,c;u();function u(){var w=_i.exec(t);o=w[0].length,l=w[0],a=w[0],c="",Ee&&!s[a]&&(be.lstatSync(a),s[a]=!0)}for(;o=t.length)return r&&(r[n]=t),i(null,t);ne.lastIndex=l;var w=ne.exec(t);return u=a,a+=w[0],c=u+w[1],l=ne.lastIndex,o[c]||r&&r[c]===c?process.nextTick(y):r&&Object.prototype.hasOwnProperty.call(r,c)?m(r[c]):be.lstat(c,b)}function b(w,O){if(w)return i(w);if(!O.isSymbolicLink())return o[c]=!0,r&&(r[c]=c),process.nextTick(y);if(!Ee){var d=O.dev.toString(32)+":"+O.ino.toString(32);if(s.hasOwnProperty(d))return E(null,s[d],c)}be.stat(c,function(g){if(g)return i(g);be.readlink(c,function(N,A){Ee||(s[d]=A),E(N,A)})})}function E(w,O,d){if(w)return i(w);var g=Ue.resolve(u,O);r&&(r[d]=g),m(g)}function m(w){t=Ue.resolve(w,t.slice(l)),f()}}});var _o=x((lb,Th)=>{Th.exports=_e;_e.realpath=_e;_e.sync=wo;_e.realpathSync=wo;_e.monkeypatch=hv;_e.unmonkeypatch=fv;var Or=require("fs"),Eo=Or.realpath,bo=Or.realpathSync,pv=process.version,Rh=/^v[0-5]\./.test(pv),Ah=Dh();function Ih(e){return e&&e.syscall==="realpath"&&(e.code==="ELOOP"||e.code==="ENOMEM"||e.code==="ENAMETOOLONG")}function _e(e,t,r){if(Rh)return Eo(e,t,r);typeof t=="function"&&(r=t,t=null),Eo(e,t,function(i,n){Ih(i)?Ah.realpath(e,t,r):r(i,n)})}function wo(e,t){if(Rh)return bo(e,t);try{return bo(e,t)}catch(r){if(Ih(r))return Ah.realpathSync(e,t);throw r}}function hv(){Or.realpath=_e,Or.realpathSync=wo}function fv(){Or.realpath=Eo,Or.realpathSync=bo}});var Lh=x((cb,xh)=>{xh.exports=function(e,t){for(var r=[],i=0;i{"use strict";Mh.exports=Ch;function Ch(e,t,r){e instanceof RegExp&&(e=Ph(e,r)),t instanceof RegExp&&(t=Ph(t,r));var i=kh(e,t,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+e.length,i[1]),post:r.slice(i[1]+t.length)}}function Ph(e,t){var r=t.match(e);return r?r[0]:null}Ch.range=kh;function kh(e,t,r){var i,n,s,o,l,a=r.indexOf(e),c=r.indexOf(t,a+1),u=a;if(a>=0&&c>0){for(i=[],s=r.length;u>=0&&!l;)u==a?(i.push(u),a=r.indexOf(e,u+1)):i.length==1?l=[i.pop(),c]:(n=i.pop(),n=0?a:c;i.length&&(l=[s,o])}return l}});var $h=x((hb,Fh)=>{var mv=Lh(),qh=Bh();Fh.exports=yv;var Uh="\0SLASH"+Math.random()+"\0",jh="\0OPEN"+Math.random()+"\0",So="\0CLOSE"+Math.random()+"\0",Xh="\0COMMA"+Math.random()+"\0",zh="\0PERIOD"+Math.random()+"\0";function Oo(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function gv(e){return e.split("\\\\").join(Uh).split("\\{").join(jh).split("\\}").join(So).split("\\,").join(Xh).split("\\.").join(zh)}function vv(e){return e.split(Uh).join("\\").split(jh).join("{").split(So).join("}").split(Xh).join(",").split(zh).join(".")}function Gh(e){if(!e)return[""];var t=[],r=qh("{","}",e);if(!r)return e.split(",");var i=r.pre,n=r.body,s=r.post,o=i.split(",");o[o.length-1]+="{"+n+"}";var l=Gh(s);return s.length&&(o[o.length-1]+=l.shift(),o.push.apply(o,l)),t.push.apply(t,o),t}function yv(e){return e?(e.substr(0,2)==="{}"&&(e="\\{\\}"+e.substr(2)),Nr(gv(e),!0).map(vv)):[]}function wv(e){return"{"+e+"}"}function Ev(e){return/^-?0\d/.test(e)}function bv(e,t){return e<=t}function _v(e,t){return e>=t}function Nr(e,t){var r=[],i=qh("{","}",e);if(!i||/\$$/.test(i.pre))return[e];var n=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),o=n||s,l=i.body.indexOf(",")>=0;if(!o&&!l)return i.post.match(/,.*\}/)?(e=i.pre+"{"+i.body+So+i.post,Nr(e)):[e];var a;if(o)a=i.body.split(/\.\./);else if(a=Gh(i.body),a.length===1&&(a=Nr(a[0],!1).map(wv),a.length===1)){var u=i.post.length?Nr(i.post,!1):[""];return u.map(function(L){return i.pre+a[0]+L})}var c=i.pre,u=i.post.length?Nr(i.post,!1):[""],f;if(o){var y=Oo(a[0]),b=Oo(a[1]),E=Math.max(a[0].length,a[1].length),m=a.length==3?Math.abs(Oo(a[2])):1,w=bv,O=b0){var _=new Array(A+1).join("0");g<0?N="-"+_+N.slice(1):N=_+N}}f.push(N)}}else f=mv(a,function(D){return Nr(D,!1)});for(var R=0;R{Wh.exports=Bt;Bt.Minimatch=ht;var Si={sep:"/"};try{Si=require("path")}catch(e){}var No=Bt.GLOBSTAR=ht.GLOBSTAR={},Sv=$h(),Hh={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},Do="[^/]",To=Do+"*?",Ov="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Nv="(?:(?!(?:\\/|^)\\.).)*?",Vh=Dv("().*{}+?[]^$\\!");function Dv(e){return e.split("").reduce(function(t,r){return t[r]=!0,t},{})}var Yh=/\/+/;Bt.filter=Tv;function Tv(e,t){return t=t||{},function(r,i,n){return Bt(r,e,t)}}function Zh(e,t){e=e||{},t=t||{};var r={};return Object.keys(t).forEach(function(i){r[i]=t[i]}),Object.keys(e).forEach(function(i){r[i]=e[i]}),r}Bt.defaults=function(e){if(!e||!Object.keys(e).length)return Bt;var t=Bt,r=function(n,s,o){return t.minimatch(n,s,Zh(e,o))};return r.Minimatch=function(n,s){return new t.Minimatch(n,Zh(e,s))},r};ht.defaults=function(e){return!e||!Object.keys(e).length?ht:Bt.defaults(e).Minimatch};function Bt(e,t,r){if(typeof t!="string")throw new TypeError("glob pattern string required");return r||(r={}),!r.nocomment&&t.charAt(0)==="#"?!1:t.trim()===""?e==="":new ht(t,r).match(e)}function ht(e,t){if(!(this instanceof ht))return new ht(e,t);if(typeof e!="string")throw new TypeError("glob pattern string required");t||(t={}),e=e.trim(),Si.sep!=="/"&&(e=e.split(Si.sep).join("/")),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}ht.prototype.debug=function(){};ht.prototype.make=Rv;function Rv(){if(!this._made){var e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate();var r=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error),this.debug(this.pattern,r),r=this.globParts=r.map(function(i){return i.split(Yh)}),this.debug(this.pattern,r),r=r.map(function(i,n,s){return i.map(this.parse,this)},this),this.debug(this.pattern,r),r=r.filter(function(i){return i.indexOf(!1)===-1}),this.debug(this.pattern,r),this.set=r}}ht.prototype.parseNegate=Av;function Av(){var e=this.pattern,t=!1,r=this.options,i=0;if(!r.nonegate){for(var n=0,s=e.length;n1024*64)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&e==="**")return No;if(e==="")return"";var i="",n=!!r.nocase,s=!1,o=[],l=[],a,c=!1,u=-1,f=-1,y=e.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",b=this;function E(){if(a){switch(a){case"*":i+=To,n=!0;break;case"?":i+=Do,n=!0;break;default:i+="\\"+a;break}b.debug("clearStateChar %j %j",a,i),a=!1}}for(var m=0,w=e.length,O;m-1;B--){var P=l[B],D=i.slice(0,P.reStart),L=i.slice(P.reStart,P.reEnd-8),F=i.slice(P.reEnd-8,P.reEnd),U=i.slice(P.reEnd);F+=U;var Y=D.split("(").length-1,$=U;for(m=0;m=0&&(n=e[s],!n);s--);for(s=0;sa?yh(a):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${e}')`)}return r}function iv(e){mh.lastIndex=0;let t=[],r;for(;(r=mh.exec(e))!==null;){let i=r[1];if(r[2]){let n=rv(i,r[2]);t.push([i].concat(n))}else t.push([i])}return t}function gh(e,t){let r={};for(let n of t)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=e;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}dh.exports=(e,t)=>{let r=[],i=[],n=[];if(t.replace(Jg,(s,o,l,a,c,u)=>{if(o)n.push(yh(o));else if(a){let f=n.join("");n=[],i.push(r.length===0?f:gh(e,r)(f)),r.push({inverse:l,styles:iv(a)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(gh(e,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var vo=x((sb,wh)=>{"use strict";var bi=oh(),{stdout:po,stderr:mo}=hh(),{stringReplaceAll:nv,stringEncaseCRLFWithFirstIndex:sv}=ph(),{isArray:bn}=Array,Eh=["ansi","ansi","ansi256","ansi16m"],Sr=Object.create(null),ov=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=po?po.level:0;e.level=t.level===void 0?r:t.level},bh=class{constructor(t){return _h(t)}},_h=e=>{let t={};return ov(t,e),t.template=(...r)=>Sh(t.template,...r),Object.setPrototypeOf(t,_n.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=bh,t.template};function _n(e){return _h(e)}for(let[e,t]of Object.entries(bi))Sr[e]={get(){let r=Sn(this,yo(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};Sr.visible={get(){let e=Sn(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Oh=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let e of Oh)Sr[e]={get(){let{level:t}=this;return function(...r){let i=yo(bi.color[Eh[t]][e](...r),bi.color.close,this._styler);return Sn(this,i,this._isEmpty)}}};for(let e of Oh){let t="bg"+e[0].toUpperCase()+e.slice(1);Sr[t]={get(){let{level:r}=this;return function(...i){let n=yo(bi.bgColor[Eh[r]][e](...i),bi.bgColor.close,this._styler);return Sn(this,n,this._isEmpty)}}}}var av=Object.defineProperties(()=>{},{...Sr,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),yo=(e,t,r)=>{let i,n;return r===void 0?(i=e,n=t):(i=r.openAll+e,n=t+r.closeAll),{open:e,close:t,openAll:i,closeAll:n,parent:r}},Sn=(e,t,r)=>{let i=(...n)=>bn(n[0])&&bn(n[0].raw)?Nh(i,Sh(i,...n)):Nh(i,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(i,av),i._generator=e,i._styler=t,i._isEmpty=r,i},Nh=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(r===void 0)return t;let{openAll:i,closeAll:n}=r;if(t.indexOf("")!==-1)for(;r!==void 0;)t=nv(t,r.close,r.open),r=r.parent;let s=t.indexOf(` +`);return s!==-1&&(t=sv(t,n,i,s)),i+t+n},go,Sh=(e,...t)=>{let[r]=t;if(!bn(r)||!bn(r.raw))return t.join(" ");let i=t.slice(1),n=[r.raw[0]];for(let s=1;s{var qe=require("path"),we=process.platform==="win32",Ee=require("fs"),lv=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function cv(){var e;if(lv){var t=new Error;e=r}else e=i;return e;function r(n){n&&(t.message=n.message,n=t,i(n))}function i(n){if(n){if(process.throwDeprecation)throw n;if(!process.noDeprecation){var s="fs: missing callback "+(n.stack||n.message);process.traceDeprecation?console.trace(s):console.error(s)}}}}function uv(e){return typeof e=="function"?e:cv()}var ob=qe.normalize;we?ie=/(.*?)(?:[\/\\]+|$)/g:ie=/(.*?)(?:[\/]+|$)/g;var ie;we?_i=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/:_i=/^[\/]*/;var _i;wo.realpathSync=function(t,r){if(t=qe.resolve(t),r&&Object.prototype.hasOwnProperty.call(r,t))return r[t];var i=t,n={},s={},o,l,a,c;u();function u(){var w=_i.exec(t);o=w[0].length,l=w[0],a=w[0],c="",we&&!s[a]&&(Ee.lstatSync(a),s[a]=!0)}for(;o=t.length)return r&&(r[n]=t),i(null,t);ie.lastIndex=l;var w=ie.exec(t);return u=a,a+=w[0],c=u+w[1],l=ie.lastIndex,o[c]||r&&r[c]===c?process.nextTick(y):r&&Object.prototype.hasOwnProperty.call(r,c)?m(r[c]):Ee.lstat(c,b)}function b(w,O){if(w)return i(w);if(!O.isSymbolicLink())return o[c]=!0,r&&(r[c]=c),process.nextTick(y);if(!we){var d=O.dev.toString(32)+":"+O.ino.toString(32);if(s.hasOwnProperty(d))return E(null,s[d],c)}Ee.stat(c,function(g){if(g)return i(g);Ee.readlink(c,function(N,A){we||(s[d]=A),E(N,A)})})}function E(w,O,d){if(w)return i(w);var g=qe.resolve(u,O);r&&(r[d]=g),m(g)}function m(w){t=qe.resolve(w,t.slice(l)),f()}}});var So=x((lb,Th)=>{Th.exports=be;be.realpath=be;be.sync=Eo;be.realpathSync=Eo;be.monkeypatch=hv;be.unmonkeypatch=fv;var Or=require("fs"),bo=Or.realpath,_o=Or.realpathSync,pv=process.version,Rh=/^v[0-5]\./.test(pv),Ah=Dh();function Ih(e){return e&&e.syscall==="realpath"&&(e.code==="ELOOP"||e.code==="ENOMEM"||e.code==="ENAMETOOLONG")}function be(e,t,r){if(Rh)return bo(e,t,r);typeof t=="function"&&(r=t,t=null),bo(e,t,function(i,n){Ih(i)?Ah.realpath(e,t,r):r(i,n)})}function Eo(e,t){if(Rh)return _o(e,t);try{return _o(e,t)}catch(r){if(Ih(r))return Ah.realpathSync(e,t);throw r}}function hv(){Or.realpath=be,Or.realpathSync=Eo}function fv(){Or.realpath=bo,Or.realpathSync=_o}});var Lh=x((cb,xh)=>{xh.exports=function(e,t){for(var r=[],i=0;i{"use strict";Mh.exports=Ch;function Ch(e,t,r){e instanceof RegExp&&(e=Ph(e,r)),t instanceof RegExp&&(t=Ph(t,r));var i=kh(e,t,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+e.length,i[1]),post:r.slice(i[1]+t.length)}}function Ph(e,t){var r=t.match(e);return r?r[0]:null}Ch.range=kh;function kh(e,t,r){var i,n,s,o,l,a=r.indexOf(e),c=r.indexOf(t,a+1),u=a;if(a>=0&&c>0){for(i=[],s=r.length;u>=0&&!l;)u==a?(i.push(u),a=r.indexOf(e,u+1)):i.length==1?l=[i.pop(),c]:(n=i.pop(),n=0?a:c;i.length&&(l=[s,o])}return l}});var $h=x((hb,Fh)=>{var mv=Lh(),qh=Bh();Fh.exports=yv;var Uh="\0SLASH"+Math.random()+"\0",jh="\0OPEN"+Math.random()+"\0",Oo="\0CLOSE"+Math.random()+"\0",Xh="\0COMMA"+Math.random()+"\0",zh="\0PERIOD"+Math.random()+"\0";function No(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function gv(e){return e.split("\\\\").join(Uh).split("\\{").join(jh).split("\\}").join(Oo).split("\\,").join(Xh).split("\\.").join(zh)}function vv(e){return e.split(Uh).join("\\").split(jh).join("{").split(Oo).join("}").split(Xh).join(",").split(zh).join(".")}function Gh(e){if(!e)return[""];var t=[],r=qh("{","}",e);if(!r)return e.split(",");var i=r.pre,n=r.body,s=r.post,o=i.split(",");o[o.length-1]+="{"+n+"}";var l=Gh(s);return s.length&&(o[o.length-1]+=l.shift(),o.push.apply(o,l)),t.push.apply(t,o),t}function yv(e){return e?(e.substr(0,2)==="{}"&&(e="\\{\\}"+e.substr(2)),Nr(gv(e),!0).map(vv)):[]}function wv(e){return"{"+e+"}"}function Ev(e){return/^-?0\d/.test(e)}function bv(e,t){return e<=t}function _v(e,t){return e>=t}function Nr(e,t){var r=[],i=qh("{","}",e);if(!i||/\$$/.test(i.pre))return[e];var n=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),o=n||s,l=i.body.indexOf(",")>=0;if(!o&&!l)return i.post.match(/,.*\}/)?(e=i.pre+"{"+i.body+Oo+i.post,Nr(e)):[e];var a;if(o)a=i.body.split(/\.\./);else if(a=Gh(i.body),a.length===1&&(a=Nr(a[0],!1).map(wv),a.length===1)){var u=i.post.length?Nr(i.post,!1):[""];return u.map(function(L){return i.pre+a[0]+L})}var c=i.pre,u=i.post.length?Nr(i.post,!1):[""],f;if(o){var y=No(a[0]),b=No(a[1]),E=Math.max(a[0].length,a[1].length),m=a.length==3?Math.abs(No(a[2])):1,w=bv,O=b0){var _=new Array(A+1).join("0");g<0?N="-"+_+N.slice(1):N=_+N}}f.push(N)}}else f=mv(a,function(D){return Nr(D,!1)});for(var R=0;R{Wh.exports=Bt;Bt.Minimatch=ht;var Si={sep:"/"};try{Si=require("path")}catch(e){}var Do=Bt.GLOBSTAR=ht.GLOBSTAR={},Sv=$h(),Hh={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},To="[^/]",Ro=To+"*?",Ov="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Nv="(?:(?!(?:\\/|^)\\.).)*?",Vh=Dv("().*{}+?[]^$\\!");function Dv(e){return e.split("").reduce(function(t,r){return t[r]=!0,t},{})}var Yh=/\/+/;Bt.filter=Tv;function Tv(e,t){return t=t||{},function(r,i,n){return Bt(r,e,t)}}function Zh(e,t){e=e||{},t=t||{};var r={};return Object.keys(t).forEach(function(i){r[i]=t[i]}),Object.keys(e).forEach(function(i){r[i]=e[i]}),r}Bt.defaults=function(e){if(!e||!Object.keys(e).length)return Bt;var t=Bt,r=function(n,s,o){return t.minimatch(n,s,Zh(e,o))};return r.Minimatch=function(n,s){return new t.Minimatch(n,Zh(e,s))},r};ht.defaults=function(e){return!e||!Object.keys(e).length?ht:Bt.defaults(e).Minimatch};function Bt(e,t,r){if(typeof t!="string")throw new TypeError("glob pattern string required");return r||(r={}),!r.nocomment&&t.charAt(0)==="#"?!1:t.trim()===""?e==="":new ht(t,r).match(e)}function ht(e,t){if(!(this instanceof ht))return new ht(e,t);if(typeof e!="string")throw new TypeError("glob pattern string required");t||(t={}),e=e.trim(),Si.sep!=="/"&&(e=e.split(Si.sep).join("/")),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}ht.prototype.debug=function(){};ht.prototype.make=Rv;function Rv(){if(!this._made){var e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate();var r=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error),this.debug(this.pattern,r),r=this.globParts=r.map(function(i){return i.split(Yh)}),this.debug(this.pattern,r),r=r.map(function(i,n,s){return i.map(this.parse,this)},this),this.debug(this.pattern,r),r=r.filter(function(i){return i.indexOf(!1)===-1}),this.debug(this.pattern,r),this.set=r}}ht.prototype.parseNegate=Av;function Av(){var e=this.pattern,t=!1,r=this.options,i=0;if(!r.nonegate){for(var n=0,s=e.length;n1024*64)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&e==="**")return Do;if(e==="")return"";var i="",n=!!r.nocase,s=!1,o=[],l=[],a,c=!1,u=-1,f=-1,y=e.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",b=this;function E(){if(a){switch(a){case"*":i+=Ro,n=!0;break;case"?":i+=To,n=!0;break;default:i+="\\"+a;break}b.debug("clearStateChar %j %j",a,i),a=!1}}for(var m=0,w=e.length,O;m-1;B--){var P=l[B],D=i.slice(0,P.reStart),L=i.slice(P.reStart,P.reEnd-8),F=i.slice(P.reEnd-8,P.reEnd),U=i.slice(P.reEnd);F+=U;var Y=D.split("(").length-1,$=U;for(m=0;m=0&&(n=e[s],!n);s--);for(s=0;s>> no match, partial?`,e,u,t,f),u===o))}var b;if(typeof a=="string"?(i.nocase?b=c.toLowerCase()===a.toLowerCase():b=c===a,this.debug("string match",a,c,b)):(b=c.match(a),this.debug("pattern match",a,c,b)),!b)return!1}if(n===o&&s===l)return!0;if(n===o)return r;if(s===l){var E=n===o-1&&e[n]==="";return E}throw new Error("wtf?")};function xv(e){return e.replace(/\\(.)/g,"$1")}function Mv(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});var Jh=x((pb,Ro)=>{typeof Object.create=="function"?Ro.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Ro.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}}});var Qh=x((db,Ao)=>{try{if(Io=require("util"),typeof Io.inherits!="function")throw"";Ao.exports=Io.inherits}catch(e){Ao.exports=Jh()}var Io});var Tn=x((mb,Dn)=>{"use strict";function tf(e){return e.charAt(0)==="/"}function ef(e){var t=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,r=t.exec(e),i=r[1]||"",n=Boolean(i&&i.charAt(1)!==":");return Boolean(r[2]||n)}Dn.exports=process.platform==="win32"?ef:tf;Dn.exports.posix=tf;Dn.exports.win32=ef});var Lo=x(Vt=>{Vt.alphasort=rf;Vt.alphasorti=nf;Vt.setopts=Pv;Vt.ownProp=sf;Vt.makeAbs=Oi;Vt.finish=kv;Vt.mark=Bv;Vt.isIgnored=of;Vt.childrenIgnored=Fv;function sf(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Dr=require("path"),qv=Nn(),af=Tn(),xo=qv.Minimatch;function nf(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}function rf(e,t){return e.localeCompare(t)}function jv(e,t){e.ignore=t.ignore||[],Array.isArray(e.ignore)||(e.ignore=[e.ignore]),e.ignore.length&&(e.ignore=e.ignore.map(Uv))}function Uv(e){var t=null;if(e.slice(-3)==="/**"){var r=e.replace(/(\/\*\*)+$/,"");t=new xo(r,{dot:!0})}return{matcher:new xo(e,{dot:!0}),gmatcher:t}}function Pv(e,t,r){if(r||(r={}),r.matchBase&&t.indexOf("/")===-1){if(r.noglobstar)throw new Error("base matching requires globstar");t="**/"+t}e.silent=!!r.silent,e.pattern=t,e.strict=r.strict!==!1,e.realpath=!!r.realpath,e.realpathCache=r.realpathCache||Object.create(null),e.follow=!!r.follow,e.dot=!!r.dot,e.mark=!!r.mark,e.nodir=!!r.nodir,e.nodir&&(e.mark=!0),e.sync=!!r.sync,e.nounique=!!r.nounique,e.nonull=!!r.nonull,e.nosort=!!r.nosort,e.nocase=!!r.nocase,e.stat=!!r.stat,e.noprocess=!!r.noprocess,e.absolute=!!r.absolute,e.maxLength=r.maxLength||Infinity,e.cache=r.cache||Object.create(null),e.statCache=r.statCache||Object.create(null),e.symlinks=r.symlinks||Object.create(null),jv(e,r),e.changedCwd=!1;var i=process.cwd();sf(r,"cwd")?(e.cwd=Dr.resolve(r.cwd),e.changedCwd=e.cwd!==i):e.cwd=i,e.root=r.root||Dr.resolve(e.cwd,"/"),e.root=Dr.resolve(e.root),process.platform==="win32"&&(e.root=e.root.replace(/\\/g,"/")),e.cwdAbs=af(e.cwd)?e.cwd:Oi(e,e.cwd),process.platform==="win32"&&(e.cwdAbs=e.cwdAbs.replace(/\\/g,"/")),e.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,e.minimatch=new xo(t,r),e.options=e.minimatch.options}function kv(e){for(var t=e.nounique,r=t?[]:Object.create(null),i=0,n=e.matches.length;i{lf.exports=cf;cf.GlobSync=ot;var Rn=require("fs"),Xv=_o(),uf=Nn(),gb=uf.Minimatch,vb=Mo().Glob,wb=require("util"),Co=require("path"),hf=require("assert"),An=Tn(),se=Lo(),Eb=se.alphasort,bb=se.alphasorti,zv=se.setopts,Po=se.ownProp,Gv=se.childrenIgnored,$v=se.isIgnored;function cf(e,t){if(typeof t=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob +>>> no match, partial?`,e,u,t,f),u===o))}var b;if(typeof a=="string"?(i.nocase?b=c.toLowerCase()===a.toLowerCase():b=c===a,this.debug("string match",a,c,b)):(b=c.match(a),this.debug("pattern match",a,c,b)),!b)return!1}if(n===o&&s===l)return!0;if(n===o)return r;if(s===l){var E=n===o-1&&e[n]==="";return E}throw new Error("wtf?")};function xv(e){return e.replace(/\\(.)/g,"$1")}function Mv(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});var Jh=x((pb,Ao)=>{typeof Object.create=="function"?Ao.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Ao.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}}});var Qh=x((db,Io)=>{try{if(xo=require("util"),typeof xo.inherits!="function")throw"";Io.exports=xo.inherits}catch(e){Io.exports=Jh()}var xo});var Rn=x((mb,Tn)=>{"use strict";function tf(e){return e.charAt(0)==="/"}function ef(e){var t=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,r=t.exec(e),i=r[1]||"",n=Boolean(i&&i.charAt(1)!==":");return Boolean(r[2]||n)}Tn.exports=process.platform==="win32"?ef:tf;Tn.exports.posix=tf;Tn.exports.win32=ef});var Mo=x(Ht=>{Ht.alphasort=rf;Ht.alphasorti=nf;Ht.setopts=Pv;Ht.ownProp=sf;Ht.makeAbs=Oi;Ht.finish=kv;Ht.mark=Bv;Ht.isIgnored=of;Ht.childrenIgnored=Fv;function sf(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Dr=require("path"),qv=Dn(),af=Rn(),Lo=qv.Minimatch;function nf(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}function rf(e,t){return e.localeCompare(t)}function jv(e,t){e.ignore=t.ignore||[],Array.isArray(e.ignore)||(e.ignore=[e.ignore]),e.ignore.length&&(e.ignore=e.ignore.map(Uv))}function Uv(e){var t=null;if(e.slice(-3)==="/**"){var r=e.replace(/(\/\*\*)+$/,"");t=new Lo(r,{dot:!0})}return{matcher:new Lo(e,{dot:!0}),gmatcher:t}}function Pv(e,t,r){if(r||(r={}),r.matchBase&&t.indexOf("/")===-1){if(r.noglobstar)throw new Error("base matching requires globstar");t="**/"+t}e.silent=!!r.silent,e.pattern=t,e.strict=r.strict!==!1,e.realpath=!!r.realpath,e.realpathCache=r.realpathCache||Object.create(null),e.follow=!!r.follow,e.dot=!!r.dot,e.mark=!!r.mark,e.nodir=!!r.nodir,e.nodir&&(e.mark=!0),e.sync=!!r.sync,e.nounique=!!r.nounique,e.nonull=!!r.nonull,e.nosort=!!r.nosort,e.nocase=!!r.nocase,e.stat=!!r.stat,e.noprocess=!!r.noprocess,e.absolute=!!r.absolute,e.maxLength=r.maxLength||Infinity,e.cache=r.cache||Object.create(null),e.statCache=r.statCache||Object.create(null),e.symlinks=r.symlinks||Object.create(null),jv(e,r),e.changedCwd=!1;var i=process.cwd();sf(r,"cwd")?(e.cwd=Dr.resolve(r.cwd),e.changedCwd=e.cwd!==i):e.cwd=i,e.root=r.root||Dr.resolve(e.cwd,"/"),e.root=Dr.resolve(e.root),process.platform==="win32"&&(e.root=e.root.replace(/\\/g,"/")),e.cwdAbs=af(e.cwd)?e.cwd:Oi(e,e.cwd),process.platform==="win32"&&(e.cwdAbs=e.cwdAbs.replace(/\\/g,"/")),e.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,e.minimatch=new Lo(t,r),e.options=e.minimatch.options}function kv(e){for(var t=e.nounique,r=t?[]:Object.create(null),i=0,n=e.matches.length;i{lf.exports=cf;cf.GlobSync=ot;var An=require("fs"),Xv=So(),uf=Dn(),gb=uf.Minimatch,vb=Co().Glob,wb=require("util"),Po=require("path"),hf=require("assert"),In=Rn(),ne=Mo(),Eb=ne.alphasort,bb=ne.alphasorti,zv=ne.setopts,ko=ne.ownProp,Gv=ne.childrenIgnored,$v=ne.isIgnored;function cf(e,t){if(typeof t=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob See: https://github.com/isaacs/node-glob/issues/167`);return new ot(e,t).found}function ot(e,t){if(!e)throw new Error("must provide pattern");if(typeof t=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob -See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof ot))return new ot(e,t);if(zv(this,e,t),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var i=0;ithis.maxLength)return!1;if(!this.stat&&Po(this.cache,t)){var o=this.cache[t];if(Array.isArray(o)&&(o="DIR"),!r||o==="DIR")return o;if(r&&o==="FILE")return!1}var i,n=this.statCache[t];if(!n){var s;try{s=Rn.lstatSync(t)}catch(l){if(l&&(l.code==="ENOENT"||l.code==="ENOTDIR"))return this.statCache[t]=!1,!1}if(s&&s.isSymbolicLink())try{n=Rn.statSync(t)}catch(l){n=s}else n=s}this.statCache[t]=n;var o=!0;return n&&(o=n.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||o,r&&o==="FILE"?!1:o};ot.prototype._mark=function(e){return se.mark(this,e)};ot.prototype._makeAbs=function(e){return se.makeAbs(this,e)}});var ko=x((Sb,pf)=>{pf.exports=df;function df(e,t){if(e&&t)return df(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(i){r[i]=e[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var mf=ko();Bo.exports=mf(In);Bo.exports.strict=mf(yf);In.proto=In(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return In(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return yf(this)},configurable:!0})});function In(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function yf(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}});var vf=x((Nb,gf)=>{var Wv=ko(),Ni=Object.create(null),Hv=Fo();gf.exports=Wv(Vv);function Vv(e,t){return Ni[e]?(Ni[e].push(t),null):(Ni[e]=[t],Yv(e))}function Yv(e){return Hv(function t(){var r=Ni[e],i=r.length,n=Zv(arguments);try{for(var s=0;si?(r.splice(0,i),process.nextTick(function(){t.apply(null,n)})):delete Ni[e]}})}function Zv(e){for(var t=e.length,r=[],i=0;i{wf.exports=je;var xn=require("fs"),Kv=_o(),Ef=Nn(),Db=Ef.Minimatch,Jv=Qh(),Qv=require("events").EventEmitter,qo=require("path"),Uo=require("assert"),Di=Tn(),jo=ff(),oe=Lo(),Tb=oe.alphasort,Rb=oe.alphasorti,t0=oe.setopts,Xo=oe.ownProp,zo=vf(),Ab=require("util"),e0=oe.childrenIgnored,r0=oe.isIgnored,i0=Fo();function je(e,t,r){if(typeof t=="function"&&(r=t,t={}),t||(t={}),t.sync){if(r)throw new TypeError("callback provided to sync glob");return jo(e,t)}return new K(e,t,r)}je.sync=jo;var n0=je.GlobSync=jo.GlobSync;je.glob=je;function s0(e,t){if(t===null||typeof t!="object")return e;for(var r=Object.keys(t),i=r.length;i--;)e[r[i]]=t[r[i]];return e}je.hasMagic=function(e,t){var r=s0({},t);r.noprocess=!0;var i=new K(e,r),n=i.minimatch.set;if(!e)return!1;if(n.length>1)return!0;for(var s=0;sthis.maxLength)return t();if(!this.stat&&Xo(this.cache,r)){var n=this.cache[r];if(Array.isArray(n)&&(n="DIR"),!i||n==="DIR")return t(null,n);if(i&&n==="FILE")return t()}var s,o=this.statCache[r];if(o!==void 0){if(o===!1)return t(null,o);var l=o.isDirectory()?"DIR":"FILE";return i&&l==="FILE"?t():t(null,l,o)}var a=this,c=zo("stat\0"+r,u);c&&xn.lstat(r,c);function u(f,y){if(y&&y.isSymbolicLink())return xn.stat(r,function(b,E){b?a._stat2(e,r,null,y,t):a._stat2(e,r,b,E,t)});a._stat2(e,r,f,y,t)}};K.prototype._stat2=function(e,t,r,i,n){if(r&&(r.code==="ENOENT"||r.code==="ENOTDIR"))return this.statCache[t]=!1,n();var s=e.slice(-1)==="/";if(this.statCache[t]=i,t.slice(-1)==="/"&&i&&!i.isDirectory())return n(null,!1,i);var o=!0;return i&&(o=i.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||o,s&&o==="FILE"?n():n(null,o,i)}});var Rf=x((xb,bf)=>{var tt=require("assert"),_f=require("path"),Sf=require("fs"),Tr;try{Tr=Mo()}catch(e){}var a0={nosort:!0,silent:!0},Go=0,Ti=process.platform==="win32",Of=e=>{if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{e[r]=e[r]||Sf[r],r=r+"Sync",e[r]=e[r]||Sf[r]}),e.maxBusyTries=e.maxBusyTries||3,e.emfileWait=e.emfileWait||1e3,e.glob===!1&&(e.disableGlob=!0),e.disableGlob!==!0&&Tr===void 0)throw Error("glob dependency not found, set `options.disableGlob = true` if intentional");e.disableGlob=e.disableGlob||!1,e.glob=e.glob||a0},Wo=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),tt(e,"rimraf: missing path"),tt.equal(typeof e,"string","rimraf: path should be a string"),tt.equal(typeof r,"function","rimraf: callback function required"),tt(t,"rimraf: invalid options argument provided"),tt.equal(typeof t,"object","rimraf: options should be object"),Of(t);let i=0,n=null,s=0,o=a=>{n=n||a,--s==0&&r(n)},l=(a,c)=>{if(a)return r(a);if(s=c.length,s===0)return r();c.forEach(u=>{let f=y=>{if(y){if((y.code==="EBUSY"||y.code==="ENOTEMPTY"||y.code==="EPERM")&&i$o(u,t,f),i*100);if(y.code==="EMFILE"&&Go$o(u,t,f),Go++);y.code==="ENOENT"&&(y=null)}Go=0,o(y)};$o(u,t,f)})};if(t.disableGlob||!Tr.hasMagic(e))return l(null,[e]);t.lstat(e,(a,c)=>{if(!a)return l(null,[e]);Tr(e,t.glob,l)})},$o=(e,t,r)=>{tt(e),tt(t),tt(typeof r=="function"),t.lstat(e,(i,n)=>{if(i&&i.code==="ENOENT")return r(null);if(i&&i.code==="EPERM"&&Ti&&Nf(e,t,i,r),n&&n.isDirectory())return Ln(e,t,i,r);t.unlink(e,s=>{if(s){if(s.code==="ENOENT")return r(null);if(s.code==="EPERM")return Ti?Nf(e,t,s,r):Ln(e,t,s,r);if(s.code==="EISDIR")return Ln(e,t,s,r)}return r(s)})})},Nf=(e,t,r,i)=>{tt(e),tt(t),tt(typeof i=="function"),t.chmod(e,438,n=>{n?i(n.code==="ENOENT"?null:r):t.stat(e,(s,o)=>{s?i(s.code==="ENOENT"?null:r):o.isDirectory()?Ln(e,t,r,i):t.unlink(e,i)})})},Df=(e,t,r)=>{tt(e),tt(t);try{t.chmodSync(e,438)}catch(n){if(n.code==="ENOENT")return;throw r}let i;try{i=t.statSync(e)}catch(n){if(n.code==="ENOENT")return;throw r}i.isDirectory()?Mn(e,t,r):t.unlinkSync(e)},Ln=(e,t,r,i)=>{tt(e),tt(t),tt(typeof i=="function"),t.rmdir(e,n=>{n&&(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")?l0(e,t,i):n&&n.code==="ENOTDIR"?i(r):i(n)})},l0=(e,t,r)=>{tt(e),tt(t),tt(typeof r=="function"),t.readdir(e,(i,n)=>{if(i)return r(i);let s=n.length;if(s===0)return t.rmdir(e,r);let o;n.forEach(l=>{Wo(_f.join(e,l),t,a=>{if(!o){if(a)return r(o=a);--s==0&&t.rmdir(e,r)}})})})},Tf=(e,t)=>{t=t||{},Of(t),tt(e,"rimraf: missing path"),tt.equal(typeof e,"string","rimraf: path should be a string"),tt(t,"rimraf: missing options"),tt.equal(typeof t,"object","rimraf: options should be object");let r;if(t.disableGlob||!Tr.hasMagic(e))r=[e];else try{t.lstatSync(e),r=[e]}catch(i){r=Tr.sync(e,t.glob)}if(!!r.length)for(let i=0;i{tt(e),tt(t);try{t.rmdirSync(e)}catch(i){if(i.code==="ENOENT")return;if(i.code==="ENOTDIR")throw r;(i.code==="ENOTEMPTY"||i.code==="EEXIST"||i.code==="EPERM")&&c0(e,t)}},c0=(e,t)=>{tt(e),tt(t),t.readdirSync(e).forEach(n=>Tf(_f.join(e,n),t));let r=Ti?100:1,i=0;do{let n=!0;try{let s=t.rmdirSync(e,t);return n=!1,s}finally{if(++i{var ft=require("fs"),Ho=require("os"),It=require("path"),Af=require("crypto"),Yt={fs:ft.constants,os:Ho.constants},If=Rf(),xf="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Lf=/XXXXXX/,u0=3,Mf=(Yt.O_CREAT||Yt.fs.O_CREAT)|(Yt.O_EXCL||Yt.fs.O_EXCL)|(Yt.O_RDWR||Yt.fs.O_RDWR),h0=Ho.platform()==="win32",f0=Yt.EBADF||Yt.os.errno.EBADF,p0=Yt.ENOENT||Yt.os.errno.ENOENT,Cf=448,Pf=384,d0="exit",Rr=[],kf=ft.rmdirSync.bind(ft),Bf=If.sync,Ff=!1;function Vo(e,t){let r=Ar(e,t),i=r[0],n=r[1];try{Uf(i)}catch(o){return n(o)}let s=i.tries;(function o(){try{let l=qf(i);ft.stat(l,function(a){if(!a)return s-- >0?o():n(new Error("Could not get a unique tmp filename, max tries reached "+l));n(null,l)})}catch(l){n(l)}})()}function Yo(e){let t=Ar(e),r=t[0];Uf(r);let i=r.tries;do{let n=qf(r);try{ft.statSync(n)}catch(s){return n}}while(i-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function m0(e,t){let r=Ar(e,t),i=r[0],n=r[1];Vo(i,function(o,l){if(o)return n(o);ft.open(l,Mf,i.mode||Pf,function(c,u){if(c)return n(c);if(i.discardDescriptor)return ft.close(u,function(y){return n(y,l,void 0,Zo(l,-1,i,!1))});{let f=i.discardDescriptor||i.detachDescriptor;n(null,l,u,Zo(l,f?-1:u,i,!1))}})})}function y0(e){let t=Ar(e),r=t[0],i=r.discardDescriptor||r.detachDescriptor,n=Yo(r);var s=ft.openSync(n,Mf,r.mode||Pf);return r.discardDescriptor&&(ft.closeSync(s),s=void 0),{name:n,fd:s,removeCallback:Zo(n,i?-1:s,r,!0)}}function g0(e,t){let r=Ar(e,t),i=r[0],n=r[1];Vo(i,function(o,l){if(o)return n(o);ft.mkdir(l,i.mode||Cf,function(c){if(c)return n(c);n(null,l,jf(l,i,!1))})})}function v0(e){let t=Ar(e),r=t[0],i=Yo(r);return ft.mkdirSync(i,r.mode||Cf),{name:i,removeCallback:jf(i,r,!0)}}function w0(e,t){let r=function(i){if(i&&!Ko(i))return t(i);t()};0<=e[0]?ft.close(e[0],function(){ft.unlink(e[1],r)}):ft.unlink(e[1],r)}function b0(e){let t=null;try{0<=e[0]&&ft.closeSync(e[0])}catch(r){if(!E0(r)&&!Ko(r))throw r}finally{try{ft.unlinkSync(e[1])}catch(r){Ko(r)||(t=r)}}if(t!==null)throw t}function Zo(e,t,r,i){let n=Cn(b0,[t,e],i),s=Cn(w0,[t,e],i,n);return r.keep||Rr.unshift(n),i?n:s}function jf(e,t,r){let i=t.unsafeCleanup?If:ft.rmdir.bind(ft),n=t.unsafeCleanup?Bf:kf,s=Cn(n,e,r),o=Cn(i,e,r,s);return t.keep||Rr.unshift(s),r?s:o}function Cn(e,t,r,i){let n=!1;return function s(o){if(!n){let l=i||s,a=Rr.indexOf(l);return a>=0&&Rr.splice(a,1),n=!0,r||e===kf||e===Bf?e(t):e(t,o||function(){})}}}function _0(){if(!!Ff)for(;Rr.length;)try{Rr[0]()}catch(e){}}function Xf(e){let t=[],r=null;try{r=Af.randomBytes(e)}catch(n){r=Af.pseudoRandomBytes(e)}for(var i=0;i{Yi(O0);ks(O0,{execSync:()=>Ir,generateAppleScript:()=>Vf,register:()=>N0});var ea=Et(Fs()),ra=Et(Wu()),Wf=Et(require("child_process")),Gt=Et(require("fs")),Ri=Et(require("path")),Se=Et(go()),Hf=Et(Pn()),ia="/Applications/git-peek.app/Contents/temp";function Ir(e){return console.log("$ ",Se.default.gray(e)),Wf.default.execSync(e,{cwd:process.cwd(),stdio:"inherit"})}async function N0(e){try{await ea.default("duti")}catch(c){let u="HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install duti";console.log("duti not installed. Installing with homebrew."),Ir(u)}let t=Ri.default.join("/Applications/git-peek.app/Contents/","git-peek-shim");console.log("Generating AppleScript handler.");let r=await Vf(t,ia),i=Hf.default.dirSync({unsafeCleanup:!0}),n=Ri.default.join(i.name,"git-peek.applescript"),s=Ri.default.join(i.name,"git-peek.app");await Gt.default.promises.writeFile(n,r,"utf8"),console.log(Se.default.gray(r)),console.log("Compiling .applescript to .app"),Ir(`osacompile -o ${s} ${n}`),console.log("Updating Info.plist to support URL handler");let o=Ri.default.join(s,"contents/Info.plist"),l=ra.default.readFileSync(o);l.CFBundleIdentifier="com.apple.ScriptEditor.id.git-peek",l.CFBundleURLTypes=[{CFBundleURLName:"HTTP URL",CFBundleURLSchemes:["http","https",Xe]}],l.LSBackgroundOnly=!0,ra.default.writeFileSync(o,l),console.log("Updated Info.plist"),console.log("Moving application to /Applications/git-peek.app"),Gt.default.existsSync("/Applications/git-peek.app")&&Gt.default.rmSync("/Applications/git-peek.app",{recursive:!0,force:!0}),Gt.default.existsSync("/Applications/git-peek.app")&&Gt.default.rmSync("/Applications/git-peek.app",{force:!0,recursive:!0}),Gt.default.renameSync(s,"/Applications/git-peek.app"),console.log(Se.default.gray(`mkdir ${ia}`)),Gt.default.mkdirSync(ia);let a=`#!/bin/bash +See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof ot))return new ot(e,t);if(zv(this,e,t),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var i=0;ithis.maxLength)return!1;if(!this.stat&&ko(this.cache,t)){var o=this.cache[t];if(Array.isArray(o)&&(o="DIR"),!r||o==="DIR")return o;if(r&&o==="FILE")return!1}var i,n=this.statCache[t];if(!n){var s;try{s=An.lstatSync(t)}catch(l){if(l&&(l.code==="ENOENT"||l.code==="ENOTDIR"))return this.statCache[t]=!1,!1}if(s&&s.isSymbolicLink())try{n=An.statSync(t)}catch(l){n=s}else n=s}this.statCache[t]=n;var o=!0;return n&&(o=n.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||o,r&&o==="FILE"?!1:o};ot.prototype._mark=function(e){return ne.mark(this,e)};ot.prototype._makeAbs=function(e){return ne.makeAbs(this,e)}});var Bo=x((Sb,pf)=>{pf.exports=df;function df(e,t){if(e&&t)return df(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(i){r[i]=e[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var mf=Bo();Fo.exports=mf(xn);Fo.exports.strict=mf(yf);xn.proto=xn(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return xn(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return yf(this)},configurable:!0})});function xn(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function yf(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}});var vf=x((Nb,gf)=>{var Wv=Bo(),Ni=Object.create(null),Hv=qo();gf.exports=Wv(Vv);function Vv(e,t){return Ni[e]?(Ni[e].push(t),null):(Ni[e]=[t],Yv(e))}function Yv(e){return Hv(function t(){var r=Ni[e],i=r.length,n=Zv(arguments);try{for(var s=0;si?(r.splice(0,i),process.nextTick(function(){t.apply(null,n)})):delete Ni[e]}})}function Zv(e){for(var t=e.length,r=[],i=0;i{wf.exports=Ue;var Ln=require("fs"),Kv=So(),Ef=Dn(),Db=Ef.Minimatch,Jv=Qh(),Qv=require("events").EventEmitter,Uo=require("path"),jo=require("assert"),Di=Rn(),Xo=ff(),se=Mo(),Tb=se.alphasort,Rb=se.alphasorti,t0=se.setopts,zo=se.ownProp,Go=vf(),Ab=require("util"),e0=se.childrenIgnored,r0=se.isIgnored,i0=qo();function Ue(e,t,r){if(typeof t=="function"&&(r=t,t={}),t||(t={}),t.sync){if(r)throw new TypeError("callback provided to sync glob");return Xo(e,t)}return new K(e,t,r)}Ue.sync=Xo;var n0=Ue.GlobSync=Xo.GlobSync;Ue.glob=Ue;function s0(e,t){if(t===null||typeof t!="object")return e;for(var r=Object.keys(t),i=r.length;i--;)e[r[i]]=t[r[i]];return e}Ue.hasMagic=function(e,t){var r=s0({},t);r.noprocess=!0;var i=new K(e,r),n=i.minimatch.set;if(!e)return!1;if(n.length>1)return!0;for(var s=0;sthis.maxLength)return t();if(!this.stat&&zo(this.cache,r)){var n=this.cache[r];if(Array.isArray(n)&&(n="DIR"),!i||n==="DIR")return t(null,n);if(i&&n==="FILE")return t()}var s,o=this.statCache[r];if(o!==void 0){if(o===!1)return t(null,o);var l=o.isDirectory()?"DIR":"FILE";return i&&l==="FILE"?t():t(null,l,o)}var a=this,c=Go("stat\0"+r,u);c&&Ln.lstat(r,c);function u(f,y){if(y&&y.isSymbolicLink())return Ln.stat(r,function(b,E){b?a._stat2(e,r,null,y,t):a._stat2(e,r,b,E,t)});a._stat2(e,r,f,y,t)}};K.prototype._stat2=function(e,t,r,i,n){if(r&&(r.code==="ENOENT"||r.code==="ENOTDIR"))return this.statCache[t]=!1,n();var s=e.slice(-1)==="/";if(this.statCache[t]=i,t.slice(-1)==="/"&&i&&!i.isDirectory())return n(null,!1,i);var o=!0;return i&&(o=i.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||o,s&&o==="FILE"?n():n(null,o,i)}});var Rf=x((xb,bf)=>{var tt=require("assert"),_f=require("path"),Sf=require("fs"),Tr;try{Tr=Co()}catch(e){}var a0={nosort:!0,silent:!0},$o=0,Ti=process.platform==="win32",Of=e=>{if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{e[r]=e[r]||Sf[r],r=r+"Sync",e[r]=e[r]||Sf[r]}),e.maxBusyTries=e.maxBusyTries||3,e.emfileWait=e.emfileWait||1e3,e.glob===!1&&(e.disableGlob=!0),e.disableGlob!==!0&&Tr===void 0)throw Error("glob dependency not found, set `options.disableGlob = true` if intentional");e.disableGlob=e.disableGlob||!1,e.glob=e.glob||a0},Ho=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),tt(e,"rimraf: missing path"),tt.equal(typeof e,"string","rimraf: path should be a string"),tt.equal(typeof r,"function","rimraf: callback function required"),tt(t,"rimraf: invalid options argument provided"),tt.equal(typeof t,"object","rimraf: options should be object"),Of(t);let i=0,n=null,s=0,o=a=>{n=n||a,--s==0&&r(n)},l=(a,c)=>{if(a)return r(a);if(s=c.length,s===0)return r();c.forEach(u=>{let f=y=>{if(y){if((y.code==="EBUSY"||y.code==="ENOTEMPTY"||y.code==="EPERM")&&iWo(u,t,f),i*100);if(y.code==="EMFILE"&&$oWo(u,t,f),$o++);y.code==="ENOENT"&&(y=null)}$o=0,o(y)};Wo(u,t,f)})};if(t.disableGlob||!Tr.hasMagic(e))return l(null,[e]);t.lstat(e,(a,c)=>{if(!a)return l(null,[e]);Tr(e,t.glob,l)})},Wo=(e,t,r)=>{tt(e),tt(t),tt(typeof r=="function"),t.lstat(e,(i,n)=>{if(i&&i.code==="ENOENT")return r(null);if(i&&i.code==="EPERM"&&Ti&&Nf(e,t,i,r),n&&n.isDirectory())return Mn(e,t,i,r);t.unlink(e,s=>{if(s){if(s.code==="ENOENT")return r(null);if(s.code==="EPERM")return Ti?Nf(e,t,s,r):Mn(e,t,s,r);if(s.code==="EISDIR")return Mn(e,t,s,r)}return r(s)})})},Nf=(e,t,r,i)=>{tt(e),tt(t),tt(typeof i=="function"),t.chmod(e,438,n=>{n?i(n.code==="ENOENT"?null:r):t.stat(e,(s,o)=>{s?i(s.code==="ENOENT"?null:r):o.isDirectory()?Mn(e,t,r,i):t.unlink(e,i)})})},Df=(e,t,r)=>{tt(e),tt(t);try{t.chmodSync(e,438)}catch(n){if(n.code==="ENOENT")return;throw r}let i;try{i=t.statSync(e)}catch(n){if(n.code==="ENOENT")return;throw r}i.isDirectory()?Cn(e,t,r):t.unlinkSync(e)},Mn=(e,t,r,i)=>{tt(e),tt(t),tt(typeof i=="function"),t.rmdir(e,n=>{n&&(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")?l0(e,t,i):n&&n.code==="ENOTDIR"?i(r):i(n)})},l0=(e,t,r)=>{tt(e),tt(t),tt(typeof r=="function"),t.readdir(e,(i,n)=>{if(i)return r(i);let s=n.length;if(s===0)return t.rmdir(e,r);let o;n.forEach(l=>{Ho(_f.join(e,l),t,a=>{if(!o){if(a)return r(o=a);--s==0&&t.rmdir(e,r)}})})})},Tf=(e,t)=>{t=t||{},Of(t),tt(e,"rimraf: missing path"),tt.equal(typeof e,"string","rimraf: path should be a string"),tt(t,"rimraf: missing options"),tt.equal(typeof t,"object","rimraf: options should be object");let r;if(t.disableGlob||!Tr.hasMagic(e))r=[e];else try{t.lstatSync(e),r=[e]}catch(i){r=Tr.sync(e,t.glob)}if(!!r.length)for(let i=0;i{tt(e),tt(t);try{t.rmdirSync(e)}catch(i){if(i.code==="ENOENT")return;if(i.code==="ENOTDIR")throw r;(i.code==="ENOTEMPTY"||i.code==="EEXIST"||i.code==="EPERM")&&c0(e,t)}},c0=(e,t)=>{tt(e),tt(t),t.readdirSync(e).forEach(n=>Tf(_f.join(e,n),t));let r=Ti?100:1,i=0;do{let n=!0;try{let s=t.rmdirSync(e,t);return n=!1,s}finally{if(++i{var ft=require("fs"),Vo=require("os"),It=require("path"),Af=require("crypto"),Vt={fs:ft.constants,os:Vo.constants},If=Rf(),xf="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Lf=/XXXXXX/,u0=3,Mf=(Vt.O_CREAT||Vt.fs.O_CREAT)|(Vt.O_EXCL||Vt.fs.O_EXCL)|(Vt.O_RDWR||Vt.fs.O_RDWR),h0=Vo.platform()==="win32",f0=Vt.EBADF||Vt.os.errno.EBADF,p0=Vt.ENOENT||Vt.os.errno.ENOENT,Cf=448,Pf=384,d0="exit",Rr=[],kf=ft.rmdirSync.bind(ft),Bf=If.sync,Ff=!1;function Yo(e,t){let r=Ar(e,t),i=r[0],n=r[1];try{Uf(i)}catch(o){return n(o)}let s=i.tries;(function o(){try{let l=qf(i);ft.stat(l,function(a){if(!a)return s-- >0?o():n(new Error("Could not get a unique tmp filename, max tries reached "+l));n(null,l)})}catch(l){n(l)}})()}function Zo(e){let t=Ar(e),r=t[0];Uf(r);let i=r.tries;do{let n=qf(r);try{ft.statSync(n)}catch(s){return n}}while(i-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function m0(e,t){let r=Ar(e,t),i=r[0],n=r[1];Yo(i,function(o,l){if(o)return n(o);ft.open(l,Mf,i.mode||Pf,function(c,u){if(c)return n(c);if(i.discardDescriptor)return ft.close(u,function(y){return n(y,l,void 0,Ko(l,-1,i,!1))});{let f=i.discardDescriptor||i.detachDescriptor;n(null,l,u,Ko(l,f?-1:u,i,!1))}})})}function y0(e){let t=Ar(e),r=t[0],i=r.discardDescriptor||r.detachDescriptor,n=Zo(r);var s=ft.openSync(n,Mf,r.mode||Pf);return r.discardDescriptor&&(ft.closeSync(s),s=void 0),{name:n,fd:s,removeCallback:Ko(n,i?-1:s,r,!0)}}function g0(e,t){let r=Ar(e,t),i=r[0],n=r[1];Yo(i,function(o,l){if(o)return n(o);ft.mkdir(l,i.mode||Cf,function(c){if(c)return n(c);n(null,l,jf(l,i,!1))})})}function v0(e){let t=Ar(e),r=t[0],i=Zo(r);return ft.mkdirSync(i,r.mode||Cf),{name:i,removeCallback:jf(i,r,!0)}}function w0(e,t){let r=function(i){if(i&&!Jo(i))return t(i);t()};0<=e[0]?ft.close(e[0],function(){ft.unlink(e[1],r)}):ft.unlink(e[1],r)}function b0(e){let t=null;try{0<=e[0]&&ft.closeSync(e[0])}catch(r){if(!E0(r)&&!Jo(r))throw r}finally{try{ft.unlinkSync(e[1])}catch(r){Jo(r)||(t=r)}}if(t!==null)throw t}function Ko(e,t,r,i){let n=Pn(b0,[t,e],i),s=Pn(w0,[t,e],i,n);return r.keep||Rr.unshift(n),i?n:s}function jf(e,t,r){let i=t.unsafeCleanup?If:ft.rmdir.bind(ft),n=t.unsafeCleanup?Bf:kf,s=Pn(n,e,r),o=Pn(i,e,r,s);return t.keep||Rr.unshift(s),r?s:o}function Pn(e,t,r,i){let n=!1;return function s(o){if(!n){let l=i||s,a=Rr.indexOf(l);return a>=0&&Rr.splice(a,1),n=!0,r||e===kf||e===Bf?e(t):e(t,o||function(){})}}}function _0(){if(!!Ff)for(;Rr.length;)try{Rr[0]()}catch(e){}}function Xf(e){let t=[],r=null;try{r=Af.randomBytes(e)}catch(n){r=Af.pseudoRandomBytes(e)}for(var i=0;i{Zi(O0);Bs(O0,{execSync:()=>Ir,generateAppleScript:()=>Vf,register:()=>N0});var ra=Et(qs()),ia=Et(Wu()),Wf=Et(require("child_process")),_e=Et(require("fs")),Ri=Et(require("path")),Xe=Et(vo()),Hf=Et(kn()),Ai=`${process.env.HOME}/Applications/git-peek.app`;function Ir(e){return console.log("$ ",Xe.default.gray(e)),Wf.default.execSync(e,{cwd:process.cwd(),stdio:"inherit"})}async function N0(e){try{await ra.default("duti")}catch(c){let u="HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install duti";console.log("duti not installed. Installing with homebrew."),Ir(u)}let t=Ri.default.join(`${process.env.HOME}/Applications/git-peek.app/Contents/`,"git-peek-shim");console.log("Generating AppleScript handler.");let r=await Vf(t),i=Hf.default.dirSync({unsafeCleanup:!0}),n=Ri.default.join(i.name,"git-peek.applescript"),s=Ri.default.join(i.name,"git-peek.app");await _e.default.promises.writeFile(n,r,"utf8"),console.log(Xe.default.gray(r)),console.log("Compiling .applescript to .app"),Ir(`osacompile -o ${s} ${n}`),console.log("Updating Info.plist to support URL handler");let o=Ri.default.join(s,"contents/Info.plist"),l=ia.default.readFileSync(o);l.CFBundleIdentifier="com.apple.ScriptEditor.id.git-peek",l.CFBundleURLTypes=[{CFBundleURLName:"HTTP URL",CFBundleURLSchemes:["http","https",je]}],l.LSBackgroundOnly=!0,ia.default.writeFileSync(o,l),console.log("Updated Info.plist"),console.log(`Moving application to ${Ai}`);try{_e.default.existsSync(Ai)&&_e.default.rmSync(Ai,{recursive:!0,force:!0})}catch(c){process.env.VERBOSE&&console.warn("[WARN]",c)}_e.default.renameSync(s,Ai);let a=`#!/bin/bash # AppleScript might run as a different user/environment variables. # So we have to inline some environment variables! @@ -20,10 +20,10 @@ export EDITOR=${JSON.stringify(e)} export HOME=${JSON.stringify(process.env.HOME)||""} export USER=${JSON.stringify(process.env.USER)||""} -.${JSON.stringify(await ea.default("git-peek"))} --fromscript $1 $2 $3 $4 & disown +.${JSON.stringify(await ra.default("git-peek"))} --fromscript $1 $2 $3 $4 & disown `;if(console.log(`// --- BEGIN SHIM FILE --- -`+Se.default.gray(a)+` -// --- END SHIM FILE ---`),console.log(`Wrote shim file (${Se.default.gray(t)})`),Gt.default.writeFileSync(t,a,"utf8"),Ir("chmod +x "+t),console.log("Registering URL handler..."),Ir(`duti -s com.apple.ScriptEditor.id.git-peek ${Xe}`),Gt.default.rmSync(n),Gt.default.existsSync("/Applications/Google Chrome.app")){console.log(`Adding ${Xe}:// to Google Chrome`);try{Ir(`defaults write com.google.Chrome URLWhitelist -array '${Xe}://*'`)}catch(c){console.warn("Failed to add protocol to Google Chrome. Its okay.")}}console.log(Se.default.green("\u2705 Registered git-peek:// protocol successfully.")),console.log('To unregister, just delete "/Applications/git-peek.app".'),console.log("To test it, run this:"),console.log(" "+Se.default.blue("open git-peek://Jarred-Sumner/git-peek")),e.includes("vi")&&console.warn("vim/vi not supported (no terminal window will be open), but if you know a way to run a terminal window from the AppleScript please do submit a PR!")}async function Vf(e,t){return` +`+Xe.default.gray(a)+` +// --- END SHIM FILE ---`),console.log(`Wrote shim file (${Xe.default.gray(t)})`),_e.default.writeFileSync(t,a,"utf8"),Ir("chmod +x "+t),console.log("Registering URL handler..."),Ir(`duti -s com.apple.ScriptEditor.id.git-peek ${je}`),_e.default.rmSync(n),_e.default.existsSync("/Applications/Google Chrome.app")){console.log(`Adding ${je}:// to Google Chrome`);try{Ir(`defaults write com.google.Chrome URLWhitelist -array '${je}://*'`)}catch(c){console.warn("Failed to add protocol to Google Chrome. Its okay.")}}console.log(Xe.default.green("\u2705 Registered git-peek:// protocol successfully.")),console.log(`To unregister, just delete "${Ai}".`),console.log("To test it, run this:"),console.log(" "+Xe.default.blue("open git-peek://Jarred-Sumner/git-peek")),e.includes("vi")&&console.warn("vim/vi not supported (no terminal window will be open), but if you know a way to run a terminal window from the AppleScript please do submit a PR!")}async function Vf(e){return` on open location this_URL try @@ -33,10 +33,10 @@ on open location this_URL display dialog errMsg end try end open location -`.trim()}});var Qf=x((kb,Zf)=>{var Kf=class{constructor(t){this.value=t,this.next=void 0}},Jf=class{constructor(){this.clear()}enqueue(t){let r=new Kf(t);this._head?(this._tail.next=r,this._tail=r):(this._head=r,this._tail=r),this._size++}dequeue(){let t=this._head;if(!!t)return this._head=this._head.next,this._size--,t.value}clear(){this._head=void 0,this._tail=void 0,this._size=0}get size(){return this._size}*[Symbol.iterator](){let t=this._head;for(;t;)yield t.value,t=t.next}};Zf.exports=Jf});var ep=x((Bb,tp)=>{"use strict";var D0=Qf(),T0=e=>{if(!((Number.isInteger(e)||e===Infinity)&&e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");let t=new D0,r=0,i=()=>{r--,t.size>0&&t.dequeue()()},n=async(l,a,...c)=>{r++;let u=(async()=>l(...c))();a(u);try{await u}catch{}i()},s=(l,a,...c)=>{t.enqueue(n.bind(null,l,a,...c)),(async()=>{await Promise.resolve(),r0&&t.dequeue()()})()},o=(l,...a)=>new Promise(c=>{s(l,c,...a)});return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>t.size},clearQueue:{value:()=>{t.clear()}}}),o};tp.exports=T0});var np=x((Fb,rp)=>{"use strict";var ip=ep(),na=class extends Error{constructor(t){super();this.value=t}},R0=async(e,t)=>t(await e),A0=async e=>{let t=await Promise.all(e);if(t[1]===!0)throw new na(t[0]);return!1},I0=async(e,t,r)=>{r={concurrency:Infinity,preserveOrder:!0,...r};let i=ip(r.concurrency),n=[...e].map(o=>[o,i(R0,o,t)]),s=ip(r.preserveOrder?1:Infinity);try{await Promise.all(n.map(o=>s(A0,o)))}catch(o){if(o instanceof na)return o.value;throw o}};rp.exports=I0});var up=x((qb,sa)=>{"use strict";var sp=require("path"),kn=require("fs"),{promisify:op}=require("util"),x0=np(),L0=op(kn.stat),M0=op(kn.lstat),ap={directory:"isDirectory",file:"isFile"};function lp({type:e}){if(!(e in ap))throw new Error(`Invalid type specified: ${e}`)}var cp=(e,t)=>e===void 0||t[ap[e]]();sa.exports=async(e,t)=>{t={cwd:process.cwd(),type:"file",allowSymlinks:!0,...t},lp(t);let r=t.allowSymlinks?L0:M0;return x0(e,async i=>{try{let n=await r(sp.resolve(t.cwd,i));return cp(t.type,n)}catch{return!1}},t)};sa.exports.sync=(e,t)=>{t={cwd:process.cwd(),allowSymlinks:!0,type:"file",...t},lp(t);let r=t.allowSymlinks?kn.statSync:kn.lstatSync;for(let i of e)try{let n=r(sp.resolve(t.cwd,i));if(cp(t.type,n))return i}catch{}}});var fp=x((Ub,oa)=>{"use strict";var hp=require("fs"),{promisify:C0}=require("util"),P0=C0(hp.access);oa.exports=async e=>{try{return await P0(e),!0}catch(t){return!1}};oa.exports.sync=e=>{try{return hp.accessSync(e),!0}catch(t){return!1}}});var dp=x((jb,xr)=>{"use strict";var Oe=require("path"),Bn=up(),pp=fp(),aa=Symbol("findUp.stop");xr.exports=async(e,t={})=>{let r=Oe.resolve(t.cwd||""),{root:i}=Oe.parse(r),n=[].concat(e),s=async o=>{if(typeof e!="function")return Bn(n,o);let l=await e(o.cwd);return typeof l=="string"?Bn([l],o):l};for(;;){let o=await s({...t,cwd:r});if(o===aa)return;if(o)return Oe.resolve(r,o);if(r===i)return;r=Oe.dirname(r)}};xr.exports.sync=(e,t={})=>{let r=Oe.resolve(t.cwd||""),{root:i}=Oe.parse(r),n=[].concat(e),s=o=>{if(typeof e!="function")return Bn.sync(n,o);let l=e(o.cwd);return typeof l=="string"?Bn.sync([l],o):l};for(;;){let o=s({...t,cwd:r});if(o===aa)return;if(o)return Oe.resolve(r,o);if(r===i)return;r=Oe.dirname(r)}};xr.exports.exists=pp;xr.exports.sync.exists=pp.sync;xr.exports.stop=aa});var mp=x((Xb,xt)=>{"use strict";var{promisify:Ai}=require("util"),Ne=Pn();xt.exports.fileSync=Ne.fileSync;var k0=Ai((e,t)=>Ne.file(e,(r,i,n,s)=>r?t(r):t(void 0,{path:i,fd:n,cleanup:Ai(s)})));xt.exports.file=async e=>k0(e);xt.exports.withFile=async function(t,r){let{path:i,fd:n,cleanup:s}=await xt.exports.file(r);try{return await t({path:i,fd:n})}finally{await s()}};xt.exports.dirSync=Ne.dirSync;var B0=Ai((e,t)=>Ne.dir(e,(r,i,n)=>r?t(r):t(void 0,{path:i,cleanup:Ai(n)})));xt.exports.dir=async e=>B0(e);xt.exports.withDir=async function(t,r){let{path:i,cleanup:n}=await xt.exports.dir(r);try{return await t({path:i})}finally{await n()}};xt.exports.tmpNameSync=Ne.tmpNameSync;xt.exports.tmpName=Ai(Ne.tmpName);xt.exports.tmpdir=Ne.tmpdir;xt.exports.setGracefulCleanup=Ne.setGracefulCleanup});var vp=x(la=>{var F0=Object.create,Fn=Object.defineProperty,q0=Object.getPrototypeOf,U0=Object.prototype.hasOwnProperty,j0=Object.getOwnPropertyNames,X0=Object.getOwnPropertyDescriptor,yp=e=>Fn(e,"__esModule",{value:!0}),z0=(e,t)=>{for(var r in t)Fn(e,r,{get:t[r],enumerable:!0})},G0=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of j0(t))!U0.call(e,i)&&i!=="default"&&Fn(e,i,{get:()=>t[i],enumerable:!(r=X0(t,i))||r.enumerable});return e},Ii=e=>e&&e.__esModule?e:G0(yp(Fn(e!=null?F0(q0(e)):{},"default",{value:e,enumerable:!0})),e);yp(la);z0(la,{BINARY_VERSION:()=>$0,PACKAGE_NAMES:()=>W0,installBin:()=>H0,register:()=>V0});var gp=Ii(require("child_process")),Y0=Ii(dp()),qn=Ii(require("fs")),xi=Ii(require("path")),Z0=Ii(mp());async function K0(e){return xi.resolve(await Y0.default("node_modules",{type:"directory",cwd:e}),"../")}var $0="1.0.7",W0={win64:"register-url-win64-bin","win64-uac":"register-url-win64-bin-uac"};async function H0(e=!0){let t=e?"register-url-win64-bin-uac":"register-url-win64-bin",r=await K0(xi.resolve(__dirname));return new Promise((i,n)=>{let s=gp.default.spawn("npm",["install",`${t}@1.0.7`,"--legacy-peer-deps","-g","--production","--no-fund","--no-audit","--no-package-lock","--ignore-scripts"],{cwd:r,detached:!1,shell:!0,env:process.env});s.stdout.pipe(process.stdout),s.stdin.pipe(process.stdin),s.once("exit",i),s.once("error",n)})}async function V0(e,t=null){var r,i;let n=t;if(!t){let l=((i=(r=e.origins)==null?void 0:r.length)!=null?i:0)>0?"register-url-win64-bin-uac":"register-url-win64-bin";try{n=require(xi.resolve(__dirname,"node_modules",l))}catch(a){return Promise.reject(`Please install "${l}" into ${xi.resolve(__dirname)} before running this function. For convienience, you can call installBin()`)}}if(await qn.promises.access(n,qn.constants.F_OK),typeof e.register=="undefined"&&(e.register=!0),!e.output){let{path:o}=await Z0.default.file({discardDescriptor:!0,postfix:".json"});e.output=o}let s=xi.resolve(e.output);return delete e.output,await qn.promises.writeFile(s,JSON.stringify(e),"utf-8"),await new Promise(async(o,l)=>{gp.default.spawn(n,[s],{env:process.env,windowsHide:!0,detached:!1,shell:!0,stdio:"inherit"}).once("exit",async()=>{let c;try{if(c=JSON.parse((await qn.promises.readFile(s,"utf-8")).trim()),typeof c!="object")throw"Empty response"}catch(u){c={error:u.message,exception:u,chrome:!1,protocol:!1,edge:!1}}o(c)})}).catch(o=>Promise.resolve({error:o.message,exception:o,chrome:!1,edge:!1,protocol:!1}))}});var Lr=x((Gb,wp)=>{"use strict";var Ep=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);wp.exports=e=>e?Object.keys(e).map(t=>[Ep.has(t)?Ep.get(t):t,e[t]]).reduce((t,r)=>(t[r[0]]=r[1],t),Object.create(null)):{}});var _p=x(($b,bp)=>{"use strict";bp.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Op=x((Wb,Sp)=>{"use strict";Sp.exports=H;H.Node=ze;H.create=H;function H(e){var t=this;if(t instanceof H||(t=new H),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(n){t.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=e(r,i.value,n),i=i.next;return r};H.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=e(r,i.value,n),i=i.prev;return r};H.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};H.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};H.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new H;if(tthis.length&&(t=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(t=this.length);for(var i=this.length,n=this.tail;n!==null&&i>t;i--)n=n.prev;for(;n!==null&&i>e;i--,n=n.prev)r.push(n.value);return r};H.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,n=this.head;n!==null&&i{"use strict";var ew=require("events"),Dp=require("stream"),Li=Op(),Tp=require("string_decoder").StringDecoder,le=Symbol("EOF"),Mi=Symbol("maybeEmitEnd"),De=Symbol("emittedEnd"),Un=Symbol("emittingEnd"),jn=Symbol("closed"),Rp=Symbol("read"),ca=Symbol("flush"),Ap=Symbol("flushChunk"),Dt=Symbol("encoding"),ce=Symbol("decoder"),Xn=Symbol("flowing"),Ci=Symbol("paused"),Pi=Symbol("resume"),gt=Symbol("bufferLength"),Ip=Symbol("bufferPush"),ua=Symbol("bufferShift"),dt=Symbol("objectMode"),mt=Symbol("destroyed"),xp=global._MP_NO_ITERATOR_SYMBOLS_!=="1",rw=xp&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),iw=xp&&Symbol.iterator||Symbol("iterator not implemented"),Lp=e=>e==="end"||e==="finish"||e==="prefinish",nw=e=>e instanceof ArrayBuffer||typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,sw=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e);Np.exports=class Mp extends Dp{constructor(t){super();this[Xn]=!1,this[Ci]=!1,this.pipes=new Li,this.buffer=new Li,this[dt]=t&&t.objectMode||!1,this[dt]?this[Dt]=null:this[Dt]=t&&t.encoding||null,this[Dt]==="buffer"&&(this[Dt]=null),this[ce]=this[Dt]?new Tp(this[Dt]):null,this[le]=!1,this[De]=!1,this[Un]=!1,this[jn]=!1,this.writable=!0,this.readable=!0,this[gt]=0,this[mt]=!1}get bufferLength(){return this[gt]}get encoding(){return this[Dt]}set encoding(t){if(this[dt])throw new Error("cannot set encoding in objectMode");if(this[Dt]&&t!==this[Dt]&&(this[ce]&&this[ce].lastNeed||this[gt]))throw new Error("cannot change encoding");this[Dt]!==t&&(this[ce]=t?new Tp(t):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[ce].write(r)))),this[Dt]=t}setEncoding(t){this.encoding=t}get objectMode(){return this[dt]}set objectMode(t){this[dt]=this[dt]||!!t}write(t,r,i){if(this[le])throw new Error("write after end");return this[mt]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[dt]&&!Buffer.isBuffer(t)&&(sw(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):nw(t)?t=Buffer.from(t):typeof t!="string"&&(this.objectMode=!0)),!this.objectMode&&!t.length?(this[gt]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof t=="string"&&!this[dt]&&!(r===this[Dt]&&!this[ce].lastNeed)&&(t=Buffer.from(t,r)),Buffer.isBuffer(t)&&this[Dt]&&(t=this[ce].write(t)),this.flowing?(this[gt]!==0&&this[ca](!0),this.emit("data",t)):this[Ip](t),this[gt]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(t){if(this[mt])return null;try{return this[gt]===0||t===0||t>this[gt]?null:(this[dt]&&(t=null),this.buffer.length>1&&!this[dt]&&(this.encoding?this.buffer=new Li([Array.from(this.buffer).join("")]):this.buffer=new Li([Buffer.concat(Array.from(this.buffer),this[gt])])),this[Rp](t||null,this.buffer.head.value))}finally{this[Mi]()}}[Rp](t,r){return t===r.length||t===null?this[ua]():(this.buffer.head.value=r.slice(t),r=r.slice(0,t),this[gt]-=t),this.emit("data",r),!this.buffer.length&&!this[le]&&this.emit("drain"),r}end(t,r,i){return typeof t=="function"&&(i=t,t=null),typeof r=="function"&&(i=r,r="utf8"),t&&this.write(t,r),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this.flowing||!this[Ci])&&this[Mi](),this}[Pi](){this[mt]||(this[Ci]=!1,this[Xn]=!0,this.emit("resume"),this.buffer.length?this[ca]():this[le]?this[Mi]():this.emit("drain"))}resume(){return this[Pi]()}pause(){this[Xn]=!1,this[Ci]=!0}get destroyed(){return this[mt]}get flowing(){return this[Xn]}get paused(){return this[Ci]}[Ip](t){return this[dt]?this[gt]+=1:this[gt]+=t.length,this.buffer.push(t)}[ua](){return this.buffer.length&&(this[dt]?this[gt]-=1:this[gt]-=this.buffer.head.value.length),this.buffer.shift()}[ca](t){do;while(this[Ap](this[ua]()));!t&&!this.buffer.length&&!this[le]&&this.emit("drain")}[Ap](t){return t?(this.emit("data",t),this.flowing):!1}pipe(t,r){if(this[mt])return;let i=this[De];r=r||{},t===process.stdout||t===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:t,opts:r,ondrain:s=>this[Pi]()};return this.pipes.push(n),t.on("drain",n.ondrain),this[Pi](),i&&n.opts.end&&n.dest.end(),t}addListener(t,r){return this.on(t,r)}on(t,r){try{return super.on(t,r)}finally{t==="data"&&!this.pipes.length&&!this.flowing?this[Pi]():Lp(t)&&this[De]&&(super.emit(t),this.removeAllListeners(t))}}get emittedEnd(){return this[De]}[Mi](){!this[Un]&&!this[De]&&!this[mt]&&this.buffer.length===0&&this[le]&&(this[Un]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jn]&&this.emit("close"),this[Un]=!1)}emit(t,r){if(t!=="error"&&t!=="close"&&t!==mt&&this[mt])return;if(t==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(t==="end"){if(this[De]===!0)return;this[De]=!0,this.readable=!1,this[ce]&&(r=this[ce].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(t==="close"&&(this[jn]=!0,!this[De]&&!this[mt]))return;let i=new Array(arguments.length);if(i[0]=t,i[1]=r,arguments.length>2)for(let n=2;n{t.push(i),this[dt]||(t.dataLength+=i.length)}),r.then(()=>t)}concat(){return this[dt]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(t=>this[dt]?Promise.reject(new Error("cannot concat in objectMode")):this[Dt]?t.join(""):Buffer.concat(t,t.dataLength))}promise(){return new Promise((t,r)=>{this.on(mt,()=>r(new Error("stream destroyed"))),this.on("end",()=>t()),this.on("error",i=>r(i))})}[rw](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",l),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",l),this.pause(),i({value:c,done:!!this[le]})},l=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},a=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(mt,a),this.once("error",s),this.once("end",l),this.once("data",o)})}}}[iw](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(t){return this[mt]?(t?this.emit("error",t):this.emit(mt),this):(this[mt]=!0,this.buffer=new Li,this[gt]=0,typeof this.close=="function"&&!this[jn]&&this.close(),t?this.emit("error",t):this.emit(mt),this)}static isStream(t){return!!t&&(t instanceof Mp||t instanceof Dp||t instanceof ew&&(typeof t.pipe=="function"||typeof t.write=="function"&&typeof t.end=="function"))}}});var Pp=x((Vb,Cp)=>{var ow=require("zlib").constants||{ZLIB_VERNUM:4736};Cp.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},ow))});var wa=x(Lt=>{"use strict";var ha=require("assert"),Te=require("buffer").Buffer,kp=require("zlib"),Ge=Lt.constants=Pp(),aw=Mr(),Bp=Te.concat,$e=Symbol("_superWrite"),ki=class extends Error{constructor(t){super("zlib: "+t.message);this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},lw=Symbol("opts"),Bi=Symbol("flushFlag"),Fp=Symbol("finishFlushFlag"),fa=Symbol("fullFlushFlag"),et=Symbol("handle"),zn=Symbol("onError"),Cr=Symbol("sawError"),pa=Symbol("level"),da=Symbol("strategy"),ma=Symbol("ended"),Yb=Symbol("_defaultFullFlush"),ya=class extends aw{constructor(t,r){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");super(t);this[Cr]=!1,this[ma]=!1,this[lw]=t,this[Bi]=t.flush,this[Fp]=t.finishFlush;try{this[et]=new kp[r](t)}catch(i){throw new ki(i)}this[zn]=i=>{this[Cr]||(this[Cr]=!0,this.close(),this.emit("error",i))},this[et].on("error",i=>this[zn](new ki(i))),this.once("end",()=>this.close)}close(){this[et]&&(this[et].close(),this[et]=null,this.emit("close"))}reset(){if(!this[Cr])return ha(this[et],"zlib binding closed"),this[et].reset()}flush(t){this.ended||(typeof t!="number"&&(t=this[fa]),this.write(Object.assign(Te.alloc(0),{[Bi]:t})))}end(t,r,i){return t&&this.write(t,r),this.flush(this[Fp]),this[ma]=!0,super.end(null,null,i)}get ended(){return this[ma]}write(t,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof t=="string"&&(t=Te.from(t,r)),this[Cr])return;ha(this[et],"zlib binding closed");let n=this[et]._handle,s=n.close;n.close=()=>{};let o=this[et].close;this[et].close=()=>{},Te.concat=c=>c;let l;try{let c=typeof t[Bi]=="number"?t[Bi]:this[Bi];l=this[et]._processChunk(t,c),Te.concat=Bp}catch(c){Te.concat=Bp,this[zn](new ki(c))}finally{this[et]&&(this[et]._handle=n,n.close=s,this[et].close=o,this[et].removeAllListeners("error"))}this[et]&&this[et].on("error",c=>this[zn](new ki(c)));let a;if(l)if(Array.isArray(l)&&l.length>0){a=this[$e](Te.from(l[0]));for(let c=1;c{this.flush(n),s()};try{this[et].params(t,r)}finally{this[et].flush=i}this[et]&&(this[pa]=t,this[da]=r)}}}},qp=class extends Re{constructor(t){super(t,"Deflate")}},Up=class extends Re{constructor(t){super(t,"Inflate")}},ga=Symbol("_portable"),jp=class extends Re{constructor(t){super(t,"Gzip");this[ga]=t&&!!t.portable}[$e](t){return this[ga]?(this[ga]=!1,t[9]=255,super[$e](t)):super[$e](t)}},Xp=class extends Re{constructor(t){super(t,"Gunzip")}},zp=class extends Re{constructor(t){super(t,"DeflateRaw")}},Gp=class extends Re{constructor(t){super(t,"InflateRaw")}},$p=class extends Re{constructor(t){super(t,"Unzip")}},va=class extends ya{constructor(t,r){t=t||{},t.flush=t.flush||Ge.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||Ge.BROTLI_OPERATION_FINISH,super(t,r),this[fa]=Ge.BROTLI_OPERATION_FLUSH}},Wp=class extends va{constructor(t){super(t,"BrotliCompress")}},Hp=class extends va{constructor(t){super(t,"BrotliDecompress")}};Lt.Deflate=qp;Lt.Inflate=Up;Lt.Gzip=jp;Lt.Gunzip=Xp;Lt.DeflateRaw=zp;Lt.InflateRaw=Gp;Lt.Unzip=$p;typeof kp.BrotliCompress=="function"?(Lt.BrotliCompress=Wp,Lt.BrotliDecompress=Hp):Lt.BrotliCompress=Lt.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var Gn=x((Jb,Vp)=>{"use strict";var cw=Mr(),Ea=Symbol("slurp");Vp.exports=class extends cw{constructor(t,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=t,this.startBlockSize=512*Math.ceil(t.size/512),this.blockRemain=this.startBlockSize,this.remain=t.size,this.type=t.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=t.path,this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=t.size,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath,this.uname=t.uname,this.gname=t.gname,r&&this[Ea](r),i&&this[Ea](i,!0)}write(t){let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(t):super.write(t.slice(0,i))}[Ea](t,r){for(let i in t)t[i]!==null&&t[i]!==void 0&&!(r&&i==="path")&&(this[i]=t[i])}}});var ba=x($n=>{"use strict";$n.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);$n.code=new Map(Array.from($n.name).map(e=>[e[1],e[0]]))});var Jp=x((t_,Yp)=>{"use strict";var fw=(e,t)=>{if(Number.isSafeInteger(e))e<0?hw(e,t):uw(e,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},uw=(e,t)=>{t[0]=128;for(var r=t.length;r>1;r--)t[r-1]=e&255,e=Math.floor(e/256)},hw=(e,t)=>{t[0]=255;var r=!1;e=e*-1;for(var i=t.length;i>1;i--){var n=e&255;e=Math.floor(e/256),r?t[i-1]=Zp(n):n===0?t[i-1]=0:(r=!0,t[i-1]=Kp(n))}},mw=e=>{let t=e[0],r=t===128?dw(e.slice(1,e.length)):t===255?pw(e):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},pw=e=>{for(var t=e.length,r=0,i=!1,n=t-1;n>-1;n--){var s=e[n],o;i?o=Zp(s):s===0?o=s:(i=!0,o=Kp(s)),o!==0&&(r-=o*Math.pow(256,t-n-1))}return r},dw=e=>{for(var t=e.length,r=0,i=t-1;i>-1;i--){var n=e[i];n!==0&&(r+=n*Math.pow(256,t-i-1))}return r},Zp=e=>(255^e)&255,Kp=e=>(255^e)+1&255;Yp.exports={encode:fw,parse:mw}});var kr=x((e_,Qp)=>{"use strict";var _a=ba(),Pr=require("path").posix,td=Jp(),Sa=Symbol("slurp"),Mt=Symbol("type"),ed=class{constructor(t,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Mt]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(t)?this.decode(t,r||0,i,n):t&&this.set(t)}decode(t,r,i,n){if(r||(r=0),!t||!(t.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=We(t,r,100),this.mode=Ae(t,r+100,8),this.uid=Ae(t,r+108,8),this.gid=Ae(t,r+116,8),this.size=Ae(t,r+124,12),this.mtime=Oa(t,r+136,12),this.cksum=Ae(t,r+148,12),this[Sa](i),this[Sa](n,!0),this[Mt]=We(t,r+156,1),this[Mt]===""&&(this[Mt]="0"),this[Mt]==="0"&&this.path.substr(-1)==="/"&&(this[Mt]="5"),this[Mt]==="5"&&(this.size=0),this.linkpath=We(t,r+157,100),t.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=We(t,r+265,32),this.gname=We(t,r+297,32),this.devmaj=Ae(t,r+329,8),this.devmin=Ae(t,r+337,8),t[r+475]!==0){let o=We(t,r+345,155);this.path=o+"/"+this.path}else{let o=We(t,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=Oa(t,r+476,12),this.ctime=Oa(t,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=yw(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=He(t,r,100,s)||this.needPax,this.needPax=Ie(t,r+100,8,this.mode)||this.needPax,this.needPax=Ie(t,r+108,8,this.uid)||this.needPax,this.needPax=Ie(t,r+116,8,this.gid)||this.needPax,this.needPax=Ie(t,r+124,12,this.size)||this.needPax,this.needPax=Na(t,r+136,12,this.mtime)||this.needPax,t[r+156]=this[Mt].charCodeAt(0),this.needPax=He(t,r+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",r+257,8),this.needPax=He(t,r+265,32,this.uname)||this.needPax,this.needPax=He(t,r+297,32,this.gname)||this.needPax,this.needPax=Ie(t,r+329,8,this.devmaj)||this.needPax,this.needPax=Ie(t,r+337,8,this.devmin)||this.needPax,this.needPax=He(t,r+345,i,o)||this.needPax,t[r+475]!==0?this.needPax=He(t,r+345,155,o)||this.needPax:(this.needPax=He(t,r+345,130,o)||this.needPax,this.needPax=Na(t,r+476,12,this.atime)||this.needPax,this.needPax=Na(t,r+488,12,this.ctime)||this.needPax);let l=8*32;for(let a=r;a{let r=100,i=e,n="",s,o=Pr.parse(e).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=t?s=[i.substr(0,r-1),n,!0]:(i=Pr.join(Pr.basename(n),i),n=Pr.dirname(n));while(n!==o&&!s);s||(s=[e.substr(0,r-1),"",!0])}return s},We=(e,t,r)=>e.slice(t,t+r).toString("utf8").replace(/\0.*/,""),Oa=(e,t,r)=>gw(Ae(e,t,r)),gw=e=>e===null?null:new Date(e*1e3),Ae=(e,t,r)=>e[t]&128?td.parse(e.slice(t,t+r)):vw(e,t,r),ww=e=>isNaN(e)?null:e,vw=(e,t,r)=>ww(parseInt(e.slice(t,t+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Ew={12:8589934591,8:2097151},Ie=(e,t,r,i)=>i===null?!1:i>Ew[r]||i<0?(td.encode(i,e.slice(t,t+r)),!0):(bw(e,t,r,i),!1),bw=(e,t,r,i)=>e.write(_w(i,r),t,r,"ascii"),_w=(e,t)=>Sw(Math.floor(e).toString(8),t),Sw=(e,t)=>(e.length===t-1?e:new Array(t-e.length-1).join("0")+e+" ")+"\0",Na=(e,t,r,i)=>i===null?!1:Ie(e,t,r,i.getTime()/1e3),Ow=new Array(156).join("\0"),He=(e,t,r,i)=>i===null?!1:(e.write(i+Ow,t,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);Qp.exports=ed});var Hn=x((r_,rd)=>{"use strict";var Nw=kr(),Dw=require("path"),Wn=class{constructor(t,r){this.atime=t.atime||null,this.charset=t.charset||null,this.comment=t.comment||null,this.ctime=t.ctime||null,this.gid=t.gid||null,this.gname=t.gname||null,this.linkpath=t.linkpath||null,this.mtime=t.mtime||null,this.path=t.path||null,this.size=t.size||null,this.uid=t.uid||null,this.uname=t.uname||null,this.dev=t.dev||null,this.ino=t.ino||null,this.nlink=t.nlink||null,this.global=r||!1}encode(){let t=this.encodeBody();if(t==="")return null;let r=Buffer.byteLength(t),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new Nw({path:("PaxHeader/"+Dw.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(t,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Wn.parse=(e,t,r)=>new Wn(Tw(Rw(e),t),r);var Tw=(e,t)=>t?Object.keys(e).reduce((r,i)=>(r[i]=e[i],r),t):e,Rw=e=>e.replace(/\n$/,"").split(` -`).reduce(Aw,Object.create(null)),Aw=(e,t)=>{let r=parseInt(t,10);if(r!==Buffer.byteLength(t)+1)return e;t=t.substr((r+" ").length);let i=t.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return e;let s=i.join("=");return e[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,e};rd.exports=Wn});var Vn=x((i_,id)=>{"use strict";id.exports=e=>class extends e{warn(t,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||t,i.tarCode=t,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${t}: ${r}`),i))}}});var Ta=x((n_,nd)=>{"use strict";var Yn=["|","<",">","?",":"],Da=Yn.map(e=>String.fromCharCode(61440+e.charCodeAt(0))),Iw=new Map(Yn.map((e,t)=>[e,Da[t]])),xw=new Map(Da.map((e,t)=>[e,Yn[t]]));nd.exports={encode:e=>Yn.reduce((t,r)=>t.split(r).join(Iw.get(r)),e),decode:e=>Da.reduce((t,r)=>t.split(r).join(xw.get(r)),e)}});var od=x((s_,sd)=>{"use strict";sd.exports=(e,t,r)=>(e&=4095,r&&(e=(e|384)&~18),t&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e)});var Ca=x((l_,ad)=>{"use strict";var ld=Mr(),cd=Hn(),ud=kr(),Zt=require("fs"),Br=require("path"),Lw=16*1024*1024,hd=Symbol("process"),fd=Symbol("file"),pd=Symbol("directory"),Ra=Symbol("symlink"),dd=Symbol("hardlink"),Fi=Symbol("header"),Zn=Symbol("read"),Aa=Symbol("lstat"),Kn=Symbol("onlstat"),Ia=Symbol("onread"),xa=Symbol("onreadlink"),La=Symbol("openfile"),Ma=Symbol("onopenfile"),Ve=Symbol("close"),Jn=Symbol("mode"),md=Vn(),Mw=Ta(),yd=od(),Qn=md(class extends ld{constructor(t,r){if(r=r||{},super(r),typeof t!="string")throw new TypeError("path is required");this.path=t,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||Lw,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&Br.win32.isAbsolute(t)){let n=Br.win32.parse(t);this.path=t.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Mw.decode(this.path.replace(/\\/g,"/")),t=t.replace(/\\/g,"/")),this.absolute=r.absolute||Br.resolve(this.cwd,t),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Kn](this.statCache.get(this.absolute)):this[Aa]()}[Aa](){Zt.lstat(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[Kn](r)})}[Kn](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Cw(t),this.emit("stat",t),this[hd]()}[hd](){switch(this.type){case"File":return this[fd]();case"Directory":return this[pd]();case"SymbolicLink":return this[Ra]();default:return this.end()}}[Jn](t){return yd(t,this.type==="Directory",this.portable)}[Fi](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new ud({path:this.path,linkpath:this.linkpath,mode:this[Jn](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new cd({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[pd](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Fi](),this.end()}[Ra](){Zt.readlink(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[xa](r)})}[xa](t){this.linkpath=t.replace(/\\/g,"/"),this[Fi](),this.end()}[dd](t){this.type="Link",this.linkpath=Br.relative(this.cwd,t).replace(/\\/g,"/"),this.stat.size=0,this[Fi](),this.end()}[fd](){if(this.stat.nlink>1){let t=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(t)){let r=this.linkCache.get(t);if(r.indexOf(this.cwd)===0)return this[dd](r)}this.linkCache.set(t,this.absolute)}if(this[Fi](),this.stat.size===0)return this.end();this[La]()}[La](){Zt.open(this.absolute,"r",(t,r)=>{if(t)return this.emit("error",t);this[Ma](r)})}[Ma](t){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Zn](t,n,0,n.length,0,this.stat.size,r)}[Zn](t,r,i,n,s,o,l){Zt.read(t,r,i,n,s,(a,c)=>{if(a)return this[Ve](t,()=>this.emit("error",a));this[Ia](t,r,i,n,s,o,l,c)})}[Ve](t,r){Zt.close(t,r)}[Ia](t,r,i,n,s,o,l,a){if(a<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Ve](t,()=>this.emit("error",u))}if(a>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Ve](t,()=>this.emit("error",u))}if(a===o)for(let u=a;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Zn](t,r,i,n,s,o,l)}}),gd=class extends Qn{[Aa](){this[Kn](Zt.lstatSync(this.absolute))}[Ra](){this[xa](Zt.readlinkSync(this.absolute))}[La](){this[Ma](Zt.openSync(this.absolute,"r"))}[Zn](t,r,i,n,s,o,l){let a=!0;try{let c=Zt.readSync(t,r,i,n,s);this[Ia](t,r,i,n,s,o,l,c),a=!1}finally{if(a)try{this[Ve](t,()=>{})}catch(c){}}}[Ve](t,r){Zt.closeSync(t),r()}},Pw=md(class extends ld{constructor(t,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=t,this.type=t.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=t.path,this.mode=this[Jn](t.mode),this.uid=this.portable?null:t.uid,this.gid=this.portable?null:t.gid,this.uname=this.portable?null:t.uname,this.gname=this.portable?null:t.gname,this.size=t.size,this.mtime=this.noMtime?null:r.mtime||t.mtime,this.atime=this.portable?null:t.atime,this.ctime=this.portable?null:t.ctime,this.linkpath=t.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(Br.isAbsolute(this.path)&&!this.preservePaths){let n=Br.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.header=new ud({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new cd({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),t.pipe(this)}[Jn](t){return yd(t,this.type==="Directory",this.portable)}write(t){let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});Qn.Sync=gd;Qn.Tar=Pw;var Cw=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported";ad.exports=Qn});var wd=x((c_,vd)=>{"use strict";vd.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Pa=x((u_,Ed)=>{"use strict";Ed.exports=V;V.Node=Ye;V.create=V;function V(e){var t=this;if(t instanceof V||(t=new V),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(n){t.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=e(r,i.value,n),i=i.next;return r};V.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=e(r,i.value,n),i=i.prev;return r};V.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};V.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};V.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new V;if(tthis.length&&(t=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(t=this.length);for(var i=this.length,n=this.tail;n!==null&&i>t;i--)n=n.prev;for(;n!==null&&i>e;i--,n=n.prev)r.push(n.value);return r};V.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,n=this.head;n!==null&&i{"use strict";var ka=class{constructor(t,r){this.path=t||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},qw=Mr(),Uw=wa(),jw=Gn(),Ba=Ca(),Xw=Ba.Sync,zw=Ba.Tar,Gw=Pa(),_d=Buffer.alloc(1024),ts=Symbol("onStat"),es=Symbol("ended"),Kt=Symbol("queue"),Fr=Symbol("current"),Ze=Symbol("process"),rs=Symbol("processing"),Sd=Symbol("processJob"),Jt=Symbol("jobs"),Fa=Symbol("jobDone"),is=Symbol("addFSEntry"),Od=Symbol("addTarEntry"),qa=Symbol("stat"),Ua=Symbol("readdir"),ns=Symbol("onreaddir"),ss=Symbol("pipe"),Nd=Symbol("entry"),ja=Symbol("entryOpt"),Xa=Symbol("writeEntryClass"),Dd=Symbol("write"),za=Symbol("ondrain"),os=require("fs"),Td=require("path"),$w=Vn(),Ga=$w(class extends qw{constructor(t){super(t);t=t||Object.create(null),this.opt=t,this.file=t.file||"",this.cwd=t.cwd||process.cwd(),this.maxReadSize=t.maxReadSize,this.preservePaths=!!t.preservePaths,this.strict=!!t.strict,this.noPax=!!t.noPax,this.prefix=(t.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.readdirCache=t.readdirCache||new Map,this[Xa]=Ba,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),this.portable=!!t.portable,this.zip=null,t.gzip?(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new Uw.Gzip(t.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[za]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[za]),this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,this.mtime=t.mtime||null,this.filter=typeof t.filter=="function"?t.filter:r=>!0,this[Kt]=new Gw,this[Jt]=0,this.jobs=+t.jobs||4,this[rs]=!1,this[es]=!1}[Dd](t){return super.write(t)}add(t){return this.write(t),this}end(t){return t&&this.write(t),this[es]=!0,this[Ze](),this}write(t){if(this[es])throw new Error("write after end");return t instanceof jw?this[Od](t):this[is](t),this.flowing}[Od](t){let r=Td.resolve(this.cwd,t.path);if(this.prefix&&(t.path=this.prefix+"/"+t.path.replace(/^\.(\/+|$)/,"")),!this.filter(t.path,t))t.resume();else{let i=new ka(t.path,r,!1);i.entry=new zw(t,this[ja](i)),i.entry.on("end",n=>this[Fa](i)),this[Jt]+=1,this[Kt].push(i)}this[Ze]()}[is](t){let r=Td.resolve(this.cwd,t);this.prefix&&(t=this.prefix+"/"+t.replace(/^\.(\/+|$)/,"")),this[Kt].push(new ka(t,r)),this[Ze]()}[qa](t){t.pending=!0,this[Jt]+=1;let r=this.follow?"stat":"lstat";os[r](t.absolute,(i,n)=>{t.pending=!1,this[Jt]-=1,i?this.emit("error",i):this[ts](t,n)})}[ts](t,r){this.statCache.set(t.absolute,r),t.stat=r,this.filter(t.path,r)||(t.ignore=!0),this[Ze]()}[Ua](t){t.pending=!0,this[Jt]+=1,os.readdir(t.absolute,(r,i)=>{if(t.pending=!1,this[Jt]-=1,r)return this.emit("error",r);this[ns](t,i)})}[ns](t,r){this.readdirCache.set(t.absolute,r),t.readdir=r,this[Ze]()}[Ze](){if(!this[rs]){this[rs]=!0;for(let t=this[Kt].head;t!==null&&this[Jt]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[Nd](t){this[Jt]+=1;try{return new this[Xa](t.path,this[ja](t)).on("end",()=>this[Fa](t)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[za](){this[Fr]&&this[Fr].entry&&this[Fr].entry.resume()}[ss](t){t.piped=!0,t.readdir&&t.readdir.forEach(n=>{let s=this.prefix?t.path.slice(this.prefix.length+1)||"./":t.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[is](o+n)});let r=t.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),Rd=class extends Ga{constructor(t){super(t);this[Xa]=Xw}pause(){}resume(){}[qa](t){let r=this.follow?"statSync":"lstatSync";this[ts](t,os[r](t.absolute))}[Ua](t,r){this[ns](t,os.readdirSync(t.absolute))}[ss](t){let r=t.entry,i=this.zip;t.readdir&&t.readdir.forEach(n=>{let s=this.prefix?t.path.slice(this.prefix.length+1)||"./":t.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[is](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[Dd](n)})}};Ga.Sync=Rd;bd.exports=Ga});var Wr=x(qi=>{"use strict";var Ww=Mr(),Hw=require("events").EventEmitter,Tt=require("fs"),$a=Tt.writev;if(!$a){let e=process.binding("fs"),t=e.FSReqWrap||e.FSReqCallback;$a=(r,i,n,s)=>{let o=(a,c)=>s(a,c,i),l=new t;l.oncomplete=o,e.writeBuffers(r,i,n,l)}}var qr=Symbol("_autoClose"),$t=Symbol("_close"),Ui=Symbol("_ended"),Q=Symbol("_fd"),Ad=Symbol("_finished"),xe=Symbol("_flags"),Wa=Symbol("_flush"),Ha=Symbol("_handleChunk"),Va=Symbol("_makeBuf"),ls=Symbol("_mode"),cs=Symbol("_needDrain"),Ur=Symbol("_onerror"),jr=Symbol("_onopen"),Ya=Symbol("_onread"),Xr=Symbol("_onwrite"),Le=Symbol("_open"),ue=Symbol("_path"),Ke=Symbol("_pos"),Qt=Symbol("_queue"),zr=Symbol("_read"),Id=Symbol("_readSize"),Me=Symbol("_reading"),us=Symbol("_remain"),xd=Symbol("_size"),hs=Symbol("_write"),Gr=Symbol("_writing"),fs=Symbol("_defaultFlag"),$r=Symbol("_errored"),Za=class extends Ww{constructor(t,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[$r]=!1,this[Q]=typeof r.fd=="number"?r.fd:null,this[ue]=t,this[Id]=r.readSize||16*1024*1024,this[Me]=!1,this[xd]=typeof r.size=="number"?r.size:Infinity,this[us]=this[xd],this[qr]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Q]=="number"?this[zr]():this[Le]()}get fd(){return this[Q]}get path(){return this[ue]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Le](){Tt.open(this[ue],"r",(t,r)=>this[jr](t,r))}[jr](t,r){t?this[Ur](t):(this[Q]=r,this.emit("open",r),this[zr]())}[Va](){return Buffer.allocUnsafe(Math.min(this[Id],this[us]))}[zr](){if(!this[Me]){this[Me]=!0;let t=this[Va]();if(t.length===0)return process.nextTick(()=>this[Ya](null,0,t));Tt.read(this[Q],t,0,t.length,null,(r,i,n)=>this[Ya](r,i,n))}}[Ya](t,r,i){this[Me]=!1,t?this[Ur](t):this[Ha](r,i)&&this[zr]()}[$t](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Tt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}[Ur](t){this[Me]=!0,this[$t](),this.emit("error",t)}[Ha](t,r){let i=!1;return this[us]-=t,t>0&&(i=super.write(tthis[jr](t,r))}[jr](t,r){this[fs]&&this[xe]==="r+"&&t&&t.code==="ENOENT"?(this[xe]="w",this[Le]()):t?this[Ur](t):(this[Q]=r,this.emit("open",r),this[Wa]())}end(t,r){return t&&this.write(t,r),this[Ui]=!0,!this[Gr]&&!this[Qt].length&&typeof this[Q]=="number"&&this[Xr](null,0),this}write(t,r){return typeof t=="string"&&(t=Buffer.from(t,r)),this[Ui]?(this.emit("error",new Error("write() after end()")),!1):this[Q]===null||this[Gr]||this[Qt].length?(this[Qt].push(t),this[cs]=!0,!1):(this[Gr]=!0,this[hs](t),!0)}[hs](t){Tt.write(this[Q],t,0,t.length,this[Ke],(r,i)=>this[Xr](r,i))}[Xr](t,r){t?this[Ur](t):(this[Ke]!==null&&(this[Ke]+=r),this[Qt].length?this[Wa]():(this[Gr]=!1,this[Ui]&&!this[Ad]?(this[Ad]=!0,this[$t](),this.emit("finish")):this[cs]&&(this[cs]=!1,this.emit("drain"))))}[Wa](){if(this[Qt].length===0)this[Ui]&&this[Xr](null,0);else if(this[Qt].length===1)this[hs](this[Qt].pop());else{let t=this[Qt];this[Qt]=[],$a(this[Q],t,this[Ke],(r,i)=>this[Xr](r,i))}}[$t](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Tt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}},Md=class extends Ka{[Le](){let t;if(this[fs]&&this[xe]==="r+")try{t=Tt.openSync(this[ue],this[xe],this[ls])}catch(r){if(r.code==="ENOENT")return this[xe]="w",this[Le]();throw r}else t=Tt.openSync(this[ue],this[xe],this[ls]);this[jr](null,t)}[$t](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Tt.closeSync(t),this.emit("close")}}[hs](t){let r=!0;try{this[Xr](null,Tt.writeSync(this[Q],t,0,t.length,this[Ke])),r=!1}finally{if(r)try{this[$t]()}catch(i){}}}};qi.ReadStream=Za;qi.ReadStreamSync=Ld;qi.WriteStream=Ka;qi.WriteStreamSync=Md});var ws=x((m_,Cd)=>{"use strict";var Vw=Vn(),Yw=kr(),Zw=require("events"),Kw=Pa(),Jw=1024*1024,Qw=Gn(),Pd=Hn(),tE=wa(),Ja=Buffer.from([31,139]),Ft=Symbol("state"),Je=Symbol("writeEntry"),he=Symbol("readEntry"),Qa=Symbol("nextEntry"),kd=Symbol("processEntry"),qt=Symbol("extendedHeader"),ji=Symbol("globalExtendedHeader"),Ce=Symbol("meta"),Bd=Symbol("emitMeta"),rt=Symbol("buffer"),fe=Symbol("queue"),Qe=Symbol("ended"),Fd=Symbol("emittedEnd"),tr=Symbol("emit"),Rt=Symbol("unzip"),ps=Symbol("consumeChunk"),ds=Symbol("consumeChunkSub"),tl=Symbol("consumeBody"),qd=Symbol("consumeMeta"),Ud=Symbol("consumeHeader"),ms=Symbol("consuming"),el=Symbol("bufferConcat"),rl=Symbol("maybeEnd"),Xi=Symbol("writing"),Pe=Symbol("aborted"),ys=Symbol("onDone"),er=Symbol("sawValidEntry"),gs=Symbol("sawNullBlock"),vs=Symbol("sawEOF"),eE=e=>!0;Cd.exports=Vw(class extends Zw{constructor(t){t=t||{},super(t),this.file=t.file||"",this[er]=null,this.on(ys,r=>{(this[Ft]==="begin"||this[er]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(ys,t.ondone):this.on(ys,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Jw,this.filter=typeof t.filter=="function"?t.filter:eE,this.writable=!0,this.readable=!1,this[fe]=new Kw,this[rt]=null,this[he]=null,this[Je]=null,this[Ft]="begin",this[Ce]="",this[qt]=null,this[ji]=null,this[Qe]=!1,this[Rt]=null,this[Pe]=!1,this[gs]=!1,this[vs]=!1,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onentry=="function"&&this.on("entry",t.onentry)}[Ud](t,r){this[er]===null&&(this[er]=!1);let i;try{i=new Yw(t,r,this[qt],this[ji])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[gs]?(this[vs]=!0,this[Ft]==="begin"&&(this[Ft]="header"),this[tr]("eof")):(this[gs]=!0,this[tr]("nullBlock"));else if(this[gs]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Je]=new Qw(i,this[qt],this[ji]);if(!this[er])if(s.remain){let o=()=>{s.invalid||(this[er]=!0)};s.on("end",o)}else this[er]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[tr]("ignoredEntry",s),this[Ft]="ignore",s.resume()):s.size>0&&(this[Ce]="",s.on("data",o=>this[Ce]+=o),this[Ft]="meta"):(this[qt]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[tr]("ignoredEntry",s),this[Ft]=s.remain?"ignore":"header",s.resume()):(s.remain?this[Ft]="body":(this[Ft]="header",s.end()),this[he]?this[fe].push(s):(this[fe].push(s),this[Qa]())))}}}[kd](t){let r=!0;return t?Array.isArray(t)?this.emit.apply(this,t):(this[he]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",i=>this[Qa]()),r=!1)):(this[he]=null,r=!1),r}[Qa](){do;while(this[kd](this[fe].shift()));if(!this[fe].length){let t=this[he];!t||t.flowing||t.size===t.remain?this[Xi]||this.emit("drain"):t.once("drain",i=>this.emit("drain"))}}[tl](t,r){let i=this[Je],n=i.blockRemain,s=n>=t.length&&r===0?t:t.slice(r,r+n);return i.write(s),i.blockRemain||(this[Ft]="header",this[Je]=null,i.end()),s.length}[qd](t,r){let i=this[Je],n=this[tl](t,r);return this[Je]||this[Bd](i),n}[tr](t,r,i){!this[fe].length&&!this[he]?this.emit(t,r,i):this[fe].push([t,r,i])}[Bd](t){switch(this[tr]("meta",this[Ce]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[qt]=Pd.parse(this[Ce],this[qt],!1);break;case"GlobalExtendedHeader":this[ji]=Pd.parse(this[Ce],this[ji],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[qt]=this[qt]||Object.create(null),this[qt].path=this[Ce].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[qt]=this[qt]||Object.create(null),this[qt].linkpath=this[Ce].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+t.type)}}abort(t){this[Pe]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t){if(this[Pe])return;if(this[Rt]===null&&t){if(this[rt]&&(t=Buffer.concat([this[rt],t]),this[rt]=null),t.lengththis[ps](s)),this[Rt].on("error",s=>this.abort(s)),this[Rt].on("end",s=>{this[Qe]=!0,this[ps]()}),this[Xi]=!0;let n=this[Rt][i?"end":"write"](t);return this[Xi]=!1,n}}this[Xi]=!0,this[Rt]?this[Rt].write(t):this[ps](t),this[Xi]=!1;let r=this[fe].length?!1:this[he]?this[he].flowing:!0;return!r&&!this[fe].length&&this[he].once("drain",i=>this.emit("drain")),r}[el](t){t&&!this[Pe]&&(this[rt]=this[rt]?Buffer.concat([this[rt],t]):t)}[rl](){if(this[Qe]&&!this[Fd]&&!this[Pe]&&!this[ms]){this[Fd]=!0;let t=this[Je];if(t&&t.blockRemain){let r=this[rt]?this[rt].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${r} available)`,{entry:t}),this[rt]&&t.write(this[rt]),t.end()}this[tr](ys)}}[ps](t){if(this[ms])this[el](t);else if(!t&&!this[rt])this[rl]();else{if(this[ms]=!0,this[rt]){this[el](t);let r=this[rt];this[rt]=null,this[ds](r)}else this[ds](t);for(;this[rt]&&this[rt].length>=512&&!this[Pe]&&!this[vs];){let r=this[rt];this[rt]=null,this[ds](r)}this[ms]=!1}(!this[rt]||this[Qe])&&this[rl]()}[ds](t){let r=0,i=t.length;for(;r+512<=i&&!this[Pe]&&!this[vs];)switch(this[Ft]){case"begin":case"header":this[Ud](t,r),r+=512;break;case"ignore":case"body":r+=this[tl](t,r);break;case"meta":r+=this[qd](t,r);break;default:throw new Error("invalid state: "+this[Ft])}r{"use strict";var rE=Lr(),Xd=ws(),Hr=require("fs"),iE=Wr(),zd=require("path");jd.exports=(e,t,r)=>{typeof e=="function"?(r=e,t=null,e={}):Array.isArray(e)&&(t=e,e={}),typeof t=="function"&&(r=t,t=null),t?t=Array.from(t):t=[];let i=rE(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return t.length&&sE(i,t),i.noResume||nE(i),i.file&&i.sync?oE(i):i.file?aE(i,r):Gd(i)};var nE=e=>{let t=e.onentry;e.onentry=t?r=>{t(r),r.resume()}:r=>r.resume()},sE=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let l=o||zd.parse(s).root||".",a=s===l?!1:r.has(s)?r.get(s):n(zd.dirname(s),l);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},oE=e=>{let t=Gd(e),r=e.file,i=!0,n;try{let s=Hr.statSync(r),o=e.maxReadSize||16*1024*1024;if(s.size{let r=new Xd(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,l)=>{r.on("error",l),r.on("end",o),Hr.stat(n,(a,c)=>{if(a)l(a);else{let u=new iE.ReadStream(n,{readSize:i,size:c.size});u.on("error",l),u.pipe(r)}})});return t?s.then(t,t):s},Gd=e=>new Xd(e)});var Zd=x((g_,$d)=>{"use strict";var lE=Lr(),bs=as(),Wd=Wr(),Hd=Es(),Vd=require("path");$d.exports=(e,t,r)=>{if(typeof t=="function"&&(r=t),Array.isArray(e)&&(t=e,e={}),!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");t=Array.from(t);let i=lE(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?cE(i,t):i.file?uE(i,t,r):i.sync?hE(i,t):fE(i,t)};var cE=(e,t)=>{let r=new bs.Sync(e),i=new Wd.WriteStreamSync(e.file,{mode:e.mode||438});r.pipe(i),Yd(r,t)},uE=(e,t,r)=>{let i=new bs(e),n=new Wd.WriteStream(e.file,{mode:e.mode||438});i.pipe(n);let s=new Promise((o,l)=>{n.on("error",l),n.on("close",o),i.on("error",l)});return il(i,t),r?s.then(r,r):s},Yd=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?Hd({file:Vd.resolve(e.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>e.add(i)}):e.add(r)}),e.end()},il=(e,t)=>{for(;t.length;){let r=t.shift();if(r.charAt(0)==="@")return Hd({file:Vd.resolve(e.cwd,r.substr(1)),noResume:!0,onentry:i=>e.add(i)}).then(i=>il(e,t));e.add(r)}e.end()},hE=(e,t)=>{let r=new bs.Sync(e);return Yd(r,t),r},fE=(e,t)=>{let r=new bs(e);return il(r,t),r}});var nl=x((v_,Kd)=>{"use strict";var pE=Lr(),Jd=as(),Ut=require("fs"),Qd=Wr(),tm=Es(),em=require("path"),rm=kr();Kd.exports=(e,t,r)=>{let i=pE(e);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");return t=Array.from(t),i.sync?dE(i,t):mE(i,t,r)};var dE=(e,t)=>{let r=new Jd.Sync(e),i=!0,n,s;try{try{n=Ut.openSync(e.file,"r+")}catch(a){if(a.code==="ENOENT")n=Ut.openSync(e.file,"w+");else throw a}let o=Ut.fstatSync(n),l=Buffer.alloc(512);t:for(s=0;so.size)break;s+=c,e.mtimeCache&&e.mtimeCache.set(a.path,a.mtime)}i=!1,yE(e,r,s,n,t)}finally{if(i)try{Ut.closeSync(n)}catch(o){}}},yE=(e,t,r,i,n)=>{let s=new Qd.WriteStreamSync(e.file,{fd:i,start:r});t.pipe(s),gE(t,n)},mE=(e,t,r)=>{t=Array.from(t);let i=new Jd(e),n=(o,l,a)=>{let c=(E,m)=>{E?Ut.close(o,w=>a(E)):a(null,m)},u=0;if(l===0)return c(null,0);let f=0,y=Buffer.alloc(512),b=(E,m)=>{if(E)return c(E);if(f+=m,f<512&&m)return Ut.read(o,y,f,y.length-f,u+f,b);if(u===0&&y[0]===31&&y[1]===139)return c(new Error("cannot append to compressed archives"));if(f<512)return c(null,u);let w=new rm(y);if(!w.cksumValid)return c(null,u);let O=512*Math.ceil(w.size/512);if(u+O+512>l||(u+=O+512,u>=l))return c(null,u);e.mtimeCache&&e.mtimeCache.set(w.path,w.mtime),f=0,Ut.read(o,y,0,512,u,b)};Ut.read(o,y,0,512,u,b)},s=new Promise((o,l)=>{i.on("error",l);let a="r+",c=(u,f)=>{if(u&&u.code==="ENOENT"&&a==="r+")return a="w+",Ut.open(e.file,a,c);if(u)return l(u);Ut.fstat(f,(y,b)=>{if(y)return l(y);n(f,b.size,(E,m)=>{if(E)return l(E);let w=new Qd.WriteStream(e.file,{fd:f,start:m});i.pipe(w),w.on("error",l),w.on("close",o),im(i,t)})})};Ut.open(e.file,a,c)});return r?s.then(r,r):s},gE=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?tm({file:em.resolve(e.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>e.add(i)}):e.add(r)}),e.end()},im=(e,t)=>{for(;t.length;){let r=t.shift();if(r.charAt(0)==="@")return tm({file:em.resolve(e.cwd,r.substr(1)),noResume:!0,onentry:i=>e.add(i)}).then(i=>im(e,t));e.add(r)}e.end()}});var sm=x((w_,nm)=>{"use strict";var vE=Lr(),wE=nl();nm.exports=(e,t,r)=>{let i=vE(e);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");return t=Array.from(t),EE(i),wE(i,t,r)};var EE=e=>{let t=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=t?(r,i)=>t(r,i)&&!(e.mtimeCache.get(r)>i.mtime):(r,i)=>!(e.mtimeCache.get(r)>i.mtime)}});var lm=x((E_,om)=>{var{promisify:am}=require("util"),ke=require("fs"),bE=e=>{if(!e)e={mode:511,fs:ke};else if(typeof e=="object")e={mode:511,fs:ke,...e};else if(typeof e=="number")e={mode:e,fs:ke};else if(typeof e=="string")e={mode:parseInt(e,8),fs:ke};else throw new TypeError("invalid options argument");return e.mkdir=e.mkdir||e.fs.mkdir||ke.mkdir,e.mkdirAsync=am(e.mkdir),e.stat=e.stat||e.fs.stat||ke.stat,e.statAsync=am(e.stat),e.statSync=e.statSync||e.fs.statSync||ke.statSync,e.mkdirSync=e.mkdirSync||e.fs.mkdirSync||ke.mkdirSync,e};om.exports=bE});var um=x((b_,cm)=>{var _E=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:SE,parse:OE}=require("path"),NE=e=>{if(/\0/.test(e))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:e,code:"ERR_INVALID_ARG_VALUE"});if(e=SE(e),_E==="win32"){let t=/[*|"<>?:]/,{root:r}=OE(e);if(t.test(e.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:e,code:"EINVAL"})}return e};cm.exports=NE});var mm=x((__,hm)=>{var{dirname:fm}=require("path"),pm=(e,t,r=void 0)=>r===t?Promise.resolve():e.statAsync(t).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?pm(e,fm(t),t):void 0),dm=(e,t,r=void 0)=>{if(r!==t)try{return e.statSync(t).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?dm(e,fm(t),t):void 0}};hm.exports={findMade:pm,findMadeSync:dm}});var al=x((S_,ym)=>{var{dirname:gm}=require("path"),sl=(e,t,r)=>{t.recursive=!1;let i=gm(e);return i===e?t.mkdirAsync(e,t).catch(n=>{if(n.code!=="EISDIR")throw n}):t.mkdirAsync(e,t).then(()=>r||e,n=>{if(n.code==="ENOENT")return sl(i,t).then(s=>sl(e,t,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return t.statAsync(e).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},ol=(e,t,r)=>{let i=gm(e);if(t.recursive=!1,i===e)try{return t.mkdirSync(e,t)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return t.mkdirSync(e,t),r||e}catch(n){if(n.code==="ENOENT")return ol(e,t,ol(i,t,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!t.statSync(e).isDirectory())throw n}catch(s){throw n}}};ym.exports={mkdirpManual:sl,mkdirpManualSync:ol}});var Em=x((O_,vm)=>{var{dirname:wm}=require("path"),{findMade:DE,findMadeSync:TE}=mm(),{mkdirpManual:RE,mkdirpManualSync:AE}=al(),IE=(e,t)=>(t.recursive=!0,wm(e)===e?t.mkdirAsync(e,t):DE(t,e).then(i=>t.mkdirAsync(e,t).then(()=>i).catch(n=>{if(n.code==="ENOENT")return RE(e,t);throw n}))),xE=(e,t)=>{if(t.recursive=!0,wm(e)===e)return t.mkdirSync(e,t);let i=TE(t,e);try{return t.mkdirSync(e,t),i}catch(n){if(n.code==="ENOENT")return AE(e,t);throw n}};vm.exports={mkdirpNative:IE,mkdirpNativeSync:xE}});var Om=x((N_,bm)=>{var _m=require("fs"),LE=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,ll=LE.replace(/^v/,"").split("."),Sm=+ll[0]>10||+ll[0]==10&&+ll[1]>=12,ME=Sm?e=>e.mkdir===_m.mkdir:()=>!1,CE=Sm?e=>e.mkdirSync===_m.mkdirSync:()=>!1;bm.exports={useNative:ME,useNativeSync:CE}});var Im=x((D_,Nm)=>{var Vr=lm(),Yr=um(),{mkdirpNative:Dm,mkdirpNativeSync:Tm}=Em(),{mkdirpManual:Rm,mkdirpManualSync:Am}=al(),{useNative:PE,useNativeSync:kE}=Om(),Zr=(e,t)=>(e=Yr(e),t=Vr(t),PE(t)?Dm(e,t):Rm(e,t)),BE=(e,t)=>(e=Yr(e),t=Vr(t),kE(t)?Tm(e,t):Am(e,t));Zr.sync=BE;Zr.native=(e,t)=>Dm(Yr(e),Vr(t));Zr.manual=(e,t)=>Rm(Yr(e),Vr(t));Zr.nativeSync=(e,t)=>Tm(Yr(e),Vr(t));Zr.manualSync=(e,t)=>Am(Yr(e),Vr(t));Nm.exports=Zr});var Bm=x((T_,xm)=>{"use strict";var jt=require("fs"),rr=require("path"),FE=jt.lchown?"lchown":"chown",qE=jt.lchownSync?"lchownSync":"chownSync",Lm=jt.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),Mm=(e,t,r)=>{try{return jt[qE](e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},UE=(e,t,r)=>{try{return jt.chownSync(e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},jE=Lm?(e,t,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):jt.chown(e,t,r,i)}:(e,t,r,i)=>i,cl=Lm?(e,t,r)=>{try{return Mm(e,t,r)}catch(i){if(i.code!=="EISDIR")throw i;UE(e,t,r)}}:(e,t,r)=>Mm(e,t,r),XE=process.version,Cm=(e,t,r)=>jt.readdir(e,t,r),zE=(e,t)=>jt.readdirSync(e,t);/^v4\./.test(XE)&&(Cm=(e,t,r)=>jt.readdir(e,r));var _s=(e,t,r,i)=>{jt[FE](e,t,r,jE(e,t,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},Pm=(e,t,r,i,n)=>{if(typeof t=="string")return jt.lstat(rr.resolve(e,t),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=t,Pm(e,o,r,i,n)});if(t.isDirectory())ul(rr.resolve(e,t.name),r,i,s=>{if(s)return n(s);let o=rr.resolve(e,t.name);_s(o,r,i,n)});else{let s=rr.resolve(e,t.name);_s(s,r,i,n)}},ul=(e,t,r,i)=>{Cm(e,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return _s(e,t,r,i);let o=s.length,l=null,a=c=>{if(!l){if(c)return i(l=c);if(--o==0)return _s(e,t,r,i)}};s.forEach(c=>Pm(e,c,t,r,a))})},GE=(e,t,r,i)=>{if(typeof t=="string")try{let n=jt.lstatSync(rr.resolve(e,t));n.name=t,t=n}catch(n){if(n.code==="ENOENT")return;throw n}t.isDirectory()&&km(rr.resolve(e,t.name),r,i),cl(rr.resolve(e,t.name),r,i)},km=(e,t,r)=>{let i;try{i=zE(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return cl(e,t,r);throw n}return i&&i.length&&i.forEach(n=>GE(e,n,t,r)),cl(e,t,r)};xm.exports=ul;ul.sync=km});var jm=x((R_,hl)=>{"use strict";var Fm=Im(),Xt=require("fs"),Ss=require("path"),qm=Bm(),fl=class extends Error{constructor(t,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=t}get name(){return"SylinkError"}},zi=class extends Error{constructor(t,r){super(r+": Cannot cd into '"+t+"'");this.path=t,this.code=r}get name(){return"CwdError"}};hl.exports=(e,t,r)=>{let i=t.umask,n=t.mode|448,s=(n&i)!=0,o=t.uid,l=t.gid,a=typeof o=="number"&&typeof l=="number"&&(o!==t.processUid||l!==t.processGid),c=t.preserve,u=t.unlink,f=t.cache,y=t.cwd,b=(w,O)=>{w?r(w):(f.set(e,!0),O&&a?qm(O,o,l,d=>b(d)):s?Xt.chmod(e,n,r):r())};if(f&&f.get(e)===!0)return b();if(e===y)return Xt.stat(e,(w,O)=>{(w||!O.isDirectory())&&(w=new zi(e,w&&w.code||"ENOTDIR")),b(w)});if(c)return Fm(e,{mode:n}).then(w=>b(null,w),b);let m=Ss.relative(y,e).split(/\/|\\/);Os(y,m,n,f,u,y,null,b)};var Os=(e,t,r,i,n,s,o,l)=>{if(!t.length)return l(null,o);let a=t.shift(),c=e+"/"+a;if(i.get(c))return Os(c,t,r,i,n,s,o,l);Xt.mkdir(c,r,Um(c,t,r,i,n,s,o,l))},Um=(e,t,r,i,n,s,o,l)=>a=>{if(a){if(a.path&&Ss.dirname(a.path)===s&&(a.code==="ENOTDIR"||a.code==="ENOENT"))return l(new zi(s,a.code));Xt.lstat(e,(c,u)=>{if(c)l(c);else if(u.isDirectory())Os(e,t,r,i,n,s,o,l);else if(n)Xt.unlink(e,f=>{if(f)return l(f);Xt.mkdir(e,r,Um(e,t,r,i,n,s,o,l))});else{if(u.isSymbolicLink())return l(new fl(e,e+"/"+t.join("/")));l(a)}})}else o=o||e,Os(e,t,r,i,n,s,o,l)};hl.exports.sync=(e,t)=>{let r=t.umask,i=t.mode|448,n=(i&r)!=0,s=t.uid,o=t.gid,l=typeof s=="number"&&typeof o=="number"&&(s!==t.processUid||o!==t.processGid),a=t.preserve,c=t.unlink,u=t.cache,f=t.cwd,y=w=>{u.set(e,!0),w&&l&&qm.sync(w,s,o),n&&Xt.chmodSync(e,i)};if(u&&u.get(e)===!0)return y();if(e===f){let w=!1,O="ENOTDIR";try{w=Xt.statSync(e).isDirectory()}catch(d){O=d.code}finally{if(!w)throw new zi(e,O)}y();return}if(a)return y(Fm.sync(e,i));let E=Ss.relative(f,e).split(/\/|\\/),m=null;for(let w=E.shift(),O=f;w&&(O+="/"+w);w=E.shift())if(!u.get(O))try{Xt.mkdirSync(O,i),m=m||O,u.set(O,!0)}catch(d){if(d.path&&Ss.dirname(d.path)===f&&(d.code==="ENOTDIR"||d.code==="ENOENT"))return new zi(f,d.code);let g=Xt.lstatSync(O);if(g.isDirectory()){u.set(O,!0);continue}else if(c){Xt.unlinkSync(O),Xt.mkdirSync(O,i),m=m||O,u.set(O,!0);continue}else if(g.isSymbolicLink())return new fl(O,O+"/"+E.join("/"))}return y(m)}});var Gm=x((A_,Xm)=>{var zm=require("assert");Xm.exports=()=>{let e=new Map,t=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\/]/).slice(0,-1).reduce((f,y)=>f.length?f.concat(r(f[f.length-1],y)):[y],[]),n=new Set,s=u=>{let f=t.get(u);if(!f)throw new Error("function does not have any path reservations");return{paths:f.paths.map(y=>e.get(y)),dirs:[...f.dirs].map(y=>e.get(y))}},o=u=>{let{paths:f,dirs:y}=s(u);return f.every(b=>b[0]===u)&&y.every(b=>b[0]instanceof Set&&b[0].has(u))},l=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>a(u)),!0),a=u=>{if(!n.has(u))return!1;let{paths:f,dirs:y}=t.get(u),b=new Set;return f.forEach(E=>{let m=e.get(E);zm.equal(m[0],u),m.length===1?e.delete(E):(m.shift(),typeof m[0]=="function"?b.add(m[0]):m[0].forEach(w=>b.add(w)))}),y.forEach(E=>{let m=e.get(E);zm(m[0]instanceof Set),m[0].size===1&&m.length===1?e.delete(E):m[0].size===1?(m.shift(),b.add(m[0])):m[0].delete(u)}),n.delete(u),b.forEach(E=>l(E)),!0};return{check:o,reserve:(u,f)=>{let y=new Set(u.map(b=>i(b)).reduce((b,E)=>b.concat(E)));return t.set(f,{dirs:y,paths:u}),u.forEach(b=>{let E=e.get(b);E?E.push(f):e.set(b,[f])}),y.forEach(b=>{let E=e.get(b);E?E[E.length-1]instanceof Set?E[E.length-1].add(f):E.push(new Set([f])):e.set(b,[new Set([f])])}),l(f)}}}});var Hm=x((I_,$m)=>{var $E=process.env.__FAKE_PLATFORM__||process.platform,WE=$E==="win32",HE=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:VE,O_TRUNC:YE,O_WRONLY:ZE,UV_FS_O_FILEMAP:Wm=0}=HE.constants,KE=WE&&!!Wm,JE=512*1024,QE=Wm|YE|VE|ZE;$m.exports=KE?e=>e"w"});var El=x((x_,Vm)=>{"use strict";var t1=require("assert"),e1=ws(),J=require("fs"),r1=Wr(),pe=require("path"),Ym=jm(),Zm=Ta(),i1=Gm(),Km=Symbol("onEntry"),pl=Symbol("checkFs"),Jm=Symbol("checkFs2"),dl=Symbol("isReusable"),de=Symbol("makeFs"),ml=Symbol("file"),yl=Symbol("directory"),Ns=Symbol("link"),Qm=Symbol("symlink"),ty=Symbol("hardlink"),ey=Symbol("unsupported"),ry=Symbol("checkPath"),Kr=Symbol("mkdir"),vt=Symbol("onError"),Ds=Symbol("pending"),iy=Symbol("pend"),Jr=Symbol("unpend"),gl=Symbol("ended"),vl=Symbol("maybeClose"),wl=Symbol("skip"),Gi=Symbol("doChown"),$i=Symbol("uid"),Wi=Symbol("gid"),ny=require("crypto"),sy=Hm(),Ts=()=>{throw new Error("sync function called cb somehow?!?")},n1=(e,t)=>{if(process.platform!=="win32")return J.unlink(e,t);let r=e+".DELETE."+ny.randomBytes(16).toString("hex");J.rename(e,r,i=>{if(i)return t(i);J.unlink(r,t)})},s1=e=>{if(process.platform!=="win32")return J.unlinkSync(e);let t=e+".DELETE."+ny.randomBytes(16).toString("hex");J.renameSync(e,t),J.unlinkSync(t)},oy=(e,t,r)=>e===e>>>0?e:t===t>>>0?t:r,Rs=class extends e1{constructor(t){if(t||(t={}),t.ondone=r=>{this[gl]=!0,this[vl]()},super(t),this.reservations=i1(),this.transform=typeof t.transform=="function"?t.transform:null,this.writable=!0,this.readable=!1,this[Ds]=0,this[gl]=!1,this.dirCache=t.dirCache||new Map,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;t.preserveOwner===void 0&&typeof t.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||process.platform==="win32",this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=pe.resolve(t.cwd||process.cwd()),this.strip=+t.strip||0,this.processUmask=t.noChmod?0:process.umask(),this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",r=>this[Km](r))}warn(t,r,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,r,i)}[vl](){this[gl]&&this[Ds]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[ry](t){if(this.strip){let r=t.path.split(/\/|\\/);if(r.length=this.strip&&(t.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=t.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:t,path:r}),!1;if(pe.win32.isAbsolute(r)){let i=pe.win32.parse(r);t.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:t,path:r})}}if(this.win32){let r=pe.win32.parse(t.path);t.path=r.root===""?Zm.encode(t.path):r.root+Zm.encode(t.path.substr(r.root.length))}return pe.isAbsolute(t.path)?t.absolute=t.path:t.absolute=pe.resolve(this.cwd,t.path),!0}[Km](t){if(!this[ry](t))return t.resume();switch(t1.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[pl](t);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[ey](t)}}[vt](t,r){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:r}),this[Jr](),r.resume())}[Kr](t,r,i){Ym(t,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},i)}[Gi](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[$i](t){return oy(this.uid,t.uid,this.processUid)}[Wi](t){return oy(this.gid,t.gid,this.processGid)}[ml](t,r){let i=t.mode&4095||this.fmode,n=new r1.WriteStream(t.absolute,{flags:sy(t.size),mode:i,autoClose:!1});n.on("error",a=>this[vt](a,t));let s=1,o=a=>{if(a)return this[vt](a,t);--s==0&&J.close(n.fd,c=>{r(),c?this[vt](c,t):this[Jr]()})};n.on("finish",a=>{let c=t.absolute,u=n.fd;if(t.mtime&&!this.noMtime){s++;let f=t.atime||new Date,y=t.mtime;J.futimes(u,f,y,b=>b?J.utimes(c,f,y,E=>o(E&&b)):o())}if(this[Gi](t)){s++;let f=this[$i](t),y=this[Wi](t);J.fchown(u,f,y,b=>b?J.chown(c,f,y,E=>o(E&&b)):o())}o()});let l=this.transform&&this.transform(t)||t;l!==t&&(l.on("error",a=>this[vt](a,t)),t.pipe(l)),l.pipe(n)}[yl](t,r){let i=t.mode&4095||this.dmode;this[Kr](t.absolute,i,n=>{if(n)return r(),this[vt](n,t);let s=1,o=l=>{--s==0&&(r(),this[Jr](),t.resume())};t.mtime&&!this.noMtime&&(s++,J.utimes(t.absolute,t.atime||new Date,t.mtime,o)),this[Gi](t)&&(s++,J.chown(t.absolute,this[$i](t),this[Wi](t),o)),o()})}[ey](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Qm](t,r){this[Ns](t,t.linkpath,"symlink",r)}[ty](t,r){this[Ns](t,pe.resolve(this.cwd,t.linkpath),"link",r)}[iy](){this[Ds]++}[Jr](){this[Ds]--,this[vl]()}[wl](t){this[Jr](),t.resume()}[dl](t,r){return t.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[pl](t){this[iy]();let r=[t.path];t.linkpath&&r.push(t.linkpath),this.reservations.reserve(r,i=>this[Jm](t,i))}[Jm](t,r){this[Kr](pe.dirname(t.absolute),this.dmode,i=>{if(i)return r(),this[vt](i,t);J.lstat(t.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>t.mtime)?(this[wl](t),r()):n||this[dl](t,s)?this[de](null,t,r):s.isDirectory()?t.type==="Directory"?!this.noChmod&&(!t.mode||(s.mode&4095)===t.mode)?this[de](null,t,r):J.chmod(t.absolute,t.mode,o=>this[de](o,t,r)):J.rmdir(t.absolute,o=>this[de](o,t,r)):n1(t.absolute,o=>this[de](o,t,r))})})}[de](t,r,i){if(t)return this[vt](t,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[ml](r,i);case"Link":return this[ty](r,i);case"SymbolicLink":return this[Qm](r,i);case"Directory":case"GNUDumpDir":return this[yl](r,i)}}[Ns](t,r,i,n){J[i](r,t.absolute,s=>{if(s)return this[vt](s,t);n(),this[Jr](),t.resume()})}},ay=class extends Rs{[pl](t){let r=this[Kr](pe.dirname(t.absolute),this.dmode,Ts);if(r)return this[vt](r,t);try{let i=J.lstatSync(t.absolute);if(this.keep||this.newer&&i.mtime>t.mtime)return this[wl](t);if(this[dl](t,i))return this[de](null,t,Ts);try{return i.isDirectory()?t.type==="Directory"?!this.noChmod&&t.mode&&(i.mode&4095)!==t.mode&&J.chmodSync(t.absolute,t.mode):J.rmdirSync(t.absolute):s1(t.absolute),this[de](null,t,Ts)}catch(n){return this[vt](n,t)}}catch(i){return this[de](null,t,Ts)}}[ml](t,r){let i=t.mode&4095||this.fmode,n=l=>{let a;try{J.closeSync(s)}catch(c){a=c}(l||a)&&this[vt](l||a,t)},s;try{s=J.openSync(t.absolute,sy(t.size),i)}catch(l){return n(l)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",l=>this[vt](l,t)),t.pipe(o)),o.on("data",l=>{try{J.writeSync(s,l,0,l.length)}catch(a){n(a)}}),o.on("end",l=>{let a=null;if(t.mtime&&!this.noMtime){let c=t.atime||new Date,u=t.mtime;try{J.futimesSync(s,c,u)}catch(f){try{J.utimesSync(t.absolute,c,u)}catch(y){a=f}}}if(this[Gi](t)){let c=this[$i](t),u=this[Wi](t);try{J.fchownSync(s,c,u)}catch(f){try{J.chownSync(t.absolute,c,u)}catch(y){a=a||f}}}n(a)})}[yl](t,r){let i=t.mode&4095||this.dmode,n=this[Kr](t.absolute,i);if(n)return this[vt](n,t);if(t.mtime&&!this.noMtime)try{J.utimesSync(t.absolute,t.atime||new Date,t.mtime)}catch(s){}if(this[Gi](t))try{J.chownSync(t.absolute,this[$i](t),this[Wi](t))}catch(s){}t.resume()}[Kr](t,r){try{return Ym.sync(t,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[Ns](t,r,i,n){try{J[i+"Sync"](r,t.absolute),t.resume()}catch(s){return this[vt](s,t)}}};Rs.Sync=ay;Vm.exports=Rs});var fy=x((L_,ly)=>{"use strict";var o1=Lr(),As=El(),cy=require("fs"),uy=Wr(),hy=require("path");ly.exports=(e,t,r)=>{typeof e=="function"?(r=e,t=null,e={}):Array.isArray(e)&&(t=e,e={}),typeof t=="function"&&(r=t,t=null),t?t=Array.from(t):t=[];let i=o1(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return t.length&&a1(i,t),i.file&&i.sync?l1(i):i.file?c1(i,r):i.sync?u1(i):h1(i)};var a1=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let l=o||hy.parse(s).root||".",a=s===l?!1:r.has(s)?r.get(s):n(hy.dirname(s),l);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},l1=e=>{let t=new As.Sync(e),r=e.file,i=cy.statSync(r),n=e.maxReadSize||16*1024*1024;new uy.ReadStreamSync(r,{readSize:n,size:i.size}).pipe(t)},c1=(e,t)=>{let r=new As(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,l)=>{r.on("error",l),r.on("close",o),cy.stat(n,(a,c)=>{if(a)l(a);else{let u=new uy.ReadStream(n,{readSize:i,size:c.size});u.on("error",l),u.pipe(r)}})});return t?s.then(t,t):s},u1=e=>new As.Sync(e),h1=e=>new As(e)});var py=x(at=>{"use strict";at.c=at.create=Zd();at.r=at.replace=nl();at.t=at.list=Es();at.u=at.update=sm();at.x=at.extract=fy();at.Pack=as();at.Unpack=El();at.Parse=ws();at.ReadEntry=Gn();at.WriteEntry=Ca();at.Header=kr();at.Pax=Hn();at.types=ba()});var vy=x(f1=>{Yi(f1);ks(f1,{register:()=>m1});var ir=Et(go()),nr=Et(vp()),dy=Et(Fs()),my=Et(require("http")),yy=Et(Pn()),bl=Et(require("path")),gy=Et(py()),p1=`http://registry.npmjs.org/${nr.PACKAGE_NAMES["win64-uac"]}/-/${nr.PACKAGE_NAMES["win64-uac"]}-${nr.BINARY_VERSION}.tgz`;function d1(){let{name:e}=yy.default.dirSync({postfix:"git-peek",unsafeCleanup:!0});return new Promise((t,r)=>{my.default.get(p1,function(i){i.pipe(gy.default.x({cwd:e,strip:1,onentry(n){},onwarn(n,s){console.warn(n)}}).on("finish",()=>{t(bl.default.resolve(e,"register-url.exe"))}).on("error",n=>{r(n)}))})})}async function m1(e){console.log("Downloading register-url-windows!");let t=await d1();console.log("Downloaded register-url-windows"),console.log(`${ir.default.whiteBright("git-peek uses Administrator privileges to enable 1-click in Chrome & Edge")}. Source code: -${ir.default.gray(" https://github.com/Jarred-Sumner/register-url-windows/blob/main/dotnet/RegisterURLHandler/Program.cs")}`);let r=await nr.register({path:bl.default.resolve(await dy.default("git-peek"),"../","node_modules","@jarred","git-peek","bin","git-peek-win32.exe"),name:"git-peek",origins:["github.com","bitbucket.com","gitlab.com","*.gitlab.com","sourcehut.org"],register:!0,protocol:Xe},t);process.env.VERBOSE&&console.log(r),r.error&&!(r.protocol&&r.edge&&r.chrome)&&console.error(r.error),r.exception&&!(r.protocol&&r.edge&&r.chrome)&&console.error(r.exception),r.protocol&&r.edge&&r.chrome?console.log(`${ir.default.green("Registered git-peek:// successfully")}`):r.protocol?(console.log(ir.default.whiteBright("Registered git-peek://, but 1-click is disabled")),console.log(`${ir.default.cyan("To enable 1-click, re-run `git-peek -r` with Administrator privileges.")}`)):console.log(`${ir.default.red("Register failed")}`),process.exit()}});Yi(exports);ks(exports,{register:()=>Is});var Is;var Xe="git-peek";process.platform==="darwin"?Is=Yf().register:process.platform==="win32"?Is=vy().register:Is=()=>{throw"Unsupported Platform"}; +`.trim()}});var Qf=x((kb,Zf)=>{var Kf=class{constructor(t){this.value=t,this.next=void 0}},Jf=class{constructor(){this.clear()}enqueue(t){let r=new Kf(t);this._head?(this._tail.next=r,this._tail=r):(this._head=r,this._tail=r),this._size++}dequeue(){let t=this._head;if(!!t)return this._head=this._head.next,this._size--,t.value}clear(){this._head=void 0,this._tail=void 0,this._size=0}get size(){return this._size}*[Symbol.iterator](){let t=this._head;for(;t;)yield t.value,t=t.next}};Zf.exports=Jf});var ep=x((Bb,tp)=>{"use strict";var D0=Qf(),T0=e=>{if(!((Number.isInteger(e)||e===Infinity)&&e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");let t=new D0,r=0,i=()=>{r--,t.size>0&&t.dequeue()()},n=async(l,a,...c)=>{r++;let u=(async()=>l(...c))();a(u);try{await u}catch{}i()},s=(l,a,...c)=>{t.enqueue(n.bind(null,l,a,...c)),(async()=>{await Promise.resolve(),r0&&t.dequeue()()})()},o=(l,...a)=>new Promise(c=>{s(l,c,...a)});return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>t.size},clearQueue:{value:()=>{t.clear()}}}),o};tp.exports=T0});var np=x((Fb,rp)=>{"use strict";var ip=ep(),na=class extends Error{constructor(t){super();this.value=t}},R0=async(e,t)=>t(await e),A0=async e=>{let t=await Promise.all(e);if(t[1]===!0)throw new na(t[0]);return!1},I0=async(e,t,r)=>{r={concurrency:Infinity,preserveOrder:!0,...r};let i=ip(r.concurrency),n=[...e].map(o=>[o,i(R0,o,t)]),s=ip(r.preserveOrder?1:Infinity);try{await Promise.all(n.map(o=>s(A0,o)))}catch(o){if(o instanceof na)return o.value;throw o}};rp.exports=I0});var up=x((qb,sa)=>{"use strict";var sp=require("path"),Bn=require("fs"),{promisify:op}=require("util"),x0=np(),L0=op(Bn.stat),M0=op(Bn.lstat),ap={directory:"isDirectory",file:"isFile"};function lp({type:e}){if(!(e in ap))throw new Error(`Invalid type specified: ${e}`)}var cp=(e,t)=>e===void 0||t[ap[e]]();sa.exports=async(e,t)=>{t={cwd:process.cwd(),type:"file",allowSymlinks:!0,...t},lp(t);let r=t.allowSymlinks?L0:M0;return x0(e,async i=>{try{let n=await r(sp.resolve(t.cwd,i));return cp(t.type,n)}catch{return!1}},t)};sa.exports.sync=(e,t)=>{t={cwd:process.cwd(),allowSymlinks:!0,type:"file",...t},lp(t);let r=t.allowSymlinks?Bn.statSync:Bn.lstatSync;for(let i of e)try{let n=r(sp.resolve(t.cwd,i));if(cp(t.type,n))return i}catch{}}});var fp=x((Ub,oa)=>{"use strict";var hp=require("fs"),{promisify:C0}=require("util"),P0=C0(hp.access);oa.exports=async e=>{try{return await P0(e),!0}catch(t){return!1}};oa.exports.sync=e=>{try{return hp.accessSync(e),!0}catch(t){return!1}}});var dp=x((jb,xr)=>{"use strict";var Se=require("path"),Fn=up(),pp=fp(),aa=Symbol("findUp.stop");xr.exports=async(e,t={})=>{let r=Se.resolve(t.cwd||""),{root:i}=Se.parse(r),n=[].concat(e),s=async o=>{if(typeof e!="function")return Fn(n,o);let l=await e(o.cwd);return typeof l=="string"?Fn([l],o):l};for(;;){let o=await s({...t,cwd:r});if(o===aa)return;if(o)return Se.resolve(r,o);if(r===i)return;r=Se.dirname(r)}};xr.exports.sync=(e,t={})=>{let r=Se.resolve(t.cwd||""),{root:i}=Se.parse(r),n=[].concat(e),s=o=>{if(typeof e!="function")return Fn.sync(n,o);let l=e(o.cwd);return typeof l=="string"?Fn.sync([l],o):l};for(;;){let o=s({...t,cwd:r});if(o===aa)return;if(o)return Se.resolve(r,o);if(r===i)return;r=Se.dirname(r)}};xr.exports.exists=pp;xr.exports.sync.exists=pp.sync;xr.exports.stop=aa});var mp=x((Xb,xt)=>{"use strict";var{promisify:Ii}=require("util"),Oe=kn();xt.exports.fileSync=Oe.fileSync;var k0=Ii((e,t)=>Oe.file(e,(r,i,n,s)=>r?t(r):t(void 0,{path:i,fd:n,cleanup:Ii(s)})));xt.exports.file=async e=>k0(e);xt.exports.withFile=async function(t,r){let{path:i,fd:n,cleanup:s}=await xt.exports.file(r);try{return await t({path:i,fd:n})}finally{await s()}};xt.exports.dirSync=Oe.dirSync;var B0=Ii((e,t)=>Oe.dir(e,(r,i,n)=>r?t(r):t(void 0,{path:i,cleanup:Ii(n)})));xt.exports.dir=async e=>B0(e);xt.exports.withDir=async function(t,r){let{path:i,cleanup:n}=await xt.exports.dir(r);try{return await t({path:i})}finally{await n()}};xt.exports.tmpNameSync=Oe.tmpNameSync;xt.exports.tmpName=Ii(Oe.tmpName);xt.exports.tmpdir=Oe.tmpdir;xt.exports.setGracefulCleanup=Oe.setGracefulCleanup});var vp=x(la=>{var F0=Object.create,qn=Object.defineProperty,q0=Object.getPrototypeOf,U0=Object.prototype.hasOwnProperty,j0=Object.getOwnPropertyNames,X0=Object.getOwnPropertyDescriptor,yp=e=>qn(e,"__esModule",{value:!0}),z0=(e,t)=>{for(var r in t)qn(e,r,{get:t[r],enumerable:!0})},G0=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of j0(t))!U0.call(e,i)&&i!=="default"&&qn(e,i,{get:()=>t[i],enumerable:!(r=X0(t,i))||r.enumerable});return e},xi=e=>e&&e.__esModule?e:G0(yp(qn(e!=null?F0(q0(e)):{},"default",{value:e,enumerable:!0})),e);yp(la);z0(la,{BINARY_VERSION:()=>$0,PACKAGE_NAMES:()=>W0,installBin:()=>H0,register:()=>V0});var gp=xi(require("child_process")),Y0=xi(dp()),Un=xi(require("fs")),Li=xi(require("path")),Z0=xi(mp());async function K0(e){return Li.resolve(await Y0.default("node_modules",{type:"directory",cwd:e}),"../")}var $0="1.0.7",W0={win64:"register-url-win64-bin","win64-uac":"register-url-win64-bin-uac"};async function H0(e=!0){let t=e?"register-url-win64-bin-uac":"register-url-win64-bin",r=await K0(Li.resolve(__dirname));return new Promise((i,n)=>{let s=gp.default.spawn("npm",["install",`${t}@1.0.7`,"--legacy-peer-deps","-g","--production","--no-fund","--no-audit","--no-package-lock","--ignore-scripts"],{cwd:r,detached:!1,shell:!0,env:process.env});s.stdout.pipe(process.stdout),s.stdin.pipe(process.stdin),s.once("exit",i),s.once("error",n)})}async function V0(e,t=null){var r,i;let n=t;if(!t){let l=((i=(r=e.origins)==null?void 0:r.length)!=null?i:0)>0?"register-url-win64-bin-uac":"register-url-win64-bin";try{n=require(Li.resolve(__dirname,"node_modules",l))}catch(a){return Promise.reject(`Please install "${l}" into ${Li.resolve(__dirname)} before running this function. For convienience, you can call installBin()`)}}if(await Un.promises.access(n,Un.constants.F_OK),typeof e.register=="undefined"&&(e.register=!0),!e.output){let{path:o}=await Z0.default.file({discardDescriptor:!0,postfix:".json"});e.output=o}let s=Li.resolve(e.output);return delete e.output,await Un.promises.writeFile(s,JSON.stringify(e),"utf-8"),await new Promise(async(o,l)=>{gp.default.spawn(n,[s],{env:process.env,windowsHide:!0,detached:!1,shell:!0,stdio:"inherit"}).once("exit",async()=>{let c;try{if(c=JSON.parse((await Un.promises.readFile(s,"utf-8")).trim()),typeof c!="object")throw"Empty response"}catch(u){c={error:u.message,exception:u,chrome:!1,protocol:!1,edge:!1}}o(c)})}).catch(o=>Promise.resolve({error:o.message,exception:o,chrome:!1,edge:!1,protocol:!1}))}});var Lr=x((Gb,wp)=>{"use strict";var Ep=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);wp.exports=e=>e?Object.keys(e).map(t=>[Ep.has(t)?Ep.get(t):t,e[t]]).reduce((t,r)=>(t[r[0]]=r[1],t),Object.create(null)):{}});var _p=x(($b,bp)=>{"use strict";bp.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Op=x((Wb,Sp)=>{"use strict";Sp.exports=H;H.Node=ze;H.create=H;function H(e){var t=this;if(t instanceof H||(t=new H),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(n){t.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=e(r,i.value,n),i=i.next;return r};H.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=e(r,i.value,n),i=i.prev;return r};H.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};H.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};H.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new H;if(tthis.length&&(t=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(t=this.length);for(var i=this.length,n=this.tail;n!==null&&i>t;i--)n=n.prev;for(;n!==null&&i>e;i--,n=n.prev)r.push(n.value);return r};H.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,n=this.head;n!==null&&i{"use strict";var ew=require("events"),Dp=require("stream"),Mi=Op(),Tp=require("string_decoder").StringDecoder,ae=Symbol("EOF"),Ci=Symbol("maybeEmitEnd"),Ne=Symbol("emittedEnd"),jn=Symbol("emittingEnd"),Xn=Symbol("closed"),Rp=Symbol("read"),ca=Symbol("flush"),Ap=Symbol("flushChunk"),Dt=Symbol("encoding"),le=Symbol("decoder"),zn=Symbol("flowing"),Pi=Symbol("paused"),ki=Symbol("resume"),gt=Symbol("bufferLength"),Ip=Symbol("bufferPush"),ua=Symbol("bufferShift"),dt=Symbol("objectMode"),mt=Symbol("destroyed"),xp=global._MP_NO_ITERATOR_SYMBOLS_!=="1",rw=xp&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),iw=xp&&Symbol.iterator||Symbol("iterator not implemented"),Lp=e=>e==="end"||e==="finish"||e==="prefinish",nw=e=>e instanceof ArrayBuffer||typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,sw=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e);Np.exports=class Mp extends Dp{constructor(t){super();this[zn]=!1,this[Pi]=!1,this.pipes=new Mi,this.buffer=new Mi,this[dt]=t&&t.objectMode||!1,this[dt]?this[Dt]=null:this[Dt]=t&&t.encoding||null,this[Dt]==="buffer"&&(this[Dt]=null),this[le]=this[Dt]?new Tp(this[Dt]):null,this[ae]=!1,this[Ne]=!1,this[jn]=!1,this[Xn]=!1,this.writable=!0,this.readable=!0,this[gt]=0,this[mt]=!1}get bufferLength(){return this[gt]}get encoding(){return this[Dt]}set encoding(t){if(this[dt])throw new Error("cannot set encoding in objectMode");if(this[Dt]&&t!==this[Dt]&&(this[le]&&this[le].lastNeed||this[gt]))throw new Error("cannot change encoding");this[Dt]!==t&&(this[le]=t?new Tp(t):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[le].write(r)))),this[Dt]=t}setEncoding(t){this.encoding=t}get objectMode(){return this[dt]}set objectMode(t){this[dt]=this[dt]||!!t}write(t,r,i){if(this[ae])throw new Error("write after end");return this[mt]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[dt]&&!Buffer.isBuffer(t)&&(sw(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):nw(t)?t=Buffer.from(t):typeof t!="string"&&(this.objectMode=!0)),!this.objectMode&&!t.length?(this[gt]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof t=="string"&&!this[dt]&&!(r===this[Dt]&&!this[le].lastNeed)&&(t=Buffer.from(t,r)),Buffer.isBuffer(t)&&this[Dt]&&(t=this[le].write(t)),this.flowing?(this[gt]!==0&&this[ca](!0),this.emit("data",t)):this[Ip](t),this[gt]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(t){if(this[mt])return null;try{return this[gt]===0||t===0||t>this[gt]?null:(this[dt]&&(t=null),this.buffer.length>1&&!this[dt]&&(this.encoding?this.buffer=new Mi([Array.from(this.buffer).join("")]):this.buffer=new Mi([Buffer.concat(Array.from(this.buffer),this[gt])])),this[Rp](t||null,this.buffer.head.value))}finally{this[Ci]()}}[Rp](t,r){return t===r.length||t===null?this[ua]():(this.buffer.head.value=r.slice(t),r=r.slice(0,t),this[gt]-=t),this.emit("data",r),!this.buffer.length&&!this[ae]&&this.emit("drain"),r}end(t,r,i){return typeof t=="function"&&(i=t,t=null),typeof r=="function"&&(i=r,r="utf8"),t&&this.write(t,r),i&&this.once("end",i),this[ae]=!0,this.writable=!1,(this.flowing||!this[Pi])&&this[Ci](),this}[ki](){this[mt]||(this[Pi]=!1,this[zn]=!0,this.emit("resume"),this.buffer.length?this[ca]():this[ae]?this[Ci]():this.emit("drain"))}resume(){return this[ki]()}pause(){this[zn]=!1,this[Pi]=!0}get destroyed(){return this[mt]}get flowing(){return this[zn]}get paused(){return this[Pi]}[Ip](t){return this[dt]?this[gt]+=1:this[gt]+=t.length,this.buffer.push(t)}[ua](){return this.buffer.length&&(this[dt]?this[gt]-=1:this[gt]-=this.buffer.head.value.length),this.buffer.shift()}[ca](t){do;while(this[Ap](this[ua]()));!t&&!this.buffer.length&&!this[ae]&&this.emit("drain")}[Ap](t){return t?(this.emit("data",t),this.flowing):!1}pipe(t,r){if(this[mt])return;let i=this[Ne];r=r||{},t===process.stdout||t===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:t,opts:r,ondrain:s=>this[ki]()};return this.pipes.push(n),t.on("drain",n.ondrain),this[ki](),i&&n.opts.end&&n.dest.end(),t}addListener(t,r){return this.on(t,r)}on(t,r){try{return super.on(t,r)}finally{t==="data"&&!this.pipes.length&&!this.flowing?this[ki]():Lp(t)&&this[Ne]&&(super.emit(t),this.removeAllListeners(t))}}get emittedEnd(){return this[Ne]}[Ci](){!this[jn]&&!this[Ne]&&!this[mt]&&this.buffer.length===0&&this[ae]&&(this[jn]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Xn]&&this.emit("close"),this[jn]=!1)}emit(t,r){if(t!=="error"&&t!=="close"&&t!==mt&&this[mt])return;if(t==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(t==="end"){if(this[Ne]===!0)return;this[Ne]=!0,this.readable=!1,this[le]&&(r=this[le].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(t==="close"&&(this[Xn]=!0,!this[Ne]&&!this[mt]))return;let i=new Array(arguments.length);if(i[0]=t,i[1]=r,arguments.length>2)for(let n=2;n{t.push(i),this[dt]||(t.dataLength+=i.length)}),r.then(()=>t)}concat(){return this[dt]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(t=>this[dt]?Promise.reject(new Error("cannot concat in objectMode")):this[Dt]?t.join(""):Buffer.concat(t,t.dataLength))}promise(){return new Promise((t,r)=>{this.on(mt,()=>r(new Error("stream destroyed"))),this.on("end",()=>t()),this.on("error",i=>r(i))})}[rw](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[ae])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",l),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",l),this.pause(),i({value:c,done:!!this[ae]})},l=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},a=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(mt,a),this.once("error",s),this.once("end",l),this.once("data",o)})}}}[iw](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(t){return this[mt]?(t?this.emit("error",t):this.emit(mt),this):(this[mt]=!0,this.buffer=new Mi,this[gt]=0,typeof this.close=="function"&&!this[Xn]&&this.close(),t?this.emit("error",t):this.emit(mt),this)}static isStream(t){return!!t&&(t instanceof Mp||t instanceof Dp||t instanceof ew&&(typeof t.pipe=="function"||typeof t.write=="function"&&typeof t.end=="function"))}}});var Pp=x((Vb,Cp)=>{var ow=require("zlib").constants||{ZLIB_VERNUM:4736};Cp.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},ow))});var wa=x(Lt=>{"use strict";var ha=require("assert"),De=require("buffer").Buffer,kp=require("zlib"),Ge=Lt.constants=Pp(),aw=Mr(),Bp=De.concat,$e=Symbol("_superWrite"),Bi=class extends Error{constructor(t){super("zlib: "+t.message);this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},lw=Symbol("opts"),Fi=Symbol("flushFlag"),Fp=Symbol("finishFlushFlag"),fa=Symbol("fullFlushFlag"),et=Symbol("handle"),Gn=Symbol("onError"),Cr=Symbol("sawError"),pa=Symbol("level"),da=Symbol("strategy"),ma=Symbol("ended"),Yb=Symbol("_defaultFullFlush"),ya=class extends aw{constructor(t,r){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");super(t);this[Cr]=!1,this[ma]=!1,this[lw]=t,this[Fi]=t.flush,this[Fp]=t.finishFlush;try{this[et]=new kp[r](t)}catch(i){throw new Bi(i)}this[Gn]=i=>{this[Cr]||(this[Cr]=!0,this.close(),this.emit("error",i))},this[et].on("error",i=>this[Gn](new Bi(i))),this.once("end",()=>this.close)}close(){this[et]&&(this[et].close(),this[et]=null,this.emit("close"))}reset(){if(!this[Cr])return ha(this[et],"zlib binding closed"),this[et].reset()}flush(t){this.ended||(typeof t!="number"&&(t=this[fa]),this.write(Object.assign(De.alloc(0),{[Fi]:t})))}end(t,r,i){return t&&this.write(t,r),this.flush(this[Fp]),this[ma]=!0,super.end(null,null,i)}get ended(){return this[ma]}write(t,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof t=="string"&&(t=De.from(t,r)),this[Cr])return;ha(this[et],"zlib binding closed");let n=this[et]._handle,s=n.close;n.close=()=>{};let o=this[et].close;this[et].close=()=>{},De.concat=c=>c;let l;try{let c=typeof t[Fi]=="number"?t[Fi]:this[Fi];l=this[et]._processChunk(t,c),De.concat=Bp}catch(c){De.concat=Bp,this[Gn](new Bi(c))}finally{this[et]&&(this[et]._handle=n,n.close=s,this[et].close=o,this[et].removeAllListeners("error"))}this[et]&&this[et].on("error",c=>this[Gn](new Bi(c)));let a;if(l)if(Array.isArray(l)&&l.length>0){a=this[$e](De.from(l[0]));for(let c=1;c{this.flush(n),s()};try{this[et].params(t,r)}finally{this[et].flush=i}this[et]&&(this[pa]=t,this[da]=r)}}}},qp=class extends Te{constructor(t){super(t,"Deflate")}},Up=class extends Te{constructor(t){super(t,"Inflate")}},ga=Symbol("_portable"),jp=class extends Te{constructor(t){super(t,"Gzip");this[ga]=t&&!!t.portable}[$e](t){return this[ga]?(this[ga]=!1,t[9]=255,super[$e](t)):super[$e](t)}},Xp=class extends Te{constructor(t){super(t,"Gunzip")}},zp=class extends Te{constructor(t){super(t,"DeflateRaw")}},Gp=class extends Te{constructor(t){super(t,"InflateRaw")}},$p=class extends Te{constructor(t){super(t,"Unzip")}},va=class extends ya{constructor(t,r){t=t||{},t.flush=t.flush||Ge.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||Ge.BROTLI_OPERATION_FINISH,super(t,r),this[fa]=Ge.BROTLI_OPERATION_FLUSH}},Wp=class extends va{constructor(t){super(t,"BrotliCompress")}},Hp=class extends va{constructor(t){super(t,"BrotliDecompress")}};Lt.Deflate=qp;Lt.Inflate=Up;Lt.Gzip=jp;Lt.Gunzip=Xp;Lt.DeflateRaw=zp;Lt.InflateRaw=Gp;Lt.Unzip=$p;typeof kp.BrotliCompress=="function"?(Lt.BrotliCompress=Wp,Lt.BrotliDecompress=Hp):Lt.BrotliCompress=Lt.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var $n=x((Jb,Vp)=>{"use strict";var cw=Mr(),Ea=Symbol("slurp");Vp.exports=class extends cw{constructor(t,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=t,this.startBlockSize=512*Math.ceil(t.size/512),this.blockRemain=this.startBlockSize,this.remain=t.size,this.type=t.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=t.path,this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=t.size,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath,this.uname=t.uname,this.gname=t.gname,r&&this[Ea](r),i&&this[Ea](i,!0)}write(t){let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(t):super.write(t.slice(0,i))}[Ea](t,r){for(let i in t)t[i]!==null&&t[i]!==void 0&&!(r&&i==="path")&&(this[i]=t[i])}}});var ba=x(Wn=>{"use strict";Wn.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Wn.code=new Map(Array.from(Wn.name).map(e=>[e[1],e[0]]))});var Jp=x((t_,Yp)=>{"use strict";var fw=(e,t)=>{if(Number.isSafeInteger(e))e<0?hw(e,t):uw(e,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},uw=(e,t)=>{t[0]=128;for(var r=t.length;r>1;r--)t[r-1]=e&255,e=Math.floor(e/256)},hw=(e,t)=>{t[0]=255;var r=!1;e=e*-1;for(var i=t.length;i>1;i--){var n=e&255;e=Math.floor(e/256),r?t[i-1]=Zp(n):n===0?t[i-1]=0:(r=!0,t[i-1]=Kp(n))}},mw=e=>{let t=e[0],r=t===128?dw(e.slice(1,e.length)):t===255?pw(e):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},pw=e=>{for(var t=e.length,r=0,i=!1,n=t-1;n>-1;n--){var s=e[n],o;i?o=Zp(s):s===0?o=s:(i=!0,o=Kp(s)),o!==0&&(r-=o*Math.pow(256,t-n-1))}return r},dw=e=>{for(var t=e.length,r=0,i=t-1;i>-1;i--){var n=e[i];n!==0&&(r+=n*Math.pow(256,t-i-1))}return r},Zp=e=>(255^e)&255,Kp=e=>(255^e)+1&255;Yp.exports={encode:fw,parse:mw}});var kr=x((e_,Qp)=>{"use strict";var _a=ba(),Pr=require("path").posix,td=Jp(),Sa=Symbol("slurp"),Mt=Symbol("type"),ed=class{constructor(t,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Mt]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(t)?this.decode(t,r||0,i,n):t&&this.set(t)}decode(t,r,i,n){if(r||(r=0),!t||!(t.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=We(t,r,100),this.mode=Re(t,r+100,8),this.uid=Re(t,r+108,8),this.gid=Re(t,r+116,8),this.size=Re(t,r+124,12),this.mtime=Oa(t,r+136,12),this.cksum=Re(t,r+148,12),this[Sa](i),this[Sa](n,!0),this[Mt]=We(t,r+156,1),this[Mt]===""&&(this[Mt]="0"),this[Mt]==="0"&&this.path.substr(-1)==="/"&&(this[Mt]="5"),this[Mt]==="5"&&(this.size=0),this.linkpath=We(t,r+157,100),t.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=We(t,r+265,32),this.gname=We(t,r+297,32),this.devmaj=Re(t,r+329,8),this.devmin=Re(t,r+337,8),t[r+475]!==0){let o=We(t,r+345,155);this.path=o+"/"+this.path}else{let o=We(t,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=Oa(t,r+476,12),this.ctime=Oa(t,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=yw(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=He(t,r,100,s)||this.needPax,this.needPax=Ae(t,r+100,8,this.mode)||this.needPax,this.needPax=Ae(t,r+108,8,this.uid)||this.needPax,this.needPax=Ae(t,r+116,8,this.gid)||this.needPax,this.needPax=Ae(t,r+124,12,this.size)||this.needPax,this.needPax=Na(t,r+136,12,this.mtime)||this.needPax,t[r+156]=this[Mt].charCodeAt(0),this.needPax=He(t,r+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",r+257,8),this.needPax=He(t,r+265,32,this.uname)||this.needPax,this.needPax=He(t,r+297,32,this.gname)||this.needPax,this.needPax=Ae(t,r+329,8,this.devmaj)||this.needPax,this.needPax=Ae(t,r+337,8,this.devmin)||this.needPax,this.needPax=He(t,r+345,i,o)||this.needPax,t[r+475]!==0?this.needPax=He(t,r+345,155,o)||this.needPax:(this.needPax=He(t,r+345,130,o)||this.needPax,this.needPax=Na(t,r+476,12,this.atime)||this.needPax,this.needPax=Na(t,r+488,12,this.ctime)||this.needPax);let l=8*32;for(let a=r;a{let r=100,i=e,n="",s,o=Pr.parse(e).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=t?s=[i.substr(0,r-1),n,!0]:(i=Pr.join(Pr.basename(n),i),n=Pr.dirname(n));while(n!==o&&!s);s||(s=[e.substr(0,r-1),"",!0])}return s},We=(e,t,r)=>e.slice(t,t+r).toString("utf8").replace(/\0.*/,""),Oa=(e,t,r)=>gw(Re(e,t,r)),gw=e=>e===null?null:new Date(e*1e3),Re=(e,t,r)=>e[t]&128?td.parse(e.slice(t,t+r)):vw(e,t,r),ww=e=>isNaN(e)?null:e,vw=(e,t,r)=>ww(parseInt(e.slice(t,t+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Ew={12:8589934591,8:2097151},Ae=(e,t,r,i)=>i===null?!1:i>Ew[r]||i<0?(td.encode(i,e.slice(t,t+r)),!0):(bw(e,t,r,i),!1),bw=(e,t,r,i)=>e.write(_w(i,r),t,r,"ascii"),_w=(e,t)=>Sw(Math.floor(e).toString(8),t),Sw=(e,t)=>(e.length===t-1?e:new Array(t-e.length-1).join("0")+e+" ")+"\0",Na=(e,t,r,i)=>i===null?!1:Ae(e,t,r,i.getTime()/1e3),Ow=new Array(156).join("\0"),He=(e,t,r,i)=>i===null?!1:(e.write(i+Ow,t,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);Qp.exports=ed});var Vn=x((r_,rd)=>{"use strict";var Nw=kr(),Dw=require("path"),Hn=class{constructor(t,r){this.atime=t.atime||null,this.charset=t.charset||null,this.comment=t.comment||null,this.ctime=t.ctime||null,this.gid=t.gid||null,this.gname=t.gname||null,this.linkpath=t.linkpath||null,this.mtime=t.mtime||null,this.path=t.path||null,this.size=t.size||null,this.uid=t.uid||null,this.uname=t.uname||null,this.dev=t.dev||null,this.ino=t.ino||null,this.nlink=t.nlink||null,this.global=r||!1}encode(){let t=this.encodeBody();if(t==="")return null;let r=Buffer.byteLength(t),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new Nw({path:("PaxHeader/"+Dw.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(t,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Hn.parse=(e,t,r)=>new Hn(Tw(Rw(e),t),r);var Tw=(e,t)=>t?Object.keys(e).reduce((r,i)=>(r[i]=e[i],r),t):e,Rw=e=>e.replace(/\n$/,"").split(` +`).reduce(Aw,Object.create(null)),Aw=(e,t)=>{let r=parseInt(t,10);if(r!==Buffer.byteLength(t)+1)return e;t=t.substr((r+" ").length);let i=t.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return e;let s=i.join("=");return e[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,e};rd.exports=Hn});var Yn=x((i_,id)=>{"use strict";id.exports=e=>class extends e{warn(t,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||t,i.tarCode=t,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${t}: ${r}`),i))}}});var Ta=x((n_,nd)=>{"use strict";var Zn=["|","<",">","?",":"],Da=Zn.map(e=>String.fromCharCode(61440+e.charCodeAt(0))),Iw=new Map(Zn.map((e,t)=>[e,Da[t]])),xw=new Map(Da.map((e,t)=>[e,Zn[t]]));nd.exports={encode:e=>Zn.reduce((t,r)=>t.split(r).join(Iw.get(r)),e),decode:e=>Da.reduce((t,r)=>t.split(r).join(xw.get(r)),e)}});var od=x((s_,sd)=>{"use strict";sd.exports=(e,t,r)=>(e&=4095,r&&(e=(e|384)&~18),t&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e)});var Ca=x((l_,ad)=>{"use strict";var ld=Mr(),cd=Vn(),ud=kr(),Yt=require("fs"),Br=require("path"),Lw=16*1024*1024,hd=Symbol("process"),fd=Symbol("file"),pd=Symbol("directory"),Ra=Symbol("symlink"),dd=Symbol("hardlink"),qi=Symbol("header"),Kn=Symbol("read"),Aa=Symbol("lstat"),Jn=Symbol("onlstat"),Ia=Symbol("onread"),xa=Symbol("onreadlink"),La=Symbol("openfile"),Ma=Symbol("onopenfile"),Ve=Symbol("close"),Qn=Symbol("mode"),md=Yn(),Mw=Ta(),yd=od(),ts=md(class extends ld{constructor(t,r){if(r=r||{},super(r),typeof t!="string")throw new TypeError("path is required");this.path=t,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||Lw,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&Br.win32.isAbsolute(t)){let n=Br.win32.parse(t);this.path=t.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Mw.decode(this.path.replace(/\\/g,"/")),t=t.replace(/\\/g,"/")),this.absolute=r.absolute||Br.resolve(this.cwd,t),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Jn](this.statCache.get(this.absolute)):this[Aa]()}[Aa](){Yt.lstat(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[Jn](r)})}[Jn](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Cw(t),this.emit("stat",t),this[hd]()}[hd](){switch(this.type){case"File":return this[fd]();case"Directory":return this[pd]();case"SymbolicLink":return this[Ra]();default:return this.end()}}[Qn](t){return yd(t,this.type==="Directory",this.portable)}[qi](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new ud({path:this.path,linkpath:this.linkpath,mode:this[Qn](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new cd({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[pd](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[qi](),this.end()}[Ra](){Yt.readlink(this.absolute,(t,r)=>{if(t)return this.emit("error",t);this[xa](r)})}[xa](t){this.linkpath=t.replace(/\\/g,"/"),this[qi](),this.end()}[dd](t){this.type="Link",this.linkpath=Br.relative(this.cwd,t).replace(/\\/g,"/"),this.stat.size=0,this[qi](),this.end()}[fd](){if(this.stat.nlink>1){let t=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(t)){let r=this.linkCache.get(t);if(r.indexOf(this.cwd)===0)return this[dd](r)}this.linkCache.set(t,this.absolute)}if(this[qi](),this.stat.size===0)return this.end();this[La]()}[La](){Yt.open(this.absolute,"r",(t,r)=>{if(t)return this.emit("error",t);this[Ma](r)})}[Ma](t){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Kn](t,n,0,n.length,0,this.stat.size,r)}[Kn](t,r,i,n,s,o,l){Yt.read(t,r,i,n,s,(a,c)=>{if(a)return this[Ve](t,()=>this.emit("error",a));this[Ia](t,r,i,n,s,o,l,c)})}[Ve](t,r){Yt.close(t,r)}[Ia](t,r,i,n,s,o,l,a){if(a<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Ve](t,()=>this.emit("error",u))}if(a>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Ve](t,()=>this.emit("error",u))}if(a===o)for(let u=a;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Kn](t,r,i,n,s,o,l)}}),gd=class extends ts{[Aa](){this[Jn](Yt.lstatSync(this.absolute))}[Ra](){this[xa](Yt.readlinkSync(this.absolute))}[La](){this[Ma](Yt.openSync(this.absolute,"r"))}[Kn](t,r,i,n,s,o,l){let a=!0;try{let c=Yt.readSync(t,r,i,n,s);this[Ia](t,r,i,n,s,o,l,c),a=!1}finally{if(a)try{this[Ve](t,()=>{})}catch(c){}}}[Ve](t,r){Yt.closeSync(t),r()}},Pw=md(class extends ld{constructor(t,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=t,this.type=t.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=t.path,this.mode=this[Qn](t.mode),this.uid=this.portable?null:t.uid,this.gid=this.portable?null:t.gid,this.uname=this.portable?null:t.uname,this.gname=this.portable?null:t.gname,this.size=t.size,this.mtime=this.noMtime?null:r.mtime||t.mtime,this.atime=this.portable?null:t.atime,this.ctime=this.portable?null:t.ctime,this.linkpath=t.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(Br.isAbsolute(this.path)&&!this.preservePaths){let n=Br.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.header=new ud({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new cd({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),t.pipe(this)}[Qn](t){return yd(t,this.type==="Directory",this.portable)}write(t){let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});ts.Sync=gd;ts.Tar=Pw;var Cw=e=>e.isFile()?"File":e.isDirectory()?"Directory":e.isSymbolicLink()?"SymbolicLink":"Unsupported";ad.exports=ts});var wd=x((c_,vd)=>{"use strict";vd.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var Pa=x((u_,Ed)=>{"use strict";Ed.exports=V;V.Node=Ye;V.create=V;function V(e){var t=this;if(t instanceof V||(t=new V),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach=="function")e.forEach(function(n){t.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=t;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=e(r,i.value,n),i=i.next;return r};V.prototype.reduceReverse=function(e,t){var r,i=this.tail;if(arguments.length>1)r=t;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=e(r,i.value,n),i=i.prev;return r};V.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};V.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};V.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new V;if(tthis.length&&(t=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(t=this.length);for(var i=this.length,n=this.tail;n!==null&&i>t;i--)n=n.prev;for(;n!==null&&i>e;i--,n=n.prev)r.push(n.value);return r};V.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,n=this.head;n!==null&&i{"use strict";var ka=class{constructor(t,r){this.path=t||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},qw=Mr(),Uw=wa(),jw=$n(),Ba=Ca(),Xw=Ba.Sync,zw=Ba.Tar,Gw=Pa(),_d=Buffer.alloc(1024),es=Symbol("onStat"),rs=Symbol("ended"),Zt=Symbol("queue"),Fr=Symbol("current"),Ze=Symbol("process"),is=Symbol("processing"),Sd=Symbol("processJob"),Kt=Symbol("jobs"),Fa=Symbol("jobDone"),ns=Symbol("addFSEntry"),Od=Symbol("addTarEntry"),qa=Symbol("stat"),Ua=Symbol("readdir"),ss=Symbol("onreaddir"),os=Symbol("pipe"),Nd=Symbol("entry"),ja=Symbol("entryOpt"),Xa=Symbol("writeEntryClass"),Dd=Symbol("write"),za=Symbol("ondrain"),as=require("fs"),Td=require("path"),$w=Yn(),Ga=$w(class extends qw{constructor(t){super(t);t=t||Object.create(null),this.opt=t,this.file=t.file||"",this.cwd=t.cwd||process.cwd(),this.maxReadSize=t.maxReadSize,this.preservePaths=!!t.preservePaths,this.strict=!!t.strict,this.noPax=!!t.noPax,this.prefix=(t.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.readdirCache=t.readdirCache||new Map,this[Xa]=Ba,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),this.portable=!!t.portable,this.zip=null,t.gzip?(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new Uw.Gzip(t.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[za]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[za]),this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,this.mtime=t.mtime||null,this.filter=typeof t.filter=="function"?t.filter:r=>!0,this[Zt]=new Gw,this[Kt]=0,this.jobs=+t.jobs||4,this[is]=!1,this[rs]=!1}[Dd](t){return super.write(t)}add(t){return this.write(t),this}end(t){return t&&this.write(t),this[rs]=!0,this[Ze](),this}write(t){if(this[rs])throw new Error("write after end");return t instanceof jw?this[Od](t):this[ns](t),this.flowing}[Od](t){let r=Td.resolve(this.cwd,t.path);if(this.prefix&&(t.path=this.prefix+"/"+t.path.replace(/^\.(\/+|$)/,"")),!this.filter(t.path,t))t.resume();else{let i=new ka(t.path,r,!1);i.entry=new zw(t,this[ja](i)),i.entry.on("end",n=>this[Fa](i)),this[Kt]+=1,this[Zt].push(i)}this[Ze]()}[ns](t){let r=Td.resolve(this.cwd,t);this.prefix&&(t=this.prefix+"/"+t.replace(/^\.(\/+|$)/,"")),this[Zt].push(new ka(t,r)),this[Ze]()}[qa](t){t.pending=!0,this[Kt]+=1;let r=this.follow?"stat":"lstat";as[r](t.absolute,(i,n)=>{t.pending=!1,this[Kt]-=1,i?this.emit("error",i):this[es](t,n)})}[es](t,r){this.statCache.set(t.absolute,r),t.stat=r,this.filter(t.path,r)||(t.ignore=!0),this[Ze]()}[Ua](t){t.pending=!0,this[Kt]+=1,as.readdir(t.absolute,(r,i)=>{if(t.pending=!1,this[Kt]-=1,r)return this.emit("error",r);this[ss](t,i)})}[ss](t,r){this.readdirCache.set(t.absolute,r),t.readdir=r,this[Ze]()}[Ze](){if(!this[is]){this[is]=!0;for(let t=this[Zt].head;t!==null&&this[Kt]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[Nd](t){this[Kt]+=1;try{return new this[Xa](t.path,this[ja](t)).on("end",()=>this[Fa](t)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[za](){this[Fr]&&this[Fr].entry&&this[Fr].entry.resume()}[os](t){t.piped=!0,t.readdir&&t.readdir.forEach(n=>{let s=this.prefix?t.path.slice(this.prefix.length+1)||"./":t.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[ns](o+n)});let r=t.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),Rd=class extends Ga{constructor(t){super(t);this[Xa]=Xw}pause(){}resume(){}[qa](t){let r=this.follow?"statSync":"lstatSync";this[es](t,as[r](t.absolute))}[Ua](t,r){this[ss](t,as.readdirSync(t.absolute))}[os](t){let r=t.entry,i=this.zip;t.readdir&&t.readdir.forEach(n=>{let s=this.prefix?t.path.slice(this.prefix.length+1)||"./":t.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[ns](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[Dd](n)})}};Ga.Sync=Rd;bd.exports=Ga});var Wr=x(Ui=>{"use strict";var Ww=Mr(),Hw=require("events").EventEmitter,Tt=require("fs"),$a=Tt.writev;if(!$a){let e=process.binding("fs"),t=e.FSReqWrap||e.FSReqCallback;$a=(r,i,n,s)=>{let o=(a,c)=>s(a,c,i),l=new t;l.oncomplete=o,e.writeBuffers(r,i,n,l)}}var qr=Symbol("_autoClose"),Gt=Symbol("_close"),ji=Symbol("_ended"),Q=Symbol("_fd"),Ad=Symbol("_finished"),Ie=Symbol("_flags"),Wa=Symbol("_flush"),Ha=Symbol("_handleChunk"),Va=Symbol("_makeBuf"),cs=Symbol("_mode"),us=Symbol("_needDrain"),Ur=Symbol("_onerror"),jr=Symbol("_onopen"),Ya=Symbol("_onread"),Xr=Symbol("_onwrite"),xe=Symbol("_open"),ce=Symbol("_path"),Ke=Symbol("_pos"),Jt=Symbol("_queue"),zr=Symbol("_read"),Id=Symbol("_readSize"),Le=Symbol("_reading"),hs=Symbol("_remain"),xd=Symbol("_size"),fs=Symbol("_write"),Gr=Symbol("_writing"),ps=Symbol("_defaultFlag"),$r=Symbol("_errored"),Za=class extends Ww{constructor(t,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[$r]=!1,this[Q]=typeof r.fd=="number"?r.fd:null,this[ce]=t,this[Id]=r.readSize||16*1024*1024,this[Le]=!1,this[xd]=typeof r.size=="number"?r.size:Infinity,this[hs]=this[xd],this[qr]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Q]=="number"?this[zr]():this[xe]()}get fd(){return this[Q]}get path(){return this[ce]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[xe](){Tt.open(this[ce],"r",(t,r)=>this[jr](t,r))}[jr](t,r){t?this[Ur](t):(this[Q]=r,this.emit("open",r),this[zr]())}[Va](){return Buffer.allocUnsafe(Math.min(this[Id],this[hs]))}[zr](){if(!this[Le]){this[Le]=!0;let t=this[Va]();if(t.length===0)return process.nextTick(()=>this[Ya](null,0,t));Tt.read(this[Q],t,0,t.length,null,(r,i,n)=>this[Ya](r,i,n))}}[Ya](t,r,i){this[Le]=!1,t?this[Ur](t):this[Ha](r,i)&&this[zr]()}[Gt](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Tt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}[Ur](t){this[Le]=!0,this[Gt](),this.emit("error",t)}[Ha](t,r){let i=!1;return this[hs]-=t,t>0&&(i=super.write(tthis[jr](t,r))}[jr](t,r){this[ps]&&this[Ie]==="r+"&&t&&t.code==="ENOENT"?(this[Ie]="w",this[xe]()):t?this[Ur](t):(this[Q]=r,this.emit("open",r),this[Wa]())}end(t,r){return t&&this.write(t,r),this[ji]=!0,!this[Gr]&&!this[Jt].length&&typeof this[Q]=="number"&&this[Xr](null,0),this}write(t,r){return typeof t=="string"&&(t=Buffer.from(t,r)),this[ji]?(this.emit("error",new Error("write() after end()")),!1):this[Q]===null||this[Gr]||this[Jt].length?(this[Jt].push(t),this[us]=!0,!1):(this[Gr]=!0,this[fs](t),!0)}[fs](t){Tt.write(this[Q],t,0,t.length,this[Ke],(r,i)=>this[Xr](r,i))}[Xr](t,r){t?this[Ur](t):(this[Ke]!==null&&(this[Ke]+=r),this[Jt].length?this[Wa]():(this[Gr]=!1,this[ji]&&!this[Ad]?(this[Ad]=!0,this[Gt](),this.emit("finish")):this[us]&&(this[us]=!1,this.emit("drain"))))}[Wa](){if(this[Jt].length===0)this[ji]&&this[Xr](null,0);else if(this[Jt].length===1)this[fs](this[Jt].pop());else{let t=this[Jt];this[Jt]=[],$a(this[Q],t,this[Ke],(r,i)=>this[Xr](r,i))}}[Gt](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Tt.close(t,r=>r?this.emit("error",r):this.emit("close"))}}},Md=class extends Ka{[xe](){let t;if(this[ps]&&this[Ie]==="r+")try{t=Tt.openSync(this[ce],this[Ie],this[cs])}catch(r){if(r.code==="ENOENT")return this[Ie]="w",this[xe]();throw r}else t=Tt.openSync(this[ce],this[Ie],this[cs]);this[jr](null,t)}[Gt](){if(this[qr]&&typeof this[Q]=="number"){let t=this[Q];this[Q]=null,Tt.closeSync(t),this.emit("close")}}[fs](t){let r=!0;try{this[Xr](null,Tt.writeSync(this[Q],t,0,t.length,this[Ke])),r=!1}finally{if(r)try{this[Gt]()}catch(i){}}}};Ui.ReadStream=Za;Ui.ReadStreamSync=Ld;Ui.WriteStream=Ka;Ui.WriteStreamSync=Md});var Es=x((m_,Cd)=>{"use strict";var Vw=Yn(),Yw=kr(),Zw=require("events"),Kw=Pa(),Jw=1024*1024,Qw=$n(),Pd=Vn(),tE=wa(),Ja=Buffer.from([31,139]),Ft=Symbol("state"),Je=Symbol("writeEntry"),ue=Symbol("readEntry"),Qa=Symbol("nextEntry"),kd=Symbol("processEntry"),qt=Symbol("extendedHeader"),Xi=Symbol("globalExtendedHeader"),Me=Symbol("meta"),Bd=Symbol("emitMeta"),rt=Symbol("buffer"),he=Symbol("queue"),Qe=Symbol("ended"),Fd=Symbol("emittedEnd"),tr=Symbol("emit"),Rt=Symbol("unzip"),ds=Symbol("consumeChunk"),ms=Symbol("consumeChunkSub"),tl=Symbol("consumeBody"),qd=Symbol("consumeMeta"),Ud=Symbol("consumeHeader"),ys=Symbol("consuming"),el=Symbol("bufferConcat"),rl=Symbol("maybeEnd"),zi=Symbol("writing"),Ce=Symbol("aborted"),gs=Symbol("onDone"),er=Symbol("sawValidEntry"),vs=Symbol("sawNullBlock"),ws=Symbol("sawEOF"),eE=e=>!0;Cd.exports=Vw(class extends Zw{constructor(t){t=t||{},super(t),this.file=t.file||"",this[er]=null,this.on(gs,r=>{(this[Ft]==="begin"||this[er]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(gs,t.ondone):this.on(gs,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Jw,this.filter=typeof t.filter=="function"?t.filter:eE,this.writable=!0,this.readable=!1,this[he]=new Kw,this[rt]=null,this[ue]=null,this[Je]=null,this[Ft]="begin",this[Me]="",this[qt]=null,this[Xi]=null,this[Qe]=!1,this[Rt]=null,this[Ce]=!1,this[vs]=!1,this[ws]=!1,typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onentry=="function"&&this.on("entry",t.onentry)}[Ud](t,r){this[er]===null&&(this[er]=!1);let i;try{i=new Yw(t,r,this[qt],this[Xi])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[vs]?(this[ws]=!0,this[Ft]==="begin"&&(this[Ft]="header"),this[tr]("eof")):(this[vs]=!0,this[tr]("nullBlock"));else if(this[vs]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Je]=new Qw(i,this[qt],this[Xi]);if(!this[er])if(s.remain){let o=()=>{s.invalid||(this[er]=!0)};s.on("end",o)}else this[er]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[tr]("ignoredEntry",s),this[Ft]="ignore",s.resume()):s.size>0&&(this[Me]="",s.on("data",o=>this[Me]+=o),this[Ft]="meta"):(this[qt]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[tr]("ignoredEntry",s),this[Ft]=s.remain?"ignore":"header",s.resume()):(s.remain?this[Ft]="body":(this[Ft]="header",s.end()),this[ue]?this[he].push(s):(this[he].push(s),this[Qa]())))}}}[kd](t){let r=!0;return t?Array.isArray(t)?this.emit.apply(this,t):(this[ue]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",i=>this[Qa]()),r=!1)):(this[ue]=null,r=!1),r}[Qa](){do;while(this[kd](this[he].shift()));if(!this[he].length){let t=this[ue];!t||t.flowing||t.size===t.remain?this[zi]||this.emit("drain"):t.once("drain",i=>this.emit("drain"))}}[tl](t,r){let i=this[Je],n=i.blockRemain,s=n>=t.length&&r===0?t:t.slice(r,r+n);return i.write(s),i.blockRemain||(this[Ft]="header",this[Je]=null,i.end()),s.length}[qd](t,r){let i=this[Je],n=this[tl](t,r);return this[Je]||this[Bd](i),n}[tr](t,r,i){!this[he].length&&!this[ue]?this.emit(t,r,i):this[he].push([t,r,i])}[Bd](t){switch(this[tr]("meta",this[Me]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[qt]=Pd.parse(this[Me],this[qt],!1);break;case"GlobalExtendedHeader":this[Xi]=Pd.parse(this[Me],this[Xi],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[qt]=this[qt]||Object.create(null),this[qt].path=this[Me].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[qt]=this[qt]||Object.create(null),this[qt].linkpath=this[Me].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+t.type)}}abort(t){this[Ce]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t){if(this[Ce])return;if(this[Rt]===null&&t){if(this[rt]&&(t=Buffer.concat([this[rt],t]),this[rt]=null),t.lengththis[ds](s)),this[Rt].on("error",s=>this.abort(s)),this[Rt].on("end",s=>{this[Qe]=!0,this[ds]()}),this[zi]=!0;let n=this[Rt][i?"end":"write"](t);return this[zi]=!1,n}}this[zi]=!0,this[Rt]?this[Rt].write(t):this[ds](t),this[zi]=!1;let r=this[he].length?!1:this[ue]?this[ue].flowing:!0;return!r&&!this[he].length&&this[ue].once("drain",i=>this.emit("drain")),r}[el](t){t&&!this[Ce]&&(this[rt]=this[rt]?Buffer.concat([this[rt],t]):t)}[rl](){if(this[Qe]&&!this[Fd]&&!this[Ce]&&!this[ys]){this[Fd]=!0;let t=this[Je];if(t&&t.blockRemain){let r=this[rt]?this[rt].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${r} available)`,{entry:t}),this[rt]&&t.write(this[rt]),t.end()}this[tr](gs)}}[ds](t){if(this[ys])this[el](t);else if(!t&&!this[rt])this[rl]();else{if(this[ys]=!0,this[rt]){this[el](t);let r=this[rt];this[rt]=null,this[ms](r)}else this[ms](t);for(;this[rt]&&this[rt].length>=512&&!this[Ce]&&!this[ws];){let r=this[rt];this[rt]=null,this[ms](r)}this[ys]=!1}(!this[rt]||this[Qe])&&this[rl]()}[ms](t){let r=0,i=t.length;for(;r+512<=i&&!this[Ce]&&!this[ws];)switch(this[Ft]){case"begin":case"header":this[Ud](t,r),r+=512;break;case"ignore":case"body":r+=this[tl](t,r);break;case"meta":r+=this[qd](t,r);break;default:throw new Error("invalid state: "+this[Ft])}r{"use strict";var rE=Lr(),Xd=Es(),Hr=require("fs"),iE=Wr(),zd=require("path");jd.exports=(e,t,r)=>{typeof e=="function"?(r=e,t=null,e={}):Array.isArray(e)&&(t=e,e={}),typeof t=="function"&&(r=t,t=null),t?t=Array.from(t):t=[];let i=rE(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return t.length&&sE(i,t),i.noResume||nE(i),i.file&&i.sync?oE(i):i.file?aE(i,r):Gd(i)};var nE=e=>{let t=e.onentry;e.onentry=t?r=>{t(r),r.resume()}:r=>r.resume()},sE=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let l=o||zd.parse(s).root||".",a=s===l?!1:r.has(s)?r.get(s):n(zd.dirname(s),l);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},oE=e=>{let t=Gd(e),r=e.file,i=!0,n;try{let s=Hr.statSync(r),o=e.maxReadSize||16*1024*1024;if(s.size{let r=new Xd(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,l)=>{r.on("error",l),r.on("end",o),Hr.stat(n,(a,c)=>{if(a)l(a);else{let u=new iE.ReadStream(n,{readSize:i,size:c.size});u.on("error",l),u.pipe(r)}})});return t?s.then(t,t):s},Gd=e=>new Xd(e)});var Zd=x((g_,$d)=>{"use strict";var lE=Lr(),_s=ls(),Wd=Wr(),Hd=bs(),Vd=require("path");$d.exports=(e,t,r)=>{if(typeof t=="function"&&(r=t),Array.isArray(e)&&(t=e,e={}),!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");t=Array.from(t);let i=lE(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?cE(i,t):i.file?uE(i,t,r):i.sync?hE(i,t):fE(i,t)};var cE=(e,t)=>{let r=new _s.Sync(e),i=new Wd.WriteStreamSync(e.file,{mode:e.mode||438});r.pipe(i),Yd(r,t)},uE=(e,t,r)=>{let i=new _s(e),n=new Wd.WriteStream(e.file,{mode:e.mode||438});i.pipe(n);let s=new Promise((o,l)=>{n.on("error",l),n.on("close",o),i.on("error",l)});return il(i,t),r?s.then(r,r):s},Yd=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?Hd({file:Vd.resolve(e.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>e.add(i)}):e.add(r)}),e.end()},il=(e,t)=>{for(;t.length;){let r=t.shift();if(r.charAt(0)==="@")return Hd({file:Vd.resolve(e.cwd,r.substr(1)),noResume:!0,onentry:i=>e.add(i)}).then(i=>il(e,t));e.add(r)}e.end()},hE=(e,t)=>{let r=new _s.Sync(e);return Yd(r,t),r},fE=(e,t)=>{let r=new _s(e);return il(r,t),r}});var nl=x((v_,Kd)=>{"use strict";var pE=Lr(),Jd=ls(),Ut=require("fs"),Qd=Wr(),tm=bs(),em=require("path"),rm=kr();Kd.exports=(e,t,r)=>{let i=pE(e);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");return t=Array.from(t),i.sync?dE(i,t):mE(i,t,r)};var dE=(e,t)=>{let r=new Jd.Sync(e),i=!0,n,s;try{try{n=Ut.openSync(e.file,"r+")}catch(a){if(a.code==="ENOENT")n=Ut.openSync(e.file,"w+");else throw a}let o=Ut.fstatSync(n),l=Buffer.alloc(512);t:for(s=0;so.size)break;s+=c,e.mtimeCache&&e.mtimeCache.set(a.path,a.mtime)}i=!1,yE(e,r,s,n,t)}finally{if(i)try{Ut.closeSync(n)}catch(o){}}},yE=(e,t,r,i,n)=>{let s=new Qd.WriteStreamSync(e.file,{fd:i,start:r});t.pipe(s),gE(t,n)},mE=(e,t,r)=>{t=Array.from(t);let i=new Jd(e),n=(o,l,a)=>{let c=(E,m)=>{E?Ut.close(o,w=>a(E)):a(null,m)},u=0;if(l===0)return c(null,0);let f=0,y=Buffer.alloc(512),b=(E,m)=>{if(E)return c(E);if(f+=m,f<512&&m)return Ut.read(o,y,f,y.length-f,u+f,b);if(u===0&&y[0]===31&&y[1]===139)return c(new Error("cannot append to compressed archives"));if(f<512)return c(null,u);let w=new rm(y);if(!w.cksumValid)return c(null,u);let O=512*Math.ceil(w.size/512);if(u+O+512>l||(u+=O+512,u>=l))return c(null,u);e.mtimeCache&&e.mtimeCache.set(w.path,w.mtime),f=0,Ut.read(o,y,0,512,u,b)};Ut.read(o,y,0,512,u,b)},s=new Promise((o,l)=>{i.on("error",l);let a="r+",c=(u,f)=>{if(u&&u.code==="ENOENT"&&a==="r+")return a="w+",Ut.open(e.file,a,c);if(u)return l(u);Ut.fstat(f,(y,b)=>{if(y)return l(y);n(f,b.size,(E,m)=>{if(E)return l(E);let w=new Qd.WriteStream(e.file,{fd:f,start:m});i.pipe(w),w.on("error",l),w.on("close",o),im(i,t)})})};Ut.open(e.file,a,c)});return r?s.then(r,r):s},gE=(e,t)=>{t.forEach(r=>{r.charAt(0)==="@"?tm({file:em.resolve(e.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>e.add(i)}):e.add(r)}),e.end()},im=(e,t)=>{for(;t.length;){let r=t.shift();if(r.charAt(0)==="@")return tm({file:em.resolve(e.cwd,r.substr(1)),noResume:!0,onentry:i=>e.add(i)}).then(i=>im(e,t));e.add(r)}e.end()}});var sm=x((w_,nm)=>{"use strict";var vE=Lr(),wE=nl();nm.exports=(e,t,r)=>{let i=vE(e);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!t||!Array.isArray(t)||!t.length)throw new TypeError("no files or directories specified");return t=Array.from(t),EE(i),wE(i,t,r)};var EE=e=>{let t=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=t?(r,i)=>t(r,i)&&!(e.mtimeCache.get(r)>i.mtime):(r,i)=>!(e.mtimeCache.get(r)>i.mtime)}});var lm=x((E_,om)=>{var{promisify:am}=require("util"),Pe=require("fs"),bE=e=>{if(!e)e={mode:511,fs:Pe};else if(typeof e=="object")e={mode:511,fs:Pe,...e};else if(typeof e=="number")e={mode:e,fs:Pe};else if(typeof e=="string")e={mode:parseInt(e,8),fs:Pe};else throw new TypeError("invalid options argument");return e.mkdir=e.mkdir||e.fs.mkdir||Pe.mkdir,e.mkdirAsync=am(e.mkdir),e.stat=e.stat||e.fs.stat||Pe.stat,e.statAsync=am(e.stat),e.statSync=e.statSync||e.fs.statSync||Pe.statSync,e.mkdirSync=e.mkdirSync||e.fs.mkdirSync||Pe.mkdirSync,e};om.exports=bE});var um=x((b_,cm)=>{var _E=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:SE,parse:OE}=require("path"),NE=e=>{if(/\0/.test(e))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:e,code:"ERR_INVALID_ARG_VALUE"});if(e=SE(e),_E==="win32"){let t=/[*|"<>?:]/,{root:r}=OE(e);if(t.test(e.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:e,code:"EINVAL"})}return e};cm.exports=NE});var mm=x((__,hm)=>{var{dirname:fm}=require("path"),pm=(e,t,r=void 0)=>r===t?Promise.resolve():e.statAsync(t).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?pm(e,fm(t),t):void 0),dm=(e,t,r=void 0)=>{if(r!==t)try{return e.statSync(t).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?dm(e,fm(t),t):void 0}};hm.exports={findMade:pm,findMadeSync:dm}});var al=x((S_,ym)=>{var{dirname:gm}=require("path"),sl=(e,t,r)=>{t.recursive=!1;let i=gm(e);return i===e?t.mkdirAsync(e,t).catch(n=>{if(n.code!=="EISDIR")throw n}):t.mkdirAsync(e,t).then(()=>r||e,n=>{if(n.code==="ENOENT")return sl(i,t).then(s=>sl(e,t,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return t.statAsync(e).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},ol=(e,t,r)=>{let i=gm(e);if(t.recursive=!1,i===e)try{return t.mkdirSync(e,t)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return t.mkdirSync(e,t),r||e}catch(n){if(n.code==="ENOENT")return ol(e,t,ol(i,t,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!t.statSync(e).isDirectory())throw n}catch(s){throw n}}};ym.exports={mkdirpManual:sl,mkdirpManualSync:ol}});var Em=x((O_,vm)=>{var{dirname:wm}=require("path"),{findMade:DE,findMadeSync:TE}=mm(),{mkdirpManual:RE,mkdirpManualSync:AE}=al(),IE=(e,t)=>(t.recursive=!0,wm(e)===e?t.mkdirAsync(e,t):DE(t,e).then(i=>t.mkdirAsync(e,t).then(()=>i).catch(n=>{if(n.code==="ENOENT")return RE(e,t);throw n}))),xE=(e,t)=>{if(t.recursive=!0,wm(e)===e)return t.mkdirSync(e,t);let i=TE(t,e);try{return t.mkdirSync(e,t),i}catch(n){if(n.code==="ENOENT")return AE(e,t);throw n}};vm.exports={mkdirpNative:IE,mkdirpNativeSync:xE}});var Om=x((N_,bm)=>{var _m=require("fs"),LE=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,ll=LE.replace(/^v/,"").split("."),Sm=+ll[0]>10||+ll[0]==10&&+ll[1]>=12,ME=Sm?e=>e.mkdir===_m.mkdir:()=>!1,CE=Sm?e=>e.mkdirSync===_m.mkdirSync:()=>!1;bm.exports={useNative:ME,useNativeSync:CE}});var Im=x((D_,Nm)=>{var Vr=lm(),Yr=um(),{mkdirpNative:Dm,mkdirpNativeSync:Tm}=Em(),{mkdirpManual:Rm,mkdirpManualSync:Am}=al(),{useNative:PE,useNativeSync:kE}=Om(),Zr=(e,t)=>(e=Yr(e),t=Vr(t),PE(t)?Dm(e,t):Rm(e,t)),BE=(e,t)=>(e=Yr(e),t=Vr(t),kE(t)?Tm(e,t):Am(e,t));Zr.sync=BE;Zr.native=(e,t)=>Dm(Yr(e),Vr(t));Zr.manual=(e,t)=>Rm(Yr(e),Vr(t));Zr.nativeSync=(e,t)=>Tm(Yr(e),Vr(t));Zr.manualSync=(e,t)=>Am(Yr(e),Vr(t));Nm.exports=Zr});var Bm=x((T_,xm)=>{"use strict";var jt=require("fs"),rr=require("path"),FE=jt.lchown?"lchown":"chown",qE=jt.lchownSync?"lchownSync":"chownSync",Lm=jt.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),Mm=(e,t,r)=>{try{return jt[qE](e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},UE=(e,t,r)=>{try{return jt.chownSync(e,t,r)}catch(i){if(i.code!=="ENOENT")throw i}},jE=Lm?(e,t,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):jt.chown(e,t,r,i)}:(e,t,r,i)=>i,cl=Lm?(e,t,r)=>{try{return Mm(e,t,r)}catch(i){if(i.code!=="EISDIR")throw i;UE(e,t,r)}}:(e,t,r)=>Mm(e,t,r),XE=process.version,Cm=(e,t,r)=>jt.readdir(e,t,r),zE=(e,t)=>jt.readdirSync(e,t);/^v4\./.test(XE)&&(Cm=(e,t,r)=>jt.readdir(e,r));var Ss=(e,t,r,i)=>{jt[FE](e,t,r,jE(e,t,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},Pm=(e,t,r,i,n)=>{if(typeof t=="string")return jt.lstat(rr.resolve(e,t),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=t,Pm(e,o,r,i,n)});if(t.isDirectory())ul(rr.resolve(e,t.name),r,i,s=>{if(s)return n(s);let o=rr.resolve(e,t.name);Ss(o,r,i,n)});else{let s=rr.resolve(e,t.name);Ss(s,r,i,n)}},ul=(e,t,r,i)=>{Cm(e,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return Ss(e,t,r,i);let o=s.length,l=null,a=c=>{if(!l){if(c)return i(l=c);if(--o==0)return Ss(e,t,r,i)}};s.forEach(c=>Pm(e,c,t,r,a))})},GE=(e,t,r,i)=>{if(typeof t=="string")try{let n=jt.lstatSync(rr.resolve(e,t));n.name=t,t=n}catch(n){if(n.code==="ENOENT")return;throw n}t.isDirectory()&&km(rr.resolve(e,t.name),r,i),cl(rr.resolve(e,t.name),r,i)},km=(e,t,r)=>{let i;try{i=zE(e,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return cl(e,t,r);throw n}return i&&i.length&&i.forEach(n=>GE(e,n,t,r)),cl(e,t,r)};xm.exports=ul;ul.sync=km});var jm=x((R_,hl)=>{"use strict";var Fm=Im(),Xt=require("fs"),Os=require("path"),qm=Bm(),fl=class extends Error{constructor(t,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=t}get name(){return"SylinkError"}},Gi=class extends Error{constructor(t,r){super(r+": Cannot cd into '"+t+"'");this.path=t,this.code=r}get name(){return"CwdError"}};hl.exports=(e,t,r)=>{let i=t.umask,n=t.mode|448,s=(n&i)!=0,o=t.uid,l=t.gid,a=typeof o=="number"&&typeof l=="number"&&(o!==t.processUid||l!==t.processGid),c=t.preserve,u=t.unlink,f=t.cache,y=t.cwd,b=(w,O)=>{w?r(w):(f.set(e,!0),O&&a?qm(O,o,l,d=>b(d)):s?Xt.chmod(e,n,r):r())};if(f&&f.get(e)===!0)return b();if(e===y)return Xt.stat(e,(w,O)=>{(w||!O.isDirectory())&&(w=new Gi(e,w&&w.code||"ENOTDIR")),b(w)});if(c)return Fm(e,{mode:n}).then(w=>b(null,w),b);let m=Os.relative(y,e).split(/\/|\\/);Ns(y,m,n,f,u,y,null,b)};var Ns=(e,t,r,i,n,s,o,l)=>{if(!t.length)return l(null,o);let a=t.shift(),c=e+"/"+a;if(i.get(c))return Ns(c,t,r,i,n,s,o,l);Xt.mkdir(c,r,Um(c,t,r,i,n,s,o,l))},Um=(e,t,r,i,n,s,o,l)=>a=>{if(a){if(a.path&&Os.dirname(a.path)===s&&(a.code==="ENOTDIR"||a.code==="ENOENT"))return l(new Gi(s,a.code));Xt.lstat(e,(c,u)=>{if(c)l(c);else if(u.isDirectory())Ns(e,t,r,i,n,s,o,l);else if(n)Xt.unlink(e,f=>{if(f)return l(f);Xt.mkdir(e,r,Um(e,t,r,i,n,s,o,l))});else{if(u.isSymbolicLink())return l(new fl(e,e+"/"+t.join("/")));l(a)}})}else o=o||e,Ns(e,t,r,i,n,s,o,l)};hl.exports.sync=(e,t)=>{let r=t.umask,i=t.mode|448,n=(i&r)!=0,s=t.uid,o=t.gid,l=typeof s=="number"&&typeof o=="number"&&(s!==t.processUid||o!==t.processGid),a=t.preserve,c=t.unlink,u=t.cache,f=t.cwd,y=w=>{u.set(e,!0),w&&l&&qm.sync(w,s,o),n&&Xt.chmodSync(e,i)};if(u&&u.get(e)===!0)return y();if(e===f){let w=!1,O="ENOTDIR";try{w=Xt.statSync(e).isDirectory()}catch(d){O=d.code}finally{if(!w)throw new Gi(e,O)}y();return}if(a)return y(Fm.sync(e,i));let E=Os.relative(f,e).split(/\/|\\/),m=null;for(let w=E.shift(),O=f;w&&(O+="/"+w);w=E.shift())if(!u.get(O))try{Xt.mkdirSync(O,i),m=m||O,u.set(O,!0)}catch(d){if(d.path&&Os.dirname(d.path)===f&&(d.code==="ENOTDIR"||d.code==="ENOENT"))return new Gi(f,d.code);let g=Xt.lstatSync(O);if(g.isDirectory()){u.set(O,!0);continue}else if(c){Xt.unlinkSync(O),Xt.mkdirSync(O,i),m=m||O,u.set(O,!0);continue}else if(g.isSymbolicLink())return new fl(O,O+"/"+E.join("/"))}return y(m)}});var Gm=x((A_,Xm)=>{var zm=require("assert");Xm.exports=()=>{let e=new Map,t=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\/]/).slice(0,-1).reduce((f,y)=>f.length?f.concat(r(f[f.length-1],y)):[y],[]),n=new Set,s=u=>{let f=t.get(u);if(!f)throw new Error("function does not have any path reservations");return{paths:f.paths.map(y=>e.get(y)),dirs:[...f.dirs].map(y=>e.get(y))}},o=u=>{let{paths:f,dirs:y}=s(u);return f.every(b=>b[0]===u)&&y.every(b=>b[0]instanceof Set&&b[0].has(u))},l=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>a(u)),!0),a=u=>{if(!n.has(u))return!1;let{paths:f,dirs:y}=t.get(u),b=new Set;return f.forEach(E=>{let m=e.get(E);zm.equal(m[0],u),m.length===1?e.delete(E):(m.shift(),typeof m[0]=="function"?b.add(m[0]):m[0].forEach(w=>b.add(w)))}),y.forEach(E=>{let m=e.get(E);zm(m[0]instanceof Set),m[0].size===1&&m.length===1?e.delete(E):m[0].size===1?(m.shift(),b.add(m[0])):m[0].delete(u)}),n.delete(u),b.forEach(E=>l(E)),!0};return{check:o,reserve:(u,f)=>{let y=new Set(u.map(b=>i(b)).reduce((b,E)=>b.concat(E)));return t.set(f,{dirs:y,paths:u}),u.forEach(b=>{let E=e.get(b);E?E.push(f):e.set(b,[f])}),y.forEach(b=>{let E=e.get(b);E?E[E.length-1]instanceof Set?E[E.length-1].add(f):E.push(new Set([f])):e.set(b,[new Set([f])])}),l(f)}}}});var Hm=x((I_,$m)=>{var $E=process.env.__FAKE_PLATFORM__||process.platform,WE=$E==="win32",HE=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:VE,O_TRUNC:YE,O_WRONLY:ZE,UV_FS_O_FILEMAP:Wm=0}=HE.constants,KE=WE&&!!Wm,JE=512*1024,QE=Wm|YE|VE|ZE;$m.exports=KE?e=>e"w"});var El=x((x_,Vm)=>{"use strict";var t1=require("assert"),e1=Es(),J=require("fs"),r1=Wr(),fe=require("path"),Ym=jm(),Zm=Ta(),i1=Gm(),Km=Symbol("onEntry"),pl=Symbol("checkFs"),Jm=Symbol("checkFs2"),dl=Symbol("isReusable"),pe=Symbol("makeFs"),ml=Symbol("file"),yl=Symbol("directory"),Ds=Symbol("link"),Qm=Symbol("symlink"),ty=Symbol("hardlink"),ey=Symbol("unsupported"),ry=Symbol("checkPath"),Kr=Symbol("mkdir"),vt=Symbol("onError"),Ts=Symbol("pending"),iy=Symbol("pend"),Jr=Symbol("unpend"),gl=Symbol("ended"),vl=Symbol("maybeClose"),wl=Symbol("skip"),$i=Symbol("doChown"),Wi=Symbol("uid"),Hi=Symbol("gid"),ny=require("crypto"),sy=Hm(),Rs=()=>{throw new Error("sync function called cb somehow?!?")},n1=(e,t)=>{if(process.platform!=="win32")return J.unlink(e,t);let r=e+".DELETE."+ny.randomBytes(16).toString("hex");J.rename(e,r,i=>{if(i)return t(i);J.unlink(r,t)})},s1=e=>{if(process.platform!=="win32")return J.unlinkSync(e);let t=e+".DELETE."+ny.randomBytes(16).toString("hex");J.renameSync(e,t),J.unlinkSync(t)},oy=(e,t,r)=>e===e>>>0?e:t===t>>>0?t:r,As=class extends e1{constructor(t){if(t||(t={}),t.ondone=r=>{this[gl]=!0,this[vl]()},super(t),this.reservations=i1(),this.transform=typeof t.transform=="function"?t.transform:null,this.writable=!0,this.readable=!1,this[Ts]=0,this[gl]=!1,this.dirCache=t.dirCache||new Map,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;t.preserveOwner===void 0&&typeof t.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||process.platform==="win32",this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=fe.resolve(t.cwd||process.cwd()),this.strip=+t.strip||0,this.processUmask=t.noChmod?0:process.umask(),this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",r=>this[Km](r))}warn(t,r,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,r,i)}[vl](){this[gl]&&this[Ts]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[ry](t){if(this.strip){let r=t.path.split(/\/|\\/);if(r.length=this.strip&&(t.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=t.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:t,path:r}),!1;if(fe.win32.isAbsolute(r)){let i=fe.win32.parse(r);t.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:t,path:r})}}if(this.win32){let r=fe.win32.parse(t.path);t.path=r.root===""?Zm.encode(t.path):r.root+Zm.encode(t.path.substr(r.root.length))}return fe.isAbsolute(t.path)?t.absolute=t.path:t.absolute=fe.resolve(this.cwd,t.path),!0}[Km](t){if(!this[ry](t))return t.resume();switch(t1.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[pl](t);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[ey](t)}}[vt](t,r){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:r}),this[Jr](),r.resume())}[Kr](t,r,i){Ym(t,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},i)}[$i](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[Wi](t){return oy(this.uid,t.uid,this.processUid)}[Hi](t){return oy(this.gid,t.gid,this.processGid)}[ml](t,r){let i=t.mode&4095||this.fmode,n=new r1.WriteStream(t.absolute,{flags:sy(t.size),mode:i,autoClose:!1});n.on("error",a=>this[vt](a,t));let s=1,o=a=>{if(a)return this[vt](a,t);--s==0&&J.close(n.fd,c=>{r(),c?this[vt](c,t):this[Jr]()})};n.on("finish",a=>{let c=t.absolute,u=n.fd;if(t.mtime&&!this.noMtime){s++;let f=t.atime||new Date,y=t.mtime;J.futimes(u,f,y,b=>b?J.utimes(c,f,y,E=>o(E&&b)):o())}if(this[$i](t)){s++;let f=this[Wi](t),y=this[Hi](t);J.fchown(u,f,y,b=>b?J.chown(c,f,y,E=>o(E&&b)):o())}o()});let l=this.transform&&this.transform(t)||t;l!==t&&(l.on("error",a=>this[vt](a,t)),t.pipe(l)),l.pipe(n)}[yl](t,r){let i=t.mode&4095||this.dmode;this[Kr](t.absolute,i,n=>{if(n)return r(),this[vt](n,t);let s=1,o=l=>{--s==0&&(r(),this[Jr](),t.resume())};t.mtime&&!this.noMtime&&(s++,J.utimes(t.absolute,t.atime||new Date,t.mtime,o)),this[$i](t)&&(s++,J.chown(t.absolute,this[Wi](t),this[Hi](t),o)),o()})}[ey](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Qm](t,r){this[Ds](t,t.linkpath,"symlink",r)}[ty](t,r){this[Ds](t,fe.resolve(this.cwd,t.linkpath),"link",r)}[iy](){this[Ts]++}[Jr](){this[Ts]--,this[vl]()}[wl](t){this[Jr](),t.resume()}[dl](t,r){return t.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[pl](t){this[iy]();let r=[t.path];t.linkpath&&r.push(t.linkpath),this.reservations.reserve(r,i=>this[Jm](t,i))}[Jm](t,r){this[Kr](fe.dirname(t.absolute),this.dmode,i=>{if(i)return r(),this[vt](i,t);J.lstat(t.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>t.mtime)?(this[wl](t),r()):n||this[dl](t,s)?this[pe](null,t,r):s.isDirectory()?t.type==="Directory"?!this.noChmod&&(!t.mode||(s.mode&4095)===t.mode)?this[pe](null,t,r):J.chmod(t.absolute,t.mode,o=>this[pe](o,t,r)):J.rmdir(t.absolute,o=>this[pe](o,t,r)):n1(t.absolute,o=>this[pe](o,t,r))})})}[pe](t,r,i){if(t)return this[vt](t,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[ml](r,i);case"Link":return this[ty](r,i);case"SymbolicLink":return this[Qm](r,i);case"Directory":case"GNUDumpDir":return this[yl](r,i)}}[Ds](t,r,i,n){J[i](r,t.absolute,s=>{if(s)return this[vt](s,t);n(),this[Jr](),t.resume()})}},ay=class extends As{[pl](t){let r=this[Kr](fe.dirname(t.absolute),this.dmode,Rs);if(r)return this[vt](r,t);try{let i=J.lstatSync(t.absolute);if(this.keep||this.newer&&i.mtime>t.mtime)return this[wl](t);if(this[dl](t,i))return this[pe](null,t,Rs);try{return i.isDirectory()?t.type==="Directory"?!this.noChmod&&t.mode&&(i.mode&4095)!==t.mode&&J.chmodSync(t.absolute,t.mode):J.rmdirSync(t.absolute):s1(t.absolute),this[pe](null,t,Rs)}catch(n){return this[vt](n,t)}}catch(i){return this[pe](null,t,Rs)}}[ml](t,r){let i=t.mode&4095||this.fmode,n=l=>{let a;try{J.closeSync(s)}catch(c){a=c}(l||a)&&this[vt](l||a,t)},s;try{s=J.openSync(t.absolute,sy(t.size),i)}catch(l){return n(l)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",l=>this[vt](l,t)),t.pipe(o)),o.on("data",l=>{try{J.writeSync(s,l,0,l.length)}catch(a){n(a)}}),o.on("end",l=>{let a=null;if(t.mtime&&!this.noMtime){let c=t.atime||new Date,u=t.mtime;try{J.futimesSync(s,c,u)}catch(f){try{J.utimesSync(t.absolute,c,u)}catch(y){a=f}}}if(this[$i](t)){let c=this[Wi](t),u=this[Hi](t);try{J.fchownSync(s,c,u)}catch(f){try{J.chownSync(t.absolute,c,u)}catch(y){a=a||f}}}n(a)})}[yl](t,r){let i=t.mode&4095||this.dmode,n=this[Kr](t.absolute,i);if(n)return this[vt](n,t);if(t.mtime&&!this.noMtime)try{J.utimesSync(t.absolute,t.atime||new Date,t.mtime)}catch(s){}if(this[$i](t))try{J.chownSync(t.absolute,this[Wi](t),this[Hi](t))}catch(s){}t.resume()}[Kr](t,r){try{return Ym.sync(t,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[Ds](t,r,i,n){try{J[i+"Sync"](r,t.absolute),t.resume()}catch(s){return this[vt](s,t)}}};As.Sync=ay;Vm.exports=As});var fy=x((L_,ly)=>{"use strict";var o1=Lr(),Is=El(),cy=require("fs"),uy=Wr(),hy=require("path");ly.exports=(e,t,r)=>{typeof e=="function"?(r=e,t=null,e={}):Array.isArray(e)&&(t=e,e={}),typeof t=="function"&&(r=t,t=null),t?t=Array.from(t):t=[];let i=o1(e);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return t.length&&a1(i,t),i.file&&i.sync?l1(i):i.file?c1(i,r):i.sync?u1(i):h1(i)};var a1=(e,t)=>{let r=new Map(t.map(s=>[s.replace(/\/+$/,""),!0])),i=e.filter,n=(s,o)=>{let l=o||hy.parse(s).root||".",a=s===l?!1:r.has(s)?r.get(s):n(hy.dirname(s),l);return r.set(s,a),a};e.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},l1=e=>{let t=new Is.Sync(e),r=e.file,i=cy.statSync(r),n=e.maxReadSize||16*1024*1024;new uy.ReadStreamSync(r,{readSize:n,size:i.size}).pipe(t)},c1=(e,t)=>{let r=new Is(e),i=e.maxReadSize||16*1024*1024,n=e.file,s=new Promise((o,l)=>{r.on("error",l),r.on("close",o),cy.stat(n,(a,c)=>{if(a)l(a);else{let u=new uy.ReadStream(n,{readSize:i,size:c.size});u.on("error",l),u.pipe(r)}})});return t?s.then(t,t):s},u1=e=>new Is.Sync(e),h1=e=>new Is(e)});var py=x(at=>{"use strict";at.c=at.create=Zd();at.r=at.replace=nl();at.t=at.list=bs();at.u=at.update=sm();at.x=at.extract=fy();at.Pack=ls();at.Unpack=El();at.Parse=Es();at.ReadEntry=$n();at.WriteEntry=Ca();at.Header=kr();at.Pax=Vn();at.types=ba()});var vy=x(f1=>{Zi(f1);Bs(f1,{register:()=>m1});var ir=Et(vo()),nr=Et(vp()),dy=Et(qs()),my=Et(require("http")),yy=Et(kn()),bl=Et(require("path")),gy=Et(py()),p1=`http://registry.npmjs.org/${nr.PACKAGE_NAMES["win64-uac"]}/-/${nr.PACKAGE_NAMES["win64-uac"]}-${nr.BINARY_VERSION}.tgz`;function d1(){let{name:e}=yy.default.dirSync({postfix:"git-peek",unsafeCleanup:!0});return new Promise((t,r)=>{my.default.get(p1,function(i){i.pipe(gy.default.x({cwd:e,strip:1,onentry(n){},onwarn(n,s){console.warn(n)}}).on("finish",()=>{t(bl.default.resolve(e,"register-url.exe"))}).on("error",n=>{r(n)}))})})}async function m1(e){console.log("Downloading register-url-windows!");let t=await d1();console.log("Downloaded register-url-windows"),console.log(`${ir.default.whiteBright("git-peek uses Administrator privileges to enable 1-click in Chrome & Edge")}. Source code: +${ir.default.gray(" https://github.com/Jarred-Sumner/register-url-windows/blob/main/dotnet/RegisterURLHandler/Program.cs")}`);let r=await nr.register({path:bl.default.resolve(await dy.default("git-peek"),"../","node_modules","@jarred","git-peek","bin","git-peek-win32.exe"),name:"git-peek",origins:["github.com","bitbucket.com","gitlab.com","*.gitlab.com","sourcehut.org"],register:!0,protocol:je},t);process.env.VERBOSE&&console.log(r),r.error&&!(r.protocol&&r.edge&&r.chrome)&&console.error(r.error),r.exception&&!(r.protocol&&r.edge&&r.chrome)&&console.error(r.exception),r.protocol&&r.edge&&r.chrome?console.log(`${ir.default.green("Registered git-peek:// successfully")}`):r.protocol?(console.log(ir.default.whiteBright("Registered git-peek://, but 1-click is disabled")),console.log(`${ir.default.cyan("To enable 1-click, re-run `git-peek -r` with Administrator privileges.")}`)):console.log(`${ir.default.red("Register failed")}`),process.exit()}});Zi(exports);Bs(exports,{register:()=>xs});var xs;var je="git-peek";process.platform==="darwin"?xs=Yf().register:process.platform==="win32"?xs=vy().register:xs=()=>{throw"Unsupported Platform"}; /*! * Tmp * diff --git a/bin/registerProtocol.js.map b/bin/registerProtocol.js.map index 2cf720b..1dd0287 100644 --- a/bin/registerProtocol.js.map +++ b/bin/registerProtocol.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js", "../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js", "../node_modules/.pnpm/big-integer@1.6.48/node_modules/big-integer/BigInteger.js", "../node_modules/.pnpm/bplist-parser@0.2.0/node_modules/bplist-parser/bplistParser.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/constants.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/readable_streambuffer.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/writable_streambuffer.js", "../node_modules/.pnpm/stream-buffers@2.2.0/node_modules/stream-buffers/lib/streambuffer.js", "../node_modules/.pnpm/bplist-creator@0.0.8/node_modules/bplist-creator/bplistCreator.js", "../node_modules/.pnpm/xmldom@0.1.31/node_modules/xmldom/sax.js", "../node_modules/.pnpm/xmldom@0.1.31/node_modules/xmldom/dom.js", "../node_modules/.pnpm/xmldom@0.1.31/node_modules/xmldom/dom-parser.js", "../node_modules/.pnpm/plist@3.0.1/node_modules/plist/lib/parse.js", "../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/Utility.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLAttribute.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLElement.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLCData.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLComment.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDeclaration.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDAttList.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDEntity.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDElement.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDTDNotation.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDocType.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLRaw.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLText.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLNode.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLStringifier.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLWriterBase.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLStringWriter.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDocument.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLDocumentCB.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/XMLStreamWriter.js", "../node_modules/.pnpm/xmlbuilder@9.0.7/node_modules/xmlbuilder/lib/index.js", "../node_modules/.pnpm/plist@3.0.1/node_modules/plist/lib/build.js", "../node_modules/.pnpm/plist@3.0.1/node_modules/plist/index.js", "../node_modules/.pnpm/simple-plist@1.1.1/node_modules/simple-plist/simple-plist.js", "../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js", "../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js", "../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js", "../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js", "../node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js", "../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js", "../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js", "../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/util.js", "../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/templates.js", "../node_modules/.pnpm/chalk@4.1.0/node_modules/chalk/source/index.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js", "../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js", "../node_modules/.pnpm/balanced-match@1.0.0/node_modules/balanced-match/index.js", "../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js", "../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js", "../node_modules/.pnpm/path-is-absolute@1.0.1/node_modules/path-is-absolute/index.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/common.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/sync.js", "../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js", "../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js", "../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/glob.js", "../node_modules/.pnpm/rimraf@3.0.2/node_modules/rimraf/rimraf.js", "../node_modules/.pnpm/tmp@0.2.1/node_modules/tmp/lib/tmp.js", "../src/registerProtocol.mac.ts", "../node_modules/.pnpm/yocto-queue@0.1.0/node_modules/yocto-queue/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/p-limit/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/p-locate/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/locate-path/index.js", "../node_modules/.pnpm/path-exists@4.0.0/node_modules/path-exists/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/node_modules/find-up/index.js", "../node_modules/.pnpm/tmp-promise@3.0.2/node_modules/tmp-promise/index.js", "../node_modules/.pnpm/register-url-windows@1.0.24/node_modules/register-url-windows/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/high-level-opt.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js", "../node_modules/.pnpm/minipass@3.1.3/node_modules/minipass/index.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/constants.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/read-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/types.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/large-numbers.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/header.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pax.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/warn-mixin.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/winchars.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mode-fix.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/write-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/iterator.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/yallist.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pack.js", "../node_modules/.pnpm/fs-minipass@2.1.0/node_modules/fs-minipass/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/parse.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/list.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/create.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/replace.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/update.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/opts-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/path-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/find-made.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/use-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/index.js", "../node_modules/.pnpm/chownr@2.0.0/node_modules/chownr/chownr.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mkdir.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/path-reservations.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/get-write-flag.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/unpack.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/extract.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/index.js", "../src/registerProtocol.windows.ts", "../src/registerProtocol.ts", "../src/PROTOCOL.ts"], - "sourcesContent": ["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < top) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n", "'use strict';\n\n// adapted from http://code.google.com/p/plist/source/browse/trunk/src/com/dd/plist/BinaryPropertyListParser.java\n\nconst fs = require('fs');\nconst bigInt = require(\"big-integer\");\nconst debug = false;\n\nexports.maxObjectSize = 100 * 1000 * 1000; // 100Meg\nexports.maxObjectCount = 32768;\n\n// EPOCH = new SimpleDateFormat(\"yyyy MM dd zzz\").parse(\"2001 01 01 GMT\").getTime();\n// ...but that's annoying in a static initializer because it can throw exceptions, ick.\n// So we just hardcode the correct value.\nconst EPOCH = 978307200000;\n\n// UID object definition\nconst UID = exports.UID = function(id) {\n this.UID = id;\n};\n\nconst parseFile = exports.parseFile = function (fileNameOrBuffer, callback) {\n return new Promise(function (resolve, reject) {\n function tryParseBuffer(buffer) {\n let err = null;\n let result;\n try {\n result = parseBuffer(buffer);\n resolve(result);\n } catch (ex) {\n err = ex;\n reject(err);\n } finally {\n if (callback) callback(err, result);\n }\n }\n\n if (Buffer.isBuffer(fileNameOrBuffer)) {\n return tryParseBuffer(fileNameOrBuffer);\n }\n fs.readFile(fileNameOrBuffer, function (err, data) {\n if (err) {\n reject(err);\n return callback(err);\n }\n tryParseBuffer(data);\n });\n });\n};\n\nconst parseBuffer = exports.parseBuffer = function (buffer) {\n // check header\n const header = buffer.slice(0, 'bplist'.length).toString('utf8');\n if (header !== 'bplist') {\n throw new Error(\"Invalid binary plist. Expected 'bplist' at offset 0.\");\n }\n\n // Handle trailer, last 32 bytes of the file\n const trailer = buffer.slice(buffer.length - 32, buffer.length);\n // 6 null bytes (index 0 to 5)\n const offsetSize = trailer.readUInt8(6);\n if (debug) {\n console.log(\"offsetSize: \" + offsetSize);\n }\n const objectRefSize = trailer.readUInt8(7);\n if (debug) {\n console.log(\"objectRefSize: \" + objectRefSize);\n }\n const numObjects = readUInt64BE(trailer, 8);\n if (debug) {\n console.log(\"numObjects: \" + numObjects);\n }\n const topObject = readUInt64BE(trailer, 16);\n if (debug) {\n console.log(\"topObject: \" + topObject);\n }\n const offsetTableOffset = readUInt64BE(trailer, 24);\n if (debug) {\n console.log(\"offsetTableOffset: \" + offsetTableOffset);\n }\n\n if (numObjects > exports.maxObjectCount) {\n throw new Error(\"maxObjectCount exceeded\");\n }\n\n // Handle offset table\n const offsetTable = [];\n\n for (let i = 0; i < numObjects; i++) {\n const offsetBytes = buffer.slice(offsetTableOffset + i * offsetSize, offsetTableOffset + (i + 1) * offsetSize);\n offsetTable[i] = readUInt(offsetBytes, 0);\n if (debug) {\n console.log(\"Offset for Object #\" + i + \" is \" + offsetTable[i] + \" [\" + offsetTable[i].toString(16) + \"]\");\n }\n }\n\n // Parses an object inside the currently parsed binary property list.\n // For the format specification check\n // \n // Apple's binary property list parser implementation.\n function parseObject(tableOffset) {\n const offset = offsetTable[tableOffset];\n const type = buffer[offset];\n const objType = (type & 0xF0) >> 4; //First 4 bits\n const objInfo = (type & 0x0F); //Second 4 bits\n switch (objType) {\n case 0x0:\n return parseSimple();\n case 0x1:\n return parseInteger();\n case 0x8:\n return parseUID();\n case 0x2:\n return parseReal();\n case 0x3:\n return parseDate();\n case 0x4:\n return parseData();\n case 0x5: // ASCII\n return parsePlistString();\n case 0x6: // UTF-16\n return parsePlistString(true);\n case 0xA:\n return parseArray();\n case 0xD:\n return parseDictionary();\n default:\n throw new Error(\"Unhandled type 0x\" + objType.toString(16));\n }\n\n function parseSimple() {\n //Simple\n switch (objInfo) {\n case 0x0: // null\n return null;\n case 0x8: // false\n return false;\n case 0x9: // true\n return true;\n case 0xF: // filler byte\n return null;\n default:\n throw new Error(\"Unhandled simple type 0x\" + objType.toString(16));\n }\n }\n\n function bufferToHexString(buffer) {\n let str = '';\n let i;\n for (i = 0; i < buffer.length; i++) {\n if (buffer[i] != 0x00) {\n break;\n }\n }\n for (; i < buffer.length; i++) {\n const part = '00' + buffer[i].toString(16);\n str += part.substr(part.length - 2);\n }\n return str;\n }\n\n function parseInteger() {\n const length = Math.pow(2, objInfo);\n\n if (objInfo == 0x4) {\n const data = buffer.slice(offset + 1, offset + 1 + length);\n const str = bufferToHexString(data);\n return bigInt(str, 16);\n }\n if (objInfo == 0x3) {\n return buffer.readInt32BE(offset + 1);\n }\n if (length < exports.maxObjectSize) {\n return readUInt(buffer.slice(offset + 1, offset + 1 + length));\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseUID() {\n const length = objInfo + 1;\n if (length < exports.maxObjectSize) {\n return new UID(readUInt(buffer.slice(offset + 1, offset + 1 + length)));\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseReal() {\n const length = Math.pow(2, objInfo);\n if (length < exports.maxObjectSize) {\n const realBuffer = buffer.slice(offset + 1, offset + 1 + length);\n if (length === 4) {\n return realBuffer.readFloatBE(0);\n }\n if (length === 8) {\n return realBuffer.readDoubleBE(0);\n }\n } else {\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n }\n\n function parseDate() {\n if (objInfo != 0x3) {\n console.error(\"Unknown date type :\" + objInfo + \". Parsing anyway...\");\n }\n const dateBuffer = buffer.slice(offset + 1, offset + 9);\n return new Date(EPOCH + (1000 * dateBuffer.readDoubleBE(0)));\n }\n\n function parseData() {\n let dataoffset = 1;\n let length = objInfo;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0x4: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n dataoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length < exports.maxObjectSize) {\n return buffer.slice(offset + dataoffset, offset + dataoffset + length);\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parsePlistString (isUtf16) {\n isUtf16 = isUtf16 || 0;\n let enc = \"utf8\";\n let length = objInfo;\n let stroffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.err(\"UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n stroffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n // length is String length -> to get byte length multiply by 2, as 1 character takes 2 bytes in UTF-16\n length *= (isUtf16 + 1);\n if (length < exports.maxObjectSize) {\n let plistString = Buffer.from(buffer.slice(offset + stroffset, offset + stroffset + length));\n if (isUtf16) {\n plistString = swapBytes(plistString);\n enc = \"ucs2\";\n }\n return plistString.toString(enc);\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseArray() {\n let length = objInfo;\n let arrayoffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0xa: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n arrayoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length * objectRefSize > exports.maxObjectSize) {\n throw new Error(\"To little heap space available!\");\n }\n const array = [];\n for (let i = 0; i < length; i++) {\n const objRef = readUInt(buffer.slice(offset + arrayoffset + i * objectRefSize, offset + arrayoffset + (i + 1) * objectRefSize));\n array[i] = parseObject(objRef);\n }\n return array;\n }\n\n function parseDictionary() {\n let length = objInfo;\n let dictoffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0xD: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n dictoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length * 2 * objectRefSize > exports.maxObjectSize) {\n throw new Error(\"To little heap space available!\");\n }\n if (debug) {\n console.log(\"Parsing dictionary #\" + tableOffset);\n }\n const dict = {};\n for (let i = 0; i < length; i++) {\n const keyRef = readUInt(buffer.slice(offset + dictoffset + i * objectRefSize, offset + dictoffset + (i + 1) * objectRefSize));\n const valRef = readUInt(buffer.slice(offset + dictoffset + (length * objectRefSize) + i * objectRefSize, offset + dictoffset + (length * objectRefSize) + (i + 1) * objectRefSize));\n const key = parseObject(keyRef);\n const val = parseObject(valRef);\n if (debug) {\n console.log(\" DICT #\" + tableOffset + \": Mapped \" + key + \" to \" + val);\n }\n dict[key] = val;\n }\n return dict;\n }\n }\n\n return [ parseObject(topObject) ];\n};\n\nfunction readUInt(buffer, start) {\n start = start || 0;\n\n let l = 0;\n for (let i = start; i < buffer.length; i++) {\n l <<= 8;\n l |= buffer[i] & 0xFF;\n }\n return l;\n}\n\n// we're just going to toss the high order bits because javascript doesn't have 64-bit ints\nfunction readUInt64BE(buffer, start) {\n const data = buffer.slice(start, start + 8);\n return data.readUInt32BE(4, 8);\n}\n\nfunction swapBytes(buffer) {\n const len = buffer.length;\n for (let i = 0; i < len; i += 2) {\n const a = buffer[i];\n buffer[i] = buffer[i+1];\n buffer[i+1] = a;\n }\n return buffer;\n}\n", "module.exports = {\r\n\tDEFAULT_INITIAL_SIZE: (8 * 1024),\r\n\tDEFAULT_INCREMENT_AMOUNT: (8 * 1024),\r\n\tDEFAULT_FREQUENCY: 1,\r\n\tDEFAULT_CHUNK_SIZE: 1024\r\n};\r\n", "var stream = require(\"stream\"),\r\n\tconstants = require(\"./constants\"),\r\n\tutil = require(\"util\");\r\n\r\nvar ReadableStreamBuffer = module.exports = function(opts) {\r\n\tvar that = this;\r\n\r\n\tstream.Stream.call(this);\r\n\r\n\topts = opts || {};\r\n\tvar frequency = opts.hasOwnProperty(\"frequency\") ? opts.frequency : constants.DEFAULT_FREQUENCY;\r\n\tvar chunkSize = opts.chunkSize || constants.DEFAULT_CHUNK_SIZE;\r\n\tvar initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE;\r\n\tvar incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT;\r\n\r\n\tvar size = 0;\r\n\tvar buffer = new Buffer(initialSize);\r\n\tvar encoding = null;\r\n\r\n\tthis.readable = true;\r\n\tthis.writable = false;\r\n\r\n\tvar sendData = function() {\r\n\t\tvar amount = Math.min(chunkSize, size);\r\n\r\n\t\tif (amount > 0) {\r\n\t\t\tvar chunk = null;\r\n\t\t\tif(encoding) {\r\n\t\t\t\tchunk = buffer.toString(encoding, 0, amount);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tchunk = new Buffer(amount);\r\n\t\t\t\tbuffer.copy(chunk, 0, 0, amount);\r\n\t\t\t}\r\n\r\n\t\t\tthat.emit(\"data\", chunk);\r\n\r\n\t\t\tif(amount < buffer.length)\r\n\t\t\t\tbuffer.copy(buffer, 0, amount, size);\r\n\t\t\tsize -= amount;\r\n\t\t}\r\n\r\n\t\tif(size === 0 && !that.readable) {\r\n\t\t\tthat.emit(\"end\");\r\n\t\t\tthat.emit(\"close\");\r\n\t\t\tif (sendData && sendData.interval) {\r\n\t\t\t\tclearInterval(sendData.interval);\r\n\t\t\t\tsendData.interval = null;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.size = function() {\r\n\t\treturn size;\r\n\t};\r\n\r\n\tthis.maxSize = function() {\r\n\t\treturn buffer.length;\r\n\t};\r\n\r\n\tvar increaseBufferIfNecessary = function(incomingDataSize) {\r\n\t\tif((buffer.length - size) < incomingDataSize) {\r\n\t\t\tvar factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount);\r\n\r\n\t\t\tvar newBuffer = new Buffer(buffer.length + (incrementAmount * factor));\r\n\t\t\tbuffer.copy(newBuffer, 0, 0, size);\r\n\t\t\tbuffer = newBuffer;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.put = function(data, encoding) {\r\n\t\tif(!that.readable) return;\r\n\r\n\t\tvar wasEmpty = size === 0;\r\n\t\tif(Buffer.isBuffer(data)) {\r\n\t\t\tincreaseBufferIfNecessary(data.length);\r\n\t\t\tdata.copy(buffer, size, 0);\r\n\t\t\tsize += data.length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata = data + \"\";\r\n\t\t\tvar dataSizeInBytes = Buffer.byteLength(data);\r\n\t\t\tincreaseBufferIfNecessary(dataSizeInBytes);\r\n\t\t\tbuffer.write(data, size, encoding || \"utf8\");\r\n\t\t\tsize += dataSizeInBytes;\r\n\t\t}\r\n\r\n\t\tif (wasEmpty && size > 0) {\r\n\t\t\tthis.emit('readable')\r\n\t\t}\r\n\r\n\t\tif (!this.isPaused && !frequency) {\r\n\t\t\twhile (size > 0) {\r\n\t\t\t\tsendData();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.pause = function() {\r\n\t\tthis.isPaused = true;\r\n\t\tif(sendData && sendData.interval) {\r\n\t\t\tclearInterval(sendData.interval);\r\n\t\t\tdelete sendData.interval;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.resume = function() {\r\n\t\tthis.isPaused = false;\r\n\t\tif(sendData && !sendData.interval && frequency > 0) {\r\n\t\t\tsendData.interval = setInterval(sendData, frequency);\r\n\t\t}\r\n\t};\r\n\r\n\tthis.destroy = function() {\r\n\t\tthat.emit(\"end\");\r\n\t\tif(sendData.interval) clearInterval(sendData.interval);\r\n\t\tsendData = null;\r\n\t\tthat.readable = false;\r\n\t\tthat.emit(\"close\");\r\n\t};\r\n\r\n\tthis.destroySoon = function() {\r\n\t\tthat.readable = false;\r\n\t\tif (!sendData.interval) {\r\n\t\t\tthat.emit(\"end\");\r\n\t\t\tthat.emit(\"close\");\r\n\t\t}\r\n\t};\r\n\r\n\tthis.setEncoding = function(_encoding) {\r\n\t\tencoding = _encoding;\r\n\t};\r\n\r\n\tthis.resume();\r\n};\r\nutil.inherits(ReadableStreamBuffer, stream.Stream);\r\n", "var util = require(\"util\"),\r\n\tstream = require(\"stream\"),\r\n\tconstants = require(\"./constants\");\r\n\r\n// TODO: clear up specs on returning false from a write and emitting a drain event.\r\n// Does this mean if I return false from a write, I should ignore any write requests between that false return and the drain event?\r\nvar WritableStreamBuffer = module.exports = function(opts) {\r\n\tvar that = this;\r\n\r\n\tstream.Stream.call(this);\r\n\r\n\topts = opts || {};\r\n\tvar initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE;\r\n\tvar incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT;\r\n\r\n\tvar buffer = new Buffer(initialSize);\r\n\tvar size = 0;\r\n\r\n\tthis.writable = true;\r\n\tthis.readable = false;\r\n\r\n\tthis.size = function() {\r\n\t\treturn size;\r\n\t};\r\n\r\n\tthis.maxSize = function() {\r\n\t\treturn buffer.length;\r\n\t};\r\n\r\n\tthis.getContents = function(length) {\r\n\t\tif(!size) return false;\r\n\r\n\t\tvar data = new Buffer(Math.min(length || size, size));\r\n\t\tbuffer.copy(data, 0, 0, data.length);\r\n\r\n\t\tif(data.length < size)\r\n\t\t\tbuffer.copy(buffer, 0, data.length);\r\n\r\n\t\tsize -= data.length;\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tthis.getContentsAsString = function(encoding, length) {\r\n\t\tif(!size) return false;\r\n\r\n\t\tvar data = buffer.toString(encoding || \"utf8\", 0, Math.min(length || size, size));\r\n\t\tvar dataLength = Buffer.byteLength(data);\r\n\r\n\t\tif(dataLength < size)\r\n\t\t\tbuffer.copy(buffer, 0, dataLength);\r\n\r\n\t\tsize -= dataLength;\r\n\t\treturn data;\r\n\t};\r\n\r\n\tvar increaseBufferIfNecessary = function(incomingDataSize) {\r\n\t\tif((buffer.length - size) < incomingDataSize) {\r\n\t\t\tvar factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount);\r\n\r\n\t\t\tvar newBuffer = new Buffer(buffer.length + (incrementAmount * factor));\r\n\t\t\tbuffer.copy(newBuffer, 0, 0, size);\r\n\t\t\tbuffer = newBuffer;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.write = function(data, encoding, callback) {\r\n\t\tif(!that.writable) return;\r\n\r\n\t\tif(Buffer.isBuffer(data)) {\r\n\t\t\tincreaseBufferIfNecessary(data.length);\r\n\t\t\tdata.copy(buffer, size, 0);\r\n\t\t\tsize += data.length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata = data + \"\";\r\n\t\t\tincreaseBufferIfNecessary(Buffer.byteLength(data));\r\n\t\t\tbuffer.write(data, size, encoding || \"utf8\");\r\n\t\t\tsize += Buffer.byteLength(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof callback === \"function\") { callback() ;}\r\n\t};\r\n\r\n\tthis.end = function() {\r\n\t\tvar args = Array.prototype.slice.apply(arguments);\r\n\t\tif(args.length) that.write.apply(that, args);\r\n\t\tthat.emit('finish');\r\n\t\tthat.destroy();\r\n\t};\r\n\r\n\tthis.destroySoon = this.destroy = function() {\r\n\t\tthat.writable = false;\r\n\t\tthat.emit(\"close\");\r\n\t};\r\n};\r\nutil.inherits(WritableStreamBuffer, stream.Stream);\r\n", "module.exports = require(\"./constants\");\r\nmodule.exports.ReadableStreamBuffer = require(\"./readable_streambuffer\");\r\nmodule.exports.WritableStreamBuffer = require(\"./writable_streambuffer\");\r\n", "'use strict';\n\n// adapted from http://code.google.com/p/plist/source/browse/trunk/src/main/java/com/dd/plist/BinaryPropertyListWriter.java\n\nvar streamBuffers = require(\"stream-buffers\");\n\nvar debug = false;\n\nfunction Real(value) {\n this.value = value;\n}\n\nmodule.exports = function(dicts) {\n var buffer = new streamBuffers.WritableStreamBuffer();\n buffer.write(new Buffer(\"bplist00\"));\n\n if (debug) {\n console.log('create', require('util').inspect(dicts, false, 10));\n }\n\n if (dicts instanceof Array && dicts.length === 1) {\n dicts = dicts[0];\n }\n\n var entries = toEntries(dicts);\n if (debug) {\n console.log('entries', entries);\n }\n var idSizeInBytes = computeIdSizeInBytes(entries.length);\n var offsets = [];\n var offsetSizeInBytes;\n var offsetTableOffset;\n\n updateEntryIds();\n\n entries.forEach(function(entry, entryIdx) {\n offsets[entryIdx] = buffer.size();\n if (!entry) {\n buffer.write(0x00);\n } else {\n write(entry);\n }\n });\n\n writeOffsetTable();\n writeTrailer();\n return buffer.getContents();\n\n function updateEntryIds() {\n var strings = {};\n var entryId = 0;\n entries.forEach(function(entry) {\n if (entry.id) {\n return;\n }\n if (entry.type === 'string') {\n if (!entry.bplistOverride && strings.hasOwnProperty(entry.value)) {\n entry.type = 'stringref';\n entry.id = strings[entry.value];\n } else {\n strings[entry.value] = entry.id = entryId++;\n }\n } else {\n entry.id = entryId++;\n }\n });\n\n entries = entries.filter(function(entry) {\n return (entry.type !== 'stringref');\n });\n }\n\n function writeTrailer() {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer');\n }\n // 6 null bytes\n buffer.write(new Buffer([0, 0, 0, 0, 0, 0]));\n\n // size of an offset\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offsetSizeInBytes):', offsetSizeInBytes);\n }\n writeByte(offsetSizeInBytes);\n\n // size of a ref\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offsetSizeInBytes):', idSizeInBytes);\n }\n writeByte(idSizeInBytes);\n\n // number of objects\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(number of objects):', entries.length);\n }\n writeLong(entries.length);\n\n // top object\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(top object)');\n }\n writeLong(0);\n\n // offset table offset\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offset table offset):', offsetTableOffset);\n }\n writeLong(offsetTableOffset);\n }\n\n function writeOffsetTable() {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeOffsetTable');\n }\n offsetTableOffset = buffer.size();\n offsetSizeInBytes = computeOffsetSizeInBytes(offsetTableOffset);\n offsets.forEach(function(offset) {\n writeBytes(offset, offsetSizeInBytes);\n });\n }\n\n function write(entry) {\n switch (entry.type) {\n case 'dict':\n writeDict(entry);\n break;\n case 'number':\n case 'double':\n writeNumber(entry);\n break;\n case 'UID':\n writeUID(entry);\n break;\n case 'array':\n writeArray(entry);\n break;\n case 'boolean':\n writeBoolean(entry);\n break;\n case 'string':\n case 'string-utf16':\n writeString(entry);\n break;\n case 'date':\n writeDate(entry);\n break;\n case 'data':\n writeData(entry);\n break;\n default:\n throw new Error(\"unhandled entry type: \" + entry.type);\n }\n }\n\n function writeDate(entry) {\n writeByte(0x33);\n var date = (Date.parse(entry.value)/1000) - 978307200\n writeDouble(date)\n }\n\n function writeDict(entry) {\n if (debug) {\n var keysStr = entry.entryKeys.map(function(k) {return k.id;});\n var valsStr = entry.entryValues.map(function(k) {return k.id;});\n console.log('0x' + buffer.size().toString(16), 'writeDict', '(id: ' + entry.id + ')', '(keys: ' + keysStr + ')', '(values: ' + valsStr + ')');\n }\n writeIntHeader(0xD, entry.entryKeys.length);\n entry.entryKeys.forEach(function(entry) {\n writeID(entry.id);\n });\n entry.entryValues.forEach(function(entry) {\n writeID(entry.id);\n });\n }\n\n function writeNumber(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeNumber', entry.value, ' (type: ' + entry.type + ')', '(id: ' + entry.id + ')');\n }\n\n if (entry.type !== 'double' && parseFloat(entry.value.toFixed()) == entry.value) {\n if (entry.value < 0) {\n writeByte(0x13);\n writeBytes(entry.value, 8, true);\n } else if (entry.value <= 0xff) {\n writeByte(0x10);\n writeBytes(entry.value, 1);\n } else if (entry.value <= 0xffff) {\n writeByte(0x11);\n writeBytes(entry.value, 2);\n } else if (entry.value <= 0xffffffff) {\n writeByte(0x12);\n writeBytes(entry.value, 4);\n } else {\n writeByte(0x14);\n writeBytes(entry.value, 8);\n }\n } else {\n writeByte(0x23);\n writeDouble(entry.value);\n }\n }\n\n function writeUID(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeUID', entry.value, ' (type: ' + entry.type + ')', '(id: ' + entry.id + ')');\n }\n\n writeIntHeader(0x8, 0x0);\n writeID(entry.value);\n }\n\n function writeArray(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeArray (length: ' + entry.entries.length + ')', '(id: ' + entry.id + ')');\n }\n writeIntHeader(0xA, entry.entries.length);\n entry.entries.forEach(function(e) {\n writeID(e.id);\n });\n }\n\n function writeBoolean(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeBoolean', entry.value, '(id: ' + entry.id + ')');\n }\n writeByte(entry.value ? 0x09 : 0x08);\n }\n\n function writeString(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeString', entry.value, '(id: ' + entry.id + ')');\n }\n if (entry.type === 'string-utf16' || mustBeUtf16(entry.value)) {\n var utf16 = new Buffer(entry.value, 'ucs2');\n writeIntHeader(0x6, utf16.length / 2);\n // needs to be big endian so swap the bytes\n for (var i = 0; i < utf16.length; i += 2) {\n var t = utf16[i + 0];\n utf16[i + 0] = utf16[i + 1];\n utf16[i + 1] = t;\n }\n buffer.write(utf16);\n } else {\n var utf8 = new Buffer(entry.value, 'ascii');\n writeIntHeader(0x5, utf8.length);\n buffer.write(utf8);\n }\n }\n\n function writeData(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeData', entry.value, '(id: ' + entry.id + ')');\n }\n writeIntHeader(0x4, entry.value.length);\n buffer.write(entry.value);\n }\n\n function writeLong(l) {\n writeBytes(l, 8);\n }\n\n function writeByte(b) {\n buffer.write(new Buffer([b]));\n }\n\n function writeDouble(v) {\n var buf = new Buffer(8);\n buf.writeDoubleBE(v, 0);\n buffer.write(buf);\n }\n\n function writeIntHeader(kind, value) {\n if (value < 15) {\n writeByte((kind << 4) + value);\n } else if (value < 256) {\n writeByte((kind << 4) + 15);\n writeByte(0x10);\n writeBytes(value, 1);\n } else if (value < 65536) {\n writeByte((kind << 4) + 15);\n writeByte(0x11);\n writeBytes(value, 2);\n } else {\n writeByte((kind << 4) + 15);\n writeByte(0x12);\n writeBytes(value, 4);\n }\n }\n\n function writeID(id) {\n writeBytes(id, idSizeInBytes);\n }\n\n function writeBytes(value, bytes, is_signedint) {\n // write low-order bytes big-endian style\n var buf = new Buffer(bytes);\n var z = 0;\n\n // javascript doesn't handle large numbers\n if(!is_signedint) {\n while (bytes > 4) {\n buf[z++] = 0;\n bytes--;\n }\n }\n\n for (var i = bytes - 1; i >= 0; i--) {\n buf[z++] = value >> (8 * i);\n }\n buffer.write(buf);\n }\n\n function mustBeUtf16(string) {\n return Buffer.byteLength(string, 'utf8') != string.length;\n }\n};\n\nfunction toEntries(dicts) {\n if (dicts.bplistOverride) {\n return [dicts];\n }\n\n if (dicts instanceof Array) {\n return toEntriesArray(dicts);\n } else if (dicts instanceof Buffer) {\n return [\n {\n type: 'data',\n value: dicts\n }\n ];\n } else if (dicts instanceof Real) {\n return [\n {\n type: 'double',\n value: dicts.value\n }\n ];\n } else if (typeof(dicts) === 'object') {\n if (dicts instanceof Date) {\n return [\n {\n type: 'date',\n value: dicts\n }\n ]\n } else if (Object.keys(dicts).length == 1 && typeof(dicts.UID) === 'number') {\n return [\n {\n type: 'UID',\n value: dicts.UID\n }\n ]\n } else {\n return toEntriesObject(dicts);\n }\n } else if (typeof(dicts) === 'string') {\n return [\n {\n type: 'string',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'number') {\n return [\n {\n type: 'number',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'boolean') {\n return [\n {\n type: 'boolean',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'bigint') {\n return [\n {\n type: 'number',\n value: Number(BigInt.asIntN(32, dicts))\n }\n ];\n } else {\n throw new Error('unhandled entry: ' + dicts);\n }\n}\n\nfunction toEntriesArray(arr) {\n if (debug) {\n console.log('toEntriesArray');\n }\n var results = [\n {\n type: 'array',\n entries: []\n }\n ];\n arr.forEach(function(v) {\n var entry = toEntries(v);\n results[0].entries.push(entry[0]);\n results = results.concat(entry);\n });\n return results;\n}\n\nfunction toEntriesObject(dict) {\n if (debug) {\n console.log('toEntriesObject');\n }\n var results = [\n {\n type: 'dict',\n entryKeys: [],\n entryValues: []\n }\n ];\n Object.keys(dict).forEach(function(key) {\n var entryKey = toEntries(key);\n results[0].entryKeys.push(entryKey[0]);\n results = results.concat(entryKey[0]);\n });\n Object.keys(dict).forEach(function(key) {\n var entryValue = toEntries(dict[key]);\n results[0].entryValues.push(entryValue[0]);\n results = results.concat(entryValue);\n });\n return results;\n}\n\nfunction computeOffsetSizeInBytes(maxOffset) {\n if (maxOffset < 256) {\n return 1;\n }\n if (maxOffset < 65536) {\n return 2;\n }\n if (maxOffset < 4294967296) {\n return 4;\n }\n return 8;\n}\n\nfunction computeIdSizeInBytes(numberOfIds) {\n if (numberOfIds < 256) {\n return 1;\n }\n if (numberOfIds < 65536) {\n return 2;\n }\n return 4;\n}\n\nmodule.exports.Real = Real;\n", "//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\r\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\r\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\r\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\r\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\r\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\r\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\r\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\r\n\r\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\r\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\r\nvar S_TAG = 0;//tag name offerring\r\nvar S_ATTR = 1;//attr name offerring \r\nvar S_ATTR_SPACE=2;//attr name end and space offer\r\nvar S_EQ = 3;//=space?\r\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\r\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\r\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\r\nvar S_TAG_CLOSE = 7;//closed el\r\n\r\nfunction XMLReader(){\r\n\t\r\n}\r\n\r\nXMLReader.prototype = {\r\n\tparse:function(source,defaultNSMap,entityMap){\r\n\t\tvar domBuilder = this.domBuilder;\r\n\t\tdomBuilder.startDocument();\r\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\r\n\t\tparse(source,defaultNSMap,entityMap,\r\n\t\t\t\tdomBuilder,this.errorHandler);\r\n\t\tdomBuilder.endDocument();\r\n\t}\r\n}\r\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\r\n\tfunction fixedFromCharCode(code) {\r\n\t\t// String.prototype.fromCharCode does not supports\r\n\t\t// > 2 bytes unicode chars directly\r\n\t\tif (code > 0xffff) {\r\n\t\t\tcode -= 0x10000;\r\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\r\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\r\n\r\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\r\n\t\t} else {\r\n\t\t\treturn String.fromCharCode(code);\r\n\t\t}\r\n\t}\r\n\tfunction entityReplacer(a){\r\n\t\tvar k = a.slice(1,-1);\r\n\t\tif(k in entityMap){\r\n\t\t\treturn entityMap[k]; \r\n\t\t}else if(k.charAt(0) === '#'){\r\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\r\n\t\t}else{\r\n\t\t\terrorHandler.error('entity not found:'+a);\r\n\t\t\treturn a;\r\n\t\t}\r\n\t}\r\n\tfunction appendText(end){//has some bugs\r\n\t\tif(end>start){\r\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\tlocator&&position(start);\r\n\t\t\tdomBuilder.characters(xt,0,end-start);\r\n\t\t\tstart = end\r\n\t\t}\r\n\t}\r\n\tfunction position(p,m){\r\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\r\n\t\t\tlineStart = m.index;\r\n\t\t\tlineEnd = lineStart + m[0].length;\r\n\t\t\tlocator.lineNumber++;\r\n\t\t\t//console.log('line++:',locator,startPos,endPos)\r\n\t\t}\r\n\t\tlocator.columnNumber = p-lineStart+1;\r\n\t}\r\n\tvar lineStart = 0;\r\n\tvar lineEnd = 0;\r\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\r\n\tvar locator = domBuilder.locator;\r\n\t\r\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\r\n\tvar closeMap = {};\r\n\tvar start = 0;\r\n\twhile(true){\r\n\t\ttry{\r\n\t\t\tvar tagStart = source.indexOf('<',start);\r\n\t\t\tif(tagStart<0){\r\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\r\n\t\t\t\t\tvar doc = domBuilder.doc;\r\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\r\n\t \t\t\tdoc.appendChild(text);\r\n\t \t\t\tdomBuilder.currentElement = text;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif(tagStart>start){\r\n\t\t\t\tappendText(tagStart);\r\n\t\t\t}\r\n\t\t\tswitch(source.charAt(tagStart+1)){\r\n\t\t\tcase '/':\r\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\r\n\t\t\t\tvar tagName = source.substring(tagStart+2,end);\r\n\t\t\t\tvar config = parseStack.pop();\r\n\t\t\t\tif(end<0){\r\n\t\t\t\t\t\r\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\r\n\t \t\t//console.error('#@@@@@@'+tagName)\r\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\r\n\t \t\tend = tagStart+1+tagName.length;\r\n\t \t}else if(tagName.match(/\\s\r\n\t\t\t\tlocator&&position(tagStart);\r\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\r\n\t\t\t\tbreak;\r\n\t\t\tcase '!':// start){\r\n\t\t\tstart = end;\r\n\t\t}else{\r\n\t\t\t//TODO: \u8FD9\u91CC\u6709\u53EF\u80FDsax\u56DE\u9000\uFF0C\u6709\u4F4D\u7F6E\u9519\u8BEF\u98CE\u9669\r\n\t\t\tappendText(Math.max(tagStart,start)+1);\r\n\t\t}\r\n\t}\r\n}\r\nfunction copyLocator(f,t){\r\n\tt.lineNumber = f.lineNumber;\r\n\tt.columnNumber = f.columnNumber;\r\n\treturn t;\r\n}\r\n\r\n/**\r\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\r\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\r\n */\r\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\r\n\tvar attrName;\r\n\tvar value;\r\n\tvar p = ++start;\r\n\tvar s = S_TAG;//status\r\n\twhile(true){\r\n\t\tvar c = source.charAt(p);\r\n\t\tswitch(c){\r\n\t\tcase '=':\r\n\t\t\tif(s === S_ATTR){//attrName\r\n\t\t\t\tattrName = source.slice(start,p);\r\n\t\t\t\ts = S_EQ;\r\n\t\t\t}else if(s === S_ATTR_SPACE){\r\n\t\t\t\ts = S_EQ;\r\n\t\t\t}else{\r\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\r\n\t\t\t\tthrow new Error('attribute equal must after attrName');\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase '\\'':\r\n\t\tcase '\"':\r\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\r\n\t\t\t\t){//equal\r\n\t\t\t\tif(s === S_ATTR){\r\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\r\n\t\t\t\t\tattrName = source.slice(start,p)\r\n\t\t\t\t}\r\n\t\t\t\tstart = p+1;\r\n\t\t\t\tp = source.indexOf(c,start)\r\n\t\t\t\tif(p>0){\r\n\t\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t\tel.add(attrName,value,start-1);\r\n\t\t\t\t\ts = S_ATTR_END;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//fatalError: no end quot match\r\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\r\n\t\t\t\t}\r\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\r\n\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t//console.log(attrName,value,start,p)\r\n\t\t\t\tel.add(attrName,value,start);\r\n\t\t\t\t//console.dir(el)\r\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\r\n\t\t\t\tstart = p+1;\r\n\t\t\t\ts = S_ATTR_END\r\n\t\t\t}else{\r\n\t\t\t\t//fatalError: no equal before\r\n\t\t\t\tthrow new Error('attribute value must after \"=\"');\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase '/':\r\n\t\t\tswitch(s){\r\n\t\t\tcase S_TAG:\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\tcase S_ATTR_END:\r\n\t\t\tcase S_TAG_SPACE:\r\n\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\ts =S_TAG_CLOSE;\r\n\t\t\t\tel.closed = true;\r\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\r\n\t\t\tcase S_ATTR:\r\n\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\tbreak;\r\n\t\t\t//case S_EQ:\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\")\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase ''://end document\r\n\t\t\t//throw new Error('unexpected end of input')\r\n\t\t\terrorHandler.error('unexpected end of input');\r\n\t\t\tif(s == S_TAG){\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\t}\r\n\t\t\treturn p;\r\n\t\tcase '>':\r\n\t\t\tswitch(s){\r\n\t\t\tcase S_TAG:\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\tcase S_ATTR_END:\r\n\t\t\tcase S_TAG_SPACE:\r\n\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\tbreak;//normal\r\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\r\n\t\t\tcase S_ATTR:\r\n\t\t\t\tvalue = source.slice(start,p);\r\n\t\t\t\tif(value.slice(-1) === '/'){\r\n\t\t\t\t\tel.closed = true;\r\n\t\t\t\t\tvalue = value.slice(0,-1)\r\n\t\t\t\t}\r\n\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\tif(s === S_ATTR_SPACE){\r\n\t\t\t\t\tvalue = attrName;\r\n\t\t\t\t}\r\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\r\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\r\n\t\t\t\t\tel.add(attrName,value.replace(/&#?\\w+;/g,entityReplacer),start)\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)){\r\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\r\n\t\t\t\t\t}\r\n\t\t\t\t\tel.add(value,value,start)\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase S_EQ:\r\n\t\t\t\tthrow new Error('attribute value missed!!');\r\n\t\t\t}\r\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\r\n\t\t\treturn p;\r\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\r\n\t\tcase '\\u0080':\r\n\t\t\tc = ' ';\r\n\t\tdefault:\r\n\t\t\tif(c<= ' '){//space\r\n\t\t\t\tswitch(s){\r\n\t\t\t\tcase S_TAG:\r\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\r\n\t\t\t\t\ts = S_TAG_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR:\r\n\t\t\t\t\tattrName = source.slice(start,p)\r\n\t\t\t\t\ts = S_ATTR_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\r\n\t\t\t\t\tvar value = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\r\n\t\t\t\t\tel.add(attrName,value,start)\r\n\t\t\t\tcase S_ATTR_END:\r\n\t\t\t\t\ts = S_TAG_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t//case S_TAG_SPACE:\r\n\t\t\t\t//case S_EQ:\r\n\t\t\t\t//case S_ATTR_SPACE:\r\n\t\t\t\t//\tvoid();break;\r\n\t\t\t\t//case S_TAG_CLOSE:\r\n\t\t\t\t\t//ignore warning\r\n\t\t\t\t}\r\n\t\t\t}else{//not space\r\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\r\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\r\n\t\t\t\tswitch(s){\r\n\t\t\t\t//case S_TAG:void();break;\r\n\t\t\t\t//case S_ATTR:void();break;\r\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\r\n\t\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\t\tvar tagName = el.tagName;\r\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)){\r\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\r\n\t\t\t\t\t}\r\n\t\t\t\t\tel.add(attrName,attrName,start);\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\ts = S_ATTR;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR_END:\r\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\r\n\t\t\t\tcase S_TAG_SPACE:\r\n\t\t\t\t\ts = S_ATTR;\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_EQ:\r\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}//end outer switch\r\n\t\t//console.log('p++',p)\r\n\t\tp++;\r\n\t}\r\n}\r\n/**\r\n * @return true if has new namespace define\r\n */\r\nfunction appendElement(el,domBuilder,currentNSMap){\r\n\tvar tagName = el.tagName;\r\n\tvar localNSMap = null;\r\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\r\n\tvar i = el.length;\r\n\twhile(i--){\r\n\t\tvar a = el[i];\r\n\t\tvar qName = a.qName;\r\n\t\tvar value = a.value;\r\n\t\tvar nsp = qName.indexOf(':');\r\n\t\tif(nsp>0){\r\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\r\n\t\t\tvar localName = qName.slice(nsp+1);\r\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\r\n\t\t}else{\r\n\t\t\tlocalName = qName;\r\n\t\t\tprefix = null\r\n\t\t\tnsPrefix = qName === 'xmlns' && ''\r\n\t\t}\r\n\t\t//can not set prefix,because prefix !== ''\r\n\t\ta.localName = localName ;\r\n\t\t//prefix == null for no ns prefix attribute \r\n\t\tif(nsPrefix !== false){//hack!!\r\n\t\t\tif(localNSMap == null){\r\n\t\t\t\tlocalNSMap = {}\r\n\t\t\t\t//console.log(currentNSMap,0)\r\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\r\n\t\t\t\t//console.log(currentNSMap,1)\r\n\t\t\t}\r\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\r\n\t\t\ta.uri = 'http://www.w3.org/2000/xmlns/'\r\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value) \r\n\t\t}\r\n\t}\r\n\tvar i = el.length;\r\n\twhile(i--){\r\n\t\ta = el[i];\r\n\t\tvar prefix = a.prefix;\r\n\t\tif(prefix){//no prefix attribute has no namespace\r\n\t\t\tif(prefix === 'xml'){\r\n\t\t\t\ta.uri = 'http://www.w3.org/XML/1998/namespace';\r\n\t\t\t}if(prefix !== 'xmlns'){\r\n\t\t\t\ta.uri = currentNSMap[prefix || '']\r\n\t\t\t\t\r\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tvar nsp = tagName.indexOf(':');\r\n\tif(nsp>0){\r\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\r\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\r\n\t}else{\r\n\t\tprefix = null;//important!!\r\n\t\tlocalName = el.localName = tagName;\r\n\t}\r\n\t//no prefix element has default namespace\r\n\tvar ns = el.uri = currentNSMap[prefix || ''];\r\n\tdomBuilder.startElement(ns,localName,tagName,el);\r\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\r\n\t//localNSMap = null\r\n\tif(el.closed){\r\n\t\tdomBuilder.endElement(ns,localName,tagName);\r\n\t\tif(localNSMap){\r\n\t\t\tfor(prefix in localNSMap){\r\n\t\t\t\tdomBuilder.endPrefixMapping(prefix) \r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tel.currentNSMap = currentNSMap;\r\n\t\tel.localNSMap = localNSMap;\r\n\t\t//parseStack.push(el);\r\n\t\treturn true;\r\n\t}\r\n}\r\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\r\n\tif(/^(?:script|textarea)$/i.test(tagName)){\r\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\r\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\r\n\t\tif(/[&<]/.test(text)){\r\n\t\t\tif(/^script$/i.test(tagName)){\r\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\r\n\t\t\t\t\t//lexHandler.startCDATA();\r\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\r\n\t\t\t\t\t//lexHandler.endCDATA();\r\n\t\t\t\t\treturn elEndStart;\r\n\t\t\t\t//}\r\n\t\t\t}//}else{//text area\r\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\tdomBuilder.characters(text,0,text.length);\r\n\t\t\t\treturn elEndStart;\r\n\t\t\t//}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\treturn elStartEnd+1;\r\n}\r\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\r\n\t//if(tagName in closeMap){\r\n\tvar pos = closeMap[tagName];\r\n\tif(pos == null){\r\n\t\t//console.log(tagName)\r\n\t\tpos = source.lastIndexOf('')\r\n\t\tif(pos',start+4);\r\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM \"',sysid,'\">');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i','amp':'&','quot':'\"','apos':\"'\"}\r\n\tif(locator){\r\n\t\tdomBuilder.setDocumentLocator(locator)\r\n\t}\r\n\t\r\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\r\n\tsax.domBuilder = options.domBuilder || domBuilder;\r\n\tif(/\\/x?html?$/.test(mimeType)){\r\n\t\tentityMap.nbsp = '\\xa0';\r\n\t\tentityMap.copy = '\\xa9';\r\n\t\tdefaultNSMap['']= 'http://www.w3.org/1999/xhtml';\r\n\t}\r\n\tdefaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace';\r\n\tif(source){\r\n\t\tsax.parse(source,defaultNSMap,entityMap);\r\n\t}else{\r\n\t\tsax.errorHandler.error(\"invalid doc source\");\r\n\t}\r\n\treturn domBuilder.doc;\r\n}\r\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\r\n\tif(!errorImpl){\r\n\t\tif(domBuilder instanceof DOMHandler){\r\n\t\t\treturn domBuilder;\r\n\t\t}\r\n\t\terrorImpl = domBuilder ;\r\n\t}\r\n\tvar errorHandler = {}\r\n\tvar isCallback = errorImpl instanceof Function;\r\n\tlocator = locator||{}\r\n\tfunction build(key){\r\n\t\tvar fn = errorImpl[key];\r\n\t\tif(!fn && isCallback){\r\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\r\n\t\t}\r\n\t\terrorHandler[key] = fn && function(msg){\r\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\r\n\t\t}||function(){};\r\n\t}\r\n\tbuild('warning');\r\n\tbuild('error');\r\n\tbuild('fatalError');\r\n\treturn errorHandler;\r\n}\r\n\r\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\r\n/**\r\n * +ContentHandler+ErrorHandler\r\n * +LexicalHandler+EntityResolver2\r\n * -DeclHandler-DTDHandler \r\n * \r\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\r\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\r\n */\r\nfunction DOMHandler() {\r\n this.cdata = false;\r\n}\r\nfunction position(locator,node){\r\n\tnode.lineNumber = locator.lineNumber;\r\n\tnode.columnNumber = locator.columnNumber;\r\n}\r\n/**\r\n * @see org.xml.sax.ContentHandler#startDocument\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\r\n */ \r\nDOMHandler.prototype = {\r\n\tstartDocument : function() {\r\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\r\n \tif (this.locator) {\r\n \tthis.doc.documentURI = this.locator.systemId;\r\n \t}\r\n\t},\r\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\r\n\t\tvar doc = this.doc;\r\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\r\n\t var len = attrs.length;\r\n\t appendElement(this, el);\r\n\t this.currentElement = el;\r\n\t \r\n\t\tthis.locator && position(this.locator,el)\r\n\t for (var i = 0 ; i < len; i++) {\r\n\t var namespaceURI = attrs.getURI(i);\r\n\t var value = attrs.getValue(i);\r\n\t var qName = attrs.getQName(i);\r\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\r\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\r\n\t\t\tattr.value = attr.nodeValue = value;\r\n\t\t\tel.setAttributeNode(attr)\r\n\t }\r\n\t},\r\n\tendElement:function(namespaceURI, localName, qName) {\r\n\t\tvar current = this.currentElement\r\n\t\tvar tagName = current.tagName;\r\n\t\tthis.currentElement = current.parentNode;\r\n\t},\r\n\tstartPrefixMapping:function(prefix, uri) {\r\n\t},\r\n\tendPrefixMapping:function(prefix) {\r\n\t},\r\n\tprocessingInstruction:function(target, data) {\r\n\t var ins = this.doc.createProcessingInstruction(target, data);\r\n\t this.locator && position(this.locator,ins)\r\n\t appendElement(this, ins);\r\n\t},\r\n\tignorableWhitespace:function(ch, start, length) {\r\n\t},\r\n\tcharacters:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t\t//console.log(chars)\r\n\t\tif(chars){\r\n\t\t\tif (this.cdata) {\r\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\r\n\t\t\t} else {\r\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\r\n\t\t\t}\r\n\t\t\tif(this.currentElement){\r\n\t\t\t\tthis.currentElement.appendChild(charNode);\r\n\t\t\t}else if(/^\\s*$/.test(chars)){\r\n\t\t\t\tthis.doc.appendChild(charNode);\r\n\t\t\t\t//process xml\r\n\t\t\t}\r\n\t\t\tthis.locator && position(this.locator,charNode)\r\n\t\t}\r\n\t},\r\n\tskippedEntity:function(name) {\r\n\t},\r\n\tendDocument:function() {\r\n\t\tthis.doc.normalize();\r\n\t},\r\n\tsetDocumentLocator:function (locator) {\r\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\r\n\t \tlocator.lineNumber = 0;\r\n\t }\r\n\t},\r\n\t//LexicalHandler\r\n\tcomment:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t var comm = this.doc.createComment(chars);\r\n\t this.locator && position(this.locator,comm)\r\n\t appendElement(this, comm);\r\n\t},\r\n\t\r\n\tstartCDATA:function() {\r\n\t //used in characters() methods\r\n\t this.cdata = true;\r\n\t},\r\n\tendCDATA:function() {\r\n\t this.cdata = false;\r\n\t},\r\n\t\r\n\tstartDTD:function(name, publicId, systemId) {\r\n\t\tvar impl = this.doc.implementation;\r\n\t if (impl && impl.createDocumentType) {\r\n\t var dt = impl.createDocumentType(name, publicId, systemId);\r\n\t this.locator && position(this.locator,dt)\r\n\t appendElement(this, dt);\r\n\t }\r\n\t},\r\n\t/**\r\n\t * @see org.xml.sax.ErrorHandler\r\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\r\n\t */\r\n\twarning:function(error) {\r\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\r\n\t},\r\n\terror:function(error) {\r\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\r\n\t},\r\n\tfatalError:function(error) {\r\n\t\tconsole.error('[xmldom fatalError]\\t'+error,_locator(this.locator));\r\n\t throw error;\r\n\t}\r\n}\r\nfunction _locator(l){\r\n\tif(l){\r\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\r\n\t}\r\n}\r\nfunction _toString(chars,start,length){\r\n\tif(typeof chars == 'string'){\r\n\t\treturn chars.substr(start,length)\r\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\r\n\t\tif(chars.length >= start+length || start){\r\n\t\t\treturn new java.lang.String(chars,start,length)+'';\r\n\t\t}\r\n\t\treturn chars;\r\n\t}\r\n}\r\n\r\n/*\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\r\n * used method of org.xml.sax.ext.LexicalHandler:\r\n * #comment(chars, start, length)\r\n * #startCDATA()\r\n * #endCDATA()\r\n * #startDTD(name, publicId, systemId)\r\n *\r\n *\r\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\r\n * #endDTD()\r\n * #startEntity(name)\r\n * #endEntity(name)\r\n *\r\n *\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\r\n * IGNORED method of org.xml.sax.ext.DeclHandler\r\n * \t#attributeDecl(eName, aName, type, mode, value)\r\n * #elementDecl(name, model)\r\n * #externalEntityDecl(name, publicId, systemId)\r\n * #internalEntityDecl(name, value)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\r\n * IGNORED method of org.xml.sax.EntityResolver2\r\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\r\n * #resolveEntity(publicId, systemId)\r\n * #getExternalSubset(name, baseURI)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\r\n * IGNORED method of org.xml.sax.DTDHandler\r\n * #notationDecl(name, publicId, systemId) {};\r\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\r\n */\r\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\r\n\tDOMHandler.prototype[key] = function(){return null}\r\n})\r\n\r\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\r\nfunction appendElement (hander,node) {\r\n if (!hander.currentElement) {\r\n hander.doc.appendChild(node);\r\n } else {\r\n hander.currentElement.appendChild(node);\r\n }\r\n}//appendChild and setAttributeNS are preformance key\r\n\r\n//if(typeof require == 'function'){\r\n\tvar XMLReader = require('./sax').XMLReader;\r\n\tvar DOMImplementation = exports.DOMImplementation = require('./dom').DOMImplementation;\r\n\texports.XMLSerializer = require('./dom').XMLSerializer ;\r\n\texports.DOMParser = DOMParser;\r\n//}\r\n", "/**\n * Module dependencies.\n */\n\nvar DOMParser = require('xmldom').DOMParser;\n\n/**\n * Module exports.\n */\n\nexports.parse = parse;\n\nvar TEXT_NODE = 3;\nvar CDATA_NODE = 4;\nvar COMMENT_NODE = 8;\n\n\n/**\n * We ignore raw text (usually whitespace), ,\n * and raw CDATA nodes.\n *\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\n\nfunction shouldIgnoreNode (node) {\n return node.nodeType === TEXT_NODE\n || node.nodeType === COMMENT_NODE\n || node.nodeType === CDATA_NODE;\n}\n\n/**\n * Check if the node is empty. Some plist file has such node:\n * \n * this node shoud be ignored.\n *\n * @see https://github.com/TooTallNate/plist.js/issues/66\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\nfunction isEmptyNode(node){\n if(!node.childNodes || node.childNodes.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction invariant(test, message) {\n if (!test) {\n throw new Error(message);\n }\n}\n\n/**\n * Parses a Plist XML string. Returns an Object.\n *\n * @param {String} xml - the XML String to decode\n * @returns {Mixed} the decoded value from the Plist XML\n * @api public\n */\n\nfunction parse (xml) {\n var doc = new DOMParser().parseFromString(xml);\n invariant(\n doc.documentElement.nodeName === 'plist',\n 'malformed document. First element should be '\n );\n var plist = parsePlistXML(doc.documentElement);\n\n // the root node gets interpreted as an Array,\n // so pull out the inner data first\n if (plist.length == 1) plist = plist[0];\n\n return plist;\n}\n\n/**\n * Convert an XML based plist document into a JSON representation.\n *\n * @param {Object} xml_node - current XML node in the plist\n * @returns {Mixed} built up JSON object\n * @api private\n */\n\nfunction parsePlistXML (node) {\n var i, new_obj, key, val, new_arr, res, counter, type;\n\n if (!node)\n return null;\n\n if (node.nodeName === 'plist') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n new_arr.push( parsePlistXML(node.childNodes[i]));\n }\n }\n return new_arr;\n } else if (node.nodeName === 'dict') {\n new_obj = {};\n key = null;\n counter = 0;\n if (isEmptyNode(node)) {\n return new_obj;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (shouldIgnoreNode(node.childNodes[i])) continue;\n if (counter % 2 === 0) {\n invariant(\n node.childNodes[i].nodeName === 'key',\n 'Missing key while parsing .'\n );\n key = parsePlistXML(node.childNodes[i]);\n } else {\n invariant(\n node.childNodes[i].nodeName !== 'key',\n 'Unexpected key \"'\n + parsePlistXML(node.childNodes[i])\n + '\" while parsing .'\n );\n new_obj[key] = parsePlistXML(node.childNodes[i]);\n }\n counter += 1;\n }\n if (counter % 2 === 1) {\n throw new Error('Missing value for \"' + key + '\" while parsing ');\n }\n return new_obj;\n\n } else if (node.nodeName === 'array') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n res = parsePlistXML(node.childNodes[i]);\n if (null != res) new_arr.push(res);\n }\n }\n return new_arr;\n\n } else if (node.nodeName === '#text') {\n // TODO: what should we do with text types? (CDATA sections)\n\n } else if (node.nodeName === 'key') {\n if (isEmptyNode(node)) {\n return '';\n }\n return node.childNodes[0].nodeValue;\n } else if (node.nodeName === 'string') {\n res = '';\n if (isEmptyNode(node)) {\n return res;\n }\n for (i=0; i < node.childNodes.length; i++) {\n var type = node.childNodes[i].nodeType;\n if (type === TEXT_NODE || type === CDATA_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return res;\n\n } else if (node.nodeName === 'integer') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as integer.'\n );\n return parseInt(node.childNodes[0].nodeValue, 10);\n\n } else if (node.nodeName === 'real') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as real.'\n );\n res = '';\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return parseFloat(res);\n\n } else if (node.nodeName === 'data') {\n res = '';\n if (isEmptyNode(node)) {\n return Buffer.from(res, 'base64');\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue.replace(/\\s+/g, '');\n }\n }\n return Buffer.from(res, 'base64');\n\n } else if (node.nodeName === 'date') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as Date.'\n )\n return new Date(node.childNodes[0].nodeValue);\n\n } else if (node.nodeName === 'true') {\n return true;\n\n } else if (node.nodeName === 'false') {\n return false;\n }\n}\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var assign, isArray, isEmpty, isFunction, isObject, isPlainObject,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute;\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n if (name == null) {\n throw new Error(\"Missing attribute name of element \" + parent.name);\n }\n if (value == null) {\n throw new Error(\"Missing attribute value for attribute \" + name + \" of element \" + parent.name);\n }\n this.name = this.stringify.attName(name);\n this.value = this.stringify.attValue(value);\n }\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.set(options).attribute(this);\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLElement, XMLNode, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction;\n\n XMLNode = require('./XMLNode');\n\n XMLAttribute = require('./XMLAttribute');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name\");\n }\n this.name = this.stringify.eleName(name);\n this.attributes = {};\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.isDocument) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n }\n }\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attributes = {};\n ref1 = this.attributes;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attributes[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, i, len;\n if (name == null) {\n throw new Error(\"Missing attribute name\");\n }\n name = name.valueOf();\n if (Array.isArray(name)) {\n for (i = 0, len = name.length; i < len; i++) {\n attName = name[i];\n delete this.attributes[attName];\n }\n } else {\n delete this.attributes[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.set(options).element(this);\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text\");\n }\n this.text = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.set(options).cdata(this);\n };\n\n return XMLCData;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLComment, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text\");\n }\n this.text = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.set(options).comment(this);\n };\n\n return XMLComment;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.set(options).declaration(this);\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name\");\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type\");\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default\");\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT\");\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT\");\n }\n this.elementName = this.stringify.eleName(elementName);\n this.attributeName = this.stringify.attName(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdAttList(this);\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing entity name\");\n }\n if (value == null) {\n throw new Error(\"Missing entity value\");\n }\n this.pe = !!pe;\n this.name = this.stringify.eleName(name);\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity\");\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity\");\n }\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity\");\n }\n }\n }\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdEntity(this);\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.eleName(name);\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdElement(this);\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing notation name\");\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity\");\n }\n this.name = this.stringify.eleName(name);\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdNotation(this);\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var ref, ref1;\n XMLDocType.__super__.constructor.call(this, parent);\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref = pubID, pubID = ref.pubID, sysID = ref.sysID;\n }\n if (sysID == null) {\n ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.set(options).docType(this);\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text\");\n }\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.set(options).raw(this);\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLText = (function(superClass) {\n extend(XMLText, superClass);\n\n function XMLText(parent, text) {\n XMLText.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing element text\");\n }\n this.value = this.stringify.eleText(text);\n }\n\n XMLText.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLText.prototype.toString = function(options) {\n return this.options.writer.set(options).text(this);\n };\n\n return XMLText;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target\");\n }\n this.target = this.stringify.insTarget(target);\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.set(options).processingInstruction(this);\n };\n\n return XMLProcessingInstruction;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLProcessingInstruction, XMLRaw, XMLText, isEmpty, isFunction, isObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isEmpty = ref.isEmpty;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.children = [];\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n }\n }\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref1, val;\n lastChild = null;\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if ((isObject(val)) && (isEmpty(val))) {\n val = null;\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n lastChild = this.element(key);\n lastChild.element(val);\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name);\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref1;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element\");\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref1 = [])), ref1;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref1;\n if (name != null) {\n name = name.valueOf();\n }\n attributes || (attributes = {});\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children[0] instanceof XMLDeclaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.doctype = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref1, ref2;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref1 = doc.children;\n for (i = j = 0, len = ref1.length; j < len; i = ++j) {\n child = ref1[i];\n if (child instanceof XMLDocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref2 = doc.children;\n for (i = k = 0, len1 = ref2.length; k < len1; i = ++k) {\n child = ref2[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node\");\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node\");\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n return this.doctype(pubID, sysID);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringifier,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref, value;\n options || (options = {});\n this.noDoubleEncoding = options.noDoubleEncoding;\n ref = options.stringify || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.eleName = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.eleText = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(this.elEscape(val));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n val = '' + val || '';\n val = val.replace(']]>', ']]]]>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attName = function(val) {\n return val = '' + val || '';\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n val = '' + val || '';\n return this.attEscape(val);\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (val != null) {\n return '' + val || '';\n } else {\n return val;\n }\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var res;\n res = str.match(/[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/);\n if (res) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n return str;\n };\n\n XMLStringifier.prototype.elEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(//g, '>').replace(/\\r/g, ' ');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/ 0) {\n return new Array(indent).join(this.indent);\n } else {\n return '';\n }\n } else {\n return '';\n }\n };\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc) {\n var child, i, len, r, ref;\n this.textispresent = false;\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDeclaration):\n return this.declaration(child);\n case !(child instanceof XMLDocType):\n return this.docType(child);\n case !(child instanceof XMLComment):\n return this.comment(child);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child);\n default:\n return this.element(child, 0);\n }\n }).call(this);\n }\n if (this.pretty && r.slice(-this.newline.length) === this.newline) {\n r = r.slice(0, -this.newline.length);\n }\n return r;\n };\n\n XMLStringWriter.prototype.attribute = function(att) {\n return ' ' + att.name + '=\"' + att.value + '\"';\n };\n\n XMLStringWriter.prototype.cdata = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.comment = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.declaration = function(node, level) {\n var r;\n r = this.space(level);\n r += '';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.docType = function(node, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n r = this.space(level);\n r += ' 0) {\n r += ' [';\n r += this.newline;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n return this.dtdAttList(child, level + 1);\n case !(child instanceof XMLDTDElement):\n return this.dtdElement(child, level + 1);\n case !(child instanceof XMLDTDEntity):\n return this.dtdEntity(child, level + 1);\n case !(child instanceof XMLDTDNotation):\n return this.dtdNotation(child, level + 1);\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n r += ']';\n }\n r += this.spacebeforeslash + '>';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.element = function(node, level) {\n var att, child, i, j, len, len1, name, r, ref, ref1, ref2, space, textispresentwasset;\n level || (level = 0);\n textispresentwasset = false;\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n } else {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n space = this.space(level);\n r = '';\n r += space + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n r += '>' + this.newline;\n } else {\n r += this.spacebeforeslash + '/>' + this.newline;\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n r += '>';\n r += node.children[0].value;\n r += '' + this.newline;\n } else {\n if (this.dontprettytextnodes) {\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n if (child.value != null) {\n this.textispresent++;\n textispresentwasset = true;\n break;\n }\n }\n }\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n space = this.space(level);\n }\n r += '>' + this.newline;\n ref2 = node.children;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n child = ref2[j];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLElement):\n return this.element(child, level + 1);\n case !(child instanceof XMLRaw):\n return this.raw(child, level + 1);\n case !(child instanceof XMLText):\n return this.text(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n if (textispresentwasset) {\n this.textispresent--;\n }\n if (!this.textispresent) {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n r += space + '' + this.newline;\n }\n return r;\n };\n\n XMLStringWriter.prototype.processingInstruction = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.raw = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.text = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.dtdAttList = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdElement = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.dtdEntity = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdNotation = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.openNode = function(node, level) {\n var att, name, r, ref;\n level || (level = 0);\n if (node instanceof XMLElement) {\n r = this.space(level) + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n r += (node.children ? '>' : '/>') + this.newline;\n return r;\n } else {\n r = this.space(level) + '') + this.newline;\n return r;\n }\n };\n\n XMLStringWriter.prototype.closeNode = function(node, level) {\n level || (level = 0);\n switch (false) {\n case !(node instanceof XMLElement):\n return this.space(level) + '' + this.newline;\n case !(node instanceof XMLDocType):\n return this.space(level) + ']>' + this.newline;\n }\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLNode = require('./XMLNode');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n this.isDocument = true;\n }\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer.set(writerOptions);\n }\n return writer.document(this);\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.set(options).document(this);\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject;\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter(options);\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter(writerOptions);\n }\n this.options = options;\n this.writer = options.writer;\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node\");\n }\n this.openCurrent();\n name = name.valueOf();\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.dtdElement.apply(this, arguments);\n } else {\n return this.node(name, attributes, text);\n }\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode\");\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.currentNode.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.currentLevel + 1));\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node instanceof XMLElement) {\n this.root = node;\n }\n this.onData(this.writer.openNode(node, this.currentLevel));\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n if (!node.isClosed) {\n this.onData(this.writer.closeNode(node, this.currentLevel));\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk) {\n this.documentStarted = true;\n return this.onDataCallback(chunk);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStreamWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n XMLStreamWriter.__super__.constructor.call(this, options);\n this.stream = stream;\n }\n\n XMLStreamWriter.prototype.document = function(doc) {\n var child, i, j, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n child.isLastRootNode = false;\n }\n doc.children[doc.children.length - 1].isLastRootNode = true;\n ref1 = doc.children;\n results = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n child = ref1[j];\n switch (false) {\n case !(child instanceof XMLDeclaration):\n results.push(this.declaration(child));\n break;\n case !(child instanceof XMLDocType):\n results.push(this.docType(child));\n break;\n case !(child instanceof XMLComment):\n results.push(this.comment(child));\n break;\n case !(child instanceof XMLProcessingInstruction):\n results.push(this.processingInstruction(child));\n break;\n default:\n results.push(this.element(child));\n }\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att) {\n return this.stream.write(' ' + att.name + '=\"' + att.value + '\"');\n };\n\n XMLStreamWriter.prototype.cdata = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.comment = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, level) {\n this.stream.write(this.space(level));\n this.stream.write('');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.docType = function(node, level) {\n var child, i, len, ref;\n level || (level = 0);\n this.stream.write(this.space(level));\n this.stream.write(' 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node));\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n this.dtdAttList(child, level + 1);\n break;\n case !(child instanceof XMLDTDElement):\n this.dtdElement(child, level + 1);\n break;\n case !(child instanceof XMLDTDEntity):\n this.dtdEntity(child, level + 1);\n break;\n case !(child instanceof XMLDTDNotation):\n this.dtdNotation(child, level + 1);\n break;\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }\n this.stream.write(']');\n }\n this.stream.write(this.spacebeforeslash + '>');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.element = function(node, level) {\n var att, child, i, len, name, ref, ref1, space;\n level || (level = 0);\n space = this.space(level);\n this.stream.write(space + '<' + node.name);\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n this.stream.write('>');\n } else {\n this.stream.write(this.spacebeforeslash + '/>');\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n this.stream.write('>');\n this.stream.write(node.children[0].value);\n this.stream.write('');\n } else {\n this.stream.write('>' + this.newline);\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n switch (false) {\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLElement):\n this.element(child, level + 1);\n break;\n case !(child instanceof XMLRaw):\n this.raw(child, level + 1);\n break;\n case !(child instanceof XMLText):\n this.text(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }\n this.stream.write(space + '');\n }\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.raw = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.text = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.endline = function(node) {\n if (!node.isLastRootNode) {\n return this.newline;\n } else {\n return '';\n }\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.doctype(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n}).call(this);\n", "/**\n * Module dependencies.\n */\n\nvar base64 = require('base64-js');\nvar xmlbuilder = require('xmlbuilder');\n\n/**\n * Module exports.\n */\n\nexports.build = build;\n\n/**\n * Accepts a `Date` instance and returns an ISO date string.\n *\n * @param {Date} d - Date instance to serialize\n * @returns {String} ISO date string representation of `d`\n * @api private\n */\n\nfunction ISODateString(d){\n function pad(n){\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear()+'-'\n + pad(d.getUTCMonth()+1)+'-'\n + pad(d.getUTCDate())+'T'\n + pad(d.getUTCHours())+':'\n + pad(d.getUTCMinutes())+':'\n + pad(d.getUTCSeconds())+'Z';\n}\n\n/**\n * Returns the internal \"type\" of `obj` via the\n * `Object.prototype.toString()` trick.\n *\n * @param {Mixed} obj - any value\n * @returns {String} the internal \"type\" name\n * @api private\n */\n\nvar toString = Object.prototype.toString;\nfunction type (obj) {\n var m = toString.call(obj).match(/\\[object (.*)\\]/);\n return m ? m[1] : m;\n}\n\n/**\n * Generate an XML plist string from the input object `obj`.\n *\n * @param {Object} obj - the object to convert\n * @param {Object} [opts] - optional options object\n * @returns {String} converted plist XML string\n * @api public\n */\n\nfunction build (obj, opts) {\n var XMLHDR = {\n version: '1.0',\n encoding: 'UTF-8'\n };\n\n var XMLDTD = {\n pubid: '-//Apple//DTD PLIST 1.0//EN',\n sysid: 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'\n };\n\n var doc = xmlbuilder.create('plist');\n\n doc.dec(XMLHDR.version, XMLHDR.encoding, XMLHDR.standalone);\n doc.dtd(XMLDTD.pubid, XMLDTD.sysid);\n doc.att('version', '1.0');\n\n walk_obj(obj, doc);\n\n if (!opts) opts = {};\n // default `pretty` to `true`\n opts.pretty = opts.pretty !== false;\n return doc.end(opts);\n}\n\n/**\n * depth first, recursive traversal of a javascript object. when complete,\n * next_child contains a reference to the build XML object.\n *\n * @api private\n */\n\nfunction walk_obj(next, next_child) {\n var tag_type, i, prop;\n var name = type(next);\n\n if ('Undefined' == name) {\n return;\n } else if (Array.isArray(next)) {\n next_child = next_child.ele('array');\n for (i = 0; i < next.length; i++) {\n walk_obj(next[i], next_child);\n }\n\n } else if (Buffer.isBuffer(next)) {\n next_child.ele('data').raw(next.toString('base64'));\n\n } else if ('Object' == name) {\n next_child = next_child.ele('dict');\n for (prop in next) {\n if (next.hasOwnProperty(prop)) {\n next_child.ele('key').txt(prop);\n walk_obj(next[prop], next_child);\n }\n }\n\n } else if ('Number' == name) {\n // detect if this is an integer or real\n // TODO: add an ability to force one way or another via a \"cast\"\n tag_type = (next % 1 === 0) ? 'integer' : 'real';\n next_child.ele(tag_type).txt(next.toString());\n\n } else if ('Date' == name) {\n next_child.ele('date').txt(ISODateString(new Date(next)));\n\n } else if ('Boolean' == name) {\n next_child.ele(next ? 'true' : 'false');\n\n } else if ('String' == name) {\n next_child.ele('string').txt(next);\n\n } else if ('ArrayBuffer' == name) {\n next_child.ele('data').raw(base64.fromByteArray(next));\n\n } else if (next && next.buffer && 'ArrayBuffer' == type(next.buffer)) {\n // a typed array\n next_child.ele('data').raw(base64.fromByteArray(new Uint8Array(next.buffer), next_child));\n\n }\n}\n", "/**\n * Parser functions.\n */\n\nvar parserFunctions = require('./lib/parse');\nObject.keys(parserFunctions).forEach(function (k) { exports[k] = parserFunctions[k]; });\n\n/**\n * Builder functions.\n */\n\nvar builderFunctions = require('./lib/build');\nObject.keys(builderFunctions).forEach(function (k) { exports[k] = builderFunctions[k]; });\n", "const bplistParser = require('bplist-parser')\nconst bplistCreator = require('bplist-creator')\nconst plist = require('plist')\nconst fs = require('fs')\n\nfunction parse(aStringOrBuffer, aFile) {\n const firstByte = aStringOrBuffer[0]\n let results\n try {\n if (firstByte === 60 || firstByte === '<') {\n results = plist.parse(aStringOrBuffer.toString())\n } else if (firstByte === 98) {\n ;[results] = bplistParser.parseBuffer(aStringOrBuffer)\n } else if (aFile != null) {\n throw new Error(`Unable to determine format for '${aFile}'`)\n } else {\n throw new Error('Unable to determine format for plist aStringOrBuffer')\n }\n } catch (error) {\n throw new Error(error)\n }\n return results\n}\n\nfunction readFileSync(aFile) {\n const contents = fs.readFileSync(aFile)\n if (contents.length === 0) {\n return {}\n }\n return parse(contents, aFile)\n}\n\nfunction readFile(aFile, callback) {\n fs.readFile(aFile, (err, contents) => {\n if (err) {\n return callback(err)\n }\n let results\n try {\n results = parse(contents, aFile)\n } catch (error) {\n return callback(error)\n }\n\n return callback(null, results)\n })\n}\n\nfunction writeFileSync(aFile, anObject, options) {\n const data = plist.build(anObject)\n return fs.writeFileSync(aFile, data, options)\n}\n\nfunction writeFile(aFile, anObject, options, callback) {\n if (arguments.length === 3 && typeof options === 'function') {\n fs.writeFile(aFile, plist.build(anObject), options)\n } else {\n fs.writeFile(aFile, plist.build(anObject), options, callback)\n }\n}\n\nfunction writeBinaryFileSync(aFile, anObject, options) {\n return fs.writeFileSync(aFile, bplistCreator(anObject), options)\n}\n\nfunction writeBinaryFile(aFile, anObject, options, callback) {\n if (arguments.length === 3 && typeof options === 'function') {\n fs.writeFile(aFile, bplistCreator(anObject), options)\n } else {\n fs.writeFile(aFile, bplistCreator(anObject), options, callback)\n }\n}\n\nfunction stringify(anObject) {\n return plist.build(anObject)\n}\n\nmodule.exports = {\n bplistCreator,\n bplistParser,\n parse,\n plist,\n readFile,\n readFileSync,\n stringify,\n writeBinaryFile,\n writeBinaryFileSync,\n writeFile,\n writeFileSync,\n}\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n", "module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n", "module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n", "'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n", "var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n", "module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n", "exports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n", "module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n", "// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n", "const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan \n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst os = require('os');\nconst path = require('path');\nconst crypto = require('crypto');\nconst _c = { fs: fs.constants, os: os.constants };\nconst rimraf = require('rimraf');\n\n/*\n * The working inner variables.\n */\nconst\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n // constants are off on the windows platform and will not match the actual errno codes\n IS_WIN32 = os.platform() === 'win32',\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 0o700 /* 448 */,\n FILE_MODE = 0o600 /* 384 */,\n\n EXIT = 'exit',\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [],\n\n // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback\n FN_RMDIR_SYNC = fs.rmdirSync.bind(fs),\n FN_RIMRAF_SYNC = rimraf.sync;\n\nlet\n _gracefulCleanup = false;\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n try {\n _assertAndSanitizeOptions(opts);\n } catch (err) {\n return cb(err);\n }\n\n let tries = opts.tries;\n (function _getUniqueName() {\n try {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n /* istanbul ignore else */\n if (!err) {\n /* istanbul ignore else */\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n } catch (err) {\n cb(err);\n }\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n _assertAndSanitizeOptions(opts);\n\n let tries = opts.tries;\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n /* istanbu ignore else */\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(possibleErr) {\n // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only\n return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false));\n });\n } else {\n // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care\n // about the descriptor\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false));\n }\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n /* istanbul ignore else */\n if (opts.discardDescriptor) {\n fs.closeSync(fd);\n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true)\n };\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)\n };\n}\n\n/**\n * Removes files asynchronously.\n *\n * @param {Object} fdPath\n * @param {Function} next\n * @private\n */\nfunction _removeFileAsync(fdPath, next) {\n const _handler = function (err) {\n if (err && !_isENOENT(err)) {\n // reraise any unanticipated error\n return next(err);\n }\n next();\n };\n\n if (0 <= fdPath[0])\n fs.close(fdPath[0], function () {\n fs.unlink(fdPath[1], _handler);\n });\n else fs.unlink(fdPath[1], _handler);\n}\n\n/**\n * Removes files synchronously.\n *\n * @param {Object} fdPath\n * @private\n */\nfunction _removeFileSync(fdPath) {\n let rethrownException = null;\n try {\n if (0 <= fdPath[0]) fs.closeSync(fdPath[0]);\n } catch (e) {\n // reraise any unanticipated error\n if (!_isEBADF(e) && !_isENOENT(e)) throw e;\n } finally {\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n // reraise any unanticipated error\n if (!_isENOENT(e)) rethrownException = e;\n }\n }\n if (rethrownException !== null) {\n throw rethrownException;\n }\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * Returns either a sync callback or a async callback depending on whether\n * fileSync or file was called, which is expressed by the sync parameter.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {fileCallback | fileCallbackSync}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts, sync) {\n const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync);\n const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync);\n\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * Returns either a sync callback or a async callback depending on whether\n * tmpFileSync or tmpFile was called, which is expressed by the sync parameter.\n *\n * @param {string} name\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts, sync) {\n const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs);\n const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;\n const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);\n const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * The cleanup callback is save to be called multiple times.\n * Subsequent invocations will be ignored.\n *\n * @param {Function} removeFunction\n * @param {string} fileOrDirName\n * @param {boolean} sync\n * @param {cleanupCallbackSync?} cleanupCallbackSync\n * @returns {cleanupCallback | cleanupCallbackSync}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) {\n let called = false;\n\n // if sync is true, the next parameter will be ignored\n return function _cleanupCallback(next) {\n\n /* istanbul ignore else */\n if (!called) {\n // remove cleanupCallback from cache\n const toRemove = cleanupCallbackSync || _cleanupCallback;\n const index = _removeObjects.indexOf(toRemove);\n /* istanbul ignore else */\n if (index >= 0) _removeObjects.splice(index, 1);\n\n called = true;\n if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {\n return removeFunction(fileOrDirName);\n } else {\n return removeFunction(fileOrDirName, next || function() {});\n }\n }\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n /* istanbul ignore else */\n if (!_gracefulCleanup) return;\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0]();\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n let\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Helper which determines whether a string s is blank, that is undefined, or empty or null.\n *\n * @private\n * @param {string} s\n * @returns {Boolean} true whether the string s is blank, false otherwise\n */\nfunction _isBlank(s) {\n return s === null || _isUndefined(s) || !s.trim();\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|null|undefined|Function)} options\n * @param {?Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n /* istanbul ignore else */\n if (typeof options === 'function') {\n return [{}, options];\n }\n\n /* istanbul ignore else */\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n // copy options so we do not leak the changes we make internally\n const actualOptions = {};\n for (const key of Object.getOwnPropertyNames(options)) {\n actualOptions[key] = options[key];\n }\n\n return [actualOptions, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n\n const tmpDir = opts.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.name))\n return path.join(tmpDir, opts.dir, opts.name);\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.template))\n return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));\n\n // prefix and postfix\n const name = [\n opts.prefix ? opts.prefix : 'tmp',\n '-',\n process.pid,\n '-',\n _randomChars(12),\n opts.postfix ? '-' + opts.postfix : ''\n ].join('');\n\n return path.join(tmpDir, opts.dir, name);\n}\n\n/**\n * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing\n * options.\n *\n * @param {Options} options\n * @private\n */\nfunction _assertAndSanitizeOptions(options) {\n\n options.tmpdir = _getTmpDir(options);\n\n const tmpDir = options.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(options.name))\n _assertIsRelative(options.name, 'name', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.dir))\n _assertIsRelative(options.dir, 'dir', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.template)) {\n _assertIsRelative(options.template, 'template', tmpDir);\n if (!options.template.match(TEMPLATE_PATTERN))\n throw new Error(`Invalid template, found \"${options.template}\".`);\n }\n /* istanbul ignore else */\n if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)\n throw new Error(`Invalid tries, found \"${options.tries}\".`);\n\n // if a name was specified we will try once\n options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;\n options.keep = !!options.keep;\n options.detachDescriptor = !!options.detachDescriptor;\n options.discardDescriptor = !!options.discardDescriptor;\n options.unsafeCleanup = !!options.unsafeCleanup;\n\n // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));\n options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));\n // sanitize further if template is relative to options.dir\n options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);\n\n // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.name = _isUndefined(options.name) ? undefined : _sanitizeName(options.name);\n options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;\n options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;\n}\n\n/**\n * Resolve the specified path name in respect to tmpDir.\n *\n * The specified name might include relative path components, e.g. ../\n * so we need to resolve in order to be sure that is is located inside tmpDir\n *\n * @param name\n * @param tmpDir\n * @returns {string}\n * @private\n */\nfunction _resolvePath(name, tmpDir) {\n const sanitizedName = _sanitizeName(name);\n if (sanitizedName.startsWith(tmpDir)) {\n return path.resolve(sanitizedName);\n } else {\n return path.resolve(path.join(tmpDir, sanitizedName));\n }\n}\n\n/**\n * Sanitize the specified path name by removing all quote characters.\n *\n * @param name\n * @returns {string}\n * @private\n */\nfunction _sanitizeName(name) {\n if (_isBlank(name)) {\n return name;\n }\n return name.replace(/[\"']/g, '');\n}\n\n/**\n * Asserts whether specified name is relative to the specified tmpDir.\n *\n * @param {string} name\n * @param {string} option\n * @param {string} tmpDir\n * @throws {Error}\n * @private\n */\nfunction _assertIsRelative(name, option, tmpDir) {\n if (option === 'name') {\n // assert that name is not absolute and does not contain a path\n if (path.isAbsolute(name))\n throw new Error(`${option} option must not contain an absolute path, found \"${name}\".`);\n // must not fail on valid . or .. or similar such constructs\n let basename = path.basename(name);\n if (basename === '..' || basename === '.' || basename !== name)\n throw new Error(`${option} option must not contain a path, found \"${name}\".`);\n }\n else { // if (option === 'dir' || option === 'template') {\n // assert that dir or template are relative to tmpDir\n if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${name}\".`);\n }\n let resolvedPath = _resolvePath(name, tmpDir);\n if (!resolvedPath.startsWith(tmpDir))\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${resolvedPath}\".`);\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isEBADF(error) {\n return _isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isENOENT(error) {\n return _isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {string}\n * error.errno {number} any numerical value will be negated\n *\n * CAVEAT\n *\n * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT\n * is no different here.\n *\n * @param {SystemError} error\n * @param {number} errno\n * @param {string} code\n * @private\n */\nfunction _isExpectedError(error, errno, code) {\n return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the\n * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary\n * object removals.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\n/**\n * Returns the currently configured tmp dir from os.tmpdir().\n *\n * @private\n * @param {?Options} options\n * @returns {string} the currently configured tmp dir\n */\nfunction _getTmpDir(options) {\n return path.resolve(_sanitizeName(options && options.tmpdir || os.tmpdir()));\n}\n\n// Install process exit listener\nprocess.addListener(EXIT, _garbageCollector);\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected\n * @property {?number} tries the number of tries before give up the name generation\n * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fixed name relative to tmpdir or the specified dir option\n * @property {?string} dir tmp directory relative to the root tmp directory in use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir\n * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty\n * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection\n * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor or -1 if the fd has been discarded\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback fileCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallbackSync\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\n\n// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will\n// allow users to reconfigure the temporary directory\nObject.defineProperty(module.exports, 'tmpdir', {\n enumerable: true,\n configurable: false,\n get: function () {\n return _getTmpDir();\n }\n});\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "import which from \"which\";\nimport plist from \"simple-plist\";\nimport child_process from \"child_process\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport tmp from \"tmp\";\n\nconst TEMP_DIR = \"/Applications/git-peek.app/Contents/temp\";\nimport { PROTOCOL } from \"./PROTOCOL\";\n\nexport function execSync(cmd) {\n console.log(\"$ \", chalk.gray(cmd));\n return child_process.execSync(cmd, { cwd: process.cwd(), stdio: \"inherit\" });\n}\n\nexport async function register(editor: string) {\n try {\n await which(\"duti\");\n } catch (exception) {\n const installCommand = `HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install duti`;\n console.log(`duti not installed. Installing with homebrew.`);\n execSync(installCommand);\n }\n\n const gitPeekShim = path.join(\n \"/Applications/git-peek.app/Contents/\",\n \"git-peek-shim\"\n );\n\n console.log(\"Generating AppleScript handler.\");\n const appleScriptCode = await generateAppleScript(gitPeekShim, TEMP_DIR);\n const _tmp = tmp.dirSync({ unsafeCleanup: true });\n const appleScriptFile = path.join(_tmp.name, \"git-peek.applescript\");\n const appleScriptApp = path.join(_tmp.name, \"git-peek.app\");\n\n await fs.promises.writeFile(appleScriptFile, appleScriptCode, \"utf8\");\n console.log(chalk.gray(appleScriptCode));\n console.log(\"Compiling .applescript to .app\");\n execSync(`osacompile -o ${appleScriptApp} ${appleScriptFile}`);\n console.log(\"Updating Info.plist to support URL handler\");\n const infoPlist = path.join(appleScriptApp, \"contents/Info.plist\");\n const info = plist.readFileSync(infoPlist);\n info[\"CFBundleIdentifier\"] = \"com.apple.ScriptEditor.id.git-peek\";\n info[\"CFBundleURLTypes\"] = [\n {\n CFBundleURLName: \"HTTP URL\",\n CFBundleURLSchemes: [\"http\", \"https\", PROTOCOL],\n },\n ];\n info[\"LSBackgroundOnly\"] = true;\n plist.writeFileSync(infoPlist, info);\n console.log(\"Updated Info.plist\");\n console.log(\"Moving application to /Applications/git-peek.app\");\n if (fs.existsSync(\"/Applications/git-peek.app\")) {\n fs.rmSync(\"/Applications/git-peek.app\", {\n recursive: true,\n force: true,\n });\n }\n\n if (fs.existsSync(\"/Applications/git-peek.app\")) {\n fs.rmSync(\"/Applications/git-peek.app\", { force: true, recursive: true });\n }\n\n fs.renameSync(appleScriptApp, \"/Applications/git-peek.app\");\n\n console.log(chalk.gray(`mkdir ${TEMP_DIR}`));\n fs.mkdirSync(TEMP_DIR);\n\n const shim = `#!/bin/bash\n\n# AppleScript might run as a different user/environment variables.\n# So we have to inline some environment variables!\nexport PATH=$PATH:${JSON.stringify(process.env.PATH) || \"\"}\nexport EDITOR=${JSON.stringify(editor)}\nexport HOME=${JSON.stringify(process.env.HOME) || \"\"}\nexport USER=${JSON.stringify(process.env.USER) || \"\"}\n\n.${JSON.stringify(await which(\"git-peek\"))} --fromscript $1 $2 $3 $4 & disown\n`;\n\n console.log(\n \"// --- BEGIN SHIM FILE ---\\n\" +\n chalk.gray(shim) +\n \"\\n// --- END SHIM FILE ---\"\n );\n console.log(`Wrote shim file (${chalk.gray(gitPeekShim)})`);\n fs.writeFileSync(gitPeekShim, shim, \"utf8\");\n execSync(\"chmod +x \" + gitPeekShim);\n\n console.log(\"Registering URL handler...\");\n execSync(`duti -s com.apple.ScriptEditor.id.git-peek ${PROTOCOL}`);\n\n fs.rmSync(appleScriptFile);\n\n if (fs.existsSync(\"/Applications/Google Chrome.app\")) {\n console.log(`Adding ${PROTOCOL}:// to Google Chrome`);\n try {\n execSync(\n `defaults write com.google.Chrome URLWhitelist -array '${PROTOCOL}://*'`\n );\n } catch (exception) {\n console.warn(\"Failed to add protocol to Google Chrome. Its okay.\");\n }\n }\n\n console.log(chalk.green(\"\u2705 Registered git-peek:// protocol successfully.\"));\n console.log('To unregister, just delete \"/Applications/git-peek.app\".');\n console.log(\"To test it, run this:\");\n console.log(\" \" + chalk.blue(`open git-peek://Jarred-Sumner/git-peek`));\n if (editor.includes(\"vi\")) {\n console.warn(\n \"vim/vi not supported (no terminal window will be open), but if you know a way to run a terminal window from the AppleScript please do submit a PR!\"\n );\n }\n}\n\nexport async function generateAppleScript(shimLocation: string, tempDir) {\n return `\n\non open location this_URL\n try\n set innerCmd to \"${shimLocation} \" & quoted form of this_URL & \" &> /usr/local/var/log/git-peek &\"\n do shell script innerCmd\n on error errMsg\n display dialog errMsg\n end try\nend open location\n`.trim();\n}\n", "class Node {\n\t/// value;\n\t/// next;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\n\t\t// TODO: Remove this when targeting Node.js 12.\n\t\tthis.next = undefined;\n\t}\n}\n\nclass Queue {\n\t// TODO: Use private class fields when targeting Node.js 12.\n\t// #_head;\n\t// #_tail;\n\t// #_size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this._head) {\n\t\t\tthis._tail.next = node;\n\t\t\tthis._tail = node;\n\t\t} else {\n\t\t\tthis._head = node;\n\t\t\tthis._tail = node;\n\t\t}\n\n\t\tthis._size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this._head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._head = this._head.next;\n\t\tthis._size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis._head = undefined;\n\t\tthis._tail = undefined;\n\t\tthis._size = 0;\n\t}\n\n\tget size() {\n\t\treturn this._size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this._head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n\nmodule.exports = Queue;\n", "'use strict';\nconst Queue = require('yocto-queue');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tqueue.enqueue(run.bind(null, fn, resolve, ...args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, ...args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\n", "'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nconst pLocate = async (iterable, tester, options) => {\n\toptions = {\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true,\n\t\t...options\n\t};\n\n\tconst limit = pLimit(options.concurrency);\n\n\t// Start all the promises concurrently with optional limit\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently\n\tconst checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n};\n\nmodule.exports = pLocate;\n", "'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst {promisify} = require('util');\nconst pLocate = require('p-locate');\n\nconst fsStat = promisify(fs.stat);\nconst fsLStat = promisify(fs.lstat);\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile'\n};\n\nfunction checkType({type}) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nmodule.exports = async (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\ttype: 'file',\n\t\tallowSymlinks: true,\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fsStat : fsLStat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFn(path.resolve(options.cwd, path_));\n\t\t\treturn matchType(options.type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, options);\n};\n\nmodule.exports.sync = (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tallowSymlinks: true,\n\t\ttype: 'file',\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFn(path.resolve(options.cwd, path_));\n\n\t\t\tif (matchType(options.type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n};\n", "'use strict';\nconst fs = require('fs');\nconst {promisify} = require('util');\n\nconst pAccess = promisify(fs.access);\n\nmodule.exports = async path => {\n\ttry {\n\t\tawait pAccess(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports.sync = path => {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n", "'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\nconst pathExists = require('path-exists');\n\nconst stop = Symbol('findUp.stop');\n\nmodule.exports = async (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.sync = (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath.sync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath.sync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.exists = pathExists;\n\nmodule.exports.sync.exists = pathExists.sync;\n\nmodule.exports.stop = stop;\n", "'use strict';\r\n\r\nconst { promisify } = require(\"util\");\r\nconst tmp = require(\"tmp\");\r\n\r\n// file\r\nmodule.exports.fileSync = tmp.fileSync;\r\nconst fileWithOptions = promisify((options, cb) =>\r\n tmp.file(options, (err, path, fd, cleanup) =>\r\n err ? cb(err) : cb(undefined, { path, fd, cleanup: promisify(cleanup) })\r\n )\r\n);\r\nmodule.exports.file = async (options) => fileWithOptions(options);\r\n\r\nmodule.exports.withFile = async function withFile(fn, options) {\r\n const { path, fd, cleanup } = await module.exports.file(options);\r\n try {\r\n return await fn({ path, fd });\r\n } finally {\r\n await cleanup();\r\n }\r\n};\r\n\r\n\r\n// directory\r\nmodule.exports.dirSync = tmp.dirSync;\r\nconst dirWithOptions = promisify((options, cb) =>\r\n tmp.dir(options, (err, path, cleanup) =>\r\n err ? cb(err) : cb(undefined, { path, cleanup: promisify(cleanup) })\r\n )\r\n);\r\nmodule.exports.dir = async (options) => dirWithOptions(options);\r\n\r\nmodule.exports.withDir = async function withDir(fn, options) {\r\n const { path, cleanup } = await module.exports.dir(options);\r\n try {\r\n return await fn({ path });\r\n } finally {\r\n await cleanup();\r\n }\r\n};\r\n\r\n\r\n// name generation\r\nmodule.exports.tmpNameSync = tmp.tmpNameSync;\r\nmodule.exports.tmpName = promisify(tmp.tmpName);\r\n\r\nmodule.exports.tmpdir = tmp.tmpdir;\r\n\r\nmodule.exports.setGracefulCleanup = tmp.setGracefulCleanup;\r\n", "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", {value: true});\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {get: all[name], enumerable: true});\n};\nvar __exportStar = (target, module2, desc) => {\n if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\n for (let key of __getOwnPropNames(module2))\n if (!__hasOwnProp.call(target, key) && key !== \"default\")\n __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});\n }\n return target;\n};\nvar __toModule = (module2) => {\n if (module2 && module2.__esModule)\n return module2;\n return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", {value: module2, enumerable: true})), module2);\n};\n\n// src/index.ts\n__markAsModule(exports);\n__export(exports, {\n BINARY_VERSION: () => BINARY_VERSION,\n PACKAGE_NAMES: () => PACKAGE_NAMES,\n installBin: () => installBin,\n register: () => register\n});\nvar import_child_process = __toModule(require(\"child_process\"));\nvar import_find_up = __toModule(require(\"find-up\"));\nvar fs = __toModule(require(\"fs\"));\nvar path = __toModule(require(\"path\"));\nvar import_tmp_promise = __toModule(require(\"tmp-promise\"));\nasync function getNodeModules(cwd) {\n return path.resolve(await import_find_up.default(\"node_modules\", {type: \"directory\", cwd}), \"../\");\n}\nvar BINARY_VERSION = \"1.0.7\";\nvar PACKAGE_NAMES = {\n win64: \"register-url-win64-bin\",\n \"win64-uac\": \"register-url-win64-bin-uac\"\n};\nasync function installBin(requireUAC = true) {\n const packageName = requireUAC ? \"register-url-win64-bin-uac\" : \"register-url-win64-bin\";\n const cwd = await getNodeModules(path.resolve(__dirname));\n return new Promise((resolve2, reject) => {\n const child = import_child_process.default.spawn(\"npm\", [\n \"install\",\n `${packageName}@${\"1.0.7\"}`,\n `--legacy-peer-deps`,\n \"-g\",\n `--production`,\n `--no-fund`,\n `--no-audit`,\n `--no-package-lock`,\n `--ignore-scripts`\n ], {\n cwd,\n detached: false,\n shell: true,\n env: process.env\n });\n child.stdout.pipe(process.stdout);\n child.stdin.pipe(process.stdin);\n child.once(\"exit\", resolve2);\n child.once(\"error\", reject);\n });\n}\nasync function register(request, binPath = null) {\n var _a, _b;\n let downloadBin = binPath;\n if (!binPath) {\n let uac = ((_b = (_a = request.origins) == null ? void 0 : _a.length) != null ? _b : 0) > 0;\n let packageName = uac ? \"register-url-win64-bin-uac\" : \"register-url-win64-bin\";\n try {\n downloadBin = require(path.resolve(__dirname, \"node_modules\", packageName));\n } catch (exception) {\n return Promise.reject(`Please install \"${packageName}\" into ${path.resolve(__dirname)} before running this function. For convienience, you can call installBin()`);\n }\n }\n await fs.promises.access(downloadBin, fs.constants.F_OK);\n if (typeof request.register === \"undefined\") {\n request.register = true;\n }\n if (!request.output) {\n const {path: filePath2} = await import_tmp_promise.default.file({\n discardDescriptor: true,\n postfix: \".json\"\n });\n request.output = filePath2;\n }\n const filePath = path.resolve(request.output);\n delete request.output;\n await fs.promises.writeFile(filePath, JSON.stringify(request), \"utf-8\");\n return await new Promise(async (resolve2, reject) => {\n const child = import_child_process.default.spawn(downloadBin, [filePath], {\n env: process.env,\n windowsHide: true,\n detached: false,\n shell: true,\n stdio: \"inherit\"\n });\n child.once(\"exit\", async () => {\n let response;\n try {\n response = JSON.parse((await fs.promises.readFile(filePath, \"utf-8\")).trim());\n if (typeof response !== \"object\") {\n throw \"Empty response\";\n }\n } catch (exception) {\n response = {\n error: exception.message,\n exception,\n chrome: false,\n protocol: false,\n edge: false\n };\n }\n resolve2(response);\n });\n }).catch((err) => {\n return Promise.resolve({\n error: err.message,\n exception: err,\n chrome: false,\n edge: false,\n protocol: false\n });\n });\n}\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\nconst EE = require('events')\nconst Stream = require('stream')\nconst Yallist = require('yallist')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = new Yallist()\n this.buffer = new Yallist()\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // this ensures at this point that the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!this.objectMode && !chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n cb()\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' && !this[OBJECTMODE] &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n if (this.flowing) {\n // if we somehow have something in the buffer, but we think we're\n // flowing, then we need to flush all that out first, or we get\n // chunks coming in out of order. Can't emit 'drain' here though,\n // because we're mid-write, so that'd be bad.\n if (this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n this.emit('data', chunk)\n } else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n cb()\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n try {\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH])\n return null\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = new Yallist([\n Array.from(this.buffer).join('')\n ])\n else\n this.buffer = new Yallist([\n Buffer.concat(Array.from(this.buffer), this[BUFFERLENGTH])\n ])\n }\n\n return this[READ](n || null, this.buffer.head.value)\n } finally {\n this[MAYBE_EMIT_END]()\n }\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer.head.value = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n return this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer.head.value.length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === process.stdout || dest === process.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n\n const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() }\n this.pipes.push(p)\n\n dest.on('drain', p.ondrain)\n this[RESUME]()\n // piping an ended stream ends immediately\n if (ended && p.opts.end)\n p.dest.end()\n return dest\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n try {\n return super.on(ev, fn)\n } finally {\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n }\n }\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n if (!data)\n return\n\n if (this.pipes.length)\n this.pipes.forEach(p =>\n p.dest.write(data) === false && this.pause())\n } else if (ev === 'end') {\n // only actual end gets this treatment\n if (this[EMITTED_END] === true)\n return\n\n this[EMITTED_END] = true\n this.readable = false\n\n if (this[DECODER]) {\n data = this[DECODER].end()\n if (data) {\n this.pipes.forEach(p => p.dest.write(data))\n super.emit('data', data)\n }\n }\n\n this.pipes.forEach(p => {\n p.dest.removeListener('drain', p.ondrain)\n if (p.opts.end)\n p.dest.end()\n })\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n }\n\n // TODO: replace with a spread operator when Node v4 support drops\n const args = new Array(arguments.length)\n args[0] = ev\n args[1] = data\n if (arguments.length > 2) {\n for (let i = 2; i < arguments.length; i++) {\n args[i] = arguments[i]\n }\n }\n\n try {\n return super.emit.apply(this, args)\n } finally {\n if (!isEndish(ev))\n this[MAYBE_EMIT_END]()\n else\n this.removeAllListeners(ev)\n }\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('end', () => resolve())\n this.on('error', er => reject(er))\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer = new Yallist()\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n", "'use strict'\nconst MiniPass = require('minipass')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends MiniPass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = header.path\n this.mode = header.mode\n if (this.mode)\n this.mode = this.mode & 0o7777\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = header.linkpath\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex)\n this[SLURP](ex)\n if (gex)\n this[SLURP](gex, true)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore)\n return true\n\n if (r >= writeLen)\n return super.write(data)\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n else if (num < 0)\n encodeNegative(num, buf)\n else\n encodePositive(num, buf)\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped)\n buf[i - 1] = onesComp(byte)\n else if (byte === 0)\n buf[i - 1] = 0\n else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null)\n throw Error('invalid base256 encoding')\n\n if (!Number.isSafeInteger(value))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped)\n f = onesComp(byte)\n else if (byte === 0)\n f = byte\n else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0)\n sum -= f * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0)\n sum += byte * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data))\n this.decode(data, off || 0, ex, gex)\n else if (data)\n this.set(data)\n }\n\n decode (buf, off, ex, gex) {\n if (!off)\n off = 0\n\n if (!buf || !(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '')\n this[TYPE] = '0'\n if (this[TYPE] === '0' && this.path.substr(-1) === '/')\n this[TYPE] = '5'\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5')\n this.size = 0\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix)\n this.path = prefix + '/' + this.path\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20)\n this.nullBlock = true\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off)\n off = 0\n\n if (!(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0)\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined)\n this[i] = data[i]\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type))\n this[TYPE] = types.code.get(type)\n else\n this[TYPE] = type\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize)\n ret = [pp, prefix, false]\n else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n // both fit!\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp, prefix, false]\n\n // prefix fits in prefix, but path doesn't fit in path\n else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp.substr(0, pathSize - 1), prefix, true]\n\n else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret)\n ret = [p.substr(0, pathSize - 1), '', true]\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '')\n return null\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++)\n buf[i] = 0\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++)\n buf[i] = 0\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined)\n return ''\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits))\n digits += 1\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1)\n return set\n\n line = line.substr((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k)\n return set\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file)\n data.file = this.file\n if (this.cwd)\n data.cwd = this.cwd\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error)\n this.emit('error', Object.assign(message, data))\n else\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable)\n mode = (mode | 0o600) & ~0o22\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400)\n mode |= 0o100\n if (mode & 0o40)\n mode |= 0o10\n if (mode & 0o4)\n mode |= 0o1\n }\n return mode\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends MiniPass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string')\n throw new TypeError('path is required')\n this.path = p\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid()\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = opt.cwd || process.cwd()\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (!this.preservePaths && path.win32.isAbsolute(p)) {\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n const parsed = path.win32.parse(p)\n this.path = p.substr(parsed.root.length)\n pathWarn = parsed.root\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = opt.absolute || path.resolve(this.cwd, p)\n\n if (this.path === '')\n this.path = './'\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute))\n this[ONLSTAT](this.statCache.get(this.absolute))\n else\n this[LSTAT]()\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er)\n return this.emit('error', er)\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile())\n stat.size = 0\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n this.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n this.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.substr(-1) !== '/')\n this.path += '/'\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er)\n return this.emit('error', er)\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = linkpath.replace(/\\\\/g, '/')\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = path.relative(this.cwd, linkpath).replace(/\\\\/g, '/')\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0)\n return this[HARDLINK](linkpath)\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0)\n return this.end()\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er)\n return this.emit('error', er)\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n const blockLen = 512 * Math.ceil(this.stat.size / 512)\n const bufLen = Math.min(blockLen, this.maxReadSize)\n const buf = Buffer.allocUnsafe(bufLen)\n this[READ](fd, buf, 0, buf.length, 0, this.stat.size, blockLen)\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n })\n }\n\n [CLOSE] (fd, cb) {\n fs.close(fd, cb)\n }\n\n [ONREAD] (fd, buf, offset, length, pos, remain, blockRemain, bytesRead) {\n if (bytesRead <= 0 && remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n if (bytesRead > remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n if (bytesRead === remain) {\n for (let i = bytesRead; i < length && bytesRead < blockRemain; i++) {\n buf[i + offset] = 0\n bytesRead++\n remain++\n }\n }\n\n const writeBuf = offset === 0 && bytesRead === buf.length ?\n buf : buf.slice(offset, offset + bytesRead)\n remain -= bytesRead\n blockRemain -= bytesRead\n pos += bytesRead\n offset += bytesRead\n\n this.write(writeBuf)\n\n if (!remain) {\n if (blockRemain)\n this.write(Buffer.alloc(blockRemain))\n return this[CLOSE](fd, er => er ? this.emit('error', er) : this.end())\n }\n\n if (offset >= length) {\n buf = Buffer.allocUnsafe(length)\n offset = 0\n }\n length = buf.length - offset\n this[READ](fd, buf, offset, length, pos, remain, blockRemain)\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n let threw = true\n try {\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](fd, () => {})\n } catch (er) {}\n }\n }\n }\n\n [CLOSE] (fd, cb) {\n fs.closeSync(fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends MiniPass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.path = readEntry.path\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = readEntry.linkpath\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (path.isAbsolute(this.path) && !this.preservePaths) {\n const parsed = path.parse(this.path)\n pathWarn = parsed.root\n this.path = this.path.substr(parsed.root.length)\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain)\n this.write(Buffer.alloc(this.blockRemain))\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst MiniPass = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\n\nconst Pack = warner(class Pack extends MiniPass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = (opt.prefix || '').replace(/(\\\\|\\/)+$/, '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n this.portable = !!opt.portable\n this.zip = null\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object')\n opt.gzip = {}\n if (this.portable)\n opt.gzip.portable = true\n this.zip = new zlib.Gzip(opt.gzip)\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else\n this.on('drain', this[ONDRAIN])\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path)\n this.write(path)\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED])\n throw new Error('write after end')\n\n if (path instanceof ReadEntry)\n this[ADDTARENTRY](path)\n else\n this[ADDFSENTRY](path)\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = path.resolve(this.cwd, p.path)\n if (this.prefix)\n p.path = this.prefix + '/' + p.path.replace(/^\\.(\\/+|$)/, '')\n\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p))\n p.resume()\n else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = path.resolve(this.cwd, p)\n if (this.prefix)\n p = this.prefix + '/' + p.replace(/^\\.(\\/+|$)/, '')\n\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n this.emit('error', er)\n else\n this[ONSTAT](job, stat)\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat))\n job.ignore = true\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n return this.emit('error', er)\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING])\n return\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip)\n this.zip.end(EOF)\n else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending)\n return\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute))\n this[ONSTAT](job, this.statCache.get(job.absolute))\n else\n this[STAT](job)\n }\n if (!job.stat)\n return\n\n // filtered out!\n if (job.ignore)\n return\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute))\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n else\n this[READDIR](job)\n if (!job.readdir)\n return\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry)\n this[CURRENT].entry.resume()\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk))\n source.pause()\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk))\n source.pause()\n })\n }\n }\n\n pause () {\n if (this.zip)\n this.zip.pause()\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone)\n this.on(DONE, opt.ondone)\n else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n if (typeof opt.onentry === 'function')\n this.on('entry', opt.onentry)\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null)\n this[SAW_VALID_ENTRY] = false\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin')\n this[STATE] = 'header'\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid)\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', {header})\n else if (!header.path)\n this.warn('TAR_ENTRY_INVALID', 'path is required', {header})\n else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', {header})\n else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {header})\n else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid)\n this[SAW_VALID_ENTRY] = true\n }\n entry.on('end', onend)\n } else\n this[SAW_VALID_ENTRY] = true\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain)\n this[STATE] = 'body'\n else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry))\n this.emit.apply(this, entry)\n else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING])\n this.emit('drain')\n } else\n re.once('drain', _ => this.emit('drain'))\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY])\n this[EMITMETA](entry)\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY])\n this.emit(ev, data, extra)\n else\n this[QUEUE].push([ev, data, extra])\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED])\n return\n\n // first write, might be gzipped\n if (this[UNZIP] === null && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i])\n this[UNZIP] = false\n }\n if (this[UNZIP] === null) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = new zlib.Unzip()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP])\n this[UNZIP].write(chunk)\n else\n this[CONSUMECHUNK](chunk)\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length)\n this[READENTRY].once('drain', _ => this.emit('drain'))\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED])\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, {entry})\n if (this[BUFFER])\n entry.write(this[BUFFER])\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING])\n this[BUFFERCONCAT](chunk)\n else if (!chunk && !this[BUFFER])\n this[MAYBEEND]()\n else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else\n this[CONSUMECHUNKSUB](chunk)\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED])\n this[MAYBEEND]()\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER])\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n else\n this[BUFFER] = chunk.slice(position)\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP])\n this[UNZIP].end(chunk)\n else {\n this[ENDED] = true\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n if (!opt.noResume)\n onentryFunction(opt)\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize)\n p.end(fs.readFileSync(file))\n else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function')\n cb = files\n\n if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT')\n fd = fs.openSync(opt.file, 'w+')\n else\n throw er\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n throw new Error('cannot append to compressed archives')\n\n if (!bytes)\n break POSITION\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n break\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size)\n break\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er)\n fs.close(fd, _ => cb_(er))\n else\n cb_(null, pos)\n }\n\n let position = 0\n if (size === 0)\n return cb(null, 0)\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er)\n return cb(er)\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n return cb(new Error('cannot append to compressed archives'))\n\n // truncated header\n if (bufPos < 512)\n return cb(null, position)\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n return cb(null, position)\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size)\n return cb(null, position)\n\n position += entryBlockSize + 512\n if (position >= size)\n return cb(null, position)\n\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er)\n return reject(er)\n\n fs.fstat(fd, (er, st) => {\n if (er)\n return reject(er)\n getPos(fd, st.size, (er, position) => {\n if (er)\n return reject(er)\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache)\n opt.mtimeCache = new Map()\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nmodule.exports = (dir, opt, cb) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (er, created) => {\n if (er)\n cb(er)\n else {\n cache.set(dir, true)\n if (created && doChown)\n chownr(created, uid, gid, er => done(er))\n else if (needChmod)\n fs.chmod(dir, mode, cb)\n else\n cb()\n }\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n return fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory())\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n done(er)\n })\n }\n\n if (preserve)\n return mkdirp(dir, {mode}).then(made => done(null, made), done)\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length)\n return cb(null, created)\n const p = parts.shift()\n const part = base + '/' + p\n if (cache.get(part))\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return cb(new CwdError(cwd, er.code))\n\n fs.lstat(part, (statEr, st) => {\n if (statEr)\n cb(statEr)\n else if (st.isDirectory())\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n else if (unlink) {\n fs.unlink(part, er => {\n if (er)\n return cb(er)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink())\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n else\n cb(er)\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (created) => {\n cache.set(dir, true)\n if (created && doChown)\n chownr.sync(created, uid, gid)\n if (needChmod)\n fs.chmodSync(dir, mode)\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok)\n throw new CwdError(dir, code)\n }\n done()\n return\n }\n\n if (preserve)\n return done(mkdirp.sync(dir, mode))\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n if (cache.get(part))\n continue\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n } catch (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return new CwdError(cwd, er.code)\n\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cache.set(part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n continue\n } else if (st.isSymbolicLink())\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n\n return done(created)\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n const { join } = require('path')\n const getDirs = path =>\n join(path).split(/[\\\\/]/).slice(0, -1).reduce((set, path) =>\n set.length ? set.concat(join(set[set.length - 1], path)) : [path], [])\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res)\n throw new Error('function does not have any path reservations')\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const {paths, dirs} = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn))\n return false\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn))\n return false\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1)\n queues.delete(path)\n else {\n q.shift()\n if (typeof q[0] === 'function')\n next.add(q[0])\n else\n q[0].forEach(fn => next.add(fn))\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1)\n queues.delete(dir)\n else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else\n q[0].delete(fn)\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, {dirs, paths})\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q)\n queues.set(path, [fn])\n else\n q.push(fn)\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q)\n queues.set(dir, [new Set([fn])])\n else if (q[q.length - 1] instanceof Set)\n q[q.length - 1].add(fn)\n else\n q.push(new Set([fn]))\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\n\n/* istanbul ignore next */\nconst neverCalled = () => {\n throw new Error('sync function called cb somehow?!?')\n}\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (process.platform !== 'win32')\n return fs.unlink(path, cb)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er)\n return cb(er)\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (process.platform !== 'win32')\n return fs.unlinkSync(path)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt)\n opt = {}\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number')\n throw new TypeError('cannot set owner without number uid and gid')\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number')\n this.preserveOwner = process.getuid && process.getuid() === 0\n else\n this.preserveOwner = !!opt.preserveOwner\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn > this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT')\n data.recoverable = false\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = entry.path.split(/\\/|\\\\/)\n if (parts.length < this.strip)\n return false\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = entry.linkpath.split(/\\/|\\\\/)\n if (linkparts.length >= this.strip)\n entry.linkpath = linkparts.slice(this.strip).join('/')\n }\n }\n\n if (!this.preservePaths) {\n const p = entry.path\n if (p.match(/(^|\\/|\\\\)\\.\\.(\\\\|\\/|$)/)) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n if (path.win32.isAbsolute(p)) {\n const parsed = path.win32.parse(p)\n entry.path = p.substr(parsed.root.length)\n const r = parsed.root\n this.warn('TAR_ENTRY_INFO', `stripping ${r} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const parsed = path.win32.parse(entry.path)\n entry.path = parsed.root === '' ? wc.encode(entry.path)\n : parsed.root + wc.encode(entry.path.substr(parsed.root.length))\n }\n\n if (path.isAbsolute(entry.path))\n entry.absolute = entry.path\n else\n entry.absolute = path.resolve(this.cwd, entry.path)\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry))\n return entry.resume()\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode)\n entry.mode = entry.mode | 0o700\n\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError')\n this.emit('error', er)\n else {\n this.warn('TAR_ENTRY_ERROR', er, {entry})\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => this[ONERROR](er, entry))\n\n let actions = 1\n const done = er => {\n if (er)\n return this[ONERROR](er, entry)\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n fullyDone()\n er ? this[ONERROR](er, entry) : this[UNPEND]()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n fullyDone()\n return this[ONERROR](er, entry)\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, {entry})\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n process.platform !== 'win32'\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath)\n paths.push(entry.linkpath)\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [CHECKFS2] (entry, done) {\n this[MKDIR](path.dirname(entry.absolute), this.dmode, er => {\n if (er) {\n done()\n return this[ONERROR](er, entry)\n }\n fs.lstat(entry.absolute, (er, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n } else if (er || this[ISREUSABLE](entry, st))\n this[MAKEFS](null, entry, done)\n\n else if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && (!entry.mode || (st.mode & 0o7777) === entry.mode))\n this[MAKEFS](null, entry, done)\n else {\n fs.chmod(entry.absolute, entry.mode,\n er => this[MAKEFS](er, entry, done))\n }\n } else\n fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry, done))\n } else\n unlinkFile(entry.absolute, er => this[MAKEFS](er, entry, done))\n })\n })\n }\n\n [MAKEFS] (er, entry, done) {\n if (er)\n return this[ONERROR](er, entry)\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('file' or 'dir') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er)\n return this[ONERROR](er, entry)\n done()\n this[UNPEND]()\n entry.resume()\n })\n }\n}\n\nclass UnpackSync extends Unpack {\n [CHECKFS] (entry) {\n const er = this[MKDIR](path.dirname(entry.absolute), this.dmode, neverCalled)\n if (er)\n return this[ONERROR](er, entry)\n try {\n const st = fs.lstatSync(entry.absolute)\n if (this.keep || this.newer && st.mtime > entry.mtime)\n return this[SKIP](entry)\n else if (this[ISREUSABLE](entry, st))\n return this[MAKEFS](null, entry, neverCalled)\n else {\n try {\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && entry.mode && (st.mode & 0o7777) !== entry.mode)\n fs.chmodSync(entry.absolute, entry.mode)\n } else\n fs.rmdirSync(entry.absolute)\n } else\n unlinkFileSync(entry.absolute)\n return this[MAKEFS](null, entry, neverCalled)\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n } catch (er) {\n return this[MAKEFS](null, entry, neverCalled)\n }\n }\n\n [FILE] (entry, _) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError)\n this[ONERROR](er || closeError, entry)\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, _) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er)\n return this[ONERROR](er, entry)\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, _) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\n", "import chalk from \"chalk\";\nimport {\n register as _register,\n BINARY_VERSION,\n PACKAGE_NAMES,\n} from \"register-url-windows\";\nimport { PROTOCOL } from \"src/PROTOCOL\";\nimport which from \"which\";\nimport { fetch } from \"./fetch\";\nimport fs from \"fs\";\nimport http from \"http\";\nimport tmp from \"tmp\";\nimport path from \"path\";\nimport tar from \"tar\";\n\nconst TARBALL_URL = `http://registry.npmjs.org/${PACKAGE_NAMES[\"win64-uac\"]}/-/${PACKAGE_NAMES[\"win64-uac\"]}-${BINARY_VERSION}.tgz`;\n\nfunction downloadBin(): Promise {\n const { name: tgzPath } = tmp.dirSync({\n postfix: \"git-peek\",\n unsafeCleanup: true,\n });\n return new Promise((resolve, reject) => {\n http.get(TARBALL_URL, function (response) {\n response.pipe(\n tar\n .x({\n cwd: tgzPath,\n strip: 1,\n onentry(entry) {},\n onwarn(message, data) {\n console.warn(message);\n },\n })\n .on(\"finish\", () => {\n resolve(path.resolve(tgzPath, \"register-url.exe\"));\n })\n .on(\"error\", (err) => {\n reject(err);\n })\n );\n });\n });\n}\n\nexport async function register(editor: string) {\n console.log(\"Downloading register-url-windows!\");\n const downloadPath = await downloadBin();\n console.log(\"Downloaded register-url-windows\");\n\n console.log(\n `${chalk.whiteBright(\n \"git-peek uses Administrator privileges to enable 1-click in Chrome & Edge\"\n )}. Source code: \\n${chalk.gray(\n \" https://github.com/Jarred-Sumner/register-url-windows/blob/main/dotnet/RegisterURLHandler/Program.cs\"\n )}`\n );\n const result = await _register(\n {\n path: path.resolve(\n await which(\"git-peek\"),\n \"../\",\n \"node_modules\",\n \"@jarred\",\n \"git-peek\",\n \"bin\",\n \"git-peek-win32.exe\"\n ),\n name: \"git-peek\",\n origins: [\n \"github.com\",\n \"bitbucket.com\",\n \"gitlab.com\",\n \"*.gitlab.com\",\n \"sourcehut.org\",\n ],\n register: true,\n protocol: PROTOCOL,\n },\n downloadPath\n );\n\n if (process.env.VERBOSE) console.log(result);\n\n if (result.error && !(result.protocol && result.edge && result.chrome)) {\n console.error(result.error);\n }\n\n if (result.exception && !(result.protocol && result.edge && result.chrome)) {\n console.error(result.exception);\n }\n\n if (result.protocol && result.edge && result.chrome) {\n console.log(`${chalk.green(\"Registered git-peek:// successfully\")}`);\n } else if (result.protocol) {\n console.log(\n chalk.whiteBright(\"Registered git-peek://, but 1-click is disabled\")\n );\n console.log(\n `${chalk.cyan(\n \"To enable 1-click, re-run `git-peek -r` with Administrator privileges.\"\n )}`\n );\n } else {\n console.log(`${chalk.red(\"Register failed\")}`);\n }\n\n process.exit();\n}\n", "let register: (editor: string) => void;\nif (process.platform === \"darwin\") {\n register = require(\"./registerProtocol.mac\").register;\n} else if (process.platform === \"win32\") {\n register = require(\"./registerProtocol.windows\").register;\n} else {\n register = () => {\n throw \"Unsupported Platform\";\n };\n}\n\nexport { register };\n", "export const PROTOCOL = \"git-peek\";\n"], - "mappings": "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", + "sourcesContent": ["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < top) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n", "'use strict';\n\n// adapted from http://code.google.com/p/plist/source/browse/trunk/src/com/dd/plist/BinaryPropertyListParser.java\n\nconst fs = require('fs');\nconst bigInt = require(\"big-integer\");\nconst debug = false;\n\nexports.maxObjectSize = 100 * 1000 * 1000; // 100Meg\nexports.maxObjectCount = 32768;\n\n// EPOCH = new SimpleDateFormat(\"yyyy MM dd zzz\").parse(\"2001 01 01 GMT\").getTime();\n// ...but that's annoying in a static initializer because it can throw exceptions, ick.\n// So we just hardcode the correct value.\nconst EPOCH = 978307200000;\n\n// UID object definition\nconst UID = exports.UID = function(id) {\n this.UID = id;\n};\n\nconst parseFile = exports.parseFile = function (fileNameOrBuffer, callback) {\n return new Promise(function (resolve, reject) {\n function tryParseBuffer(buffer) {\n let err = null;\n let result;\n try {\n result = parseBuffer(buffer);\n resolve(result);\n } catch (ex) {\n err = ex;\n reject(err);\n } finally {\n if (callback) callback(err, result);\n }\n }\n\n if (Buffer.isBuffer(fileNameOrBuffer)) {\n return tryParseBuffer(fileNameOrBuffer);\n }\n fs.readFile(fileNameOrBuffer, function (err, data) {\n if (err) {\n reject(err);\n return callback(err);\n }\n tryParseBuffer(data);\n });\n });\n};\n\nconst parseBuffer = exports.parseBuffer = function (buffer) {\n // check header\n const header = buffer.slice(0, 'bplist'.length).toString('utf8');\n if (header !== 'bplist') {\n throw new Error(\"Invalid binary plist. Expected 'bplist' at offset 0.\");\n }\n\n // Handle trailer, last 32 bytes of the file\n const trailer = buffer.slice(buffer.length - 32, buffer.length);\n // 6 null bytes (index 0 to 5)\n const offsetSize = trailer.readUInt8(6);\n if (debug) {\n console.log(\"offsetSize: \" + offsetSize);\n }\n const objectRefSize = trailer.readUInt8(7);\n if (debug) {\n console.log(\"objectRefSize: \" + objectRefSize);\n }\n const numObjects = readUInt64BE(trailer, 8);\n if (debug) {\n console.log(\"numObjects: \" + numObjects);\n }\n const topObject = readUInt64BE(trailer, 16);\n if (debug) {\n console.log(\"topObject: \" + topObject);\n }\n const offsetTableOffset = readUInt64BE(trailer, 24);\n if (debug) {\n console.log(\"offsetTableOffset: \" + offsetTableOffset);\n }\n\n if (numObjects > exports.maxObjectCount) {\n throw new Error(\"maxObjectCount exceeded\");\n }\n\n // Handle offset table\n const offsetTable = [];\n\n for (let i = 0; i < numObjects; i++) {\n const offsetBytes = buffer.slice(offsetTableOffset + i * offsetSize, offsetTableOffset + (i + 1) * offsetSize);\n offsetTable[i] = readUInt(offsetBytes, 0);\n if (debug) {\n console.log(\"Offset for Object #\" + i + \" is \" + offsetTable[i] + \" [\" + offsetTable[i].toString(16) + \"]\");\n }\n }\n\n // Parses an object inside the currently parsed binary property list.\n // For the format specification check\n // \n // Apple's binary property list parser implementation.\n function parseObject(tableOffset) {\n const offset = offsetTable[tableOffset];\n const type = buffer[offset];\n const objType = (type & 0xF0) >> 4; //First 4 bits\n const objInfo = (type & 0x0F); //Second 4 bits\n switch (objType) {\n case 0x0:\n return parseSimple();\n case 0x1:\n return parseInteger();\n case 0x8:\n return parseUID();\n case 0x2:\n return parseReal();\n case 0x3:\n return parseDate();\n case 0x4:\n return parseData();\n case 0x5: // ASCII\n return parsePlistString();\n case 0x6: // UTF-16\n return parsePlistString(true);\n case 0xA:\n return parseArray();\n case 0xD:\n return parseDictionary();\n default:\n throw new Error(\"Unhandled type 0x\" + objType.toString(16));\n }\n\n function parseSimple() {\n //Simple\n switch (objInfo) {\n case 0x0: // null\n return null;\n case 0x8: // false\n return false;\n case 0x9: // true\n return true;\n case 0xF: // filler byte\n return null;\n default:\n throw new Error(\"Unhandled simple type 0x\" + objType.toString(16));\n }\n }\n\n function bufferToHexString(buffer) {\n let str = '';\n let i;\n for (i = 0; i < buffer.length; i++) {\n if (buffer[i] != 0x00) {\n break;\n }\n }\n for (; i < buffer.length; i++) {\n const part = '00' + buffer[i].toString(16);\n str += part.substr(part.length - 2);\n }\n return str;\n }\n\n function parseInteger() {\n const length = Math.pow(2, objInfo);\n\n if (objInfo == 0x4) {\n const data = buffer.slice(offset + 1, offset + 1 + length);\n const str = bufferToHexString(data);\n return bigInt(str, 16);\n }\n if (objInfo == 0x3) {\n return buffer.readInt32BE(offset + 1);\n }\n if (length < exports.maxObjectSize) {\n return readUInt(buffer.slice(offset + 1, offset + 1 + length));\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseUID() {\n const length = objInfo + 1;\n if (length < exports.maxObjectSize) {\n return new UID(readUInt(buffer.slice(offset + 1, offset + 1 + length)));\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseReal() {\n const length = Math.pow(2, objInfo);\n if (length < exports.maxObjectSize) {\n const realBuffer = buffer.slice(offset + 1, offset + 1 + length);\n if (length === 4) {\n return realBuffer.readFloatBE(0);\n }\n if (length === 8) {\n return realBuffer.readDoubleBE(0);\n }\n } else {\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n }\n\n function parseDate() {\n if (objInfo != 0x3) {\n console.error(\"Unknown date type :\" + objInfo + \". Parsing anyway...\");\n }\n const dateBuffer = buffer.slice(offset + 1, offset + 9);\n return new Date(EPOCH + (1000 * dateBuffer.readDoubleBE(0)));\n }\n\n function parseData() {\n let dataoffset = 1;\n let length = objInfo;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0x4: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n dataoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length < exports.maxObjectSize) {\n return buffer.slice(offset + dataoffset, offset + dataoffset + length);\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parsePlistString (isUtf16) {\n isUtf16 = isUtf16 || 0;\n let enc = \"utf8\";\n let length = objInfo;\n let stroffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.err(\"UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n stroffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n // length is String length -> to get byte length multiply by 2, as 1 character takes 2 bytes in UTF-16\n length *= (isUtf16 + 1);\n if (length < exports.maxObjectSize) {\n let plistString = Buffer.from(buffer.slice(offset + stroffset, offset + stroffset + length));\n if (isUtf16) {\n plistString = swapBytes(plistString);\n enc = \"ucs2\";\n }\n return plistString.toString(enc);\n }\n throw new Error(\"To little heap space available! Wanted to read \" + length + \" bytes, but only \" + exports.maxObjectSize + \" are available.\");\n }\n\n function parseArray() {\n let length = objInfo;\n let arrayoffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0xa: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n arrayoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length * objectRefSize > exports.maxObjectSize) {\n throw new Error(\"To little heap space available!\");\n }\n const array = [];\n for (let i = 0; i < length; i++) {\n const objRef = readUInt(buffer.slice(offset + arrayoffset + i * objectRefSize, offset + arrayoffset + (i + 1) * objectRefSize));\n array[i] = parseObject(objRef);\n }\n return array;\n }\n\n function parseDictionary() {\n let length = objInfo;\n let dictoffset = 1;\n if (objInfo == 0xF) {\n const int_type = buffer[offset + 1];\n const intType = (int_type & 0xF0) / 0x10;\n if (intType != 0x1) {\n console.error(\"0xD: UNEXPECTED LENGTH-INT TYPE! \" + intType);\n }\n const intInfo = int_type & 0x0F;\n const intLength = Math.pow(2, intInfo);\n dictoffset = 2 + intLength;\n if (intLength < 3) {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n } else {\n length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));\n }\n }\n if (length * 2 * objectRefSize > exports.maxObjectSize) {\n throw new Error(\"To little heap space available!\");\n }\n if (debug) {\n console.log(\"Parsing dictionary #\" + tableOffset);\n }\n const dict = {};\n for (let i = 0; i < length; i++) {\n const keyRef = readUInt(buffer.slice(offset + dictoffset + i * objectRefSize, offset + dictoffset + (i + 1) * objectRefSize));\n const valRef = readUInt(buffer.slice(offset + dictoffset + (length * objectRefSize) + i * objectRefSize, offset + dictoffset + (length * objectRefSize) + (i + 1) * objectRefSize));\n const key = parseObject(keyRef);\n const val = parseObject(valRef);\n if (debug) {\n console.log(\" DICT #\" + tableOffset + \": Mapped \" + key + \" to \" + val);\n }\n dict[key] = val;\n }\n return dict;\n }\n }\n\n return [ parseObject(topObject) ];\n};\n\nfunction readUInt(buffer, start) {\n start = start || 0;\n\n let l = 0;\n for (let i = start; i < buffer.length; i++) {\n l <<= 8;\n l |= buffer[i] & 0xFF;\n }\n return l;\n}\n\n// we're just going to toss the high order bits because javascript doesn't have 64-bit ints\nfunction readUInt64BE(buffer, start) {\n const data = buffer.slice(start, start + 8);\n return data.readUInt32BE(4, 8);\n}\n\nfunction swapBytes(buffer) {\n const len = buffer.length;\n for (let i = 0; i < len; i += 2) {\n const a = buffer[i];\n buffer[i] = buffer[i+1];\n buffer[i+1] = a;\n }\n return buffer;\n}\n", "module.exports = {\r\n\tDEFAULT_INITIAL_SIZE: (8 * 1024),\r\n\tDEFAULT_INCREMENT_AMOUNT: (8 * 1024),\r\n\tDEFAULT_FREQUENCY: 1,\r\n\tDEFAULT_CHUNK_SIZE: 1024\r\n};\r\n", "var stream = require(\"stream\"),\r\n\tconstants = require(\"./constants\"),\r\n\tutil = require(\"util\");\r\n\r\nvar ReadableStreamBuffer = module.exports = function(opts) {\r\n\tvar that = this;\r\n\r\n\tstream.Stream.call(this);\r\n\r\n\topts = opts || {};\r\n\tvar frequency = opts.hasOwnProperty(\"frequency\") ? opts.frequency : constants.DEFAULT_FREQUENCY;\r\n\tvar chunkSize = opts.chunkSize || constants.DEFAULT_CHUNK_SIZE;\r\n\tvar initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE;\r\n\tvar incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT;\r\n\r\n\tvar size = 0;\r\n\tvar buffer = new Buffer(initialSize);\r\n\tvar encoding = null;\r\n\r\n\tthis.readable = true;\r\n\tthis.writable = false;\r\n\r\n\tvar sendData = function() {\r\n\t\tvar amount = Math.min(chunkSize, size);\r\n\r\n\t\tif (amount > 0) {\r\n\t\t\tvar chunk = null;\r\n\t\t\tif(encoding) {\r\n\t\t\t\tchunk = buffer.toString(encoding, 0, amount);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tchunk = new Buffer(amount);\r\n\t\t\t\tbuffer.copy(chunk, 0, 0, amount);\r\n\t\t\t}\r\n\r\n\t\t\tthat.emit(\"data\", chunk);\r\n\r\n\t\t\tif(amount < buffer.length)\r\n\t\t\t\tbuffer.copy(buffer, 0, amount, size);\r\n\t\t\tsize -= amount;\r\n\t\t}\r\n\r\n\t\tif(size === 0 && !that.readable) {\r\n\t\t\tthat.emit(\"end\");\r\n\t\t\tthat.emit(\"close\");\r\n\t\t\tif (sendData && sendData.interval) {\r\n\t\t\t\tclearInterval(sendData.interval);\r\n\t\t\t\tsendData.interval = null;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.size = function() {\r\n\t\treturn size;\r\n\t};\r\n\r\n\tthis.maxSize = function() {\r\n\t\treturn buffer.length;\r\n\t};\r\n\r\n\tvar increaseBufferIfNecessary = function(incomingDataSize) {\r\n\t\tif((buffer.length - size) < incomingDataSize) {\r\n\t\t\tvar factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount);\r\n\r\n\t\t\tvar newBuffer = new Buffer(buffer.length + (incrementAmount * factor));\r\n\t\t\tbuffer.copy(newBuffer, 0, 0, size);\r\n\t\t\tbuffer = newBuffer;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.put = function(data, encoding) {\r\n\t\tif(!that.readable) return;\r\n\r\n\t\tvar wasEmpty = size === 0;\r\n\t\tif(Buffer.isBuffer(data)) {\r\n\t\t\tincreaseBufferIfNecessary(data.length);\r\n\t\t\tdata.copy(buffer, size, 0);\r\n\t\t\tsize += data.length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata = data + \"\";\r\n\t\t\tvar dataSizeInBytes = Buffer.byteLength(data);\r\n\t\t\tincreaseBufferIfNecessary(dataSizeInBytes);\r\n\t\t\tbuffer.write(data, size, encoding || \"utf8\");\r\n\t\t\tsize += dataSizeInBytes;\r\n\t\t}\r\n\r\n\t\tif (wasEmpty && size > 0) {\r\n\t\t\tthis.emit('readable')\r\n\t\t}\r\n\r\n\t\tif (!this.isPaused && !frequency) {\r\n\t\t\twhile (size > 0) {\r\n\t\t\t\tsendData();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tthis.pause = function() {\r\n\t\tthis.isPaused = true;\r\n\t\tif(sendData && sendData.interval) {\r\n\t\t\tclearInterval(sendData.interval);\r\n\t\t\tdelete sendData.interval;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.resume = function() {\r\n\t\tthis.isPaused = false;\r\n\t\tif(sendData && !sendData.interval && frequency > 0) {\r\n\t\t\tsendData.interval = setInterval(sendData, frequency);\r\n\t\t}\r\n\t};\r\n\r\n\tthis.destroy = function() {\r\n\t\tthat.emit(\"end\");\r\n\t\tif(sendData.interval) clearInterval(sendData.interval);\r\n\t\tsendData = null;\r\n\t\tthat.readable = false;\r\n\t\tthat.emit(\"close\");\r\n\t};\r\n\r\n\tthis.destroySoon = function() {\r\n\t\tthat.readable = false;\r\n\t\tif (!sendData.interval) {\r\n\t\t\tthat.emit(\"end\");\r\n\t\t\tthat.emit(\"close\");\r\n\t\t}\r\n\t};\r\n\r\n\tthis.setEncoding = function(_encoding) {\r\n\t\tencoding = _encoding;\r\n\t};\r\n\r\n\tthis.resume();\r\n};\r\nutil.inherits(ReadableStreamBuffer, stream.Stream);\r\n", "var util = require(\"util\"),\r\n\tstream = require(\"stream\"),\r\n\tconstants = require(\"./constants\");\r\n\r\n// TODO: clear up specs on returning false from a write and emitting a drain event.\r\n// Does this mean if I return false from a write, I should ignore any write requests between that false return and the drain event?\r\nvar WritableStreamBuffer = module.exports = function(opts) {\r\n\tvar that = this;\r\n\r\n\tstream.Stream.call(this);\r\n\r\n\topts = opts || {};\r\n\tvar initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE;\r\n\tvar incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT;\r\n\r\n\tvar buffer = new Buffer(initialSize);\r\n\tvar size = 0;\r\n\r\n\tthis.writable = true;\r\n\tthis.readable = false;\r\n\r\n\tthis.size = function() {\r\n\t\treturn size;\r\n\t};\r\n\r\n\tthis.maxSize = function() {\r\n\t\treturn buffer.length;\r\n\t};\r\n\r\n\tthis.getContents = function(length) {\r\n\t\tif(!size) return false;\r\n\r\n\t\tvar data = new Buffer(Math.min(length || size, size));\r\n\t\tbuffer.copy(data, 0, 0, data.length);\r\n\r\n\t\tif(data.length < size)\r\n\t\t\tbuffer.copy(buffer, 0, data.length);\r\n\r\n\t\tsize -= data.length;\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tthis.getContentsAsString = function(encoding, length) {\r\n\t\tif(!size) return false;\r\n\r\n\t\tvar data = buffer.toString(encoding || \"utf8\", 0, Math.min(length || size, size));\r\n\t\tvar dataLength = Buffer.byteLength(data);\r\n\r\n\t\tif(dataLength < size)\r\n\t\t\tbuffer.copy(buffer, 0, dataLength);\r\n\r\n\t\tsize -= dataLength;\r\n\t\treturn data;\r\n\t};\r\n\r\n\tvar increaseBufferIfNecessary = function(incomingDataSize) {\r\n\t\tif((buffer.length - size) < incomingDataSize) {\r\n\t\t\tvar factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount);\r\n\r\n\t\t\tvar newBuffer = new Buffer(buffer.length + (incrementAmount * factor));\r\n\t\t\tbuffer.copy(newBuffer, 0, 0, size);\r\n\t\t\tbuffer = newBuffer;\r\n\t\t}\r\n\t};\r\n\r\n\tthis.write = function(data, encoding, callback) {\r\n\t\tif(!that.writable) return;\r\n\r\n\t\tif(Buffer.isBuffer(data)) {\r\n\t\t\tincreaseBufferIfNecessary(data.length);\r\n\t\t\tdata.copy(buffer, size, 0);\r\n\t\t\tsize += data.length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata = data + \"\";\r\n\t\t\tincreaseBufferIfNecessary(Buffer.byteLength(data));\r\n\t\t\tbuffer.write(data, size, encoding || \"utf8\");\r\n\t\t\tsize += Buffer.byteLength(data);\r\n\t\t}\r\n\t\t\r\n\t\tif(typeof callback === \"function\") { callback() ;}\r\n\t};\r\n\r\n\tthis.end = function() {\r\n\t\tvar args = Array.prototype.slice.apply(arguments);\r\n\t\tif(args.length) that.write.apply(that, args);\r\n\t\tthat.emit('finish');\r\n\t\tthat.destroy();\r\n\t};\r\n\r\n\tthis.destroySoon = this.destroy = function() {\r\n\t\tthat.writable = false;\r\n\t\tthat.emit(\"close\");\r\n\t};\r\n};\r\nutil.inherits(WritableStreamBuffer, stream.Stream);\r\n", "module.exports = require(\"./constants\");\r\nmodule.exports.ReadableStreamBuffer = require(\"./readable_streambuffer\");\r\nmodule.exports.WritableStreamBuffer = require(\"./writable_streambuffer\");\r\n", "'use strict';\n\n// adapted from http://code.google.com/p/plist/source/browse/trunk/src/main/java/com/dd/plist/BinaryPropertyListWriter.java\n\nvar streamBuffers = require(\"stream-buffers\");\n\nvar debug = false;\n\nfunction Real(value) {\n this.value = value;\n}\n\nmodule.exports = function(dicts) {\n var buffer = new streamBuffers.WritableStreamBuffer();\n buffer.write(new Buffer(\"bplist00\"));\n\n if (debug) {\n console.log('create', require('util').inspect(dicts, false, 10));\n }\n\n if (dicts instanceof Array && dicts.length === 1) {\n dicts = dicts[0];\n }\n\n var entries = toEntries(dicts);\n if (debug) {\n console.log('entries', entries);\n }\n var idSizeInBytes = computeIdSizeInBytes(entries.length);\n var offsets = [];\n var offsetSizeInBytes;\n var offsetTableOffset;\n\n updateEntryIds();\n\n entries.forEach(function(entry, entryIdx) {\n offsets[entryIdx] = buffer.size();\n if (!entry) {\n buffer.write(0x00);\n } else {\n write(entry);\n }\n });\n\n writeOffsetTable();\n writeTrailer();\n return buffer.getContents();\n\n function updateEntryIds() {\n var strings = {};\n var entryId = 0;\n entries.forEach(function(entry) {\n if (entry.id) {\n return;\n }\n if (entry.type === 'string') {\n if (!entry.bplistOverride && strings.hasOwnProperty(entry.value)) {\n entry.type = 'stringref';\n entry.id = strings[entry.value];\n } else {\n strings[entry.value] = entry.id = entryId++;\n }\n } else {\n entry.id = entryId++;\n }\n });\n\n entries = entries.filter(function(entry) {\n return (entry.type !== 'stringref');\n });\n }\n\n function writeTrailer() {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer');\n }\n // 6 null bytes\n buffer.write(new Buffer([0, 0, 0, 0, 0, 0]));\n\n // size of an offset\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offsetSizeInBytes):', offsetSizeInBytes);\n }\n writeByte(offsetSizeInBytes);\n\n // size of a ref\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offsetSizeInBytes):', idSizeInBytes);\n }\n writeByte(idSizeInBytes);\n\n // number of objects\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(number of objects):', entries.length);\n }\n writeLong(entries.length);\n\n // top object\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(top object)');\n }\n writeLong(0);\n\n // offset table offset\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeTrailer(offset table offset):', offsetTableOffset);\n }\n writeLong(offsetTableOffset);\n }\n\n function writeOffsetTable() {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeOffsetTable');\n }\n offsetTableOffset = buffer.size();\n offsetSizeInBytes = computeOffsetSizeInBytes(offsetTableOffset);\n offsets.forEach(function(offset) {\n writeBytes(offset, offsetSizeInBytes);\n });\n }\n\n function write(entry) {\n switch (entry.type) {\n case 'dict':\n writeDict(entry);\n break;\n case 'number':\n case 'double':\n writeNumber(entry);\n break;\n case 'UID':\n writeUID(entry);\n break;\n case 'array':\n writeArray(entry);\n break;\n case 'boolean':\n writeBoolean(entry);\n break;\n case 'string':\n case 'string-utf16':\n writeString(entry);\n break;\n case 'date':\n writeDate(entry);\n break;\n case 'data':\n writeData(entry);\n break;\n default:\n throw new Error(\"unhandled entry type: \" + entry.type);\n }\n }\n\n function writeDate(entry) {\n writeByte(0x33);\n var date = (Date.parse(entry.value)/1000) - 978307200\n writeDouble(date)\n }\n\n function writeDict(entry) {\n if (debug) {\n var keysStr = entry.entryKeys.map(function(k) {return k.id;});\n var valsStr = entry.entryValues.map(function(k) {return k.id;});\n console.log('0x' + buffer.size().toString(16), 'writeDict', '(id: ' + entry.id + ')', '(keys: ' + keysStr + ')', '(values: ' + valsStr + ')');\n }\n writeIntHeader(0xD, entry.entryKeys.length);\n entry.entryKeys.forEach(function(entry) {\n writeID(entry.id);\n });\n entry.entryValues.forEach(function(entry) {\n writeID(entry.id);\n });\n }\n\n function writeNumber(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeNumber', entry.value, ' (type: ' + entry.type + ')', '(id: ' + entry.id + ')');\n }\n\n if (entry.type !== 'double' && parseFloat(entry.value.toFixed()) == entry.value) {\n if (entry.value < 0) {\n writeByte(0x13);\n writeBytes(entry.value, 8, true);\n } else if (entry.value <= 0xff) {\n writeByte(0x10);\n writeBytes(entry.value, 1);\n } else if (entry.value <= 0xffff) {\n writeByte(0x11);\n writeBytes(entry.value, 2);\n } else if (entry.value <= 0xffffffff) {\n writeByte(0x12);\n writeBytes(entry.value, 4);\n } else {\n writeByte(0x14);\n writeBytes(entry.value, 8);\n }\n } else {\n writeByte(0x23);\n writeDouble(entry.value);\n }\n }\n\n function writeUID(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeUID', entry.value, ' (type: ' + entry.type + ')', '(id: ' + entry.id + ')');\n }\n\n writeIntHeader(0x8, 0x0);\n writeID(entry.value);\n }\n\n function writeArray(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeArray (length: ' + entry.entries.length + ')', '(id: ' + entry.id + ')');\n }\n writeIntHeader(0xA, entry.entries.length);\n entry.entries.forEach(function(e) {\n writeID(e.id);\n });\n }\n\n function writeBoolean(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeBoolean', entry.value, '(id: ' + entry.id + ')');\n }\n writeByte(entry.value ? 0x09 : 0x08);\n }\n\n function writeString(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeString', entry.value, '(id: ' + entry.id + ')');\n }\n if (entry.type === 'string-utf16' || mustBeUtf16(entry.value)) {\n var utf16 = new Buffer(entry.value, 'ucs2');\n writeIntHeader(0x6, utf16.length / 2);\n // needs to be big endian so swap the bytes\n for (var i = 0; i < utf16.length; i += 2) {\n var t = utf16[i + 0];\n utf16[i + 0] = utf16[i + 1];\n utf16[i + 1] = t;\n }\n buffer.write(utf16);\n } else {\n var utf8 = new Buffer(entry.value, 'ascii');\n writeIntHeader(0x5, utf8.length);\n buffer.write(utf8);\n }\n }\n\n function writeData(entry) {\n if (debug) {\n console.log('0x' + buffer.size().toString(16), 'writeData', entry.value, '(id: ' + entry.id + ')');\n }\n writeIntHeader(0x4, entry.value.length);\n buffer.write(entry.value);\n }\n\n function writeLong(l) {\n writeBytes(l, 8);\n }\n\n function writeByte(b) {\n buffer.write(new Buffer([b]));\n }\n\n function writeDouble(v) {\n var buf = new Buffer(8);\n buf.writeDoubleBE(v, 0);\n buffer.write(buf);\n }\n\n function writeIntHeader(kind, value) {\n if (value < 15) {\n writeByte((kind << 4) + value);\n } else if (value < 256) {\n writeByte((kind << 4) + 15);\n writeByte(0x10);\n writeBytes(value, 1);\n } else if (value < 65536) {\n writeByte((kind << 4) + 15);\n writeByte(0x11);\n writeBytes(value, 2);\n } else {\n writeByte((kind << 4) + 15);\n writeByte(0x12);\n writeBytes(value, 4);\n }\n }\n\n function writeID(id) {\n writeBytes(id, idSizeInBytes);\n }\n\n function writeBytes(value, bytes, is_signedint) {\n // write low-order bytes big-endian style\n var buf = new Buffer(bytes);\n var z = 0;\n\n // javascript doesn't handle large numbers\n if(!is_signedint) {\n while (bytes > 4) {\n buf[z++] = 0;\n bytes--;\n }\n }\n\n for (var i = bytes - 1; i >= 0; i--) {\n buf[z++] = value >> (8 * i);\n }\n buffer.write(buf);\n }\n\n function mustBeUtf16(string) {\n return Buffer.byteLength(string, 'utf8') != string.length;\n }\n};\n\nfunction toEntries(dicts) {\n if (dicts.bplistOverride) {\n return [dicts];\n }\n\n if (dicts instanceof Array) {\n return toEntriesArray(dicts);\n } else if (dicts instanceof Buffer) {\n return [\n {\n type: 'data',\n value: dicts\n }\n ];\n } else if (dicts instanceof Real) {\n return [\n {\n type: 'double',\n value: dicts.value\n }\n ];\n } else if (typeof(dicts) === 'object') {\n if (dicts instanceof Date) {\n return [\n {\n type: 'date',\n value: dicts\n }\n ]\n } else if (Object.keys(dicts).length == 1 && typeof(dicts.UID) === 'number') {\n return [\n {\n type: 'UID',\n value: dicts.UID\n }\n ]\n } else {\n return toEntriesObject(dicts);\n }\n } else if (typeof(dicts) === 'string') {\n return [\n {\n type: 'string',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'number') {\n return [\n {\n type: 'number',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'boolean') {\n return [\n {\n type: 'boolean',\n value: dicts\n }\n ];\n } else if (typeof(dicts) === 'bigint') {\n return [\n {\n type: 'number',\n value: Number(BigInt.asIntN(32, dicts))\n }\n ];\n } else {\n throw new Error('unhandled entry: ' + dicts);\n }\n}\n\nfunction toEntriesArray(arr) {\n if (debug) {\n console.log('toEntriesArray');\n }\n var results = [\n {\n type: 'array',\n entries: []\n }\n ];\n arr.forEach(function(v) {\n var entry = toEntries(v);\n results[0].entries.push(entry[0]);\n results = results.concat(entry);\n });\n return results;\n}\n\nfunction toEntriesObject(dict) {\n if (debug) {\n console.log('toEntriesObject');\n }\n var results = [\n {\n type: 'dict',\n entryKeys: [],\n entryValues: []\n }\n ];\n Object.keys(dict).forEach(function(key) {\n var entryKey = toEntries(key);\n results[0].entryKeys.push(entryKey[0]);\n results = results.concat(entryKey[0]);\n });\n Object.keys(dict).forEach(function(key) {\n var entryValue = toEntries(dict[key]);\n results[0].entryValues.push(entryValue[0]);\n results = results.concat(entryValue);\n });\n return results;\n}\n\nfunction computeOffsetSizeInBytes(maxOffset) {\n if (maxOffset < 256) {\n return 1;\n }\n if (maxOffset < 65536) {\n return 2;\n }\n if (maxOffset < 4294967296) {\n return 4;\n }\n return 8;\n}\n\nfunction computeIdSizeInBytes(numberOfIds) {\n if (numberOfIds < 256) {\n return 1;\n }\n if (numberOfIds < 65536) {\n return 2;\n }\n return 4;\n}\n\nmodule.exports.Real = Real;\n", "//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\r\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\r\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\r\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\r\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\r\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\r\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\r\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\r\n\r\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\r\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\r\nvar S_TAG = 0;//tag name offerring\r\nvar S_ATTR = 1;//attr name offerring \r\nvar S_ATTR_SPACE=2;//attr name end and space offer\r\nvar S_EQ = 3;//=space?\r\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\r\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\r\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\r\nvar S_TAG_CLOSE = 7;//closed el\r\n\r\nfunction XMLReader(){\r\n\t\r\n}\r\n\r\nXMLReader.prototype = {\r\n\tparse:function(source,defaultNSMap,entityMap){\r\n\t\tvar domBuilder = this.domBuilder;\r\n\t\tdomBuilder.startDocument();\r\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\r\n\t\tparse(source,defaultNSMap,entityMap,\r\n\t\t\t\tdomBuilder,this.errorHandler);\r\n\t\tdomBuilder.endDocument();\r\n\t}\r\n}\r\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\r\n\tfunction fixedFromCharCode(code) {\r\n\t\t// String.prototype.fromCharCode does not supports\r\n\t\t// > 2 bytes unicode chars directly\r\n\t\tif (code > 0xffff) {\r\n\t\t\tcode -= 0x10000;\r\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\r\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\r\n\r\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\r\n\t\t} else {\r\n\t\t\treturn String.fromCharCode(code);\r\n\t\t}\r\n\t}\r\n\tfunction entityReplacer(a){\r\n\t\tvar k = a.slice(1,-1);\r\n\t\tif(k in entityMap){\r\n\t\t\treturn entityMap[k]; \r\n\t\t}else if(k.charAt(0) === '#'){\r\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\r\n\t\t}else{\r\n\t\t\terrorHandler.error('entity not found:'+a);\r\n\t\t\treturn a;\r\n\t\t}\r\n\t}\r\n\tfunction appendText(end){//has some bugs\r\n\t\tif(end>start){\r\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\tlocator&&position(start);\r\n\t\t\tdomBuilder.characters(xt,0,end-start);\r\n\t\t\tstart = end\r\n\t\t}\r\n\t}\r\n\tfunction position(p,m){\r\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\r\n\t\t\tlineStart = m.index;\r\n\t\t\tlineEnd = lineStart + m[0].length;\r\n\t\t\tlocator.lineNumber++;\r\n\t\t\t//console.log('line++:',locator,startPos,endPos)\r\n\t\t}\r\n\t\tlocator.columnNumber = p-lineStart+1;\r\n\t}\r\n\tvar lineStart = 0;\r\n\tvar lineEnd = 0;\r\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\r\n\tvar locator = domBuilder.locator;\r\n\t\r\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\r\n\tvar closeMap = {};\r\n\tvar start = 0;\r\n\twhile(true){\r\n\t\ttry{\r\n\t\t\tvar tagStart = source.indexOf('<',start);\r\n\t\t\tif(tagStart<0){\r\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\r\n\t\t\t\t\tvar doc = domBuilder.doc;\r\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\r\n\t \t\t\tdoc.appendChild(text);\r\n\t \t\t\tdomBuilder.currentElement = text;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif(tagStart>start){\r\n\t\t\t\tappendText(tagStart);\r\n\t\t\t}\r\n\t\t\tswitch(source.charAt(tagStart+1)){\r\n\t\t\tcase '/':\r\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\r\n\t\t\t\tvar tagName = source.substring(tagStart+2,end);\r\n\t\t\t\tvar config = parseStack.pop();\r\n\t\t\t\tif(end<0){\r\n\t\t\t\t\t\r\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\r\n\t \t\t//console.error('#@@@@@@'+tagName)\r\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\r\n\t \t\tend = tagStart+1+tagName.length;\r\n\t \t}else if(tagName.match(/\\s\r\n\t\t\t\tlocator&&position(tagStart);\r\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\r\n\t\t\t\tbreak;\r\n\t\t\tcase '!':// start){\r\n\t\t\tstart = end;\r\n\t\t}else{\r\n\t\t\t//TODO: \u8FD9\u91CC\u6709\u53EF\u80FDsax\u56DE\u9000\uFF0C\u6709\u4F4D\u7F6E\u9519\u8BEF\u98CE\u9669\r\n\t\t\tappendText(Math.max(tagStart,start)+1);\r\n\t\t}\r\n\t}\r\n}\r\nfunction copyLocator(f,t){\r\n\tt.lineNumber = f.lineNumber;\r\n\tt.columnNumber = f.columnNumber;\r\n\treturn t;\r\n}\r\n\r\n/**\r\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\r\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\r\n */\r\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\r\n\tvar attrName;\r\n\tvar value;\r\n\tvar p = ++start;\r\n\tvar s = S_TAG;//status\r\n\twhile(true){\r\n\t\tvar c = source.charAt(p);\r\n\t\tswitch(c){\r\n\t\tcase '=':\r\n\t\t\tif(s === S_ATTR){//attrName\r\n\t\t\t\tattrName = source.slice(start,p);\r\n\t\t\t\ts = S_EQ;\r\n\t\t\t}else if(s === S_ATTR_SPACE){\r\n\t\t\t\ts = S_EQ;\r\n\t\t\t}else{\r\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\r\n\t\t\t\tthrow new Error('attribute equal must after attrName');\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase '\\'':\r\n\t\tcase '\"':\r\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\r\n\t\t\t\t){//equal\r\n\t\t\t\tif(s === S_ATTR){\r\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\r\n\t\t\t\t\tattrName = source.slice(start,p)\r\n\t\t\t\t}\r\n\t\t\t\tstart = p+1;\r\n\t\t\t\tp = source.indexOf(c,start)\r\n\t\t\t\tif(p>0){\r\n\t\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t\tel.add(attrName,value,start-1);\r\n\t\t\t\t\ts = S_ATTR_END;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//fatalError: no end quot match\r\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\r\n\t\t\t\t}\r\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\r\n\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t//console.log(attrName,value,start,p)\r\n\t\t\t\tel.add(attrName,value,start);\r\n\t\t\t\t//console.dir(el)\r\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\r\n\t\t\t\tstart = p+1;\r\n\t\t\t\ts = S_ATTR_END\r\n\t\t\t}else{\r\n\t\t\t\t//fatalError: no equal before\r\n\t\t\t\tthrow new Error('attribute value must after \"=\"');\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase '/':\r\n\t\t\tswitch(s){\r\n\t\t\tcase S_TAG:\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\tcase S_ATTR_END:\r\n\t\t\tcase S_TAG_SPACE:\r\n\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\ts =S_TAG_CLOSE;\r\n\t\t\t\tel.closed = true;\r\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\r\n\t\t\tcase S_ATTR:\r\n\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\tbreak;\r\n\t\t\t//case S_EQ:\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\")\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase ''://end document\r\n\t\t\t//throw new Error('unexpected end of input')\r\n\t\t\terrorHandler.error('unexpected end of input');\r\n\t\t\tif(s == S_TAG){\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\t}\r\n\t\t\treturn p;\r\n\t\tcase '>':\r\n\t\t\tswitch(s){\r\n\t\t\tcase S_TAG:\r\n\t\t\t\tel.setTagName(source.slice(start,p));\r\n\t\t\tcase S_ATTR_END:\r\n\t\t\tcase S_TAG_SPACE:\r\n\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\tbreak;//normal\r\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\r\n\t\t\tcase S_ATTR:\r\n\t\t\t\tvalue = source.slice(start,p);\r\n\t\t\t\tif(value.slice(-1) === '/'){\r\n\t\t\t\t\tel.closed = true;\r\n\t\t\t\t\tvalue = value.slice(0,-1)\r\n\t\t\t\t}\r\n\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\tif(s === S_ATTR_SPACE){\r\n\t\t\t\t\tvalue = attrName;\r\n\t\t\t\t}\r\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\r\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\r\n\t\t\t\t\tel.add(attrName,value.replace(/&#?\\w+;/g,entityReplacer),start)\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)){\r\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\r\n\t\t\t\t\t}\r\n\t\t\t\t\tel.add(value,value,start)\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase S_EQ:\r\n\t\t\t\tthrow new Error('attribute value missed!!');\r\n\t\t\t}\r\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\r\n\t\t\treturn p;\r\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\r\n\t\tcase '\\u0080':\r\n\t\t\tc = ' ';\r\n\t\tdefault:\r\n\t\t\tif(c<= ' '){//space\r\n\t\t\t\tswitch(s){\r\n\t\t\t\tcase S_TAG:\r\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\r\n\t\t\t\t\ts = S_TAG_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR:\r\n\t\t\t\t\tattrName = source.slice(start,p)\r\n\t\t\t\t\ts = S_ATTR_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\r\n\t\t\t\t\tvar value = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\r\n\t\t\t\t\tel.add(attrName,value,start)\r\n\t\t\t\tcase S_ATTR_END:\r\n\t\t\t\t\ts = S_TAG_SPACE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t//case S_TAG_SPACE:\r\n\t\t\t\t//case S_EQ:\r\n\t\t\t\t//case S_ATTR_SPACE:\r\n\t\t\t\t//\tvoid();break;\r\n\t\t\t\t//case S_TAG_CLOSE:\r\n\t\t\t\t\t//ignore warning\r\n\t\t\t\t}\r\n\t\t\t}else{//not space\r\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\r\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\r\n\t\t\t\tswitch(s){\r\n\t\t\t\t//case S_TAG:void();break;\r\n\t\t\t\t//case S_ATTR:void();break;\r\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\r\n\t\t\t\tcase S_ATTR_SPACE:\r\n\t\t\t\t\tvar tagName = el.tagName;\r\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)){\r\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\r\n\t\t\t\t\t}\r\n\t\t\t\t\tel.add(attrName,attrName,start);\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\ts = S_ATTR;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_ATTR_END:\r\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\r\n\t\t\t\tcase S_TAG_SPACE:\r\n\t\t\t\t\ts = S_ATTR;\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_EQ:\r\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\r\n\t\t\t\t\tstart = p;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase S_TAG_CLOSE:\r\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}//end outer switch\r\n\t\t//console.log('p++',p)\r\n\t\tp++;\r\n\t}\r\n}\r\n/**\r\n * @return true if has new namespace define\r\n */\r\nfunction appendElement(el,domBuilder,currentNSMap){\r\n\tvar tagName = el.tagName;\r\n\tvar localNSMap = null;\r\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\r\n\tvar i = el.length;\r\n\twhile(i--){\r\n\t\tvar a = el[i];\r\n\t\tvar qName = a.qName;\r\n\t\tvar value = a.value;\r\n\t\tvar nsp = qName.indexOf(':');\r\n\t\tif(nsp>0){\r\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\r\n\t\t\tvar localName = qName.slice(nsp+1);\r\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\r\n\t\t}else{\r\n\t\t\tlocalName = qName;\r\n\t\t\tprefix = null\r\n\t\t\tnsPrefix = qName === 'xmlns' && ''\r\n\t\t}\r\n\t\t//can not set prefix,because prefix !== ''\r\n\t\ta.localName = localName ;\r\n\t\t//prefix == null for no ns prefix attribute \r\n\t\tif(nsPrefix !== false){//hack!!\r\n\t\t\tif(localNSMap == null){\r\n\t\t\t\tlocalNSMap = {}\r\n\t\t\t\t//console.log(currentNSMap,0)\r\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\r\n\t\t\t\t//console.log(currentNSMap,1)\r\n\t\t\t}\r\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\r\n\t\t\ta.uri = 'http://www.w3.org/2000/xmlns/'\r\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value) \r\n\t\t}\r\n\t}\r\n\tvar i = el.length;\r\n\twhile(i--){\r\n\t\ta = el[i];\r\n\t\tvar prefix = a.prefix;\r\n\t\tif(prefix){//no prefix attribute has no namespace\r\n\t\t\tif(prefix === 'xml'){\r\n\t\t\t\ta.uri = 'http://www.w3.org/XML/1998/namespace';\r\n\t\t\t}if(prefix !== 'xmlns'){\r\n\t\t\t\ta.uri = currentNSMap[prefix || '']\r\n\t\t\t\t\r\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tvar nsp = tagName.indexOf(':');\r\n\tif(nsp>0){\r\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\r\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\r\n\t}else{\r\n\t\tprefix = null;//important!!\r\n\t\tlocalName = el.localName = tagName;\r\n\t}\r\n\t//no prefix element has default namespace\r\n\tvar ns = el.uri = currentNSMap[prefix || ''];\r\n\tdomBuilder.startElement(ns,localName,tagName,el);\r\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\r\n\t//localNSMap = null\r\n\tif(el.closed){\r\n\t\tdomBuilder.endElement(ns,localName,tagName);\r\n\t\tif(localNSMap){\r\n\t\t\tfor(prefix in localNSMap){\r\n\t\t\t\tdomBuilder.endPrefixMapping(prefix) \r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tel.currentNSMap = currentNSMap;\r\n\t\tel.localNSMap = localNSMap;\r\n\t\t//parseStack.push(el);\r\n\t\treturn true;\r\n\t}\r\n}\r\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\r\n\tif(/^(?:script|textarea)$/i.test(tagName)){\r\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\r\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\r\n\t\tif(/[&<]/.test(text)){\r\n\t\t\tif(/^script$/i.test(tagName)){\r\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\r\n\t\t\t\t\t//lexHandler.startCDATA();\r\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\r\n\t\t\t\t\t//lexHandler.endCDATA();\r\n\t\t\t\t\treturn elEndStart;\r\n\t\t\t\t//}\r\n\t\t\t}//}else{//text area\r\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\r\n\t\t\t\tdomBuilder.characters(text,0,text.length);\r\n\t\t\t\treturn elEndStart;\r\n\t\t\t//}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n\treturn elStartEnd+1;\r\n}\r\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\r\n\t//if(tagName in closeMap){\r\n\tvar pos = closeMap[tagName];\r\n\tif(pos == null){\r\n\t\t//console.log(tagName)\r\n\t\tpos = source.lastIndexOf('')\r\n\t\tif(pos',start+4);\r\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM \"',sysid,'\">');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i','amp':'&','quot':'\"','apos':\"'\"}\r\n\tif(locator){\r\n\t\tdomBuilder.setDocumentLocator(locator)\r\n\t}\r\n\t\r\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\r\n\tsax.domBuilder = options.domBuilder || domBuilder;\r\n\tif(/\\/x?html?$/.test(mimeType)){\r\n\t\tentityMap.nbsp = '\\xa0';\r\n\t\tentityMap.copy = '\\xa9';\r\n\t\tdefaultNSMap['']= 'http://www.w3.org/1999/xhtml';\r\n\t}\r\n\tdefaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace';\r\n\tif(source){\r\n\t\tsax.parse(source,defaultNSMap,entityMap);\r\n\t}else{\r\n\t\tsax.errorHandler.error(\"invalid doc source\");\r\n\t}\r\n\treturn domBuilder.doc;\r\n}\r\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\r\n\tif(!errorImpl){\r\n\t\tif(domBuilder instanceof DOMHandler){\r\n\t\t\treturn domBuilder;\r\n\t\t}\r\n\t\terrorImpl = domBuilder ;\r\n\t}\r\n\tvar errorHandler = {}\r\n\tvar isCallback = errorImpl instanceof Function;\r\n\tlocator = locator||{}\r\n\tfunction build(key){\r\n\t\tvar fn = errorImpl[key];\r\n\t\tif(!fn && isCallback){\r\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\r\n\t\t}\r\n\t\terrorHandler[key] = fn && function(msg){\r\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\r\n\t\t}||function(){};\r\n\t}\r\n\tbuild('warning');\r\n\tbuild('error');\r\n\tbuild('fatalError');\r\n\treturn errorHandler;\r\n}\r\n\r\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\r\n/**\r\n * +ContentHandler+ErrorHandler\r\n * +LexicalHandler+EntityResolver2\r\n * -DeclHandler-DTDHandler \r\n * \r\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\r\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\r\n */\r\nfunction DOMHandler() {\r\n this.cdata = false;\r\n}\r\nfunction position(locator,node){\r\n\tnode.lineNumber = locator.lineNumber;\r\n\tnode.columnNumber = locator.columnNumber;\r\n}\r\n/**\r\n * @see org.xml.sax.ContentHandler#startDocument\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\r\n */ \r\nDOMHandler.prototype = {\r\n\tstartDocument : function() {\r\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\r\n \tif (this.locator) {\r\n \tthis.doc.documentURI = this.locator.systemId;\r\n \t}\r\n\t},\r\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\r\n\t\tvar doc = this.doc;\r\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\r\n\t var len = attrs.length;\r\n\t appendElement(this, el);\r\n\t this.currentElement = el;\r\n\t \r\n\t\tthis.locator && position(this.locator,el)\r\n\t for (var i = 0 ; i < len; i++) {\r\n\t var namespaceURI = attrs.getURI(i);\r\n\t var value = attrs.getValue(i);\r\n\t var qName = attrs.getQName(i);\r\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\r\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\r\n\t\t\tattr.value = attr.nodeValue = value;\r\n\t\t\tel.setAttributeNode(attr)\r\n\t }\r\n\t},\r\n\tendElement:function(namespaceURI, localName, qName) {\r\n\t\tvar current = this.currentElement\r\n\t\tvar tagName = current.tagName;\r\n\t\tthis.currentElement = current.parentNode;\r\n\t},\r\n\tstartPrefixMapping:function(prefix, uri) {\r\n\t},\r\n\tendPrefixMapping:function(prefix) {\r\n\t},\r\n\tprocessingInstruction:function(target, data) {\r\n\t var ins = this.doc.createProcessingInstruction(target, data);\r\n\t this.locator && position(this.locator,ins)\r\n\t appendElement(this, ins);\r\n\t},\r\n\tignorableWhitespace:function(ch, start, length) {\r\n\t},\r\n\tcharacters:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t\t//console.log(chars)\r\n\t\tif(chars){\r\n\t\t\tif (this.cdata) {\r\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\r\n\t\t\t} else {\r\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\r\n\t\t\t}\r\n\t\t\tif(this.currentElement){\r\n\t\t\t\tthis.currentElement.appendChild(charNode);\r\n\t\t\t}else if(/^\\s*$/.test(chars)){\r\n\t\t\t\tthis.doc.appendChild(charNode);\r\n\t\t\t\t//process xml\r\n\t\t\t}\r\n\t\t\tthis.locator && position(this.locator,charNode)\r\n\t\t}\r\n\t},\r\n\tskippedEntity:function(name) {\r\n\t},\r\n\tendDocument:function() {\r\n\t\tthis.doc.normalize();\r\n\t},\r\n\tsetDocumentLocator:function (locator) {\r\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\r\n\t \tlocator.lineNumber = 0;\r\n\t }\r\n\t},\r\n\t//LexicalHandler\r\n\tcomment:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t var comm = this.doc.createComment(chars);\r\n\t this.locator && position(this.locator,comm)\r\n\t appendElement(this, comm);\r\n\t},\r\n\t\r\n\tstartCDATA:function() {\r\n\t //used in characters() methods\r\n\t this.cdata = true;\r\n\t},\r\n\tendCDATA:function() {\r\n\t this.cdata = false;\r\n\t},\r\n\t\r\n\tstartDTD:function(name, publicId, systemId) {\r\n\t\tvar impl = this.doc.implementation;\r\n\t if (impl && impl.createDocumentType) {\r\n\t var dt = impl.createDocumentType(name, publicId, systemId);\r\n\t this.locator && position(this.locator,dt)\r\n\t appendElement(this, dt);\r\n\t }\r\n\t},\r\n\t/**\r\n\t * @see org.xml.sax.ErrorHandler\r\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\r\n\t */\r\n\twarning:function(error) {\r\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\r\n\t},\r\n\terror:function(error) {\r\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\r\n\t},\r\n\tfatalError:function(error) {\r\n\t\tconsole.error('[xmldom fatalError]\\t'+error,_locator(this.locator));\r\n\t throw error;\r\n\t}\r\n}\r\nfunction _locator(l){\r\n\tif(l){\r\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\r\n\t}\r\n}\r\nfunction _toString(chars,start,length){\r\n\tif(typeof chars == 'string'){\r\n\t\treturn chars.substr(start,length)\r\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\r\n\t\tif(chars.length >= start+length || start){\r\n\t\t\treturn new java.lang.String(chars,start,length)+'';\r\n\t\t}\r\n\t\treturn chars;\r\n\t}\r\n}\r\n\r\n/*\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\r\n * used method of org.xml.sax.ext.LexicalHandler:\r\n * #comment(chars, start, length)\r\n * #startCDATA()\r\n * #endCDATA()\r\n * #startDTD(name, publicId, systemId)\r\n *\r\n *\r\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\r\n * #endDTD()\r\n * #startEntity(name)\r\n * #endEntity(name)\r\n *\r\n *\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\r\n * IGNORED method of org.xml.sax.ext.DeclHandler\r\n * \t#attributeDecl(eName, aName, type, mode, value)\r\n * #elementDecl(name, model)\r\n * #externalEntityDecl(name, publicId, systemId)\r\n * #internalEntityDecl(name, value)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\r\n * IGNORED method of org.xml.sax.EntityResolver2\r\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\r\n * #resolveEntity(publicId, systemId)\r\n * #getExternalSubset(name, baseURI)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\r\n * IGNORED method of org.xml.sax.DTDHandler\r\n * #notationDecl(name, publicId, systemId) {};\r\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\r\n */\r\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\r\n\tDOMHandler.prototype[key] = function(){return null}\r\n})\r\n\r\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\r\nfunction appendElement (hander,node) {\r\n if (!hander.currentElement) {\r\n hander.doc.appendChild(node);\r\n } else {\r\n hander.currentElement.appendChild(node);\r\n }\r\n}//appendChild and setAttributeNS are preformance key\r\n\r\n//if(typeof require == 'function'){\r\n\tvar XMLReader = require('./sax').XMLReader;\r\n\tvar DOMImplementation = exports.DOMImplementation = require('./dom').DOMImplementation;\r\n\texports.XMLSerializer = require('./dom').XMLSerializer ;\r\n\texports.DOMParser = DOMParser;\r\n//}\r\n", "/**\n * Module dependencies.\n */\n\nvar DOMParser = require('xmldom').DOMParser;\n\n/**\n * Module exports.\n */\n\nexports.parse = parse;\n\nvar TEXT_NODE = 3;\nvar CDATA_NODE = 4;\nvar COMMENT_NODE = 8;\n\n\n/**\n * We ignore raw text (usually whitespace), ,\n * and raw CDATA nodes.\n *\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\n\nfunction shouldIgnoreNode (node) {\n return node.nodeType === TEXT_NODE\n || node.nodeType === COMMENT_NODE\n || node.nodeType === CDATA_NODE;\n}\n\n/**\n * Check if the node is empty. Some plist file has such node:\n * \n * this node shoud be ignored.\n *\n * @see https://github.com/TooTallNate/plist.js/issues/66\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\nfunction isEmptyNode(node){\n if(!node.childNodes || node.childNodes.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction invariant(test, message) {\n if (!test) {\n throw new Error(message);\n }\n}\n\n/**\n * Parses a Plist XML string. Returns an Object.\n *\n * @param {String} xml - the XML String to decode\n * @returns {Mixed} the decoded value from the Plist XML\n * @api public\n */\n\nfunction parse (xml) {\n var doc = new DOMParser().parseFromString(xml);\n invariant(\n doc.documentElement.nodeName === 'plist',\n 'malformed document. First element should be '\n );\n var plist = parsePlistXML(doc.documentElement);\n\n // the root node gets interpreted as an Array,\n // so pull out the inner data first\n if (plist.length == 1) plist = plist[0];\n\n return plist;\n}\n\n/**\n * Convert an XML based plist document into a JSON representation.\n *\n * @param {Object} xml_node - current XML node in the plist\n * @returns {Mixed} built up JSON object\n * @api private\n */\n\nfunction parsePlistXML (node) {\n var i, new_obj, key, val, new_arr, res, counter, type;\n\n if (!node)\n return null;\n\n if (node.nodeName === 'plist') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n new_arr.push( parsePlistXML(node.childNodes[i]));\n }\n }\n return new_arr;\n } else if (node.nodeName === 'dict') {\n new_obj = {};\n key = null;\n counter = 0;\n if (isEmptyNode(node)) {\n return new_obj;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (shouldIgnoreNode(node.childNodes[i])) continue;\n if (counter % 2 === 0) {\n invariant(\n node.childNodes[i].nodeName === 'key',\n 'Missing key while parsing .'\n );\n key = parsePlistXML(node.childNodes[i]);\n } else {\n invariant(\n node.childNodes[i].nodeName !== 'key',\n 'Unexpected key \"'\n + parsePlistXML(node.childNodes[i])\n + '\" while parsing .'\n );\n new_obj[key] = parsePlistXML(node.childNodes[i]);\n }\n counter += 1;\n }\n if (counter % 2 === 1) {\n throw new Error('Missing value for \"' + key + '\" while parsing ');\n }\n return new_obj;\n\n } else if (node.nodeName === 'array') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n res = parsePlistXML(node.childNodes[i]);\n if (null != res) new_arr.push(res);\n }\n }\n return new_arr;\n\n } else if (node.nodeName === '#text') {\n // TODO: what should we do with text types? (CDATA sections)\n\n } else if (node.nodeName === 'key') {\n if (isEmptyNode(node)) {\n return '';\n }\n return node.childNodes[0].nodeValue;\n } else if (node.nodeName === 'string') {\n res = '';\n if (isEmptyNode(node)) {\n return res;\n }\n for (i=0; i < node.childNodes.length; i++) {\n var type = node.childNodes[i].nodeType;\n if (type === TEXT_NODE || type === CDATA_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return res;\n\n } else if (node.nodeName === 'integer') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as integer.'\n );\n return parseInt(node.childNodes[0].nodeValue, 10);\n\n } else if (node.nodeName === 'real') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as real.'\n );\n res = '';\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return parseFloat(res);\n\n } else if (node.nodeName === 'data') {\n res = '';\n if (isEmptyNode(node)) {\n return Buffer.from(res, 'base64');\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue.replace(/\\s+/g, '');\n }\n }\n return Buffer.from(res, 'base64');\n\n } else if (node.nodeName === 'date') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as Date.'\n )\n return new Date(node.childNodes[0].nodeValue);\n\n } else if (node.nodeName === 'true') {\n return true;\n\n } else if (node.nodeName === 'false') {\n return false;\n }\n}\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var assign, isArray, isEmpty, isFunction, isObject, isPlainObject,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute;\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n if (name == null) {\n throw new Error(\"Missing attribute name of element \" + parent.name);\n }\n if (value == null) {\n throw new Error(\"Missing attribute value for attribute \" + name + \" of element \" + parent.name);\n }\n this.name = this.stringify.attName(name);\n this.value = this.stringify.attValue(value);\n }\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.set(options).attribute(this);\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLElement, XMLNode, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction;\n\n XMLNode = require('./XMLNode');\n\n XMLAttribute = require('./XMLAttribute');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name\");\n }\n this.name = this.stringify.eleName(name);\n this.attributes = {};\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.isDocument) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n }\n }\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attributes = {};\n ref1 = this.attributes;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attributes[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, i, len;\n if (name == null) {\n throw new Error(\"Missing attribute name\");\n }\n name = name.valueOf();\n if (Array.isArray(name)) {\n for (i = 0, len = name.length; i < len; i++) {\n attName = name[i];\n delete this.attributes[attName];\n }\n } else {\n delete this.attributes[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.set(options).element(this);\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text\");\n }\n this.text = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.set(options).cdata(this);\n };\n\n return XMLCData;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLComment, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text\");\n }\n this.text = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.set(options).comment(this);\n };\n\n return XMLComment;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.set(options).declaration(this);\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name\");\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type\");\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default\");\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT\");\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT\");\n }\n this.elementName = this.stringify.eleName(elementName);\n this.attributeName = this.stringify.attName(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdAttList(this);\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing entity name\");\n }\n if (value == null) {\n throw new Error(\"Missing entity value\");\n }\n this.pe = !!pe;\n this.name = this.stringify.eleName(name);\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity\");\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity\");\n }\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity\");\n }\n }\n }\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdEntity(this);\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.eleName(name);\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdElement(this);\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing notation name\");\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity\");\n }\n this.name = this.stringify.eleName(name);\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdNotation(this);\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var ref, ref1;\n XMLDocType.__super__.constructor.call(this, parent);\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref = pubID, pubID = ref.pubID, sysID = ref.sysID;\n }\n if (sysID == null) {\n ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.set(options).docType(this);\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text\");\n }\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.set(options).raw(this);\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLText = (function(superClass) {\n extend(XMLText, superClass);\n\n function XMLText(parent, text) {\n XMLText.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing element text\");\n }\n this.value = this.stringify.eleText(text);\n }\n\n XMLText.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLText.prototype.toString = function(options) {\n return this.options.writer.set(options).text(this);\n };\n\n return XMLText;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target\");\n }\n this.target = this.stringify.insTarget(target);\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.set(options).processingInstruction(this);\n };\n\n return XMLProcessingInstruction;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLProcessingInstruction, XMLRaw, XMLText, isEmpty, isFunction, isObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isEmpty = ref.isEmpty;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.children = [];\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n }\n }\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref1, val;\n lastChild = null;\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if ((isObject(val)) && (isEmpty(val))) {\n val = null;\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n lastChild = this.element(key);\n lastChild.element(val);\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name);\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref1;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element\");\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref1 = [])), ref1;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref1;\n if (name != null) {\n name = name.valueOf();\n }\n attributes || (attributes = {});\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children[0] instanceof XMLDeclaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.doctype = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref1, ref2;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref1 = doc.children;\n for (i = j = 0, len = ref1.length; j < len; i = ++j) {\n child = ref1[i];\n if (child instanceof XMLDocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref2 = doc.children;\n for (i = k = 0, len1 = ref2.length; k < len1; i = ++k) {\n child = ref2[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node\");\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node\");\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n return this.doctype(pubID, sysID);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringifier,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref, value;\n options || (options = {});\n this.noDoubleEncoding = options.noDoubleEncoding;\n ref = options.stringify || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.eleName = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.eleText = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(this.elEscape(val));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n val = '' + val || '';\n val = val.replace(']]>', ']]]]>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attName = function(val) {\n return val = '' + val || '';\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n val = '' + val || '';\n return this.attEscape(val);\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (val != null) {\n return '' + val || '';\n } else {\n return val;\n }\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var res;\n res = str.match(/[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/);\n if (res) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n return str;\n };\n\n XMLStringifier.prototype.elEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(//g, '>').replace(/\\r/g, ' ');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/ 0) {\n return new Array(indent).join(this.indent);\n } else {\n return '';\n }\n } else {\n return '';\n }\n };\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc) {\n var child, i, len, r, ref;\n this.textispresent = false;\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDeclaration):\n return this.declaration(child);\n case !(child instanceof XMLDocType):\n return this.docType(child);\n case !(child instanceof XMLComment):\n return this.comment(child);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child);\n default:\n return this.element(child, 0);\n }\n }).call(this);\n }\n if (this.pretty && r.slice(-this.newline.length) === this.newline) {\n r = r.slice(0, -this.newline.length);\n }\n return r;\n };\n\n XMLStringWriter.prototype.attribute = function(att) {\n return ' ' + att.name + '=\"' + att.value + '\"';\n };\n\n XMLStringWriter.prototype.cdata = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.comment = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.declaration = function(node, level) {\n var r;\n r = this.space(level);\n r += '';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.docType = function(node, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n r = this.space(level);\n r += ' 0) {\n r += ' [';\n r += this.newline;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n return this.dtdAttList(child, level + 1);\n case !(child instanceof XMLDTDElement):\n return this.dtdElement(child, level + 1);\n case !(child instanceof XMLDTDEntity):\n return this.dtdEntity(child, level + 1);\n case !(child instanceof XMLDTDNotation):\n return this.dtdNotation(child, level + 1);\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n r += ']';\n }\n r += this.spacebeforeslash + '>';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.element = function(node, level) {\n var att, child, i, j, len, len1, name, r, ref, ref1, ref2, space, textispresentwasset;\n level || (level = 0);\n textispresentwasset = false;\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n } else {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n space = this.space(level);\n r = '';\n r += space + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n r += '>' + this.newline;\n } else {\n r += this.spacebeforeslash + '/>' + this.newline;\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n r += '>';\n r += node.children[0].value;\n r += '' + this.newline;\n } else {\n if (this.dontprettytextnodes) {\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n if (child.value != null) {\n this.textispresent++;\n textispresentwasset = true;\n break;\n }\n }\n }\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n space = this.space(level);\n }\n r += '>' + this.newline;\n ref2 = node.children;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n child = ref2[j];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLElement):\n return this.element(child, level + 1);\n case !(child instanceof XMLRaw):\n return this.raw(child, level + 1);\n case !(child instanceof XMLText):\n return this.text(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n if (textispresentwasset) {\n this.textispresent--;\n }\n if (!this.textispresent) {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n r += space + '' + this.newline;\n }\n return r;\n };\n\n XMLStringWriter.prototype.processingInstruction = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.raw = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.text = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.dtdAttList = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdElement = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.dtdEntity = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdNotation = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.openNode = function(node, level) {\n var att, name, r, ref;\n level || (level = 0);\n if (node instanceof XMLElement) {\n r = this.space(level) + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n r += (node.children ? '>' : '/>') + this.newline;\n return r;\n } else {\n r = this.space(level) + '') + this.newline;\n return r;\n }\n };\n\n XMLStringWriter.prototype.closeNode = function(node, level) {\n level || (level = 0);\n switch (false) {\n case !(node instanceof XMLElement):\n return this.space(level) + '' + this.newline;\n case !(node instanceof XMLDocType):\n return this.space(level) + ']>' + this.newline;\n }\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLNode = require('./XMLNode');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n this.isDocument = true;\n }\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer.set(writerOptions);\n }\n return writer.document(this);\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.set(options).document(this);\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject;\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter(options);\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter(writerOptions);\n }\n this.options = options;\n this.writer = options.writer;\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node\");\n }\n this.openCurrent();\n name = name.valueOf();\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.dtdElement.apply(this, arguments);\n } else {\n return this.node(name, attributes, text);\n }\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode\");\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.currentNode.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.currentLevel + 1));\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node instanceof XMLElement) {\n this.root = node;\n }\n this.onData(this.writer.openNode(node, this.currentLevel));\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n if (!node.isClosed) {\n this.onData(this.writer.closeNode(node, this.currentLevel));\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk) {\n this.documentStarted = true;\n return this.onDataCallback(chunk);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStreamWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n XMLStreamWriter.__super__.constructor.call(this, options);\n this.stream = stream;\n }\n\n XMLStreamWriter.prototype.document = function(doc) {\n var child, i, j, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n child.isLastRootNode = false;\n }\n doc.children[doc.children.length - 1].isLastRootNode = true;\n ref1 = doc.children;\n results = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n child = ref1[j];\n switch (false) {\n case !(child instanceof XMLDeclaration):\n results.push(this.declaration(child));\n break;\n case !(child instanceof XMLDocType):\n results.push(this.docType(child));\n break;\n case !(child instanceof XMLComment):\n results.push(this.comment(child));\n break;\n case !(child instanceof XMLProcessingInstruction):\n results.push(this.processingInstruction(child));\n break;\n default:\n results.push(this.element(child));\n }\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att) {\n return this.stream.write(' ' + att.name + '=\"' + att.value + '\"');\n };\n\n XMLStreamWriter.prototype.cdata = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.comment = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, level) {\n this.stream.write(this.space(level));\n this.stream.write('');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.docType = function(node, level) {\n var child, i, len, ref;\n level || (level = 0);\n this.stream.write(this.space(level));\n this.stream.write(' 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node));\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n this.dtdAttList(child, level + 1);\n break;\n case !(child instanceof XMLDTDElement):\n this.dtdElement(child, level + 1);\n break;\n case !(child instanceof XMLDTDEntity):\n this.dtdEntity(child, level + 1);\n break;\n case !(child instanceof XMLDTDNotation):\n this.dtdNotation(child, level + 1);\n break;\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }\n this.stream.write(']');\n }\n this.stream.write(this.spacebeforeslash + '>');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.element = function(node, level) {\n var att, child, i, len, name, ref, ref1, space;\n level || (level = 0);\n space = this.space(level);\n this.stream.write(space + '<' + node.name);\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n this.stream.write('>');\n } else {\n this.stream.write(this.spacebeforeslash + '/>');\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n this.stream.write('>');\n this.stream.write(node.children[0].value);\n this.stream.write('');\n } else {\n this.stream.write('>' + this.newline);\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n switch (false) {\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLElement):\n this.element(child, level + 1);\n break;\n case !(child instanceof XMLRaw):\n this.raw(child, level + 1);\n break;\n case !(child instanceof XMLText):\n this.text(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }\n this.stream.write(space + '');\n }\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.raw = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.text = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.endline = function(node) {\n if (!node.isLastRootNode) {\n return this.newline;\n } else {\n return '';\n }\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.doctype(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n}).call(this);\n", "/**\n * Module dependencies.\n */\n\nvar base64 = require('base64-js');\nvar xmlbuilder = require('xmlbuilder');\n\n/**\n * Module exports.\n */\n\nexports.build = build;\n\n/**\n * Accepts a `Date` instance and returns an ISO date string.\n *\n * @param {Date} d - Date instance to serialize\n * @returns {String} ISO date string representation of `d`\n * @api private\n */\n\nfunction ISODateString(d){\n function pad(n){\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear()+'-'\n + pad(d.getUTCMonth()+1)+'-'\n + pad(d.getUTCDate())+'T'\n + pad(d.getUTCHours())+':'\n + pad(d.getUTCMinutes())+':'\n + pad(d.getUTCSeconds())+'Z';\n}\n\n/**\n * Returns the internal \"type\" of `obj` via the\n * `Object.prototype.toString()` trick.\n *\n * @param {Mixed} obj - any value\n * @returns {String} the internal \"type\" name\n * @api private\n */\n\nvar toString = Object.prototype.toString;\nfunction type (obj) {\n var m = toString.call(obj).match(/\\[object (.*)\\]/);\n return m ? m[1] : m;\n}\n\n/**\n * Generate an XML plist string from the input object `obj`.\n *\n * @param {Object} obj - the object to convert\n * @param {Object} [opts] - optional options object\n * @returns {String} converted plist XML string\n * @api public\n */\n\nfunction build (obj, opts) {\n var XMLHDR = {\n version: '1.0',\n encoding: 'UTF-8'\n };\n\n var XMLDTD = {\n pubid: '-//Apple//DTD PLIST 1.0//EN',\n sysid: 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'\n };\n\n var doc = xmlbuilder.create('plist');\n\n doc.dec(XMLHDR.version, XMLHDR.encoding, XMLHDR.standalone);\n doc.dtd(XMLDTD.pubid, XMLDTD.sysid);\n doc.att('version', '1.0');\n\n walk_obj(obj, doc);\n\n if (!opts) opts = {};\n // default `pretty` to `true`\n opts.pretty = opts.pretty !== false;\n return doc.end(opts);\n}\n\n/**\n * depth first, recursive traversal of a javascript object. when complete,\n * next_child contains a reference to the build XML object.\n *\n * @api private\n */\n\nfunction walk_obj(next, next_child) {\n var tag_type, i, prop;\n var name = type(next);\n\n if ('Undefined' == name) {\n return;\n } else if (Array.isArray(next)) {\n next_child = next_child.ele('array');\n for (i = 0; i < next.length; i++) {\n walk_obj(next[i], next_child);\n }\n\n } else if (Buffer.isBuffer(next)) {\n next_child.ele('data').raw(next.toString('base64'));\n\n } else if ('Object' == name) {\n next_child = next_child.ele('dict');\n for (prop in next) {\n if (next.hasOwnProperty(prop)) {\n next_child.ele('key').txt(prop);\n walk_obj(next[prop], next_child);\n }\n }\n\n } else if ('Number' == name) {\n // detect if this is an integer or real\n // TODO: add an ability to force one way or another via a \"cast\"\n tag_type = (next % 1 === 0) ? 'integer' : 'real';\n next_child.ele(tag_type).txt(next.toString());\n\n } else if ('Date' == name) {\n next_child.ele('date').txt(ISODateString(new Date(next)));\n\n } else if ('Boolean' == name) {\n next_child.ele(next ? 'true' : 'false');\n\n } else if ('String' == name) {\n next_child.ele('string').txt(next);\n\n } else if ('ArrayBuffer' == name) {\n next_child.ele('data').raw(base64.fromByteArray(next));\n\n } else if (next && next.buffer && 'ArrayBuffer' == type(next.buffer)) {\n // a typed array\n next_child.ele('data').raw(base64.fromByteArray(new Uint8Array(next.buffer), next_child));\n\n }\n}\n", "/**\n * Parser functions.\n */\n\nvar parserFunctions = require('./lib/parse');\nObject.keys(parserFunctions).forEach(function (k) { exports[k] = parserFunctions[k]; });\n\n/**\n * Builder functions.\n */\n\nvar builderFunctions = require('./lib/build');\nObject.keys(builderFunctions).forEach(function (k) { exports[k] = builderFunctions[k]; });\n", "const bplistParser = require('bplist-parser')\nconst bplistCreator = require('bplist-creator')\nconst plist = require('plist')\nconst fs = require('fs')\n\nfunction parse(aStringOrBuffer, aFile) {\n const firstByte = aStringOrBuffer[0]\n let results\n try {\n if (firstByte === 60 || firstByte === '<') {\n results = plist.parse(aStringOrBuffer.toString())\n } else if (firstByte === 98) {\n ;[results] = bplistParser.parseBuffer(aStringOrBuffer)\n } else if (aFile != null) {\n throw new Error(`Unable to determine format for '${aFile}'`)\n } else {\n throw new Error('Unable to determine format for plist aStringOrBuffer')\n }\n } catch (error) {\n throw new Error(error)\n }\n return results\n}\n\nfunction readFileSync(aFile) {\n const contents = fs.readFileSync(aFile)\n if (contents.length === 0) {\n return {}\n }\n return parse(contents, aFile)\n}\n\nfunction readFile(aFile, callback) {\n fs.readFile(aFile, (err, contents) => {\n if (err) {\n return callback(err)\n }\n let results\n try {\n results = parse(contents, aFile)\n } catch (error) {\n return callback(error)\n }\n\n return callback(null, results)\n })\n}\n\nfunction writeFileSync(aFile, anObject, options) {\n const data = plist.build(anObject)\n return fs.writeFileSync(aFile, data, options)\n}\n\nfunction writeFile(aFile, anObject, options, callback) {\n if (arguments.length === 3 && typeof options === 'function') {\n fs.writeFile(aFile, plist.build(anObject), options)\n } else {\n fs.writeFile(aFile, plist.build(anObject), options, callback)\n }\n}\n\nfunction writeBinaryFileSync(aFile, anObject, options) {\n return fs.writeFileSync(aFile, bplistCreator(anObject), options)\n}\n\nfunction writeBinaryFile(aFile, anObject, options, callback) {\n if (arguments.length === 3 && typeof options === 'function') {\n fs.writeFile(aFile, bplistCreator(anObject), options)\n } else {\n fs.writeFile(aFile, bplistCreator(anObject), options, callback)\n }\n}\n\nfunction stringify(anObject) {\n return plist.build(anObject)\n}\n\nmodule.exports = {\n bplistCreator,\n bplistParser,\n parse,\n plist,\n readFile,\n readFileSync,\n stringify,\n writeBinaryFile,\n writeBinaryFileSync,\n writeFile,\n writeFileSync,\n}\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n", "module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n", "module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n", "'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n", "var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n", "module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n", "exports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n", "module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n", "// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n", "const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan \n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst os = require('os');\nconst path = require('path');\nconst crypto = require('crypto');\nconst _c = { fs: fs.constants, os: os.constants };\nconst rimraf = require('rimraf');\n\n/*\n * The working inner variables.\n */\nconst\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n // constants are off on the windows platform and will not match the actual errno codes\n IS_WIN32 = os.platform() === 'win32',\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 0o700 /* 448 */,\n FILE_MODE = 0o600 /* 384 */,\n\n EXIT = 'exit',\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [],\n\n // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback\n FN_RMDIR_SYNC = fs.rmdirSync.bind(fs),\n FN_RIMRAF_SYNC = rimraf.sync;\n\nlet\n _gracefulCleanup = false;\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n try {\n _assertAndSanitizeOptions(opts);\n } catch (err) {\n return cb(err);\n }\n\n let tries = opts.tries;\n (function _getUniqueName() {\n try {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n /* istanbul ignore else */\n if (!err) {\n /* istanbul ignore else */\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n } catch (err) {\n cb(err);\n }\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n _assertAndSanitizeOptions(opts);\n\n let tries = opts.tries;\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n /* istanbu ignore else */\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(possibleErr) {\n // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only\n return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false));\n });\n } else {\n // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care\n // about the descriptor\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false));\n }\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n /* istanbul ignore else */\n if (opts.discardDescriptor) {\n fs.closeSync(fd);\n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true)\n };\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)\n };\n}\n\n/**\n * Removes files asynchronously.\n *\n * @param {Object} fdPath\n * @param {Function} next\n * @private\n */\nfunction _removeFileAsync(fdPath, next) {\n const _handler = function (err) {\n if (err && !_isENOENT(err)) {\n // reraise any unanticipated error\n return next(err);\n }\n next();\n };\n\n if (0 <= fdPath[0])\n fs.close(fdPath[0], function () {\n fs.unlink(fdPath[1], _handler);\n });\n else fs.unlink(fdPath[1], _handler);\n}\n\n/**\n * Removes files synchronously.\n *\n * @param {Object} fdPath\n * @private\n */\nfunction _removeFileSync(fdPath) {\n let rethrownException = null;\n try {\n if (0 <= fdPath[0]) fs.closeSync(fdPath[0]);\n } catch (e) {\n // reraise any unanticipated error\n if (!_isEBADF(e) && !_isENOENT(e)) throw e;\n } finally {\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n // reraise any unanticipated error\n if (!_isENOENT(e)) rethrownException = e;\n }\n }\n if (rethrownException !== null) {\n throw rethrownException;\n }\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * Returns either a sync callback or a async callback depending on whether\n * fileSync or file was called, which is expressed by the sync parameter.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {fileCallback | fileCallbackSync}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts, sync) {\n const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync);\n const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync);\n\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * Returns either a sync callback or a async callback depending on whether\n * tmpFileSync or tmpFile was called, which is expressed by the sync parameter.\n *\n * @param {string} name\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts, sync) {\n const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs);\n const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;\n const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);\n const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * The cleanup callback is save to be called multiple times.\n * Subsequent invocations will be ignored.\n *\n * @param {Function} removeFunction\n * @param {string} fileOrDirName\n * @param {boolean} sync\n * @param {cleanupCallbackSync?} cleanupCallbackSync\n * @returns {cleanupCallback | cleanupCallbackSync}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) {\n let called = false;\n\n // if sync is true, the next parameter will be ignored\n return function _cleanupCallback(next) {\n\n /* istanbul ignore else */\n if (!called) {\n // remove cleanupCallback from cache\n const toRemove = cleanupCallbackSync || _cleanupCallback;\n const index = _removeObjects.indexOf(toRemove);\n /* istanbul ignore else */\n if (index >= 0) _removeObjects.splice(index, 1);\n\n called = true;\n if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {\n return removeFunction(fileOrDirName);\n } else {\n return removeFunction(fileOrDirName, next || function() {});\n }\n }\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n /* istanbul ignore else */\n if (!_gracefulCleanup) return;\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0]();\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n let\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Helper which determines whether a string s is blank, that is undefined, or empty or null.\n *\n * @private\n * @param {string} s\n * @returns {Boolean} true whether the string s is blank, false otherwise\n */\nfunction _isBlank(s) {\n return s === null || _isUndefined(s) || !s.trim();\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|null|undefined|Function)} options\n * @param {?Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n /* istanbul ignore else */\n if (typeof options === 'function') {\n return [{}, options];\n }\n\n /* istanbul ignore else */\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n // copy options so we do not leak the changes we make internally\n const actualOptions = {};\n for (const key of Object.getOwnPropertyNames(options)) {\n actualOptions[key] = options[key];\n }\n\n return [actualOptions, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n\n const tmpDir = opts.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.name))\n return path.join(tmpDir, opts.dir, opts.name);\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.template))\n return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));\n\n // prefix and postfix\n const name = [\n opts.prefix ? opts.prefix : 'tmp',\n '-',\n process.pid,\n '-',\n _randomChars(12),\n opts.postfix ? '-' + opts.postfix : ''\n ].join('');\n\n return path.join(tmpDir, opts.dir, name);\n}\n\n/**\n * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing\n * options.\n *\n * @param {Options} options\n * @private\n */\nfunction _assertAndSanitizeOptions(options) {\n\n options.tmpdir = _getTmpDir(options);\n\n const tmpDir = options.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(options.name))\n _assertIsRelative(options.name, 'name', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.dir))\n _assertIsRelative(options.dir, 'dir', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.template)) {\n _assertIsRelative(options.template, 'template', tmpDir);\n if (!options.template.match(TEMPLATE_PATTERN))\n throw new Error(`Invalid template, found \"${options.template}\".`);\n }\n /* istanbul ignore else */\n if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)\n throw new Error(`Invalid tries, found \"${options.tries}\".`);\n\n // if a name was specified we will try once\n options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;\n options.keep = !!options.keep;\n options.detachDescriptor = !!options.detachDescriptor;\n options.discardDescriptor = !!options.discardDescriptor;\n options.unsafeCleanup = !!options.unsafeCleanup;\n\n // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));\n options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));\n // sanitize further if template is relative to options.dir\n options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);\n\n // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.name = _isUndefined(options.name) ? undefined : _sanitizeName(options.name);\n options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;\n options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;\n}\n\n/**\n * Resolve the specified path name in respect to tmpDir.\n *\n * The specified name might include relative path components, e.g. ../\n * so we need to resolve in order to be sure that is is located inside tmpDir\n *\n * @param name\n * @param tmpDir\n * @returns {string}\n * @private\n */\nfunction _resolvePath(name, tmpDir) {\n const sanitizedName = _sanitizeName(name);\n if (sanitizedName.startsWith(tmpDir)) {\n return path.resolve(sanitizedName);\n } else {\n return path.resolve(path.join(tmpDir, sanitizedName));\n }\n}\n\n/**\n * Sanitize the specified path name by removing all quote characters.\n *\n * @param name\n * @returns {string}\n * @private\n */\nfunction _sanitizeName(name) {\n if (_isBlank(name)) {\n return name;\n }\n return name.replace(/[\"']/g, '');\n}\n\n/**\n * Asserts whether specified name is relative to the specified tmpDir.\n *\n * @param {string} name\n * @param {string} option\n * @param {string} tmpDir\n * @throws {Error}\n * @private\n */\nfunction _assertIsRelative(name, option, tmpDir) {\n if (option === 'name') {\n // assert that name is not absolute and does not contain a path\n if (path.isAbsolute(name))\n throw new Error(`${option} option must not contain an absolute path, found \"${name}\".`);\n // must not fail on valid . or .. or similar such constructs\n let basename = path.basename(name);\n if (basename === '..' || basename === '.' || basename !== name)\n throw new Error(`${option} option must not contain a path, found \"${name}\".`);\n }\n else { // if (option === 'dir' || option === 'template') {\n // assert that dir or template are relative to tmpDir\n if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${name}\".`);\n }\n let resolvedPath = _resolvePath(name, tmpDir);\n if (!resolvedPath.startsWith(tmpDir))\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${resolvedPath}\".`);\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isEBADF(error) {\n return _isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isENOENT(error) {\n return _isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {string}\n * error.errno {number} any numerical value will be negated\n *\n * CAVEAT\n *\n * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT\n * is no different here.\n *\n * @param {SystemError} error\n * @param {number} errno\n * @param {string} code\n * @private\n */\nfunction _isExpectedError(error, errno, code) {\n return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the\n * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary\n * object removals.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\n/**\n * Returns the currently configured tmp dir from os.tmpdir().\n *\n * @private\n * @param {?Options} options\n * @returns {string} the currently configured tmp dir\n */\nfunction _getTmpDir(options) {\n return path.resolve(_sanitizeName(options && options.tmpdir || os.tmpdir()));\n}\n\n// Install process exit listener\nprocess.addListener(EXIT, _garbageCollector);\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected\n * @property {?number} tries the number of tries before give up the name generation\n * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fixed name relative to tmpdir or the specified dir option\n * @property {?string} dir tmp directory relative to the root tmp directory in use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir\n * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty\n * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection\n * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor or -1 if the fd has been discarded\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback fileCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallbackSync\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\n\n// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will\n// allow users to reconfigure the temporary directory\nObject.defineProperty(module.exports, 'tmpdir', {\n enumerable: true,\n configurable: false,\n get: function () {\n return _getTmpDir();\n }\n});\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "import which from \"which\";\nimport plist from \"simple-plist\";\nimport child_process from \"child_process\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport tmp from \"tmp\";\n\nconst APP_DIR = `${process.env.HOME}/Applications/git-peek.app`;\n\nimport { PROTOCOL } from \"./PROTOCOL\";\n\nexport function execSync(cmd) {\n console.log(\"$ \", chalk.gray(cmd));\n return child_process.execSync(cmd, { cwd: process.cwd(), stdio: \"inherit\" });\n}\n\nexport async function register(editor: string) {\n try {\n await which(\"duti\");\n } catch (exception) {\n const installCommand = `HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install duti`;\n console.log(`duti not installed. Installing with homebrew.`);\n execSync(installCommand);\n }\n\n const gitPeekShim = path.join(\n `${process.env.HOME}/Applications/git-peek.app/Contents/`,\n \"git-peek-shim\"\n );\n\n console.log(\"Generating AppleScript handler.\");\n const appleScriptCode = await generateAppleScript(gitPeekShim);\n const _tmp = tmp.dirSync({ unsafeCleanup: true });\n const appleScriptFile = path.join(_tmp.name, \"git-peek.applescript\");\n const appleScriptApp = path.join(_tmp.name, \"git-peek.app\");\n\n await fs.promises.writeFile(appleScriptFile, appleScriptCode, \"utf8\");\n console.log(chalk.gray(appleScriptCode));\n console.log(\"Compiling .applescript to .app\");\n execSync(`osacompile -o ${appleScriptApp} ${appleScriptFile}`);\n console.log(\"Updating Info.plist to support URL handler\");\n const infoPlist = path.join(appleScriptApp, \"contents/Info.plist\");\n const info = plist.readFileSync(infoPlist);\n info[\"CFBundleIdentifier\"] = \"com.apple.ScriptEditor.id.git-peek\";\n info[\"CFBundleURLTypes\"] = [\n {\n CFBundleURLName: \"HTTP URL\",\n CFBundleURLSchemes: [\"http\", \"https\", PROTOCOL],\n },\n ];\n info[\"LSBackgroundOnly\"] = true;\n plist.writeFileSync(infoPlist, info);\n console.log(\"Updated Info.plist\");\n console.log(`Moving application to ${APP_DIR}`);\n\n try {\n if (fs.existsSync(APP_DIR)) {\n fs.rmSync(APP_DIR, {\n recursive: true,\n force: true,\n });\n }\n } catch (exception) {\n if (process.env.VERBOSE) {\n console.warn(\"[WARN]\", exception);\n }\n }\n\n fs.renameSync(appleScriptApp, APP_DIR);\n\n const shim = `#!/bin/bash\n\n# AppleScript might run as a different user/environment variables.\n# So we have to inline some environment variables!\nexport PATH=$PATH:${JSON.stringify(process.env.PATH) || \"\"}\nexport EDITOR=${JSON.stringify(editor)}\nexport HOME=${JSON.stringify(process.env.HOME) || \"\"}\nexport USER=${JSON.stringify(process.env.USER) || \"\"}\n\n.${JSON.stringify(await which(\"git-peek\"))} --fromscript $1 $2 $3 $4 & disown\n`;\n\n console.log(\n \"// --- BEGIN SHIM FILE ---\\n\" +\n chalk.gray(shim) +\n \"\\n// --- END SHIM FILE ---\"\n );\n console.log(`Wrote shim file (${chalk.gray(gitPeekShim)})`);\n fs.writeFileSync(gitPeekShim, shim, \"utf8\");\n execSync(\"chmod +x \" + gitPeekShim);\n\n console.log(\"Registering URL handler...\");\n execSync(`duti -s com.apple.ScriptEditor.id.git-peek ${PROTOCOL}`);\n\n fs.rmSync(appleScriptFile);\n\n if (fs.existsSync(\"/Applications/Google Chrome.app\")) {\n console.log(`Adding ${PROTOCOL}:// to Google Chrome`);\n try {\n execSync(\n `defaults write com.google.Chrome URLWhitelist -array '${PROTOCOL}://*'`\n );\n } catch (exception) {\n console.warn(\"Failed to add protocol to Google Chrome. Its okay.\");\n }\n }\n\n console.log(chalk.green(\"\u2705 Registered git-peek:// protocol successfully.\"));\n console.log(`To unregister, just delete \"${APP_DIR}\".`);\n console.log(\"To test it, run this:\");\n console.log(\" \" + chalk.blue(`open git-peek://Jarred-Sumner/git-peek`));\n if (editor.includes(\"vi\")) {\n console.warn(\n \"vim/vi not supported (no terminal window will be open), but if you know a way to run a terminal window from the AppleScript please do submit a PR!\"\n );\n }\n}\n\nexport async function generateAppleScript(shimLocation: string) {\n return `\n\non open location this_URL\n try\n set innerCmd to \"${shimLocation} \" & quoted form of this_URL & \" &> /usr/local/var/log/git-peek &\"\n do shell script innerCmd\n on error errMsg\n display dialog errMsg\n end try\nend open location\n`.trim();\n}\n", "class Node {\n\t/// value;\n\t/// next;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\n\t\t// TODO: Remove this when targeting Node.js 12.\n\t\tthis.next = undefined;\n\t}\n}\n\nclass Queue {\n\t// TODO: Use private class fields when targeting Node.js 12.\n\t// #_head;\n\t// #_tail;\n\t// #_size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this._head) {\n\t\t\tthis._tail.next = node;\n\t\t\tthis._tail = node;\n\t\t} else {\n\t\t\tthis._head = node;\n\t\t\tthis._tail = node;\n\t\t}\n\n\t\tthis._size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this._head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._head = this._head.next;\n\t\tthis._size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis._head = undefined;\n\t\tthis._tail = undefined;\n\t\tthis._size = 0;\n\t}\n\n\tget size() {\n\t\treturn this._size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this._head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n\nmodule.exports = Queue;\n", "'use strict';\nconst Queue = require('yocto-queue');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tqueue.enqueue(run.bind(null, fn, resolve, ...args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, ...args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\n", "'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nconst pLocate = async (iterable, tester, options) => {\n\toptions = {\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true,\n\t\t...options\n\t};\n\n\tconst limit = pLimit(options.concurrency);\n\n\t// Start all the promises concurrently with optional limit\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently\n\tconst checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n};\n\nmodule.exports = pLocate;\n", "'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst {promisify} = require('util');\nconst pLocate = require('p-locate');\n\nconst fsStat = promisify(fs.stat);\nconst fsLStat = promisify(fs.lstat);\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile'\n};\n\nfunction checkType({type}) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nmodule.exports = async (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\ttype: 'file',\n\t\tallowSymlinks: true,\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fsStat : fsLStat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFn(path.resolve(options.cwd, path_));\n\t\t\treturn matchType(options.type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, options);\n};\n\nmodule.exports.sync = (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tallowSymlinks: true,\n\t\ttype: 'file',\n\t\t...options\n\t};\n\n\tcheckType(options);\n\n\tconst statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFn(path.resolve(options.cwd, path_));\n\n\t\t\tif (matchType(options.type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n};\n", "'use strict';\nconst fs = require('fs');\nconst {promisify} = require('util');\n\nconst pAccess = promisify(fs.access);\n\nmodule.exports = async path => {\n\ttry {\n\t\tawait pAccess(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports.sync = path => {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n", "'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\nconst pathExists = require('path-exists');\n\nconst stop = Symbol('findUp.stop');\n\nmodule.exports = async (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.sync = (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath.sync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath.sync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.exists = pathExists;\n\nmodule.exports.sync.exists = pathExists.sync;\n\nmodule.exports.stop = stop;\n", "'use strict';\r\n\r\nconst { promisify } = require(\"util\");\r\nconst tmp = require(\"tmp\");\r\n\r\n// file\r\nmodule.exports.fileSync = tmp.fileSync;\r\nconst fileWithOptions = promisify((options, cb) =>\r\n tmp.file(options, (err, path, fd, cleanup) =>\r\n err ? cb(err) : cb(undefined, { path, fd, cleanup: promisify(cleanup) })\r\n )\r\n);\r\nmodule.exports.file = async (options) => fileWithOptions(options);\r\n\r\nmodule.exports.withFile = async function withFile(fn, options) {\r\n const { path, fd, cleanup } = await module.exports.file(options);\r\n try {\r\n return await fn({ path, fd });\r\n } finally {\r\n await cleanup();\r\n }\r\n};\r\n\r\n\r\n// directory\r\nmodule.exports.dirSync = tmp.dirSync;\r\nconst dirWithOptions = promisify((options, cb) =>\r\n tmp.dir(options, (err, path, cleanup) =>\r\n err ? cb(err) : cb(undefined, { path, cleanup: promisify(cleanup) })\r\n )\r\n);\r\nmodule.exports.dir = async (options) => dirWithOptions(options);\r\n\r\nmodule.exports.withDir = async function withDir(fn, options) {\r\n const { path, cleanup } = await module.exports.dir(options);\r\n try {\r\n return await fn({ path });\r\n } finally {\r\n await cleanup();\r\n }\r\n};\r\n\r\n\r\n// name generation\r\nmodule.exports.tmpNameSync = tmp.tmpNameSync;\r\nmodule.exports.tmpName = promisify(tmp.tmpName);\r\n\r\nmodule.exports.tmpdir = tmp.tmpdir;\r\n\r\nmodule.exports.setGracefulCleanup = tmp.setGracefulCleanup;\r\n", "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", {value: true});\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {get: all[name], enumerable: true});\n};\nvar __exportStar = (target, module2, desc) => {\n if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\n for (let key of __getOwnPropNames(module2))\n if (!__hasOwnProp.call(target, key) && key !== \"default\")\n __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});\n }\n return target;\n};\nvar __toModule = (module2) => {\n if (module2 && module2.__esModule)\n return module2;\n return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", {value: module2, enumerable: true})), module2);\n};\n\n// src/index.ts\n__markAsModule(exports);\n__export(exports, {\n BINARY_VERSION: () => BINARY_VERSION,\n PACKAGE_NAMES: () => PACKAGE_NAMES,\n installBin: () => installBin,\n register: () => register\n});\nvar import_child_process = __toModule(require(\"child_process\"));\nvar import_find_up = __toModule(require(\"find-up\"));\nvar fs = __toModule(require(\"fs\"));\nvar path = __toModule(require(\"path\"));\nvar import_tmp_promise = __toModule(require(\"tmp-promise\"));\nasync function getNodeModules(cwd) {\n return path.resolve(await import_find_up.default(\"node_modules\", {type: \"directory\", cwd}), \"../\");\n}\nvar BINARY_VERSION = \"1.0.7\";\nvar PACKAGE_NAMES = {\n win64: \"register-url-win64-bin\",\n \"win64-uac\": \"register-url-win64-bin-uac\"\n};\nasync function installBin(requireUAC = true) {\n const packageName = requireUAC ? \"register-url-win64-bin-uac\" : \"register-url-win64-bin\";\n const cwd = await getNodeModules(path.resolve(__dirname));\n return new Promise((resolve2, reject) => {\n const child = import_child_process.default.spawn(\"npm\", [\n \"install\",\n `${packageName}@${\"1.0.7\"}`,\n `--legacy-peer-deps`,\n \"-g\",\n `--production`,\n `--no-fund`,\n `--no-audit`,\n `--no-package-lock`,\n `--ignore-scripts`\n ], {\n cwd,\n detached: false,\n shell: true,\n env: process.env\n });\n child.stdout.pipe(process.stdout);\n child.stdin.pipe(process.stdin);\n child.once(\"exit\", resolve2);\n child.once(\"error\", reject);\n });\n}\nasync function register(request, binPath = null) {\n var _a, _b;\n let downloadBin = binPath;\n if (!binPath) {\n let uac = ((_b = (_a = request.origins) == null ? void 0 : _a.length) != null ? _b : 0) > 0;\n let packageName = uac ? \"register-url-win64-bin-uac\" : \"register-url-win64-bin\";\n try {\n downloadBin = require(path.resolve(__dirname, \"node_modules\", packageName));\n } catch (exception) {\n return Promise.reject(`Please install \"${packageName}\" into ${path.resolve(__dirname)} before running this function. For convienience, you can call installBin()`);\n }\n }\n await fs.promises.access(downloadBin, fs.constants.F_OK);\n if (typeof request.register === \"undefined\") {\n request.register = true;\n }\n if (!request.output) {\n const {path: filePath2} = await import_tmp_promise.default.file({\n discardDescriptor: true,\n postfix: \".json\"\n });\n request.output = filePath2;\n }\n const filePath = path.resolve(request.output);\n delete request.output;\n await fs.promises.writeFile(filePath, JSON.stringify(request), \"utf-8\");\n return await new Promise(async (resolve2, reject) => {\n const child = import_child_process.default.spawn(downloadBin, [filePath], {\n env: process.env,\n windowsHide: true,\n detached: false,\n shell: true,\n stdio: \"inherit\"\n });\n child.once(\"exit\", async () => {\n let response;\n try {\n response = JSON.parse((await fs.promises.readFile(filePath, \"utf-8\")).trim());\n if (typeof response !== \"object\") {\n throw \"Empty response\";\n }\n } catch (exception) {\n response = {\n error: exception.message,\n exception,\n chrome: false,\n protocol: false,\n edge: false\n };\n }\n resolve2(response);\n });\n }).catch((err) => {\n return Promise.resolve({\n error: err.message,\n exception: err,\n chrome: false,\n edge: false,\n protocol: false\n });\n });\n}\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\nconst EE = require('events')\nconst Stream = require('stream')\nconst Yallist = require('yallist')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = new Yallist()\n this.buffer = new Yallist()\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // this ensures at this point that the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!this.objectMode && !chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n cb()\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' && !this[OBJECTMODE] &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n if (this.flowing) {\n // if we somehow have something in the buffer, but we think we're\n // flowing, then we need to flush all that out first, or we get\n // chunks coming in out of order. Can't emit 'drain' here though,\n // because we're mid-write, so that'd be bad.\n if (this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n this.emit('data', chunk)\n } else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n cb()\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n try {\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH])\n return null\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = new Yallist([\n Array.from(this.buffer).join('')\n ])\n else\n this.buffer = new Yallist([\n Buffer.concat(Array.from(this.buffer), this[BUFFERLENGTH])\n ])\n }\n\n return this[READ](n || null, this.buffer.head.value)\n } finally {\n this[MAYBE_EMIT_END]()\n }\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer.head.value = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n return this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer.head.value.length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === process.stdout || dest === process.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n\n const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() }\n this.pipes.push(p)\n\n dest.on('drain', p.ondrain)\n this[RESUME]()\n // piping an ended stream ends immediately\n if (ended && p.opts.end)\n p.dest.end()\n return dest\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n try {\n return super.on(ev, fn)\n } finally {\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n }\n }\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n if (!data)\n return\n\n if (this.pipes.length)\n this.pipes.forEach(p =>\n p.dest.write(data) === false && this.pause())\n } else if (ev === 'end') {\n // only actual end gets this treatment\n if (this[EMITTED_END] === true)\n return\n\n this[EMITTED_END] = true\n this.readable = false\n\n if (this[DECODER]) {\n data = this[DECODER].end()\n if (data) {\n this.pipes.forEach(p => p.dest.write(data))\n super.emit('data', data)\n }\n }\n\n this.pipes.forEach(p => {\n p.dest.removeListener('drain', p.ondrain)\n if (p.opts.end)\n p.dest.end()\n })\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n }\n\n // TODO: replace with a spread operator when Node v4 support drops\n const args = new Array(arguments.length)\n args[0] = ev\n args[1] = data\n if (arguments.length > 2) {\n for (let i = 2; i < arguments.length; i++) {\n args[i] = arguments[i]\n }\n }\n\n try {\n return super.emit.apply(this, args)\n } finally {\n if (!isEndish(ev))\n this[MAYBE_EMIT_END]()\n else\n this.removeAllListeners(ev)\n }\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('end', () => resolve())\n this.on('error', er => reject(er))\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer = new Yallist()\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n", "'use strict'\nconst MiniPass = require('minipass')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends MiniPass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = header.path\n this.mode = header.mode\n if (this.mode)\n this.mode = this.mode & 0o7777\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = header.linkpath\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex)\n this[SLURP](ex)\n if (gex)\n this[SLURP](gex, true)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore)\n return true\n\n if (r >= writeLen)\n return super.write(data)\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n else if (num < 0)\n encodeNegative(num, buf)\n else\n encodePositive(num, buf)\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped)\n buf[i - 1] = onesComp(byte)\n else if (byte === 0)\n buf[i - 1] = 0\n else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null)\n throw Error('invalid base256 encoding')\n\n if (!Number.isSafeInteger(value))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped)\n f = onesComp(byte)\n else if (byte === 0)\n f = byte\n else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0)\n sum -= f * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0)\n sum += byte * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data))\n this.decode(data, off || 0, ex, gex)\n else if (data)\n this.set(data)\n }\n\n decode (buf, off, ex, gex) {\n if (!off)\n off = 0\n\n if (!buf || !(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '')\n this[TYPE] = '0'\n if (this[TYPE] === '0' && this.path.substr(-1) === '/')\n this[TYPE] = '5'\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5')\n this.size = 0\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix)\n this.path = prefix + '/' + this.path\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20)\n this.nullBlock = true\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off)\n off = 0\n\n if (!(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0)\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined)\n this[i] = data[i]\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type))\n this[TYPE] = types.code.get(type)\n else\n this[TYPE] = type\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize)\n ret = [pp, prefix, false]\n else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n // both fit!\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp, prefix, false]\n\n // prefix fits in prefix, but path doesn't fit in path\n else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp.substr(0, pathSize - 1), prefix, true]\n\n else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret)\n ret = [p.substr(0, pathSize - 1), '', true]\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '')\n return null\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++)\n buf[i] = 0\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++)\n buf[i] = 0\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined)\n return ''\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits))\n digits += 1\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1)\n return set\n\n line = line.substr((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k)\n return set\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file)\n data.file = this.file\n if (this.cwd)\n data.cwd = this.cwd\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error)\n this.emit('error', Object.assign(message, data))\n else\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable)\n mode = (mode | 0o600) & ~0o22\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400)\n mode |= 0o100\n if (mode & 0o40)\n mode |= 0o10\n if (mode & 0o4)\n mode |= 0o1\n }\n return mode\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends MiniPass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string')\n throw new TypeError('path is required')\n this.path = p\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid()\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = opt.cwd || process.cwd()\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (!this.preservePaths && path.win32.isAbsolute(p)) {\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n const parsed = path.win32.parse(p)\n this.path = p.substr(parsed.root.length)\n pathWarn = parsed.root\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = opt.absolute || path.resolve(this.cwd, p)\n\n if (this.path === '')\n this.path = './'\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute))\n this[ONLSTAT](this.statCache.get(this.absolute))\n else\n this[LSTAT]()\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er)\n return this.emit('error', er)\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile())\n stat.size = 0\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n this.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n this.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.substr(-1) !== '/')\n this.path += '/'\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er)\n return this.emit('error', er)\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = linkpath.replace(/\\\\/g, '/')\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = path.relative(this.cwd, linkpath).replace(/\\\\/g, '/')\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0)\n return this[HARDLINK](linkpath)\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0)\n return this.end()\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er)\n return this.emit('error', er)\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n const blockLen = 512 * Math.ceil(this.stat.size / 512)\n const bufLen = Math.min(blockLen, this.maxReadSize)\n const buf = Buffer.allocUnsafe(bufLen)\n this[READ](fd, buf, 0, buf.length, 0, this.stat.size, blockLen)\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n })\n }\n\n [CLOSE] (fd, cb) {\n fs.close(fd, cb)\n }\n\n [ONREAD] (fd, buf, offset, length, pos, remain, blockRemain, bytesRead) {\n if (bytesRead <= 0 && remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n if (bytesRead > remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n if (bytesRead === remain) {\n for (let i = bytesRead; i < length && bytesRead < blockRemain; i++) {\n buf[i + offset] = 0\n bytesRead++\n remain++\n }\n }\n\n const writeBuf = offset === 0 && bytesRead === buf.length ?\n buf : buf.slice(offset, offset + bytesRead)\n remain -= bytesRead\n blockRemain -= bytesRead\n pos += bytesRead\n offset += bytesRead\n\n this.write(writeBuf)\n\n if (!remain) {\n if (blockRemain)\n this.write(Buffer.alloc(blockRemain))\n return this[CLOSE](fd, er => er ? this.emit('error', er) : this.end())\n }\n\n if (offset >= length) {\n buf = Buffer.allocUnsafe(length)\n offset = 0\n }\n length = buf.length - offset\n this[READ](fd, buf, offset, length, pos, remain, blockRemain)\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n let threw = true\n try {\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](fd, () => {})\n } catch (er) {}\n }\n }\n }\n\n [CLOSE] (fd, cb) {\n fs.closeSync(fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends MiniPass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.path = readEntry.path\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = readEntry.linkpath\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (path.isAbsolute(this.path) && !this.preservePaths) {\n const parsed = path.parse(this.path)\n pathWarn = parsed.root\n this.path = this.path.substr(parsed.root.length)\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain)\n this.write(Buffer.alloc(this.blockRemain))\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst MiniPass = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\n\nconst Pack = warner(class Pack extends MiniPass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = (opt.prefix || '').replace(/(\\\\|\\/)+$/, '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n this.portable = !!opt.portable\n this.zip = null\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object')\n opt.gzip = {}\n if (this.portable)\n opt.gzip.portable = true\n this.zip = new zlib.Gzip(opt.gzip)\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else\n this.on('drain', this[ONDRAIN])\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path)\n this.write(path)\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED])\n throw new Error('write after end')\n\n if (path instanceof ReadEntry)\n this[ADDTARENTRY](path)\n else\n this[ADDFSENTRY](path)\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = path.resolve(this.cwd, p.path)\n if (this.prefix)\n p.path = this.prefix + '/' + p.path.replace(/^\\.(\\/+|$)/, '')\n\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p))\n p.resume()\n else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = path.resolve(this.cwd, p)\n if (this.prefix)\n p = this.prefix + '/' + p.replace(/^\\.(\\/+|$)/, '')\n\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n this.emit('error', er)\n else\n this[ONSTAT](job, stat)\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat))\n job.ignore = true\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n return this.emit('error', er)\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING])\n return\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip)\n this.zip.end(EOF)\n else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending)\n return\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute))\n this[ONSTAT](job, this.statCache.get(job.absolute))\n else\n this[STAT](job)\n }\n if (!job.stat)\n return\n\n // filtered out!\n if (job.ignore)\n return\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute))\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n else\n this[READDIR](job)\n if (!job.readdir)\n return\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry)\n this[CURRENT].entry.resume()\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk))\n source.pause()\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk))\n source.pause()\n })\n }\n }\n\n pause () {\n if (this.zip)\n this.zip.pause()\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone)\n this.on(DONE, opt.ondone)\n else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n if (typeof opt.onentry === 'function')\n this.on('entry', opt.onentry)\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null)\n this[SAW_VALID_ENTRY] = false\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin')\n this[STATE] = 'header'\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid)\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', {header})\n else if (!header.path)\n this.warn('TAR_ENTRY_INVALID', 'path is required', {header})\n else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', {header})\n else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {header})\n else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid)\n this[SAW_VALID_ENTRY] = true\n }\n entry.on('end', onend)\n } else\n this[SAW_VALID_ENTRY] = true\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain)\n this[STATE] = 'body'\n else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry))\n this.emit.apply(this, entry)\n else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING])\n this.emit('drain')\n } else\n re.once('drain', _ => this.emit('drain'))\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY])\n this[EMITMETA](entry)\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY])\n this.emit(ev, data, extra)\n else\n this[QUEUE].push([ev, data, extra])\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED])\n return\n\n // first write, might be gzipped\n if (this[UNZIP] === null && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i])\n this[UNZIP] = false\n }\n if (this[UNZIP] === null) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = new zlib.Unzip()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP])\n this[UNZIP].write(chunk)\n else\n this[CONSUMECHUNK](chunk)\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length)\n this[READENTRY].once('drain', _ => this.emit('drain'))\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED])\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, {entry})\n if (this[BUFFER])\n entry.write(this[BUFFER])\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING])\n this[BUFFERCONCAT](chunk)\n else if (!chunk && !this[BUFFER])\n this[MAYBEEND]()\n else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else\n this[CONSUMECHUNKSUB](chunk)\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED])\n this[MAYBEEND]()\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER])\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n else\n this[BUFFER] = chunk.slice(position)\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP])\n this[UNZIP].end(chunk)\n else {\n this[ENDED] = true\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n if (!opt.noResume)\n onentryFunction(opt)\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize)\n p.end(fs.readFileSync(file))\n else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function')\n cb = files\n\n if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT')\n fd = fs.openSync(opt.file, 'w+')\n else\n throw er\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n throw new Error('cannot append to compressed archives')\n\n if (!bytes)\n break POSITION\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n break\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size)\n break\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er)\n fs.close(fd, _ => cb_(er))\n else\n cb_(null, pos)\n }\n\n let position = 0\n if (size === 0)\n return cb(null, 0)\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er)\n return cb(er)\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n return cb(new Error('cannot append to compressed archives'))\n\n // truncated header\n if (bufPos < 512)\n return cb(null, position)\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n return cb(null, position)\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size)\n return cb(null, position)\n\n position += entryBlockSize + 512\n if (position >= size)\n return cb(null, position)\n\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er)\n return reject(er)\n\n fs.fstat(fd, (er, st) => {\n if (er)\n return reject(er)\n getPos(fd, st.size, (er, position) => {\n if (er)\n return reject(er)\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache)\n opt.mtimeCache = new Map()\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nmodule.exports = (dir, opt, cb) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (er, created) => {\n if (er)\n cb(er)\n else {\n cache.set(dir, true)\n if (created && doChown)\n chownr(created, uid, gid, er => done(er))\n else if (needChmod)\n fs.chmod(dir, mode, cb)\n else\n cb()\n }\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n return fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory())\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n done(er)\n })\n }\n\n if (preserve)\n return mkdirp(dir, {mode}).then(made => done(null, made), done)\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length)\n return cb(null, created)\n const p = parts.shift()\n const part = base + '/' + p\n if (cache.get(part))\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return cb(new CwdError(cwd, er.code))\n\n fs.lstat(part, (statEr, st) => {\n if (statEr)\n cb(statEr)\n else if (st.isDirectory())\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n else if (unlink) {\n fs.unlink(part, er => {\n if (er)\n return cb(er)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink())\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n else\n cb(er)\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (created) => {\n cache.set(dir, true)\n if (created && doChown)\n chownr.sync(created, uid, gid)\n if (needChmod)\n fs.chmodSync(dir, mode)\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok)\n throw new CwdError(dir, code)\n }\n done()\n return\n }\n\n if (preserve)\n return done(mkdirp.sync(dir, mode))\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n if (cache.get(part))\n continue\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n } catch (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return new CwdError(cwd, er.code)\n\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cache.set(part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n continue\n } else if (st.isSymbolicLink())\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n\n return done(created)\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n const { join } = require('path')\n const getDirs = path =>\n join(path).split(/[\\\\/]/).slice(0, -1).reduce((set, path) =>\n set.length ? set.concat(join(set[set.length - 1], path)) : [path], [])\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res)\n throw new Error('function does not have any path reservations')\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const {paths, dirs} = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn))\n return false\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn))\n return false\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1)\n queues.delete(path)\n else {\n q.shift()\n if (typeof q[0] === 'function')\n next.add(q[0])\n else\n q[0].forEach(fn => next.add(fn))\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1)\n queues.delete(dir)\n else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else\n q[0].delete(fn)\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, {dirs, paths})\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q)\n queues.set(path, [fn])\n else\n q.push(fn)\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q)\n queues.set(dir, [new Set([fn])])\n else if (q[q.length - 1] instanceof Set)\n q[q.length - 1].add(fn)\n else\n q.push(new Set([fn]))\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\n\n/* istanbul ignore next */\nconst neverCalled = () => {\n throw new Error('sync function called cb somehow?!?')\n}\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (process.platform !== 'win32')\n return fs.unlink(path, cb)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er)\n return cb(er)\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (process.platform !== 'win32')\n return fs.unlinkSync(path)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt)\n opt = {}\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number')\n throw new TypeError('cannot set owner without number uid and gid')\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number')\n this.preserveOwner = process.getuid && process.getuid() === 0\n else\n this.preserveOwner = !!opt.preserveOwner\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn > this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT')\n data.recoverable = false\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = entry.path.split(/\\/|\\\\/)\n if (parts.length < this.strip)\n return false\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = entry.linkpath.split(/\\/|\\\\/)\n if (linkparts.length >= this.strip)\n entry.linkpath = linkparts.slice(this.strip).join('/')\n }\n }\n\n if (!this.preservePaths) {\n const p = entry.path\n if (p.match(/(^|\\/|\\\\)\\.\\.(\\\\|\\/|$)/)) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n if (path.win32.isAbsolute(p)) {\n const parsed = path.win32.parse(p)\n entry.path = p.substr(parsed.root.length)\n const r = parsed.root\n this.warn('TAR_ENTRY_INFO', `stripping ${r} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const parsed = path.win32.parse(entry.path)\n entry.path = parsed.root === '' ? wc.encode(entry.path)\n : parsed.root + wc.encode(entry.path.substr(parsed.root.length))\n }\n\n if (path.isAbsolute(entry.path))\n entry.absolute = entry.path\n else\n entry.absolute = path.resolve(this.cwd, entry.path)\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry))\n return entry.resume()\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode)\n entry.mode = entry.mode | 0o700\n\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError')\n this.emit('error', er)\n else {\n this.warn('TAR_ENTRY_ERROR', er, {entry})\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => this[ONERROR](er, entry))\n\n let actions = 1\n const done = er => {\n if (er)\n return this[ONERROR](er, entry)\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n fullyDone()\n er ? this[ONERROR](er, entry) : this[UNPEND]()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n fullyDone()\n return this[ONERROR](er, entry)\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, {entry})\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n process.platform !== 'win32'\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath)\n paths.push(entry.linkpath)\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [CHECKFS2] (entry, done) {\n this[MKDIR](path.dirname(entry.absolute), this.dmode, er => {\n if (er) {\n done()\n return this[ONERROR](er, entry)\n }\n fs.lstat(entry.absolute, (er, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n } else if (er || this[ISREUSABLE](entry, st))\n this[MAKEFS](null, entry, done)\n\n else if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && (!entry.mode || (st.mode & 0o7777) === entry.mode))\n this[MAKEFS](null, entry, done)\n else {\n fs.chmod(entry.absolute, entry.mode,\n er => this[MAKEFS](er, entry, done))\n }\n } else\n fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry, done))\n } else\n unlinkFile(entry.absolute, er => this[MAKEFS](er, entry, done))\n })\n })\n }\n\n [MAKEFS] (er, entry, done) {\n if (er)\n return this[ONERROR](er, entry)\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('file' or 'dir') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er)\n return this[ONERROR](er, entry)\n done()\n this[UNPEND]()\n entry.resume()\n })\n }\n}\n\nclass UnpackSync extends Unpack {\n [CHECKFS] (entry) {\n const er = this[MKDIR](path.dirname(entry.absolute), this.dmode, neverCalled)\n if (er)\n return this[ONERROR](er, entry)\n try {\n const st = fs.lstatSync(entry.absolute)\n if (this.keep || this.newer && st.mtime > entry.mtime)\n return this[SKIP](entry)\n else if (this[ISREUSABLE](entry, st))\n return this[MAKEFS](null, entry, neverCalled)\n else {\n try {\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && entry.mode && (st.mode & 0o7777) !== entry.mode)\n fs.chmodSync(entry.absolute, entry.mode)\n } else\n fs.rmdirSync(entry.absolute)\n } else\n unlinkFileSync(entry.absolute)\n return this[MAKEFS](null, entry, neverCalled)\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n } catch (er) {\n return this[MAKEFS](null, entry, neverCalled)\n }\n }\n\n [FILE] (entry, _) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError)\n this[ONERROR](er || closeError, entry)\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, _) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er)\n return this[ONERROR](er, entry)\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, _) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\n", "import chalk from \"chalk\";\nimport {\n register as _register,\n BINARY_VERSION,\n PACKAGE_NAMES,\n} from \"register-url-windows\";\nimport { PROTOCOL } from \"src/PROTOCOL\";\nimport which from \"which\";\nimport { fetch } from \"./fetch\";\nimport fs from \"fs\";\nimport http from \"http\";\nimport tmp from \"tmp\";\nimport path from \"path\";\nimport tar from \"tar\";\n\nconst TARBALL_URL = `http://registry.npmjs.org/${PACKAGE_NAMES[\"win64-uac\"]}/-/${PACKAGE_NAMES[\"win64-uac\"]}-${BINARY_VERSION}.tgz`;\n\nfunction downloadBin(): Promise {\n const { name: tgzPath } = tmp.dirSync({\n postfix: \"git-peek\",\n unsafeCleanup: true,\n });\n return new Promise((resolve, reject) => {\n http.get(TARBALL_URL, function (response) {\n response.pipe(\n tar\n .x({\n cwd: tgzPath,\n strip: 1,\n onentry(entry) {},\n onwarn(message, data) {\n console.warn(message);\n },\n })\n .on(\"finish\", () => {\n resolve(path.resolve(tgzPath, \"register-url.exe\"));\n })\n .on(\"error\", (err) => {\n reject(err);\n })\n );\n });\n });\n}\n\nexport async function register(editor: string) {\n console.log(\"Downloading register-url-windows!\");\n const downloadPath = await downloadBin();\n console.log(\"Downloaded register-url-windows\");\n\n console.log(\n `${chalk.whiteBright(\n \"git-peek uses Administrator privileges to enable 1-click in Chrome & Edge\"\n )}. Source code: \\n${chalk.gray(\n \" https://github.com/Jarred-Sumner/register-url-windows/blob/main/dotnet/RegisterURLHandler/Program.cs\"\n )}`\n );\n const result = await _register(\n {\n path: path.resolve(\n await which(\"git-peek\"),\n \"../\",\n \"node_modules\",\n \"@jarred\",\n \"git-peek\",\n \"bin\",\n \"git-peek-win32.exe\"\n ),\n name: \"git-peek\",\n origins: [\n \"github.com\",\n \"bitbucket.com\",\n \"gitlab.com\",\n \"*.gitlab.com\",\n \"sourcehut.org\",\n ],\n register: true,\n protocol: PROTOCOL,\n },\n downloadPath\n );\n\n if (process.env.VERBOSE) console.log(result);\n\n if (result.error && !(result.protocol && result.edge && result.chrome)) {\n console.error(result.error);\n }\n\n if (result.exception && !(result.protocol && result.edge && result.chrome)) {\n console.error(result.exception);\n }\n\n if (result.protocol && result.edge && result.chrome) {\n console.log(`${chalk.green(\"Registered git-peek:// successfully\")}`);\n } else if (result.protocol) {\n console.log(\n chalk.whiteBright(\"Registered git-peek://, but 1-click is disabled\")\n );\n console.log(\n `${chalk.cyan(\n \"To enable 1-click, re-run `git-peek -r` with Administrator privileges.\"\n )}`\n );\n } else {\n console.log(`${chalk.red(\"Register failed\")}`);\n }\n\n process.exit();\n}\n", "let register: (editor: string) => void;\nif (process.platform === \"darwin\") {\n register = require(\"./registerProtocol.mac\").register;\n} else if (process.platform === \"win32\") {\n register = require(\"./registerProtocol.windows\").register;\n} else {\n register = () => {\n throw \"Unsupported Platform\";\n };\n}\n\nexport { register };\n", "export const PROTOCOL = \"git-peek\";\n"], + "mappings": "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", "names": [] } diff --git a/src/registerProtocol.mac.ts b/src/registerProtocol.mac.ts index 950c73f..177454d 100644 --- a/src/registerProtocol.mac.ts +++ b/src/registerProtocol.mac.ts @@ -6,7 +6,8 @@ import path from "path"; import chalk from "chalk"; import tmp from "tmp"; -const TEMP_DIR = "/Applications/git-peek.app/Contents/temp"; +const APP_DIR = path.join(process.env.HOME, "Applications", "git-peek.app"); + import { PROTOCOL } from "./PROTOCOL"; export function execSync(cmd) { @@ -24,12 +25,12 @@ export async function register(editor: string) { } const gitPeekShim = path.join( - "/Applications/git-peek.app/Contents/", + `${process.env.HOME}/Applications/git-peek.app/Contents/`, "git-peek-shim" ); console.log("Generating AppleScript handler."); - const appleScriptCode = await generateAppleScript(gitPeekShim, TEMP_DIR); + const appleScriptCode = await generateAppleScript(gitPeekShim); const _tmp = tmp.dirSync({ unsafeCleanup: true }); const appleScriptFile = path.join(_tmp.name, "git-peek.applescript"); const appleScriptApp = path.join(_tmp.name, "git-peek.app"); @@ -51,22 +52,22 @@ export async function register(editor: string) { info["LSBackgroundOnly"] = true; plist.writeFileSync(infoPlist, info); console.log("Updated Info.plist"); - console.log("Moving application to /Applications/git-peek.app"); - if (fs.existsSync("/Applications/git-peek.app")) { - fs.rmSync("/Applications/git-peek.app", { - recursive: true, - force: true, - }); - } + console.log(`Moving application to ${APP_DIR}`); - if (fs.existsSync("/Applications/git-peek.app")) { - fs.rmSync("/Applications/git-peek.app", { force: true, recursive: true }); + try { + if (fs.existsSync(APP_DIR)) { + fs.rmSync(APP_DIR, { + recursive: true, + force: true, + }); + } + } catch (exception) { + if (process.env.VERBOSE) { + console.warn("[WARN]", exception); + } } - fs.renameSync(appleScriptApp, "/Applications/git-peek.app"); - - console.log(chalk.gray(`mkdir ${TEMP_DIR}`)); - fs.mkdirSync(TEMP_DIR); + fs.renameSync(appleScriptApp, APP_DIR); const shim = `#!/bin/bash @@ -106,7 +107,7 @@ export USER=${JSON.stringify(process.env.USER) || ""} } console.log(chalk.green("✅ Registered git-peek:// protocol successfully.")); - console.log('To unregister, just delete "/Applications/git-peek.app".'); + console.log(`To unregister, just delete "${APP_DIR}".`); console.log("To test it, run this:"); console.log(" " + chalk.blue(`open git-peek://Jarred-Sumner/git-peek`)); if (editor.includes("vi")) { @@ -116,7 +117,7 @@ export USER=${JSON.stringify(process.env.USER) || ""} } } -export async function generateAppleScript(shimLocation: string, tempDir) { +export async function generateAppleScript(shimLocation: string) { return ` on open location this_URL