pup-recorder 0.3.10 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ import'source-map-support/register.js';import {Log}from'node-av';import {AV_LOG_ERROR,AV_LOG_WARNING}from'node-av/constants';import {createRequire}from'module';import {dirname,join}from'path';import h from'zod';import Fe from'electron';import {platform}from'os';import {HardwareContext}from'node-av/api';import {spawn}from'child_process';import Ge from'tree-kill';import {EventEmitter}from'events';var fe=Object.create;var S=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var q=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),C=t=>{throw TypeError(t)};var Y=(t,e,r)=>e in t?S(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var Q=t=>[,,,fe(null)],X=["class","method","getter","setter","accessor","field","value","get","set"],R=t=>t!==void 0&&typeof t!="function"?C("Function expected"):t,we=(t,e,r,o,n)=>({kind:X[t],name:e,metadata:o,addInitializer:s=>r._?C("Already initialized"):n.push(R(s||null))}),D=(t,e)=>Y(e,q("metadata"),t[3]),Z=(t,e,r,o)=>{for(var n=0,s=t[e>>1],l=s&&s.length;n<l;n++)s[n].call(r);return o},_=(t,e,r,o,n,s)=>{var i,p,v,w,a=e&7,E=false,u=false,x=2,k=X[a+5],he=t[x]||(t[x]=[]),f=((n=n.prototype),be(n,r));for(var I=o.length-1;I>=0;I--)v=we(a,r,p={},t[3],he),(v.static=E,v.private=u,w=v.access={has:d=>r in d},(w.get=d=>d[r]),a>2),i=(0, o[I])(f[k],v),p._=1,R(i)&&(f[k]=i);return f&&S(n,r,f),n},ee=(t,e,r)=>Y(t,e+"",r);var re=class{_written=0;_shown=false;_total;_out;_tty;_showCount;constructor(e){this._total=e.total,this._out=e.out,this._tty=!!e.out.isTTY,this._showCount=e.showCount??false;}get total(){return this._total}update(e){this._written=Math.min(this._total,Math.max(0,e)),this.render();}updatePercent(e){this.update(Math.round(e/100*this._total));}clear(){this._tty&&this._shown&&this._out.write("\r\x1B[2K");}redraw(){this.render();}log(e){this.clear(),this._out.write(e+`
2
+ `),this.redraw();}finish(e){this.clear(),this._out.write(e+`
3
+ `),this._shown=false;}render(){if(!this._tty||this._written===0&&!this._shown)return;let e=this._total>0?this._written/this._total:0,r=Math.round(e*40),o="#".repeat(r)+"-".repeat(40-r),n=Math.round(e*100),s=this._showCount?`${this._written}/${this._total} (${n}%)`:`${n}%`;this._out.write(`\r[${o}] ${s}`),this._shown=true;}};function Be(t){let e=r=>(...o)=>{t.clear(),r(...o),t.redraw();};return {debug:e(console.debug),info:e(console.info),warn:e(console.warn),error:e(console.error)}}function te(t,e,r){try{return e(process.env[t])}catch{return r}}function oe(t){if(typeof t=="number")return t;let e=Number(t);if(Number.isNaN(e))throw new Error(`Value ${t} is not a valid number`);return e}var ke=createRequire(import.meta.url),T=te("PUP_LOG_LEVEL",oe,2),G=dirname(ke.resolve("pup-recorder/package.json")),ne=join(G,"dist","app.cjs");join(G,"dist","audio_preload.cjs");join(G,"dist","iframe_preload.cjs");var F="<pup@debug>",$="<pup@info>",U="<pup@warn>",H="<pup@error>",W="<pup@fatal>";function O(t,e){return function(...r){let o=r.map(n=>n instanceof Error?n.stack??String(n):n);return t.call(this,...o)}}var se,ie,ae,le,pe,P;pe=[O],le=[O],ae=[O],ie=[O],se=[O];var y=class{constructor(e=T){this._level=e;Z(P,5,this);ee(this,"_impl");this.impl=console;}_level;get level(){return this._level}set level(e){this._level=e,this.impl=this._impl??console;}get impl(){return this._impl}set impl(e){let r=e.debug??console.debug,o=e.info??console.info,n=e.warn??console.warn,s=e.error??console.error,l=this._level;this._impl={debug:l>=3?r:void 0,info:l>=2?o:void 0,warn:l>=1?n:void 0,error:l>=0?s:void 0};}debug(...e){this.impl?.debug?.(F,...e);}info(...e){this.impl?.info?.($,...e);}warn(...e){this.impl?.warn?.(U,...e);}error(...e){this.impl?.error?.(H,...e);}fatal(...e){this.impl?.error?.(W,...e),process.exit(1);}dispatch(e){let r=e.trimEnd();r.startsWith(F)?this.debug(r.slice(F.length+1)):r.startsWith($)?this.info(r.slice($.length+1)):r.startsWith(U)?this.warn(r.slice(U.length+1)):r.startsWith(H)?this.error(r.slice(H.length+1)):this.info(r);}attach(e,r){return new Promise((o,n)=>{this.debug(`${r}.attach`);let s="",l=i=>{let p=i.toString();p.startsWith(W)?s+=p.slice(W.length+1):this.dispatch(p);};e.stderr?.on("data",l),e.stdout?.on("data",l),e.on("error",i=>{s+=i.message,e.kill();}).once("close",(i,p)=>{i||p||s?(s||=`command failed: ${e.spawnargs.join(" ")}`,this.debug(`${r}.close`,{code:i,signal:p,fatal:s}),n(new Error(s))):(this.debug(`${r}.close`),o());}).on("unhandledRejection",i=>{this.error(`${r}.unhandled`,i);}).on("uncaughtExceptionMonitor",i=>{this.error(`${r}.unhandled`,i);});})}};P=Q(),_(P,1,"debug",pe,y),_(P,1,"info",le,y),_(P,1,"warn",ae,y),_(P,1,"error",ie,y),_(P,1,"fatal",se,y),D(P,y);var c=new y;Log.setCallback((t,e)=>{let r=e.trimEnd();r&&(t<=AV_LOG_ERROR?c.error(r):t<=AV_LOG_WARNING&&c.warn(r));});function ur(t,e){return (...r)=>{try{let o=t(...r);return o instanceof Promise?o.catch(()=>e):o}catch{return e}}}var Ce=1920,Oe=1080,Te=30,Ae=5,Ie="out/html.mp4,out/html.webm",hr=h.object({duration:h.number().describe("Duration in seconds"),width:h.number().describe("Video width"),height:h.number().describe("Video height"),fps:h.number().describe("Frames per second"),withAudio:h.boolean().describe("Capture and encode audio"),outFile:h.string().describe("Comma-separated output paths; extension (.mp4/.webm) selects encoder"),useInnerProxy:h.boolean().describe("Use bilibili inner proxy for resource access"),deterministic:h.boolean().describe("Render by frame rather than recording"),disableGpu:h.boolean().describe("Disable GPU rendering, may reduce performance but increase stability"),disableHwCodec:h.boolean().describe("Disable hardware video encoder (NVENC/VideoToolbox), use software x265"),windowTolerant:h.boolean().describe("Fall back to dom-ready if warmup load times out")}),ce={width:Ce,height:Oe,fps:Te,duration:Ae,outFile:Ie,withAudio:false,useInnerProxy:false,deterministic:false,disableGpu:false,disableHwCodec:false,windowTolerant:false};var Se="[HWAccel]";async function De(){let t=HardwareContext.auto(),e=t!==null;return t?.dispose(),e}var ue=De().then(t=>(c.debug(Se,"gpu:",t),t));async function de(t){let e=["no-sandbox","disable-dev-shm-usage","disable-web-security","disable-site-isolation-trials","ignore-certificate-errors","disable-blink-features=AutomationControlled","mute-audio","autoplay-policy=no-user-gesture-required","disable-extensions","deny-permission-prompts","use-mock-keychain","force-device-scale-factor=1","force-color-profile=srgb","ignore-gpu-blocklist","use-gl=angle","deterministic-mode","enable-begin-frame-control","disable-new-content-rendering-timeout","run-all-compositor-stages-before-draw","disable-threaded-animation","disable-threaded-scrolling","disable-checker-imaging","disable-image-animation-resync","enable-surface-synchronization","font-render-hinting=none","disable-background-networking","js-flags=--max-old-space-size=512","renderer-process-limit=1","num-raster-threads=2","disable-background-timer-throttling","disable-renderer-backgrounding","disable-backgrounding-occluded-windows","enable-logging=stderr"];T>=3?e.push("log-level=0","v=1"):e.push("log-level=3");let r=["FontationBackend"];if(!(await ue&&!t))e.push("use-angle=swiftshader","enable-unsafe-swiftshader");else {e.push("disable-gpu-sandbox","enable-unsafe-webgpu");let n=platform();n==="darwin"?e.push("use-angle=metal"):n==="win32"?e.push("use-angle=d3d11"):(e.push("use-angle=vulkan","disable-vulkan-surface"),r.push("Vulkan"));}return e.push(`enable-features=${r.join(",")}`),e}var j="--pup-priv-args";function Ar(){let t=process.argv,e=t.find(o=>o.startsWith(j));if(!e)return c.debug("procargv",t),process.argv;let r=["exec",...t.slice(-1)];return e=Buffer.from(e.split("=")[1],"base64").toString(),r.push(...JSON.parse(e)),c.debug("pupargs",r),r}function ge(t,e){let r=t.split(" ").filter(i=>i.length),[o,...n]=r;if(!o)throw new Error("empty command");let s=spawn(o,n,{stdio:"inherit",...e}),l=false;return {process:s,wait:c.attach(s,o),get killed(){return l},kill(){if(l)return;l=true;let i=s.pid;i?Ge(i,"SIGKILL"):s.kill("SIGKILL");}}}async function $e(t){return [...await de(t),"headless=new"]}var Ue="[Electron]";async function me({args:t}){let r=(await $e(t.includes("--disable-gpu"))).map(s=>`--${s}`);r.push(`${j}=${Buffer.from(JSON.stringify(t)).toString("base64")}`);let o=[Fe,...r,ne].join(" ");c.debug(Ue,o);let n={...process.env,RUST_BACKTRACE:"full"};return ge(o,{stdio:["ignore","pipe","pipe","ipc"],env:n})}var A=class extends EventEmitter{constructor(e){super(),e.on("message",r=>{let o=r;switch(o.type){case "console":{this.emit("console",o.level,o.message);break}case "progress":{this.emit("progress",o.value);break}case "done":{this.emit("done",o.payload);break}case "error":{this.emit("error",new Error(o.error));break}}}),e.once("exit",r=>this.emit("close",r));}};var B="[pup]";async function We(t,e){c.debug(B,"runPupApp",t,e);let r=[t,"--width",`${e.width}`,"--height",`${e.height}`,"--fps",`${e.fps}`,"--duration",`${e.duration}`,"--out-file",`${e.outFile}`];return e.withAudio&&r.push("--with-audio"),e.useInnerProxy&&r.push("--use-inner-proxy"),e.deterministic&&r.push("--deterministic"),e.disableGpu&&r.push("--disable-gpu"),e.disableHwCodec&&r.push("--disable-hw-codec"),e.windowTolerant&&r.push("--window-tolerant"),me({args:r})}var b=ce;async function zr(t,e){c.debug(B,"pup",t,e);let{signal:r}=e;r?.throwIfAborted();let o=e.outFile??b.outFile,n={width:e.width??b.width,height:e.height??b.height,fps:e.fps??b.fps,duration:e.duration??b.duration,withAudio:e.withAudio??b.withAudio,useInnerProxy:e.useInnerProxy??b.useInnerProxy,deterministic:e.deterministic??b.deterministic,disableGpu:e.disableGpu??b.disableGpu,disableHwCodec:e.disableHwCodec??b.disableHwCodec,windowTolerant:e.windowTolerant??b.windowTolerant,outFile:o},s=performance.now(),l=0,i=w=>{l=w,e.onProgress?.(w);},p=await We(t,n),v=()=>{p.process.send?.({type:"cancel",reason:String(r?.reason??"abort")}),setTimeout(()=>p.kill(),5e3);};r?.addEventListener("abort",v,{once:true});try{let w=new Promise((E,u)=>{new A(p.process).on("close",x=>{let k=JSON.stringify({source:t,progress:l,code:x,killed:p.killed});u(new Error(`crashed: ${k}`));}).on("progress",i).on("console",(x,k)=>e.onConsole?.(x,k)).on("done",E).on("error",u);});i(0);let[a]=await Promise.all([w,p.wait]);return i(100),c.debug(B,`done ${o} in ${Math.round(performance.now()-s)}ms`),{...a,options:n}}catch(w){throw p.kill(),r?.throwIfAborted(),w}finally{r?.removeEventListener("abort",v);}}export{re as a,Be as b,te as c,oe as d,y as e,c as f,ur as g,Ar as h,Ce as i,Oe as j,Te as k,Ae as l,hr as m,ce as n,zr as o};//# sourceMappingURL=chunk-YJ7QEMFY.js.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2NsaV91aS50cyIsIi4uL3NyYy9iYXNlL2Vudi50cyIsIi4uL3NyYy9iYXNlL3BhcnNlci50cyIsIi4uL3NyYy9iYXNlL2NvbnN0YW50cy50cyIsIi4uL3NyYy9iYXNlL2xvZ2dpbmcudHMiLCIuLi9zcmMvYmFzZS9ub2Vyci50cyIsIi4uL3NyYy9yZW5kZXJlci9zY2hlbWEudHMiLCIuLi9zcmMvYmFzZS9od2FjY2VsLnRzIiwiLi4vc3JjL2Jhc2UvY2hyb21pdW0udHMiLCIuLi9zcmMvYmFzZS9wcm9jZXNzLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2VsZWN0cm9uLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2lwYy50cyIsIi4uL3NyYy9wdXAudHMiXSwibmFtZXMiOlsiUHJvZ3Jlc3NCYXIiLCJvcHRzIiwid3JpdHRlbiIsInBjdCIsImxpbmUiLCJyYXRpbyIsImZpbGxlZCIsImJhciIsInN1ZmZpeCIsImJhckxvZ2dlciIsIndyYXAiLCJmbiIsImFyZ3MiLCJwZW52IiwibmFtZSIsInBhcnNlciIsImRlZmF1bHRWYWx1ZSIsInBhcnNlTnVtYmVyIiwieCIsIm51bSIsInJlcXVpcmUiLCJjcmVhdGVSZXF1aXJlIiwicHVwTG9nTGV2ZWwiLCJwdXBQa2dSb290IiwiZGlybmFtZSIsInB1cEFwcCIsImpvaW4iLCJERUJVRyIsIklORk8iLCJXQVJOIiwiRVJST1IiLCJGQVRBTCIsInN0YWNrSG9vayIsInRhcmdldCIsIl9jb250ZXh0IiwibWVzc2FnZXMiLCJwcm9jZXNzZWQiLCJtc2ciLCJfZmF0YWxfZGVjIiwiX2Vycm9yX2RlYyIsIl93YXJuX2RlYyIsIl9pbmZvX2RlYyIsIl9kZWJ1Z19kZWMiLCJfaW5pdCIsIkxvZ2dlciIsIl9sZXZlbCIsIl9fcnVuSW5pdGlhbGl6ZXJzIiwiX19wdWJsaWNGaWVsZCIsInZhbHVlIiwiZGVidWciLCJpbmZvIiwid2FybiIsImVycm9yIiwibHYiLCJtZXNzYWdlIiwicHJvYyIsInJlc29sdmUiLCJyZWplY3QiLCJmYXRhbCIsImRpc3BhdGNoIiwiZGF0YSIsImVyciIsImNvZGUiLCJzaWduYWwiLCJyZWFzb24iLCJfX2RlY29yYXRvclN0YXJ0IiwiX19kZWNvcmF0ZUVsZW1lbnQiLCJfX2RlY29yYXRvck1ldGFkYXRhIiwibG9nZ2VyIiwiTG9nIiwibGV2ZWwiLCJBVl9MT0dfRVJST1IiLCJBVl9MT0dfV0FSTklORyIsIm5vZXJyIiwicmV0IiwiREVGQVVMVF9XSURUSCIsIkRFRkFVTFRfSEVJR0hUIiwiREVGQVVMVF9GUFMiLCJERUZBVUxUX0RVUkFUSU9OIiwiREVGQVVMVF9PVVRfRklMRSIsIlJlbmRlclNjaGVtYSIsInoiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsIlRBRyIsImRldGVjdEdQVURyaXZlciIsImh3IiwiSGFyZHdhcmVDb250ZXh0IiwicmVzdWx0IiwiY2FuSVVzZUdQVSIsImNocm9taXVtT3B0aW9ucyIsImRpc2FibGVHcHUiLCJmZWF0dXJlcyIsInBsYXQiLCJwbGF0Zm9ybSIsIlBVUF9BUkdTX0tFWSIsInBhcmdzIiwiYXJndiIsInByaXYiLCJhcmciLCJleGVjIiwiY21kIiwib3B0aW9ucyIsInBhcnRzIiwicyIsImNvbW1hbmQiLCJzcGF3biIsImtpbGxlZCIsInBpZCIsInRyZWVLaWxsIiwiZWxlY3Ryb25PcHRzIiwicnVuRWxlY3Ryb25BcHAiLCJlbGVjdHJvbkFyZ3MiLCJhIiwiZWxlY3Ryb24iLCJlbnYiLCJJcGNSZWFkZXIiLCJFdmVudEVtaXR0ZXIiLCJjaGlsZCIsInJhdyIsImMiLCJydW5QdXBBcHAiLCJzb3VyY2UiLCJyZW5kZXIiLCJkIiwicHVwIiwib3V0RmlsZSIsInJlbmRlck9wdHMiLCJ0MCIsInByb2dyZXNzIiwidGljayIsInAiLCJoYW5kbGUiLCJvbkFib3J0IiwibCIsIm0iLCJzdW1tYXJ5IiwiZSJdLCJtYXBwaW5ncyI6IisxQ0FZTyxJQUFNQSxFQUFBQSxDQUFOLEtBQWtCLENBQ2YsUUFBQSxDQUFXLEVBQ1gsTUFBQSxDQUFTLEtBQUEsQ0FDQSxNQUFBLENBQ0EsSUFBQSxDQUNBLElBQUEsQ0FDQSxVQUFBLENBRWpCLFlBQVlDLENBQUFBLENBQWtCLENBQzVCLEtBQUssTUFBQSxDQUFTQSxDQUFBQSxDQUFLLE1BQ25CLElBQUEsQ0FBSyxJQUFBLENBQU9BLENBQUFBLENBQUssR0FBQSxDQUNqQixJQUFBLENBQUssSUFBQSxDQUFPLENBQUMsQ0FBQ0EsQ0FBQUEsQ0FBSyxJQUFJLEtBQUEsQ0FDdkIsSUFBQSxDQUFLLFdBQWFBLENBQUFBLENBQUssU0FBQSxFQUFhLE1BQ3RDLENBRUEsSUFBSSxLQUFBLEVBQWdCLENBQ2xCLE9BQU8sSUFBQSxDQUFLLE1BQ2QsQ0FFQSxNQUFBLENBQU9DLENBQUFBLENBQXVCLENBQzVCLElBQUEsQ0FBSyxRQUFBLENBQVcsSUFBQSxDQUFLLEdBQUEsQ0FBSSxJQUFBLENBQUssTUFBQSxDQUFRLEtBQUssR0FBQSxDQUFJLENBQUEsQ0FBR0EsQ0FBTyxDQUFDLENBQUEsQ0FDMUQsS0FBSyxNQUFBLEdBQ1AsQ0FFQSxhQUFBLENBQWNDLENBQUFBLENBQW1CLENBQy9CLEtBQUssTUFBQSxDQUFPLElBQUEsQ0FBSyxNQUFPQSxDQUFBQSxDQUFNLEdBQUEsQ0FBTyxLQUFLLE1BQU0sQ0FBQyxFQUNuRCxDQUVBLEtBQUEsRUFBYyxDQUNSLEtBQUssSUFBQSxFQUFRLElBQUEsQ0FBSyxRQUFRLElBQUEsQ0FBSyxJQUFBLENBQUssTUFBTSxXQUFXLEVBQzNELENBRUEsTUFBQSxFQUFlLENBQ2IsSUFBQSxDQUFLLFNBQ1AsQ0FFQSxHQUFBLENBQUlDLENBQUFBLENBQW9CLENBQ3RCLElBQUEsQ0FBSyxPQUFNLENBQ1gsSUFBQSxDQUFLLElBQUEsQ0FBSyxLQUFBLENBQU1BLENBQUFBLENBQU87QUFBQSxDQUFJLENBQUEsQ0FDM0IsSUFBQSxDQUFLLE1BQUEsR0FDUCxDQUVBLE1BQUEsQ0FBT0EsQ0FBQUEsQ0FBb0IsQ0FDekIsSUFBQSxDQUFLLEtBQUEsRUFBTSxDQUNYLElBQUEsQ0FBSyxJQUFBLENBQUssTUFBTUEsQ0FBQUEsQ0FBTztBQUFBLENBQUksQ0FBQSxDQUMzQixLQUFLLE1BQUEsQ0FBUyxNQUNoQixDQUVRLE1BQUEsRUFBZSxDQUVyQixHQURJLENBQUMsSUFBQSxDQUFLLElBQUEsRUFDTixLQUFLLFFBQUEsR0FBYSxDQUFBLEVBQUssQ0FBQyxJQUFBLENBQUssTUFBQSxDQUFRLE9BQ3pDLElBQU1DLENBQUFBLENBQVEsSUFBQSxDQUFLLE1BQUEsQ0FBUyxDQUFBLENBQUksSUFBQSxDQUFLLFFBQUEsQ0FBVyxLQUFLLE1BQUEsQ0FBUyxDQUFBLENBQ3hEQyxFQUFTLElBQUEsQ0FBSyxLQUFBLENBQU1ELEVBQVEsRUFBUyxDQUFBLENBQ3JDRSxDQUFBQSxDQUFNLEdBQUEsQ0FBSSxNQUFBLENBQU9ELENBQU0sRUFBSSxHQUFBLENBQUksTUFBQSxDQUFPLEVBQUEsQ0FBWUEsQ0FBTSxDQUFBLENBQ3hESCxDQUFBQSxDQUFNLEtBQUssS0FBQSxDQUFNRSxDQUFBQSxDQUFRLEdBQUcsQ0FBQSxDQUM1QkcsQ0FBQUEsQ0FBUyxJQUFBLENBQUssV0FBYSxDQUFBLEVBQUcsSUFBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLEVBQUksSUFBQSxDQUFLLE1BQU0sQ0FBQSxFQUFBLEVBQUtMLENBQUcsQ0FBQSxFQUFBLENBQUEsQ0FBTyxDQUFBLEVBQUdBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FDckYsS0FBSyxJQUFBLENBQUssS0FBQSxDQUFNLENBQUEsR0FBQSxFQUFNSSxDQUFHLENBQUEsRUFBQSxFQUFLQyxDQUFNLEVBQUUsQ0FBQSxDQUN0QyxJQUFBLENBQUssTUFBQSxDQUFTLEtBQ2hCLENBQ0YsRUFHTyxTQUFTQyxFQUFBQSxDQUFVRixDQUFBQSxDQUE4QixDQUN0RCxJQUFNRyxDQUFBQSxDQUNrQ0MsQ0FBQUEsRUFDdEMsSUFBSUMsQ0FBQUEsR0FBb0IsQ0FDdEJMLENBQUFBLENBQUksS0FBQSxFQUFNLENBQ1ZJLENBQUFBLENBQUcsR0FBR0MsQ0FBSSxDQUFBLENBQ1ZMLENBQUFBLENBQUksTUFBQSxHQUNOLENBQUEsQ0FDRixPQUFPLENBQ0wsS0FBQSxDQUFPRyxDQUFBQSxDQUFLLE9BQUEsQ0FBUSxLQUFLLENBQUEsQ0FDekIsS0FBTUEsQ0FBQUEsQ0FBSyxPQUFBLENBQVEsSUFBSSxDQUFBLENBQ3ZCLElBQUEsQ0FBTUEsRUFBSyxPQUFBLENBQVEsSUFBSSxDQUFBLENBQ3ZCLEtBQUEsQ0FBT0EsQ0FBQUEsQ0FBSyxPQUFBLENBQVEsS0FBSyxDQUMzQixDQUNGLENDbEZPLFNBQVNHLEVBQUFBLENBQVFDLENBQUFBLENBQWNDLEVBQXNCQyxDQUFBQSxDQUFpQyxDQUMzRixHQUFJLENBQ0YsT0FBT0QsQ0FBQUEsQ0FBTyxRQUFRLEdBQUEsQ0FBSUQsQ0FBSSxDQUFDLENBQ2pDLENBQUEsS0FBUSxDQUNOLE9BQU9FLENBQ1QsQ0FDRixDQ1ZPLFNBQVNDLEVBQUFBLENBQVlDLEVBQW9CLENBQzlDLEdBQUksT0FBT0EsQ0FBQUEsRUFBTSxRQUFBLENBQ2YsT0FBT0EsRUFFVCxJQUFNQyxDQUFBQSxDQUFNLE1BQUEsQ0FBT0QsQ0FBQyxDQUFBLENBQ3BCLEdBQUksT0FBTyxLQUFBLENBQU1DLENBQUcsRUFDbEIsTUFBTSxJQUFJLE1BQU0sQ0FBQSxNQUFBLEVBQVNELENBQUMsQ0FBQSxzQkFBQSxDQUF3QixDQUFBLENBRXBELE9BQU9DLENBQ1QsS0NKTUMsRUFBQUEsQ0FBVUMsYUFBQUEsQ0FBYyxNQUFBLENBQUEsSUFBQSxDQUFZLEdBQUcsQ0FBQSxDQUVoQ0MsQ0FBQUEsQ0FBY1QsR0FBSyxlQUFBLENBQWlCSSxFQUFBQSxDQUFhLENBQUMsQ0FBQSxDQUVsRE0sQ0FBQUEsQ0FBYUMsT0FBQUEsQ0FBUUosR0FBUSxPQUFBLENBQVEsMkJBQTJCLENBQUMsQ0FBQSxDQUNqRUssRUFBQUEsQ0FBU0MsSUFBQUEsQ0FBS0gsRUFBWSxNQUFBLENBQVEsU0FBUyxFQUN6QkcsSUFBQUEsQ0FBS0gsRUFBWSxNQUFBLENBQVEsbUJBQW1CLENBQUEsQ0FDM0NHLElBQUFBLENBQUtILENBQUFBLENBQVksT0FBUSxvQkFBb0IsRUNHN0UsSUFBTUksQ0FBQUEsQ0FBUSxhQUFBLENBQ1JDLENBQUFBLENBQU8sYUFDUEMsQ0FBQUEsQ0FBTyxZQUFBLENBQ1BDLENBQUFBLENBQVEsYUFBQSxDQUNSQyxDQUFBQSxDQUFRLGFBQUEsQ0FFZCxTQUFTQyxDQUFBQSxDQUFVQyxDQUFBQSxDQUFrQkMsRUFBdUMsQ0FDMUUsT0FBTyxZQUEyQkMsQ0FBQUEsQ0FBcUIsQ0FDckQsSUFBTUMsQ0FBQUEsQ0FBWUQsQ0FBQUEsQ0FBUyxHQUFBLENBQUtFLEdBQ3ZCQSxDQUFBQSxZQUFlLEtBQUEsQ0FBU0EsQ0FBQUEsQ0FBSSxLQUFBLEVBQVMsTUFBQSxDQUFPQSxDQUFHLEVBQUtBLENBQzVELENBQUEsQ0FDRCxPQUFPSixDQUFBQSxDQUFPLElBQUEsQ0FBSyxJQUFBLENBQU0sR0FBR0csQ0FBUyxDQUN2QyxDQUNGLENBOUJBLElBQUFFLEdBQUFDLEVBQUFBLENBQUFDLEVBQUFBLENBQUFDLEVBQUFBLENBQUFDLEVBQUFBLENBQUFDLENBQUFBLENBa0VFRCxFQUFBQSxDQUFBLENBQUNWLENBQUFBLENBQUFBLENBS0RTLEVBQUFBLENBQUEsQ0FBQ1QsQ0FBQUEsQ0FBQUEsQ0FLRFEsRUFBQUEsQ0FBQSxDQUFDUixHQUtETyxFQUFBQSxDQUFBLENBQUNQLENBQUFBLENBQUFBLENBS0RNLEVBQUFBLENBQUEsQ0FBQ04sQ0FBQUEsQ0FBQUEsS0F0RFVZLENBQUFBLENBQU4sS0FBbUMsQ0E4QnhDLFdBQUEsQ0FBb0JDLENBQUFBLENBQWlCdkIsQ0FBQUEsQ0FBYSxDQUE5QixJQUFBLENBQUEsTUFBQSxDQUFBdUIsQ0FBQUEsQ0E5QmZDLENBQUFBLENBQUFILENBQUFBLENBQUEsQ0FBQSxDQUFBLElBQUEsQ0FBQSxDQUNMSSxFQUFBQSxDQUFBLEtBQVEsT0FBQSxDQUFBLENBOEJOLElBQUEsQ0FBSyxJQUFBLENBQU8sUUFDZCxDQUZvQixNQUFBLENBM0JwQixJQUFJLEtBQUEsRUFBZ0IsQ0FDbEIsT0FBTyxJQUFBLENBQUssTUFDZCxDQUVBLElBQUksS0FBQSxDQUFNQyxDQUFBQSxDQUFlLENBQ3ZCLElBQUEsQ0FBSyxNQUFBLENBQVNBLEVBQ2QsSUFBQSxDQUFLLElBQUEsQ0FBTyxJQUFBLENBQUssS0FBQSxFQUFTLFFBQzVCLENBRUEsSUFBSSxJQUFBLEVBQStCLENBQ2pDLE9BQU8sSUFBQSxDQUFLLEtBQ2QsQ0FFQSxJQUFJLElBQUEsQ0FBS0EsQ0FBQUEsQ0FBbUIsQ0FDMUIsSUFBTUMsQ0FBQUEsQ0FBUUQsQ0FBQUEsQ0FBTSxPQUFTLE9BQUEsQ0FBUSxLQUFBLENBQy9CRSxDQUFBQSxDQUFPRixDQUFBQSxDQUFNLElBQUEsRUFBUSxPQUFBLENBQVEsS0FDN0JHLENBQUFBLENBQU9ILENBQUFBLENBQU0sSUFBQSxFQUFRLE9BQUEsQ0FBUSxJQUFBLENBQzdCSSxDQUFBQSxDQUFRSixFQUFNLEtBQUEsRUFBUyxPQUFBLENBQVEsS0FBQSxDQUMvQkssQ0FBQUEsQ0FBSyxJQUFBLENBQUssTUFBQSxDQUNoQixLQUFLLEtBQUEsQ0FBUSxDQUNYLEtBQUEsQ0FBT0EsQ0FBQUEsRUFBTSxDQUFBLENBQUlKLENBQUFBLENBQVEsT0FDekIsSUFBQSxDQUFNSSxDQUFBQSxFQUFNLEVBQUlILENBQUFBLENBQU8sTUFBQSxDQUN2QixLQUFNRyxDQUFBQSxFQUFNLENBQUEsQ0FBSUYsQ0FBQUEsQ0FBTyxNQUFBLENBQ3ZCLEtBQUEsQ0FBT0UsQ0FBQUEsRUFBTSxFQUFJRCxDQUFBQSxDQUFRLE1BQzNCLEVBQ0YsQ0FPQSxLQUFBLENBQUEsR0FBU2pCLENBQUFBLENBQTJCLENBQ2xDLElBQUEsQ0FBSyxJQUFBLEVBQU0sS0FBQSxHQUFRUixDQUFBQSxDQUFPLEdBQUdRLENBQVEsRUFDdkMsQ0FHQSxJQUFBLENBQUEsR0FBUUEsQ0FBQUEsQ0FBMkIsQ0FDakMsSUFBQSxDQUFLLElBQUEsRUFBTSxPQUFPUCxDQUFBQSxDQUFNLEdBQUdPLENBQVEsRUFDckMsQ0FHQSxJQUFBLENBQUEsR0FBUUEsRUFBMkIsQ0FDakMsSUFBQSxDQUFLLElBQUEsRUFBTSxJQUFBLEdBQU9OLENBQUFBLENBQU0sR0FBR00sQ0FBUSxFQUNyQyxDQUdBLEtBQUEsQ0FBQSxHQUFTQSxDQUFBQSxDQUEyQixDQUNsQyxJQUFBLENBQUssTUFBTSxLQUFBLEdBQVFMLENBQUFBLENBQU8sR0FBR0ssQ0FBUSxFQUN2QyxDQUdBLEtBQUEsQ0FBQSxHQUFTQSxDQUFBQSxDQUEyQixDQUNsQyxJQUFBLENBQUssSUFBQSxFQUFNLEtBQUEsR0FBUUosRUFBTyxHQUFHSSxDQUFRLENBQUEsQ0FDckMsT0FBQSxDQUFRLElBQUEsQ0FBSyxDQUFDLEVBQ2hCLENBRVEsUUFBQSxDQUFTbUIsQ0FBQUEsQ0FBaUIsQ0FDaEMsSUFBTWpCLENBQUFBLENBQU1pQixFQUFRLE9BQUEsRUFBUSxDQUN4QmpCLEVBQUksVUFBQSxDQUFXVixDQUFLLEVBQ3RCLElBQUEsQ0FBSyxLQUFBLENBQU1VLENBQUFBLENBQUksS0FBQSxDQUFNVixDQUFBQSxDQUFNLE1BQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUM3QlUsQ0FBQUEsQ0FBSSxVQUFBLENBQVdULENBQUksQ0FBQSxDQUM1QixLQUFLLElBQUEsQ0FBS1MsQ0FBQUEsQ0FBSSxLQUFBLENBQU1ULENBQUFBLENBQUssTUFBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQzNCUyxDQUFBQSxDQUFJLFdBQVdSLENBQUksQ0FBQSxDQUM1QixLQUFLLElBQUEsQ0FBS1EsQ0FBQUEsQ0FBSSxLQUFBLENBQU1SLENBQUFBLENBQUssTUFBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQzNCUSxDQUFBQSxDQUFJLFVBQUEsQ0FBV1AsQ0FBSyxDQUFBLENBQzdCLElBQUEsQ0FBSyxNQUFNTyxDQUFBQSxDQUFJLEtBQUEsQ0FBTVAsQ0FBQUEsQ0FBTSxNQUFBLENBQVMsQ0FBQyxDQUFDLEVBRXRDLElBQUEsQ0FBSyxJQUFBLENBQUtPLENBQUcsRUFFakIsQ0FFQSxNQUFBLENBQU9rQixFQUFvQnpDLENBQUFBLENBQWMsQ0FDdkMsT0FBTyxJQUFJLE9BQUEsQ0FBYyxDQUFDMEMsRUFBU0MsQ0FBQUEsR0FBVyxDQUM1QyxJQUFBLENBQUssS0FBQSxDQUFNLENBQUEsRUFBRzNDLENBQUksU0FBUyxDQUFBLENBQzNCLElBQUk0QyxDQUFBQSxDQUFnQixFQUFBLENBQ2RDLENBQUFBLENBQVlDLENBQUFBLEVBQWlCLENBQ2pDLElBQU1OLENBQUFBLENBQVVNLEVBQUssUUFBQSxFQUFTLENBQzFCTixFQUFRLFVBQUEsQ0FBV3ZCLENBQUssQ0FBQSxDQUMxQjJCLENBQUFBLEVBQVNKLENBQUFBLENBQVEsS0FBQSxDQUFNdkIsRUFBTSxNQUFBLENBQVMsQ0FBQyxDQUFBLENBRXZDLElBQUEsQ0FBSyxRQUFBLENBQVN1QixDQUFPLEVBRXpCLENBQUEsQ0FDQUMsQ0FBQUEsQ0FBSyxNQUFBLEVBQVEsRUFBQSxDQUFHLE1BQUEsQ0FBUUksQ0FBUSxFQUNoQ0osQ0FBQUEsQ0FBSyxNQUFBLEVBQVEsR0FBRyxNQUFBLENBQVFJLENBQVEsRUFDaENKLENBQUFBLENBQ0csRUFBQSxDQUFHLE9BQUEsQ0FBVU0sQ0FBQUEsRUFBUSxDQUNwQkgsQ0FBQUEsRUFBU0csRUFBSSxPQUFBLENBQ2JOLENBQUFBLENBQUssSUFBQSxHQUNQLENBQUMsQ0FBQSxDQUNBLEtBQUssT0FBQSxDQUFTLENBQUNPLENBQUFBLENBQU1DLENBQUFBLEdBQVcsQ0FDM0JELENBQUFBLEVBQVFDLEdBQVVMLENBQUFBLEVBQ3BCQSxDQUFBQSxHQUFVLG1CQUFtQkgsQ0FBQUEsQ0FBSyxTQUFBLENBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQ3JELElBQUEsQ0FBSyxLQUFBLENBQU0sQ0FBQSxFQUFHekMsQ0FBSSxDQUFBLE1BQUEsQ0FBQSxDQUFVLENBQUUsSUFBQSxDQUFBZ0QsQ0FBQUEsQ0FBTSxNQUFBLENBQUFDLENBQUFBLENBQVEsTUFBQUwsQ0FBTSxDQUFDLENBQUEsQ0FDbkRELENBQUFBLENBQU8sSUFBSSxLQUFBLENBQU1DLENBQUssQ0FBQyxDQUFBLEdBRXZCLElBQUEsQ0FBSyxLQUFBLENBQU0sQ0FBQSxFQUFHNUMsQ0FBSSxRQUFRLENBQUEsQ0FDMUIwQyxDQUFBQSxFQUFRLEVBRVosQ0FBQyxDQUFBLENBQ0EsRUFBQSxDQUFHLHFCQUF1QlEsQ0FBQUEsRUFBVyxDQUNwQyxJQUFBLENBQUssS0FBQSxDQUFNLENBQUEsRUFBR2xELENBQUksYUFBY2tELENBQU0sRUFDeEMsQ0FBQyxDQUFBLENBQ0EsRUFBQSxDQUFHLDBCQUFBLENBQTZCSCxHQUFRLENBQ3ZDLElBQUEsQ0FBSyxNQUFNLENBQUEsRUFBRy9DLENBQUksYUFBYytDLENBQUcsRUFDckMsQ0FBQyxFQUNMLENBQUMsQ0FDSCxDQUNGLEVBaEhPbEIsQ0FBQUEsQ0FBQXNCLENBQUFBLENBQUEsQ0FBQSxDQW1DTEMsQ0FBQUEsQ0FBQXZCLENBQUFBLENBQUEsVUFEQUQsRUFBQUEsQ0FsQ1dFLENBQUFBLENBQUFBLENBd0NYc0IsQ0FBQUEsQ0FBQXZCLENBQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FEQUYsRUFBQUEsQ0F2Q1dHLEdBNkNYc0IsQ0FBQUEsQ0FBQXZCLENBQUFBLENBQUEsU0FEQUgsRUFBQUEsQ0E1Q1dJLENBQUFBLENBQUFBLENBa0RYc0IsRUFBQXZCLENBQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FEQUosRUFBQUEsQ0FqRFdLLENBQUFBLENBQUFBLENBdURYc0IsQ0FBQUEsQ0FBQXZCLENBQUFBLENBQUEsVUFEQUwsRUFBQUEsQ0F0RFdNLENBQUFBLENBQUFBLENBQU51QixDQUFBQSxDQUFBeEIsQ0FBQUEsQ0FBTUMsQ0FBQUEsQ0FBQUEsQ0FrSGIsSUFBTXdCLEVBQVMsSUFBSXhCLEVBR25CeUIsR0FBQUEsQ0FBSSxXQUFBLENBQVksQ0FBQ0MsQ0FBQUEsQ0FBT2hCLElBQVksQ0FDbEMsSUFBTWpCLEVBQU1pQixDQUFBQSxDQUFRLE9BQUEsR0FDZmpCLENBQUFBLEdBQ0RpQyxDQUFBQSxFQUFTQyxZQUFBQSxDQUFjSCxDQUFBQSxDQUFPLEtBQUEsQ0FBTS9CLENBQUcsRUFDbENpQyxDQUFBQSxFQUFTRSxjQUFBQSxFQUFnQkosQ0FBQUEsQ0FBTyxJQUFBLENBQUsvQixDQUFHLENBQUEsRUFDbkQsQ0FBQyxDQUFBLENDeEpNLFNBQVNvQyxFQUFBQSxDQUNkOUQsQ0FBQUEsQ0FDQUssQ0FBQUEsQ0FDaUQsQ0FDakQsT0FBTyxDQUFBLEdBQUlKLENBQUFBLEdBQVMsQ0FDbEIsR0FBSSxDQUNGLElBQU04RCxFQUFNL0QsQ0FBQUEsQ0FBRyxHQUFHQyxDQUFJLENBQUEsQ0FDdEIsT0FBSThELENBQUFBLFlBQWUsUUFDVkEsQ0FBQUEsQ0FBSSxLQUFBLENBQU0sSUFBTTFELENBQVksQ0FBQSxDQUU5QjBELENBQ1QsTUFBUSxDQUNOLE9BQU8xRCxDQUNULENBQ0YsQ0FDRixLQ2JhMkQsRUFBQUEsQ0FBZ0IsSUFBQSxDQUNoQkMsR0FBaUIsSUFBQSxDQUNqQkMsRUFBQUEsQ0FBYyxFQUFBLENBQ2RDLEVBQUFBLENBQW1CLENBQUEsQ0FDbkJDLEVBQUFBLENBQW1CLDZCQUVuQkMsRUFBQUEsQ0FBZUMsQ0FBQUEsQ0FBRSxNQUFBLENBQU8sQ0FDbkMsUUFBQSxDQUFVQSxDQUFBQSxDQUFFLFFBQU8sQ0FBRSxRQUFBLENBQVMscUJBQXFCLENBQUEsQ0FDbkQsS0FBQSxDQUFPQSxDQUFBQSxDQUFFLFFBQU8sQ0FBRSxRQUFBLENBQVMsYUFBYSxDQUFBLENBQ3hDLE1BQUEsQ0FBUUEsQ0FBQUEsQ0FBRSxRQUFPLENBQUUsUUFBQSxDQUFTLGNBQWMsQ0FBQSxDQUMxQyxHQUFBLENBQUtBLENBQUFBLENBQUUsUUFBTyxDQUFFLFFBQUEsQ0FBUyxtQkFBbUIsQ0FBQSxDQUM1QyxTQUFBLENBQVdBLENBQUFBLENBQUUsU0FBUSxDQUFFLFFBQUEsQ0FBUywwQkFBMEIsQ0FBQSxDQUMxRCxPQUFBLENBQVNBLENBQUFBLENBQUUsUUFBTyxDQUFFLFFBQUEsQ0FBUyxzRUFBc0UsQ0FBQSxDQUNuRyxhQUFBLENBQWVBLEVBQUUsT0FBQSxFQUFRLENBQUUsUUFBQSxDQUFTLDhDQUE4QyxDQUFBLENBQ2xGLGFBQUEsQ0FBZUEsRUFBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsdUNBQXVDLENBQUEsQ0FDM0UsVUFBQSxDQUFZQSxFQUFFLE9BQUEsRUFBUSxDQUFFLFFBQUEsQ0FBUyxzRUFBc0UsQ0FBQSxDQUN2RyxjQUFBLENBQWdCQSxFQUFFLE9BQUEsRUFBUSxDQUFFLFFBQUEsQ0FBUyx3RUFBd0UsQ0FBQSxDQUM3RyxjQUFBLENBQWdCQSxFQUFFLE9BQUEsRUFBUSxDQUFFLFFBQUEsQ0FBUyxpREFBaUQsQ0FDeEYsQ0FBQyxFQXNCWUMsRUFBQUEsQ0FBc0MsQ0FDakQsS0FBQSxDQUFPUCxFQUFBQSxDQUNQLE1BQUEsQ0FBUUMsRUFBQUEsQ0FDUixJQUFLQyxFQUFBQSxDQUNMLFFBQUEsQ0FBVUMsRUFBQUEsQ0FDVixPQUFBLENBQVNDLEVBQUFBLENBQ1QsU0FBQSxDQUFXLE1BQ1gsYUFBQSxDQUFlLEtBQUEsQ0FDZixjQUFlLEtBQUEsQ0FDZixVQUFBLENBQVksTUFDWixjQUFBLENBQWdCLEtBQUEsQ0FDaEIsY0FBQSxDQUFnQixLQUNsQixFQ25EQSxJQUFNSSxFQUFBQSxDQUFNLFdBQUEsQ0FFWixlQUFlQyxJQUFrQixDQUMvQixJQUFNQyxFQUFLQyxlQUFBQSxDQUFnQixJQUFBLEdBQ3JCQyxDQUFBQSxDQUFTRixDQUFBQSxHQUFPLElBQUEsQ0FDdEIsT0FBQUEsQ0FBQUEsRUFBSSxPQUFBLEdBQ0dFLENBQ1QsQ0FFTyxJQUFNQyxFQUFBQSxDQUFhSixFQUFBQSxFQUFnQixDQUFFLEtBQU1HLENBQUFBLEdBQ2hEbkIsQ0FBQUEsQ0FBTyxLQUFBLENBQU1lLEVBQUFBLENBQUssTUFBQSxDQUFRSSxDQUFNLEVBQ3pCQSxDQUFBQSxDQUNSLENBQUEsQ0NYRCxlQUFzQkUsRUFBQUEsQ0FBZ0JDLENBQUFBLENBQXFCLENBQ3pELElBQU16RixDQUFBQSxDQUFPLENBRVgsWUFBQSxDQUNBLHVCQUFBLENBRUEsc0JBQUEsQ0FDQSxnQ0FDQSwyQkFBQSxDQUVBLDZDQUFBLENBQ0EsWUFBQSxDQUNBLDBDQUFBLENBQ0Esb0JBQUEsQ0FDQSx5QkFBQSxDQUNBLG9CQUVBLDZCQUFBLENBQ0EsMEJBQUEsQ0FDQSxzQkFBQSxDQUNBLGNBQUEsQ0FDQSxvQkFBQSxDQUNBLDRCQUFBLENBQ0Esd0NBQ0EsdUNBQUEsQ0FDQSw0QkFBQSxDQUNBLDRCQUFBLENBQ0EseUJBQUEsQ0FDQSxnQ0FBQSxDQUNBLGdDQUFBLENBRUEsMkJBRUEsK0JBQUEsQ0FDQSxtQ0FBQSxDQUNBLDBCQUFBLENBQ0Esc0JBQUEsQ0FDQSxxQ0FBQSxDQUNBLGdDQUFBLENBQ0EseUNBRUEsdUJBQ0YsQ0FBQSxDQUVJcUIsQ0FBQUEsRUFBZSxDQUFBLENBQ2pCckIsQ0FBQUEsQ0FBSyxJQUFBLENBQUssY0FBZSxLQUFLLENBQUEsQ0FFOUJBLENBQUFBLENBQUssSUFBQSxDQUFLLGFBQWEsQ0FBQSxDQUd6QixJQUFNMEYsQ0FBQUEsQ0FBVyxDQUFDLGtCQUFrQixDQUFBLENBRXBDLEdBQUksRUFEZSxNQUFNSCxFQUFBQSxFQUFlLENBQUNFLENBQUFBLENBQUFBLENBRXZDekYsQ0FBQUEsQ0FBSyxJQUFBLENBQUssd0JBQXlCLDJCQUEyQixDQUFBLENBQUEsS0FDekQsQ0FDTEEsQ0FBQUEsQ0FBSyxJQUFBLENBQUsscUJBQUEsQ0FBdUIsc0JBQXNCLENBQUEsQ0FDdkQsSUFBTTJGLENBQUFBLENBQU9DLFFBQUFBLEVBQVMsQ0FDbEJELENBQUFBLEdBQVMsU0FDWDNGLENBQUFBLENBQUssSUFBQSxDQUFLLGlCQUFpQixDQUFBLENBQ2xCMkYsQ0FBQUEsR0FBUyxRQUNsQjNGLENBQUFBLENBQUssSUFBQSxDQUFLLGlCQUFpQixDQUFBLEVBRTNCQSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxtQkFBb0Isd0JBQXdCLENBQUEsQ0FDdEQwRixDQUFBQSxDQUFTLElBQUEsQ0FBSyxRQUFRLENBQUEsRUFFMUIsQ0FFQSxPQUFBMUYsQ0FBQUEsQ0FBSyxJQUFBLENBQUssQ0FBQSxnQkFBQSxFQUFtQjBGLENBQUFBLENBQVMsSUFBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUUsRUFDMUMxRixDQUNULENDckVPLElBQU02RixDQUFBQSxDQUFlLGlCQUFBLENBRXJCLFNBQVNDLEVBQUFBLEVBQVEsQ0FDdEIsSUFBTUMsRUFBTyxPQUFBLENBQVEsSUFBQSxDQUNqQkMsQ0FBQUEsQ0FBT0QsQ0FBQUEsQ0FBSyxJQUFBLENBQU1FLENBQUFBLEVBQVFBLEVBQUksVUFBQSxDQUFXSixDQUFZLENBQUMsQ0FBQSxDQUMxRCxHQUFJLENBQUNHLEVBQ0gsT0FBQTdCLENBQUFBLENBQU8sS0FBQSxDQUFNLFVBQUEsQ0FBWTRCLENBQUksQ0FBQSxDQUN0QixRQUFRLElBQUEsQ0FFakIsSUFBTXBGLENBQUFBLENBQU8sQ0FBQyxNQUFBLENBQVEsR0FBR29GLEVBQUssS0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQ3ZDLE9BQUFDLENBQUFBLENBQU8sT0FBTyxJQUFBLENBQUtBLENBQUFBLENBQUssTUFBTSxHQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRSxRQUFBLEVBQVMsQ0FDM0RyRixDQUFBQSxDQUFLLEtBQUssR0FBRyxJQUFBLENBQUssS0FBQSxDQUFNcUYsQ0FBSSxDQUFDLENBQUEsQ0FDN0I3QixFQUFPLEtBQUEsQ0FBTSxTQUFBLENBQVd4RCxDQUFJLENBQUEsQ0FDckJBLENBQ1QsQ0FTTyxTQUFTdUYsRUFBQUEsQ0FBS0MsQ0FBQUEsQ0FBYUMsRUFBdUMsQ0FDdkUsSUFBTUMsRUFBUUYsQ0FBQUEsQ0FBSSxLQUFBLENBQU0sR0FBRyxDQUFBLENBQUUsTUFBQSxDQUFRRyxDQUFBQSxFQUFNQSxFQUFFLE1BQU0sQ0FBQSxDQUM3QyxDQUFDQyxDQUFBQSxDQUFTLEdBQUc1RixDQUFJLEVBQUkwRixDQUFBQSxDQUMzQixHQUFJLENBQUNFLENBQUFBLENBQVMsTUFBTSxJQUFJLE1BQU0sZUFBZSxDQUFBLENBQzdDLElBQU1qRCxDQUFBQSxDQUFPa0QsS0FBQUEsQ0FBTUQsRUFBUzVGLENBQUFBLENBQU0sQ0FDaEMsS0FBQSxDQUFPLFNBQUEsQ0FDUCxHQUFHeUYsQ0FDTCxDQUFDLENBQUEsQ0FDR0ssQ0FBQUEsQ0FBUyxLQUFBLENBQ2IsT0FBTyxDQUNMLE9BQUEsQ0FBU25ELEVBQ1QsSUFBQSxDQUFNYSxDQUFBQSxDQUFPLE1BQUEsQ0FBT2IsQ0FBQUEsQ0FBTWlELENBQU8sQ0FBQSxDQUNqQyxJQUFJLE1BQUEsRUFBUyxDQUNYLE9BQU9FLENBQ1QsQ0FBQSxDQUNBLElBQUEsRUFBTyxDQUNMLEdBQUlBLENBQUFBLENBQVEsT0FDWkEsQ0FBQUEsQ0FBUyxJQUFBLENBQ1QsSUFBTUMsRUFBTXBELENBQUFBLENBQUssR0FBQSxDQUNib0QsQ0FBQUEsQ0FBS0MsRUFBQUEsQ0FBU0QsQ0FBQUEsQ0FBSyxTQUFTLEVBQzNCcEQsQ0FBQUEsQ0FBSyxJQUFBLENBQUssU0FBUyxFQUMxQixDQUNGLENBQ0YsQ0M1Q0EsZUFBc0JzRCxFQUFBQSxDQUFhbkIsRUFBcUIsQ0FDdEQsT0FBTyxDQUFDLEdBQUksTUFBTUQsRUFBQUEsQ0FBZ0JDLENBQVUsQ0FBQSxDQUFJLGNBQWMsQ0FDaEUsQ0FFQSxJQUFNUCxFQUFBQSxDQUFNLFlBQUEsQ0FNWixlQUFzQjJCLEVBQUFBLENBQWUsQ0FBRSxJQUFBLENBQUFsRyxDQUFLLENBQUEsQ0FBMEIsQ0FFcEUsSUFBTW1HLENBQUFBLENBQUFBLENBRE8sTUFBTUYsRUFBQUEsQ0FBYWpHLENBQUFBLENBQUssUUFBQSxDQUFTLGVBQWUsQ0FBQyxDQUFBLEVBQ3BDLElBQUtvRyxDQUFBQSxFQUFNLENBQUEsRUFBQSxFQUFLQSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQzdDRCxDQUFBQSxDQUFhLEtBQUssQ0FBQSxFQUFHakIsQ0FBWSxDQUFBLENBQUEsRUFBSSxNQUFBLENBQU8sSUFBQSxDQUFLLElBQUEsQ0FBSyxVQUFVbEYsQ0FBSSxDQUFDLENBQUEsQ0FBRSxRQUFBLENBQVMsUUFBUSxDQUFDLEVBQUUsQ0FBQSxDQUMzRixJQUFNd0YsRUFBTSxDQUFDYSxFQUFBQSxDQUFVLEdBQUdGLENBQUFBLENBQWN0RixFQUFNLENBQUEsQ0FBRSxJQUFBLENBQUssR0FBRyxDQUFBLENBQ3hEMkMsRUFBTyxLQUFBLENBQU1lLEVBQUFBLENBQUtpQixDQUFHLENBQUEsQ0FFckIsSUFBTWMsQ0FBQUEsQ0FBeUIsQ0FBRSxHQUFHLE9BQUEsQ0FBUSxHQUFBLENBQUssY0FBQSxDQUFnQixNQUFPLENBQUEsQ0FDeEUsT0FBT2YsRUFBQUEsQ0FBS0MsQ0FBQUEsQ0FBSyxDQUFFLEtBQUEsQ0FBTyxDQUFDLFFBQUEsQ0FBVSxPQUFRLE1BQUEsQ0FBUSxLQUFLLENBQUEsQ0FBRyxHQUFBLENBQUFjLENBQUksQ0FBQyxDQUNwRSxDQ3VETyxJQUFNQyxFQUFOLGNBQXdCQyxZQUF3QixDQUNyRCxXQUFBLENBQVlDLENBQUFBLENBQXFCLENBQy9CLE9BQU0sQ0FDTkEsQ0FBQUEsQ0FBTSxHQUFHLFNBQUEsQ0FBWUMsQ0FBQUEsRUFBUSxDQUMzQixJQUFNakYsQ0FBQUEsQ0FBTWlGLENBQUFBLENBQ1osT0FBUWpGLENBQUFBLENBQUksSUFBQSxFQUNWLEtBQUssU0FBQSxDQUFvQixDQUN2QixJQUFBLENBQUssSUFBQSxDQUFLLFNBQUEsQ0FBV0EsRUFBSSxLQUFBLENBQU9BLENBQUFBLENBQUksT0FBTyxDQUFBLENBQzNDLEtBQ0YsQ0FDQSxLQUFLLFVBQUEsQ0FBcUIsQ0FDeEIsS0FBSyxJQUFBLENBQUssVUFBQSxDQUFZQSxFQUFJLEtBQUssQ0FBQSxDQUMvQixLQUNGLENBQ0EsS0FBSyxNQUFBLENBQWlCLENBQ3BCLElBQUEsQ0FBSyxJQUFBLENBQUssTUFBQSxDQUFRQSxDQUFBQSxDQUFJLE9BQU8sQ0FBQSxDQUM3QixLQUNGLENBQ0EsS0FBSyxPQUFBLENBQWtCLENBQ3JCLElBQUEsQ0FBSyxJQUFBLENBQUssUUFBUyxJQUFJLEtBQUEsQ0FBTUEsRUFBSSxLQUFLLENBQUMsRUFDdkMsS0FDRixDQUNGLENBQ0YsQ0FBQyxDQUFBLENBQ0RnRixDQUFBQSxDQUFNLEtBQUssTUFBQSxDQUFTRSxDQUFBQSxFQUFNLElBQUEsQ0FBSyxJQUFBLENBQUssT0FBQSxDQUFTQSxDQUFDLENBQUMsRUFDakQsQ0FDRixDQUFBLENDL0ZBLElBQU1wQyxDQUFBQSxDQUFNLE9BQUEsQ0FVWixlQUFlcUMsRUFBQUEsQ0FBVUMsQ0FBQUEsQ0FBZ0JDLENBQUFBLENBQXVCLENBQzlEdEQsQ0FBQUEsQ0FBTyxLQUFBLENBQU1lLEVBQUssV0FBQSxDQUFhc0MsQ0FBQUEsQ0FBUUMsQ0FBTSxDQUFBLENBRTdDLElBQU05RyxDQUFBQSxDQUFpQixDQUNyQjZHLENBQUFBLENBQ0EsU0FBQSxDQUNBLENBQUEsRUFBR0MsQ0FBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUNmLFdBQ0EsQ0FBQSxFQUFHQSxDQUFBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQ2hCLE9BQUEsQ0FDQSxDQUFBLEVBQUdBLEVBQU8sR0FBRyxDQUFBLENBQUEsQ0FDYixhQUNBLENBQUEsRUFBR0EsQ0FBQUEsQ0FBTyxRQUFRLENBQUEsQ0FBQSxDQUNsQixZQUFBLENBQ0EsQ0FBQSxFQUFHQSxDQUFBQSxDQUFPLE9BQU8sQ0FBQSxDQUNuQixFQUNBLE9BQUlBLENBQUFBLENBQU8sU0FBQSxFQUFXOUcsQ0FBQUEsQ0FBSyxJQUFBLENBQUssY0FBYyxFQUMxQzhHLENBQUFBLENBQU8sYUFBQSxFQUFlOUcsQ0FBQUEsQ0FBSyxJQUFBLENBQUssbUJBQW1CLENBQUEsQ0FDbkQ4RyxFQUFPLGFBQUEsRUFBZTlHLENBQUFBLENBQUssSUFBQSxDQUFLLGlCQUFpQixDQUFBLENBQ2pEOEcsQ0FBQUEsQ0FBTyxZQUFZOUcsQ0FBQUEsQ0FBSyxJQUFBLENBQUssZUFBZSxDQUFBLENBQzVDOEcsQ0FBQUEsQ0FBTyxjQUFBLEVBQWdCOUcsRUFBSyxJQUFBLENBQUssb0JBQW9CLENBQUEsQ0FDckQ4RyxDQUFBQSxDQUFPLGNBQUEsRUFBZ0I5RyxDQUFBQSxDQUFLLEtBQUssbUJBQW1CLENBQUEsQ0FFakRrRyxFQUFBQSxDQUFlLENBQUUsSUFBQSxDQUFBbEcsQ0FBSyxDQUFDLENBQ2hDLENBRUEsSUFBTStHLENBQUFBLENBQUl6QyxFQUFBQSxDQUVWLGVBQXNCMEMsRUFBQUEsQ0FBSUgsQ0FBQUEsQ0FBZ0JwQixDQUFBQSxDQUFrRCxDQUMxRmpDLENBQUFBLENBQU8sS0FBQSxDQUFNZSxFQUFLLEtBQUEsQ0FBT3NDLENBQUFBLENBQVFwQixDQUFPLENBQUEsQ0FFeEMsR0FBTSxDQUFFLE9BQUF0QyxDQUFPLENBQUEsQ0FBSXNDLENBQUFBLENBQ25CdEMsQ0FBQUEsRUFBUSxjQUFBLEVBQWUsQ0FFdkIsSUFBTThELENBQUFBLENBQVV4QixDQUFBQSxDQUFRLE9BQUEsRUFBV3NCLENBQUFBLENBQUUsT0FBQSxDQUMvQkcsQ0FBQUEsQ0FBNEIsQ0FDaEMsS0FBQSxDQUFPekIsQ0FBQUEsQ0FBUSxLQUFBLEVBQVNzQixDQUFBQSxDQUFFLEtBQUEsQ0FDMUIsTUFBQSxDQUFRdEIsRUFBUSxNQUFBLEVBQVVzQixDQUFBQSxDQUFFLE1BQUEsQ0FDNUIsR0FBQSxDQUFLdEIsQ0FBQUEsQ0FBUSxHQUFBLEVBQU9zQixFQUFFLEdBQUEsQ0FDdEIsUUFBQSxDQUFVdEIsQ0FBQUEsQ0FBUSxRQUFBLEVBQVlzQixDQUFBQSxDQUFFLFFBQUEsQ0FDaEMsVUFBV3RCLENBQUFBLENBQVEsU0FBQSxFQUFhc0IsRUFBRSxTQUFBLENBQ2xDLGFBQUEsQ0FBZXRCLEVBQVEsYUFBQSxFQUFpQnNCLENBQUFBLENBQUUsYUFBQSxDQUMxQyxhQUFBLENBQWV0QixDQUFBQSxDQUFRLGFBQUEsRUFBaUJzQixFQUFFLGFBQUEsQ0FDMUMsVUFBQSxDQUFZdEIsQ0FBQUEsQ0FBUSxVQUFBLEVBQWNzQixDQUFBQSxDQUFFLFVBQUEsQ0FDcEMsZUFBZ0J0QixDQUFBQSxDQUFRLGNBQUEsRUFBa0JzQixDQUFBQSxDQUFFLGNBQUEsQ0FDNUMsY0FBQSxDQUFnQnRCLENBQUFBLENBQVEsZ0JBQWtCc0IsQ0FBQUEsQ0FBRSxjQUFBLENBQzVDLFFBQUFFLENBQ0YsQ0FBQSxDQUVNRSxFQUFLLFdBQUEsQ0FBWSxHQUFBLEVBQUksQ0FDdkJDLENBQUFBLENBQVcsQ0FBQSxDQUNUQyxDQUFBQSxDQUFRQyxHQUFjLENBQzFCRixDQUFBQSxDQUFXRSxDQUFBQSxDQUNYN0IsQ0FBQUEsQ0FBUSxVQUFBLEdBQWE2QixDQUFDLEVBQ3hCLENBQUEsQ0FFTUMsQ0FBQUEsQ0FBUyxNQUFNWCxFQUFBQSxDQUFVQyxDQUFBQSxDQUFRSyxDQUFVLEVBRTNDTSxDQUFBQSxDQUFVLElBQU0sQ0FDcEJELENBQUFBLENBQU8sT0FBQSxDQUFRLE9BQU8sQ0FBRSxJQUFBLENBQUEsUUFBQSxDQUF5QixNQUFBLENBQVEsTUFBQSxDQUFPcEUsQ0FBQUEsRUFBUSxNQUFBLEVBQVUsT0FBTyxDQUFFLENBQUMsQ0FBQSxDQUM1RixVQUFBLENBQVcsSUFBTW9FLENBQUFBLENBQU8sTUFBSyxDQUFHLEdBQUssRUFDdkMsQ0FBQSxDQUNBcEUsQ0FBQUEsRUFBUSxnQkFBQSxDQUFpQixRQUFTcUUsQ0FBQUEsQ0FBUyxDQUFFLElBQUEsQ0FBTSxJQUFLLENBQUMsQ0FBQSxDQUV6RCxHQUFJLENBQ0YsSUFBTTdDLENBQUFBLENBQVMsSUFBSSxPQUFBLENBQXdCLENBQUMvQixFQUFTQyxDQUFBQSxHQUFXLENBQzlELElBQUkwRCxDQUFBQSxDQUFVZ0IsQ0FBQUEsQ0FBTyxPQUFPLEVBQ3pCLEVBQUEsQ0FBRyxPQUFBLENBQVVyRSxDQUFBQSxFQUFTLENBQ3JCLElBQU16QixDQUFBQSxDQUFNLEtBQUssU0FBQSxDQUFVLENBQUUsT0FBQW9GLENBQUFBLENBQVEsUUFBQSxDQUFBTyxFQUFVLElBQUEsQ0FBQWxFLENBQUFBLENBQU0sTUFBQSxDQUFRcUUsQ0FBQUEsQ0FBTyxNQUFPLENBQUMsRUFDNUUxRSxDQUFBQSxDQUFPLElBQUksS0FBQSxDQUFNLENBQUEsU0FBQSxFQUFZcEIsQ0FBRyxDQUFBLENBQUUsQ0FBQyxFQUNyQyxDQUFDLENBQUEsQ0FDQSxFQUFBLENBQUcsVUFBQSxDQUFZNEYsQ0FBSSxFQUNuQixFQUFBLENBQUcsU0FBQSxDQUFXLENBQUNJLENBQUFBLENBQUdDLENBQUFBLEdBQU1qQyxDQUFBQSxDQUFRLFlBQVlnQyxDQUFBQSxDQUFHQyxDQUFDLENBQUMsQ0FBQSxDQUNqRCxFQUFBLENBQUcsTUFBQSxDQUFROUUsQ0FBTyxDQUFBLENBQ2xCLEVBQUEsQ0FBRyxPQUFBLENBQVNDLENBQU0sRUFDdkIsQ0FBQyxFQUNEd0UsQ0FBQUEsQ0FBSyxDQUFDLENBQUEsQ0FDTixHQUFNLENBQUNNLENBQU8sRUFBSSxNQUFNLE9BQUEsQ0FBUSxJQUFJLENBQUNoRCxDQUFBQSxDQUFRNEMsRUFBTyxJQUFJLENBQUMsQ0FBQSxDQUN6RCxPQUFBRixDQUFBQSxDQUFLLEdBQUcsRUFDUjdELENBQUFBLENBQU8sS0FBQSxDQUFNZSxDQUFBQSxDQUFLLENBQUEsS0FBQSxFQUFRMEMsQ0FBTyxDQUFBLElBQUEsRUFBTyxLQUFLLEtBQUEsQ0FBTSxXQUFBLENBQVksR0FBQSxFQUFJLENBQUlFLENBQUUsQ0FBQyxJQUFJLENBQUEsQ0FDdkUsQ0FBRSxHQUFHUSxDQUFBQSxDQUFTLE9BQUEsQ0FBU1QsQ0FBVyxDQUMzQyxDQUFBLE1BQVNVLENBQUFBLENBQUcsQ0FDVixNQUFBTCxDQUFBQSxDQUFPLElBQUEsR0FDUHBFLENBQUFBLEVBQVEsY0FBQSxFQUFlLENBQ2pCeUUsQ0FDUixDQUFBLE9BQUUsQ0FDQXpFLEdBQVEsbUJBQUEsQ0FBb0IsT0FBQSxDQUFTcUUsQ0FBTyxFQUM5QyxDQUNGIiwiZmlsZSI6ImNodW5rLVlKN1FFTUZZLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNS8yNi5cblxuaW1wb3J0IHR5cGUgeyBMb2dnZXJMaWtlIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuXG5jb25zdCBCQVJfV0lEVEggPSA0MDtcblxuaW50ZXJmYWNlIEJhck9wdGlvbnMge1xuICB0b3RhbDogbnVtYmVyO1xuICBvdXQ6IE5vZGVKUy5Xcml0ZVN0cmVhbTtcbiAgc2hvd0NvdW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQmFyIHtcbiAgcHJpdmF0ZSBfd3JpdHRlbiA9IDA7XG4gIHByaXZhdGUgX3Nob3duID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RvdGFsOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX291dDogTm9kZUpTLldyaXRlU3RyZWFtO1xuICBwcml2YXRlIHJlYWRvbmx5IF90dHk6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3dDb3VudDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRzOiBCYXJPcHRpb25zKSB7XG4gICAgdGhpcy5fdG90YWwgPSBvcHRzLnRvdGFsO1xuICAgIHRoaXMuX291dCA9IG9wdHMub3V0O1xuICAgIHRoaXMuX3R0eSA9ICEhb3B0cy5vdXQuaXNUVFk7XG4gICAgdGhpcy5fc2hvd0NvdW50ID0gb3B0cy5zaG93Q291bnQgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgdG90YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWw7XG4gIH1cblxuICB1cGRhdGUod3JpdHRlbjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fd3JpdHRlbiA9IE1hdGgubWluKHRoaXMuX3RvdGFsLCBNYXRoLm1heCgwLCB3cml0dGVuKSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHVwZGF0ZVBlcmNlbnQocGN0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZShNYXRoLnJvdW5kKChwY3QgLyAxMDApICogdGhpcy5fdG90YWwpKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90dHkgJiYgdGhpcy5fc2hvd24pIHRoaXMuX291dC53cml0ZShcIlxcclxceDFiWzJLXCIpO1xuICB9XG5cbiAgcmVkcmF3KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsb2cobGluZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMuX291dC53cml0ZShsaW5lICsgXCJcXG5cIik7XG4gICAgdGhpcy5yZWRyYXcoKTtcbiAgfVxuXG4gIGZpbmlzaChsaW5lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgdGhpcy5fb3V0LndyaXRlKGxpbmUgKyBcIlxcblwiKTtcbiAgICB0aGlzLl9zaG93biA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90dHkpIHJldHVybjtcbiAgICBpZiAodGhpcy5fd3JpdHRlbiA9PT0gMCAmJiAhdGhpcy5fc2hvd24pIHJldHVybjtcbiAgICBjb25zdCByYXRpbyA9IHRoaXMuX3RvdGFsID4gMCA/IHRoaXMuX3dyaXR0ZW4gLyB0aGlzLl90b3RhbCA6IDA7XG4gICAgY29uc3QgZmlsbGVkID0gTWF0aC5yb3VuZChyYXRpbyAqIEJBUl9XSURUSCk7XG4gICAgY29uc3QgYmFyID0gXCIjXCIucmVwZWF0KGZpbGxlZCkgKyBcIi1cIi5yZXBlYXQoQkFSX1dJRFRIIC0gZmlsbGVkKTtcbiAgICBjb25zdCBwY3QgPSBNYXRoLnJvdW5kKHJhdGlvICogMTAwKTtcbiAgICBjb25zdCBzdWZmaXggPSB0aGlzLl9zaG93Q291bnQgPyBgJHt0aGlzLl93cml0dGVufS8ke3RoaXMuX3RvdGFsfSAoJHtwY3R9JSlgIDogYCR7cGN0fSVgO1xuICAgIHRoaXMuX291dC53cml0ZShgXFxyWyR7YmFyfV0gJHtzdWZmaXh9YCk7XG4gICAgdGhpcy5fc2hvd24gPSB0cnVlO1xuICB9XG59XG5cbi8vIEFyb3VuZCBlYWNoIGNvbnNvbGUuKiBjYWxsLCBjbGVhciB0aGUgYmFyIGxpbmUgdGhlbiByZWRyYXcg4oCUIGtlZXBzIG5hdGl2ZSBjb25zb2xlIGNvbG9yaW5nIGludGFjdC5cbmV4cG9ydCBmdW5jdGlvbiBiYXJMb2dnZXIoYmFyOiBQcm9ncmVzc0Jhcik6IExvZ2dlckxpa2Uge1xuICBjb25zdCB3cmFwID1cbiAgICA8VCBleHRlbmRzICguLi5hOiB1bmtub3duW10pID0+IHZvaWQ+KGZuOiBUKSA9PlxuICAgICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgIGJhci5jbGVhcigpO1xuICAgICAgZm4oLi4uYXJncyk7XG4gICAgICBiYXIucmVkcmF3KCk7XG4gICAgfTtcbiAgcmV0dXJuIHtcbiAgICBkZWJ1Zzogd3JhcChjb25zb2xlLmRlYnVnKSxcbiAgICBpbmZvOiB3cmFwKGNvbnNvbGUuaW5mbyksXG4gICAgd2Fybjogd3JhcChjb25zb2xlLndhcm4pLFxuICAgIGVycm9yOiB3cmFwKGNvbnNvbGUuZXJyb3IpLFxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuZXhwb3J0IHR5cGUgRW52UGFyc2VyPFQ+ID0gKHZhbHVlOiB1bmtub3duKSA9PiBUO1xuXG5leHBvcnQgZnVuY3Rpb24gcGVudjxUPihuYW1lOiBzdHJpbmcsIHBhcnNlcjogRW52UGFyc2VyPFQ+LCBkZWZhdWx0VmFsdWU6IFQpOiBUO1xuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlPzogVCk6IFQgfCB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gcGVudjxUPihuYW1lOiBzdHJpbmcsIHBhcnNlcjogRW52UGFyc2VyPFQ+LCBkZWZhdWx0VmFsdWU/OiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlcihwcm9jZXNzLmVudltuYW1lXSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU51bWJlcih4OiB1bmtub3duKTogbnVtYmVyIHtcbiAgaWYgKHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHg7XG4gIH1cbiAgY29uc3QgbnVtID0gTnVtYmVyKHgpO1xuICBpZiAoTnVtYmVyLmlzTmFOKG51bSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFZhbHVlICR7eH0gaXMgbm90IGEgdmFsaWQgbnVtYmVyYCk7XG4gIH1cbiAgcmV0dXJuIG51bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RyaW5nKHg6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHJldHVybiB4O1xuICByZXR1cm4gU3RyaW5nKHgpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJtb2R1bGVcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgcGVudiB9IGZyb20gXCIuL2VudlwiO1xuaW1wb3J0IHsgcGFyc2VOdW1iZXIgfSBmcm9tIFwiLi9wYXJzZXJcIjtcblxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcblxuZXhwb3J0IGNvbnN0IHB1cExvZ0xldmVsID0gcGVudihcIlBVUF9MT0dfTEVWRUxcIiwgcGFyc2VOdW1iZXIsIDIpO1xuXG5leHBvcnQgY29uc3QgcHVwUGtnUm9vdCA9IGRpcm5hbWUocmVxdWlyZS5yZXNvbHZlKFwicHVwLXJlY29yZGVyL3BhY2thZ2UuanNvblwiKSk7XG5leHBvcnQgY29uc3QgcHVwQXBwID0gam9pbihwdXBQa2dSb290LCBcImRpc3RcIiwgXCJhcHAuY2pzXCIpO1xuZXhwb3J0IGNvbnN0IHB1cEF1ZGlvUHJlbG9hZCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwiYXVkaW9fcHJlbG9hZC5janNcIik7XG5leHBvcnQgY29uc3QgcHVwSWZyYW1lUHJlbG9hZCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwiaWZyYW1lX3ByZWxvYWQuY2pzXCIpO1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wNi5cblxuaW1wb3J0IHR5cGUgeyBDaGlsZFByb2Nlc3MgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgTG9nIH0gZnJvbSBcIm5vZGUtYXZcIjtcbmltcG9ydCB7IEFWX0xPR19FUlJPUiwgQVZfTE9HX1dBUk5JTkcgfSBmcm9tIFwibm9kZS1hdi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHB1cExvZ0xldmVsIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyTGlrZSB7XG4gIGRlYnVnPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICBpbmZvPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICB3YXJuPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICBlcnJvcj8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG59XG5cbmNvbnN0IERFQlVHID0gXCI8cHVwQGRlYnVnPlwiO1xuY29uc3QgSU5GTyA9IFwiPHB1cEBpbmZvPlwiO1xuY29uc3QgV0FSTiA9IFwiPHB1cEB3YXJuPlwiO1xuY29uc3QgRVJST1IgPSBcIjxwdXBAZXJyb3I+XCI7XG5jb25zdCBGQVRBTCA9IFwiPHB1cEBmYXRhbD5cIjtcblxuZnVuY3Rpb24gc3RhY2tIb29rKHRhcmdldDogRnVuY3Rpb24sIF9jb250ZXh0OiBDbGFzc01ldGhvZERlY29yYXRvckNvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBMb2dnZXIsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBwcm9jZXNzZWQgPSBtZXNzYWdlcy5tYXAoKG1zZykgPT4ge1xuICAgICAgcmV0dXJuIG1zZyBpbnN0YW5jZW9mIEVycm9yID8gKG1zZy5zdGFjayA/PyBTdHJpbmcobXNnKSkgOiBtc2c7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRhcmdldC5jYWxsKHRoaXMsIC4uLnByb2Nlc3NlZCk7XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIgaW1wbGVtZW50cyBMb2dnZXJMaWtlIHtcbiAgcHJpdmF0ZSBfaW1wbD86IExvZ2dlckxpa2U7XG5cbiAgZ2V0IGxldmVsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xldmVsO1xuICB9XG5cbiAgc2V0IGxldmVsKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9sZXZlbCA9IHZhbHVlO1xuICAgIHRoaXMuaW1wbCA9IHRoaXMuX2ltcGwgPz8gY29uc29sZTtcbiAgfVxuXG4gIGdldCBpbXBsKCk6IExvZ2dlckxpa2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbXBsO1xuICB9XG5cbiAgc2V0IGltcGwodmFsdWU6IExvZ2dlckxpa2UpIHtcbiAgICBjb25zdCBkZWJ1ZyA9IHZhbHVlLmRlYnVnID8/IGNvbnNvbGUuZGVidWc7XG4gICAgY29uc3QgaW5mbyA9IHZhbHVlLmluZm8gPz8gY29uc29sZS5pbmZvO1xuICAgIGNvbnN0IHdhcm4gPSB2YWx1ZS53YXJuID8/IGNvbnNvbGUud2FybjtcbiAgICBjb25zdCBlcnJvciA9IHZhbHVlLmVycm9yID8/IGNvbnNvbGUuZXJyb3I7XG4gICAgY29uc3QgbHYgPSB0aGlzLl9sZXZlbDtcbiAgICB0aGlzLl9pbXBsID0ge1xuICAgICAgZGVidWc6IGx2ID49IDMgPyBkZWJ1ZyA6IHVuZGVmaW5lZCxcbiAgICAgIGluZm86IGx2ID49IDIgPyBpbmZvIDogdW5kZWZpbmVkLFxuICAgICAgd2FybjogbHYgPj0gMSA/IHdhcm4gOiB1bmRlZmluZWQsXG4gICAgICBlcnJvcjogbHYgPj0gMCA/IGVycm9yIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sZXZlbDogbnVtYmVyID0gcHVwTG9nTGV2ZWwpIHtcbiAgICB0aGlzLmltcGwgPSBjb25zb2xlO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBkZWJ1ZyguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5kZWJ1Zz8uKERFQlVHLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGluZm8oLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uaW5mbz8uKElORk8sIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgd2FybiguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy53YXJuPy4oV0FSTiwgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBlcnJvciguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5lcnJvcj8uKEVSUk9SLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGZhdGFsKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmVycm9yPy4oRkFUQUwsIC4uLm1lc3NhZ2VzKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGNvbnN0IG1zZyA9IG1lc3NhZ2UudHJpbUVuZCgpO1xuICAgIGlmIChtc2cuc3RhcnRzV2l0aChERUJVRykpIHtcbiAgICAgIHRoaXMuZGVidWcobXNnLnNsaWNlKERFQlVHLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1zZy5zdGFydHNXaXRoKElORk8pKSB7XG4gICAgICB0aGlzLmluZm8obXNnLnNsaWNlKElORk8ubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobXNnLnN0YXJ0c1dpdGgoV0FSTikpIHtcbiAgICAgIHRoaXMud2Fybihtc2cuc2xpY2UoV0FSTi5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtc2cuc3RhcnRzV2l0aChFUlJPUikpIHtcbiAgICAgIHRoaXMuZXJyb3IobXNnLnNsaWNlKEVSUk9SLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmZvKG1zZyk7XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoKHByb2M6IENoaWxkUHJvY2VzcywgbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uYXR0YWNoYCk7XG4gICAgICBsZXQgZmF0YWw6IHN0cmluZyA9IFwiXCI7XG4gICAgICBjb25zdCBkaXNwYXRjaCA9IChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKG1lc3NhZ2Uuc3RhcnRzV2l0aChGQVRBTCkpIHtcbiAgICAgICAgICBmYXRhbCArPSBtZXNzYWdlLnNsaWNlKEZBVEFMLmxlbmd0aCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2gobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBwcm9jLnN0ZGVycj8ub24oXCJkYXRhXCIsIGRpc3BhdGNoKTtcbiAgICAgIHByb2Muc3Rkb3V0Py5vbihcImRhdGFcIiwgZGlzcGF0Y2gpO1xuICAgICAgcHJvY1xuICAgICAgICAub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XG4gICAgICAgICAgZmF0YWwgKz0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgcHJvYy5raWxsKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbmNlKFwiY2xvc2VcIiwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICAgIGlmIChjb2RlIHx8IHNpZ25hbCB8fCBmYXRhbCkge1xuICAgICAgICAgICAgZmF0YWwgfHw9IGBjb21tYW5kIGZhaWxlZDogJHtwcm9jLnNwYXduYXJncy5qb2luKFwiIFwiKX1gO1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5jbG9zZWAsIHsgY29kZSwgc2lnbmFsLCBmYXRhbCB9KTtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZmF0YWwpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5jbG9zZWApO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLm9uKFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsIChyZWFzb24pID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yKGAke25hbWV9LnVuaGFuZGxlZGAsIHJlYXNvbik7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbihcInVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvclwiLCAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvcihgJHtuYW1lfS51bmhhbmRsZWRgLCBlcnIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG5cbi8vIFJvdXRlIGZmbXBlZyBuYXRpdmUgbG9ncyB0aHJvdWdoIHB1cCdzIGxvZ2dlci5cbkxvZy5zZXRDYWxsYmFjaygobGV2ZWwsIG1lc3NhZ2UpID0+IHtcbiAgY29uc3QgbXNnID0gbWVzc2FnZS50cmltRW5kKCk7XG4gIGlmICghbXNnKSByZXR1cm47XG4gIGlmIChsZXZlbCA8PSBBVl9MT0dfRVJST1IpIGxvZ2dlci5lcnJvcihtc2cpO1xuICBlbHNlIGlmIChsZXZlbCA8PSBBVl9MT0dfV0FSTklORykgbG9nZ2VyLndhcm4obXNnKTtcbn0pO1xuXG5leHBvcnQgeyBsb2dnZXIgfTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjQuXG5cbmV4cG9ydCBmdW5jdGlvbiBub2VycjxGbiBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55LCBEPihcbiAgZm46IEZuLFxuICBkZWZhdWx0VmFsdWU6IEQsXG4pOiAoLi4uYXJnczogUGFyYW1ldGVyczxGbj4pID0+IFJldHVyblR5cGU8Rm4+IHwgRCB7XG4gIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXQgPSBmbiguLi5hcmdzKTtcbiAgICAgIGlmIChyZXQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiByZXQuY2F0Y2goKCkgPT4gZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDYuXG5cbmltcG9ydCB6IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0lEVEggPSAxOTIwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSEVJR0hUID0gMTA4MDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZQUyA9IDMwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRFVSQVRJT04gPSA1O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUX0ZJTEUgPSBcIm91dC9odG1sLm1wNCxvdXQvaHRtbC53ZWJtXCI7XG5cbmV4cG9ydCBjb25zdCBSZW5kZXJTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGR1cmF0aW9uOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiRHVyYXRpb24gaW4gc2Vjb25kc1wiKSxcbiAgd2lkdGg6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJWaWRlbyB3aWR0aFwiKSxcbiAgaGVpZ2h0OiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiVmlkZW8gaGVpZ2h0XCIpLFxuICBmcHM6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJGcmFtZXMgcGVyIHNlY29uZFwiKSxcbiAgd2l0aEF1ZGlvOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkNhcHR1cmUgYW5kIGVuY29kZSBhdWRpb1wiKSxcbiAgb3V0RmlsZTogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbW1hLXNlcGFyYXRlZCBvdXRwdXQgcGF0aHM7IGV4dGVuc2lvbiAoLm1wNC8ud2VibSkgc2VsZWN0cyBlbmNvZGVyXCIpLFxuICB1c2VJbm5lclByb3h5OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlVzZSBiaWxpYmlsaSBpbm5lciBwcm94eSBmb3IgcmVzb3VyY2UgYWNjZXNzXCIpLFxuICBkZXRlcm1pbmlzdGljOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlJlbmRlciBieSBmcmFtZSByYXRoZXIgdGhhbiByZWNvcmRpbmdcIiksXG4gIGRpc2FibGVHcHU6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiRGlzYWJsZSBHUFUgcmVuZGVyaW5nLCBtYXkgcmVkdWNlIHBlcmZvcm1hbmNlIGJ1dCBpbmNyZWFzZSBzdGFiaWxpdHlcIiksXG4gIGRpc2FibGVId0NvZGVjOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkRpc2FibGUgaGFyZHdhcmUgdmlkZW8gZW5jb2RlciAoTlZFTkMvVmlkZW9Ub29sYm94KSwgdXNlIHNvZnR3YXJlIHgyNjVcIiksXG4gIHdpbmRvd1RvbGVyYW50OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkZhbGwgYmFjayB0byBkb20tcmVhZHkgaWYgd2FybXVwIGxvYWQgdGltZXMgb3V0XCIpLFxufSk7XG5cbmV4cG9ydCB0eXBlIFJlbmRlck9wdGlvbnMgPSB6LmluZmVyPHR5cGVvZiBSZW5kZXJTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBDb25zb2xlQ2FsbGJhY2sgPSAobGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBQcm9ncmVzc0NhbGxiYWNrID0gKHByb2dyZXNzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBDUmVuZGVyT3B0aW9ucyBleHRlbmRzIFJlbmRlck9wdGlvbnMge1xuICBzb3VyY2U6IHN0cmluZztcbiAgc2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgb25Qcm9ncmVzczogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgb25Db25zb2xlOiBDb25zb2xlQ2FsbGJhY2s7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUmVzdWx0IHtcbiAgb3B0aW9uczogUmVuZGVyT3B0aW9ucztcbiAgd3JpdHRlbjogbnVtYmVyO1xuICBqYW5rOiBudW1iZXI7XG4gIG91dEZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRSZW5kZXJPcHRpb25zOiBSZW5kZXJPcHRpb25zID0ge1xuICB3aWR0aDogREVGQVVMVF9XSURUSCxcbiAgaGVpZ2h0OiBERUZBVUxUX0hFSUdIVCxcbiAgZnBzOiBERUZBVUxUX0ZQUyxcbiAgZHVyYXRpb246IERFRkFVTFRfRFVSQVRJT04sXG4gIG91dEZpbGU6IERFRkFVTFRfT1VUX0ZJTEUsXG4gIHdpdGhBdWRpbzogZmFsc2UsXG4gIHVzZUlubmVyUHJveHk6IGZhbHNlLFxuICBkZXRlcm1pbmlzdGljOiBmYWxzZSxcbiAgZGlzYWJsZUdwdTogZmFsc2UsXG4gIGRpc2FibGVId0NvZGVjOiBmYWxzZSxcbiAgd2luZG93VG9sZXJhbnQ6IGZhbHNlLFxufTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjcuXG5cbmltcG9ydCB7IEhhcmR3YXJlQ29udGV4dCB9IGZyb20gXCJub2RlLWF2L2FwaVwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuXG5jb25zdCBUQUcgPSBcIltIV0FjY2VsXVwiO1xuXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RHUFVEcml2ZXIoKSB7XG4gIGNvbnN0IGh3ID0gSGFyZHdhcmVDb250ZXh0LmF1dG8oKTtcbiAgY29uc3QgcmVzdWx0ID0gaHcgIT09IG51bGw7XG4gIGh3Py5kaXNwb3NlKCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBjb25zdCBjYW5JVXNlR1BVID0gZGV0ZWN0R1BVRHJpdmVyKCkudGhlbigocmVzdWx0KSA9PiB7XG4gIGxvZ2dlci5kZWJ1ZyhUQUcsIFwiZ3B1OlwiLCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA0LzAzLlxuXG5pbXBvcnQgeyBwbGF0Zm9ybSB9IGZyb20gXCJvc1wiO1xuaW1wb3J0IHsgcHVwTG9nTGV2ZWwgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNhbklVc2VHUFUgfSBmcm9tIFwiLi9od2FjY2VsXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaHJvbWl1bU9wdGlvbnMoZGlzYWJsZUdwdTogYm9vbGVhbikge1xuICBjb25zdCBvcHRzID0gW1xuICAgIC8vIOWuueWZqOaymeeusVxuICAgIFwibm8tc2FuZGJveFwiLFxuICAgIFwiZGlzYWJsZS1kZXYtc2htLXVzYWdlXCIsXG4gICAgLy8g6Leo5Z+fL+WuieWFqFxuICAgIFwiZGlzYWJsZS13ZWItc2VjdXJpdHlcIixcbiAgICBcImRpc2FibGUtc2l0ZS1pc29sYXRpb24tdHJpYWxzXCIsXG4gICAgXCJpZ25vcmUtY2VydGlmaWNhdGUtZXJyb3JzXCIsXG4gICAgLy8g5b2V5Yi26KGM5Li6XG4gICAgXCJkaXNhYmxlLWJsaW5rLWZlYXR1cmVzPUF1dG9tYXRpb25Db250cm9sbGVkXCIsXG4gICAgXCJtdXRlLWF1ZGlvXCIsXG4gICAgXCJhdXRvcGxheS1wb2xpY3k9bm8tdXNlci1nZXN0dXJlLXJlcXVpcmVkXCIsXG4gICAgXCJkaXNhYmxlLWV4dGVuc2lvbnNcIixcbiAgICBcImRlbnktcGVybWlzc2lvbi1wcm9tcHRzXCIsXG4gICAgXCJ1c2UtbW9jay1rZXljaGFpblwiLFxuICAgIC8vIOa4suafk1xuICAgIFwiZm9yY2UtZGV2aWNlLXNjYWxlLWZhY3Rvcj0xXCIsXG4gICAgXCJmb3JjZS1jb2xvci1wcm9maWxlPXNyZ2JcIixcbiAgICBcImlnbm9yZS1ncHUtYmxvY2tsaXN0XCIsXG4gICAgXCJ1c2UtZ2w9YW5nbGVcIixcbiAgICBcImRldGVybWluaXN0aWMtbW9kZVwiLFxuICAgIFwiZW5hYmxlLWJlZ2luLWZyYW1lLWNvbnRyb2xcIixcbiAgICBcImRpc2FibGUtbmV3LWNvbnRlbnQtcmVuZGVyaW5nLXRpbWVvdXRcIixcbiAgICBcInJ1bi1hbGwtY29tcG9zaXRvci1zdGFnZXMtYmVmb3JlLWRyYXdcIixcbiAgICBcImRpc2FibGUtdGhyZWFkZWQtYW5pbWF0aW9uXCIsXG4gICAgXCJkaXNhYmxlLXRocmVhZGVkLXNjcm9sbGluZ1wiLFxuICAgIFwiZGlzYWJsZS1jaGVja2VyLWltYWdpbmdcIixcbiAgICBcImRpc2FibGUtaW1hZ2UtYW5pbWF0aW9uLXJlc3luY1wiLFxuICAgIFwiZW5hYmxlLXN1cmZhY2Utc3luY2hyb25pemF0aW9uXCIsXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3B1cHBldGVlci9wdXBwZXRlZXIvaXNzdWVzLzI0MTBcbiAgICBcImZvbnQtcmVuZGVyLWhpbnRpbmc9bm9uZVwiLFxuICAgIC8vIOi1hOa6kOaOp+WItlxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLW5ldHdvcmtpbmdcIixcbiAgICBcImpzLWZsYWdzPS0tbWF4LW9sZC1zcGFjZS1zaXplPTUxMlwiLFxuICAgIFwicmVuZGVyZXItcHJvY2Vzcy1saW1pdD0xXCIsXG4gICAgXCJudW0tcmFzdGVyLXRocmVhZHM9MlwiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLXRpbWVyLXRocm90dGxpbmdcIixcbiAgICBcImRpc2FibGUtcmVuZGVyZXItYmFja2dyb3VuZGluZ1wiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kaW5nLW9jY2x1ZGVkLXdpbmRvd3NcIixcbiAgICAvLyDml6Xlv5fov73ouKpcbiAgICBcImVuYWJsZS1sb2dnaW5nPXN0ZGVyclwiLFxuICBdO1xuXG4gIGlmIChwdXBMb2dMZXZlbCA+PSAzKSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTBcIiwgXCJ2PTFcIik7XG4gIH0gZWxzZSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTNcIik7XG4gIH1cblxuICBjb25zdCBmZWF0dXJlcyA9IFtcIkZvbnRhdGlvbkJhY2tlbmRcIl07XG4gIGNvbnN0IGVuYWJsZUdwdSA9IChhd2FpdCBjYW5JVXNlR1BVKSAmJiAhZGlzYWJsZUdwdTtcbiAgaWYgKCFlbmFibGVHcHUpIHtcbiAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9c3dpZnRzaGFkZXJcIiwgXCJlbmFibGUtdW5zYWZlLXN3aWZ0c2hhZGVyXCIpO1xuICB9IGVsc2Uge1xuICAgIG9wdHMucHVzaChcImRpc2FibGUtZ3B1LXNhbmRib3hcIiwgXCJlbmFibGUtdW5zYWZlLXdlYmdwdVwiKTtcbiAgICBjb25zdCBwbGF0ID0gcGxhdGZvcm0oKTtcbiAgICBpZiAocGxhdCA9PT0gXCJkYXJ3aW5cIikge1xuICAgICAgb3B0cy5wdXNoKFwidXNlLWFuZ2xlPW1ldGFsXCIpO1xuICAgIH0gZWxzZSBpZiAocGxhdCA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9ZDNkMTFcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdHMucHVzaChcInVzZS1hbmdsZT12dWxrYW5cIiwgXCJkaXNhYmxlLXZ1bGthbi1zdXJmYWNlXCIpO1xuICAgICAgZmVhdHVyZXMucHVzaChcIlZ1bGthblwiKTtcbiAgICB9XG4gIH1cblxuICBvcHRzLnB1c2goYGVuYWJsZS1mZWF0dXJlcz0ke2ZlYXR1cmVzLmpvaW4oXCIsXCIpfWApO1xuICByZXR1cm4gb3B0cztcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmltcG9ydCB7IHNwYXduLCB0eXBlIENoaWxkUHJvY2VzcywgdHlwZSBTcGF3bk9wdGlvbnMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHRyZWVLaWxsIGZyb20gXCJ0cmVlLWtpbGxcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuZXhwb3J0IGNvbnN0IFBVUF9BUkdTX0tFWSA9IFwiLS1wdXAtcHJpdi1hcmdzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJncygpIHtcbiAgY29uc3QgYXJndiA9IHByb2Nlc3MuYXJndjtcbiAgbGV0IHByaXYgPSBhcmd2LmZpbmQoKGFyZykgPT4gYXJnLnN0YXJ0c1dpdGgoUFVQX0FSR1NfS0VZKSk7XG4gIGlmICghcHJpdikge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInByb2Nhcmd2XCIsIGFyZ3YpO1xuICAgIHJldHVybiBwcm9jZXNzLmFyZ3Y7XG4gIH1cbiAgY29uc3QgYXJncyA9IFtcImV4ZWNcIiwgLi4uYXJndi5zbGljZSgtMSldO1xuICBwcml2ID0gQnVmZmVyLmZyb20ocHJpdi5zcGxpdChcIj1cIilbMV0hLCBcImJhc2U2NFwiKS50b1N0cmluZygpO1xuICBhcmdzLnB1c2goLi4uSlNPTi5wYXJzZShwcml2KSk7XG4gIGxvZ2dlci5kZWJ1ZyhcInB1cGFyZ3NcIiwgYXJncyk7XG4gIHJldHVybiBhcmdzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NIYW5kbGUge1xuICBwcm9jZXNzOiBDaGlsZFByb2Nlc3M7XG4gIHdhaXQ6IFByb21pc2U8dm9pZD47XG4gIGdldCBraWxsZWQoKTogYm9vbGVhbjtcbiAga2lsbCgpOiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjbWQ6IHN0cmluZywgb3B0aW9ucz86IFNwYXduT3B0aW9ucyk6IFByb2Nlc3NIYW5kbGUge1xuICBjb25zdCBwYXJ0cyA9IGNtZC5zcGxpdChcIiBcIikuZmlsdGVyKChzKSA9PiBzLmxlbmd0aCk7XG4gIGNvbnN0IFtjb21tYW5kLCAuLi5hcmdzXSA9IHBhcnRzO1xuICBpZiAoIWNvbW1hbmQpIHRocm93IG5ldyBFcnJvcihcImVtcHR5IGNvbW1hbmRcIik7XG4gIGNvbnN0IHByb2MgPSBzcGF3bihjb21tYW5kLCBhcmdzLCB7XG4gICAgc3RkaW86IFwiaW5oZXJpdFwiLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xuICBsZXQga2lsbGVkID0gZmFsc2U7XG4gIHJldHVybiB7XG4gICAgcHJvY2VzczogcHJvYyxcbiAgICB3YWl0OiBsb2dnZXIuYXR0YWNoKHByb2MsIGNvbW1hbmQpLFxuICAgIGdldCBraWxsZWQoKSB7XG4gICAgICByZXR1cm4ga2lsbGVkO1xuICAgIH0sXG4gICAga2lsbCgpIHtcbiAgICAgIGlmIChraWxsZWQpIHJldHVybjtcbiAgICAgIGtpbGxlZCA9IHRydWU7XG4gICAgICBjb25zdCBwaWQgPSBwcm9jLnBpZDtcbiAgICAgIGlmIChwaWQpIHRyZWVLaWxsKHBpZCwgXCJTSUdLSUxMXCIpO1xuICAgICAgZWxzZSBwcm9jLmtpbGwoXCJTSUdLSUxMXCIpO1xuICAgIH0sXG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI1LlxuXG5pbXBvcnQgZWxlY3Ryb24gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeyBjaHJvbWl1bU9wdGlvbnMgfSBmcm9tIFwiLi4vYmFzZS9jaHJvbWl1bVwiO1xuaW1wb3J0IHsgcHVwQXBwIH0gZnJvbSBcIi4uL2Jhc2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBleGVjLCBQVVBfQVJHU19LRVkgfSBmcm9tIFwiLi4vYmFzZS9wcm9jZXNzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbGVjdHJvbk9wdHMoZGlzYWJsZUdwdTogYm9vbGVhbikge1xuICByZXR1cm4gWy4uLihhd2FpdCBjaHJvbWl1bU9wdGlvbnMoZGlzYWJsZUdwdSkpLCBcImhlYWRsZXNzPW5ld1wiXTtcbn1cblxuY29uc3QgVEFHID0gXCJbRWxlY3Ryb25dXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuRWxlY3Ryb25BcHBPcHRpb25zIHtcbiAgYXJnczogdW5rbm93bltdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRWxlY3Ryb25BcHAoeyBhcmdzIH06IFJ1bkVsZWN0cm9uQXBwT3B0aW9ucykge1xuICBjb25zdCBvcHRzID0gYXdhaXQgZWxlY3Ryb25PcHRzKGFyZ3MuaW5jbHVkZXMoXCItLWRpc2FibGUtZ3B1XCIpKTtcbiAgY29uc3QgZWxlY3Ryb25BcmdzID0gb3B0cy5tYXAoKGEpID0+IGAtLSR7YX1gKTtcbiAgZWxlY3Ryb25BcmdzLnB1c2goYCR7UFVQX0FSR1NfS0VZfT0ke0J1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGFyZ3MpKS50b1N0cmluZyhcImJhc2U2NFwiKX1gKTtcbiAgY29uc3QgY21kID0gW2VsZWN0cm9uLCAuLi5lbGVjdHJvbkFyZ3MsIHB1cEFwcF0uam9pbihcIiBcIik7XG4gIGxvZ2dlci5kZWJ1ZyhUQUcsIGNtZCk7XG5cbiAgY29uc3QgZW52OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHsgLi4ucHJvY2Vzcy5lbnYsIFJVU1RfQkFDS1RSQUNFOiBcImZ1bGxcIiB9O1xuICByZXR1cm4gZXhlYyhjbWQsIHsgc3RkaW86IFtcImlnbm9yZVwiLCBcInBpcGVcIiwgXCJwaXBlXCIsIFwiaXBjXCJdLCBlbnYgfSk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA0LzAxLlxuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiZXZlbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBlbnVtIElwY01zZ1R5cGUge1xuICAvLyBjaGlsZCDihpIgcGFyZW50XG4gIENPTlNPTEUgPSBcImNvbnNvbGVcIixcbiAgUFJPR1JFU1MgPSBcInByb2dyZXNzXCIsXG4gIERPTkUgPSBcImRvbmVcIixcbiAgRVJST1IgPSBcImVycm9yXCIsXG4gIC8vIHBhcmVudCDihpIgY2hpbGRcbiAgQ0FOQ0VMID0gXCJjYW5jZWxcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25zb2xlTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5DT05TT0xFO1xuICBsZXZlbDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5DQU5DRUw7XG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJcGNEb25lUGF5bG9hZCB7XG4gIHdyaXR0ZW46IG51bWJlcjtcbiAgamFuazogbnVtYmVyO1xuICBvdXRGaWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3Jlc3NNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLlBST0dSRVNTO1xuICB2YWx1ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvbmVNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkRPTkU7XG4gIHBheWxvYWQ6IElwY0RvbmVQYXlsb2FkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5FUlJPUjtcbiAgZXJyb3I6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXBjTXNnID0gQ29uc29sZU1zZyB8IFByb2dyZXNzTXNnIHwgRG9uZU1zZyB8IEVycm9yTXNnIHwgQ2FuY2VsTXNnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElwY0V2ZW50cyB7XG4gIHByb2dyZXNzOiBbdmFsdWU6IG51bWJlcl07XG4gIGNvbnNvbGU6IFtsZXZlbDogc3RyaW5nLCBtc2c6IHN0cmluZ107XG4gIGRvbmU6IFtwYXlsb2FkOiBJcGNEb25lUGF5bG9hZF07XG4gIGVycm9yOiBbZXJyb3I6IEVycm9yXTtcbiAgY2xvc2U6IFtjb2RlOiBudW1iZXIgfCBudWxsXTtcbn1cblxuZXhwb3J0IGNsYXNzIElwY1dyaXRlciB7XG4gIHdyaXRlQ29uc29sZShsZXZlbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLkNPTlNPTEUsIGxldmVsLCBtZXNzYWdlIH0pO1xuICB9XG5cbiAgd3JpdGVQcm9ncmVzcyh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5QUk9HUkVTUywgdmFsdWUgfSk7XG4gIH1cblxuICB3cml0ZUVycm9yKGVycm9yOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5FUlJPUiwgZXJyb3IgfSk7XG4gIH1cblxuICB3cml0ZURvbmUocGF5bG9hZDogSXBjRG9uZVBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5ET05FLCBwYXlsb2FkIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kKG1zZzogSXBjTXNnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAoIXByb2Nlc3Muc2VuZCkgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIHByb2Nlc3Muc2VuZChtc2csICgpID0+IHJlc29sdmUoKSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElwY1JlYWRlciBleHRlbmRzIEV2ZW50RW1pdHRlcjxJcGNFdmVudHM+IHtcbiAgY29uc3RydWN0b3IoY2hpbGQ6IENoaWxkUHJvY2Vzcykge1xuICAgIHN1cGVyKCk7XG4gICAgY2hpbGQub24oXCJtZXNzYWdlXCIsIChyYXcpID0+IHtcbiAgICAgIGNvbnN0IG1zZyA9IHJhdyBhcyBJcGNNc2c7XG4gICAgICBzd2l0Y2ggKG1zZy50eXBlKSB7XG4gICAgICAgIGNhc2UgSXBjTXNnVHlwZS5DT05TT0xFOiB7XG4gICAgICAgICAgdGhpcy5lbWl0KFwiY29uc29sZVwiLCBtc2cubGV2ZWwsIG1zZy5tZXNzYWdlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIElwY01zZ1R5cGUuUFJPR1JFU1M6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJwcm9ncmVzc1wiLCBtc2cudmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgSXBjTXNnVHlwZS5ET05FOiB7XG4gICAgICAgICAgdGhpcy5lbWl0KFwiZG9uZVwiLCBtc2cucGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLkVSUk9SOiB7XG4gICAgICAgICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgbmV3IEVycm9yKG1zZy5lcnJvcikpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2hpbGQub25jZShcImV4aXRcIiwgKGMpID0+IHRoaXMuZW1pdChcImNsb3NlXCIsIGMpKTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBydW5FbGVjdHJvbkFwcCB9IGZyb20gXCIuL3JlbmRlcmVyL2VsZWN0cm9uXCI7XG5pbXBvcnQgeyBJcGNNc2dUeXBlLCBJcGNSZWFkZXIsIHR5cGUgSXBjRG9uZVBheWxvYWQgfSBmcm9tIFwiLi9yZW5kZXJlci9pcGNcIjtcbmltcG9ydCB7XG4gIGRlZmF1bHRSZW5kZXJPcHRpb25zLFxuICB0eXBlIENvbnNvbGVDYWxsYmFjayxcbiAgdHlwZSBQcm9ncmVzc0NhbGxiYWNrLFxuICB0eXBlIFJlbmRlck9wdGlvbnMsXG4gIHR5cGUgUmVuZGVyUmVzdWx0LFxufSBmcm9tIFwiLi9yZW5kZXJlci9zY2hlbWFcIjtcblxuY29uc3QgVEFHID0gXCJbcHVwXVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1cE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFJlbmRlck9wdGlvbnM+IHtcbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIG9uUHJvZ3Jlc3M/OiBQcm9ncmVzc0NhbGxiYWNrO1xuICBvbkNvbnNvbGU/OiBDb25zb2xlQ2FsbGJhY2s7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVwUmVzdWx0IGV4dGVuZHMgUmVuZGVyUmVzdWx0IHt9XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1blB1cEFwcChzb3VyY2U6IHN0cmluZywgcmVuZGVyOiBSZW5kZXJPcHRpb25zKSB7XG4gIGxvZ2dlci5kZWJ1ZyhUQUcsIGBydW5QdXBBcHBgLCBzb3VyY2UsIHJlbmRlcik7XG5cbiAgY29uc3QgYXJnczogc3RyaW5nW10gPSBbXG4gICAgc291cmNlLFxuICAgIGAtLXdpZHRoYCxcbiAgICBgJHtyZW5kZXIud2lkdGh9YCxcbiAgICBgLS1oZWlnaHRgLFxuICAgIGAke3JlbmRlci5oZWlnaHR9YCxcbiAgICBgLS1mcHNgLFxuICAgIGAke3JlbmRlci5mcHN9YCxcbiAgICBgLS1kdXJhdGlvbmAsXG4gICAgYCR7cmVuZGVyLmR1cmF0aW9ufWAsXG4gICAgYC0tb3V0LWZpbGVgLFxuICAgIGAke3JlbmRlci5vdXRGaWxlfWAsXG4gIF07XG4gIGlmIChyZW5kZXIud2l0aEF1ZGlvKSBhcmdzLnB1c2goYC0td2l0aC1hdWRpb2ApO1xuICBpZiAocmVuZGVyLnVzZUlubmVyUHJveHkpIGFyZ3MucHVzaChgLS11c2UtaW5uZXItcHJveHlgKTtcbiAgaWYgKHJlbmRlci5kZXRlcm1pbmlzdGljKSBhcmdzLnB1c2goYC0tZGV0ZXJtaW5pc3RpY2ApO1xuICBpZiAocmVuZGVyLmRpc2FibGVHcHUpIGFyZ3MucHVzaChgLS1kaXNhYmxlLWdwdWApO1xuICBpZiAocmVuZGVyLmRpc2FibGVId0NvZGVjKSBhcmdzLnB1c2goYC0tZGlzYWJsZS1ody1jb2RlY2ApO1xuICBpZiAocmVuZGVyLndpbmRvd1RvbGVyYW50KSBhcmdzLnB1c2goYC0td2luZG93LXRvbGVyYW50YCk7XG5cbiAgcmV0dXJuIHJ1bkVsZWN0cm9uQXBwKHsgYXJncyB9KTtcbn1cblxuY29uc3QgZCA9IGRlZmF1bHRSZW5kZXJPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVwKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBQYXJ0aWFsPFB1cE9wdGlvbnM+KTogUHJvbWlzZTxQdXBSZXN1bHQ+IHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHB1cGAsIHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgY29uc3QgeyBzaWduYWwgfSA9IG9wdGlvbnM7XG4gIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcblxuICBjb25zdCBvdXRGaWxlID0gb3B0aW9ucy5vdXRGaWxlID8/IGQub3V0RmlsZTtcbiAgY29uc3QgcmVuZGVyT3B0czogUmVuZGVyT3B0aW9ucyA9IHtcbiAgICB3aWR0aDogb3B0aW9ucy53aWR0aCA/PyBkLndpZHRoLFxuICAgIGhlaWdodDogb3B0aW9ucy5oZWlnaHQgPz8gZC5oZWlnaHQsXG4gICAgZnBzOiBvcHRpb25zLmZwcyA/PyBkLmZwcyxcbiAgICBkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbiA/PyBkLmR1cmF0aW9uLFxuICAgIHdpdGhBdWRpbzogb3B0aW9ucy53aXRoQXVkaW8gPz8gZC53aXRoQXVkaW8sXG4gICAgdXNlSW5uZXJQcm94eTogb3B0aW9ucy51c2VJbm5lclByb3h5ID8/IGQudXNlSW5uZXJQcm94eSxcbiAgICBkZXRlcm1pbmlzdGljOiBvcHRpb25zLmRldGVybWluaXN0aWMgPz8gZC5kZXRlcm1pbmlzdGljLFxuICAgIGRpc2FibGVHcHU6IG9wdGlvbnMuZGlzYWJsZUdwdSA/PyBkLmRpc2FibGVHcHUsXG4gICAgZGlzYWJsZUh3Q29kZWM6IG9wdGlvbnMuZGlzYWJsZUh3Q29kZWMgPz8gZC5kaXNhYmxlSHdDb2RlYyxcbiAgICB3aW5kb3dUb2xlcmFudDogb3B0aW9ucy53aW5kb3dUb2xlcmFudCA/PyBkLndpbmRvd1RvbGVyYW50LFxuICAgIG91dEZpbGUsXG4gIH07XG5cbiAgY29uc3QgdDAgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgbGV0IHByb2dyZXNzID0gMDtcbiAgY29uc3QgdGljayA9IChwOiBudW1iZXIpID0+IHtcbiAgICBwcm9ncmVzcyA9IHA7XG4gICAgb3B0aW9ucy5vblByb2dyZXNzPy4ocCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlID0gYXdhaXQgcnVuUHVwQXBwKHNvdXJjZSwgcmVuZGVyT3B0cyk7XG5cbiAgY29uc3Qgb25BYm9ydCA9ICgpID0+IHtcbiAgICBoYW5kbGUucHJvY2Vzcy5zZW5kPy4oeyB0eXBlOiBJcGNNc2dUeXBlLkNBTkNFTCwgcmVhc29uOiBTdHJpbmcoc2lnbmFsPy5yZWFzb24gPz8gXCJhYm9ydFwiKSB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IGhhbmRsZS5raWxsKCksIDVfMDAwKTtcbiAgfTtcbiAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFByb21pc2U8SXBjRG9uZVBheWxvYWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5ldyBJcGNSZWFkZXIoaGFuZGxlLnByb2Nlc3MpXG4gICAgICAgIC5vbihcImNsb3NlXCIsIChjb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gSlNPTi5zdHJpbmdpZnkoeyBzb3VyY2UsIHByb2dyZXNzLCBjb2RlLCBraWxsZWQ6IGhhbmRsZS5raWxsZWQgfSk7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgY3Jhc2hlZDogJHttc2d9YCkpO1xuICAgICAgICB9KVxuICAgICAgICAub24oXCJwcm9ncmVzc1wiLCB0aWNrKVxuICAgICAgICAub24oXCJjb25zb2xlXCIsIChsLCBtKSA9PiBvcHRpb25zLm9uQ29uc29sZT8uKGwsIG0pKVxuICAgICAgICAub24oXCJkb25lXCIsIHJlc29sdmUpXG4gICAgICAgIC5vbihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgfSk7XG4gICAgdGljaygwKTtcbiAgICBjb25zdCBbc3VtbWFyeV0gPSBhd2FpdCBQcm9taXNlLmFsbChbcmVzdWx0LCBoYW5kbGUud2FpdF0pO1xuICAgIHRpY2soMTAwKTtcbiAgICBsb2dnZXIuZGVidWcoVEFHLCBgZG9uZSAke291dEZpbGV9IGluICR7TWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSAtIHQwKX1tc2ApO1xuICAgIHJldHVybiB7IC4uLnN1bW1hcnksIG9wdGlvbnM6IHJlbmRlck9wdHMgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZS5raWxsKCk7XG4gICAgc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuICAgIHRocm93IGU7XG4gIH0gZmluYWxseSB7XG4gICAgc2lnbmFsPy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCk7XG4gIH1cbn1cbiJdfQ==
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
- import'source-map-support/register.js';import {u,v,l as l$1,d,k,n,w}from'./chunk-7LUJTKTE.js';import {program}from'commander';import {realpathSync}from'fs';import {resolve}from'path';function I(o){if(o.includes("://")||o.startsWith("data:"))return o;let e;try{e=realpathSync(o);}catch{e=resolve(o);}return `file://${e}`}async function l(o){let e=u.shape,i=v;program.name(o.name).argument("<source>","file://, http(s)://, data: URI, or filesystem path").option("-W, --width <number>",e.width.description,`${i.width}`).option("-H, --height <number>",e.height.description,`${i.height}`).option("-f, --fps <number>",e.fps.description,`${i.fps}`).option("-t, --duration <number>",e.duration.description,`${i.duration}`).option("-o, --out-file <path>",e.outFile.description,i.outFile).option("-a, --with-audio",e.withAudio.description,i.withAudio).option("-d, --deterministic",e.deterministic.description,i.deterministic).option("--use-inner-proxy",e.useInnerProxy.description,i.useInnerProxy).option("--disable-gpu",e.disableGpu.description,i.disableGpu).option("--disable-hw-codec",e.disableHwCodec.description,i.disableHwCodec).option("--window-tolerant",e.windowTolerant.description,i.windowTolerant).action(async(t,r)=>{try{await o.run(I(t),{width:l$1(d,i.width)(r.width),height:l$1(d,i.height)(r.height),fps:l$1(d,i.fps)(r.fps),duration:l$1(d,i.duration)(r.duration),outFile:r.outFile??i.outFile,withAudio:r.withAudio??i.withAudio,useInnerProxy:r.useInnerProxy??i.useInnerProxy,deterministic:r.deterministic??i.deterministic,disableGpu:r.disableGpu??i.disableGpu,disableHwCodec:r.disableHwCodec??i.disableHwCodec,windowTolerant:r.windowTolerant??i.windowTolerant});}catch(w){k.fatal(w);}}),await program.parseAsync(n());}var y="pup";l({name:"pup",run:async(o,e)=>{let i=new AbortController,t=0;process.once("SIGTERM",()=>(t=143,i.abort(new Error("SIGTERM")))),process.once("SIGINT",()=>(t=130,i.abort(new Error("SIGINT")))),process.once("exit",r=>(t=r,i.abort(new Error("SIGKILL"))));try{await w(o,{...e,signal:i.signal});}catch(r){k.error(y,r);}finally{process.exit(t);}}});//# sourceMappingURL=cli.js.map
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVNvdXJjZSIsInMiLCJhYnMiLCJyZWFscGF0aFN5bmMiLCJyZXNvbHZlIiwibWFrZUNMSSIsIm9wdGlvbnMiLCJzaGFwZSIsIlJlbmRlclNjaGVtYSIsImQiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsInByb2dyYW0iLCJzb3VyY2UiLCJvcHRzIiwibm9lcnIiLCJwYXJzZU51bWJlciIsImUiLCJsb2dnZXIiLCJwYXJncyIsIlRBRyIsImN0cmwiLCJleGl0Q29kZSIsImMiLCJwdXAiXSwibWFwcGluZ3MiOiJ1TEFZQSxTQUFTQSxDQUFBQSxDQUFnQkMsQ0FBQUEsQ0FBbUIsQ0FDMUMsR0FBSUEsQ0FBQUEsQ0FBRSxTQUFTLEtBQUssQ0FBQSxFQUFLQSxDQUFBQSxDQUFFLFVBQUEsQ0FBVyxPQUFPLENBQUEsQ0FBRyxPQUFPQSxFQUN2RCxJQUFJQyxDQUFBQSxDQUNKLEdBQUksQ0FDRkEsQ0FBQUEsQ0FBTUMsWUFBQUEsQ0FBYUYsQ0FBQyxFQUN0QixDQUFBLEtBQVEsQ0FDTkMsRUFBTUUsT0FBQUEsQ0FBUUgsQ0FBQyxFQUNqQixDQUNBLE9BQU8sQ0FBQSxPQUFBLEVBQVVDLENBQUcsRUFDdEIsQ0FPQSxlQUFzQkcsRUFBUUMsQ0FBQUEsQ0FBcUIsQ0FDakQsSUFBTUMsQ0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBYSxLQUFBLENBQ3JCQyxDQUFBQSxDQUFJQyxFQUNWQyxPQUFBQSxDQUNHLElBQUEsQ0FBS0wsRUFBUSxJQUFJLENBQUEsQ0FDakIsU0FBUyxVQUFBLENBQVksb0RBQW9ELENBQUEsQ0FDekUsTUFBQSxDQUFPLHVCQUF3QkMsQ0FBQUEsQ0FBTSxLQUFBLENBQU0sWUFBYSxDQUFBLEVBQUdFLENBQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUNwRSxPQUFPLHVCQUFBLENBQXlCRixDQUFBQSxDQUFNLE9BQU8sV0FBQSxDQUFhLENBQUEsRUFBR0Us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QSxDQUFLLE1BQU0sSUFBSSxLQUFBLENBQU0sU0FBUyxDQUFDLENBQUEsQ0FBRSxFQUNsRixPQUFBLENBQVEsSUFBQSxDQUFLLFNBQVUsS0FBUUMsQ0FBQUEsQ0FBVyxJQUFNRCxDQUFBQSxDQUFLLEtBQUEsQ0FBTSxJQUFJLEtBQUEsQ0FBTSxRQUFRLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FDaEYsT0FBQSxDQUFRLElBQUEsQ0FBSyxPQUFTRSxDQUFBQSxHQUFRRCxDQUFBQSxDQUFXQyxFQUFJRixDQUFBQSxDQUFLLEtBQUEsQ0FBTSxJQUFJLEtBQUEsQ0FBTSxTQUFTLENBQUMsQ0FBQSxDQUFFLEVBQzlFLEdBQUksQ0FDRixNQUFNRyxDQUFBQSxDQUFJWCxDQUFBQSxDQUFRLENBQUUsR0FBR04sQ0FBQUEsQ0FBUyxNQUFBLENBQVFjLENBQUFBLENBQUssTUFBTyxDQUFDLEVBQ3ZELE9BQVNKLENBQUFBLENBQUcsQ0FDVkMsRUFBTyxLQUFBLENBQU1FLENBQUFBLENBQUtILENBQUMsRUFDckIsQ0FBQSxPQUFFLENBQ0EsT0FBQSxDQUFRLElBQUEsQ0FBS0ssQ0FBUSxFQUN2QixDQUNGLENBQ0YsQ0FBQyxDQUFBIiwiZmlsZSI6ImNsaS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IHByb2dyYW0gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBub2VyciB9IGZyb20gXCIuL2Jhc2Uvbm9lcnJcIjtcbmltcG9ydCB7IHBhcnNlTnVtYmVyIH0gZnJvbSBcIi4vYmFzZS9wYXJzZXJcIjtcbmltcG9ydCB7IHBhcmdzIH0gZnJvbSBcIi4vYmFzZS9wcm9jZXNzXCI7XG5pbXBvcnQgeyBkZWZhdWx0UmVuZGVyT3B0aW9ucywgUmVuZGVyU2NoZW1hLCB0eXBlIFJlbmRlck9wdGlvbnMgfSBmcm9tIFwiLi9yZW5kZXJlci9zY2hlbWFcIjtcblxuLy8gU2NoZW1lZCBVUklzIHBhc3MgdGhyb3VnaDsgYmFyZSBwYXRocyBnZXQgY2Fub25pY2FsaXplZCBhbmQgd3JhcHBlZCBhcyBmaWxlOi8vLlxuZnVuY3Rpb24gbm9ybWFsaXplU291cmNlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzLmluY2x1ZGVzKFwiOi8vXCIpIHx8IHMuc3RhcnRzV2l0aChcImRhdGE6XCIpKSByZXR1cm4gcztcbiAgbGV0IGFiczogc3RyaW5nO1xuICB0cnkge1xuICAgIGFicyA9IHJlYWxwYXRoU3luYyhzKTtcbiAgfSBjYXRjaCB7XG4gICAgYWJzID0gcmVzb2x2ZShzKTtcbiAgfVxuICByZXR1cm4gYGZpbGU6Ly8ke2Fic31gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENMSU9wdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJ1bjogKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBSZW5kZXJPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUNMSShvcHRpb25zOiBDTElPcHRpb25zKSB7XG4gIGNvbnN0IHNoYXBlID0gUmVuZGVyU2NoZW1hLnNoYXBlO1xuICBjb25zdCBkID0gZGVmYXVsdFJlbmRlck9wdGlvbnM7XG4gIHByb2dyYW1cbiAgICAubmFtZShvcHRpb25zLm5hbWUpXG4gICAgLmFyZ3VtZW50KFwiPHNvdXJjZT5cIiwgXCJmaWxlOi8vLCBodHRwKHMpOi8vLCBkYXRhOiBVUkksIG9yIGZpbGVzeXN0ZW0gcGF0aFwiKVxuICAgIC5vcHRpb24oXCItVywgLS13aWR0aCA8bnVtYmVyPlwiLCBzaGFwZS53aWR0aC5kZXNjcmlwdGlvbiwgYCR7ZC53aWR0aH1gKVxuICAgIC5vcHRpb24oXCItSCwgLS1oZWlnaHQgPG51bWJlcj5cIiwgc2hhcGUuaGVpZ2h0LmRlc2NyaXB0aW9uLCBgJHtkLmhlaWdodH1gKVxuICAgIC5vcHRpb24oXCItZiwgLS1mcHMgPG51bWJlcj5cIiwgc2hhcGUuZnBzLmRlc2NyaXB0aW9uLCBgJHtkLmZwc31gKVxuICAgIC5vcHRpb24oXCItdCwgLS1kdXJhdGlvbiA8bnVtYmVyPlwiLCBzaGFwZS5kdXJhdGlvbi5kZXNjcmlwdGlvbiwgYCR7ZC5kdXJhdGlvbn1gKVxuICAgIC5vcHRpb24oXCItbywgLS1vdXQtZmlsZSA8cGF0aD5cIiwgc2hhcGUub3V0RmlsZS5kZXNjcmlwdGlvbiwgZC5vdXRGaWxlKVxuICAgIC5vcHRpb24oXCItYSwgLS13aXRoLWF1ZGlvXCIsIHNoYXBlLndpdGhBdWRpby5kZXNjcmlwdGlvbiwgZC53aXRoQXVkaW8pXG4gICAgLm9wdGlvbihcIi1kLCAtLWRldGVybWluaXN0aWNcIiwgc2hhcGUuZGV0ZXJtaW5pc3RpYy5kZXNjcmlwdGlvbiwgZC5kZXRlcm1pbmlzdGljKVxuICAgIC5vcHRpb24oXCItLXVzZS1pbm5lci1wcm94eVwiLCBzaGFwZS51c2VJbm5lclByb3h5LmRlc2NyaXB0aW9uLCBkLnVzZUlubmVyUHJveHkpXG4gICAgLm9wdGlvbihcIi0tZGlzYWJsZS1ncHVcIiwgc2hhcGUuZGlzYWJsZUdwdS5kZXNjcmlwdGlvbiwgZC5kaXNhYmxlR3B1KVxuICAgIC5vcHRpb24oXCItLWRpc2FibGUtaHctY29kZWNcIiwgc2hhcGUuZGlzYWJsZUh3Q29kZWMuZGVzY3JpcHRpb24sIGQuZGlzYWJsZUh3Q29kZWMpXG4gICAgLm9wdGlvbihcIi0td2luZG93LXRvbGVyYW50XCIsIHNoYXBlLndpbmRvd1RvbGVyYW50LmRlc2NyaXB0aW9uLCBkLndpbmRvd1RvbGVyYW50KVxuICAgIC5hY3Rpb24oYXN5bmMgKHNvdXJjZTogc3RyaW5nLCBvcHRzKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBvcHRpb25zLnJ1bihub3JtYWxpemVTb3VyY2Uoc291cmNlKSwge1xuICAgICAgICAgIHdpZHRoOiBub2VycihwYXJzZU51bWJlciwgZC53aWR0aCkob3B0cy53aWR0aCksXG4gICAgICAgICAgaGVpZ2h0OiBub2VycihwYXJzZU51bWJlciwgZC5oZWlnaHQpKG9wdHMuaGVpZ2h0KSxcbiAgICAgICAgICBmcHM6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmZwcykob3B0cy5mcHMpLFxuICAgICAgICAgIGR1cmF0aW9uOiBub2VycihwYXJzZU51bWJlciwgZC5kdXJhdGlvbikob3B0cy5kdXJhdGlvbiksXG4gICAgICAgICAgb3V0RmlsZTogb3B0cy5vdXRGaWxlID8/IGQub3V0RmlsZSxcbiAgICAgICAgICB3aXRoQXVkaW86IG9wdHMud2l0aEF1ZGlvID8/IGQud2l0aEF1ZGlvLFxuICAgICAgICAgIHVzZUlubmVyUHJveHk6IG9wdHMudXNlSW5uZXJQcm94eSA/PyBkLnVzZUlubmVyUHJveHksXG4gICAgICAgICAgZGV0ZXJtaW5pc3RpYzogb3B0cy5kZXRlcm1pbmlzdGljID8/IGQuZGV0ZXJtaW5pc3RpYyxcbiAgICAgICAgICBkaXNhYmxlR3B1OiBvcHRzLmRpc2FibGVHcHUgPz8gZC5kaXNhYmxlR3B1LFxuICAgICAgICAgIGRpc2FibGVId0NvZGVjOiBvcHRzLmRpc2FibGVId0NvZGVjID8/IGQuZGlzYWJsZUh3Q29kZWMsXG4gICAgICAgICAgd2luZG93VG9sZXJhbnQ6IG9wdHMud2luZG93VG9sZXJhbnQgPz8gZC53aW5kb3dUb2xlcmFudCxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci5mYXRhbChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgYXdhaXQgcHJvZ3JhbS5wYXJzZUFzeW5jKHBhcmdzKCkpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBtYWtlQ0xJIH0gZnJvbSBcIi4vY29tbW9uXCI7XG5pbXBvcnQgeyBwdXAgfSBmcm9tIFwiLi9wdXBcIjtcblxuY29uc3QgVEFHID0gXCJwdXBcIjtcblxubWFrZUNMSSh7XG4gIG5hbWU6IFwicHVwXCIsXG4gIHJ1bjogYXN5bmMgKHNvdXJjZSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGN0cmwgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgbGV0IGV4aXRDb2RlID0gMDtcbiAgICBwcm9jZXNzLm9uY2UoXCJTSUdURVJNXCIsICgpID0+ICgoZXhpdENvZGUgPSAxNDMpLCBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR1RFUk1cIikpKSk7XG4gICAgcHJvY2Vzcy5vbmNlKFwiU0lHSU5UXCIsICgpID0+ICgoZXhpdENvZGUgPSAxMzApLCBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR0lOVFwiKSkpKTtcbiAgICBwcm9jZXNzLm9uY2UoXCJleGl0XCIsIChjKSA9PiAoKGV4aXRDb2RlID0gYyksIGN0cmwuYWJvcnQobmV3IEVycm9yKFwiU0lHS0lMTFwiKSkpKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcHVwKHNvdXJjZSwgeyAuLi5vcHRpb25zLCBzaWduYWw6IGN0cmwuc2lnbmFsIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihUQUcsIGUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
1
+ import'source-map-support/register.js';import {m,n,g,d,f,h,a,b as b$1,o}from'./chunk-YJ7QEMFY.js';import {program}from'commander';import {realpathSync}from'fs';import {resolve}from'path';function P(t){if(t.includes("://")||t.startsWith("data:"))return t;let i;try{i=realpathSync(t);}catch{i=resolve(t);}return `file://${i}`}async function b(t){let i=m.shape,e=n;program.name(t.name).argument("<source>","file://, http(s)://, data: URI, or filesystem path").option("-W, --width <number>",i.width.description,`${e.width}`).option("-H, --height <number>",i.height.description,`${e.height}`).option("-f, --fps <number>",i.fps.description,`${e.fps}`).option("-t, --duration <number>",i.duration.description,`${e.duration}`).option("-o, --out-file <path>",i.outFile.description,e.outFile).option("-a, --with-audio",i.withAudio.description,e.withAudio).option("-d, --deterministic",i.deterministic.description,e.deterministic).option("--use-inner-proxy",i.useInnerProxy.description,e.useInnerProxy).option("--disable-gpu",i.disableGpu.description,e.disableGpu).option("--disable-hw-codec",i.disableHwCodec.description,e.disableHwCodec).option("--window-tolerant",i.windowTolerant.description,e.windowTolerant).action(async(s,r)=>{try{await t.run(P(s),{width:g(d,e.width)(r.width),height:g(d,e.height)(r.height),fps:g(d,e.fps)(r.fps),duration:g(d,e.duration)(r.duration),outFile:r.outFile??e.outFile,withAudio:r.withAudio??e.withAudio,useInnerProxy:r.useInnerProxy??e.useInnerProxy,deterministic:r.deterministic??e.deterministic,disableGpu:r.disableGpu??e.disableGpu,disableHwCodec:r.disableHwCodec??e.disableHwCodec,windowTolerant:r.windowTolerant??e.windowTolerant});}catch(n){f.fatal(n);}}),await program.parseAsync(h());}b({name:"pup",run:async(t,i)=>{let e=new AbortController,s=0;process.once("SIGTERM",()=>(s=143,e.abort(new Error("SIGTERM")))),process.once("SIGINT",()=>(s=130,e.abort(new Error("SIGINT")))),process.once("exit",o=>(s=o,e.abort(new Error("SIGKILL"))));let r=Math.ceil(i.fps*i.duration),n=new a({total:r,out:process.stderr,showCount:true});f.impl=b$1(n);let c=i.outFile.split(",").map(o=>o.trim()).filter(Boolean);n.log(`rendering ${t} \u2192 ${c.join(", ")}`);let I=performance.now();try{await o(t,{...i,signal:e.signal,onProgress:y=>n.updatePercent(y)});let o$1=((performance.now()-I)/1e3).toFixed(2);n.update(r),n.finish(`done: ${c.join(", ")} (${r} frames, ${i.width}x${i.height} @ ${i.fps}fps) in ${o$1}s`);}catch(o){n.finish(`error: ${o instanceof Error?o.message:String(o)}`);}finally{process.exit(s);}}});//# sourceMappingURL=cli.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVNvdXJjZSIsInMiLCJhYnMiLCJyZWFscGF0aFN5bmMiLCJyZXNvbHZlIiwibWFrZUNMSSIsIm9wdGlvbnMiLCJzaGFwZSIsIlJlbmRlclNjaGVtYSIsImQiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsInByb2dyYW0iLCJzb3VyY2UiLCJvcHRzIiwibm9lcnIiLCJwYXJzZU51bWJlciIsImUiLCJsb2dnZXIiLCJwYXJncyIsImN0cmwiLCJleGl0Q29kZSIsImMiLCJ0b3RhbCIsImJhciIsIlByb2dyZXNzQmFyIiwiYmFyTG9nZ2VyIiwib3V0cyIsInQwIiwicHVwIiwicCIsInNlYyJdLCJtYXBwaW5ncyI6IjJMQVlBLFNBQVNBLEVBQWdCQyxDQUFBQSxDQUFtQixDQUMxQyxHQUFJQSxDQUFBQSxDQUFFLFFBQUEsQ0FBUyxLQUFLLEdBQUtBLENBQUFBLENBQUUsVUFBQSxDQUFXLE9BQU8sQ0FBQSxDQUFHLE9BQU9BLENBQUFBLENBQ3ZELElBQUlDLENBQUFBLENBQ0osR0FBSSxDQUNGQSxDQUFBQSxDQUFNQyxZQUFBQSxDQUFhRixDQUFDLEVBQ3RCLENBQUEsS0FBUSxDQUNOQyxDQUFBQSxDQUFNRSxPQUFBQSxDQUFRSCxDQUFDLEVBQ2pCLENBQ0EsT0FBTyxDQUFBLE9BQUEsRUFBVUMsQ0FBRyxDQUFBLENBQ3RCLENBT0EsZUFBc0JHLENBQUFBLENBQVFDLENBQUFBLENBQXFCLENBQ2pELElBQU1DLENBQUFBLENBQVFDLENBQUFBLENBQWEsS0FBQSxDQUNyQkMsQ0FBQUEsQ0FBSUMsRUFDVkMsT0FBQUEsQ0FDRyxJQUFBLENBQUtMLENBQUFBLENBQVEsSUFBSSxDQUFBLENBQ2pCLFFBQUEsQ0FBUyxXQUFZLG9EQUFvRCxDQUFBLENBQ3pFLE1BQUEsQ0FBTyxzQkFBQSxDQUF3QkMsQ0FBQUEsQ0FBTSxLQUFBLENBQU0sWUFBYSxDQUFBLEVBQUdFLENBQUFBLENB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QXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IHByb2dyYW0gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBub2VyciB9IGZyb20gXCIuL2Jhc2Uvbm9lcnJcIjtcbmltcG9ydCB7IHBhcnNlTnVtYmVyIH0gZnJvbSBcIi4vYmFzZS9wYXJzZXJcIjtcbmltcG9ydCB7IHBhcmdzIH0gZnJvbSBcIi4vYmFzZS9wcm9jZXNzXCI7XG5pbXBvcnQgeyBkZWZhdWx0UmVuZGVyT3B0aW9ucywgUmVuZGVyU2NoZW1hLCB0eXBlIFJlbmRlck9wdGlvbnMgfSBmcm9tIFwiLi9yZW5kZXJlci9zY2hlbWFcIjtcblxuLy8gU2NoZW1lZCBVUklzIHBhc3MgdGhyb3VnaDsgYmFyZSBwYXRocyBnZXQgY2Fub25pY2FsaXplZCBhbmQgd3JhcHBlZCBhcyBmaWxlOi8vLlxuZnVuY3Rpb24gbm9ybWFsaXplU291cmNlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzLmluY2x1ZGVzKFwiOi8vXCIpIHx8IHMuc3RhcnRzV2l0aChcImRhdGE6XCIpKSByZXR1cm4gcztcbiAgbGV0IGFiczogc3RyaW5nO1xuICB0cnkge1xuICAgIGFicyA9IHJlYWxwYXRoU3luYyhzKTtcbiAgfSBjYXRjaCB7XG4gICAgYWJzID0gcmVzb2x2ZShzKTtcbiAgfVxuICByZXR1cm4gYGZpbGU6Ly8ke2Fic31gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENMSU9wdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJ1bjogKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBSZW5kZXJPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUNMSShvcHRpb25zOiBDTElPcHRpb25zKSB7XG4gIGNvbnN0IHNoYXBlID0gUmVuZGVyU2NoZW1hLnNoYXBlO1xuICBjb25zdCBkID0gZGVmYXVsdFJlbmRlck9wdGlvbnM7XG4gIHByb2dyYW1cbiAgICAubmFtZShvcHRpb25zLm5hbWUpXG4gICAgLmFyZ3VtZW50KFwiPHNvdXJjZT5cIiwgXCJmaWxlOi8vLCBodHRwKHMpOi8vLCBkYXRhOiBVUkksIG9yIGZpbGVzeXN0ZW0gcGF0aFwiKVxuICAgIC5vcHRpb24oXCItVywgLS13aWR0aCA8bnVtYmVyPlwiLCBzaGFwZS53aWR0aC5kZXNjcmlwdGlvbiwgYCR7ZC53aWR0aH1gKVxuICAgIC5vcHRpb24oXCItSCwgLS1oZWlnaHQgPG51bWJlcj5cIiwgc2hhcGUuaGVpZ2h0LmRlc2NyaXB0aW9uLCBgJHtkLmhlaWdodH1gKVxuICAgIC5vcHRpb24oXCItZiwgLS1mcHMgPG51bWJlcj5cIiwgc2hhcGUuZnBzLmRlc2NyaXB0aW9uLCBgJHtkLmZwc31gKVxuICAgIC5vcHRpb24oXCItdCwgLS1kdXJhdGlvbiA8bnVtYmVyPlwiLCBzaGFwZS5kdXJhdGlvbi5kZXNjcmlwdGlvbiwgYCR7ZC5kdXJhdGlvbn1gKVxuICAgIC5vcHRpb24oXCItbywgLS1vdXQtZmlsZSA8cGF0aD5cIiwgc2hhcGUub3V0RmlsZS5kZXNjcmlwdGlvbiwgZC5vdXRGaWxlKVxuICAgIC5vcHRpb24oXCItYSwgLS13aXRoLWF1ZGlvXCIsIHNoYXBlLndpdGhBdWRpby5kZXNjcmlwdGlvbiwgZC53aXRoQXVkaW8pXG4gICAgLm9wdGlvbihcIi1kLCAtLWRldGVybWluaXN0aWNcIiwgc2hhcGUuZGV0ZXJtaW5pc3RpYy5kZXNjcmlwdGlvbiwgZC5kZXRlcm1pbmlzdGljKVxuICAgIC5vcHRpb24oXCItLXVzZS1pbm5lci1wcm94eVwiLCBzaGFwZS51c2VJbm5lclByb3h5LmRlc2NyaXB0aW9uLCBkLnVzZUlubmVyUHJveHkpXG4gICAgLm9wdGlvbihcIi0tZGlzYWJsZS1ncHVcIiwgc2hhcGUuZGlzYWJsZUdwdS5kZXNjcmlwdGlvbiwgZC5kaXNhYmxlR3B1KVxuICAgIC5vcHRpb24oXCItLWRpc2FibGUtaHctY29kZWNcIiwgc2hhcGUuZGlzYWJsZUh3Q29kZWMuZGVzY3JpcHRpb24sIGQuZGlzYWJsZUh3Q29kZWMpXG4gICAgLm9wdGlvbihcIi0td2luZG93LXRvbGVyYW50XCIsIHNoYXBlLndpbmRvd1RvbGVyYW50LmRlc2NyaXB0aW9uLCBkLndpbmRvd1RvbGVyYW50KVxuICAgIC5hY3Rpb24oYXN5bmMgKHNvdXJjZTogc3RyaW5nLCBvcHRzKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBvcHRpb25zLnJ1bihub3JtYWxpemVTb3VyY2Uoc291cmNlKSwge1xuICAgICAgICAgIHdpZHRoOiBub2VycihwYXJzZU51bWJlciwgZC53aWR0aCkob3B0cy53aWR0aCksXG4gICAgICAgICAgaGVpZ2h0OiBub2VycihwYXJzZU51bWJlciwgZC5oZWlnaHQpKG9wdHMuaGVpZ2h0KSxcbiAgICAgICAgICBmcHM6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmZwcykob3B0cy5mcHMpLFxuICAgICAgICAgIGR1cmF0aW9uOiBub2VycihwYXJzZU51bWJlciwgZC5kdXJhdGlvbikob3B0cy5kdXJhdGlvbiksXG4gICAgICAgICAgb3V0RmlsZTogb3B0cy5vdXRGaWxlID8/IGQub3V0RmlsZSxcbiAgICAgICAgICB3aXRoQXVkaW86IG9wdHMud2l0aEF1ZGlvID8/IGQud2l0aEF1ZGlvLFxuICAgICAgICAgIHVzZUlubmVyUHJveHk6IG9wdHMudXNlSW5uZXJQcm94eSA/PyBkLnVzZUlubmVyUHJveHksXG4gICAgICAgICAgZGV0ZXJtaW5pc3RpYzogb3B0cy5kZXRlcm1pbmlzdGljID8/IGQuZGV0ZXJtaW5pc3RpYyxcbiAgICAgICAgICBkaXNhYmxlR3B1OiBvcHRzLmRpc2FibGVHcHUgPz8gZC5kaXNhYmxlR3B1LFxuICAgICAgICAgIGRpc2FibGVId0NvZGVjOiBvcHRzLmRpc2FibGVId0NvZGVjID8/IGQuZGlzYWJsZUh3Q29kZWMsXG4gICAgICAgICAgd2luZG93VG9sZXJhbnQ6IG9wdHMud2luZG93VG9sZXJhbnQgPz8gZC53aW5kb3dUb2xlcmFudCxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci5mYXRhbChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgYXdhaXQgcHJvZ3JhbS5wYXJzZUFzeW5jKHBhcmdzKCkpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgYmFyTG9nZ2VyLCBQcm9ncmVzc0JhciB9IGZyb20gXCIuL2Jhc2UvY2xpX3VpXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG1ha2VDTEkgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHB1cCB9IGZyb20gXCIuL3B1cFwiO1xuXG5tYWtlQ0xJKHtcbiAgbmFtZTogXCJwdXBcIixcbiAgcnVuOiBhc3luYyAoc291cmNlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY3RybCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgZXhpdENvZGUgPSAwO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR1RFUk1cIiwgKCkgPT4gKChleGl0Q29kZSA9IDE0MyksIGN0cmwuYWJvcnQobmV3IEVycm9yKFwiU0lHVEVSTVwiKSkpKTtcbiAgICBwcm9jZXNzLm9uY2UoXCJTSUdJTlRcIiwgKCkgPT4gKChleGl0Q29kZSA9IDEzMCksIGN0cmwuYWJvcnQobmV3IEVycm9yKFwiU0lHSU5UXCIpKSkpO1xuICAgIHByb2Nlc3Mub25jZShcImV4aXRcIiwgKGMpID0+ICgoZXhpdENvZGUgPSBjKSwgY3RybC5hYm9ydChuZXcgRXJyb3IoXCJTSUdLSUxMXCIpKSkpO1xuXG4gICAgY29uc3QgdG90YWwgPSBNYXRoLmNlaWwob3B0aW9ucy5mcHMgKiBvcHRpb25zLmR1cmF0aW9uKTtcbiAgICBjb25zdCBiYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoeyB0b3RhbCwgb3V0OiBwcm9jZXNzLnN0ZGVyciwgc2hvd0NvdW50OiB0cnVlIH0pO1xuICAgIGxvZ2dlci5pbXBsID0gYmFyTG9nZ2VyKGJhcik7XG5cbiAgICBjb25zdCBvdXRzID0gb3B0aW9ucy5vdXRGaWxlXG4gICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAubWFwKChzKSA9PiBzLnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgYmFyLmxvZyhgcmVuZGVyaW5nICR7c291cmNlfSDihpIgJHtvdXRzLmpvaW4oXCIsIFwiKX1gKTtcbiAgICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBwdXAoc291cmNlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHNpZ25hbDogY3RybC5zaWduYWwsXG4gICAgICAgIG9uUHJvZ3Jlc3M6IChwKSA9PiBiYXIudXBkYXRlUGVyY2VudChwKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc2VjID0gKChwZXJmb3JtYW5jZS5ub3coKSAtIHQwKSAvIDEwMDApLnRvRml4ZWQoMik7XG4gICAgICBiYXIudXBkYXRlKHRvdGFsKTtcbiAgICAgIGJhci5maW5pc2goXG4gICAgICAgIGBkb25lOiAke291dHMuam9pbihcIiwgXCIpfSAoJHt0b3RhbH0gZnJhbWVzLCAke29wdGlvbnMud2lkdGh9eCR7b3B0aW9ucy5oZWlnaHR9IEAgJHtvcHRpb25zLmZwc31mcHMpIGluICR7c2VjfXNgLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBiYXIuZmluaXNoKGBlcnJvcjogJHtlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSl9YCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSk7XG4gICAgfVxuICB9LFxufSk7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ 'use strict';require('source-map-support/register.js');function S(){if(window.__pup_tick__)return;let RealDate=Date,dateOrigin=RealDate.now(),currMs=0,timeOffset=0,rafQueue=[],timers={},nextId=1;function FakeDate(...n){return this instanceof FakeDate?n.length?new(Function.prototype.bind.apply(RealDate,[null,...n])):new RealDate(dateOrigin+currMs+(timeOffset+=.01)):new RealDate(dateOrigin+currMs).toString()}FakeDate.prototype=RealDate.prototype,FakeDate.now=()=>dateOrigin+currMs+(timeOffset+=.01),FakeDate.parse=RealDate.parse,FakeDate.UTC=RealDate.UTC,window.Date=FakeDate,performance.now=()=>currMs+(timeOffset+=.01),window.requestAnimationFrame=n=>{let t=nextId++;return rafQueue.push({id:t,cb:n}),t},window.cancelAnimationFrame=n=>{rafQueue=rafQueue.filter(t=>t.id!==n);},window.setTimeout=(n,t)=>{let e=nextId++;return timers[e]={type:"timeout",cb:n,delay:t||0,next:currMs+(t||0)},e},window.clearTimeout=n=>{typeof n=="number"&&delete timers[n];},window.setInterval=(n,t)=>{let e=nextId++,r=Math.max(t||0,1);return timers[e]={type:"interval",cb:n,delay:r,next:currMs+r},e},window.clearInterval=n=>{typeof n=="number"&&delete timers[n];};function safeInvokeTimer(fn){try{typeof fn=="string"?eval(fn):fn();}catch(n){console.error("[Tick] error:",n instanceof Error&&n.stack||n);}}function safeInvokeRaf(n,t){try{n(t);}catch(e){console.error("[Tick] error:",e instanceof Error&&e.stack||e);}}let animState=new WeakMap;function syncAnimations(n){let t;try{t=document.getAnimations();}catch{return}for(let e of t){let r=e.playState;if(r==="idle"||r==="finished"){animState.delete(e);continue}let s=typeof e.playbackRate=="number"?e.playbackRate:1;if(s===0)continue;let i=animState.get(e);if(!i){let a=typeof e.currentTime=="number"?e.currentTime:0;i={startMs:n-a/s,pausedAccum:0,pausedAt:-1},animState.set(e,i);}if(r==="paused"){i.pausedAt<0&&(i.pausedAt=n);continue}i.pausedAt>=0&&(i.pausedAccum+=n-i.pausedAt,i.pausedAt=-1),e.currentTime=(n-i.startMs-i.pausedAccum)*s;}}function process(n){currMs=n,timeOffset=0;for(let e of Object.keys(timers)){let r=timers[Number(e)];if(r)for(;r.next<=currMs;){if(safeInvokeTimer(r.cb),r.type==="timeout"){delete timers[Number(e)];break}r.next+=r.delay;}}let t=rafQueue.splice(0);for(let e of t)safeInvokeRaf(e.cb,currMs);syncAnimations(currMs);}window.__pup_tick__={process};}var I=["borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","transform","transformOrigin","filter","clipPath","boxShadow","opacity","mixBlendMode","mask","zIndex","position","left","top","right","bottom"];function k(n){return n.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}function T(n,t){let e=window.getComputedStyle(n),r=n.offsetParent||document.body,s=n.getBoundingClientRect(),i=r.getBoundingClientRect();t.style.position="absolute",t.style.left=s.left-i.left+"px",t.style.top=s.top-i.top+"px",t.style.width=s.width+"px",t.style.height=s.height+"px";for(let d of I){if(d==="position"||d==="left"||d==="top"||d==="right"||d==="bottom")continue;let f=e.getPropertyValue(k(d));f&&t.style.setProperty(k(d),f);}let a=window.devicePixelRatio||1,c=Math.max(1,Math.round(s.width*a)),m=Math.max(1,Math.round(s.height*a));t.width!==c&&(t.width=c),t.height!==m&&(t.height=m);}function R(n,t){let e=document.createElement("canvas");if(e.dataset.pupVideoOverlay="1",e.style.pointerEvents="none",n.style.visibility="hidden",n.muted=true,(n.parentNode||document.body).insertBefore(e,n.nextSibling),T(n,e),t)try{e.getContext("2d").drawImage(t,0,0,e.width,e.height);}catch{}return e}function v(n,t,e,r,s){if(s==="none")return [(e-n)/2,(r-t)/2,n,t];if(s==="contain"||s==="scale-down"){let i=Math.min(e/n,r/t),a=s==="scale-down"?Math.min(1,i):i,c=a*n,m=a*t;return [(e-c)/2,(r-m)/2,c,m]}if(s==="cover"){let i=Math.max(e/n,r/t),a=i*n,c=i*t;return [(e-a)/2,(r-c)/2,a,c]}return [0,0,e,r]}var w="pup-frame://";var _="[VideoHook]";function y(n){return {length:n>0?1:0,start:()=>0,end:()=>n}}function u(n,t){n.dispatchEvent(new Event(t));}function P(n){if(n.rvfc.size===0)return;let t=[...n.rvfc.values()];n.rvfc.clear();let e=performance.now(),r={presentationTime:e,expectedDisplayTime:e,width:n.meta.frameWidth,height:n.meta.frameHeight,mediaTime:n.currentTime,presentedFrames:n.presentedFrames};for(let s of t)s(e,r);}async function N(n,t,e,r){let s=n.cache.cacheOf(e.meta.id);s.readers.set(e,r);let i=s.bitmaps.get(r);if(!i){n.cache.prefetch(e,r+1,9);let m=await n.cache.fetch(e,r);if(n.sessions.get(t)!==e)return;if(!m){!e.paused&&!e.waiting&&(e.waiting=true,u(t,"waiting"));return}i=m;}e.waiting&&(e.waiting=false,e.paused||u(t,"playing"));let a=e.cv,c=v(i.width,i.height,a.width,a.height,e.objectFit);e.ctx.clearRect(0,0,a.width,a.height),e.ctx.drawImage(i,c[0],c[1],c[2],c[3]),e.lastDrawnIdx=r,e.presentedFrames++,P(e),n.cache.prefetch(e,r+1,10),n.cache.evict(s);}function H(n,t){let e=Math.max(0,t-n.currMs)/1e3;n.currMs=t;let r=[];return document.querySelectorAll("video").forEach(s=>{let i=s,a=n.sessions.get(i);if(!a||a.dead||(T(i,a.cv),!a.meta))return;if(a.meta.frameWidth<a.meta.width&&a.cv.width>a.meta.frameWidth*1.05&&!n.attaching.has(i)){n.reattach(i,a);return}!a.paused&&!a.ended&&(a.currentTime+=e*(i.playbackRate||1),a.maxReached=Math.max(a.maxReached,a.currentTime),a.currentTime>=a.meta.duration?i.loop?a.currentTime=a.currentTime%a.meta.duration:(a.currentTime=a.meta.duration,a.paused=true,a.ended=true,u(i,"ended")):u(i,"timeupdate"));let c=Math.max(1,Math.round(a.currentTime*a.meta.fps));c!==a.lastDrawnIdx&&r.push(N(n,i,a,c));}),Promise.all(r)}var E=class{caches=new Map;cacheOf(t){let e=this.caches.get(t);return e||(e={bitmaps:new Map,inFlight:new Map,readers:new Map},this.caches.set(t,e)),e}fetch(t,e){let r=this.cacheOf(t.meta.id),s=r.inFlight.get(e);if(s)return s;let i=r.bitmaps.get(e);if(i)return Promise.resolve(i);let a=t.meta.frameWidth,c=t.meta.frameHeight,m=fetch(w+"frame?id="+t.meta.id+"&idx="+e).then(d=>d.ok?d.arrayBuffer():null).then(d=>d&&d.byteLength===a*c*4?createImageBitmap(new ImageData(new Uint8ClampedArray(d),a,c)):null).then(d=>(r.inFlight.delete(e),d&&r.bitmaps.set(e,d),d)).catch(()=>(r.inFlight.delete(e),null));return r.inFlight.set(e,m),m}prefetch(t,e,r){let s=Math.max(1,Math.round(t.meta.duration*t.meta.fps));for(let i=e;i<e+r;i++)i<1||i>s||this.fetch(t,i);}evict(t){let e=1/0;if(t.readers.forEach(s=>{s<e&&(e=s);}),!isFinite(e))return;let r=e-2;t.bitmaps.forEach((s,i)=>{i<r&&(s.close(),t.bitmaps.delete(i));});}release(t,e){let r=this.caches.get(t);r&&(r.readers.delete(e),!(r.readers.size>0)&&(r.bitmaps.forEach(s=>s.close()),this.caches.delete(t),fetch(w+"close?id="+t,{keepalive:true})));}};function A(n){let t=HTMLVideoElement.prototype,e=HTMLMediaElement.prototype,r=o=>Object.getOwnPropertyDescriptor(t,o)||Object.getOwnPropertyDescriptor(e,o),s=r("currentTime"),i=r("src"),a=r("playbackRate"),c=t.pause,m=t.requestVideoFrameCallback,d=t.cancelVideoFrameCallback,f=t.getVideoPlaybackQuality,F=t.load,p=n.sessions,h=(o,l)=>{let b=r(o);Object.defineProperty(t,o,{configurable:true,get(){let x=p.get(this);return x?l(x):b.get.call(this)}});};h("paused",o=>o.paused),h("ended",o=>o.ended),h("readyState",o=>o.readyState),h("networkState",o=>o.networkState),h("error",o=>o.error??null),h("seeking",o=>o.seeking),h("buffered",o=>y(o.meta?o.meta.duration:0)),h("seekable",o=>y(o.meta?o.meta.duration:0)),h("played",o=>y(o.maxReached)),t.play=function(){let o=p.get(this);return o?(n.resume(this,o),Promise.resolve()):n.attach(this).then(l=>{l&&n.resume(this,l);})},t.pause=function(){let o=p.get(this);if(!o){c.call(this);return}o.paused||(o.paused=true,u(this,"pause"));},s&&Object.defineProperty(t,"currentTime",{configurable:true,get(){let o=p.get(this);return o?o.currentTime:s.get.call(this)},set(o){let l=p.get(this);if(!l){s.set.call(this,o);return}let b=l.meta?l.meta.duration:o;l.currentTime=Math.max(0,Math.min(o,b)),l.maxReached=Math.max(l.maxReached,l.currentTime),l.currentTime<b&&(l.ended=false),l.seeking=true,u(this,"seeking"),l.seeking=false,u(this,"seeked"),u(this,"timeupdate");}}),a&&a.set&&Object.defineProperty(t,"playbackRate",{configurable:true,get:a.get,set(o){a.set.call(this,o),p.has(this)&&u(this,"ratechange");}}),t.requestVideoFrameCallback=function(o){let l=p.get(this);if(!l)return m.call(this,o);let b=++n.rvfcSeq;return l.rvfc.set(b,o),b},t.cancelVideoFrameCallback=function(o){let l=p.get(this);if(!l)return d.call(this,o);l.rvfc.delete(o);},t.getVideoPlaybackQuality=function(){let o=p.get(this);return o?{creationTime:performance.now(),totalVideoFrames:o.presentedFrames,droppedVideoFrames:0,corruptedVideoFrames:0}:f.call(this)},t.load=function(){if(!p.has(this))return F.call(this);n.detach(this),u(this,"emptied"),this.__pupLastSrc=void 0,n.attach(this);},i&&i.set&&Object.defineProperty(t,"src",{configurable:true,get:i.get,set(o){i.set.call(this,o),n.onSrcChange(this);}});}function L(n,t){return {meta:null,cv:t,ctx:t.getContext("2d"),paused:!(n.autoplay||!n.paused),currentTime:0,ended:false,lastDrawnIdx:-1,dead:false,objectFit:window.getComputedStyle(n).objectFit||"fill",readyState:0,networkState:0,seeking:false,waiting:false,error:void 0,presentedFrames:0,maxReached:0,rvfc:new Map}}function O(n,t,e){return t.dead=true,t.error=e,t.networkState=3,console.warn(_,e.message+" src="+(n.src||n.currentSrc)),u(n,"error"),null}async function C(n,t){let{video:e,state:r,src:s,birthMs:i,native:a}=t,c=Number.parseInt(e.dataset.pupFps||"30",10);r.networkState=2,u(e,"loadstart");let m;try{let f=a?"":"&w="+r.cv.width+"&h="+r.cv.height+"&fit="+encodeURIComponent(r.objectFit);m=await fetch(w+"open?src="+encodeURIComponent(s)+"&fps="+c+f);}catch(f){return O(e,r,{code:2,message:"open failed: "+(f instanceof Error?f.message:String(f))})}if(n.sessions.get(e)!==r)return null;if(!m.ok)return O(e,r,{code:3,message:"open "+m.status+": "+await m.text()});let d=await m.json();return n.sessions.get(e)!==r?null:(r.meta=d,r.currentTime=r.paused?0:Math.max(0,(n.currMs-i)/1e3),Object.defineProperty(e,"videoWidth",{value:d.width,configurable:true}),Object.defineProperty(e,"videoHeight",{value:d.height,configurable:true}),Object.defineProperty(e,"duration",{value:d.duration,configurable:true}),r.readyState=1,u(e,"durationchange"),u(e,"loadedmetadata"),r.readyState=4,u(e,"loadeddata"),u(e,"canplay"),u(e,"canplaythrough"),r.networkState=1,u(e,"suspend"),r.paused||(u(e,"play"),u(e,"playing")),n.cache.prefetch(r,1,10),r)}var V=class{sessions=new WeakMap;attaching=new WeakMap;cache=new E;rvfcSeq=0;currMs=0;lastSnapshot=new WeakMap;install(){A(this),this.scan(document.documentElement),new MutationObserver(t=>{for(let e of t){if(e.type==="attributes"&&e.target instanceof HTMLVideoElement&&e.attributeName==="src"){this.onSrcChange(e.target);continue}e.addedNodes.forEach(r=>{r instanceof Element&&this.scan(r);}),e.removedNodes.forEach(r=>{r instanceof HTMLVideoElement&&this.detach(r);});}}).observe(document,{subtree:true,childList:true,attributes:true,attributeFilter:["src"]}),window.__pup_video__={advance:t=>H(this,t)};}attach(t,e=false){let r=this.sessions.get(t);if(r)return Promise.resolve(r);let s=this.attaching.get(t);if(s)return s;let i=t.src||t.currentSrc;if(!i||/^(blob:|data:|mediastream:)/i.test(i))return Promise.resolve(null);let a=R(t,this.lastSnapshot.get(t)),c=L(t,a);this.sessions.set(t,c);let m=C(this,{video:t,state:c,src:i,birthMs:this.currMs,native:e}).finally(()=>{this.attaching.delete(t);});return this.attaching.set(t,m),m}resume(t,e){!e.paused&&!e.ended||(e.paused=false,e.ended=false,u(t,"play"),u(t,"playing"));}detach(t){let e=this.sessions.get(t);if(e){if(e.meta){if(e.lastDrawnIdx>=0)try{let r=new OffscreenCanvas(e.cv.width,e.cv.height);r.getContext("2d").drawImage(e.cv,0,0),this.lastSnapshot.set(t,r);}catch{}this.cache.release(e.meta.id,e);}e.cv.remove(),this.sessions.delete(t),this.attaching.delete(t);}}onSrcChange(t){let e=t.src||t.currentSrc||"";t.__pupLastSrc!==e&&(t.__pupLastSrc=e,this.sessions.has(t)&&this.detach(t),this.attach(t));}reattach(t,e){let r=e.currentTime,s=e.paused,i=e.ended;this.detach(t),this.attach(t,true).then(a=>{a&&(a.currentTime=r,a.paused=s,a.ended=i);});}scan(t){t&&(t.tagName==="VIDEO"&&this.attach(t),t.querySelectorAll&&t.querySelectorAll("video").forEach(e=>this.attach(e)));}};function D(){window.__pup_video__||new V().install();}window.self!==window.top&&(S(),D());
2
+ //# sourceMappingURL=iframe_preload.cjs.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lL2lmcmFtZV9ob29rLnRzIiwiLi4vc3JjL3J1bnRpbWUvdmlkZW8vb3ZlcmxheS50cyIsIi4uL3NyYy9ydW50aW1lL3ZpZGVvL3R5cGVzLnRzIiwiLi4vc3JjL3J1bnRpbWUvdmlkZW8vZHJpdmVyLnRzIiwiLi4vc3JjL3J1bnRpbWUvdmlkZW8vZnJhbWVfY2FjaGUudHMiLCIuLi9zcmMvcnVudGltZS92aWRlby9tZWRpYV9zaGltLnRzIiwiLi4vc3JjL3J1bnRpbWUvdmlkZW8vc2Vzc2lvbi50cyIsIi4uL3NyYy9ydW50aW1lL3ZpZGVvL2hvb2sudHMiLCIuLi9zcmMvaWZyYW1lX3ByZWxvYWQudHMiXSwibmFtZXMiOlsiaW5zdGFsbFRpY2tIb29rIiwiYXJncyIsImNiIiwiaWQiLCJyIiwiZGVsYXkiLCJkIiwiZSIsInRzIiwibXMiLCJhbmltcyIsImEiLCJzdGF0ZSIsInJhdGUiLCJzIiwiY3QwIiwidGltZXN0YW1wTXMiLCJ0IiwicmFmcyIsIk1JUlJPUl9QUk9QUyIsImNzc0Nhc2UiLCJjIiwic3luY092ZXJsYXkiLCJ2aWRlbyIsImN2IiwiY3MiLCJvZmZzZXRQYXJlbnQiLCJ2ciIsInByIiwicCIsInYiLCJkcHIiLCJ3IiwiaCIsInNldHVwQ2FudmFzIiwic25hcCIsImZpdFJlY3QiLCJzcmNXIiwic3JjSCIsImRzdFciLCJkc3RIIiwiZml0Iiwic2MiLCJrIiwid3MiLCJocyIsInNjMiIsIndzMiIsImhzMiIsIlNDSEVNRSIsIlRBRyIsInRpbWVSYW5nZXMiLCJlbmQiLCJmaXJlIiwiZWwiLCJ0eXBlIiwiZmlyZUZyYW1lQ2FsbGJhY2tzIiwiY2JzIiwibm93IiwibWV0YSIsInBhaW50IiwiaG9vayIsImlkeCIsImJtIiwiZmV0Y2hlZCIsImFkdmFuY2UiLCJkdCIsInBzIiwiRnJhbWVDYWNoZSIsImV4aXN0aW5nIiwiY2FjaGVkIiwiYnVmIiwiZnJvbUlkeCIsImNvdW50IiwibWF4SWR4IiwibWluSWR4IiwiZmxvb3IiLCJpbnN0YWxsTWVkaWFTaGltIiwiSFZFIiwiTUVESUEiLCJtZGVzYyIsImN0RGVzYyIsInNyY0Rlc2MiLCJyYXRlRGVzYyIsIm9yaWdQYXVzZSIsIm9yaWdSVkZDIiwib3JpZ0NhbmNlbFJWRkMiLCJvcmlnUXVhbGl0eSIsIm9yaWdMb2FkIiwic2Vzc2lvbnMiLCJkZWYiLCJwcm9wIiwicGljayIsIm5hdGl2ZSIsIm5zIiwiZHVyIiwibmV3VmlkZW9TdGF0ZSIsImZhaWxPcGVuIiwiZXJyb3IiLCJvcGVuU2Vzc2lvbiIsInNyYyIsImJpcnRoTXMiLCJmcHMiLCJyZXMiLCJxIiwiVmlkZW9Ib29rIiwibXV0cyIsIm0iLCJuIiwicGVuZGluZyIsInBhdXNlZCIsImVuZGVkIiwicm9vdCIsImluc3RhbGxWaWRlb0hvb2siXSwibWFwcGluZ3MiOiJ1REF3Qk8sU0FBU0EsR0FBd0IsQ0FDdEMsR0FBSSxNQUFBLENBQU8sWUFBQSxDQUFjLE9BRXpCLElBQU0sUUFBQSxDQUFXLElBQUEsQ0FDWCxVQUFBLENBQWEsU0FBUyxHQUFBLEVBQUksQ0FDNUIsT0FBUyxDQUFBLENBQ1QsVUFBQSxDQUFhLEVBQ2IsUUFBQSxDQUF1QixFQUFDLENBQ3RCLE1BQUEsQ0FBNEMsRUFBQyxDQUMvQyxNQUFBLENBQVMsRUFFYixTQUFTLFFBQUEsQ0FBQSxHQUEyQkMsRUFBZ0MsQ0FDbEUsT0FBTSxJQUFBLFlBQWdCLFFBQUEsQ0FHZkEsRUFBSyxNQUFBLENBQ1IsSUFBSyxTQUFTLFNBQUEsQ0FBVSxJQUFBLENBQUssTUFBTSxRQUFBLENBQVUsQ0FBQyxJQUFBLENBQU0sR0FBR0EsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUM1RCxJQUFJLFFBQUEsQ0FBUyxXQUFhLE1BQUEsRUFBVSxVQUFBLEVBQWMsR0FBQSxDQUFLLENBQUEsQ0FKbEQsSUFBSSxRQUFBLENBQVMsVUFBQSxDQUFhLE1BQU0sQ0FBQSxDQUFFLFFBQUEsRUFLN0MsQ0FDQSxRQUFBLENBQVMsU0FBQSxDQUFZLFFBQUEsQ0FBUyxVQUM5QixRQUFBLENBQVMsR0FBQSxD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QXlCLENBQ3pELElBQU1LLENBQUFBLENBQUlMLENBQUFBLENBQU0sV0FBQSxDQUNWa0csQ0FBQUEsQ0FBU2xHLEVBQU0sTUFBQSxDQUNmbUcsQ0FBQUEsQ0FBUW5HLEVBQU0sS0FBQSxDQUNwQixJQUFBLENBQUssT0FBT1csQ0FBSyxDQUFBLENBQ1osSUFBQSxDQUFLLE1BQUEsQ0FBT0EsRUFBTyxJQUFJLENBQUEsQ0FBRSxLQUFNdUUsQ0FBQUEsRUFBTyxDQUNwQ0EsSUFDTEEsQ0FBQUEsQ0FBRyxXQUFBLENBQWM3RSxDQUFBQSxDQUNqQjZFLENBQUFBLENBQUcsT0FBU2dCLENBQUFBLENBQ1poQixDQUFBQSxDQUFHLE1BQVFpQixDQUFBQSxFQUNiLENBQUMsRUFDSCxDQUVRLElBQUEsQ0FBS0MsQ0FBQUEsQ0FBNEIsQ0FDbENBLElBQ0RBLENBQUFBLENBQUssT0FBQSxHQUFZLFNBQVMsSUFBQSxDQUFLLE1BQUEsQ0FBT0EsQ0FBd0IsQ0FBQSxDQUM5REEsQ0FBQUEsQ0FBSyxnQkFBQSxFQUFrQkEsQ0FBQUEsQ0FBSyxpQkFBaUIsT0FBTyxDQUFBLENBQUUsUUFBU2xGLENBQUFBLEVBQU0sSUFBQSxDQUFLLE9BQU9BLENBQUMsQ0FBQyxDQUFBLEVBQ3pGLENBQ0YsRUFFTyxTQUFTbUYsQ0FBQUEsRUFBeUIsQ0FDbkMsTUFBQSxDQUFPLGFBQUEsRUFDWCxJQUFJUixDQUFBQSxFQUFVLENBQUUsT0FBQSxHQUNsQixDQ3JISSxNQUFBLENBQU8sSUFBQSxHQUFTLE9BQU8sR0FBQSxHQUN6QnpHLENBQUFBLEdBQ0FpSCxDQUFBQSxFQUFpQixDQUFBIiwiZmlsZSI6ImlmcmFtZV9wcmVsb2FkLmNqcyIsInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19wdXBfdGlja19fPzogeyBwcm9jZXNzOiAobXM6IG51bWJlcikgPT4gdm9pZCB9O1xuICB9XG59XG5cbmludGVyZmFjZSBUaW1lciB7XG4gIHR5cGU6IFwidGltZW91dFwiIHwgXCJpbnRlcnZhbFwiO1xuICBjYjogVGltZXJIYW5kbGVyO1xuICBkZWxheTogbnVtYmVyO1xuICBuZXh0OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBSYWZFbnRyeSB7XG4gIGlkOiBudW1iZXI7XG4gIGNiOiBGcmFtZVJlcXVlc3RDYWxsYmFjaztcbn1cblxuaW50ZXJmYWNlIEFuaW1FbnRyeSB7XG4gIHN0YXJ0TXM6IG51bWJlcjtcbiAgcGF1c2VkQWNjdW06IG51bWJlcjtcbiAgcGF1c2VkQXQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxUaWNrSG9vaygpOiB2b2lkIHtcbiAgaWYgKHdpbmRvdy5fX3B1cF90aWNrX18pIHJldHVybjtcblxuICBjb25zdCBSZWFsRGF0ZSA9IERhdGU7XG4gIGNvbnN0IGRhdGVPcmlnaW4gPSBSZWFsRGF0ZS5ub3coKTtcbiAgbGV0IGN1cnJNcyA9IDA7XG4gIGxldCB0aW1lT2Zmc2V0ID0gMDtcbiAgbGV0IHJhZlF1ZXVlOiBSYWZFbnRyeVtdID0gW107XG4gIGNvbnN0IHRpbWVyczogUmVjb3JkPG51bWJlciwgVGltZXIgfCB1bmRlZmluZWQ+ID0ge307XG4gIGxldCBuZXh0SWQgPSAxO1xuXG4gIGZ1bmN0aW9uIEZha2VEYXRlKHRoaXM6IHVua25vd24sIC4uLmFyZ3M6IHVua25vd25bXSk6IERhdGUgfCBzdHJpbmcge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBGYWtlRGF0ZSkpIHtcbiAgICAgIHJldHVybiBuZXcgUmVhbERhdGUoZGF0ZU9yaWdpbiArIGN1cnJNcykudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIGFyZ3MubGVuZ3RoXG4gICAgICA/IG5ldyAoRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYXBwbHkoUmVhbERhdGUsIFtudWxsLCAuLi5hcmdzXSkpKClcbiAgICAgIDogbmV3IFJlYWxEYXRlKGRhdGVPcmlnaW4gKyBjdXJyTXMgKyAodGltZU9mZnNldCArPSAwLjAxKSk7XG4gIH1cbiAgRmFrZURhdGUucHJvdG90eXBlID0gUmVhbERhdGUucHJvdG90eXBlO1xuICBGYWtlRGF0ZS5ub3cgPSAoKSA9PiBkYXRlT3JpZ2luICsgY3Vyck1zICsgKHRpbWVPZmZzZXQgKz0gMC4wMSk7XG4gIEZha2VEYXRlLnBhcnNlID0gUmVhbERhdGUucGFyc2U7XG4gIEZha2VEYXRlLlVUQyA9IFJlYWxEYXRlLlVUQztcbiAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgRGF0ZTogdW5rbm93biB9KS5EYXRlID0gRmFrZURhdGU7XG4gIHBlcmZvcm1hbmNlLm5vdyA9ICgpID0+IGN1cnJNcyArICh0aW1lT2Zmc2V0ICs9IDAuMDEpO1xuXG4gIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSAoY2IpID0+IHtcbiAgICBjb25zdCBpZCA9IG5leHRJZCsrO1xuICAgIHJhZlF1ZXVlLnB1c2goeyBpZCwgY2IgfSk7XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSAoaWQpID0+IHtcbiAgICByYWZRdWV1ZSA9IHJhZlF1ZXVlLmZpbHRlcigocikgPT4gci5pZCAhPT0gaWQpO1xuICB9O1xuICAod2luZG93IGFzIHVua25vd24gYXMgeyBzZXRUaW1lb3V0OiB1bmtub3duIH0pLnNldFRpbWVvdXQgPSAoY2I6IFRpbWVySGFuZGxlciwgZGVsYXk/OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpZCA9IG5leHRJZCsrO1xuICAgIHRpbWVyc1tpZF0gPSB7IHR5cGU6IFwidGltZW91dFwiLCBjYiwgZGVsYXk6IGRlbGF5IHx8IDAsIG5leHQ6IGN1cnJNcyArIChkZWxheSB8fCAwKSB9O1xuICAgIHJldHVybiBpZDtcbiAgfTtcbiAgd2luZG93LmNsZWFyVGltZW91dCA9IChpZCkgPT4ge1xuICAgIGlmICh0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpIGRlbGV0ZSB0aW1lcnNbaWRdO1xuICB9O1xuICAod2luZG93IGFzIHVua25vd24gYXMgeyBzZXRJbnRlcnZhbDogdW5rbm93biB9KS5zZXRJbnRlcnZhbCA9IChjYjogVGltZXJIYW5kbGVyLCBkZWxheT86IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGlkID0gbmV4dElkKys7XG4gICAgY29uc3QgZCA9IE1hdGgubWF4KGRlbGF5IHx8IDAsIDEpO1xuICAgIHRpbWVyc1tpZF0gPSB7IHR5cGU6IFwiaW50ZXJ2YWxcIiwgY2IsIGRlbGF5OiBkLCBuZXh0OiBjdXJyTXMgKyBkIH07XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuICB3aW5kb3cuY2xlYXJJbnRlcnZhbCA9IChpZCkgPT4ge1xuICAgIGlmICh0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpIGRlbGV0ZSB0aW1lcnNbaWRdO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNhZmVJbnZva2VUaW1lcihmbjogVGltZXJIYW5kbGVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlb2YgZm4gPT09IFwic3RyaW5nXCIpIGV2YWwoZm4pO1xuICAgICAgZWxzZSBmbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbVGlja10gZXJyb3I6XCIsIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykgfHwgZSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHNhZmVJbnZva2VSYWYoY2I6IEZyYW1lUmVxdWVzdENhbGxiYWNrLCB0czogbnVtYmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNiKHRzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiW1RpY2tdIGVycm9yOlwiLCAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHx8IGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFuaW1TdGF0ZSA9IG5ldyBXZWFrTWFwPEFuaW1hdGlvbiwgQW5pbUVudHJ5PigpO1xuICBmdW5jdGlvbiBzeW5jQW5pbWF0aW9ucyhtczogbnVtYmVyKSB7XG4gICAgbGV0IGFuaW1zOiBBbmltYXRpb25bXTtcbiAgICB0cnkge1xuICAgICAgYW5pbXMgPSBkb2N1bWVudC5nZXRBbmltYXRpb25zKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgYSBvZiBhbmltcykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBhLnBsYXlTdGF0ZTtcbiAgICAgIGlmIChzdGF0ZSA9PT0gXCJpZGxlXCIgfHwgc3RhdGUgPT09IFwiZmluaXNoZWRcIikge1xuICAgICAgICBhbmltU3RhdGUuZGVsZXRlKGEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJhdGUgPSB0eXBlb2YgYS5wbGF5YmFja1JhdGUgPT09IFwibnVtYmVyXCIgPyBhLnBsYXliYWNrUmF0ZSA6IDE7XG4gICAgICBpZiAocmF0ZSA9PT0gMCkgY29udGludWU7XG4gICAgICBsZXQgcyA9IGFuaW1TdGF0ZS5nZXQoYSk7XG4gICAgICBpZiAoIXMpIHtcbiAgICAgICAgY29uc3QgY3QwID0gdHlwZW9mIGEuY3VycmVudFRpbWUgPT09IFwibnVtYmVyXCIgPyBhLmN1cnJlbnRUaW1lIDogMDtcbiAgICAgICAgcyA9IHsgc3RhcnRNczogbXMgLSBjdDAgLyByYXRlLCBwYXVzZWRBY2N1bTogMCwgcGF1c2VkQXQ6IC0xIH07XG4gICAgICAgIGFuaW1TdGF0ZS5zZXQoYSwgcyk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUgPT09IFwicGF1c2VkXCIpIHtcbiAgICAgICAgaWYgKHMucGF1c2VkQXQgPCAwKSBzLnBhdXNlZEF0ID0gbXM7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHMucGF1c2VkQXQgPj0gMCkge1xuICAgICAgICBzLnBhdXNlZEFjY3VtICs9IG1zIC0gcy5wYXVzZWRBdDtcbiAgICAgICAgcy5wYXVzZWRBdCA9IC0xO1xuICAgICAgfVxuICAgICAgYS5jdXJyZW50VGltZSA9IChtcyAtIHMuc3RhcnRNcyAtIHMucGF1c2VkQWNjdW0pICogcmF0ZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwcm9jZXNzKHRpbWVzdGFtcE1zOiBudW1iZXIpIHtcbiAgICBjdXJyTXMgPSB0aW1lc3RhbXBNcztcbiAgICB0aW1lT2Zmc2V0ID0gMDtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRpbWVycykpIHtcbiAgICAgIGNvbnN0IHQgPSB0aW1lcnNbTnVtYmVyKGlkKV07XG4gICAgICBpZiAoIXQpIGNvbnRpbnVlO1xuICAgICAgd2hpbGUgKHQubmV4dCA8PSBjdXJyTXMpIHtcbiAgICAgICAgc2FmZUludm9rZVRpbWVyKHQuY2IpO1xuICAgICAgICBpZiAodC50eXBlID09PSBcInRpbWVvdXRcIikge1xuICAgICAgICAgIGRlbGV0ZSB0aW1lcnNbTnVtYmVyKGlkKV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdC5uZXh0ICs9IHQuZGVsYXk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJhZnMgPSByYWZRdWV1ZS5zcGxpY2UoMCk7XG4gICAgZm9yIChjb25zdCByIG9mIHJhZnMpIHNhZmVJbnZva2VSYWYoci5jYiwgY3Vyck1zKTtcbiAgICBzeW5jQW5pbWF0aW9ucyhjdXJyTXMpO1xuICB9XG5cbiAgd2luZG93Ll9fcHVwX3RpY2tfXyA9IHsgcHJvY2VzcyB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxudHlwZSBWZWM0ID0gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbmNvbnN0IE1JUlJPUl9QUk9QUyA9IFtcbiAgXCJib3JkZXJSYWRpdXNcIixcbiAgXCJib3JkZXJUb3BMZWZ0UmFkaXVzXCIsXG4gIFwiYm9yZGVyVG9wUmlnaHRSYWRpdXNcIixcbiAgXCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzXCIsXG4gIFwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXNcIixcbiAgXCJ0cmFuc2Zvcm1cIixcbiAgXCJ0cmFuc2Zvcm1PcmlnaW5cIixcbiAgXCJmaWx0ZXJcIixcbiAgXCJjbGlwUGF0aFwiLFxuICBcImJveFNoYWRvd1wiLFxuICBcIm9wYWNpdHlcIixcbiAgXCJtaXhCbGVuZE1vZGVcIixcbiAgXCJtYXNrXCIsXG4gIFwiekluZGV4XCIsXG4gIFwicG9zaXRpb25cIixcbiAgXCJsZWZ0XCIsXG4gIFwidG9wXCIsXG4gIFwicmlnaHRcIixcbiAgXCJib3R0b21cIixcbl0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGNzc0Nhc2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvW0EtWl0vZywgKGMpID0+IFwiLVwiICsgYy50b0xvd2VyQ2FzZSgpKTtcbn1cblxuLy8gVHJhY2sgdGhlIG92ZXJsYXkgY2FudmFzIHRvIHRoZSB2aWRlbyBlbGVtZW50J3MgbGl2ZSBib3ggKHBvc2l0aW9uLCBzaXplw5dkcHIsIG1pcnJvcmVkIHZpc3VhbCBzdHlsZXMpLlxuZXhwb3J0IGZ1bmN0aW9uIHN5bmNPdmVybGF5KHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBjdjogSFRNTENhbnZhc0VsZW1lbnQpOiB2b2lkIHtcbiAgY29uc3QgY3MgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh2aWRlbyk7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9ICh2aWRlby5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsKSB8fCBkb2N1bWVudC5ib2R5O1xuICBjb25zdCB2ciA9IHZpZGVvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBwciA9IG9mZnNldFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY3Yuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gIGN2LnN0eWxlLmxlZnQgPSB2ci5sZWZ0IC0gcHIubGVmdCArIFwicHhcIjtcbiAgY3Yuc3R5bGUudG9wID0gdnIudG9wIC0gcHIudG9wICsgXCJweFwiO1xuICBjdi5zdHlsZS53aWR0aCA9IHZyLndpZHRoICsgXCJweFwiO1xuICBjdi5zdHlsZS5oZWlnaHQgPSB2ci5oZWlnaHQgKyBcInB4XCI7XG4gIGZvciAoY29uc3QgcCBvZiBNSVJST1JfUFJPUFMpIHtcbiAgICBpZiAocCA9PT0gXCJwb3NpdGlvblwiIHx8IHAgPT09IFwibGVmdFwiIHx8IHAgPT09IFwidG9wXCIgfHwgcCA9PT0gXCJyaWdodFwiIHx8IHAgPT09IFwiYm90dG9tXCIpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHYgPSBjcy5nZXRQcm9wZXJ0eVZhbHVlKGNzc0Nhc2UocCkpO1xuICAgIGlmICh2KSBjdi5zdHlsZS5zZXRQcm9wZXJ0eShjc3NDYXNlKHApLCB2KTtcbiAgfVxuICBjb25zdCBkcHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICBjb25zdCB3ID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCh2ci53aWR0aCAqIGRwcikpO1xuICBjb25zdCBoID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCh2ci5oZWlnaHQgKiBkcHIpKTtcbiAgaWYgKGN2LndpZHRoICE9PSB3KSBjdi53aWR0aCA9IHc7XG4gIGlmIChjdi5oZWlnaHQgIT09IGgpIGN2LmhlaWdodCA9IGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cENhbnZhcyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc25hcDogT2Zmc2NyZWVuQ2FudmFzIHwgdW5kZWZpbmVkKTogSFRNTENhbnZhc0VsZW1lbnQge1xuICBjb25zdCBjdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGN2LmRhdGFzZXRbXCJwdXBWaWRlb092ZXJsYXlcIl0gPSBcIjFcIjtcbiAgY3Yuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwibm9uZVwiO1xuICB2aWRlby5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgdmlkZW8ubXV0ZWQgPSB0cnVlO1xuICBjb25zdCBwYXJlbnQgPSB2aWRlby5wYXJlbnROb2RlIHx8IGRvY3VtZW50LmJvZHk7XG4gIHBhcmVudC5pbnNlcnRCZWZvcmUoY3YsIHZpZGVvLm5leHRTaWJsaW5nKTtcbiAgc3luY092ZXJsYXkodmlkZW8sIGN2KTtcbiAgaWYgKHNuYXApIHtcbiAgICB0cnkge1xuICAgICAgY3YuZ2V0Q29udGV4dChcIjJkXCIpIS5kcmF3SW1hZ2Uoc25hcCwgMCwgMCwgY3Yud2lkdGgsIGN2LmhlaWdodCk7XG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBjdjtcbn1cblxuLy8gRHJhdyByZWN0IGZvciB0aGUgYml0bWFwIHdpdGhpbiB0aGUgY2FudmFzIHBlciBvYmplY3RGaXQuXG5leHBvcnQgZnVuY3Rpb24gZml0UmVjdChzcmNXOiBudW1iZXIsIHNyY0g6IG51bWJlciwgZHN0VzogbnVtYmVyLCBkc3RIOiBudW1iZXIsIGZpdDogc3RyaW5nKTogVmVjNCB7XG4gIGlmIChmaXQgPT09IFwibm9uZVwiKSByZXR1cm4gWyhkc3RXIC0gc3JjVykgLyAyLCAoZHN0SCAtIHNyY0gpIC8gMiwgc3JjVywgc3JjSF07XG4gIGlmIChmaXQgPT09IFwiY29udGFpblwiIHx8IGZpdCA9PT0gXCJzY2FsZS1kb3duXCIpIHtcbiAgICBjb25zdCBzYyA9IE1hdGgubWluKGRzdFcgLyBzcmNXLCBkc3RIIC8gc3JjSCk7XG4gICAgY29uc3QgayA9IGZpdCA9PT0gXCJzY2FsZS1kb3duXCIgPyBNYXRoLm1pbigxLCBzYykgOiBzYztcbiAgICBjb25zdCB3cyA9IGsgKiBzcmNXO1xuICAgIGNvbnN0IGhzID0gayAqIHNyY0g7XG4gICAgcmV0dXJuIFsoZHN0VyAtIHdzKSAvIDIsIChkc3RIIC0gaHMpIC8gMiwgd3MsIGhzXTtcbiAgfVxuICBpZiAoZml0ID09PSBcImNvdmVyXCIpIHtcbiAgICBjb25zdCBzYzIgPSBNYXRoLm1heChkc3RXIC8gc3JjVywgZHN0SCAvIHNyY0gpO1xuICAgIGNvbnN0IHdzMiA9IHNjMiAqIHNyY1c7XG4gICAgY29uc3QgaHMyID0gc2MyICogc3JjSDtcbiAgICByZXR1cm4gWyhkc3RXIC0gd3MyKSAvIDIsIChkc3RIIC0gaHMyKSAvIDIsIHdzMiwgaHMyXTtcbiAgfVxuICByZXR1cm4gWzAsIDAsIGRzdFcsIGRzdEhdO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuZXhwb3J0IGNvbnN0IFNDSEVNRSA9IFwicHVwLWZyYW1lOi8vXCI7XG5leHBvcnQgY29uc3QgQUhFQUQgPSAxMDtcbmV4cG9ydCBjb25zdCBUQUcgPSBcIltWaWRlb0hvb2tdXCI7XG5cbmV4cG9ydCBjb25zdCBNRURJQV9FUlJfTkVUV09SSyA9IDI7XG5leHBvcnQgY29uc3QgTUVESUFfRVJSX0RFQ09ERSA9IDM7XG5leHBvcnQgY29uc3QgSEFWRV9OT1RISU5HID0gMDtcbmV4cG9ydCBjb25zdCBIQVZFX01FVEFEQVRBID0gMTtcbmV4cG9ydCBjb25zdCBIQVZFX0VOT1VHSF9EQVRBID0gNDtcbmV4cG9ydCBjb25zdCBORVRXT1JLX0VNUFRZID0gMDtcbmV4cG9ydCBjb25zdCBORVRXT1JLX0lETEUgPSAxO1xuZXhwb3J0IGNvbnN0IE5FVFdPUktfTE9BRElORyA9IDI7XG5leHBvcnQgY29uc3QgTkVUV09SS19OT19TT1VSQ0UgPSAzO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvTWV0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBmcmFtZVdpZHRoOiBudW1iZXI7XG4gIGZyYW1lSGVpZ2h0OiBudW1iZXI7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIGZwczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvRnJhbWVNZXRhIHtcbiAgcHJlc2VudGF0aW9uVGltZTogbnVtYmVyO1xuICBleHBlY3RlZERpc3BsYXlUaW1lOiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBtZWRpYVRpbWU6IG51bWJlcjtcbiAgcHJlc2VudGVkRnJhbWVzOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEZyYW1lQ2IgPSAobm93OiBudW1iZXIsIG1ldGE6IFZpZGVvRnJhbWVNZXRhKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhRXJyb3JMaWtlIHtcbiAgY29kZTogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9DYWNoZSB7XG4gIGJpdG1hcHM6IE1hcDxudW1iZXIsIEltYWdlQml0bWFwPjtcbiAgaW5GbGlnaHQ6IE1hcDxudW1iZXIsIFByb21pc2U8SW1hZ2VCaXRtYXAgfCBudWxsPj47XG4gIHJlYWRlcnM6IE1hcDxWaWRlb1N0YXRlLCBudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvU3RhdGUge1xuICBtZXRhOiBWaWRlb01ldGEgfCBudWxsO1xuICBjdjogSFRNTENhbnZhc0VsZW1lbnQ7XG4gIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICBwYXVzZWQ6IGJvb2xlYW47XG4gIGN1cnJlbnRUaW1lOiBudW1iZXI7XG4gIGVuZGVkOiBib29sZWFuO1xuICBsYXN0RHJhd25JZHg6IG51bWJlcjtcbiAgZGVhZDogYm9vbGVhbjtcbiAgb2JqZWN0Rml0OiBzdHJpbmc7XG4gIHJlYWR5U3RhdGU6IG51bWJlcjtcbiAgbmV0d29ya1N0YXRlOiBudW1iZXI7XG4gIHNlZWtpbmc6IGJvb2xlYW47XG4gIHdhaXRpbmc6IGJvb2xlYW47XG4gIGVycm9yOiBNZWRpYUVycm9yTGlrZSB8IHVuZGVmaW5lZDtcbiAgcHJlc2VudGVkRnJhbWVzOiBudW1iZXI7XG4gIG1heFJlYWNoZWQ6IG51bWJlcjtcbiAgcnZmYzogTWFwPG51bWJlciwgRnJhbWVDYj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZVJhbmdlc0xpa2Uge1xuICBsZW5ndGg6IG51bWJlcjtcbiAgc3RhcnQoaTogbnVtYmVyKTogbnVtYmVyO1xuICBlbmQoaTogbnVtYmVyKTogbnVtYmVyO1xufVxuXG4vLyBXaG9sZSBjbGlwIGlzIGRlY29kZS1vbi1kZW1hbmQsIHNvIHRoZSBhdmFpbGFibGUgcmFuZ2UgaXMgYWx3YXlzIFswLCBlbmRdIChvbmUgVGltZVJhbmdlcyBlbnRyeSkuXG5leHBvcnQgZnVuY3Rpb24gdGltZVJhbmdlcyhlbmQ6IG51bWJlcik6IFRpbWVSYW5nZXNMaWtlIHtcbiAgcmV0dXJuIHsgbGVuZ3RoOiBlbmQgPiAwID8gMSA6IDAsIHN0YXJ0OiAoKSA9PiAwLCBlbmQ6ICgpID0+IGVuZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyZShlbDogRXZlbnRUYXJnZXQsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCh0eXBlKSk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgdHlwZSB7IFZpZGVvSG9vayB9IGZyb20gXCIuL2hvb2tcIjtcbmltcG9ydCB7IGZpdFJlY3QsIHN5bmNPdmVybGF5IH0gZnJvbSBcIi4vb3ZlcmxheVwiO1xuaW1wb3J0IHsgQUhFQUQsIGZpcmUsIHR5cGUgVmlkZW9GcmFtZU1ldGEsIHR5cGUgVmlkZW9TdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmZ1bmN0aW9uIGZpcmVGcmFtZUNhbGxiYWNrcyhzdGF0ZTogVmlkZW9TdGF0ZSk6IHZvaWQge1xuICBpZiAoc3RhdGUucnZmYy5zaXplID09PSAwKSByZXR1cm47XG4gIGNvbnN0IGNicyA9IFsuLi5zdGF0ZS5ydmZjLnZhbHVlcygpXTtcbiAgc3RhdGUucnZmYy5jbGVhcigpO1xuICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgY29uc3QgbWV0YTogVmlkZW9GcmFtZU1ldGEgPSB7XG4gICAgcHJlc2VudGF0aW9uVGltZTogbm93LFxuICAgIGV4cGVjdGVkRGlzcGxheVRpbWU6IG5vdyxcbiAgICB3aWR0aDogc3RhdGUubWV0YSEuZnJhbWVXaWR0aCxcbiAgICBoZWlnaHQ6IHN0YXRlLm1ldGEhLmZyYW1lSGVpZ2h0LFxuICAgIG1lZGlhVGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgcHJlc2VudGVkRnJhbWVzOiBzdGF0ZS5wcmVzZW50ZWRGcmFtZXMsXG4gIH07XG4gIGZvciAoY29uc3QgY2Igb2YgY2JzKSBjYihub3csIG1ldGEpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYWludChob29rOiBWaWRlb0hvb2ssIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBzdGF0ZTogVmlkZW9TdGF0ZSwgaWR4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYyA9IGhvb2suY2FjaGUuY2FjaGVPZihzdGF0ZS5tZXRhIS5pZCk7XG4gIGMucmVhZGVycy5zZXQoc3RhdGUsIGlkeCk7XG4gIGxldCBibSA9IGMuYml0bWFwcy5nZXQoaWR4KTtcbiAgaWYgKCFibSkge1xuICAgIGhvb2suY2FjaGUucHJlZmV0Y2goc3RhdGUsIGlkeCArIDEsIEFIRUFEIC0gMSk7XG4gICAgY29uc3QgZmV0Y2hlZCA9IGF3YWl0IGhvb2suY2FjaGUuZmV0Y2goc3RhdGUsIGlkeCk7XG4gICAgaWYgKGhvb2suc2Vzc2lvbnMuZ2V0KHZpZGVvKSAhPT0gc3RhdGUpIHJldHVybjtcbiAgICBpZiAoIWZldGNoZWQpIHtcbiAgICAgIGlmICghc3RhdGUucGF1c2VkICYmICFzdGF0ZS53YWl0aW5nKSB7XG4gICAgICAgIHN0YXRlLndhaXRpbmcgPSB0cnVlO1xuICAgICAgICBmaXJlKHZpZGVvLCBcIndhaXRpbmdcIik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGJtID0gZmV0Y2hlZDtcbiAgfVxuICBpZiAoc3RhdGUud2FpdGluZykge1xuICAgIHN0YXRlLndhaXRpbmcgPSBmYWxzZTtcbiAgICBpZiAoIXN0YXRlLnBhdXNlZCkgZmlyZSh2aWRlbywgXCJwbGF5aW5nXCIpO1xuICB9XG4gIGNvbnN0IGN2ID0gc3RhdGUuY3Y7XG4gIGNvbnN0IHIgPSBmaXRSZWN0KGJtLndpZHRoLCBibS5oZWlnaHQsIGN2LndpZHRoLCBjdi5oZWlnaHQsIHN0YXRlLm9iamVjdEZpdCk7XG4gIHN0YXRlLmN0eC5jbGVhclJlY3QoMCwgMCwgY3Yud2lkdGgsIGN2LmhlaWdodCk7XG4gIHN0YXRlLmN0eC5kcmF3SW1hZ2UoYm0sIHJbMF0sIHJbMV0sIHJbMl0sIHJbM10pO1xuICBzdGF0ZS5sYXN0RHJhd25JZHggPSBpZHg7XG4gIHN0YXRlLnByZXNlbnRlZEZyYW1lcysrO1xuICBmaXJlRnJhbWVDYWxsYmFja3Moc3RhdGUpO1xuICBob29rLmNhY2hlLnByZWZldGNoKHN0YXRlLCBpZHggKyAxLCBBSEVBRCk7XG4gIGhvb2suY2FjaGUuZXZpY3QoYyk7XG59XG5cbi8vIFZpcnR1YWwtdGltZSB0aWNrOiBzeW5jIG92ZXJsYXlzLCBhZHZhbmNlIGVhY2ggaG9va2VkIHZpZGVvJ3MgY2xvY2sgKGxvb3AvZW5kKSwgcGFpbnQgdGhlIGR1ZSBmcmFtZS5cbmV4cG9ydCBmdW5jdGlvbiBhZHZhbmNlKGhvb2s6IFZpZGVvSG9vaywgdGltZXN0YW1wTXM6IG51bWJlcik6IFByb21pc2U8dW5rbm93bj4ge1xuICBjb25zdCBkdCA9IE1hdGgubWF4KDAsIHRpbWVzdGFtcE1zIC0gaG9vay5jdXJyTXMpIC8gMTAwMDtcbiAgaG9vay5jdXJyTXMgPSB0aW1lc3RhbXBNcztcbiAgY29uc3QgcHM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdO1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwidmlkZW9cIikuZm9yRWFjaCgoZWwpID0+IHtcbiAgICBjb25zdCB2aWRlbyA9IGVsIGFzIEhUTUxWaWRlb0VsZW1lbnQ7XG4gICAgY29uc3Qgc3RhdGUgPSBob29rLnNlc3Npb25zLmdldCh2aWRlbyk7XG4gICAgaWYgKCFzdGF0ZSB8fCBzdGF0ZS5kZWFkKSByZXR1cm47XG4gICAgc3luY092ZXJsYXkodmlkZW8sIHN0YXRlLmN2KTtcbiAgICBpZiAoIXN0YXRlLm1ldGEpIHJldHVybjtcbiAgICAvLyBFbGVtZW50IGdyZXcgcGFzdCB0aGUgZGVjb2RlZCAoZG93bnNjYWxlZCkgcmVzIOKGkiByZS1kZWNvZGUgYXQgbmF0aXZlLCBvbmUtc2hvdCAoY292ZXJzIHpvb20pLlxuICAgIGlmIChcbiAgICAgIHN0YXRlLm1ldGEuZnJhbWVXaWR0aCA8IHN0YXRlLm1ldGEud2lkdGggJiZcbiAgICAgIHN0YXRlLmN2LndpZHRoID4gc3RhdGUubWV0YS5mcmFtZVdpZHRoICogMS4wNSAmJlxuICAgICAgIWhvb2suYXR0YWNoaW5nLmhhcyh2aWRlbylcbiAgICApIHtcbiAgICAgIGhvb2sucmVhdHRhY2godmlkZW8sIHN0YXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFzdGF0ZS5wYXVzZWQgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICBzdGF0ZS5jdXJyZW50VGltZSArPSBkdCAqICh2aWRlby5wbGF5YmFja1JhdGUgfHwgMSk7XG4gICAgICBzdGF0ZS5tYXhSZWFjaGVkID0gTWF0aC5tYXgoc3RhdGUubWF4UmVhY2hlZCwgc3RhdGUuY3VycmVudFRpbWUpO1xuICAgICAgaWYgKHN0YXRlLmN1cnJlbnRUaW1lID49IHN0YXRlLm1ldGEuZHVyYXRpb24pIHtcbiAgICAgICAgaWYgKHZpZGVvLmxvb3ApIHtcbiAgICAgICAgICBzdGF0ZS5jdXJyZW50VGltZSA9IHN0YXRlLmN1cnJlbnRUaW1lICUgc3RhdGUubWV0YS5kdXJhdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZS5jdXJyZW50VGltZSA9IHN0YXRlLm1ldGEuZHVyYXRpb247XG4gICAgICAgICAgc3RhdGUucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgICAgICAgZmlyZSh2aWRlbywgXCJlbmRlZFwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlyZSh2aWRlbywgXCJ0aW1ldXBkYXRlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBpZHggPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHN0YXRlLmN1cnJlbnRUaW1lICogc3RhdGUubWV0YS5mcHMpKTtcbiAgICBpZiAoaWR4ID09PSBzdGF0ZS5sYXN0RHJhd25JZHgpIHJldHVybjtcbiAgICBwcy5wdXNoKHBhaW50KGhvb2ssIHZpZGVvLCBzdGF0ZSwgaWR4KSk7XG4gIH0pO1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHMpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuaW1wb3J0IHsgU0NIRU1FLCB0eXBlIFZpZGVvQ2FjaGUsIHR5cGUgVmlkZW9TdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8vIFBlci1zZXNzaW9uIGJpdG1hcCBjYWNoZTogZmV0Y2hlcyBSR0JBIGZyYW1lcyBmcm9tIHRoZSBmcmFtZSBwcm90b2NvbCwgZGVkdXBlcyBpbi1mbGlnaHQsIGV2aWN0cyBiZWhpbmQgcmVhZGVycy5cbmV4cG9ydCBjbGFzcyBGcmFtZUNhY2hlIHtcbiAgcHJpdmF0ZSBjYWNoZXMgPSBuZXcgTWFwPHN0cmluZywgVmlkZW9DYWNoZT4oKTtcblxuICBjYWNoZU9mKGlkOiBzdHJpbmcpOiBWaWRlb0NhY2hlIHtcbiAgICBsZXQgYyA9IHRoaXMuY2FjaGVzLmdldChpZCk7XG4gICAgaWYgKCFjKSB7XG4gICAgICBjID0geyBiaXRtYXBzOiBuZXcgTWFwKCksIGluRmxpZ2h0OiBuZXcgTWFwKCksIHJlYWRlcnM6IG5ldyBNYXAoKSB9O1xuICAgICAgdGhpcy5jYWNoZXMuc2V0KGlkLCBjKTtcbiAgICB9XG4gICAgcmV0dXJuIGM7XG4gIH1cblxuICBmZXRjaChzdGF0ZTogVmlkZW9TdGF0ZSwgaWR4OiBudW1iZXIpOiBQcm9taXNlPEltYWdlQml0bWFwIHwgbnVsbD4ge1xuICAgIGNvbnN0IGMgPSB0aGlzLmNhY2hlT2Yoc3RhdGUubWV0YSEuaWQpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYy5pbkZsaWdodC5nZXQoaWR4KTtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcbiAgICBjb25zdCBjYWNoZWQgPSBjLmJpdG1hcHMuZ2V0KGlkeCk7XG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjYWNoZWQpO1xuICAgIGNvbnN0IHcgPSBzdGF0ZS5tZXRhIS5mcmFtZVdpZHRoO1xuICAgIGNvbnN0IGggPSBzdGF0ZS5tZXRhIS5mcmFtZUhlaWdodDtcbiAgICBjb25zdCBwID0gZmV0Y2goU0NIRU1FICsgXCJmcmFtZT9pZD1cIiArIHN0YXRlLm1ldGEhLmlkICsgXCImaWR4PVwiICsgaWR4KVxuICAgICAgLnRoZW4oKHIpID0+IChyLm9rID8gci5hcnJheUJ1ZmZlcigpIDogbnVsbCkpXG4gICAgICAudGhlbigoYnVmKSA9PlxuICAgICAgICBidWYgJiYgYnVmLmJ5dGVMZW5ndGggPT09IHcgKiBoICogNCA/IGNyZWF0ZUltYWdlQml0bWFwKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGJ1ZiksIHcsIGgpKSA6IG51bGwsXG4gICAgICApXG4gICAgICAudGhlbigoYm0pID0+IHtcbiAgICAgICAgYy5pbkZsaWdodC5kZWxldGUoaWR4KTtcbiAgICAgICAgaWYgKGJtKSBjLmJpdG1hcHMuc2V0KGlkeCwgYm0pO1xuICAgICAgICByZXR1cm4gYm07XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgYy5pbkZsaWdodC5kZWxldGUoaWR4KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICBjLmluRmxpZ2h0LnNldChpZHgsIHApO1xuICAgIHJldHVybiBwO1xuICB9XG5cbiAgcHJlZmV0Y2goc3RhdGU6IFZpZGVvU3RhdGUsIGZyb21JZHg6IG51bWJlciwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1heElkeCA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQoc3RhdGUubWV0YSEuZHVyYXRpb24gKiBzdGF0ZS5tZXRhIS5mcHMpKTtcbiAgICBmb3IgKGxldCBpID0gZnJvbUlkeDsgaSA8IGZyb21JZHggKyBjb3VudDsgaSsrKSB7XG4gICAgICBpZiAoaSA8IDEgfHwgaSA+IG1heElkeCkgY29udGludWU7XG4gICAgICB2b2lkIHRoaXMuZmV0Y2goc3RhdGUsIGkpO1xuICAgIH1cbiAgfVxuXG4gIGV2aWN0KGM6IFZpZGVvQ2FjaGUpOiB2b2lkIHtcbiAgICBsZXQgbWluSWR4ID0gSW5maW5pdHk7XG4gICAgYy5yZWFkZXJzLmZvckVhY2goKGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA8IG1pbklkeCkgbWluSWR4ID0gaWR4O1xuICAgIH0pO1xuICAgIGlmICghaXNGaW5pdGUobWluSWR4KSkgcmV0dXJuO1xuICAgIGNvbnN0IGZsb29yID0gbWluSWR4IC0gMjtcbiAgICBjLmJpdG1hcHMuZm9yRWFjaCgoYm0sIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA8IGZsb29yKSB7XG4gICAgICAgIGJtLmNsb3NlKCk7XG4gICAgICAgIGMuYml0bWFwcy5kZWxldGUoaWR4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIERyb3AgYSByZWFkZXI7IHdoZW4gdGhlIGxhc3QgbGVhdmVzLCBjbG9zZSBiaXRtYXBzIGFuZCB0ZWxsIHRoZSBzZXJ2ZXIgdG8gcmVsZWFzZSB0aGUgZGVjb2RlIHNlc3Npb24uXG4gIHJlbGVhc2UoaWQ6IHN0cmluZywgc3RhdGU6IFZpZGVvU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBjID0gdGhpcy5jYWNoZXMuZ2V0KGlkKTtcbiAgICBpZiAoIWMpIHJldHVybjtcbiAgICBjLnJlYWRlcnMuZGVsZXRlKHN0YXRlKTtcbiAgICBpZiAoYy5yZWFkZXJzLnNpemUgPiAwKSByZXR1cm47XG4gICAgYy5iaXRtYXBzLmZvckVhY2goKGJtKSA9PiBibS5jbG9zZSgpKTtcbiAgICB0aGlzLmNhY2hlcy5kZWxldGUoaWQpO1xuICAgIGZldGNoKFNDSEVNRSArIFwiY2xvc2U/aWQ9XCIgKyBpZCwgeyBrZWVwYWxpdmU6IHRydWUgfSk7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDYvMDIuXG5cbmltcG9ydCB0eXBlIHsgVmlkZW9Ib29rIH0gZnJvbSBcIi4vaG9va1wiO1xuaW1wb3J0IHsgZmlyZSwgdGltZVJhbmdlcywgdHlwZSBGcmFtZUNiLCB0eXBlIFZpZGVvU3RhdGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vLyBPdmVycmlkZSB0aGUgSFRNTE1lZGlhRWxlbWVudCBzdXJmYWNlIGZvciBob29rZWQgPHZpZGVvPjsgdW5ob29rZWQgZWxlbWVudHMgZmFsbCB0aHJvdWdoIHRvIG5hdGl2ZS5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsTWVkaWFTaGltKGhvb2s6IFZpZGVvSG9vayk6IHZvaWQge1xuICBjb25zdCBIVkUgPSBIVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZTtcbiAgY29uc3QgTUVESUEgPSBIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZTtcbiAgY29uc3QgbWRlc2MgPSAocDogc3RyaW5nKSA9PiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhWRSwgcCkgfHwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihNRURJQSwgcCk7XG4gIGNvbnN0IGN0RGVzYyA9IG1kZXNjKFwiY3VycmVudFRpbWVcIik7XG4gIGNvbnN0IHNyY0Rlc2MgPSBtZGVzYyhcInNyY1wiKTtcbiAgY29uc3QgcmF0ZURlc2MgPSBtZGVzYyhcInBsYXliYWNrUmF0ZVwiKTtcbiAgY29uc3Qgb3JpZ1BhdXNlID0gSFZFLnBhdXNlO1xuICBjb25zdCBvcmlnUlZGQyA9IEhWRS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrO1xuICBjb25zdCBvcmlnQ2FuY2VsUlZGQyA9IEhWRS5jYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2s7XG4gIGNvbnN0IG9yaWdRdWFsaXR5ID0gSFZFLmdldFZpZGVvUGxheWJhY2tRdWFsaXR5O1xuICBjb25zdCBvcmlnTG9hZCA9IEhWRS5sb2FkO1xuICBjb25zdCBzZXNzaW9ucyA9IGhvb2suc2Vzc2lvbnM7XG5cbiAgLy8gU2Vzc2lvbi1iYWNrZWQgcmVhZC1vbmx5IHByb3BlcnR5IHdpdGggbmF0aXZlIGZhbGxiYWNrIHdoZW4gdGhlIGVsZW1lbnQgaXNuJ3QgaG9va2VkLlxuICBjb25zdCBkZWYgPSAocHJvcDogc3RyaW5nLCBwaWNrOiAoczogVmlkZW9TdGF0ZSkgPT4gdW5rbm93bikgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZSA9IG1kZXNjKHByb3ApO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVkUsIHByb3AsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgICAgIHJldHVybiBzID8gcGljayhzKSA6IG5hdGl2ZSEuZ2V0IS5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcbiAgZGVmKFwicGF1c2VkXCIsIChzKSA9PiBzLnBhdXNlZCk7XG4gIGRlZihcImVuZGVkXCIsIChzKSA9PiBzLmVuZGVkKTtcbiAgZGVmKFwicmVhZHlTdGF0ZVwiLCAocykgPT4gcy5yZWFkeVN0YXRlKTtcbiAgZGVmKFwibmV0d29ya1N0YXRlXCIsIChzKSA9PiBzLm5ldHdvcmtTdGF0ZSk7XG4gIGRlZihcImVycm9yXCIsIChzKSA9PiBzLmVycm9yID8/IG51bGwpO1xuICBkZWYoXCJzZWVraW5nXCIsIChzKSA9PiBzLnNlZWtpbmcpO1xuICBkZWYoXCJidWZmZXJlZFwiLCAocykgPT4gdGltZVJhbmdlcyhzLm1ldGEgPyBzLm1ldGEuZHVyYXRpb24gOiAwKSk7XG4gIGRlZihcInNlZWthYmxlXCIsIChzKSA9PiB0aW1lUmFuZ2VzKHMubWV0YSA/IHMubWV0YS5kdXJhdGlvbiA6IDApKTtcbiAgZGVmKFwicGxheWVkXCIsIChzKSA9PiB0aW1lUmFuZ2VzKHMubWF4UmVhY2hlZCkpO1xuXG4gIEhWRS5wbGF5ID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcylcbiAgICAgIHJldHVybiBob29rLmF0dGFjaCh0aGlzKS50aGVuKChucykgPT4ge1xuICAgICAgICBpZiAobnMpIGhvb2sucmVzdW1lKHRoaXMsIG5zKTtcbiAgICAgIH0pO1xuICAgIGhvb2sucmVzdW1lKHRoaXMsIHMpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfTtcbiAgSFZFLnBhdXNlID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgb3JpZ1BhdXNlLmNhbGwodGhpcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghcy5wYXVzZWQpIHtcbiAgICAgIHMucGF1c2VkID0gdHJ1ZTtcbiAgICAgIGZpcmUodGhpcywgXCJwYXVzZVwiKTtcbiAgICB9XG4gIH07XG4gIGlmIChjdERlc2MpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFZFLCBcImN1cnJlbnRUaW1lXCIsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgICAgIHJldHVybiBzID8gcy5jdXJyZW50VGltZSA6IGN0RGVzYy5nZXQhLmNhbGwodGhpcyk7XG4gICAgICB9LFxuICAgICAgc2V0KHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQsIHQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICBjdERlc2Muc2V0IS5jYWxsKHRoaXMsIHQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkdXIgPSBzLm1ldGEgPyBzLm1ldGEuZHVyYXRpb24gOiB0O1xuICAgICAgICBzLmN1cnJlbnRUaW1lID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odCwgZHVyKSk7XG4gICAgICAgIHMubWF4UmVhY2hlZCA9IE1hdGgubWF4KHMubWF4UmVhY2hlZCwgcy5jdXJyZW50VGltZSk7XG4gICAgICAgIGlmIChzLmN1cnJlbnRUaW1lIDwgZHVyKSBzLmVuZGVkID0gZmFsc2U7XG4gICAgICAgIHMuc2Vla2luZyA9IHRydWU7XG4gICAgICAgIGZpcmUodGhpcywgXCJzZWVraW5nXCIpO1xuICAgICAgICBzLnNlZWtpbmcgPSBmYWxzZTtcbiAgICAgICAgZmlyZSh0aGlzLCBcInNlZWtlZFwiKTtcbiAgICAgICAgZmlyZSh0aGlzLCBcInRpbWV1cGRhdGVcIik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGlmIChyYXRlRGVzYyAmJiByYXRlRGVzYy5zZXQpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFZFLCBcInBsYXliYWNrUmF0ZVwiLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IHJhdGVEZXNjLmdldCxcbiAgICAgIHNldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCByOiBudW1iZXIpIHtcbiAgICAgICAgcmF0ZURlc2Muc2V0IS5jYWxsKHRoaXMsIHIpO1xuICAgICAgICBpZiAoc2Vzc2lvbnMuaGFzKHRoaXMpKSBmaXJlKHRoaXMsIFwicmF0ZWNoYW5nZVwiKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgSFZFLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCwgY2IpOiBudW1iZXIge1xuICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgaWYgKCFzKSByZXR1cm4gb3JpZ1JWRkMuY2FsbCh0aGlzLCBjYik7XG4gICAgY29uc3QgaWQgPSArK2hvb2sucnZmY1NlcTtcbiAgICBzLnJ2ZmMuc2V0KGlkLCBjYiBhcyBGcmFtZUNiKTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG4gIEhWRS5jYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2sgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCwgaWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgaWYgKCFzKSByZXR1cm4gb3JpZ0NhbmNlbFJWRkMuY2FsbCh0aGlzLCBpZCk7XG4gICAgcy5ydmZjLmRlbGV0ZShpZCk7XG4gIH07XG4gIEhWRS5nZXRWaWRlb1BsYXliYWNrUXVhbGl0eSA9IGZ1bmN0aW9uICh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICBpZiAoIXMpIHJldHVybiBvcmlnUXVhbGl0eS5jYWxsKHRoaXMpO1xuICAgIHJldHVybiB7XG4gICAgICBjcmVhdGlvblRpbWU6IHBlcmZvcm1hbmNlLm5vdygpLFxuICAgICAgdG90YWxWaWRlb0ZyYW1lczogcy5wcmVzZW50ZWRGcmFtZXMsXG4gICAgICBkcm9wcGVkVmlkZW9GcmFtZXM6IDAsXG4gICAgICBjb3JydXB0ZWRWaWRlb0ZyYW1lczogMCxcbiAgICB9IGFzIFZpZGVvUGxheWJhY2tRdWFsaXR5O1xuICB9O1xuICBIVkUubG9hZCA9IGZ1bmN0aW9uICh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgaWYgKCFzZXNzaW9ucy5oYXModGhpcykpIHJldHVybiBvcmlnTG9hZC5jYWxsKHRoaXMpO1xuICAgIGhvb2suZGV0YWNoKHRoaXMpO1xuICAgIGZpcmUodGhpcywgXCJlbXB0aWVkXCIpO1xuICAgIHRoaXMuX19wdXBMYXN0U3JjID0gdW5kZWZpbmVkO1xuICAgIGhvb2suYXR0YWNoKHRoaXMpO1xuICB9O1xuICBpZiAoc3JjRGVzYyAmJiBzcmNEZXNjLnNldCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVkUsIFwic3JjXCIsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogc3JjRGVzYy5nZXQsXG4gICAgICBzZXQodGhpczogSFRNTFZpZGVvRWxlbWVudCwgdjogc3RyaW5nKSB7XG4gICAgICAgIHNyY0Rlc2Muc2V0IS5jYWxsKHRoaXMsIHYpO1xuICAgICAgICBob29rLm9uU3JjQ2hhbmdlKHRoaXMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuaW1wb3J0IHR5cGUgeyBWaWRlb0hvb2sgfSBmcm9tIFwiLi9ob29rXCI7XG5pbXBvcnQge1xuICBBSEVBRCxcbiAgZmlyZSxcbiAgSEFWRV9FTk9VR0hfREFUQSxcbiAgSEFWRV9NRVRBREFUQSxcbiAgSEFWRV9OT1RISU5HLFxuICBNRURJQV9FUlJfREVDT0RFLFxuICBNRURJQV9FUlJfTkVUV09SSyxcbiAgTkVUV09SS19FTVBUWSxcbiAgTkVUV09SS19JRExFLFxuICBORVRXT1JLX0xPQURJTkcsXG4gIE5FVFdPUktfTk9fU09VUkNFLFxuICBTQ0hFTUUsXG4gIFRBRyxcbiAgdHlwZSBNZWRpYUVycm9yTGlrZSxcbiAgdHlwZSBWaWRlb01ldGEsXG4gIHR5cGUgVmlkZW9TdGF0ZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdHRhY2hBcmdzIHtcbiAgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHN0YXRlOiBWaWRlb1N0YXRlO1xuICBzcmM6IHN0cmluZztcbiAgYmlydGhNczogbnVtYmVyO1xuICBuYXRpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdWaWRlb1N0YXRlKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBjdjogSFRNTENhbnZhc0VsZW1lbnQpOiBWaWRlb1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBtZXRhOiBudWxsLFxuICAgIGN2LFxuICAgIGN0eDogY3YuZ2V0Q29udGV4dChcIjJkXCIpISxcbiAgICBwYXVzZWQ6ICEodmlkZW8uYXV0b3BsYXkgfHwgIXZpZGVvLnBhdXNlZCksXG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgZW5kZWQ6IGZhbHNlLFxuICAgIGxhc3REcmF3bklkeDogLTEsXG4gICAgZGVhZDogZmFsc2UsXG4gICAgb2JqZWN0Rml0OiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh2aWRlbykub2JqZWN0Rml0IHx8IFwiZmlsbFwiLFxuICAgIHJlYWR5U3RhdGU6IEhBVkVfTk9USElORyxcbiAgICBuZXR3b3JrU3RhdGU6IE5FVFdPUktfRU1QVFksXG4gICAgc2Vla2luZzogZmFsc2UsXG4gICAgd2FpdGluZzogZmFsc2UsXG4gICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICBwcmVzZW50ZWRGcmFtZXM6IDAsXG4gICAgbWF4UmVhY2hlZDogMCxcbiAgICBydmZjOiBuZXcgTWFwKCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGZhaWxPcGVuKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBzdGF0ZTogVmlkZW9TdGF0ZSwgZXJyb3I6IE1lZGlhRXJyb3JMaWtlKTogbnVsbCB7XG4gIHN0YXRlLmRlYWQgPSB0cnVlO1xuICBzdGF0ZS5lcnJvciA9IGVycm9yO1xuICBzdGF0ZS5uZXR3b3JrU3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTtcbiAgY29uc29sZS53YXJuKFRBRywgZXJyb3IubWVzc2FnZSArIFwiIHNyYz1cIiArICh2aWRlby5zcmMgfHwgdmlkZW8uY3VycmVudFNyYykpO1xuICBmaXJlKHZpZGVvLCBcImVycm9yXCIpO1xuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gT3BlbiB0aGUgZnJhbWUgc2VydmVyIHNlc3Npb24sIHRoZW4gZW1pdCB0aGUgSFRNTE1lZGlhRWxlbWVudCBsb2FkIHNlcXVlbmNlIChyZWFkeVN0YXRlL25ldHdvcmtTdGF0ZSArIGV2ZW50cykuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlblNlc3Npb24oaG9vazogVmlkZW9Ib29rLCBhcmdzOiBBdHRhY2hBcmdzKTogUHJvbWlzZTxWaWRlb1N0YXRlIHwgbnVsbD4ge1xuICBjb25zdCB7IHZpZGVvLCBzdGF0ZSwgc3JjLCBiaXJ0aE1zLCBuYXRpdmUgfSA9IGFyZ3M7XG4gIGNvbnN0IGZwcyA9IE51bWJlci5wYXJzZUludCh2aWRlby5kYXRhc2V0W1wicHVwRnBzXCJdIHx8IFwiMzBcIiwgMTApO1xuICBzdGF0ZS5uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0xPQURJTkc7XG4gIGZpcmUodmlkZW8sIFwibG9hZHN0YXJ0XCIpO1xuICBsZXQgcmVzOiBSZXNwb25zZTtcbiAgdHJ5IHtcbiAgICBjb25zdCBxID0gbmF0aXZlXG4gICAgICA/IFwiXCJcbiAgICAgIDogXCImdz1cIiArIHN0YXRlLmN2LndpZHRoICsgXCImaD1cIiArIHN0YXRlLmN2LmhlaWdodCArIFwiJmZpdD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzdGF0ZS5vYmplY3RGaXQpO1xuICAgIHJlcyA9IGF3YWl0IGZldGNoKFNDSEVNRSArIFwib3Blbj9zcmM9XCIgKyBlbmNvZGVVUklDb21wb25lbnQoc3JjKSArIFwiJmZwcz1cIiArIGZwcyArIHEpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhaWxPcGVuKHZpZGVvLCBzdGF0ZSwge1xuICAgICAgY29kZTogTUVESUFfRVJSX05FVFdPUkssXG4gICAgICBtZXNzYWdlOiBcIm9wZW4gZmFpbGVkOiBcIiArIChlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpLFxuICAgIH0pO1xuICB9XG4gIGlmIChob29rLnNlc3Npb25zLmdldCh2aWRlbykgIT09IHN0YXRlKSByZXR1cm4gbnVsbDtcbiAgaWYgKCFyZXMub2spIHtcbiAgICByZXR1cm4gZmFpbE9wZW4odmlkZW8sIHN0YXRlLCB7XG4gICAgICBjb2RlOiBNRURJQV9FUlJfREVDT0RFLFxuICAgICAgbWVzc2FnZTogXCJvcGVuIFwiICsgcmVzLnN0YXR1cyArIFwiOiBcIiArIChhd2FpdCByZXMudGV4dCgpKSxcbiAgICB9KTtcbiAgfVxuICBjb25zdCBtZXRhID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFZpZGVvTWV0YTtcbiAgaWYgKGhvb2suc2Vzc2lvbnMuZ2V0KHZpZGVvKSAhPT0gc3RhdGUpIHJldHVybiBudWxsO1xuICBzdGF0ZS5tZXRhID0gbWV0YTtcbiAgc3RhdGUuY3VycmVudFRpbWUgPSBzdGF0ZS5wYXVzZWQgPyAwIDogTWF0aC5tYXgoMCwgKGhvb2suY3Vyck1zIC0gYmlydGhNcykgLyAxMDAwKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZpZGVvLCBcInZpZGVvV2lkdGhcIiwgeyB2YWx1ZTogbWV0YS53aWR0aCwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmlkZW8sIFwidmlkZW9IZWlnaHRcIiwgeyB2YWx1ZTogbWV0YS5oZWlnaHQsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZpZGVvLCBcImR1cmF0aW9uXCIsIHsgdmFsdWU6IG1ldGEuZHVyYXRpb24sIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgc3RhdGUucmVhZHlTdGF0ZSA9IEhBVkVfTUVUQURBVEE7XG4gIGZpcmUodmlkZW8sIFwiZHVyYXRpb25jaGFuZ2VcIik7XG4gIGZpcmUodmlkZW8sIFwibG9hZGVkbWV0YWRhdGFcIik7XG4gIHN0YXRlLnJlYWR5U3RhdGUgPSBIQVZFX0VOT1VHSF9EQVRBO1xuICBmaXJlKHZpZGVvLCBcImxvYWRlZGRhdGFcIik7XG4gIGZpcmUodmlkZW8sIFwiY2FucGxheVwiKTtcbiAgZmlyZSh2aWRlbywgXCJjYW5wbGF5dGhyb3VnaFwiKTtcbiAgc3RhdGUubmV0d29ya1N0YXRlID0gTkVUV09SS19JRExFO1xuICBmaXJlKHZpZGVvLCBcInN1c3BlbmRcIik7XG4gIGlmICghc3RhdGUucGF1c2VkKSB7XG4gICAgZmlyZSh2aWRlbywgXCJwbGF5XCIpO1xuICAgIGZpcmUodmlkZW8sIFwicGxheWluZ1wiKTtcbiAgfVxuICBob29rLmNhY2hlLnByZWZldGNoKHN0YXRlLCAxLCBBSEVBRCk7XG4gIHJldHVybiBzdGF0ZTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDYvMDIuXG5cbmltcG9ydCB7IGFkdmFuY2UgfSBmcm9tIFwiLi9kcml2ZXJcIjtcbmltcG9ydCB7IEZyYW1lQ2FjaGUgfSBmcm9tIFwiLi9mcmFtZV9jYWNoZVwiO1xuaW1wb3J0IHsgaW5zdGFsbE1lZGlhU2hpbSB9IGZyb20gXCIuL21lZGlhX3NoaW1cIjtcbmltcG9ydCB7IHNldHVwQ2FudmFzIH0gZnJvbSBcIi4vb3ZlcmxheVwiO1xuaW1wb3J0IHsgbmV3VmlkZW9TdGF0ZSwgb3BlblNlc3Npb24gfSBmcm9tIFwiLi9zZXNzaW9uXCI7XG5pbXBvcnQgeyBmaXJlLCB0eXBlIFZpZGVvU3RhdGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fcHVwX3ZpZGVvX18/OiB7IGFkdmFuY2U6IChtczogbnVtYmVyKSA9PiBQcm9taXNlPHVua25vd24+IH07XG4gIH1cbiAgaW50ZXJmYWNlIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIF9fcHVwTGFzdFNyYz86IHN0cmluZztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmlkZW9Ib29rIHtcbiAgcmVhZG9ubHkgc2Vzc2lvbnMgPSBuZXcgV2Vha01hcDxIVE1MVmlkZW9FbGVtZW50LCBWaWRlb1N0YXRlPigpO1xuICByZWFkb25seSBhdHRhY2hpbmcgPSBuZXcgV2Vha01hcDxIVE1MVmlkZW9FbGVtZW50LCBQcm9taXNlPFZpZGVvU3RhdGUgfCBudWxsPj4oKTtcbiAgcmVhZG9ubHkgY2FjaGUgPSBuZXcgRnJhbWVDYWNoZSgpO1xuICBydmZjU2VxID0gMDtcbiAgY3Vyck1zID0gMDtcbiAgcHJpdmF0ZSBsYXN0U25hcHNob3QgPSBuZXcgV2Vha01hcDxIVE1MVmlkZW9FbGVtZW50LCBPZmZzY3JlZW5DYW52YXM+KCk7XG5cbiAgaW5zdGFsbCgpOiB2b2lkIHtcbiAgICBpbnN0YWxsTWVkaWFTaGltKHRoaXMpO1xuICAgIHRoaXMuc2Nhbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO1xuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRzKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG0gb2YgbXV0cykge1xuICAgICAgICBpZiAobS50eXBlID09PSBcImF0dHJpYnV0ZXNcIiAmJiBtLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQgJiYgbS5hdHRyaWJ1dGVOYW1lID09PSBcInNyY1wiKSB7XG4gICAgICAgICAgdGhpcy5vblNyY0NoYW5nZShtLnRhcmdldCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbS5hZGRlZE5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIEVsZW1lbnQpIHRoaXMuc2NhbihuKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG0ucmVtb3ZlZE5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpIHRoaXMuZGV0YWNoKG4pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KS5vYnNlcnZlKGRvY3VtZW50LCB7IHN1YnRyZWU6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbXCJzcmNcIl0gfSk7XG4gICAgd2luZG93Ll9fcHVwX3ZpZGVvX18gPSB7IGFkdmFuY2U6IChtcykgPT4gYWR2YW5jZSh0aGlzLCBtcykgfTtcbiAgfVxuXG4gIGF0dGFjaCh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgbmF0aXZlID0gZmFsc2UpOiBQcm9taXNlPFZpZGVvU3RhdGUgfCBudWxsPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLnNlc3Npb25zLmdldCh2aWRlbyk7XG4gICAgaWYgKGV4aXN0aW5nKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGV4aXN0aW5nKTtcbiAgICBjb25zdCBwZW5kaW5nID0gdGhpcy5hdHRhY2hpbmcuZ2V0KHZpZGVvKTtcbiAgICBpZiAocGVuZGluZykgcmV0dXJuIHBlbmRpbmc7XG4gICAgY29uc3Qgc3JjID0gdmlkZW8uc3JjIHx8IHZpZGVvLmN1cnJlbnRTcmM7XG4gICAgaWYgKCFzcmMpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgaWYgKC9eKGJsb2I6fGRhdGE6fG1lZGlhc3RyZWFtOikvaS50ZXN0KHNyYykpIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgY29uc3QgY3YgPSBzZXR1cENhbnZhcyh2aWRlbywgdGhpcy5sYXN0U25hcHNob3QuZ2V0KHZpZGVvKSk7XG4gICAgY29uc3Qgc3RhdGUgPSBuZXdWaWRlb1N0YXRlKHZpZGVvLCBjdik7XG4gICAgdGhpcy5zZXNzaW9ucy5zZXQodmlkZW8sIHN0YXRlKTtcbiAgICBjb25zdCBwID0gb3BlblNlc3Npb24odGhpcywgeyB2aWRlbywgc3RhdGUsIHNyYywgYmlydGhNczogdGhpcy5jdXJyTXMsIG5hdGl2ZSB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMuYXR0YWNoaW5nLmRlbGV0ZSh2aWRlbyk7XG4gICAgfSk7XG4gICAgdGhpcy5hdHRhY2hpbmcuc2V0KHZpZGVvLCBwKTtcbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIHJlc3VtZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc3RhdGU6IFZpZGVvU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAoIXN0YXRlLnBhdXNlZCAmJiAhc3RhdGUuZW5kZWQpIHJldHVybjtcbiAgICBzdGF0ZS5wYXVzZWQgPSBmYWxzZTtcbiAgICBzdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIGZpcmUodmlkZW8sIFwicGxheVwiKTtcbiAgICBmaXJlKHZpZGVvLCBcInBsYXlpbmdcIik7XG4gIH1cblxuICBkZXRhY2godmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHZpZGVvKTtcbiAgICBpZiAoIXN0YXRlKSByZXR1cm47XG4gICAgaWYgKHN0YXRlLm1ldGEpIHtcbiAgICAgIGlmIChzdGF0ZS5sYXN0RHJhd25JZHggPj0gMCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHNuYXAgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHN0YXRlLmN2LndpZHRoLCBzdGF0ZS5jdi5oZWlnaHQpO1xuICAgICAgICAgIHNuYXAuZ2V0Q29udGV4dChcIjJkXCIpIS5kcmF3SW1hZ2Uoc3RhdGUuY3YsIDAsIDApO1xuICAgICAgICAgIHRoaXMubGFzdFNuYXBzaG90LnNldCh2aWRlbywgc25hcCk7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICAgIHRoaXMuY2FjaGUucmVsZWFzZShzdGF0ZS5tZXRhLmlkLCBzdGF0ZSk7XG4gICAgfVxuICAgIHN0YXRlLmN2LnJlbW92ZSgpO1xuICAgIHRoaXMuc2Vzc2lvbnMuZGVsZXRlKHZpZGVvKTtcbiAgICB0aGlzLmF0dGFjaGluZy5kZWxldGUodmlkZW8pO1xuICB9XG5cbiAgb25TcmNDaGFuZ2UodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzcmMgPSB2aWRlby5zcmMgfHwgdmlkZW8uY3VycmVudFNyYyB8fCBcIlwiO1xuICAgIGlmICh2aWRlby5fX3B1cExhc3RTcmMgPT09IHNyYykgcmV0dXJuO1xuICAgIHZpZGVvLl9fcHVwTGFzdFNyYyA9IHNyYztcbiAgICBpZiAodGhpcy5zZXNzaW9ucy5oYXModmlkZW8pKSB0aGlzLmRldGFjaCh2aWRlbyk7XG4gICAgdGhpcy5hdHRhY2godmlkZW8pO1xuICB9XG5cbiAgLy8gUmUtb3BlbiBhdCBuYXRpdmUgcmVzb2x1dGlvbiAodGhlIGVsZW1lbnQgb3V0Z3JldyB0aGUgZG93bnNjYWxlZCBkZWNvZGUpLCBwcmVzZXJ2aW5nIHBsYXliYWNrIHN0YXRlLlxuICByZWF0dGFjaCh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc3RhdGU6IFZpZGVvU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCB0ID0gc3RhdGUuY3VycmVudFRpbWU7XG4gICAgY29uc3QgcGF1c2VkID0gc3RhdGUucGF1c2VkO1xuICAgIGNvbnN0IGVuZGVkID0gc3RhdGUuZW5kZWQ7XG4gICAgdGhpcy5kZXRhY2godmlkZW8pO1xuICAgIHZvaWQgdGhpcy5hdHRhY2godmlkZW8sIHRydWUpLnRoZW4oKG5zKSA9PiB7XG4gICAgICBpZiAoIW5zKSByZXR1cm47XG4gICAgICBucy5jdXJyZW50VGltZSA9IHQ7XG4gICAgICBucy5wYXVzZWQgPSBwYXVzZWQ7XG4gICAgICBucy5lbmRlZCA9IGVuZGVkO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2FuKHJvb3Q6IEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFyb290KSByZXR1cm47XG4gICAgaWYgKHJvb3QudGFnTmFtZSA9PT0gXCJWSURFT1wiKSB0aGlzLmF0dGFjaChyb290IGFzIEhUTUxWaWRlb0VsZW1lbnQpO1xuICAgIGlmIChyb290LnF1ZXJ5U2VsZWN0b3JBbGwpIHJvb3QucXVlcnlTZWxlY3RvckFsbChcInZpZGVvXCIpLmZvckVhY2goKHYpID0+IHRoaXMuYXR0YWNoKHYpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbFZpZGVvSG9vaygpOiB2b2lkIHtcbiAgaWYgKHdpbmRvdy5fX3B1cF92aWRlb19fKSByZXR1cm47XG4gIG5ldyBWaWRlb0hvb2soKS5pbnN0YWxsKCk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA1LzI2LlxuXG5pbXBvcnQgeyBpbnN0YWxsVGlja0hvb2sgfSBmcm9tIFwiLi9ydW50aW1lL2lmcmFtZV9ob29rXCI7XG5pbXBvcnQgeyBpbnN0YWxsVmlkZW9Ib29rIH0gZnJvbSBcIi4vcnVudGltZS92aWRlby9ob29rXCI7XG5cbmlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkge1xuICBpbnN0YWxsVGlja0hvb2soKTtcbiAgaW5zdGFsbFZpZGVvSG9vaygpO1xufVxuIl19
package/dist/index.d.ts CHANGED
@@ -1,41 +1,23 @@
1
- export { pupLogLevel } from './_tsup-dts-rollup.js';
2
- export { pupPkgRoot } from './_tsup-dts-rollup.js';
3
- export { pupApp } from './_tsup-dts-rollup.js';
4
- export { pupAudioPreload } from './_tsup-dts-rollup.js';
1
+ export { barLogger } from './_tsup-dts-rollup.js';
2
+ export { ProgressBar } from './_tsup-dts-rollup.js';
5
3
  export { penv } from './_tsup-dts-rollup.js';
6
- export { EnvParser } from './_tsup-dts-rollup.js';
7
4
  export { Lazy } from './_tsup-dts-rollup.js';
8
- export { ConcurrencyLimiter } from './_tsup-dts-rollup.js';
9
- export { LoggerLike } from './_tsup-dts-rollup.js';
10
- export { Logger } from './_tsup-dts-rollup.js';
11
5
  export { logger } from './_tsup-dts-rollup.js';
6
+ export { Logger } from './_tsup-dts-rollup.js';
7
+ export { LoggerLike } from './_tsup-dts-rollup.js';
12
8
  export { noerr } from './_tsup-dts-rollup.js';
13
9
  export { parseNumber } from './_tsup-dts-rollup.js';
14
- export { parseString } from './_tsup-dts-rollup.js';
15
- export { pargs } from './_tsup-dts-rollup.js';
16
- export { exec } from './_tsup-dts-rollup.js';
17
- export { PUP_ARGS_KEY } from './_tsup-dts-rollup.js';
18
- export { ProcessHandle } from './_tsup-dts-rollup.js';
19
10
  export { useRetry } from './_tsup-dts-rollup.js';
20
11
  export { RetryOptions } from './_tsup-dts-rollup.js';
21
- export { sleep } from './_tsup-dts-rollup.js';
22
- export { withTimeout } from './_tsup-dts-rollup.js';
23
12
  export { periodical } from './_tsup-dts-rollup.js';
24
- export { FormatMuxer } from './_tsup-dts-rollup.js';
25
- export { EncoderPipelineOptions } from './_tsup-dts-rollup.js';
26
- export { EncoderPipeline } from './_tsup-dts-rollup.js';
27
- export { DEFAULT_WIDTH } from './_tsup-dts-rollup.js';
28
- export { DEFAULT_HEIGHT } from './_tsup-dts-rollup.js';
29
- export { DEFAULT_FPS } from './_tsup-dts-rollup.js';
30
- export { DEFAULT_DURATION } from './_tsup-dts-rollup.js';
31
- export { DEFAULT_OUT_FILE } from './_tsup-dts-rollup.js';
32
- export { RenderSchema } from './_tsup-dts-rollup.js';
33
- export { RenderOptions } from './_tsup-dts-rollup.js';
34
- export { ConsoleCallback } from './_tsup-dts-rollup.js';
35
- export { ProgressCallback } from './_tsup-dts-rollup.js';
36
- export { IPCRenderOptions } from './_tsup-dts-rollup.js';
37
- export { RenderResult } from './_tsup-dts-rollup.js';
38
- export { defaultRenderOptions } from './_tsup-dts-rollup.js';
13
+ export { sleep } from './_tsup-dts-rollup.js';
39
14
  export { pup } from './_tsup-dts-rollup.js';
40
15
  export { PupOptions } from './_tsup-dts-rollup.js';
41
16
  export { PupResult } from './_tsup-dts-rollup.js';
17
+ export { DEFAULT_DURATION } from './_tsup-dts-rollup.js';
18
+ export { DEFAULT_FPS } from './_tsup-dts-rollup.js';
19
+ export { DEFAULT_HEIGHT } from './_tsup-dts-rollup.js';
20
+ export { DEFAULT_WIDTH } from './_tsup-dts-rollup.js';
21
+ export { ProgressCallback } from './_tsup-dts-rollup.js';
22
+ export { RenderOptions } from './_tsup-dts-rollup.js';
23
+ export { RenderResult } from './_tsup-dts-rollup.js';