pup-recorder 0.6.0 → 0.6.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 c from'zod';import {existsSync,rmSync}from'fs';import {mkdtemp}from'fs/promises';import {tmpdir,platform}from'os';import {HardwareContext}from'node-av/api';import {spawn}from'child_process';import je from'tree-kill';import {fileURLToPath}from'url';import {EventEmitter}from'events';var ke=Object.create;var $=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var I=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),v=t=>{throw TypeError(t)};var Y=(t,e,r)=>e in t?$(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var Q=t=>[,,,ke(null)],X=["class","method","getter","setter","accessor","field","value","get","set"],A=t=>t!==void 0&&typeof t!="function"?v("Function expected"):t,Pe=(t,e,r,o,n)=>({kind:X[t],name:e,metadata:o,addInitializer:s=>r._?v("Already initialized"):n.push(A(s||null))}),G=(t,e)=>Y(e,I("metadata"),t[3]),Z=(t,e,r,o)=>{for(var n=0,s=t[e>>1],a=s&&s.length;n<a;n++)s[n].call(r);return o},C=(t,e,r,o,n,s)=>{var i,p,d,k,l=e&7,E=false,b=false,T=2,P=X[l+5],xe=t[T]||(t[T]=[]),w=((n=n.prototype),Te(n,r));for(var D=o.length-1;D>=0;D--)d=Pe(l,r,p={},t[3],xe),(d.static=E,d.private=b,k=d.access={has:f=>r in f},(k.get=f=>f[r]),l>2),i=(0, o[D])(w[P],d),p._=1,A(i)&&(w[P]=i);return w&&$(n,r,w),n},ee=(t,e,r)=>Y(t,e+"",r);var re=(t,e,r)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&v("Object expected");var o,n;o===void 0&&(o=e[I("dispose")],r),typeof o!="function"&&v("Object not disposable"),n&&(o=function(){try{n.call(this);}catch(s){return Promise.reject(s)}}),t.push([r,o,e]);}return e},te=(t,e,r)=>{var o=typeof SuppressedError=="function"?SuppressedError:function(a,i,p,d){return d=Error(p),d.name="SuppressedError",d.error=a,d.suppressed=i,d},n=a=>e=r?new o(a,e,"An error was suppressed during disposal"):(r=true,a),s=a=>{for(;a=t.pop();)try{var i=a[1]&&a[1].call(a[2]);if(a[0])return Promise.resolve(i).then(s,p=>(n(p),s()))}catch(p){n(p);}if(r)throw e};return s()};var oe=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 rr(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 ne(t,e,r){try{return e(process.env[t])}catch{return r}}function se(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}function ir(t){return typeof t=="string"?t:String(t)}function ar(t){return e=>typeof e!="string"||e.trim()===""?[]:e.split(",").map(r=>t(r.trim()))}var Re=createRequire(import.meta.url),O=ne("PUP_LOG_LEVEL",se,2),ae=dirname(Re.resolve("pup-recorder/package.json")),le=join(ae,"dist","app.cjs");join(ae,"dist","runtime","preload.cjs");var N="<pup@debug>",U="<pup@info>",F="<pup@warn>",H="<pup@error>",j="<pup@fatal>";function R(t,e){return function(...r){let o=r.map(n=>n instanceof Error?n.stack??String(n):n);return t.call(this,...o)}}var pe,ce,ue,de,me,x;me=[R],de=[R],ue=[R],ce=[R],pe=[R];var y=class{constructor(e=O){this._level=e;Z(x,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,a=this._level;this._impl={debug:a>=3?r:void 0,info:a>=2?o:void 0,warn:a>=1?n:void 0,error:a>=0?s:void 0};}debug(...e){this.impl?.debug?.(N,...e);}info(...e){this.impl?.info?.(U,...e);}warn(...e){this.impl?.warn?.(F,...e);}error(...e){this.impl?.error?.(H,...e);}fatal(...e){this.impl?.error?.(j,...e),process.exit(1);}dispatch(e){let r=e.trimEnd();r.startsWith(N)?this.debug(r.slice(N.length+1)):r.startsWith(U)?this.info(r.slice(U.length+1)):r.startsWith(F)?this.warn(r.slice(F.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="",a=i=>{let p=i.toString();p.startsWith(j)?s+=p.slice(j.length+1):this.dispatch(p);};e.stderr?.on("data",a),e.stdout?.on("data",a),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);});})}};x=Q(),C(x,1,"debug",me,y),C(x,1,"info",de,y),C(x,1,"warn",ue,y),C(x,1,"error",ce,y),C(x,1,"fatal",pe,y),G(x,y);var u=new y;Log.setCallback((t,e)=>{let r=e.trimEnd();r&&(t<=AV_LOG_ERROR?u.error(r):t<=AV_LOG_WARNING&&u.warn(r));});function Tr(t,e){return (...r)=>{try{let o=t(...r);return o instanceof Promise?o.catch(()=>e):o}catch{return e}}}var Le=1920,De=1080,Me=30,$e=5,Ge=10,We=["out/html.mp4","out/html.webm"],Er=c.object({duration:c.number().describe("Duration in seconds"),width:c.number().describe("Video width"),height:c.number().describe("Video height"),fps:c.number().describe("Frames per second"),withAudio:c.boolean().describe("Capture and encode audio"),outFiles:c.array(c.string()).describe("Output paths; extension (.mp4/.webm) selects encoder"),useInnerProxy:c.boolean().describe("Use bilibili inner proxy for resource access"),deterministic:c.boolean().describe("Render by frame rather than recording"),disableGpu:c.boolean().describe("Disable GPU rendering, may reduce performance but increase stability"),disableHwCodec:c.boolean().describe("Disable hardware video encoder (NVENC/VideoToolbox), use software x265"),disableWebSecurity:c.boolean().describe("Drop the same-origin wall; required to record a local file"),windowTolerant:c.boolean().describe("Fall back to dom-ready if warmup load times out"),windowTimeout:c.number().describe("Window load timeout in seconds"),screenshots:c.array(c.number()).describe("Second marks to dump frame bitmaps as PNG")}),he={width:Le,height:De,fps:Me,duration:$e,outFiles:We,withAudio:false,useInnerProxy:false,deterministic:false,disableGpu:false,disableHwCodec:false,disableWebSecurity:false,windowTolerant:false,windowTimeout:Ge,screenshots:[]};var S=class{constructor(e){this.makeValue=e;}makeValue;get value(){return this._initialized||(this._value=this.makeValue(),this._initialized=true),this._value}get initialized(){return this._initialized}_initialized=false;_value};var Ue="[HWAccel]",ge=new S(()=>{var r=[];try{let t=re(r,HardwareContext.auto());let e=t!==null;u.debug(Ue,"gpu:",e);return e}catch(o){var n=o,s=true;}finally{te(r,n,s);}});async function fe(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"];O>=3?e.push("log-level=0","v=1"):e.push("log-level=3");let r=["FontationBackend"];if(!(!t&&ge.value))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 V="--pup-priv-args";function zr(){let t=process.argv,e=t.find(o=>o.startsWith(V));if(!e)return u.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)),u.debug("pupargs",r),r}function be(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}),a=false;return {process:s,wait:u.attach(s,o),get killed(){return a},kill(){if(a)return;a=true;let i=s.pid;i?je(i,"SIGKILL"):s.kill("SIGKILL");}}}async function Ke(t){return [...await fe(t),"headless=new"]}var we="[Electron]";async function ye({args:t}){let{default:e}=await import('electron'),r=await Ke(t.includes("--disable-gpu")),o=await mkdtemp(join(tmpdir(),"pup-profile-")),n=r.map(p=>`--${p}`);n.push(`--user-data-dir=${o}`),n.push(`${V}=${Buffer.from(JSON.stringify(t)).toString("base64")}`);let s=[e,...n,le].join(" ");u.debug(we,s);let a={...process.env,RUST_BACKTRACE:"full"},i=be(s,{stdio:["ignore","pipe","pipe","ipc"],env:a});return i.process.once("exit",()=>{try{rmSync(o,{recursive:!0,force:!0});}catch(p){u.warn(we,"profile cleanup failed:",p);}}),i}var B=["file:","http:","https:","data:"],Qe=/^(file:|https?:|data:)/;function ve(t){if(!Qe.test(t)){let e=`${t.split(":")[0]}:`,r=B.includes(e)?`unsupported protocol: ${e}, expected ${B.join(", ")}`:`invalid source format, expected ${B.join(", ")}`;throw new Error(r)}if(t.startsWith("file:")&&!existsSync(fileURLToPath(t)))throw new Error(`source file not found: ${t}`)}var L=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 z="[pup]";async function Ze(t,e){u.debug(z,"runPupApp",t,e);let r=[t,"--width",`${e.width}`,"--height",`${e.height}`,"--fps",`${e.fps}`,"--duration",`${e.duration}`,"--window-timeout",`${e.windowTimeout}`,"--out-file",e.outFiles.join(",")];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.disableWebSecurity&&r.push("--disable-web-security"),e.windowTolerant&&r.push("--window-tolerant"),e.screenshots.length>0&&r.push("--screenshots",e.screenshots.join(",")),ye({args:r})}var g=he;async function wt(t,e){u.debug(z,"pup",t,e);let{signal:r}=e;r?.throwIfAborted(),ve(t);let o=e.outFiles??g.outFiles,n={width:e.width??g.width,height:e.height??g.height,fps:e.fps??g.fps,duration:e.duration??g.duration,withAudio:e.withAudio??g.withAudio,useInnerProxy:e.useInnerProxy??g.useInnerProxy,deterministic:e.deterministic??g.deterministic,disableGpu:e.disableGpu??g.disableGpu,disableHwCodec:e.disableHwCodec??g.disableHwCodec,disableWebSecurity:e.disableWebSecurity??g.disableWebSecurity,windowTolerant:e.windowTolerant??g.windowTolerant,windowTimeout:e.windowTimeout??g.windowTimeout,screenshots:e.screenshots??g.screenshots,outFiles:o},s=performance.now(),a=0,i=l=>{a=l,e.onProgress?.(l);},p=await Ze(t,n),d,k=()=>{p.process.send?.({type:"cancel",reason:String(r?.reason??"abort")}),d=setTimeout(()=>p.kill(),5e3);};r?.addEventListener("abort",k,{once:true});try{let l=new Promise((b,T)=>{new L(p.process).on("close",P=>{let _=JSON.stringify({source:t,progress:a,code:P,killed:p.killed});T(new Error(`crashed: ${_}`));}).on("progress",i).on("console",(P,_)=>e.onConsole?.(P,_)).on("done",b).on("error",T);});i(0);let[E]=await Promise.all([l,p.wait]);return i(100),u.debug(z,`done ${o.join(",")} in ${Math.round(performance.now()-s)}ms`),{...E,options:n}}catch(l){throw p.kill(),r?.throwIfAborted(),l}finally{clearTimeout(d),r?.removeEventListener("abort",k);}}export{oe as a,rr as b,ne as c,se as d,ir as e,ar as f,y as g,u as h,Tr as i,zr as j,Le as k,De as l,Me as m,$e as n,Ge as o,Er as p,he as q,S as r,wt as s};//# sourceMappingURL=chunk-N72ZECPY.js.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2NsaV91aS50cyIsIi4uL3NyYy9iYXNlL2Vudi50cyIsIi4uL3NyYy9iYXNlL3BhcnNlci50cyIsIi4uL3NyYy9iYXNlL2NvbnN0YW50cy50cyIsIi4uL3NyYy9iYXNlL2xvZ2dpbmcudHMiLCIuLi9zcmMvYmFzZS9ub2Vyci50cyIsIi4uL3NyYy9yZW5kZXJlci9zY2hlbWEudHMiLCIuLi9zcmMvYmFzZS9sYXp5LnRzIiwiLi4vc3JjL2Jhc2UvaHdhY2NlbC50cyIsIi4uL3NyYy9iYXNlL2Nocm9taXVtLnRzIiwiLi4vc3JjL2Jhc2UvcHJvY2Vzcy50cyIsIi4uL3NyYy9yZW5kZXJlci9lbGVjdHJvbi50cyIsIi4uL3NyYy9yZW5kZXJlci9odG1sX2NoZWNrLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2lwYy50cyIsIi4uL3NyYy9wdXAudHMiXSwibmFtZXMiOlsiUHJvZ3Jlc3NCYXIiLCJvcHRzIiwid3JpdHRlbiIsInBjdCIsImxpbmUiLCJyYXRpbyIsImZpbGxlZCIsImJhciIsInN1ZmZpeCIsImJhckxvZ2dlciIsIndyYXAiLCJmbiIsImFyZ3MiLCJwZW52IiwibmFtZSIsInBhcnNlciIsImRlZmF1bHRWYWx1ZSIsInBhcnNlTnVtYmVyIiwieCIsIm51bSIsInBhcnNlU3RyaW5nIiwicGFyc2VBcnJheSIsIml0ZW0iLCJzIiwicmVxdWlyZSIsImNyZWF0ZVJlcXVpcmUiLCJwdXBMb2dMZXZlbCIsInB1cFBrZ1Jvb3QiLCJkaXJuYW1lIiwicHVwQXBwIiwiam9pbiIsIkRFQlVHIiwiSU5GTyIsIldBUk4iLCJFUlJPUiIsIkZBVEFMIiwic3RhY2tIb29rIiwidGFyZ2V0IiwiX2NvbnRleHQiLCJtZXNzYWdlcyIsInByb2Nlc3NlZCIsIm1zZyIsIl9mYXRhbF9kZWMiLCJfZXJyb3JfZGVjIiwiX3dhcm5fZGVjIiwiX2luZm9fZGVjIiwiX2RlYnVnX2RlYyIsIl9pbml0IiwiTG9nZ2VyIiwiX2xldmVsIiwiX19ydW5Jbml0aWFsaXplcnMiLCJfX3B1YmxpY0ZpZWxkIiwidmFsdWUiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJsdiIsIm1lc3NhZ2UiLCJwcm9jIiwicmVzb2x2ZSIsInJlamVjdCIsImZhdGFsIiwiZGlzcGF0Y2giLCJkYXRhIiwiZXJyIiwiY29kZSIsInNpZ25hbCIsInJlYXNvbiIsIl9fZGVjb3JhdG9yU3RhcnQiLCJfX2RlY29yYXRlRWxlbWVudCIsIl9fZGVjb3JhdG9yTWV0YWRhdGEiLCJsb2dnZXIiLCJMb2ciLCJsZXZlbCIsIkFWX0xPR19FUlJPUiIsIkFWX0xPR19XQVJOSU5HIiwibm9lcnIiLCJyZXQiLCJERUZBVUxUX1dJRFRIIiwiREVGQVVMVF9IRUlHSFQiLCJERUZBVUxUX0ZQUyIsIkRFRkFVTFRfRFVSQVRJT04iLCJERUZBVUxUX1dJTkRPV19USU1FT1VUIiwiREVGQVVMVF9PVVRfRklMRVMiLCJyZW5kZXJTY2hlbWEiLCJ6IiwiZGVmYXVsdFJlbmRlck9wdGlvbnMiLCJMYXp5IiwibWFrZVZhbHVlIiwiVEFHIiwiY2FuSVVzZUdQVSIsIl9zdGFjayIsImh3IiwiX191c2luZyIsIkhhcmR3YXJlQ29udGV4dCIsInJlc3VsdCIsIl8iLCJfZXJyb3IiLCJfaGFzRXJyb3IiLCJfX2NhbGxEaXNwb3NlIiwiY2hyb21pdW1PcHRpb25zIiwiZGlzYWJsZUdwdSIsImZlYXR1cmVzIiwicGxhdCIsInBsYXRmb3JtIiwiUFVQX0FSR1NfS0VZIiwicGFyZ3MiLCJhcmd2IiwicHJpdiIsImFyZyIsImV4ZWMiLCJjbWQiLCJvcHRpb25zIiwicGFydHMiLCJjb21tYW5kIiwic3Bhd24iLCJraWxsZWQiLCJwaWQiLCJ0cmVlS2lsbCIsImVsZWN0cm9uT3B0cyIsInJ1bkVsZWN0cm9uQXBwIiwiZWxlY3Ryb24iLCJwcm9maWxlRGlyIiwibWtkdGVtcCIsInRtcGRpciIsImVsZWN0cm9uQXJncyIsImEiLCJlbnYiLCJoYW5kbGUiLCJybVN5bmMiLCJlIiwiU1VQUE9SVEVEX1BST1RPQ09MUyIsIlNPVVJDRV9QQVRURVJOIiwiY2hlY2tIVE1MIiwic291cmNlIiwicHJvdG9jb2wiLCJleGlzdHNTeW5jIiwiZmlsZVVSTFRvUGF0aCIsIklwY1JlYWRlciIsIkV2ZW50RW1pdHRlciIsImNoaWxkIiwicmF3IiwiYyIsInJ1blB1cEFwcCIsInJlbmRlciIsImQiLCJwdXAiLCJvdXRGaWxlcyIsInJlbmRlck9wdHMiLCJ0MCIsInByb2dyZXNzIiwidGljayIsInAiLCJraWxsVGltZXIiLCJvbkFib3J0IiwibCIsIm0iLCJzdW1tYXJ5Il0sIm1hcHBpbmdzIjoiMmtFQVlPLElBQU1BLEVBQUFBLENBQU4sS0FBa0IsQ0FDZixRQUFBLENBQVcsRUFDWCxNQUFBLENBQVMsS0FBQSxDQUNBLE1BQUEsQ0FDQSxJQUFBLENBQ0EsSUFBQSxDQUNBLFVBQUEsQ0FFakIsWUFBWUMsQ0FBQUEsQ0FBa0IsQ0FDNUIsS0FBSyxNQUFBLENBQVNBLENBQUFBLENBQUssTUFDbkIsSUFBQSxDQUFLLElBQUEsQ0FBT0EsQ0FBQUEsQ0FBSyxHQUFBLENBQ2pCLElBQUEsQ0FBSyxJQUFBLENBQU8sQ0FBQyxDQUFDQSxDQUFBQSxDQUFLLElBQUksS0FBQSxDQUN2QixJQUFBLENBQUssV0FBYUEsQ0FBQUEsQ0FBSyxTQUFBLEVBQWEsTUFDdEMsQ0FFQSxJQUFJLEtBQUEsRUFBZ0IsQ0FDbEIsT0FBTyxJQUFBLENBQUssTUFDZCxDQUVBLE1BQUEsQ0FBT0MsQ0FBQUEsQ0FBdUIsQ0FDNUIsSUFBQSxDQUFLLFFBQUEsQ0FBVyxJQUFBLENBQUssR0FBQSxDQUFJLElBQUEsQ0FBSyxNQUFBLENBQVEsS0FBSyxHQUFBLENBQUksQ0FBQSxDQUFHQSxDQUFPLENBQUMsQ0FBQSxDQUMxRCxLQUFLLE1BQUEsR0FDUCxDQUVBLGFBQUEsQ0FBY0MsQ0FBQUEsQ0FBbUIsQ0FDL0IsS0FBSyxNQUFBLENBQU8sSUFBQSxDQUFLLEtBQUEsQ0FBT0EsQ0FBQUEsQ0FBTSxHQUFBLENBQU8sSUFBQSxDQUFLLE1BQU0sQ0FBQyxFQUNuRCxDQUVBLEtBQUEsRUFBYyxDQUNSLElBQUEsQ0FBSyxNQUFRLElBQUEsQ0FBSyxNQUFBLEVBQ3BCLEtBQUssSUFBQSxDQUFLLEtBQUEsQ0FBTSxXQUFXLEVBRS9CLENBRUEsTUFBQSxFQUFlLENBQ2IsSUFBQSxDQUFLLE1BQUEsR0FDUCxDQUVBLEdBQUEsQ0FBSUMsQ0FBQUEsQ0FBb0IsQ0FDdEIsSUFBQSxDQUFLLEtBQUEsR0FDTCxJQUFBLENBQUssSUFBQSxDQUFLLEtBQUEsQ0FBTSxDQUFBLEVBQUdBLENBQUk7QUFBQSxDQUFJLENBQUEsQ0FDM0IsSUFBQSxDQUFLLE1BQUEsR0FDUCxDQUVBLE1BQUEsQ0FBT0EsQ0FBQUEsQ0FBb0IsQ0FDekIsSUFBQSxDQUFLLE9BQU0sQ0FDWCxJQUFBLENBQUssSUFBQSxDQUFLLEtBQUEsQ0FBTSxHQUFHQSxDQUFJO0FBQUEsQ0FBSSxDQUFBLENBQzNCLElBQUEsQ0FBSyxNQUFBLENBQVMsTUFDaEIsQ0FFUSxNQUFBLEVBQWUsQ0FJckIsR0FISSxDQUFDLElBQUEsQ0FBSyxJQUFBLEVBR04sSUFBQSxDQUFLLFFBQUEsR0FBYSxDQUFBLEVBQUssQ0FBQyxJQUFBLENBQUssTUFBQSxDQUMvQixPQUVGLElBQU1DLENBQUFBLENBQVEsSUFBQSxDQUFLLE1BQUEsQ0FBUyxDQUFBLENBQUksSUFBQSxDQUFLLFFBQUEsQ0FBVyxJQUFBLENBQUssTUFBQSxDQUFTLENBQUEsQ0FDeERDLENBQUFBLENBQVMsSUFBQSxDQUFLLEtBQUEsQ0FBTUQsQ0FBQUEsQ0FBUSxFQUFTLENBQUEsQ0FDckNFLENBQUFBLENBQU0sR0FBQSxDQUFJLE1BQUEsQ0FBT0QsQ0FBTSxDQUFBLENBQUksR0FBQSxDQUFJLE1BQUEsQ0FBTyxFQUFBLENBQVlBLENBQU0sQ0FBQSxDQUN4REgsQ0FBQUEsQ0FBTSxJQUFBLENBQUssS0FBQSxDQUFNRSxDQUFBQSxDQUFRLEdBQUcsQ0FBQSxDQUM1QkcsQ0FBQUEsQ0FBUyxJQUFBLENBQUssVUFBQSxDQUFhLENBQUEsRUFBRyxJQUFBLENBQUssUUFBUSxDQUFBLENBQUEsRUFBSSxJQUFBLENBQUssTUFBTSxDQUFBLEVBQUEsRUFBS0wsQ0FBRyxDQUFBLEVBQUEsQ0FBQSxDQUFPLENBQUEsRUFBR0EsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUNyRixJQUFBLENBQUssSUFBQSxDQUFLLEtBQUEsQ0FBTSxDQUFBLEdBQUEsRUFBTUksQ0FBRyxDQUFBLEVBQUEsRUFBS0MsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUN0QyxJQUFBLENBQUssTUFBQSxDQUFTLEtBQ2hCLENBQ0YsRUFHTyxTQUFTQyxFQUFBQSxDQUFVRixDQUFBQSxDQUE4QixDQUN0RCxJQUFNRyxDQUFBQSxDQUNrQ0MsQ0FBQUEsRUFDdEMsQ0FBQSxHQUFJQyxDQUFBQSxHQUFvQixDQUN0QkwsQ0FBQUEsQ0FBSSxLQUFBLEVBQU0sQ0FDVkksQ0FBQUEsQ0FBRyxHQUFHQyxDQUFJLENBQUEsQ0FDVkwsQ0FBQUEsQ0FBSSxNQUFBLEdBQ04sQ0FBQSxDQUNGLE9BQU8sQ0FDTCxLQUFBLENBQU9HLENBQUFBLENBQUssT0FBQSxDQUFRLEtBQUssQ0FBQSxDQUN6QixJQUFBLENBQU1BLENBQUFBLENBQUssT0FBQSxDQUFRLElBQUksQ0FBQSxDQUN2QixJQUFBLENBQU1BLENBQUFBLENBQUssT0FBQSxDQUFRLElBQUksQ0FBQSxDQUN2QixLQUFBLENBQU9BLENBQUFBLENBQUssT0FBQSxDQUFRLEtBQUssQ0FDM0IsQ0FDRixDQ3hGTyxTQUFTRyxFQUFBQSxDQUFRQyxDQUFBQSxDQUFjQyxDQUFBQSxDQUFzQkMsQ0FBQUEsQ0FBaUMsQ0FDM0YsR0FBSSxDQUNGLE9BQU9ELENBQUFBLENBQU8sT0FBQSxDQUFRLEdBQUEsQ0FBSUQsQ0FBSSxDQUFDLENBQ2pDLENBQUEsS0FBUSxDQUNOLE9BQU9FLENBQ1QsQ0FDRixDQ1ZPLFNBQVNDLEVBQUFBLENBQVlDLENBQUFBLENBQW9CLENBQzlDLEdBQUksT0FBT0EsQ0FBQUEsRUFBTSxRQUFBLENBQ2YsT0FBT0EsQ0FBQUEsQ0FFVCxJQUFNQyxDQUFBQSxDQUFNLE1BQUEsQ0FBT0QsQ0FBQyxDQUFBLENBQ3BCLEdBQUksTUFBQSxDQUFPLEtBQUEsQ0FBTUMsQ0FBRyxDQUFBLENBQ2xCLE1BQU0sSUFBSSxLQUFBLENBQU0sQ0FBQSxNQUFBLEVBQVNELENBQUMsQ0FBQSxzQkFBQSxDQUF3QixDQUFBLENBRXBELE9BQU9DLENBQ1QsQ0FFTyxTQUFTQyxFQUFBQSxDQUFZRixDQUFBQSxDQUFvQixDQUM5QyxPQUFJLE9BQU9BLENBQUFBLEVBQU0sUUFBQSxDQUNSQSxDQUFBQSxDQUVGLE1BQUEsQ0FBT0EsQ0FBQyxDQUNqQixDQUdPLFNBQVNHLEdBQWNDLENBQUFBLENBQThDLENBQzFFLE9BQVFKLENBQUFBLEVBQ0YsT0FBT0EsQ0FBQUEsRUFBTSxRQUFBLEVBQVlBLENBQUFBLENBQUUsSUFBQSxFQUFLLEdBQU0sRUFBQSxDQUNqQyxFQUFDLENBRUhBLENBQUFBLENBQUUsS0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFFLEdBQUEsQ0FBS0ssQ0FBQUEsRUFBTUQsQ0FBQUEsQ0FBS0MsQ0FBQUEsQ0FBRSxJQUFBLEVBQU0sQ0FBQyxDQUVqRCxDQ3JCQSxJQUFNQyxFQUFBQSxDQUFVQyxhQUFBQSxDQUFjLE1BQUEsQ0FBQSxJQUFBLENBQVksR0FBRyxDQUFBLENBRWhDQyxDQUFBQSxDQUFjYixFQUFBQSxDQUFLLGVBQUEsQ0FBaUJJLEVBQUFBLENBQWEsQ0FBQyxDQUFBLENBRWxEVSxFQUFBQSxDQUFhQyxPQUFBQSxDQUFRSixFQUFBQSxDQUFRLE9BQUEsQ0FBUSwyQkFBMkIsQ0FBQyxFQUNqRUssRUFBQUEsQ0FBU0MsSUFBQUEsQ0FBS0gsRUFBQUEsQ0FBWSxNQUFBLENBQVEsU0FBUyxDQUFBLENBQzlCRyxJQUFBQSxDQUFLSCxFQUFBQSxDQUFZLE1BQUEsQ0FBUSxTQUFBLENBQVcsYUFBYSxFQ0kzRSxJQUFNSSxDQUFBQSxDQUFRLGFBQUEsQ0FDUkMsQ0FBQUEsQ0FBTyxZQUFBLENBQ1BDLENBQUFBLENBQU8sWUFBQSxDQUNQQyxDQUFBQSxDQUFRLGFBQUEsQ0FDUkMsQ0FBQUEsQ0FBUSxhQUFBLENBRWQsU0FBU0MsQ0FBQUEsQ0FBVUMsQ0FBQUEsQ0FBNkNDLENBQUFBLENBQXVDLENBQ3JHLE9BQU8sU0FBQSxHQUEyQkMsQ0FBQUEsQ0FBcUIsQ0FDckQsSUFBTUMsQ0FBQUEsQ0FBWUQsQ0FBQUEsQ0FBUyxHQUFBLENBQUtFLENBQUFBLEVBQ3ZCQSxDQUFBQSxZQUFlLEtBQUEsQ0FBU0EsQ0FBQUEsQ0FBSSxLQUFBLEVBQVMsTUFBQSxDQUFPQSxDQUFHLENBQUEsQ0FBS0EsQ0FDNUQsQ0FBQSxDQUNELE9BQU9KLENBQUFBLENBQU8sSUFBQSxDQUFLLElBQUEsQ0FBTSxHQUFHRyxDQUFTLENBQ3ZDLENBQ0YsQ0E5QkEsSUFBQUUsRUFBQUEsQ0FBQUMsRUFBQUEsQ0FBQUMsRUFBQUEsQ0FBQUMsRUFBQUEsQ0FBQUMsRUFBQUEsQ0FBQUMsQ0FBQUEsQ0FrRUVELEVBQUFBLENBQUEsQ0FBQ1YsQ0FBQUEsQ0FBQUEsQ0FLRFMsRUFBQUEsQ0FBQSxDQUFDVCxDQUFBQSxDQUFBQSxDQUtEUSxFQUFBQSxDQUFBLENBQUNSLENBQUFBLENBQUFBLENBS0RPLEVBQUFBLENBQUEsQ0FBQ1AsQ0FBQUEsQ0FBQUEsQ0FLRE0sRUFBQUEsQ0FBQSxDQUFDTixDQUFBQSxDQUFBQSxDQXRESSxJQUFNWSxDQUFBQSxDQUFOLEtBQW1DLENBOEJ4QyxXQUFBLENBQW9CQyxDQUFBQSxDQUFpQnZCLENBQUFBLENBQWEsQ0FBOUIsSUFBQSxDQUFBLE1BQUEsQ0FBQXVCLENBQUFBLENBOUJmQyxDQUFBQSxDQUFBSCxDQUFBQSxDQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsQ0FDTEksRUFBQUEsQ0FBQSxJQUFBLENBQVEsT0FBQSxDQUFBLENBOEJOLElBQUEsQ0FBSyxJQUFBLENBQU8sUUFDZCxDQUZvQixNQUFBLENBM0JwQixJQUFJLEtBQUEsRUFBZ0IsQ0FDbEIsT0FBTyxJQUFBLENBQUssTUFDZCxDQUVBLElBQUksS0FBQSxDQUFNQyxDQUFBQSxDQUFlLENBQ3ZCLElBQUEsQ0FBSyxNQUFBLENBQVNBLENBQUFBLENBQ2QsSUFBQSxDQUFLLElBQUEsQ0FBTyxJQUFBLENBQUssS0FBQSxFQUFTLFFBQzVCLENBRUEsSUFBSSxJQUFBLEVBQStCLENBQ2pDLE9BQU8sSUFBQSxDQUFLLEtBQ2QsQ0FFQSxJQUFJLElBQUEsQ0FBS0EsRUFBbUIsQ0FDMUIsSUFBTUMsQ0FBQUEsQ0FBUUQsQ0FBQUEsQ0FBTSxLQUFBLEVBQVMsT0FBQSxDQUFRLEtBQUEsQ0FDL0JFLENBQUFBLENBQU9GLENBQUFBLENBQU0sSUFBQSxFQUFRLE9BQUEsQ0FBUSxJQUFBLENBQzdCRyxDQUFBQSxDQUFPSCxDQUFBQSxDQUFNLElBQUEsRUFBUSxPQUFBLENBQVEsSUFBQSxDQUM3QkksQ0FBQUEsQ0FBUUosQ0FBQUEsQ0FBTSxLQUFBLEVBQVMsT0FBQSxDQUFRLEtBQUEsQ0FDL0JLLENBQUFBLENBQUssSUFBQSxDQUFLLE1BQUEsQ0FDaEIsSUFBQSxDQUFLLEtBQUEsQ0FBUSxDQUNYLEtBQUEsQ0FBT0EsQ0FBQUEsRUFBTSxDQUFBLENBQUlKLENBQUFBLENBQVEsTUFBQSxDQUN6QixJQUFBLENBQU1JLENBQUFBLEVBQU0sQ0FBQSxDQUFJSCxDQUFBQSxDQUFPLE1BQUEsQ0FDdkIsSUFBQSxDQUFNRyxDQUFBQSxFQUFNLENBQUEsQ0FBSUYsQ0FBQUEsQ0FBTyxNQUFBLENBQ3ZCLEtBQUEsQ0FBT0UsQ0FBQUEsRUFBTSxDQUFBLENBQUlELENBQUFBLENBQVEsTUFDM0IsRUFDRixDQU9BLEtBQUEsQ0FBQSxHQUFTakIsQ0FBQUEsQ0FBMkIsQ0FDbEMsSUFBQSxDQUFLLElBQUEsRUFBTSxLQUFBLEdBQVFSLENBQUFBLENBQU8sR0FBR1EsQ0FBUSxFQUN2QyxDQUdBLElBQUEsQ0FBQSxHQUFRQSxDQUFBQSxDQUEyQixDQUNqQyxLQUFLLElBQUEsRUFBTSxJQUFBLEdBQU9QLENBQUFBLENBQU0sR0FBR08sQ0FBUSxFQUNyQyxDQUdBLElBQUEsQ0FBQSxHQUFRQSxDQUFBQSxDQUEyQixDQUNqQyxJQUFBLENBQUssSUFBQSxFQUFNLElBQUEsR0FBT04sQ0FBQUEsQ0FBTSxHQUFHTSxDQUFRLEVBQ3JDLENBR0EsS0FBQSxDQUFBLEdBQVNBLENBQUFBLENBQTJCLENBQ2xDLElBQUEsQ0FBSyxJQUFBLEVBQU0sS0FBQSxHQUFRTCxDQUFBQSxDQUFPLEdBQUdLLENBQVEsRUFDdkMsQ0FHQSxLQUFBLENBQUEsR0FBU0EsQ0FBQUEsQ0FBMkIsQ0FDbEMsSUFBQSxDQUFLLElBQUEsRUFBTSxLQUFBLEdBQVFKLENBQUFBLENBQU8sR0FBR0ksQ0FBUSxDQUFBLENBQ3JDLE9BQUEsQ0FBUSxJQUFBLENBQUssQ0FBQyxFQUNoQixDQUVRLFFBQUEsQ0FBU21CLENBQUFBLENBQWlCLENBQ2hDLElBQU1qQixDQUFBQSxDQUFNaUIsQ0FBQUEsQ0FBUSxPQUFBLEVBQVEsQ0FDeEJqQixDQUFBQSxDQUFJLFVBQUEsQ0FBV1YsQ0FBSyxDQUFBLENBQ3RCLElBQUEsQ0FBSyxLQUFBLENBQU1VLENBQUFBLENBQUksS0FBQSxDQUFNVixDQUFBQSxDQUFNLE1BQUEsQ0FBUyxDQUFDLENBQUMsRUFDN0JVLENBQUFBLENBQUksVUFBQSxDQUFXVCxDQUFJLENBQUEsQ0FDNUIsSUFBQSxDQUFLLElBQUEsQ0FBS1MsQ0FBQUEsQ0FBSSxLQUFBLENBQU1ULENBQUFBLENBQUssTUFBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQzNCUyxDQUFBQSxDQUFJLFVBQUEsQ0FBV1IsQ0FBSSxDQUFBLENBQzVCLElBQUEsQ0FBSyxJQUFBLENBQUtRLENBQUFBLENBQUksS0FBQSxDQUFNUixDQUFBQSxDQUFLLE1BQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUMzQlEsQ0FBQUEsQ0FBSSxVQUFBLENBQVdQLENBQUssQ0FBQSxDQUM3QixJQUFBLENBQUssS0FBQSxDQUFNTyxDQUFBQSxDQUFJLEtBQUEsQ0FBTVAsQ0FBQUEsQ0FBTSxNQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FFdEMsSUFBQSxDQUFLLElBQUEsQ0FBS08sQ0FBRyxFQUVqQixDQUVBLE1BQUEsQ0FBT2tCLENBQUFBLENBQW9CN0MsQ0FBQUEsQ0FBYyxDQUN2QyxPQUFPLElBQUksT0FBQSxDQUFjLENBQUM4QyxDQUFBQSxDQUFTQyxDQUFBQSxHQUFXLENBQzVDLElBQUEsQ0FBSyxLQUFBLENBQU0sQ0FBQSxFQUFHL0MsQ0FBSSxDQUFBLE9BQUEsQ0FBUyxDQUFBLENBQzNCLElBQUlnRCxDQUFBQSxDQUFnQixFQUFBLENBQ2RDLENBQUFBLENBQVlDLENBQUFBLEVBQWlCLENBQ2pDLElBQU1OLENBQUFBLENBQVVNLENBQUFBLENBQUssUUFBQSxFQUFTLENBQzFCTixDQUFBQSxDQUFRLFVBQUEsQ0FBV3ZCLENBQUssQ0FBQSxDQUMxQjJCLENBQUFBLEVBQVNKLENBQUFBLENBQVEsS0FBQSxDQUFNdkIsQ0FBQUEsQ0FBTSxNQUFBLENBQVMsQ0FBQyxDQUFBLENBRXZDLElBQUEsQ0FBSyxRQUFBLENBQVN1QixDQUFPLEVBRXpCLENBQUEsQ0FDQUMsQ0FBQUEsQ0FBSyxNQUFBLEVBQVEsRUFBQSxDQUFHLE1BQUEsQ0FBUUksQ0FBUSxDQUFBLENBQ2hDSixDQUFBQSxDQUFLLE1BQUEsRUFBUSxFQUFBLENBQUcsTUFBQSxDQUFRSSxDQUFRLENBQUEsQ0FDaENKLENBQUFBLENBQ0csRUFBQSxDQUFHLE9BQUEsQ0FBVU0sQ0FBQUEsRUFBUSxDQUNwQkgsQ0FBQUEsRUFBU0csQ0FBQUEsQ0FBSSxPQUFBLENBQ2JOLENBQUFBLENBQUssSUFBQSxHQUNQLENBQUMsQ0FBQSxDQUNBLElBQUEsQ0FBSyxPQUFBLENBQVMsQ0FBQ08sQ0FBQUEsQ0FBTUMsQ0FBQUEsR0FBVyxDQUMzQkQsQ0FBQUEsRUFBUUMsQ0FBQUEsRUFBVUwsQ0FBQUEsRUFDcEJBLENBQUFBLEdBQVUsQ0FBQSxnQkFBQSxFQUFtQkgsQ0FBQUEsQ0FBSyxTQUFBLENBQVUsSUFBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FDckQsSUFBQSxDQUFLLEtBQUEsQ0FBTSxDQUFBLEVBQUc3QyxDQUFJLENBQUEsTUFBQSxDQUFBLENBQVUsQ0FBRSxJQUFBLENBQUFvRCxDQUFBQSxDQUFNLE1BQUEsQ0FBQUMsQ0FBQUEsQ0FBUSxLQUFBLENBQUFMLENBQU0sQ0FBQyxDQUFBLENBQ25ERCxDQUFBQSxDQUFPLElBQUksS0FBQSxDQUFNQyxDQUFLLENBQUMsQ0FBQSxHQUV2QixJQUFBLENBQUssS0FBQSxDQUFNLENBQUEsRUFBR2hELENBQUksQ0FBQSxNQUFBLENBQVEsQ0FBQSxDQUMxQjhDLENBQUFBLEVBQVEsRUFFWixDQUFDLENBQUEsQ0FDQSxFQUFBLENBQUcsb0JBQUEsQ0FBdUJRLENBQUFBLEVBQVcsQ0FDcEMsSUFBQSxDQUFLLEtBQUEsQ0FBTSxDQUFBLEVBQUd0RCxDQUFJLENBQUEsVUFBQSxDQUFBLENBQWNzRCxDQUFNLEVBQ3hDLENBQUMsQ0FBQSxDQUNBLEVBQUEsQ0FBRywwQkFBQSxDQUE2QkgsQ0FBQUEsRUFBUSxDQUN2QyxJQUFBLENBQUssS0FBQSxDQUFNLENBQUEsRUFBR25ELENBQUksQ0FBQSxVQUFBLENBQUEsQ0FBY21ELENBQUcsRUFDckMsQ0FBQyxFQUNMLENBQUMsQ0FDSCxDQUNGLEVBaEhPbEIsQ0FBQUEsQ0FBQXNCLENBQUFBLENBQUEsQ0FBQSxDQW1DTEMsRUFBQXZCLENBQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FEQUQsRUFBQUEsQ0FsQ1dFLENBQUFBLENBQUFBLENBd0NYc0IsQ0FBQUEsQ0FBQXZCLENBQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FEQUYsRUFBQUEsQ0F2Q1dHLENBQUFBLENBQUFBLENBNkNYc0IsQ0FBQUEsQ0FBQXZCLENBQUFBLENBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FEQUgsRUFBQUEsQ0E1Q1dJLENBQUFBLENBQUFBLENBa0RYc0IsQ0FBQUEsQ0FBQXZCLENBQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FEQUosRUFBQUEsQ0FqRFdLLENBQUFBLENBQUFBLENBdURYc0IsQ0FBQUEsQ0FBQXZCLENBQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FEQUwsRUFBQUEsQ0F0RFdNLENBQUFBLENBQUFBLENBQU51QixDQUFBQSxDQUFBeEIsQ0FBQUEsQ0FBTUMsQ0FBQUEsQ0FBQUEsQ0FrSGIsSUFBTXdCLENBQUFBLENBQVMsSUFBSXhCLEVBR25CeUIsR0FBQUEsQ0FBSSxXQUFBLENBQVksQ0FBQ0MsQ0FBQUEsQ0FBT2hCLENBQUFBLEdBQVksQ0FDbEMsSUFBTWpCLENBQUFBLENBQU1pQixDQUFBQSxDQUFRLE9BQUEsRUFBUSxDQUN2QmpCLENBQUFBLEdBR0RpQyxDQUFBQSxFQUFTQyxZQUFBQSxDQUNYSCxDQUFBQSxDQUFPLEtBQUEsQ0FBTS9CLENBQUcsQ0FBQSxDQUNQaUMsQ0FBQUEsRUFBU0UsY0FBQUEsRUFDbEJKLENBQUFBLENBQU8sSUFBQSxDQUFLL0IsQ0FBRyxDQUFBLEVBRW5CLENBQUMsQ0FBQSxDQzdKTSxTQUFTb0MsRUFBQUEsQ0FBaUNsRSxDQUFBQSxDQUF1QkssQ0FBQUEsQ0FBd0MsQ0FDOUcsT0FBTyxDQUFBLEdBQUlKLElBQVMsQ0FDbEIsR0FBSSxDQUNGLElBQU1rRSxDQUFBQSxDQUFNbkUsQ0FBQUEsQ0FBRyxHQUFHQyxDQUFJLENBQUEsQ0FDdEIsT0FBSWtFLENBQUFBLFlBQWUsT0FBQSxDQUNWQSxDQUFBQSxDQUFJLEtBQUEsQ0FBTSxJQUFNOUQsQ0FBWSxDQUFBLENBRTlCOEQsQ0FDVCxDQUFBLEtBQVEsQ0FDTixPQUFPOUQsQ0FDVCxDQUNGLENBQ0YsQ0NWTyxJQUFNK0QsRUFBQUEsQ0FBZ0IsSUFBQSxDQUNoQkMsRUFBQUEsQ0FBaUIsSUFBQSxDQUNqQkMsRUFBQUEsQ0FBYyxFQUFBLENBQ2RDLEVBQUFBLENBQW1CLENBQUEsQ0FDbkJDLEVBQUFBLENBQXlCLEVBQUEsQ0FDekJDLEVBQUFBLENBQW9CLENBQUMsY0FBQSxDQUFnQixlQUFlLENBQUEsQ0FFcERDLEVBQUFBLENBQWVDLENBQUFBLENBQUUsTUFBQSxDQUFPLENBQ25DLFFBQUEsQ0FBVUEsQ0FBQUEsQ0FBRSxNQUFBLEVBQU8sQ0FBRSxRQUFBLENBQVMscUJBQXFCLENBQUEsQ0FDbkQsS0FBQSxDQUFPQSxDQUFBQSxDQUFFLE1BQUEsRUFBTyxDQUFFLFFBQUEsQ0FBUyxhQUFhLENBQUEsQ0FDeEMsTUFBQSxDQUFRQSxDQUFBQSxDQUFFLE1BQUEsRUFBTyxDQUFFLFFBQUEsQ0FBUyxjQUFjLENBQUEsQ0FDMUMsR0FBQSxDQUFLQSxDQUFBQSxDQUFFLE1BQUEsRUFBTyxDQUFFLFFBQUEsQ0FBUyxtQkFBbUIsQ0FBQSxDQUM1QyxTQUFBLENBQVdBLENBQUFBLENBQUUsT0FBQSxFQUFRLENBQUUsUUFBQSxDQUFTLDBCQUEwQixDQUFBLENBQzFELFFBQUEsQ0FBVUEsQ0FBQUEsQ0FBRSxLQUFBLENBQU1BLENBQUFBLENBQUUsTUFBQSxFQUFRLENBQUEsQ0FBRSxRQUFBLENBQVMsc0RBQXNELENBQUEsQ0FDN0YsYUFBQSxDQUFlQSxDQUFBQSxDQUFFLE9BQUEsRUFBUSxDQUFFLFFBQUEsQ0FBUyw4Q0FBOEMsQ0FBQSxDQUNsRixhQUFBLENBQWVBLENBQUFBLENBQUUsT0FBQSxFQUFRLENBQUUsUUFBQSxDQUFTLHVDQUF1QyxDQUFBLENBQzNFLFVBQUEsQ0FBWUEsQ0FBQUEsQ0FBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsc0VBQXNFLENBQUEsQ0FDdkcsY0FBQSxDQUFnQkEsQ0FBQUEsQ0FBRSxPQUFBLEVBQVEsQ0FBRSxRQUFBLENBQVMsd0VBQXdFLENBQUEsQ0FDN0csa0JBQUEsQ0FBb0JBLENBQUFBLENBQUUsT0FBQSxFQUFRLENBQUUsUUFBQSxDQUFTLDREQUE0RCxDQUFBLENBQ3JHLGVBQWdCQSxDQUFBQSxDQUFFLE9BQUEsRUFBUSxDQUFFLFFBQUEsQ0FBUyxpREFBaUQsQ0FBQSxDQUN0RixhQUFBLENBQWVBLENBQUFBLENBQUUsTUFBQSxFQUFPLENBQUUsUUFBQSxDQUFTLGdDQUFnQyxDQUFBLENBQ25FLFdBQUEsQ0FBYUEsQ0FBQUEsQ0FBRSxLQUFBLENBQU1BLENBQUFBLENBQUUsTUFBQSxFQUFRLENBQUEsQ0FBRSxRQUFBLENBQVMsMkNBQTJDLENBQ3ZGLENBQUMsQ0FBQSxDQXdCWUMsRUFBQUEsQ0FBc0MsQ0FDakQsS0FBQSxDQUFPUixFQUFBQSxDQUNQLE1BQUEsQ0FBUUMsRUFBQUEsQ0FDUixHQUFBLENBQUtDLEVBQUFBLENBQ0wsUUFBQSxDQUFVQyxFQUFBQSxDQUNWLFFBQUEsQ0FBVUUsRUFBQUEsQ0FDVixTQUFBLENBQVcsS0FBQSxDQUNYLGFBQUEsQ0FBZSxLQUFBLENBQ2YsYUFBQSxDQUFlLEtBQUEsQ0FDZixVQUFBLENBQVksS0FBQSxDQUNaLGNBQUEsQ0FBZ0IsS0FBQSxDQUNoQixrQkFBQSxDQUFvQixLQUFBLENBQ3BCLGNBQUEsQ0FBZ0IsS0FBQSxDQUNoQixhQUFBLENBQWVELEVBQUFBLENBQ2YsV0FBQSxDQUFhLEVBQ2YsRUMvRE8sSUFBTUssQ0FBQUEsQ0FBTixLQUFjLENBQ25CLFdBQUEsQ0FBcUJDLENBQUFBLENBQW9CLENBQXBCLGVBQUFBLEVBQXFCLENBQXJCLFNBQUEsQ0FFckIsSUFBSSxLQUFBLEVBQVcsQ0FDYixPQUFLLElBQUEsQ0FBSyxZQUFBLEdBQ1IsSUFBQSxDQUFLLE1BQUEsQ0FBUyxJQUFBLENBQUssU0FBQSxFQUFVLENBQzdCLElBQUEsQ0FBSyxZQUFBLENBQWUsSUFBQSxDQUFBLENBRWYsSUFBQSxDQUFLLE1BQ2QsQ0FFQSxJQUFJLFdBQUEsRUFBdUIsQ0FDekIsT0FBTyxJQUFBLENBQUssWUFDZCxDQUVRLFlBQUEsQ0FBZSxLQUFBLENBQ2YsTUFDVixFQ2JBLElBQU1DLEVBQUFBLENBQU0sV0FBQSxDQUdDQyxFQUFBQSxDQUFhLElBQUlILENBQUFBLENBQUssSUFBTSxDQUN2QyxJQUFBSSxFQUFBLEVBQUEsQ0FBQSxHQUFBLENBQUEsSUFBTUMsQ0FBQUEsQ0FBS0MsRUFBQUEsQ0FBQUYsQ0FBQUEsQ0FBQUcsZUFBQUEsQ0FBZ0IsSUFBQSxFQUFLLENBQUEsQ0FDaEMsSUFBTUMsQ0FBQUEsQ0FBU0gsQ0FBQUEsR0FBTyxJQUFBLENBQ3RCckIsQ0FBQUEsQ0FBTyxLQUFBLENBQU1rQixFQUFBQSxDQUFLLE1BQUEsQ0FBUU0sQ0FBTSxDQUFBLENBQ2hDLE9BQU9BLENBQUFBLENBQUFBLE1BSFBDLENBQUFBLENBQUEsQ0FBQSxJQUFBQyxDQUFBQSxDQUFBRCxDQUFBQSxDQUFBRSxDQUFBQSxDQUFBLEtBQUEsQ0FBQSxPQUFBLENBQUFDLEVBQUFBLENBQUFSLENBQUFBLENBQUFNLENBQUFBLENBQUFDLENBQUFBLEVBQUFBLENBSUYsQ0FBQyxDQUFBLENDUkQsZUFBc0JFLEVBQUFBLENBQWdCQyxDQUFBQSxDQUFxQixDQUN6RCxJQUFNckcsQ0FBQUEsQ0FBTyxDQUVYLFlBQUEsQ0FDQSx1QkFBQSxDQUVBLHNCQUFBLENBQ0EsK0JBQUEsQ0FDQSwyQkFBQSxDQUVBLDZDQUFBLENBQ0EsWUFBQSxDQUNBLDBDQUFBLENBQ0Esb0JBQUEsQ0FDQSx5QkFBQSxDQUNBLG1CQUFBLENBRUEsNkJBQUEsQ0FDQSwwQkFBQSxDQUNBLHNCQUFBLENBQ0EsY0FBQSxDQUNBLG9CQUFBLENBQ0EsNEJBQUEsQ0FDQSx1Q0FBQSxDQUNBLHVDQUFBLENBQ0EsNEJBQUEsQ0FDQSw0QkFBQSxDQUNBLHlCQUFBLENBQ0EsZ0NBQUEsQ0FDQSxnQ0FBQSxDQUVBLDBCQUFBLENBRUEsK0JBQUEsQ0FDQSxtQ0FBQSxDQUNBLDBCQUFBLENBQ0Esc0JBQUEsQ0FDQSxxQ0FBQSxDQUNBLGdDQUFBLENBQ0Esd0NBQUEsQ0FFQSx1QkFDRixDQUFBLENBRUl5QixDQUFBQSxFQUFlLENBQUEsQ0FDakJ6QixDQUFBQSxDQUFLLElBQUEsQ0FBSyxhQUFBLENBQWUsS0FBSyxDQUFBLENBRTlCQSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxhQUFhLENBQUEsQ0FHekIsSUFBTXNHLENBQUFBLENBQVcsQ0FBQyxrQkFBa0IsQ0FBQSxDQUdwQyxHQUFJLEVBRGMsQ0FBQ0QsQ0FBQUEsRUFBY1gsRUFBQUEsQ0FBVyxLQUFBLENBQUEsQ0FFMUMxRixDQUFBQSxDQUFLLElBQUEsQ0FBSyx1QkFBQSxDQUF5QiwyQkFBMkIsQ0FBQSxDQUFBLEtBQ3pELENBQ0xBLENBQUFBLENBQUssSUFBQSxDQUFLLHFCQUFBLENBQXVCLHNCQUFzQixDQUFBLENBQ3ZELElBQU11RyxDQUFBQSxDQUFPQyxRQUFBQSxFQUFTLENBQ2xCRCxDQUFBQSxHQUFTLFFBQUEsQ0FDWHZHLENBQUFBLENBQUssSUFBQSxDQUFLLGlCQUFpQixDQUFBLENBQ2xCdUcsQ0FBQUEsR0FBUyxPQUFBLENBQ2xCdkcsQ0FBQUEsQ0FBSyxJQUFBLENBQUssaUJBQWlCLENBQUEsRUFFM0JBLENBQUFBLENBQUssSUFBQSxDQUFLLGtCQUFBLENBQW9CLHdCQUF3QixDQUFBLENBQ3REc0csQ0FBQUEsQ0FBUyxJQUFBLENBQUssUUFBUSxDQUFBLEVBRTFCLENBRUEsT0FBQXRHLENBQUFBLENBQUssSUFBQSxDQUFLLENBQUEsZ0JBQUEsRUFBbUJzRyxDQUFBQSxDQUFTLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FDMUN0RyxDQUNULENDdEVPLElBQU15RyxDQUFBQSxDQUFlLGlCQUFBLENBRXJCLFNBQVNDLEVBQUFBLEVBQVEsQ0FDdEIsSUFBTUMsQ0FBQUEsQ0FBTyxPQUFBLENBQVEsSUFBQSxDQUNqQkMsQ0FBQUEsQ0FBT0QsQ0FBQUEsQ0FBSyxJQUFBLENBQU1FLENBQUFBLEVBQVFBLENBQUFBLENBQUksVUFBQSxDQUFXSixDQUFZLENBQUMsQ0FBQSxDQUMxRCxHQUFJLENBQUNHLENBQUFBLENBQ0gsT0FBQXJDLENBQUFBLENBQU8sS0FBQSxDQUFNLFVBQUEsQ0FBWW9DLENBQUksQ0FBQSxDQUN0QixPQUFBLENBQVEsSUFBQSxDQUVqQixJQUFNaEcsQ0FBQUEsQ0FBTyxDQUFDLE1BQUEsQ0FBUSxHQUFHZ0csQ0FBQUEsQ0FBSyxLQUFBLENBQU0sRUFBRSxDQUFDLENBQUEsQ0FDdkMsT0FBQUMsQ0FBQUEsQ0FBTyxNQUFBLENBQU8sS0FBS0EsQ0FBQUEsQ0FBSyxLQUFBLENBQU0sR0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUksUUFBUSxDQUFBLENBQUUsUUFBQSxFQUFTLENBQzNEakcsQ0FBQUEsQ0FBSyxJQUFBLENBQUssR0FBRyxJQUFBLENBQUssS0FBQSxDQUFNaUcsQ0FBSSxDQUFDLENBQUEsQ0FDN0JyQyxDQUFBQSxDQUFPLEtBQUEsQ0FBTSxTQUFBLENBQVc1RCxDQUFJLENBQUEsQ0FDckJBLENBQ1QsQ0FTTyxTQUFTbUcsRUFBQUEsQ0FBS0MsQ0FBQUEsQ0FBYUMsQ0FBQUEsQ0FBdUMsQ0FDdkUsSUFBTUMsQ0FBQUEsQ0FBUUYsQ0FBQUEsQ0FBSSxLQUFBLENBQU0sR0FBRyxDQUFBLENBQUUsTUFBQSxDQUFRekYsQ0FBQUEsRUFBTUEsQ0FBQUEsQ0FBRSxNQUFNLENBQUEsQ0FDN0MsQ0FBQzRGLENBQUFBLENBQVMsR0FBR3ZHLENBQUksQ0FBQSxDQUFJc0csQ0FBQUEsQ0FDM0IsR0FBSSxDQUFDQyxDQUFBQSxDQUNILE1BQU0sSUFBSSxLQUFBLENBQU0sZUFBZSxDQUFBLENBRWpDLElBQU14RCxDQUFBQSxDQUFPeUQsS0FBQUEsQ0FBTUQsQ0FBQUEsQ0FBU3ZHLENBQUFBLENBQU0sQ0FDaEMsS0FBQSxDQUFPLFNBQUEsQ0FDUCxHQUFHcUcsQ0FDTCxDQUFDLENBQUEsQ0FDR0ksQ0FBQUEsQ0FBUyxLQUFBLENBQ2IsT0FBTyxDQUNMLE9BQUEsQ0FBUzFELENBQUFBLENBQ1QsSUFBQSxDQUFNYSxDQUFBQSxDQUFPLE1BQUEsQ0FBT2IsQ0FBQUEsQ0FBTXdELENBQU8sQ0FBQSxDQUNqQyxJQUFJLE1BQUEsRUFBUyxDQUNYLE9BQU9FLENBQ1QsQ0FBQSxDQUNBLElBQUEsRUFBTyxDQUNMLEdBQUlBLENBQUFBLENBQ0YsT0FFRkEsQ0FBQUEsQ0FBUyxJQUFBLENBQ1QsSUFBTUMsQ0FBQUEsQ0FBTTNELENBQUFBLENBQUssR0FBQSxDQUNiMkQsQ0FBQUEsQ0FDRkMsRUFBQUEsQ0FBU0QsQ0FBQUEsQ0FBSyxTQUFTLENBQUEsQ0FFdkIzRCxDQUFBQSxDQUFLLElBQUEsQ0FBSyxTQUFTLEVBRXZCLENBQ0YsQ0FDRixDQ2hEQSxlQUFzQjZELEVBQUFBLENBQWFsQixDQUFBQSxDQUFxQixDQUN0RCxPQUFPLENBQUMsR0FBSSxNQUFNRCxFQUFBQSxDQUFnQkMsQ0FBVSxDQUFBLENBQUksY0FBYyxDQUNoRSxDQUVBLElBQU1aLEVBQUFBLENBQU0sWUFBQSxDQU1aLGVBQXNCK0IsRUFBQUEsQ0FBZSxDQUFFLElBQUEsQ0FBQTdHLENBQUssQ0FBQSxDQUEwQixDQUVwRSxHQUFNLENBQUUsT0FBQSxDQUFTOEcsQ0FBUyxDQUFBLENBQUksTUFBTSxPQUFPLFVBQVUsQ0FBQSxDQUMvQ3pILENBQUFBLENBQU8sTUFBTXVILEVBQUFBLENBQWE1RyxDQUFBQSxDQUFLLFFBQUEsQ0FBUyxlQUFlLENBQUMsQ0FBQSxDQUV4RCtHLENBQUFBLENBQWEsTUFBTUMsT0FBQUEsQ0FBUTlGLElBQUFBLENBQUsrRixNQUFBQSxFQUFPLENBQUcsY0FBYyxDQUFDLENBQUEsQ0FDekRDLENBQUFBLENBQWU3SCxDQUFBQSxDQUFLLEdBQUEsQ0FBSzhILENBQUFBLEVBQU0sQ0FBQSxFQUFBLEVBQUtBLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FDN0NELENBQUFBLENBQWEsSUFBQSxDQUFLLENBQUEsZ0JBQUEsRUFBbUJILENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FDakRHLENBQUFBLENBQWEsSUFBQSxDQUFLLENBQUEsRUFBR3BCLENBQVksQ0FBQSxDQUFBLEVBQUksTUFBQSxDQUFPLElBQUEsQ0FBSyxJQUFBLENBQUssU0FBQSxDQUFVOUYsQ0FBSSxDQUFDLENBQUEsQ0FBRSxRQUFBLENBQVMsUUFBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQzNGLElBQU1vRyxDQUFBQSxDQUFNLENBQUNVLENBQUFBLENBQVUsR0FBR0ksQ0FBQUEsQ0FBY2pHLEVBQU0sQ0FBQSxDQUFFLElBQUEsQ0FBSyxHQUFHLENBQUEsQ0FDeEQyQyxDQUFBQSxDQUFPLEtBQUEsQ0FBTWtCLEVBQUFBLENBQUtzQixDQUFHLENBQUEsQ0FFckIsSUFBTWdCLENBQUFBLENBQXlCLENBQUUsR0FBRyxPQUFBLENBQVEsR0FBQSxDQUFLLGNBQUEsQ0FBZ0IsTUFBTyxDQUFBLENBQ2xFQyxDQUFBQSxDQUFTbEIsRUFBQUEsQ0FBS0MsQ0FBQUEsQ0FBSyxDQUFFLEtBQUEsQ0FBTyxDQUFDLFFBQUEsQ0FBVSxNQUFBLENBQVEsTUFBQSxDQUFRLEtBQUssQ0FBQSxDQUFHLEdBQUEsQ0FBQWdCLENBQUksQ0FBQyxDQUFBLENBQzFFLE9BQUFDLENBQUFBLENBQU8sT0FBQSxDQUFRLElBQUEsQ0FBSyxNQUFBLENBQVEsSUFBTSxDQUNoQyxHQUFJLENBQ0ZDLE1BQUFBLENBQU9QLENBQUFBLENBQVksQ0FBRSxTQUFBLENBQVcsQ0FBQSxDQUFBLENBQU0sS0FBQSxDQUFPLENBQUEsQ0FBSyxDQUFDLEVBQ3JELENBQUEsTUFBU1EsQ0FBQUEsQ0FBRyxDQUNWM0QsQ0FBQUEsQ0FBTyxJQUFBLENBQUtrQixFQUFBQSxDQUFLLHlCQUFBLENBQTJCeUMsQ0FBQyxFQUMvQyxDQUNGLENBQUMsRUFDTUYsQ0FDVCxDQ3RDQSxJQUFNRyxDQUFBQSxDQUFzQixDQUFDLE9BQUEsQ0FBUyxPQUFBLENBQVMsUUFBQSxDQUFVLE9BQU8sQ0FBQSxDQUMxREMsRUFBQUEsQ0FBaUIsd0JBQUEsQ0FFaEIsU0FBU0MsRUFBQUEsQ0FBVUMsQ0FBQUEsQ0FBc0IsQ0FDOUMsR0FBSSxDQUFDRixFQUFBQSxDQUFlLElBQUEsQ0FBS0UsQ0FBTSxDQUFBLENBQUcsQ0FDaEMsSUFBTUMsQ0FBQUEsQ0FBVyxDQUFBLEVBQUdELENBQUFBLENBQU8sS0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUNsQzdFLENBQUFBLENBQVUwRSxDQUFBQSxDQUFvQixRQUFBLENBQVNJLENBQVEsQ0FBQSxDQUNqRCxDQUFBLHNCQUFBLEVBQXlCQSxDQUFRLENBQUEsV0FBQSxFQUFjSixDQUFBQSxDQUFvQixJQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUM3RSxDQUFBLGdDQUFBLEVBQW1DQSxDQUFBQSxDQUFvQixJQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUNyRSxNQUFNLElBQUksS0FBQSxDQUFNMUUsQ0FBTyxDQUN6QixDQUdBLEdBQUk2RSxDQUFBQSxDQUFPLFVBQUEsQ0FBVyxPQUFPLENBQUEsRUFBSyxDQUFDRSxVQUFBQSxDQUFXQyxhQUFBQSxDQUFjSCxDQUFNLENBQUMsQ0FBQSxDQUNqRSxNQUFNLElBQUksS0FBQSxDQUFNLENBQUEsdUJBQUEsRUFBMEJBLENBQU0sQ0FBQSxDQUFFLENBRXRELENDaUVPLElBQU1JLENBQUFBLENBQU4sY0FBd0JDLFlBQXdCLENBQ3JELFdBQUEsQ0FBWUMsQ0FBQUEsQ0FBcUIsQ0FDL0IsS0FBQSxFQUFNLENBQ05BLENBQUFBLENBQU0sRUFBQSxDQUFHLFNBQUEsQ0FBWUMsQ0FBQUEsRUFBUSxDQUMzQixJQUFNckcsQ0FBQUEsQ0FBTXFHLENBQUFBLENBQ1osT0FBUXJHLENBQUFBLENBQUksSUFBQSxFQUNWLEtBQUssU0FBQSxDQUFvQixDQUN2QixJQUFBLENBQUssSUFBQSxDQUFLLFNBQUEsQ0FBV0EsQ0FBQUEsQ0FBSSxLQUFBLENBQU9BLENBQUFBLENBQUksT0FBTyxDQUFBLENBQzNDLEtBQ0YsQ0FDQSxLQUFLLFVBQUEsQ0FBcUIsQ0FDeEIsSUFBQSxDQUFLLElBQUEsQ0FBSyxVQUFBLENBQVlBLENBQUFBLENBQUksS0FBSyxDQUFBLENBQy9CLEtBQ0YsQ0FDQSxLQUFLLE1BQUEsQ0FBaUIsQ0FDcEIsSUFBQSxDQUFLLElBQUEsQ0FBSyxNQUFBLENBQVFBLENBQUFBLENBQUksT0FBTyxDQUFBLENBQzdCLEtBQ0YsQ0FDQSxLQUFLLE9BQUEsQ0FBa0IsQ0FDckIsSUFBQSxDQUFLLElBQUEsQ0FBSyxPQUFBLENBQVMsSUFBSSxLQUFBLENBQU1BLENBQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FDdkMsS0FDRixDQUNGLENBQ0YsQ0FBQyxDQUFBLENBQ0RvRyxDQUFBQSxDQUFNLElBQUEsQ0FBSyxNQUFBLENBQVNFLENBQUFBLEVBQU0sSUFBQSxDQUFLLElBQUEsQ0FBSyxPQUFBLENBQVNBLENBQUMsQ0FBQyxFQUNqRCxDQUNGLENBQUEsQ0NsR0EsSUFBTXJELENBQUFBLENBQU0sT0FBQSxDQVVaLGVBQWVzRCxFQUFBQSxDQUFVVCxDQUFBQSxDQUFnQlUsQ0FBQUEsQ0FBdUIsQ0FDOUR6RSxDQUFBQSxDQUFPLEtBQUEsQ0FBTWtCLENBQUFBLENBQUssV0FBQSxDQUFhNkMsQ0FBQUEsQ0FBUVUsQ0FBTSxDQUFBLENBRTdDLElBQU1ySSxDQUFBQSxDQUFpQixDQUNyQjJILEVBQ0EsU0FBQSxDQUNBLENBQUEsRUFBR1UsQ0FBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUNmLFVBQUEsQ0FDQSxDQUFBLEVBQUdBLENBQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FDaEIsT0FBQSxDQUNBLENBQUEsRUFBR0EsQ0FBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUNiLFlBQUEsQ0FDQSxDQUFBLEVBQUdBLENBQUFBLENBQU8sUUFBUSxDQUFBLENBQUEsQ0FDbEIsa0JBQUEsQ0FDQSxDQUFBLEVBQUdBLENBQUFBLENBQU8sYUFBYSxDQUFBLENBQUEsQ0FDdkIsWUFBQSxDQUNBQSxDQUFBQSxDQUFPLFFBQUEsQ0FBUyxJQUFBLENBQUssR0FBRyxDQUMxQixDQUFBLENBQ0EsT0FBSUEsQ0FBQUEsQ0FBTyxTQUFBLEVBQ1RySSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxjQUFjLENBQUEsQ0FFdEJxSSxDQUFBQSxDQUFPLGFBQUEsRUFDVHJJLENBQUFBLENBQUssSUFBQSxDQUFLLG1CQUFtQixDQUFBLENBRTNCcUksQ0FBQUEsQ0FBTyxhQUFBLEVBQ1RySSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxpQkFBaUIsQ0FBQSxDQUV6QnFJLENBQUFBLENBQU8sVUFBQSxFQUNUckksQ0FBQUEsQ0FBSyxJQUFBLENBQUssZUFBZSxDQUFBLENBRXZCcUksQ0FBQUEsQ0FBTyxjQUFBLEVBQ1RySSxDQUFBQSxDQUFLLElBQUEsQ0FBSyxvQkFBb0IsQ0FBQSxDQUU1QnFJLENBQUFBLENBQU8sb0JBQ1RySSxDQUFBQSxDQUFLLElBQUEsQ0FBSyx3QkFBd0IsQ0FBQSxDQUVoQ3FJLENBQUFBLENBQU8sY0FBQSxFQUNUckksQ0FBQUEsQ0FBSyxJQUFBLENBQUssbUJBQW1CLENBQUEsQ0FFM0JxSSxDQUFBQSxDQUFPLFdBQUEsQ0FBWSxNQUFBLENBQVMsQ0FBQSxFQUM5QnJJLENBQUFBLENBQUssSUFBQSxDQUFLLGVBQUEsQ0FBaUJxSSxDQUFBQSxDQUFPLFdBQUEsQ0FBWSxJQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FHbER4QixFQUFBQSxDQUFlLENBQUUsSUFBQSxDQUFBN0csQ0FBSyxDQUFDLENBQ2hDLENBRUEsSUFBTXNJLENBQUFBLENBQUkzRCxFQUFBQSxDQUVWLGVBQXNCNEQsRUFBQUEsQ0FBSVosQ0FBQUEsQ0FBZ0J0QixDQUFBQSxDQUFrRCxDQUMxRnpDLENBQUFBLENBQU8sS0FBQSxDQUFNa0IsQ0FBQUEsQ0FBSyxLQUFBLENBQU82QyxDQUFBQSxDQUFRdEIsQ0FBTyxDQUFBLENBRXhDLEdBQU0sQ0FBRSxNQUFBLENBQUE5QyxDQUFPLENBQUEsQ0FBSThDLENBQUFBLENBQ25COUMsQ0FBQUEsRUFBUSxjQUFBLEVBQWUsQ0FDdkJtRSxFQUFBQSxDQUFVQyxDQUFNLENBQUEsQ0FFaEIsSUFBTWEsQ0FBQUEsQ0FBV25DLENBQUFBLENBQVEsUUFBQSxFQUFZaUMsQ0FBQUEsQ0FBRSxRQUFBLENBQ2pDRyxDQUFBQSxDQUE0QixDQUNoQyxLQUFBLENBQU9wQyxDQUFBQSxDQUFRLEtBQUEsRUFBU2lDLENBQUFBLENBQUUsS0FBQSxDQUMxQixNQUFBLENBQVFqQyxDQUFBQSxDQUFRLE1BQUEsRUFBVWlDLENBQUFBLENBQUUsTUFBQSxDQUM1QixHQUFBLENBQUtqQyxDQUFBQSxDQUFRLEdBQUEsRUFBT2lDLENBQUFBLENBQUUsR0FBQSxDQUN0QixRQUFBLENBQVVqQyxDQUFBQSxDQUFRLFFBQUEsRUFBWWlDLENBQUFBLENBQUUsUUFBQSxDQUNoQyxTQUFBLENBQVdqQyxDQUFBQSxDQUFRLFNBQUEsRUFBYWlDLENBQUFBLENBQUUsU0FBQSxDQUNsQyxhQUFBLENBQWVqQyxDQUFBQSxDQUFRLGFBQUEsRUFBaUJpQyxDQUFBQSxDQUFFLGFBQUEsQ0FDMUMsYUFBQSxDQUFlakMsQ0FBQUEsQ0FBUSxhQUFBLEVBQWlCaUMsQ0FBQUEsQ0FBRSxhQUFBLENBQzFDLFVBQUEsQ0FBWWpDLENBQUFBLENBQVEsVUFBQSxFQUFjaUMsQ0FBQUEsQ0FBRSxVQUFBLENBQ3BDLGNBQUEsQ0FBZ0JqQyxDQUFBQSxDQUFRLGNBQUEsRUFBa0JpQyxDQUFBQSxDQUFFLGNBQUEsQ0FDNUMsa0JBQUEsQ0FBb0JqQyxDQUFBQSxDQUFRLGtCQUFBLEVBQXNCaUMsQ0FBQUEsQ0FBRSxrQkFBQSxDQUNwRCxjQUFBLENBQWdCakMsQ0FBQUEsQ0FBUSxjQUFBLEVBQWtCaUMsQ0FBQUEsQ0FBRSxjQUFBLENBQzVDLGFBQUEsQ0FBZWpDLENBQUFBLENBQVEsYUFBQSxFQUFpQmlDLENBQUFBLENBQUUsYUFBQSxDQUMxQyxXQUFBLENBQWFqQyxDQUFBQSxDQUFRLFdBQUEsRUFBZWlDLENBQUFBLENBQUUsWUFDdEMsUUFBQSxDQUFBRSxDQUNGLENBQUEsQ0FFTUUsQ0FBQUEsQ0FBSyxXQUFBLENBQVksR0FBQSxFQUFJLENBQ3ZCQyxDQUFBQSxDQUFXLENBQUEsQ0FDVEMsQ0FBQUEsQ0FBUUMsQ0FBQUEsRUFBYyxDQUMxQkYsQ0FBQUEsQ0FBV0UsQ0FBQUEsQ0FDWHhDLENBQUFBLENBQVEsVUFBQSxHQUFhd0MsQ0FBQyxFQUN4QixDQUFBLENBRU14QixDQUFBQSxDQUFTLE1BQU1lLEVBQUFBLENBQVVULENBQUFBLENBQVFjLENBQVUsQ0FBQSxDQUU3Q0ssQ0FBQUEsQ0FDRUMsQ0FBQUEsQ0FBVSxJQUFNLENBQ3BCMUIsQ0FBQUEsQ0FBTyxPQUFBLENBQVEsSUFBQSxHQUFPLENBQUUsSUFBQSxDQUFBLFFBQUEsQ0FBeUIsTUFBQSxDQUFRLE1BQUEsQ0FBTzlELENBQUFBLEVBQVEsTUFBQSxFQUFVLE9BQU8sQ0FBRSxDQUFDLENBQUEsQ0FDNUZ1RixDQUFBQSxDQUFZLFVBQUEsQ0FBVyxJQUFNekIsQ0FBQUEsQ0FBTyxJQUFBLEVBQUssQ0FBRyxHQUFLLEVBQ25ELENBQUEsQ0FDQTlELENBQUFBLEVBQVEsZ0JBQUEsQ0FBaUIsT0FBQSxDQUFTd0YsQ0FBQUEsQ0FBUyxDQUFFLElBQUEsQ0FBTSxJQUFLLENBQUMsQ0FBQSxDQUV6RCxHQUFJLENBQ0YsSUFBTTNELENBQUFBLENBQVMsSUFBSSxPQUFBLENBQXdCLENBQUNwQyxDQUFBQSxDQUFTQyxDQUFBQSxHQUFXLENBQzlELElBQUk4RSxDQUFBQSxDQUFVVixDQUFBQSxDQUFPLE9BQU8sQ0FBQSxDQUN6QixFQUFBLENBQUcsT0FBQSxDQUFVL0QsQ0FBQUEsRUFBUyxDQUNyQixJQUFNekIsQ0FBQUEsQ0FBTSxJQUFBLENBQUssU0FBQSxDQUFVLENBQUUsTUFBQSxDQUFBOEYsQ0FBQUEsQ0FBUSxRQUFBLENBQUFnQixDQUFBQSxDQUFVLElBQUEsQ0FBQXJGLENBQUFBLENBQU0sTUFBQSxDQUFRK0QsQ0FBQUEsQ0FBTyxNQUFPLENBQUMsQ0FBQSxDQUM1RXBFLENBQUFBLENBQU8sSUFBSSxLQUFBLENBQU0sQ0FBQSxTQUFBLEVBQVlwQixDQUFHLENBQUEsQ0FBRSxDQUFDLEVBQ3JDLENBQUMsQ0FBQSxDQUNBLEVBQUEsQ0FBRyxVQUFBLENBQVkrRyxDQUFJLENBQUEsQ0FDbkIsRUFBQSxDQUFHLFNBQUEsQ0FBVyxDQUFDSSxDQUFBQSxDQUFHQyxDQUFBQSxHQUFNNUMsQ0FBQUEsQ0FBUSxTQUFBLEdBQVkyQyxDQUFBQSxDQUFHQyxDQUFDLENBQUMsQ0FBQSxDQUNqRCxFQUFBLENBQUcsTUFBQSxDQUFRakcsQ0FBTyxDQUFBLENBQ2xCLEVBQUEsQ0FBRyxPQUFBLENBQVNDLENBQU0sRUFDdkIsQ0FBQyxFQUNEMkYsQ0FBQUEsQ0FBSyxDQUFDLENBQUEsQ0FDTixHQUFNLENBQUNNLENBQU8sQ0FBQSxDQUFJLE1BQU0sT0FBQSxDQUFRLEdBQUEsQ0FBSSxDQUFDOUQsQ0FBQUEsQ0FBUWlDLENBQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FDekQsT0FBQXVCLENBQUFBLENBQUssR0FBRyxDQUFBLENBQ1JoRixDQUFBQSxDQUFPLEtBQUEsQ0FBTWtCLENBQUFBLENBQUssQ0FBQSxLQUFBLEVBQVEwRCxDQUFBQSxDQUFTLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxJQUFBLEVBQU8sSUFBQSxDQUFLLEtBQUEsQ0FBTSxXQUFBLENBQVksR0FBQSxFQUFJLENBQUlFLENBQUUsQ0FBQyxDQUFBLEVBQUEsQ0FBSSxDQUFBLENBQ2xGLENBQUUsR0FBR1EsQ0FBQUEsQ0FBUyxPQUFBLENBQVNULENBQVcsQ0FDM0MsQ0FBQSxNQUFTbEIsQ0FBQUEsQ0FBRyxDQUNWLE1BQUFGLENBQUFBLENBQU8sSUFBQSxFQUFLLENBQ1o5RCxDQUFBQSxFQUFRLGNBQUEsRUFBZSxDQUNqQmdFLENBQ1IsQ0FBQSxPQUFFLENBQ0EsWUFBQSxDQUFhdUIsQ0FBUyxDQUFBLENBQ3RCdkYsQ0FBQUEsRUFBUSxtQkFBQSxDQUFvQixPQUFBLENBQVN3RixDQUFPLEVBQzlDLENBQ0YiLCJmaWxlIjoiY2h1bmstTjcyWkVDUFkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA1LzI2LlxuXG5pbXBvcnQgdHlwZSB7IExvZ2dlckxpa2UgfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmNvbnN0IEJBUl9XSURUSCA9IDQwO1xuXG5pbnRlcmZhY2UgQmFyT3B0aW9ucyB7XG4gIHRvdGFsOiBudW1iZXI7XG4gIG91dDogTm9kZUpTLldyaXRlU3RyZWFtO1xuICBzaG93Q291bnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NCYXIge1xuICBwcml2YXRlIF93cml0dGVuID0gMDtcbiAgcHJpdmF0ZSBfc2hvd24gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG90YWw6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3V0OiBOb2RlSlMuV3JpdGVTdHJlYW07XG4gIHByaXZhdGUgcmVhZG9ubHkgX3R0eTogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2hvd0NvdW50OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IEJhck9wdGlvbnMpIHtcbiAgICB0aGlzLl90b3RhbCA9IG9wdHMudG90YWw7XG4gICAgdGhpcy5fb3V0ID0gb3B0cy5vdXQ7XG4gICAgdGhpcy5fdHR5ID0gISFvcHRzLm91dC5pc1RUWTtcbiAgICB0aGlzLl9zaG93Q291bnQgPSBvcHRzLnNob3dDb3VudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCB0b3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b3RhbDtcbiAgfVxuXG4gIHVwZGF0ZSh3cml0dGVuOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl93cml0dGVuID0gTWF0aC5taW4odGhpcy5fdG90YWwsIE1hdGgubWF4KDAsIHdyaXR0ZW4pKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgdXBkYXRlUGVyY2VudChwY3Q6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlKE1hdGgucm91bmQoKHBjdCAvIDEwMCkgKiB0aGlzLl90b3RhbCkpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3R0eSAmJiB0aGlzLl9zaG93bikge1xuICAgICAgdGhpcy5fb3V0LndyaXRlKFwiXFxyXFx4MWJbMktcIik7XG4gICAgfVxuICB9XG5cbiAgcmVkcmF3KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsb2cobGluZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMuX291dC53cml0ZShgJHtsaW5lfVxcbmApO1xuICAgIHRoaXMucmVkcmF3KCk7XG4gIH1cblxuICBmaW5pc2gobGluZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMuX291dC53cml0ZShgJHtsaW5lfVxcbmApO1xuICAgIHRoaXMuX3Nob3duID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3R0eSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5fd3JpdHRlbiA9PT0gMCAmJiAhdGhpcy5fc2hvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmF0aW8gPSB0aGlzLl90b3RhbCA+IDAgPyB0aGlzLl93cml0dGVuIC8gdGhpcy5fdG90YWwgOiAwO1xuICAgIGNvbnN0IGZpbGxlZCA9IE1hdGgucm91bmQocmF0aW8gKiBCQVJfV0lEVEgpO1xuICAgIGNvbnN0IGJhciA9IFwiI1wiLnJlcGVhdChmaWxsZWQpICsgXCItXCIucmVwZWF0KEJBUl9XSURUSCAtIGZpbGxlZCk7XG4gICAgY29uc3QgcGN0ID0gTWF0aC5yb3VuZChyYXRpbyAqIDEwMCk7XG4gICAgY29uc3Qgc3VmZml4ID0gdGhpcy5fc2hvd0NvdW50ID8gYCR7dGhpcy5fd3JpdHRlbn0vJHt0aGlzLl90b3RhbH0gKCR7cGN0fSUpYCA6IGAke3BjdH0lYDtcbiAgICB0aGlzLl9vdXQud3JpdGUoYFxcclske2Jhcn1dICR7c3VmZml4fWApO1xuICAgIHRoaXMuX3Nob3duID0gdHJ1ZTtcbiAgfVxufVxuXG4vLyBBcm91bmQgZWFjaCBjb25zb2xlLiogY2FsbCwgY2xlYXIgdGhlIGJhciBsaW5lIHRoZW4gcmVkcmF3IOKAlCBrZWVwcyBuYXRpdmUgY29uc29sZSBjb2xvcmluZyBpbnRhY3QuXG5leHBvcnQgZnVuY3Rpb24gYmFyTG9nZ2VyKGJhcjogUHJvZ3Jlc3NCYXIpOiBMb2dnZXJMaWtlIHtcbiAgY29uc3Qgd3JhcCA9XG4gICAgPFQgZXh0ZW5kcyAoLi4uYTogdW5rbm93bltdKSA9PiB2b2lkPihmbjogVCkgPT5cbiAgICAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICBiYXIuY2xlYXIoKTtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgYmFyLnJlZHJhdygpO1xuICAgIH07XG4gIHJldHVybiB7XG4gICAgZGVidWc6IHdyYXAoY29uc29sZS5kZWJ1ZyksXG4gICAgaW5mbzogd3JhcChjb25zb2xlLmluZm8pLFxuICAgIHdhcm46IHdyYXAoY29uc29sZS53YXJuKSxcbiAgICBlcnJvcjogd3JhcChjb25zb2xlLmVycm9yKSxcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmV4cG9ydCB0eXBlIEVudlBhcnNlcjxUPiA9ICh2YWx1ZTogdW5rbm93bikgPT4gVDtcblxuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlOiBUKTogVDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KG5hbWU6IHN0cmluZywgcGFyc2VyOiBFbnZQYXJzZXI8VD4sIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlPzogVCk6IFQgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIHJldHVybiBwYXJzZXIocHJvY2Vzcy5lbnZbbmFtZV0pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdW1iZXIoeDogdW5rbm93bik6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgeCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB4O1xuICB9XG4gIGNvbnN0IG51bSA9IE51bWJlcih4KTtcbiAgaWYgKE51bWJlci5pc05hTihudW0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSAke3h9IGlzIG5vdCBhIHZhbGlkIG51bWJlcmApO1xuICB9XG4gIHJldHVybiBudW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0cmluZyh4OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHg7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh4KTtcbn1cblxuLy8gQ29tbWEtc2VwYXJhdGVkIHN0cmluZyDihpIgYXJyYXkgdmlhIGEgcGVyLWl0ZW0gcGFyc2VyOyBlbXB0eS9ibGFuayDihpIgW10uXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBcnJheTxUPihpdGVtOiAoeDogdW5rbm93bikgPT4gVCk6ICh4OiB1bmtub3duKSA9PiBUW10ge1xuICByZXR1cm4gKHgpID0+IHtcbiAgICBpZiAodHlwZW9mIHggIT09IFwic3RyaW5nXCIgfHwgeC50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHguc3BsaXQoXCIsXCIpLm1hcCgocykgPT4gaXRlbShzLnRyaW0oKSkpO1xuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHBlbnYgfSBmcm9tIFwiLi9lbnZcIjtcbmltcG9ydCB7IHBhcnNlTnVtYmVyIH0gZnJvbSBcIi4vcGFyc2VyXCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmV4cG9ydCBjb25zdCBwdXBMb2dMZXZlbCA9IHBlbnYoXCJQVVBfTE9HX0xFVkVMXCIsIHBhcnNlTnVtYmVyLCAyKTtcblxuZXhwb3J0IGNvbnN0IHB1cFBrZ1Jvb3QgPSBkaXJuYW1lKHJlcXVpcmUucmVzb2x2ZShcInB1cC1yZWNvcmRlci9wYWNrYWdlLmpzb25cIikpO1xuZXhwb3J0IGNvbnN0IHB1cEFwcCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwiYXBwLmNqc1wiKTtcbmV4cG9ydCBjb25zdCBwdXBQcmVsb2FkID0gam9pbihwdXBQa2dSb290LCBcImRpc3RcIiwgXCJydW50aW1lXCIsIFwicHJlbG9hZC5janNcIik7XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA2LlxuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IExvZyB9IGZyb20gXCJub2RlLWF2XCI7XG5pbXBvcnQgeyBBVl9MT0dfRVJST1IsIEFWX0xPR19XQVJOSU5HIH0gZnJvbSBcIm5vZGUtYXYvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBwdXBMb2dMZXZlbCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlckxpa2Uge1xuICBkZWJ1Zz8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgaW5mbz8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgd2Fybj8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG5cbiAgZXJyb3I/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xufVxuXG5jb25zdCBERUJVRyA9IFwiPHB1cEBkZWJ1Zz5cIjtcbmNvbnN0IElORk8gPSBcIjxwdXBAaW5mbz5cIjtcbmNvbnN0IFdBUk4gPSBcIjxwdXBAd2Fybj5cIjtcbmNvbnN0IEVSUk9SID0gXCI8cHVwQGVycm9yPlwiO1xuY29uc3QgRkFUQUwgPSBcIjxwdXBAZmF0YWw+XCI7XG5cbmZ1bmN0aW9uIHN0YWNrSG9vayh0YXJnZXQ6ICguLi5tZXNzYWdlczogdW5rbm93bltdKSA9PiB1bmtub3duLCBfY29udGV4dDogQ2xhc3NNZXRob2REZWNvcmF0b3JDb250ZXh0KSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhpczogTG9nZ2VyLCAuLi5tZXNzYWdlczogdW5rbm93bltdKSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkID0gbWVzc2FnZXMubWFwKChtc2cpID0+IHtcbiAgICAgIHJldHVybiBtc2cgaW5zdGFuY2VvZiBFcnJvciA/IChtc2cuc3RhY2sgPz8gU3RyaW5nKG1zZykpIDogbXNnO1xuICAgIH0pO1xuICAgIHJldHVybiB0YXJnZXQuY2FsbCh0aGlzLCAuLi5wcm9jZXNzZWQpO1xuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgTG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VyTGlrZSB7XG4gIHByaXZhdGUgX2ltcGw/OiBMb2dnZXJMaWtlO1xuXG4gIGdldCBsZXZlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sZXZlbDtcbiAgfVxuXG4gIHNldCBsZXZlbCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGV2ZWwgPSB2YWx1ZTtcbiAgICB0aGlzLmltcGwgPSB0aGlzLl9pbXBsID8/IGNvbnNvbGU7XG4gIH1cblxuICBnZXQgaW1wbCgpOiBMb2dnZXJMaWtlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW1wbDtcbiAgfVxuXG4gIHNldCBpbXBsKHZhbHVlOiBMb2dnZXJMaWtlKSB7XG4gICAgY29uc3QgZGVidWcgPSB2YWx1ZS5kZWJ1ZyA/PyBjb25zb2xlLmRlYnVnO1xuICAgIGNvbnN0IGluZm8gPSB2YWx1ZS5pbmZvID8/IGNvbnNvbGUuaW5mbztcbiAgICBjb25zdCB3YXJuID0gdmFsdWUud2FybiA/PyBjb25zb2xlLndhcm47XG4gICAgY29uc3QgZXJyb3IgPSB2YWx1ZS5lcnJvciA/PyBjb25zb2xlLmVycm9yO1xuICAgIGNvbnN0IGx2ID0gdGhpcy5fbGV2ZWw7XG4gICAgdGhpcy5faW1wbCA9IHtcbiAgICAgIGRlYnVnOiBsdiA+PSAzID8gZGVidWcgOiB1bmRlZmluZWQsXG4gICAgICBpbmZvOiBsdiA+PSAyID8gaW5mbyA6IHVuZGVmaW5lZCxcbiAgICAgIHdhcm46IGx2ID49IDEgPyB3YXJuIDogdW5kZWZpbmVkLFxuICAgICAgZXJyb3I6IGx2ID49IDAgPyBlcnJvciA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbGV2ZWw6IG51bWJlciA9IHB1cExvZ0xldmVsKSB7XG4gICAgdGhpcy5pbXBsID0gY29uc29sZTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgZGVidWcoLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uZGVidWc/LihERUJVRywgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBpbmZvKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmluZm8/LihJTkZPLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIHdhcm4oLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8ud2Fybj8uKFdBUk4sIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgZXJyb3IoLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uZXJyb3I/LihFUlJPUiwgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBmYXRhbCguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5lcnJvcj8uKEZBVEFMLCAuLi5tZXNzYWdlcyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaChtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtc2cgPSBtZXNzYWdlLnRyaW1FbmQoKTtcbiAgICBpZiAobXNnLnN0YXJ0c1dpdGgoREVCVUcpKSB7XG4gICAgICB0aGlzLmRlYnVnKG1zZy5zbGljZShERUJVRy5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtc2cuc3RhcnRzV2l0aChJTkZPKSkge1xuICAgICAgdGhpcy5pbmZvKG1zZy5zbGljZShJTkZPLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1zZy5zdGFydHNXaXRoKFdBUk4pKSB7XG4gICAgICB0aGlzLndhcm4obXNnLnNsaWNlKFdBUk4ubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobXNnLnN0YXJ0c1dpdGgoRVJST1IpKSB7XG4gICAgICB0aGlzLmVycm9yKG1zZy5zbGljZShFUlJPUi5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5mbyhtc2cpO1xuICAgIH1cbiAgfVxuXG4gIGF0dGFjaChwcm9jOiBDaGlsZFByb2Nlc3MsIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmRlYnVnKGAke25hbWV9LmF0dGFjaGApO1xuICAgICAgbGV0IGZhdGFsOiBzdHJpbmcgPSBcIlwiO1xuICAgICAgY29uc3QgZGlzcGF0Y2ggPSAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChtZXNzYWdlLnN0YXJ0c1dpdGgoRkFUQUwpKSB7XG4gICAgICAgICAgZmF0YWwgKz0gbWVzc2FnZS5zbGljZShGQVRBTC5sZW5ndGggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcHJvYy5zdGRlcnI/Lm9uKFwiZGF0YVwiLCBkaXNwYXRjaCk7XG4gICAgICBwcm9jLnN0ZG91dD8ub24oXCJkYXRhXCIsIGRpc3BhdGNoKTtcbiAgICAgIHByb2NcbiAgICAgICAgLm9uKFwiZXJyb3JcIiwgKGVycikgPT4ge1xuICAgICAgICAgIGZhdGFsICs9IGVyci5tZXNzYWdlO1xuICAgICAgICAgIHByb2Mua2lsbCgpO1xuICAgICAgICB9KVxuICAgICAgICAub25jZShcImNsb3NlXCIsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgICBpZiAoY29kZSB8fCBzaWduYWwgfHwgZmF0YWwpIHtcbiAgICAgICAgICAgIGZhdGFsIHx8PSBgY29tbWFuZCBmYWlsZWQ6ICR7cHJvYy5zcGF3bmFyZ3Muam9pbihcIiBcIil9YDtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uY2xvc2VgLCB7IGNvZGUsIHNpZ25hbCwgZmF0YWwgfSk7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGZhdGFsKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uY2xvc2VgKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5vbihcInVuaGFuZGxlZFJlamVjdGlvblwiLCAocmVhc29uKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvcihgJHtuYW1lfS51bmhhbmRsZWRgLCByZWFzb24pO1xuICAgICAgICB9KVxuICAgICAgICAub24oXCJ1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3JcIiwgKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3IoYCR7bmFtZX0udW5oYW5kbGVkYCwgZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuXG4vLyBSb3V0ZSBmZm1wZWcgbmF0aXZlIGxvZ3MgdGhyb3VnaCBwdXAncyBsb2dnZXIuXG5Mb2cuc2V0Q2FsbGJhY2soKGxldmVsLCBtZXNzYWdlKSA9PiB7XG4gIGNvbnN0IG1zZyA9IG1lc3NhZ2UudHJpbUVuZCgpO1xuICBpZiAoIW1zZykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAobGV2ZWwgPD0gQVZfTE9HX0VSUk9SKSB7XG4gICAgbG9nZ2VyLmVycm9yKG1zZyk7XG4gIH0gZWxzZSBpZiAobGV2ZWwgPD0gQVZfTE9HX1dBUk5JTkcpIHtcbiAgICBsb2dnZXIud2Fybihtc2cpO1xuICB9XG59KTtcblxuZXhwb3J0IHsgbG9nZ2VyIH07XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI0LlxuXG5leHBvcnQgZnVuY3Rpb24gbm9lcnI8QSBleHRlbmRzIHVua25vd25bXSwgUiwgRD4oZm46ICguLi5hcmdzOiBBKSA9PiBSLCBkZWZhdWx0VmFsdWU6IEQpOiAoLi4uYXJnczogQSkgPT4gUiB8IEQge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmV0ID0gZm4oLi4uYXJncyk7XG4gICAgICBpZiAocmV0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gcmV0LmNhdGNoKCgpID0+IGRlZmF1bHRWYWx1ZSkgYXMgUiB8IEQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA2LlxuXG5pbXBvcnQgeiBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJRFRIID0gMTkyMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFSUdIVCA9IDEwODA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9GUFMgPSAzMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0RVUkFUSU9OID0gNTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJTkRPV19USU1FT1VUID0gMTA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRfRklMRVMgPSBbXCJvdXQvaHRtbC5tcDRcIiwgXCJvdXQvaHRtbC53ZWJtXCJdO1xuXG5leHBvcnQgY29uc3QgcmVuZGVyU2NoZW1hID0gei5vYmplY3Qoe1xuICBkdXJhdGlvbjogei5udW1iZXIoKS5kZXNjcmliZShcIkR1cmF0aW9uIGluIHNlY29uZHNcIiksXG4gIHdpZHRoOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiVmlkZW8gd2lkdGhcIiksXG4gIGhlaWdodDogei5udW1iZXIoKS5kZXNjcmliZShcIlZpZGVvIGhlaWdodFwiKSxcbiAgZnBzOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiRnJhbWVzIHBlciBzZWNvbmRcIiksXG4gIHdpdGhBdWRpbzogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJDYXB0dXJlIGFuZCBlbmNvZGUgYXVkaW9cIiksXG4gIG91dEZpbGVzOiB6LmFycmF5KHouc3RyaW5nKCkpLmRlc2NyaWJlKFwiT3V0cHV0IHBhdGhzOyBleHRlbnNpb24gKC5tcDQvLndlYm0pIHNlbGVjdHMgZW5jb2RlclwiKSxcbiAgdXNlSW5uZXJQcm94eTogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJVc2UgYmlsaWJpbGkgaW5uZXIgcHJveHkgZm9yIHJlc291cmNlIGFjY2Vzc1wiKSxcbiAgZGV0ZXJtaW5pc3RpYzogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJSZW5kZXIgYnkgZnJhbWUgcmF0aGVyIHRoYW4gcmVjb3JkaW5nXCIpLFxuICBkaXNhYmxlR3B1OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkRpc2FibGUgR1BVIHJlbmRlcmluZywgbWF5IHJlZHVjZSBwZXJmb3JtYW5jZSBidXQgaW5jcmVhc2Ugc3RhYmlsaXR5XCIpLFxuICBkaXNhYmxlSHdDb2RlYzogei5ib29sZWFuKCkuZGVzY3JpYmUoXCJEaXNhYmxlIGhhcmR3YXJlIHZpZGVvIGVuY29kZXIgKE5WRU5DL1ZpZGVvVG9vbGJveCksIHVzZSBzb2Z0d2FyZSB4MjY1XCIpLFxuICBkaXNhYmxlV2ViU2VjdXJpdHk6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiRHJvcCB0aGUgc2FtZS1vcmlnaW4gd2FsbDsgcmVxdWlyZWQgdG8gcmVjb3JkIGEgbG9jYWwgZmlsZVwiKSxcbiAgd2luZG93VG9sZXJhbnQ6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiRmFsbCBiYWNrIHRvIGRvbS1yZWFkeSBpZiB3YXJtdXAgbG9hZCB0aW1lcyBvdXRcIiksXG4gIHdpbmRvd1RpbWVvdXQ6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJXaW5kb3cgbG9hZCB0aW1lb3V0IGluIHNlY29uZHNcIiksXG4gIHNjcmVlbnNob3RzOiB6LmFycmF5KHoubnVtYmVyKCkpLmRlc2NyaWJlKFwiU2Vjb25kIG1hcmtzIHRvIGR1bXAgZnJhbWUgYml0bWFwcyBhcyBQTkdcIiksXG59KTtcblxuZXhwb3J0IHR5cGUgUmVuZGVyT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIHJlbmRlclNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIENvbnNvbGVDYWxsYmFjayA9IChsZXZlbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzQ2FsbGJhY2sgPSAocHJvZ3Jlc3M6IG51bWJlcikgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBJUENSZW5kZXJPcHRpb25zIGV4dGVuZHMgUmVuZGVyT3B0aW9ucyB7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBzaWduYWw6IEFib3J0U2lnbmFsO1xuICBvblByb2dyZXNzOiBQcm9ncmVzc0NhbGxiYWNrO1xuICBvbkNvbnNvbGU6IENvbnNvbGVDYWxsYmFjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJSZXN1bHQge1xuICBvcHRpb25zOiBSZW5kZXJPcHRpb25zO1xuICB3cml0dGVuOiBudW1iZXI7XG4gIG91dEZpbGVzOiBzdHJpbmdbXTtcbiAgYmxhbms6IG51bWJlcjtcbiAgamFuazogbnVtYmVyO1xuICBzY3JlZW5zaG90czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UmVuZGVyT3B0aW9uczogUmVuZGVyT3B0aW9ucyA9IHtcbiAgd2lkdGg6IERFRkFVTFRfV0lEVEgsXG4gIGhlaWdodDogREVGQVVMVF9IRUlHSFQsXG4gIGZwczogREVGQVVMVF9GUFMsXG4gIGR1cmF0aW9uOiBERUZBVUxUX0RVUkFUSU9OLFxuICBvdXRGaWxlczogREVGQVVMVF9PVVRfRklMRVMsXG4gIHdpdGhBdWRpbzogZmFsc2UsXG4gIHVzZUlubmVyUHJveHk6IGZhbHNlLFxuICBkZXRlcm1pbmlzdGljOiBmYWxzZSxcbiAgZGlzYWJsZUdwdTogZmFsc2UsXG4gIGRpc2FibGVId0NvZGVjOiBmYWxzZSxcbiAgZGlzYWJsZVdlYlNlY3VyaXR5OiBmYWxzZSxcbiAgd2luZG93VG9sZXJhbnQ6IGZhbHNlLFxuICB3aW5kb3dUaW1lb3V0OiBERUZBVUxUX1dJTkRPV19USU1FT1VULFxuICBzY3JlZW5zaG90czogW10sXG59O1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMS8zMC5cblxuZXhwb3J0IGNsYXNzIExhenk8VD4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtYWtlVmFsdWU6ICgpID0+IFQpIHt9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5tYWtlVmFsdWUoKTtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlITtcbiAgfVxuXG4gIGdldCBpbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIF92YWx1ZTogVCB8IHVuZGVmaW5lZDtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjcuXG5cbmltcG9ydCB7IEhhcmR3YXJlQ29udGV4dCB9IGZyb20gXCJub2RlLWF2L2FwaVwiO1xuaW1wb3J0IHsgTGF6eSB9IGZyb20gXCIuL2xhenlcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuY29uc3QgVEFHID0gXCJbSFdBY2NlbF1cIjtcblxuLy8gTGF6eTogZWFnZXIgYXV0bygpIGRsb3BlbnMgbGliY3VkYSBhdCBpbXBvcnQsIHdob3NlIGluaXQgdGhyZWFkIGNhbiBTRUdWIEdQVS1sZXNzIHBvZHMgKDIwMjYtMDctMjQgZXhpdC0xMzIgc3Rvcm0pLlxuZXhwb3J0IGNvbnN0IGNhbklVc2VHUFUgPSBuZXcgTGF6eSgoKSA9PiB7XG4gIHVzaW5nIGh3ID0gSGFyZHdhcmVDb250ZXh0LmF1dG8oKTtcbiAgY29uc3QgcmVzdWx0ID0gaHcgIT09IG51bGw7XG4gIGxvZ2dlci5kZWJ1ZyhUQUcsIFwiZ3B1OlwiLCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA0LzAzLlxuXG5pbXBvcnQgeyBwbGF0Zm9ybSB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBwdXBMb2dMZXZlbCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY2FuSVVzZUdQVSB9IGZyb20gXCIuL2h3YWNjZWxcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNocm9taXVtT3B0aW9ucyhkaXNhYmxlR3B1OiBib29sZWFuKSB7XG4gIGNvbnN0IG9wdHMgPSBbXG4gICAgLy8g5a655Zmo5rKZ566xXG4gICAgXCJuby1zYW5kYm94XCIsXG4gICAgXCJkaXNhYmxlLWRldi1zaG0tdXNhZ2VcIixcbiAgICAvLyDot6jln58v5a6J5YWoXG4gICAgXCJkaXNhYmxlLXdlYi1zZWN1cml0eVwiLFxuICAgIFwiZGlzYWJsZS1zaXRlLWlzb2xhdGlvbi10cmlhbHNcIixcbiAgICBcImlnbm9yZS1jZXJ0aWZpY2F0ZS1lcnJvcnNcIixcbiAgICAvLyDlvZXliLbooYzkuLpcbiAgICBcImRpc2FibGUtYmxpbmstZmVhdHVyZXM9QXV0b21hdGlvbkNvbnRyb2xsZWRcIixcbiAgICBcIm11dGUtYXVkaW9cIixcbiAgICBcImF1dG9wbGF5LXBvbGljeT1uby11c2VyLWdlc3R1cmUtcmVxdWlyZWRcIixcbiAgICBcImRpc2FibGUtZXh0ZW5zaW9uc1wiLFxuICAgIFwiZGVueS1wZXJtaXNzaW9uLXByb21wdHNcIixcbiAgICBcInVzZS1tb2NrLWtleWNoYWluXCIsXG4gICAgLy8g5riy5p+TXG4gICAgXCJmb3JjZS1kZXZpY2Utc2NhbGUtZmFjdG9yPTFcIixcbiAgICBcImZvcmNlLWNvbG9yLXByb2ZpbGU9c3JnYlwiLFxuICAgIFwiaWdub3JlLWdwdS1ibG9ja2xpc3RcIixcbiAgICBcInVzZS1nbD1hbmdsZVwiLFxuICAgIFwiZGV0ZXJtaW5pc3RpYy1tb2RlXCIsXG4gICAgXCJlbmFibGUtYmVnaW4tZnJhbWUtY29udHJvbFwiLFxuICAgIFwiZGlzYWJsZS1uZXctY29udGVudC1yZW5kZXJpbmctdGltZW91dFwiLFxuICAgIFwicnVuLWFsbC1jb21wb3NpdG9yLXN0YWdlcy1iZWZvcmUtZHJhd1wiLFxuICAgIFwiZGlzYWJsZS10aHJlYWRlZC1hbmltYXRpb25cIixcbiAgICBcImRpc2FibGUtdGhyZWFkZWQtc2Nyb2xsaW5nXCIsXG4gICAgXCJkaXNhYmxlLWNoZWNrZXItaW1hZ2luZ1wiLFxuICAgIFwiZGlzYWJsZS1pbWFnZS1hbmltYXRpb24tcmVzeW5jXCIsXG4gICAgXCJlbmFibGUtc3VyZmFjZS1zeW5jaHJvbml6YXRpb25cIixcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcHVwcGV0ZWVyL3B1cHBldGVlci9pc3N1ZXMvMjQxMFxuICAgIFwiZm9udC1yZW5kZXItaGludGluZz1ub25lXCIsXG4gICAgLy8g6LWE5rqQ5o6n5Yi2XG4gICAgXCJkaXNhYmxlLWJhY2tncm91bmQtbmV0d29ya2luZ1wiLFxuICAgIFwianMtZmxhZ3M9LS1tYXgtb2xkLXNwYWNlLXNpemU9NTEyXCIsXG4gICAgXCJyZW5kZXJlci1wcm9jZXNzLWxpbWl0PTFcIixcbiAgICBcIm51bS1yYXN0ZXItdGhyZWFkcz0yXCIsXG4gICAgXCJkaXNhYmxlLWJhY2tncm91bmQtdGltZXItdGhyb3R0bGluZ1wiLFxuICAgIFwiZGlzYWJsZS1yZW5kZXJlci1iYWNrZ3JvdW5kaW5nXCIsXG4gICAgXCJkaXNhYmxlLWJhY2tncm91bmRpbmctb2NjbHVkZWQtd2luZG93c1wiLFxuICAgIC8vIOaXpeW/l+i/vei4qlxuICAgIFwiZW5hYmxlLWxvZ2dpbmc9c3RkZXJyXCIsXG4gIF07XG5cbiAgaWYgKHB1cExvZ0xldmVsID49IDMpIHtcbiAgICBvcHRzLnB1c2goXCJsb2ctbGV2ZWw9MFwiLCBcInY9MVwiKTtcbiAgfSBlbHNlIHtcbiAgICBvcHRzLnB1c2goXCJsb2ctbGV2ZWw9M1wiKTtcbiAgfVxuXG4gIGNvbnN0IGZlYXR1cmVzID0gW1wiRm9udGF0aW9uQmFja2VuZFwiXTtcbiAgLy8gZGlzYWJsZUdwdSBmaXJzdDogaXQgc2hvcnQtY2lyY3VpdHMgcGFzdCB0aGUgbGF6eSBwcm9iZSwgc28gYSBkaXNhYmxlZCBwb2QgbmV2ZXIgZGxvcGVucyBsaWJjdWRhLlxuICBjb25zdCBlbmFibGVHcHUgPSAhZGlzYWJsZUdwdSAmJiBjYW5JVXNlR1BVLnZhbHVlO1xuICBpZiAoIWVuYWJsZUdwdSkge1xuICAgIG9wdHMucHVzaChcInVzZS1hbmdsZT1zd2lmdHNoYWRlclwiLCBcImVuYWJsZS11bnNhZmUtc3dpZnRzaGFkZXJcIik7XG4gIH0gZWxzZSB7XG4gICAgb3B0cy5wdXNoKFwiZGlzYWJsZS1ncHUtc2FuZGJveFwiLCBcImVuYWJsZS11bnNhZmUtd2ViZ3B1XCIpO1xuICAgIGNvbnN0IHBsYXQgPSBwbGF0Zm9ybSgpO1xuICAgIGlmIChwbGF0ID09PSBcImRhcndpblwiKSB7XG4gICAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9bWV0YWxcIik7XG4gICAgfSBlbHNlIGlmIChwbGF0ID09PSBcIndpbjMyXCIpIHtcbiAgICAgIG9wdHMucHVzaChcInVzZS1hbmdsZT1kM2QxMVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0cy5wdXNoKFwidXNlLWFuZ2xlPXZ1bGthblwiLCBcImRpc2FibGUtdnVsa2FuLXN1cmZhY2VcIik7XG4gICAgICBmZWF0dXJlcy5wdXNoKFwiVnVsa2FuXCIpO1xuICAgIH1cbiAgfVxuXG4gIG9wdHMucHVzaChgZW5hYmxlLWZlYXR1cmVzPSR7ZmVhdHVyZXMuam9pbihcIixcIil9YCk7XG4gIHJldHVybiBvcHRzO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMS8zMC5cblxuaW1wb3J0IHsgdHlwZSBDaGlsZFByb2Nlc3MsIHR5cGUgU3Bhd25PcHRpb25zLCBzcGF3biB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB0cmVlS2lsbCBmcm9tIFwidHJlZS1raWxsXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBQVVBfQVJHU19LRVkgPSBcIi0tcHVwLXByaXYtYXJnc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyZ3MoKSB7XG4gIGNvbnN0IGFyZ3YgPSBwcm9jZXNzLmFyZ3Y7XG4gIGxldCBwcml2ID0gYXJndi5maW5kKChhcmcpID0+IGFyZy5zdGFydHNXaXRoKFBVUF9BUkdTX0tFWSkpO1xuICBpZiAoIXByaXYpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJwcm9jYXJndlwiLCBhcmd2KTtcbiAgICByZXR1cm4gcHJvY2Vzcy5hcmd2O1xuICB9XG4gIGNvbnN0IGFyZ3MgPSBbXCJleGVjXCIsIC4uLmFyZ3Yuc2xpY2UoLTEpXTtcbiAgcHJpdiA9IEJ1ZmZlci5mcm9tKHByaXYuc3BsaXQoXCI9XCIpWzFdISwgXCJiYXNlNjRcIikudG9TdHJpbmcoKTtcbiAgYXJncy5wdXNoKC4uLkpTT04ucGFyc2UocHJpdikpO1xuICBsb2dnZXIuZGVidWcoXCJwdXBhcmdzXCIsIGFyZ3MpO1xuICByZXR1cm4gYXJncztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzSGFuZGxlIHtcbiAgcHJvY2VzczogQ2hpbGRQcm9jZXNzO1xuICB3YWl0OiBQcm9taXNlPHZvaWQ+O1xuICBnZXQga2lsbGVkKCk6IGJvb2xlYW47XG4gIGtpbGwoKTogdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoY21kOiBzdHJpbmcsIG9wdGlvbnM/OiBTcGF3bk9wdGlvbnMpOiBQcm9jZXNzSGFuZGxlIHtcbiAgY29uc3QgcGFydHMgPSBjbWQuc3BsaXQoXCIgXCIpLmZpbHRlcigocykgPT4gcy5sZW5ndGgpO1xuICBjb25zdCBbY29tbWFuZCwgLi4uYXJnc10gPSBwYXJ0cztcbiAgaWYgKCFjb21tYW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiZW1wdHkgY29tbWFuZFwiKTtcbiAgfVxuICBjb25zdCBwcm9jID0gc3Bhd24oY29tbWFuZCwgYXJncywge1xuICAgIHN0ZGlvOiBcImluaGVyaXRcIixcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbiAgbGV0IGtpbGxlZCA9IGZhbHNlO1xuICByZXR1cm4ge1xuICAgIHByb2Nlc3M6IHByb2MsXG4gICAgd2FpdDogbG9nZ2VyLmF0dGFjaChwcm9jLCBjb21tYW5kKSxcbiAgICBnZXQga2lsbGVkKCkge1xuICAgICAgcmV0dXJuIGtpbGxlZDtcbiAgICB9LFxuICAgIGtpbGwoKSB7XG4gICAgICBpZiAoa2lsbGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGtpbGxlZCA9IHRydWU7XG4gICAgICBjb25zdCBwaWQgPSBwcm9jLnBpZDtcbiAgICAgIGlmIChwaWQpIHtcbiAgICAgICAgdHJlZUtpbGwocGlkLCBcIlNJR0tJTExcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jLmtpbGwoXCJTSUdLSUxMXCIpO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI1LlxuXG5pbXBvcnQgeyBybVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgbWtkdGVtcCB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGNocm9taXVtT3B0aW9ucyB9IGZyb20gXCIuLi9iYXNlL2Nocm9taXVtXCI7XG5pbXBvcnQgeyBwdXBBcHAgfSBmcm9tIFwiLi4vYmFzZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IGV4ZWMsIFBVUF9BUkdTX0tFWSB9IGZyb20gXCIuLi9iYXNlL3Byb2Nlc3NcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVsZWN0cm9uT3B0cyhkaXNhYmxlR3B1OiBib29sZWFuKSB7XG4gIHJldHVybiBbLi4uKGF3YWl0IGNocm9taXVtT3B0aW9ucyhkaXNhYmxlR3B1KSksIFwiaGVhZGxlc3M9bmV3XCJdO1xufVxuXG5jb25zdCBUQUcgPSBcIltFbGVjdHJvbl1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBSdW5FbGVjdHJvbkFwcE9wdGlvbnMge1xuICBhcmdzOiB1bmtub3duW107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5FbGVjdHJvbkFwcCh7IGFyZ3MgfTogUnVuRWxlY3Ryb25BcHBPcHRpb25zKSB7XG4gIC8vIExhenk6IGVsZWN0cm9uJ3MgZW50cnkgdGhyb3dzIGlmIHRoZSBiaW5hcnkgaXMgYWJzZW50LCBzbyB1dGlsLW9ubHkgY29uc3VtZXJzIG11c3Qgbm90IGxvYWQgaXQgYXQgaW1wb3J0IHRpbWUuXG4gIGNvbnN0IHsgZGVmYXVsdDogZWxlY3Ryb24gfSA9IGF3YWl0IGltcG9ydChcImVsZWN0cm9uXCIpO1xuICBjb25zdCBvcHRzID0gYXdhaXQgZWxlY3Ryb25PcHRzKGFyZ3MuaW5jbHVkZXMoXCItLWRpc2FibGUtZ3B1XCIpKTtcbiAgLy8gUGVyLXByb2Nlc3MgcHJvZmlsZTogaXNvbGF0ZXMgdGhpcyBjYWxsJ3MgQ2hyb21pdW0gY2FjaGUgKHdhcm11cCB3aW5kb3dzIHNoYXJlIGl0IHZpYSBkZWZhdWx0U2Vzc2lvbiksIHdpcGVkIG9uIGV4aXQuXG4gIGNvbnN0IHByb2ZpbGVEaXIgPSBhd2FpdCBta2R0ZW1wKGpvaW4odG1wZGlyKCksIFwicHVwLXByb2ZpbGUtXCIpKTtcbiAgY29uc3QgZWxlY3Ryb25BcmdzID0gb3B0cy5tYXAoKGEpID0+IGAtLSR7YX1gKTtcbiAgZWxlY3Ryb25BcmdzLnB1c2goYC0tdXNlci1kYXRhLWRpcj0ke3Byb2ZpbGVEaXJ9YCk7XG4gIGVsZWN0cm9uQXJncy5wdXNoKGAke1BVUF9BUkdTX0tFWX09JHtCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShhcmdzKSkudG9TdHJpbmcoXCJiYXNlNjRcIil9YCk7XG4gIGNvbnN0IGNtZCA9IFtlbGVjdHJvbiwgLi4uZWxlY3Ryb25BcmdzLCBwdXBBcHBdLmpvaW4oXCIgXCIpO1xuICBsb2dnZXIuZGVidWcoVEFHLCBjbWQpO1xuXG4gIGNvbnN0IGVudjogTm9kZUpTLlByb2Nlc3NFbnYgPSB7IC4uLnByb2Nlc3MuZW52LCBSVVNUX0JBQ0tUUkFDRTogXCJmdWxsXCIgfTtcbiAgY29uc3QgaGFuZGxlID0gZXhlYyhjbWQsIHsgc3RkaW86IFtcImlnbm9yZVwiLCBcInBpcGVcIiwgXCJwaXBlXCIsIFwiaXBjXCJdLCBlbnYgfSk7XG4gIGhhbmRsZS5wcm9jZXNzLm9uY2UoXCJleGl0XCIsICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgcm1TeW5jKHByb2ZpbGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIud2FybihUQUcsIFwicHJvZmlsZSBjbGVhbnVwIGZhaWxlZDpcIiwgZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGhhbmRsZTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiO1xuXG5jb25zdCBTVVBQT1JURURfUFJPVE9DT0xTID0gW1wiZmlsZTpcIiwgXCJodHRwOlwiLCBcImh0dHBzOlwiLCBcImRhdGE6XCJdO1xuY29uc3QgU09VUkNFX1BBVFRFUk4gPSAvXihmaWxlOnxodHRwcz86fGRhdGE6KS87XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0hUTUwoc291cmNlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFTT1VSQ0VfUEFUVEVSTi50ZXN0KHNvdXJjZSkpIHtcbiAgICBjb25zdCBwcm90b2NvbCA9IGAke3NvdXJjZS5zcGxpdChcIjpcIilbMF19OmA7XG4gICAgY29uc3QgbWVzc2FnZSA9IFNVUFBPUlRFRF9QUk9UT0NPTFMuaW5jbHVkZXMocHJvdG9jb2wpXG4gICAgICA/IGB1bnN1cHBvcnRlZCBwcm90b2NvbDogJHtwcm90b2NvbH0sIGV4cGVjdGVkICR7U1VQUE9SVEVEX1BST1RPQ09MUy5qb2luKFwiLCBcIil9YFxuICAgICAgOiBgaW52YWxpZCBzb3VyY2UgZm9ybWF0LCBleHBlY3RlZCAke1NVUFBPUlRFRF9QUk9UT0NPTFMuam9pbihcIiwgXCIpfWA7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9XG5cbiAgLy8gZmlsZTogc291cmNlcyBhcmUgY2hlYXAgdG8gc3RhdCBoZXJlOyBFbGVjdHJvbiB3b3VsZCBvbmx5IHN1cmZhY2UgYSBtaXNzaW5nIG9uZSBhcyBkaWQtZmFpbC1sb2FkIGFmdGVyIHNwYXduK3dhcm11cC5cbiAgaWYgKHNvdXJjZS5zdGFydHNXaXRoKFwiZmlsZTpcIikgJiYgIWV4aXN0c1N5bmMoZmlsZVVSTFRvUGF0aChzb3VyY2UpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc291cmNlIGZpbGUgbm90IGZvdW5kOiAke3NvdXJjZX1gKTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNC8wMS5cblxuaW1wb3J0IHR5cGUgeyBDaGlsZFByb2Nlc3MgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tIFwibm9kZTpldmVudHNcIjtcblxuZXhwb3J0IGVudW0gSXBjTXNnVHlwZSB7XG4gIC8vIGNoaWxkIOKGkiBwYXJlbnRcbiAgQ29uc29sZSA9IFwiY29uc29sZVwiLFxuICBQcm9ncmVzcyA9IFwicHJvZ3Jlc3NcIixcbiAgRG9uZSA9IFwiZG9uZVwiLFxuICBFcnJvciA9IFwiZXJyb3JcIixcbiAgLy8gcGFyZW50IOKGkiBjaGlsZFxuICBDYW5jZWwgPSBcImNhbmNlbFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnNvbGVNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkNvbnNvbGU7XG4gIGxldmVsOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkNhbmNlbDtcbiAgcmVhc29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElwY0RvbmVQYXlsb2FkIHtcbiAgd3JpdHRlbjogbnVtYmVyO1xuICBvdXRGaWxlczogc3RyaW5nW107XG4gIGJsYW5rOiBudW1iZXI7XG4gIGphbms6IG51bWJlcjtcbiAgc2NyZWVuc2hvdHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5Qcm9ncmVzcztcbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb25lTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5Eb25lO1xuICBwYXlsb2FkOiBJcGNEb25lUGF5bG9hZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvck1zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuRXJyb3I7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIElwY01zZyA9IENvbnNvbGVNc2cgfCBQcm9ncmVzc01zZyB8IERvbmVNc2cgfCBFcnJvck1zZyB8IENhbmNlbE1zZztcblxuZXhwb3J0IGludGVyZmFjZSBJcGNFdmVudHMge1xuICBwcm9ncmVzczogW3ZhbHVlOiBudW1iZXJdO1xuICBjb25zb2xlOiBbbGV2ZWw6IHN0cmluZywgbXNnOiBzdHJpbmddO1xuICBkb25lOiBbcGF5bG9hZDogSXBjRG9uZVBheWxvYWRdO1xuICBlcnJvcjogW2Vycm9yOiBFcnJvcl07XG4gIGNsb3NlOiBbY29kZTogbnVtYmVyIHwgbnVsbF07XG59XG5cbmV4cG9ydCBjbGFzcyBJcGNXcml0ZXIge1xuICB3cml0ZUNvbnNvbGUobGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZW5kKHsgdHlwZTogSXBjTXNnVHlwZS5Db25zb2xlLCBsZXZlbCwgbWVzc2FnZSB9KTtcbiAgfVxuXG4gIHdyaXRlUHJvZ3Jlc3ModmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VuZCh7IHR5cGU6IElwY01zZ1R5cGUuUHJvZ3Jlc3MsIHZhbHVlIH0pO1xuICB9XG5cbiAgd3JpdGVFcnJvcihlcnJvcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VuZCh7IHR5cGU6IElwY01zZ1R5cGUuRXJyb3IsIGVycm9yIH0pO1xuICB9XG5cbiAgd3JpdGVEb25lKHBheWxvYWQ6IElwY0RvbmVQYXlsb2FkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VuZCh7IHR5cGU6IElwY01zZ1R5cGUuRG9uZSwgcGF5bG9hZCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZChtc2c6IElwY01zZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgaWYgKCFwcm9jZXNzLnNlbmQpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3Muc2VuZChtc2csICgpID0+IHJlc29sdmUoKSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElwY1JlYWRlciBleHRlbmRzIEV2ZW50RW1pdHRlcjxJcGNFdmVudHM+IHtcbiAgY29uc3RydWN0b3IoY2hpbGQ6IENoaWxkUHJvY2Vzcykge1xuICAgIHN1cGVyKCk7XG4gICAgY2hpbGQub24oXCJtZXNzYWdlXCIsIChyYXcpID0+IHtcbiAgICAgIGNvbnN0IG1zZyA9IHJhdyBhcyBJcGNNc2c7XG4gICAgICBzd2l0Y2ggKG1zZy50eXBlKSB7XG4gICAgICAgIGNhc2UgSXBjTXNnVHlwZS5Db25zb2xlOiB7XG4gICAgICAgICAgdGhpcy5lbWl0KFwiY29uc29sZVwiLCBtc2cubGV2ZWwsIG1zZy5tZXNzYWdlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIElwY01zZ1R5cGUuUHJvZ3Jlc3M6IHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJwcm9ncmVzc1wiLCBtc2cudmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgSXBjTXNnVHlwZS5Eb25lOiB7XG4gICAgICAgICAgdGhpcy5lbWl0KFwiZG9uZVwiLCBtc2cucGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLkVycm9yOiB7XG4gICAgICAgICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgbmV3IEVycm9yKG1zZy5lcnJvcikpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2hpbGQub25jZShcImV4aXRcIiwgKGMpID0+IHRoaXMuZW1pdChcImNsb3NlXCIsIGMpKTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBydW5FbGVjdHJvbkFwcCB9IGZyb20gXCIuL3JlbmRlcmVyL2VsZWN0cm9uXCI7XG5pbXBvcnQgeyBjaGVja0hUTUwgfSBmcm9tIFwiLi9yZW5kZXJlci9odG1sX2NoZWNrXCI7XG5pbXBvcnQgeyB0eXBlIElwY0RvbmVQYXlsb2FkLCBJcGNNc2dUeXBlLCBJcGNSZWFkZXIgfSBmcm9tIFwiLi9yZW5kZXJlci9pcGNcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29uc29sZUNhbGxiYWNrLFxuICBkZWZhdWx0UmVuZGVyT3B0aW9ucyxcbiAgdHlwZSBQcm9ncmVzc0NhbGxiYWNrLFxuICB0eXBlIFJlbmRlck9wdGlvbnMsXG4gIHR5cGUgUmVuZGVyUmVzdWx0LFxufSBmcm9tIFwiLi9yZW5kZXJlci9zY2hlbWFcIjtcblxuY29uc3QgVEFHID0gXCJbcHVwXVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1cE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFJlbmRlck9wdGlvbnM+IHtcbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIG9uUHJvZ3Jlc3M/OiBQcm9ncmVzc0NhbGxiYWNrO1xuICBvbkNvbnNvbGU/OiBDb25zb2xlQ2FsbGJhY2s7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVwUmVzdWx0IGV4dGVuZHMgUmVuZGVyUmVzdWx0IHt9XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1blB1cEFwcChzb3VyY2U6IHN0cmluZywgcmVuZGVyOiBSZW5kZXJPcHRpb25zKSB7XG4gIGxvZ2dlci5kZWJ1ZyhUQUcsIGBydW5QdXBBcHBgLCBzb3VyY2UsIHJlbmRlcik7XG5cbiAgY29uc3QgYXJnczogc3RyaW5nW10gPSBbXG4gICAgc291cmNlLFxuICAgIGAtLXdpZHRoYCxcbiAgICBgJHtyZW5kZXIud2lkdGh9YCxcbiAgICBgLS1oZWlnaHRgLFxuICAgIGAke3JlbmRlci5oZWlnaHR9YCxcbiAgICBgLS1mcHNgLFxuICAgIGAke3JlbmRlci5mcHN9YCxcbiAgICBgLS1kdXJhdGlvbmAsXG4gICAgYCR7cmVuZGVyLmR1cmF0aW9ufWAsXG4gICAgYC0td2luZG93LXRpbWVvdXRgLFxuICAgIGAke3JlbmRlci53aW5kb3dUaW1lb3V0fWAsXG4gICAgYC0tb3V0LWZpbGVgLFxuICAgIHJlbmRlci5vdXRGaWxlcy5qb2luKFwiLFwiKSxcbiAgXTtcbiAgaWYgKHJlbmRlci53aXRoQXVkaW8pIHtcbiAgICBhcmdzLnB1c2goYC0td2l0aC1hdWRpb2ApO1xuICB9XG4gIGlmIChyZW5kZXIudXNlSW5uZXJQcm94eSkge1xuICAgIGFyZ3MucHVzaChgLS11c2UtaW5uZXItcHJveHlgKTtcbiAgfVxuICBpZiAocmVuZGVyLmRldGVybWluaXN0aWMpIHtcbiAgICBhcmdzLnB1c2goYC0tZGV0ZXJtaW5pc3RpY2ApO1xuICB9XG4gIGlmIChyZW5kZXIuZGlzYWJsZUdwdSkge1xuICAgIGFyZ3MucHVzaChgLS1kaXNhYmxlLWdwdWApO1xuICB9XG4gIGlmIChyZW5kZXIuZGlzYWJsZUh3Q29kZWMpIHtcbiAgICBhcmdzLnB1c2goYC0tZGlzYWJsZS1ody1jb2RlY2ApO1xuICB9XG4gIGlmIChyZW5kZXIuZGlzYWJsZVdlYlNlY3VyaXR5KSB7XG4gICAgYXJncy5wdXNoKGAtLWRpc2FibGUtd2ViLXNlY3VyaXR5YCk7XG4gIH1cbiAgaWYgKHJlbmRlci53aW5kb3dUb2xlcmFudCkge1xuICAgIGFyZ3MucHVzaChgLS13aW5kb3ctdG9sZXJhbnRgKTtcbiAgfVxuICBpZiAocmVuZGVyLnNjcmVlbnNob3RzLmxlbmd0aCA+IDApIHtcbiAgICBhcmdzLnB1c2goYC0tc2NyZWVuc2hvdHNgLCByZW5kZXIuc2NyZWVuc2hvdHMuam9pbihcIixcIikpO1xuICB9XG5cbiAgcmV0dXJuIHJ1bkVsZWN0cm9uQXBwKHsgYXJncyB9KTtcbn1cblxuY29uc3QgZCA9IGRlZmF1bHRSZW5kZXJPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVwKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBQYXJ0aWFsPFB1cE9wdGlvbnM+KTogUHJvbWlzZTxQdXBSZXN1bHQ+IHtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgYHB1cGAsIHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgY29uc3QgeyBzaWduYWwgfSA9IG9wdGlvbnM7XG4gIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgY2hlY2tIVE1MKHNvdXJjZSk7XG5cbiAgY29uc3Qgb3V0RmlsZXMgPSBvcHRpb25zLm91dEZpbGVzID8/IGQub3V0RmlsZXM7XG4gIGNvbnN0IHJlbmRlck9wdHM6IFJlbmRlck9wdGlvbnMgPSB7XG4gICAgd2lkdGg6IG9wdGlvbnMud2lkdGggPz8gZC53aWR0aCxcbiAgICBoZWlnaHQ6IG9wdGlvbnMuaGVpZ2h0ID8/IGQuaGVpZ2h0LFxuICAgIGZwczogb3B0aW9ucy5mcHMgPz8gZC5mcHMsXG4gICAgZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24gPz8gZC5kdXJhdGlvbixcbiAgICB3aXRoQXVkaW86IG9wdGlvbnMud2l0aEF1ZGlvID8/IGQud2l0aEF1ZGlvLFxuICAgIHVzZUlubmVyUHJveHk6IG9wdGlvbnMudXNlSW5uZXJQcm94eSA/PyBkLnVzZUlubmVyUHJveHksXG4gICAgZGV0ZXJtaW5pc3RpYzogb3B0aW9ucy5kZXRlcm1pbmlzdGljID8/IGQuZGV0ZXJtaW5pc3RpYyxcbiAgICBkaXNhYmxlR3B1OiBvcHRpb25zLmRpc2FibGVHcHUgPz8gZC5kaXNhYmxlR3B1LFxuICAgIGRpc2FibGVId0NvZGVjOiBvcHRpb25zLmRpc2FibGVId0NvZGVjID8/IGQuZGlzYWJsZUh3Q29kZWMsXG4gICAgZGlzYWJsZVdlYlNlY3VyaXR5OiBvcHRpb25zLmRpc2FibGVXZWJTZWN1cml0eSA/PyBkLmRpc2FibGVXZWJTZWN1cml0eSxcbiAgICB3aW5kb3dUb2xlcmFudDogb3B0aW9ucy53aW5kb3dUb2xlcmFudCA/PyBkLndpbmRvd1RvbGVyYW50LFxuICAgIHdpbmRvd1RpbWVvdXQ6IG9wdGlvbnMud2luZG93VGltZW91dCA/PyBkLndpbmRvd1RpbWVvdXQsXG4gICAgc2NyZWVuc2hvdHM6IG9wdGlvbnMuc2NyZWVuc2hvdHMgPz8gZC5zY3JlZW5zaG90cyxcbiAgICBvdXRGaWxlcyxcbiAgfTtcblxuICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBsZXQgcHJvZ3Jlc3MgPSAwO1xuICBjb25zdCB0aWNrID0gKHA6IG51bWJlcikgPT4ge1xuICAgIHByb2dyZXNzID0gcDtcbiAgICBvcHRpb25zLm9uUHJvZ3Jlc3M/LihwKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGUgPSBhd2FpdCBydW5QdXBBcHAoc291cmNlLCByZW5kZXJPcHRzKTtcblxuICBsZXQga2lsbFRpbWVyOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgb25BYm9ydCA9ICgpID0+IHtcbiAgICBoYW5kbGUucHJvY2Vzcy5zZW5kPy4oeyB0eXBlOiBJcGNNc2dUeXBlLkNhbmNlbCwgcmVhc29uOiBTdHJpbmcoc2lnbmFsPy5yZWFzb24gPz8gXCJhYm9ydFwiKSB9KTtcbiAgICBraWxsVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGhhbmRsZS5raWxsKCksIDVfMDAwKTtcbiAgfTtcbiAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFByb21pc2U8SXBjRG9uZVBheWxvYWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5ldyBJcGNSZWFkZXIoaGFuZGxlLnByb2Nlc3MpXG4gICAgICAgIC5vbihcImNsb3NlXCIsIChjb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gSlNPTi5zdHJpbmdpZnkoeyBzb3VyY2UsIHByb2dyZXNzLCBjb2RlLCBraWxsZWQ6IGhhbmRsZS5raWxsZWQgfSk7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgY3Jhc2hlZDogJHttc2d9YCkpO1xuICAgICAgICB9KVxuICAgICAgICAub24oXCJwcm9ncmVzc1wiLCB0aWNrKVxuICAgICAgICAub24oXCJjb25zb2xlXCIsIChsLCBtKSA9PiBvcHRpb25zLm9uQ29uc29sZT8uKGwsIG0pKVxuICAgICAgICAub24oXCJkb25lXCIsIHJlc29sdmUpXG4gICAgICAgIC5vbihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgfSk7XG4gICAgdGljaygwKTtcbiAgICBjb25zdCBbc3VtbWFyeV0gPSBhd2FpdCBQcm9taXNlLmFsbChbcmVzdWx0LCBoYW5kbGUud2FpdF0pO1xuICAgIHRpY2soMTAwKTtcbiAgICBsb2dnZXIuZGVidWcoVEFHLCBgZG9uZSAke291dEZpbGVzLmpvaW4oXCIsXCIpfSBpbiAke01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkgLSB0MCl9bXNgKTtcbiAgICByZXR1cm4geyAuLi5zdW1tYXJ5LCBvcHRpb25zOiByZW5kZXJPcHRzIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGUua2lsbCgpO1xuICAgIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgICB0aHJvdyBlO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dChraWxsVGltZXIpO1xuICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQpO1xuICB9XG59XG4iXX0=
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
- import'source-map-support/register.js';import {p,q,f,d,i,e,h,j,a,b,s}from'./chunk-EOEJXYJR.js';import {realpathSync}from'fs';import {resolve}from'path';import {program}from'commander';function A(r){if(r.includes("://")||r.startsWith("data:"))return r;let i;try{i=realpathSync(r);}catch{i=resolve(r);}return `file://${i}`}async function I(r){let i$1=p.shape,e$1=q;program.name(r.name).argument("<source>","file://, http(s)://, data: URI, or filesystem path").option("-W, --width <number>",i$1.width.description,`${e$1.width}`).option("-H, --height <number>",i$1.height.description,`${e$1.height}`).option("-S, --screenshots <seconds>",i$1.screenshots.description,"").option("-f, --fps <number>",i$1.fps.description,`${e$1.fps}`).option("-t, --duration <number>",i$1.duration.description,`${e$1.duration}`).option("-o, --out-file <paths>",i$1.outFiles.description,e$1.outFiles.join(",")).option("-a, --with-audio",i$1.withAudio.description,e$1.withAudio).option("-d, --deterministic",i$1.deterministic.description,e$1.deterministic).option("--use-inner-proxy",i$1.useInnerProxy.description,e$1.useInnerProxy).option("--disable-gpu",i$1.disableGpu.description,e$1.disableGpu).option("--disable-hw-codec",i$1.disableHwCodec.description,e$1.disableHwCodec).option("--window-tolerant",i$1.windowTolerant.description,e$1.windowTolerant).option("--window-timeout <number>",i$1.windowTimeout.description,`${e$1.windowTimeout}`).action(async(a,o)=>{try{await r.run(A(a),{width:i(d,e$1.width)(o.width),height:i(d,e$1.height)(o.height),fps:i(d,e$1.fps)(o.fps),duration:i(d,e$1.duration)(o.duration),outFiles:f(e)(o.outFile),withAudio:o.withAudio??e$1.withAudio,useInnerProxy:o.useInnerProxy??e$1.useInnerProxy,deterministic:o.deterministic??e$1.deterministic,disableGpu:o.disableGpu??e$1.disableGpu,disableHwCodec:o.disableHwCodec??e$1.disableHwCodec,windowTolerant:o.windowTolerant??e$1.windowTolerant,windowTimeout:i(d,e$1.windowTimeout)(o.windowTimeout),screenshots:f(d)(o.screenshots)});}catch(t){h.fatal(t);}}),await program.parseAsync(j());}I({name:"pup",run:async(r,i)=>{let e=new AbortController,a$1=0;process.once("SIGTERM",()=>{a$1=143,e.abort(new Error("SIGTERM"));}),process.once("SIGINT",()=>{a$1=130,e.abort(new Error("SIGINT"));}),process.once("exit",n=>{a$1=n,e.abort(new Error("SIGKILL"));});let o=Math.ceil(i.fps*i.duration),t=new a({total:o,out:process.stderr,showCount:true});h.impl=b(t);let T=performance.now();try{let{screenshots:n,outFiles:u}=await s(r,{...i,signal:e.signal,onProgress:x=>t.updatePercent(x)}),$=((performance.now()-T)/1e3).toFixed(2);t.update(o),n.length&&t.log(`screenshots \u2192 ${n.join(",")}`),u.length&&t.log(`videos \u2192 ${u.join(",")}`),t.finish(`summary \u2192 ${o} frames, ${i.width}x${i.height} @ ${i.fps}fps in ${$}s`);}catch(n){t.finish(`error: ${n instanceof Error?n.message:String(n)}`);}finally{process.exit(a$1);}}});//# sourceMappingURL=cli.js.map
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVNvdXJjZSIsInMiLCJhYnMiLCJyZWFscGF0aFN5bmMiLCJyZXNvbHZlIiwibWFrZUNMSSIsIm9wdGlvbnMiLCJzaGFwZSIsInJlbmRlclNjaGVtYSIsImQiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsInByb2dyYW0iLCJzb3VyY2UiLCJvcHRzIiwibm9lcnIiLCJwYXJzZU51bWJlciIsInBhcnNlQXJyYXkiLCJwYXJzZVN0cmluZyIsImUiLCJsb2dnZXIiLCJwYXJncyIsImN0cmwiLCJleGl0Q29kZSIsImMiLCJ0b3RhbCIsImJhciIsIlByb2dyZXNzQmFyIiwiYmFyTG9nZ2VyIiwidDAiLCJzY3JlZW5zaG90cyIsIm91dEZpbGVzIiwicHVwIiwicCIsInNlYyJdLCJtYXBwaW5ncyI6IndMQVlBLFNBQVNBLENBQUFBLENBQWdCQyxDQUFBQSxDQUFtQixDQUMxQyxHQUFJQSxDQUFBQSxDQUFFLFFBQUEsQ0FBUyxLQUFLLENBQUEsRUFBS0EsQ0FBQUEsQ0FBRSxVQUFBLENBQVcsT0FBTyxDQUFBLENBQzNDLE9BQU9BLENBQUFBLENBRVQsSUFBSUMsQ0FBQUEsQ0FDSixHQUFJLENBQ0ZBLENBQUFBLENBQU1DLFlBQUFBLENBQWFGLENBQUMsRUFDdEIsQ0FBQSxLQUFRLENBQ05DLENBQUFBLENBQU1FLE9BQUFBLENBQVFILENBQUMsRUFDakIsQ0FDQSxPQUFPLENBQUEsT0FBQSxFQUFVQyxDQUFHLENBQUEsQ0FDdEIsQ0FPQSxlQUFzQkcsQ0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBcUIsQ0FDakQsSUFBTUMsR0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBYSxLQUFBLENBQ3JCQyxHQUFBQSxDQUFJQyxDQUFBQSxDQUNWQyxPQUFBQSxDQUNHLElBQUEsQ0FBS0wsQ0FBQUEsQ0FBUSxJQUFJLEVBQ2pCLFFBQUEsQ0FBUyxVQUFBLENBQVksb0RBQW9ELENBQUEsQ0FDekUsTUFBQSxD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QUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUU5Q0MsQ0FBQUEsQ0FBUyxNQUFBLEVBQ1hMLENBQUFBLENBQUksR0FBQSxDQUFJLENBQUEsY0FBQSxFQUFZSyxDQUFBQSxDQUFTLElBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FFMUNMLENBQUFBLENBQUksTUFBQSxDQUFPLENBQUEsZUFBQSxFQUFhRCxDQUFLLENBQUEsU0FBQSxFQUFZbEIsQ0FBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxFQUFJQSxDQUFBQSxDQUFRLE1BQU0sQ0FBQSxHQUFBLEVBQU1BLENBQUFBLENBQVEsR0FBRyxDQUFBLE9BQUEsRUFBVTJCLENBQUcsQ0FBQSxDQUFBLENBQUcsRUFDM0csQ0FBQSxNQUFTZixDQUFBQSxDQUFHLENBQ1ZPLENBQUFBLENBQUksTUFBQSxDQUFPLENBQUEsT0FBQSxFQUFVUCxDQUFBQSxZQUFhLEtBQUEsQ0FBUUEsQ0FBQUEsQ0FBRSxPQUFBLENBQVUsTUFBQSxDQUFPQSxDQUFDLENBQUMsQ0FBQSxDQUFFLEVBQ25FLENBQUEsT0FBRSxDQUNBLE9BQUEsQ0FBUSxJQUFBLENBQUtJLEdBQVEsRUFDdkIsQ0FDRixDQUNGLENBQUMsQ0FBQSIsImZpbGUiOiJjbGkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHByb2dyYW0gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG5vZXJyIH0gZnJvbSBcIi4vYmFzZS9ub2VyclwiO1xuaW1wb3J0IHsgcGFyc2VBcnJheSwgcGFyc2VOdW1iZXIsIHBhcnNlU3RyaW5nIH0gZnJvbSBcIi4vYmFzZS9wYXJzZXJcIjtcbmltcG9ydCB7IHBhcmdzIH0gZnJvbSBcIi4vYmFzZS9wcm9jZXNzXCI7XG5pbXBvcnQgeyBkZWZhdWx0UmVuZGVyT3B0aW9ucywgdHlwZSBSZW5kZXJPcHRpb25zLCByZW5kZXJTY2hlbWEgfSBmcm9tIFwiLi9yZW5kZXJlci9zY2hlbWFcIjtcblxuLy8gU2NoZW1lZCBVUklzIHBhc3MgdGhyb3VnaDsgYmFyZSBwYXRocyBnZXQgY2Fub25pY2FsaXplZCBhbmQgd3JhcHBlZCBhcyBmaWxlOi8vLlxuZnVuY3Rpb24gbm9ybWFsaXplU291cmNlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzLmluY2x1ZGVzKFwiOi8vXCIpIHx8IHMuc3RhcnRzV2l0aChcImRhdGE6XCIpKSB7XG4gICAgcmV0dXJuIHM7XG4gIH1cbiAgbGV0IGFiczogc3RyaW5nO1xuICB0cnkge1xuICAgIGFicyA9IHJlYWxwYXRoU3luYyhzKTtcbiAgfSBjYXRjaCB7XG4gICAgYWJzID0gcmVzb2x2ZShzKTtcbiAgfVxuICByZXR1cm4gYGZpbGU6Ly8ke2Fic31gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENMSU9wdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJ1bjogKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBSZW5kZXJPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUNMSShvcHRpb25zOiBDTElPcHRpb25zKSB7XG4gIGNvbnN0IHNoYXBlID0gcmVuZGVyU2NoZW1hLnNoYXBlO1xuICBjb25zdCBkID0gZGVmYXVsdFJlbmRlck9wdGlvbnM7XG4gIHByb2dyYW1cbiAgICAubmFtZShvcHRpb25zLm5hbWUpXG4gICAgLmFyZ3VtZW50KFwiPHNvdXJjZT5cIiwgXCJmaWxlOi8vLCBodHRwKHMpOi8vLCBkYXRhOiBVUkksIG9yIGZpbGVzeXN0ZW0gcGF0aFwiKVxuICAgIC5vcHRpb24oXCItVywgLS13aWR0aCA8bnVtYmVyPlwiLCBzaGFwZS53aWR0aC5kZXNjcmlwdGlvbiwgYCR7ZC53aWR0aH1gKVxuICAgIC5vcHRpb24oXCItSCwgLS1oZWlnaHQgPG51bWJlcj5cIiwgc2hhcGUuaGVpZ2h0LmRlc2NyaXB0aW9uLCBgJHtkLmhlaWdodH1gKVxuICAgIC5vcHRpb24oXCItUywgLS1zY3JlZW5zaG90cyA8c2Vjb25kcz5cIiwgc2hhcGUuc2NyZWVuc2hvdHMuZGVzY3JpcHRpb24sIFwiXCIpXG4gICAgLm9wdGlvbihcIi1mLCAtLWZwcyA8bnVtYmVyPlwiLCBzaGFwZS5mcHMuZGVzY3JpcHRpb24sIGAke2QuZnBzfWApXG4gICAgLm9wdGlvbihcIi10LCAtLWR1cmF0aW9uIDxudW1iZXI+XCIsIHNoYXBlLmR1cmF0aW9uLmRlc2NyaXB0aW9uLCBgJHtkLmR1cmF0aW9ufWApXG4gICAgLm9wdGlvbihcIi1vLCAtLW91dC1maWxlIDxwYXRocz5cIiwgc2hhcGUub3V0RmlsZXMuZGVzY3JpcHRpb24sIGQub3V0RmlsZXMuam9pbihcIixcIikpXG4gICAgLm9wdGlvbihcIi1hLCAtLXdpdGgtYXVkaW9cIiwgc2hhcGUud2l0aEF1ZGlvLmRlc2NyaXB0aW9uLCBkLndpdGhBdWRpbylcbiAgICAub3B0aW9uKFwiLWQsIC0tZGV0ZXJtaW5pc3RpY1wiLCBzaGFwZS5kZXRlcm1pbmlzdGljLmRlc2NyaXB0aW9uLCBkLmRldGVybWluaXN0aWMpXG4gICAgLm9wdGlvbihcIi0tdXNlLWlubmVyLXByb3h5XCIsIHNoYXBlLnVzZUlubmVyUHJveHkuZGVzY3JpcHRpb24sIGQudXNlSW5uZXJQcm94eSlcbiAgICAub3B0aW9uKFwiLS1kaXNhYmxlLWdwdVwiLCBzaGFwZS5kaXNhYmxlR3B1LmRlc2NyaXB0aW9uLCBkLmRpc2FibGVHcHUpXG4gICAgLm9wdGlvbihcIi0tZGlzYWJsZS1ody1jb2RlY1wiLCBzaGFwZS5kaXNhYmxlSHdDb2RlYy5kZXNjcmlwdGlvbiwgZC5kaXNhYmxlSHdDb2RlYylcbiAgICAub3B0aW9uKFwiLS13aW5kb3ctdG9sZXJhbnRcIiwgc2hhcGUud2luZG93VG9sZXJhbnQuZGVzY3JpcHRpb24sIGQud2luZG93VG9sZXJhbnQpXG4gICAgLm9wdGlvbihcIi0td2luZG93LXRpbWVvdXQgPG51bWJlcj5cIiwgc2hhcGUud2luZG93VGltZW91dC5kZXNjcmlwdGlvbiwgYCR7ZC53aW5kb3dUaW1lb3V0fWApXG4gICAgLmFjdGlvbihhc3luYyAoc291cmNlOiBzdHJpbmcsIG9wdHMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG9wdGlvbnMucnVuKG5vcm1hbGl6ZVNvdXJjZShzb3VyY2UpLCB7XG4gICAgICAgICAgd2lkdGg6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLndpZHRoKShvcHRzLndpZHRoKSxcbiAgICAgICAgICBoZWlnaHQ6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmhlaWdodCkob3B0cy5oZWlnaHQpLFxuICAgICAgICAgIGZwczogbm9lcnIocGFyc2VOdW1iZXIsIGQuZnBzKShvcHRzLmZwcyksXG4gICAgICAgICAgZHVyYXRpb246IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmR1cmF0aW9uKShvcHRzLmR1cmF0aW9uKSxcbiAgICAgICAgICBvdXRGaWxlczogcGFyc2VBcnJheShwYXJzZVN0cmluZykob3B0cy5vdXRGaWxlKSxcbiAgICAgICAgICB3aXRoQXVkaW86IG9wdHMud2l0aEF1ZGlvID8/IGQud2l0aEF1ZGlvLFxuICAgICAgICAgIHVzZUlubmVyUHJveHk6IG9wdHMudXNlSW5uZXJQcm94eSA/PyBkLnVzZUlubmVyUHJveHksXG4gICAgICAgICAgZGV0ZXJtaW5pc3RpYzogb3B0cy5kZXRlcm1pbmlzdGljID8/IGQuZGV0ZXJtaW5pc3RpYyxcbiAgICAgICAgICBkaXNhYmxlR3B1OiBvcHRzLmRpc2FibGVHcHUgPz8gZC5kaXNhYmxlR3B1LFxuICAgICAgICAgIGRpc2FibGVId0NvZGVjOiBvcHRzLmRpc2FibGVId0NvZGVjID8/IGQuZGlzYWJsZUh3Q29kZWMsXG4gICAgICAgICAgd2luZG93VG9sZXJhbnQ6IG9wdHMud2luZG93VG9sZXJhbnQgPz8gZC53aW5kb3dUb2xlcmFudCxcbiAgICAgICAgICB3aW5kb3dUaW1lb3V0OiBub2VycihwYXJzZU51bWJlciwgZC53aW5kb3dUaW1lb3V0KShvcHRzLndpbmRvd1RpbWVvdXQpLFxuICAgICAgICAgIHNjcmVlbnNob3RzOiBwYXJzZUFycmF5KHBhcnNlTnVtYmVyKShvcHRzLnNjcmVlbnNob3RzKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci5mYXRhbChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgYXdhaXQgcHJvZ3JhbS5wYXJzZUFzeW5jKHBhcmdzKCkpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgYmFyTG9nZ2VyLCBQcm9ncmVzc0JhciB9IGZyb20gXCIuL2Jhc2UvY2xpX3VpXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG1ha2VDTEkgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHB1cCB9IGZyb20gXCIuL3B1cFwiO1xuXG5tYWtlQ0xJKHtcbiAgbmFtZTogXCJwdXBcIixcbiAgcnVuOiBhc3luYyAoc291cmNlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY3RybCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgZXhpdENvZGUgPSAwO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR1RFUk1cIiwgKCkgPT4ge1xuICAgICAgZXhpdENvZGUgPSAxNDM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR1RFUk1cIikpO1xuICAgIH0pO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR0lOVFwiLCAoKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IDEzMDtcbiAgICAgIGN0cmwuYWJvcnQobmV3IEVycm9yKFwiU0lHSU5UXCIpKTtcbiAgICB9KTtcbiAgICBwcm9jZXNzLm9uY2UoXCJleGl0XCIsIChjKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IGM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR0tJTExcIikpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG90YWwgPSBNYXRoLmNlaWwob3B0aW9ucy5mcHMgKiBvcHRpb25zLmR1cmF0aW9uKTtcbiAgICBjb25zdCBiYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoeyB0b3RhbCwgb3V0OiBwcm9jZXNzLnN0ZGVyciwgc2hvd0NvdW50OiB0cnVlIH0pO1xuICAgIGxvZ2dlci5pbXBsID0gYmFyTG9nZ2VyKGJhcik7XG5cbiAgICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHNjcmVlbnNob3RzLCBvdXRGaWxlcyB9ID0gYXdhaXQgcHVwKHNvdXJjZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBzaWduYWw6IGN0cmwuc2lnbmFsLFxuICAgICAgICBvblByb2dyZXNzOiAocCkgPT4gYmFyLnVwZGF0ZVBlcmNlbnQocCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlYyA9ICgocGVyZm9ybWFuY2Uubm93KCkgLSB0MCkgLyAxMDAwKS50b0ZpeGVkKDIpO1xuICAgICAgYmFyLnVwZGF0ZSh0b3RhbCk7XG4gICAgICBpZiAoc2NyZWVuc2hvdHMubGVuZ3RoKSB7XG4gICAgICAgIGJhci5sb2coYHNjcmVlbnNob3RzIOKGkiAke3NjcmVlbnNob3RzLmpvaW4oXCIsXCIpfWApO1xuICAgICAgfVxuICAgICAgaWYgKG91dEZpbGVzLmxlbmd0aCkge1xuICAgICAgICBiYXIubG9nKGB2aWRlb3Mg4oaSICR7b3V0RmlsZXMuam9pbihcIixcIil9YCk7XG4gICAgICB9XG4gICAgICBiYXIuZmluaXNoKGBzdW1tYXJ5IOKGkiAke3RvdGFsfSBmcmFtZXMsICR7b3B0aW9ucy53aWR0aH14JHtvcHRpb25zLmhlaWdodH0gQCAke29wdGlvbnMuZnBzfWZwcyBpbiAke3NlY31zYCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYmFyLmZpbmlzaChgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
1
+ import'source-map-support/register.js';import {p,q,f,d,i,e,h,j,a,b,s}from'./chunk-N72ZECPY.js';import {realpathSync}from'fs';import {resolve}from'path';import {program}from'commander';function A(o){if(o.includes("://")||o.startsWith("data:"))return o;let i;try{i=realpathSync(o);}catch{i=resolve(o);}return `file://${i}`}async function I(o){let i$1=p.shape,e$1=q;program.name(o.name).argument("<source>","file://, http(s)://, data: URI, or filesystem path").option("-W, --width <number>",i$1.width.description,`${e$1.width}`).option("-H, --height <number>",i$1.height.description,`${e$1.height}`).option("-S, --screenshots <seconds>",i$1.screenshots.description,"").option("-f, --fps <number>",i$1.fps.description,`${e$1.fps}`).option("-t, --duration <number>",i$1.duration.description,`${e$1.duration}`).option("-o, --out-file <paths>",i$1.outFiles.description,e$1.outFiles.join(",")).option("-a, --with-audio",i$1.withAudio.description,e$1.withAudio).option("-d, --deterministic",i$1.deterministic.description,e$1.deterministic).option("--use-inner-proxy",i$1.useInnerProxy.description,e$1.useInnerProxy).option("--disable-gpu",i$1.disableGpu.description,e$1.disableGpu).option("--disable-hw-codec",i$1.disableHwCodec.description,e$1.disableHwCodec).option("--disable-web-security",i$1.disableWebSecurity.description,e$1.disableWebSecurity).option("--window-tolerant",i$1.windowTolerant.description,e$1.windowTolerant).option("--window-timeout <number>",i$1.windowTimeout.description,`${e$1.windowTimeout}`).action(async(a,r)=>{try{await o.run(A(a),{width:i(d,e$1.width)(r.width),height:i(d,e$1.height)(r.height),fps:i(d,e$1.fps)(r.fps),duration:i(d,e$1.duration)(r.duration),outFiles:f(e)(r.outFile),withAudio:r.withAudio??e$1.withAudio,useInnerProxy:r.useInnerProxy??e$1.useInnerProxy,deterministic:r.deterministic??e$1.deterministic,disableGpu:r.disableGpu??e$1.disableGpu,disableHwCodec:r.disableHwCodec??e$1.disableHwCodec,disableWebSecurity:r.disableWebSecurity??e$1.disableWebSecurity,windowTolerant:r.windowTolerant??e$1.windowTolerant,windowTimeout:i(d,e$1.windowTimeout)(r.windowTimeout),screenshots:f(d)(r.screenshots)});}catch(t){h.fatal(t);}}),await program.parseAsync(j());}I({name:"pup",run:async(o,i)=>{let e=new AbortController,a$1=0;process.once("SIGTERM",()=>{a$1=143,e.abort(new Error("SIGTERM"));}),process.once("SIGINT",()=>{a$1=130,e.abort(new Error("SIGINT"));}),process.once("exit",n=>{a$1=n,e.abort(new Error("SIGKILL"));});let r=Math.ceil(i.fps*i.duration),t=new a({total:r,out:process.stderr,showCount:true});h.impl=b(t);let S=performance.now();try{let{screenshots:n,outFiles:u}=await s(o,{...i,signal:e.signal,onProgress:$=>t.updatePercent($)}),T=((performance.now()-S)/1e3).toFixed(2);t.update(r),n.length&&t.log(`screenshots \u2192 ${n.join(",")}`),u.length&&t.log(`videos \u2192 ${u.join(",")}`),t.finish(`summary \u2192 ${r} frames, ${i.width}x${i.height} @ ${i.fps}fps in ${T}s`);}catch(n){t.finish(`error: ${n instanceof Error?n.message:String(n)}`);}finally{process.exit(a$1);}}});//# sourceMappingURL=cli.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVNvdXJjZSIsInMiLCJhYnMiLCJyZWFscGF0aFN5bmMiLCJyZXNvbHZlIiwibWFrZUNMSSIsIm9wdGlvbnMiLCJzaGFwZSIsInJlbmRlclNjaGVtYSIsImQiLCJkZWZhdWx0UmVuZGVyT3B0aW9ucyIsInByb2dyYW0iLCJzb3VyY2UiLCJvcHRzIiwibm9lcnIiLCJwYXJzZU51bWJlciIsInBhcnNlQXJyYXkiLCJwYXJzZVN0cmluZyIsImUiLCJsb2dnZXIiLCJwYXJncyIsImN0cmwiLCJleGl0Q29kZSIsImMiLCJ0b3RhbCIsImJhciIsIlByb2dyZXNzQmFyIiwiYmFyTG9nZ2VyIiwidDAiLCJzY3JlZW5zaG90cyIsIm91dEZpbGVzIiwicHVwIiwicCIsInNlYyJdLCJtYXBwaW5ncyI6IndMQVlBLFNBQVNBLENBQUFBLENBQWdCQyxDQUFBQSxDQUFtQixDQUMxQyxHQUFJQSxDQUFBQSxDQUFFLFFBQUEsQ0FBUyxLQUFLLENBQUEsRUFBS0EsQ0FBQUEsQ0FBRSxVQUFBLENBQVcsT0FBTyxDQUFBLENBQzNDLE9BQU9BLENBQUFBLENBRVQsSUFBSUMsQ0FBQUEsQ0FDSixHQUFJLENBQ0ZBLENBQUFBLENBQU1DLFlBQUFBLENBQWFGLENBQUMsRUFDdEIsQ0FBQSxLQUFRLENBQ05DLENBQUFBLENBQU1FLE9BQUFBLENBQVFILENBQUMsRUFDakIsQ0FDQSxPQUFPLENBQUEsT0FBQSxFQUFVQyxDQUFHLENBQUEsQ0FDdEIsQ0FPQSxlQUFzQkcsQ0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBcUIsQ0FDakQsSUFBTUMsR0FBQUEsQ0FBUUMsQ0FBQUEsQ0FBYSxLQUFBLENBQ3JCQyxHQUFBQSxDQUFJQyxDQUFBQSxDQUNWQyxPQUFBQSxDQUNHLElBQUEsQ0FBS0wsQ0FBQUEsQ0FBUSxJQUFJLENBQUEsQ0FDakIsUUFBQSxDQUFTLFVBQUEsQ0FBWSxvREFBb0QsQ0FBQSxDQUN6RSxN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QUFBLEVBQU0sT0FBQSxDQUFRLENBQUMsQ0FBQSxDQUN2REgsQ0FBQUEsQ0FBSSxNQUFBLENBQU9ELENBQUssQ0FBQSxDQUNaSyxDQUFBQSxDQUFZLE1BQUEsRUFDZEosQ0FBQUEsQ0FBSSxHQUFBLENBQUksQ0FBQSxtQkFBQSxFQUFpQkksQ0FBQUEsQ0FBWSxJQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBRTlDQyxDQUFBQSxDQUFTLE1BQUEsRUFDWEwsQ0FBQUEsQ0FBSSxHQUFBLENBQUksQ0FBQSxjQUFBLEVBQVlLLENBQUFBLENBQVMsSUFBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUUxQ0wsQ0FBQUEsQ0FBSSxNQUFBLENBQU8sQ0FBQSxlQUFBLEVBQWFELENBQUssQ0FBQSxTQUFBLEVBQVlsQixDQUFBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLEVBQUlBLENBQUFBLENBQVEsTUFBTSxDQUFBLEdBQUEsRUFBTUEsQ0FBQUEsQ0FBUSxHQUFHLENBQUEsT0FBQSxFQUFVMkIsQ0FBRyxDQUFBLENBQUEsQ0FBRyxFQUMzRyxDQUFBLE1BQVNmLENBQUFBLENBQUcsQ0FDVk8sQ0FBQUEsQ0FBSSxNQUFBLENBQU8sQ0FBQSxPQUFBLEVBQVVQLENBQUFBLFlBQWEsS0FBQSxDQUFRQSxDQUFBQSxDQUFFLE9BQUEsQ0FBVSxNQUFBLENBQU9BLENBQUMsQ0FBQyxDQUFBLENBQUUsRUFDbkUsQ0FBQSxPQUFFLENBQ0EsT0FBQSxDQUFRLElBQUEsQ0FBS0ksR0FBUSxFQUN2QixDQUNGLENBQ0YsQ0FBQyxDQUFBIiwiZmlsZSI6ImNsaS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IHJlYWxwYXRoU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcHJvZ3JhbSB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2Jhc2UvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgbm9lcnIgfSBmcm9tIFwiLi9iYXNlL25vZXJyXCI7XG5pbXBvcnQgeyBwYXJzZUFycmF5LCBwYXJzZU51bWJlciwgcGFyc2VTdHJpbmcgfSBmcm9tIFwiLi9iYXNlL3BhcnNlclwiO1xuaW1wb3J0IHsgcGFyZ3MgfSBmcm9tIFwiLi9iYXNlL3Byb2Nlc3NcIjtcbmltcG9ydCB7IGRlZmF1bHRSZW5kZXJPcHRpb25zLCB0eXBlIFJlbmRlck9wdGlvbnMsIHJlbmRlclNjaGVtYSB9IGZyb20gXCIuL3JlbmRlcmVyL3NjaGVtYVwiO1xuXG4vLyBTY2hlbWVkIFVSSXMgcGFzcyB0aHJvdWdoOyBiYXJlIHBhdGhzIGdldCBjYW5vbmljYWxpemVkIGFuZCB3cmFwcGVkIGFzIGZpbGU6Ly8uXG5mdW5jdGlvbiBub3JtYWxpemVTb3VyY2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHMuaW5jbHVkZXMoXCI6Ly9cIikgfHwgcy5zdGFydHNXaXRoKFwiZGF0YTpcIikpIHtcbiAgICByZXR1cm4gcztcbiAgfVxuICBsZXQgYWJzOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgYWJzID0gcmVhbHBhdGhTeW5jKHMpO1xuICB9IGNhdGNoIHtcbiAgICBhYnMgPSByZXNvbHZlKHMpO1xuICB9XG4gIHJldHVybiBgZmlsZTovLyR7YWJzfWA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ0xJT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgcnVuOiAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFJlbmRlck9wdGlvbnMpID0+IFByb21pc2U8dW5rbm93bj47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYWtlQ0xJKG9wdGlvbnM6IENMSU9wdGlvbnMpIHtcbiAgY29uc3Qgc2hhcGUgPSByZW5kZXJTY2hlbWEuc2hhcGU7XG4gIGNvbnN0IGQgPSBkZWZhdWx0UmVuZGVyT3B0aW9ucztcbiAgcHJvZ3JhbVxuICAgIC5uYW1lKG9wdGlvbnMubmFtZSlcbiAgICAuYXJndW1lbnQoXCI8c291cmNlPlwiLCBcImZpbGU6Ly8sIGh0dHAocyk6Ly8sIGRhdGE6IFVSSSwgb3IgZmlsZXN5c3RlbSBwYXRoXCIpXG4gICAgLm9wdGlvbihcIi1XLCAtLXdpZHRoIDxudW1iZXI+XCIsIHNoYXBlLndpZHRoLmRlc2NyaXB0aW9uLCBgJHtkLndpZHRofWApXG4gICAgLm9wdGlvbihcIi1ILCAtLWhlaWdodCA8bnVtYmVyPlwiLCBzaGFwZS5oZWlnaHQuZGVzY3JpcHRpb24sIGAke2QuaGVpZ2h0fWApXG4gICAgLm9wdGlvbihcIi1TLCAtLXNjcmVlbnNob3RzIDxzZWNvbmRzPlwiLCBzaGFwZS5zY3JlZW5zaG90cy5kZXNjcmlwdGlvbiwgXCJcIilcbiAgICAub3B0aW9uKFwiLWYsIC0tZnBzIDxudW1iZXI+XCIsIHNoYXBlLmZwcy5kZXNjcmlwdGlvbiwgYCR7ZC5mcHN9YClcbiAgICAub3B0aW9uKFwiLXQsIC0tZHVyYXRpb24gPG51bWJlcj5cIiwgc2hhcGUuZHVyYXRpb24uZGVzY3JpcHRpb24sIGAke2QuZHVyYXRpb259YClcbiAgICAub3B0aW9uKFwiLW8sIC0tb3V0LWZpbGUgPHBhdGhzPlwiLCBzaGFwZS5vdXRGaWxlcy5kZXNjcmlwdGlvbiwgZC5vdXRGaWxlcy5qb2luKFwiLFwiKSlcbiAgICAub3B0aW9uKFwiLWEsIC0td2l0aC1hdWRpb1wiLCBzaGFwZS53aXRoQXVkaW8uZGVzY3JpcHRpb24sIGQud2l0aEF1ZGlvKVxuICAgIC5vcHRpb24oXCItZCwgLS1kZXRlcm1pbmlzdGljXCIsIHNoYXBlLmRldGVybWluaXN0aWMuZGVzY3JpcHRpb24sIGQuZGV0ZXJtaW5pc3RpYylcbiAgICAub3B0aW9uKFwiLS11c2UtaW5uZXItcHJveHlcIiwgc2hhcGUudXNlSW5uZXJQcm94eS5kZXNjcmlwdGlvbiwgZC51c2VJbm5lclByb3h5KVxuICAgIC5vcHRpb24oXCItLWRpc2FibGUtZ3B1XCIsIHNoYXBlLmRpc2FibGVHcHUuZGVzY3JpcHRpb24sIGQuZGlzYWJsZUdwdSlcbiAgICAub3B0aW9uKFwiLS1kaXNhYmxlLWh3LWNvZGVjXCIsIHNoYXBlLmRpc2FibGVId0NvZGVjLmRlc2NyaXB0aW9uLCBkLmRpc2FibGVId0NvZGVjKVxuICAgIC5vcHRpb24oXCItLWRpc2FibGUtd2ViLXNlY3VyaXR5XCIsIHNoYXBlLmRpc2FibGVXZWJTZWN1cml0eS5kZXNjcmlwdGlvbiwgZC5kaXNhYmxlV2ViU2VjdXJpdHkpXG4gICAgLm9wdGlvbihcIi0td2luZG93LXRvbGVyYW50XCIsIHNoYXBlLndpbmRvd1RvbGVyYW50LmRlc2NyaXB0aW9uLCBkLndpbmRvd1RvbGVyYW50KVxuICAgIC5vcHRpb24oXCItLXdpbmRvdy10aW1lb3V0IDxudW1iZXI+XCIsIHNoYXBlLndpbmRvd1RpbWVvdXQuZGVzY3JpcHRpb24sIGAke2Qud2luZG93VGltZW91dH1gKVxuICAgIC5hY3Rpb24oYXN5bmMgKHNvdXJjZTogc3RyaW5nLCBvcHRzKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBvcHRpb25zLnJ1bihub3JtYWxpemVTb3VyY2Uoc291cmNlKSwge1xuICAgICAgICAgIHdpZHRoOiBub2VycihwYXJzZU51bWJlciwgZC53aWR0aCkob3B0cy53aWR0aCksXG4gICAgICAgICAgaGVpZ2h0OiBub2VycihwYXJzZU51bWJlciwgZC5oZWlnaHQpKG9wdHMuaGVpZ2h0KSxcbiAgICAgICAgICBmcHM6IG5vZXJyKHBhcnNlTnVtYmVyLCBkLmZwcykob3B0cy5mcHMpLFxuICAgICAgICAgIGR1cmF0aW9uOiBub2VycihwYXJzZU51bWJlciwgZC5kdXJhdGlvbikob3B0cy5kdXJhdGlvbiksXG4gICAgICAgICAgb3V0RmlsZXM6IHBhcnNlQXJyYXkocGFyc2VTdHJpbmcpKG9wdHMub3V0RmlsZSksXG4gICAgICAgICAgd2l0aEF1ZGlvOiBvcHRzLndpdGhBdWRpbyA/PyBkLndpdGhBdWRpbyxcbiAgICAgICAgICB1c2VJbm5lclByb3h5OiBvcHRzLnVzZUlubmVyUHJveHkgPz8gZC51c2VJbm5lclByb3h5LFxuICAgICAgICAgIGRldGVybWluaXN0aWM6IG9wdHMuZGV0ZXJtaW5pc3RpYyA/PyBkLmRldGVybWluaXN0aWMsXG4gICAgICAgICAgZGlzYWJsZUdwdTogb3B0cy5kaXNhYmxlR3B1ID8/IGQuZGlzYWJsZUdwdSxcbiAgICAgICAgICBkaXNhYmxlSHdDb2RlYzogb3B0cy5kaXNhYmxlSHdDb2RlYyA/PyBkLmRpc2FibGVId0NvZGVjLFxuICAgICAgICAgIGRpc2FibGVXZWJTZWN1cml0eTogb3B0cy5kaXNhYmxlV2ViU2VjdXJpdHkgPz8gZC5kaXNhYmxlV2ViU2VjdXJpdHksXG4gICAgICAgICAgd2luZG93VG9sZXJhbnQ6IG9wdHMud2luZG93VG9sZXJhbnQgPz8gZC53aW5kb3dUb2xlcmFudCxcbiAgICAgICAgICB3aW5kb3dUaW1lb3V0OiBub2VycihwYXJzZU51bWJlciwgZC53aW5kb3dUaW1lb3V0KShvcHRzLndpbmRvd1RpbWVvdXQpLFxuICAgICAgICAgIHNjcmVlbnNob3RzOiBwYXJzZUFycmF5KHBhcnNlTnVtYmVyKShvcHRzLnNjcmVlbnNob3RzKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci5mYXRhbChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgYXdhaXQgcHJvZ3JhbS5wYXJzZUFzeW5jKHBhcmdzKCkpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgYmFyTG9nZ2VyLCBQcm9ncmVzc0JhciB9IGZyb20gXCIuL2Jhc2UvY2xpX3VpXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG1ha2VDTEkgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHB1cCB9IGZyb20gXCIuL3B1cFwiO1xuXG5tYWtlQ0xJKHtcbiAgbmFtZTogXCJwdXBcIixcbiAgcnVuOiBhc3luYyAoc291cmNlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY3RybCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgZXhpdENvZGUgPSAwO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR1RFUk1cIiwgKCkgPT4ge1xuICAgICAgZXhpdENvZGUgPSAxNDM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR1RFUk1cIikpO1xuICAgIH0pO1xuICAgIHByb2Nlc3Mub25jZShcIlNJR0lOVFwiLCAoKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IDEzMDtcbiAgICAgIGN0cmwuYWJvcnQobmV3IEVycm9yKFwiU0lHSU5UXCIpKTtcbiAgICB9KTtcbiAgICBwcm9jZXNzLm9uY2UoXCJleGl0XCIsIChjKSA9PiB7XG4gICAgICBleGl0Q29kZSA9IGM7XG4gICAgICBjdHJsLmFib3J0KG5ldyBFcnJvcihcIlNJR0tJTExcIikpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG90YWwgPSBNYXRoLmNlaWwob3B0aW9ucy5mcHMgKiBvcHRpb25zLmR1cmF0aW9uKTtcbiAgICBjb25zdCBiYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoeyB0b3RhbCwgb3V0OiBwcm9jZXNzLnN0ZGVyciwgc2hvd0NvdW50OiB0cnVlIH0pO1xuICAgIGxvZ2dlci5pbXBsID0gYmFyTG9nZ2VyKGJhcik7XG5cbiAgICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHNjcmVlbnNob3RzLCBvdXRGaWxlcyB9ID0gYXdhaXQgcHVwKHNvdXJjZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBzaWduYWw6IGN0cmwuc2lnbmFsLFxuICAgICAgICBvblByb2dyZXNzOiAocCkgPT4gYmFyLnVwZGF0ZVBlcmNlbnQocCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlYyA9ICgocGVyZm9ybWFuY2Uubm93KCkgLSB0MCkgLyAxMDAwKS50b0ZpeGVkKDIpO1xuICAgICAgYmFyLnVwZGF0ZSh0b3RhbCk7XG4gICAgICBpZiAoc2NyZWVuc2hvdHMubGVuZ3RoKSB7XG4gICAgICAgIGJhci5sb2coYHNjcmVlbnNob3RzIOKGkiAke3NjcmVlbnNob3RzLmpvaW4oXCIsXCIpfWApO1xuICAgICAgfVxuICAgICAgaWYgKG91dEZpbGVzLmxlbmd0aCkge1xuICAgICAgICBiYXIubG9nKGB2aWRlb3Mg4oaSICR7b3V0RmlsZXMuam9pbihcIixcIil9YCk7XG4gICAgICB9XG4gICAgICBiYXIuZmluaXNoKGBzdW1tYXJ5IOKGkiAke3RvdGFsfSBmcmFtZXMsICR7b3B0aW9ucy53aWR0aH14JHtvcHRpb25zLmhlaWdodH0gQCAke29wdGlvbnMuZnBzfWZwcyBpbiAke3NlY31zYCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYmFyLmZpbmlzaChgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import'source-map-support/register.js';export{n as DEFAULT_DURATION,m as DEFAULT_FPS,l as DEFAULT_HEIGHT,k as DEFAULT_WIDTH,o as DEFAULT_WINDOW_TIMEOUT,r as Lazy,g as Logger,a as ProgressBar,b as barLogger,h as logger,i as noerr,d as parseNumber,c as penv,s as pup}from'./chunk-EOEJXYJR.js';import {setTimeout as setTimeout$1}from'timers/promises';function u(t){return new Promise(r=>setTimeout(r,t))}function E(t,r){let e,o=false;async function i(s){let n=await t(s);o||(e=setTimeout(()=>i(s+1),n??r));}return e=setTimeout(()=>i(0),r),()=>{o=true,clearTimeout(e);}}function D({fn:t,maxAttempts:r=3,timeout:e,signal:o}){let i=new Error(`timeout over ${e}ms`);return async(...s)=>{let n=0;for(;;){o?.throwIfAborted();try{let m=[t(...s)];return e&&m.push(setTimeout$1(e).then(()=>{throw i})),await Promise.race(m)}catch(m){if(o?.throwIfAborted(),n++,n>=r)throw m;await u(2**n*100+Math.random()*100);}}}}export{E as periodical,u as sleep,D as useRetry};//# sourceMappingURL=index.js.map
1
+ import'source-map-support/register.js';export{n as DEFAULT_DURATION,m as DEFAULT_FPS,l as DEFAULT_HEIGHT,k as DEFAULT_WIDTH,o as DEFAULT_WINDOW_TIMEOUT,r as Lazy,g as Logger,a as ProgressBar,b as barLogger,h as logger,i as noerr,d as parseNumber,c as penv,s as pup}from'./chunk-N72ZECPY.js';import {setTimeout as setTimeout$1}from'timers/promises';function u(t){return new Promise(r=>setTimeout(r,t))}function E(t,r){let e,o=false;async function i(s){let n=await t(s);o||(e=setTimeout(()=>i(s+1),n??r));}return e=setTimeout(()=>i(0),r),()=>{o=true,clearTimeout(e);}}function D({fn:t,maxAttempts:r=3,timeout:e,signal:o}){let i=new Error(`timeout over ${e}ms`);return async(...s)=>{let n=0;for(;;){o?.throwIfAborted();try{let m=[t(...s)];return e&&m.push(setTimeout$1(e).then(()=>{throw i})),await Promise.race(m)}catch(m){if(o?.throwIfAborted(),n++,n>=r)throw m;await u(2**n*100+Math.random()*100);}}}}export{E as periodical,u as sleep,D as useRetry};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL3RpbWluZy50cyIsIi4uL3NyYy9iYXNlL3JldHJ5LnRzIl0sIm5hbWVzIjpbInNsZWVwIiwibXMiLCJyZXNvbHZlIiwicGVyaW9kaWNhbCIsImNhbGxiYWNrIiwidG9rZW4iLCJjbG9zZWQiLCJ0aWNrIiwiY291bnQiLCJuZXh0IiwidXNlUmV0cnkiLCJmbiIsIm1heEF0dGVtcHRzIiwidGltZW91dCIsInNpZ25hbCIsInRpbWVvdXRFcnJvciIsImFyZ3MiLCJhdHRlbXB0IiwicHJvbWlzZXMiLCJzZXRUaW1lb3V0IiwiZSJdLCJtYXBwaW5ncyI6IjRWQUVPLFNBQVNBLEVBQU1DLENBQUFBLENBQVksQ0FDaEMsT0FBTyxJQUFJLFFBQWVDLENBQUFBLEVBQVksVUFBQSxDQUFXQSxDQUFBQSxDQUFTRCxDQUFFLENBQUMsQ0FDL0QsQ0FzQk8sU0FBU0UsQ0FBQUEsQ0FBV0MsRUFBc0VILENBQUFBLENBQVksQ0FDM0csSUFBSUksQ0FBQUEsQ0FDQUMsRUFBUyxLQUFBLENBQ2IsZUFBZUMsQ0FBQUEsQ0FBS0MsQ0FBQUEsQ0FBZSxDQUNqQyxJQUFNQyxDQUFBQSxDQUFPLE1BQU1MLENBQUFBLENBQVNJLENBQUssQ0FBQSxDQUM3QkYsQ0FBQUEsR0FHSkQsQ0FBQUEsQ0FBUSxVQUFBLENBQVcsSUFBTUUsQ0FBQUEsQ0FBS0MsQ0FBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBR0MsR0FBUVIsQ0FBRSxDQUFBLEVBQ3RELENBQ0EsT0FBQUksRUFBUSxVQUFBLENBQVcsSUFBTUUsQ0FBQUEsQ0FBSyxDQUFDLEVBQUdOLENBQUUsQ0FBQSxDQUM3QixJQUFNLENBQ1hLLEVBQVMsSUFBQSxDQUNULFlBQUEsQ0FBYUQsQ0FBSyxFQUNwQixDQUNGLENDNUJPLFNBQVNLLENBQUFBLENBQXNDLENBQ3BELEdBQUFDLENBQUFBLENBQ0EsV0FBQSxDQUFBQyxDQUFBQSxDQUFjLENBQUEsQ0FDZCxRQUFBQyxDQUFBQSxDQUNBLE1BQUEsQ0FBQUMsQ0FDRixDQUFBLENBQTRCLENBQzFCLElBQU1DLENBQUFBLENBQWUsSUFBSSxNQUFNLENBQUEsYUFBQSxFQUFnQkYsQ0FBTyxDQUFBLEVBQUEsQ0FBSSxDQUFBLENBQzFELE9BQU8sTUFBQSxHQUFVRyxDQUFBQSxHQUFlLENBQzlCLElBQUlDLEVBQVUsQ0FBQSxDQUNkLE9BQWEsQ0FDWEgsQ0FBQUEsRUFBUSxnQkFBZSxDQUN2QixHQUFJLENBQ0YsSUFBTUksRUFBVyxDQUFDUCxDQUFBQSxDQUFHLEdBQUdLLENBQUksQ0FBQyxDQUFBLENBQzdCLE9BQUlILENBQUFBLEVBQ0ZLLENBQUFBLENBQVMsS0FDUEMsWUFBQUEsQ0FBV04sQ0FBTyxDQUFBLENBQUUsSUFBQSxDQUFLLElBQU0sQ0FDN0IsTUFBTUUsQ0FDUixDQUFDLENBQ0gsQ0FBQSxDQUVLLE1BQU0sT0FBQSxDQUFRLElBQUEsQ0FBS0csQ0FBUSxDQUNwQyxDQUFBLE1BQVNFLENBQUFBLENBQUcsQ0FHVixHQUZBTixDQUFBQSxFQUFRLGNBQUEsRUFBZSxDQUN2QkcsQ0FBQUEsRUFBQUEsQ0FDSUEsR0FBV0wsQ0FBQUEsQ0FDYixNQUFNUSxDQUFBQSxDQUVSLE1BQU1wQixFQUFNLENBQUEsRUFBS2lCLENBQUFBLENBQVUsR0FBQSxDQUFNLElBQUEsQ0FBSyxRQUFPLENBQUksR0FBRyxFQUN0RCxDQUNGLENBQ0YsQ0FDRiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmV4cG9ydCBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFRpbWVvdXQ8VD4ocDogUHJvbWlzZTxUPiwgbXM6IG51bWJlciwgbGFiZWw6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGAke2xhYmVsfSB0aW1lZCBvdXQgYWZ0ZXIgJHttc31tc2ApKSwgbXMpO1xuICAgIHAudGhlbihyZXNvbHZlLCByZWplY3QpLmZpbmFsbHkoKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyKSk7XG4gIH0pO1xufVxuXG4vLyBSZWplY3QgYXMgc29vbiBhcyBgc2lnbmFsYCBhYm9ydHMsIGVsc2Ugc2V0dGxlIHdpdGggYHBgOyBuby1vcCBwYXNzdGhyb3VnaCB3aGVuIG5vIHNpZ25hbC5cbmV4cG9ydCBmdW5jdGlvbiBhYm9ydGFibGU8VD4ocDogUHJvbWlzZTxUPiwgc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPFQ+IHtcbiAgaWYgKCFzaWduYWwpIHtcbiAgICByZXR1cm4gcDtcbiAgfVxuICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiByZWplY3Qoc2lnbmFsLnJlYXNvbik7XG4gICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBvbkFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG4gICAgcC50aGVuKHJlc29sdmUsIHJlamVjdCkuZmluYWxseSgoKSA9PiBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQpKTtcbiAgfSk7XG59XG5cbi8vIENhbGxiYWNrIG1heSByZXR1cm4gdGhlIG5leHQgaW50ZXJ2YWwgKG1zKSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBmb3IgdGhlIGZvbGxvd2luZyB0aWNrLlxuZXhwb3J0IGZ1bmN0aW9uIHBlcmlvZGljYWwoY2FsbGJhY2s6IChjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQsIG1zOiBudW1iZXIpIHtcbiAgbGV0IHRva2VuOiBOb2RlSlMuVGltZW91dDtcbiAgbGV0IGNsb3NlZCA9IGZhbHNlO1xuICBhc3luYyBmdW5jdGlvbiB0aWNrKGNvdW50OiBudW1iZXIpIHtcbiAgICBjb25zdCBuZXh0ID0gYXdhaXQgY2FsbGJhY2soY291bnQpO1xuICAgIGlmIChjbG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdG9rZW4gPSBzZXRUaW1lb3V0KCgpID0+IHRpY2soY291bnQgKyAxKSwgbmV4dCA/PyBtcyk7XG4gIH1cbiAgdG9rZW4gPSBzZXRUaW1lb3V0KCgpID0+IHRpY2soMCksIG1zKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICAgIGNsZWFyVGltZW91dCh0b2tlbik7XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA1LlxuXG5pbXBvcnQgeyBzZXRUaW1lb3V0IH0gZnJvbSBcIm5vZGU6dGltZXJzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBzbGVlcCB9IGZyb20gXCIuL3RpbWluZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5T3B0aW9uczxBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBSZXQ+IHtcbiAgZm46ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPFJldD47XG4gIG1heEF0dGVtcHRzPzogbnVtYmVyO1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvLyBBYm9ydCBiYWlscyBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mIHJldHJ5aW5nOyBzaWduYWwgaXMgbm90IGF1dG8tdGhyZWFkZWQgaW50byBmbiDigJQgY2FsbGVyIHdpcmVzIGl0IChmZXRjaCwgUzMgc2VuZCkuXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlUmV0cnk8QXJncyBleHRlbmRzIHVua25vd25bXSwgUmV0Pih7XG4gIGZuLFxuICBtYXhBdHRlbXB0cyA9IDMsXG4gIHRpbWVvdXQsXG4gIHNpZ25hbCxcbn06IFJldHJ5T3B0aW9uczxBcmdzLCBSZXQ+KSB7XG4gIGNvbnN0IHRpbWVvdXRFcnJvciA9IG5ldyBFcnJvcihgdGltZW91dCBvdmVyICR7dGltZW91dH1tc2ApO1xuICByZXR1cm4gYXN5bmMgKC4uLmFyZ3M6IEFyZ3MpID0+IHtcbiAgICBsZXQgYXR0ZW1wdCA9IDA7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW2ZuKC4uLmFyZ3MpXTtcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgc2V0VGltZW91dCh0aW1lb3V0KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgdGltZW91dEVycm9yO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yYWNlKHByb21pc2VzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgICBhdHRlbXB0Kys7XG4gICAgICAgIGlmIChhdHRlbXB0ID49IG1heEF0dGVtcHRzKSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzbGVlcCgyICoqIGF0dGVtcHQgKiAxMDAgKyBNYXRoLnJhbmRvbSgpICogMTAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ (function(){'use strict';function A(){if(window.__pup_audio_capturing__)return;window.__pup_audio_capturing__=true;let r=window.AudioContext||window.webkitAudioContext;if(!r)return;let p=new WeakSet,_=new WeakSet,c,d,w=()=>{if(c&&d)return {ctx:c,processor:d};let t=new r,e=t.createScriptProcessor(4096,2,2);return e.onaudioprocess=n=>{let o=n.inputBuffer.getChannelData(0),u=n.inputBuffer.getChannelData(1),s=new Float32Array(o.length*2);for(let i=0;i<o.length;i++)s[i*2]=o[i]??0,s[i*2+1]=u[i]??0;window.__pup_audio__?.chunk(s);},e.connect(t.destination),window.__pup_audio__?.meta(t.sampleRate),t.resume(),c=t,d=e,{ctx:t,processor:e}},f=AudioContext.prototype.createMediaElementSource;AudioContext.prototype.createMediaElementSource=function(t){return _.add(t),f.call(this,t)};let l=AudioNode.prototype.connect;AudioNode.prototype.connect=function(t,e,n){let o=t.context,u=o?.__pup_captureDest__;return u&&o&&t===o.destination&&this!==u&&l.call(this,u,e,n),l.call(this,t,e,n)};function a(...t){let e=new r(...t);if(!p.has(e)){p.add(e);let n=w(),o=e.createMediaStreamDestination();e.__pup_captureDest__=o,n.ctx.createMediaStreamSource(o.stream).connect(n.processor);}return e}a.prototype=r.prototype,Object.setPrototypeOf(a,r),window.AudioContext=a,"webkitAudioContext"in window&&(window.webkitAudioContext=a);let x=HTMLMediaElement.prototype.play;HTMLMediaElement.prototype.play=function(){return this.__pup_captured__||(this.__pup_captured__=true,Promise.resolve().then(()=>{if(!_.has(this)){let t=new a;t.createMediaElementSource(this).connect(t.destination);}})),x.call(this)};}A();})();//# sourceMappingURL=audio.global.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2F1ZGlvL2NhcHR1cmUudHMiLCIuLi8uLi9zcmMvcnVudGltZS9hdWRpby50cyJdLCJuYW1lcyI6WyJpbnN0YWxsQXVkaW9DYXB0dXJlIiwiT1JJR19BQyIsImNhcHR1cmVkQ29udGV4dHMiLCJzb3VyY2VkRWxlbWVudHMiLCJtYXN0ZXJDdHgiLCJtYXN0ZXJQcm9jZXNzb3IiLCJlbnN1cmVNYXN0ZXIiLCJjdHgiLCJwcm9jZXNzb3IiLCJlIiwiTCIsIlIiLCJvdXQiLCJvcmlnQ3JlYXRlTUVTIiwiZWwiLCJvcmlnQ29ubmVjdCIsImRlc3QiLCJvdXRJZHgiLCJpbklkeCIsImNhcHR1cmVEZXN0IiwiUGF0Y2hlZEFDIiwiYXJncyIsIm1hc3RlciIsIm9yaWdQbGF5Il0sIm1hcHBpbmdzIjoieUJBMkJPLFNBQVNBLENBQUFBLEVBQTRCLENBQzFDLEdBQUksTUFBQSxDQUFPLHdCQUNULE9BRUYsTUFBQSxDQUFPLHVCQUFBLENBQTBCLElBQUEsQ0FFakMsSUFBTUMsQ0FBQUEsQ0FBVSxNQUFBLENBQU8sWUFBQSxFQUFnQixNQUFBLENBQU8sbUJBQzlDLEdBQUksQ0FBQ0EsQ0FBQUEsQ0FDSCxPQUdGLElBQU1DLENBQUFBLENBQW1CLElBQUksT0FBQSxDQUN2QkMsQ0FBQUEsQ0FBa0IsSUFBSSxPQUFBLENBRXhCQyxDQUFBQSxDQUNBQyxDQUFBQSxDQUVFQyxDQUFBQSxDQUFlLElBQWMsQ0FDakMsR0FBSUYsQ0FBQUEsRUFBYUMsQ0FBQUEsQ0FDZixPQUFPLENBQUUsR0FBQSxDQUFLRCxDQUFBQSxDQUFXLFNBQUEsQ0FBV0MsQ0FBZ0IsQ0FBQSxDQUV0RCxJQUFNRSxDQUFBQSxDQUFNLElBQUlOLENBQUFBLENBQ1ZPLENBQUFBLENBQVlELENBQUFBLENBQUkscUJBQUEsQ0FBc0IsS0FBTSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQ3RELE9BQUFDLEVBQVUsY0FBQSxDQUFrQkMsQ0FBQUEsRUFBNEIsQ0FDdEQsSUFBTUMsRUFBSUQs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TUcsQ0FBQUEsQ0FBVyxnQkFBQSxDQUFpQixTQUFBLENBQVUsS0FDNUMsZ0JBQUEsQ0FBaUIsU0FBQSxDQUFVLElBQUEsQ0FBTyxVQUFZLENBQzVDLE9BQUssSUFBQSxDQUFLLGdCQUFBLEdBQ1IsSUFBQSxDQUFLLGlCQUFtQixJQUFBLENBQ3hCLE9BQUEsQ0FBUSxPQUFBLEVBQVEsQ0FBRSxLQUFLLElBQU0sQ0FDM0IsR0FBSSxDQUFDcEIsRUFBZ0IsR0FBQSxDQUFJLElBQUksQ0FBQSxDQUFHLENBQzlCLElBQU1JLENBQUFBLENBQU0sSUFBS2EsQ0FBQUEsQ0FDakJiLENBQUFBLENBQUkseUJBQXlCLElBQUksQ0FBQSxDQUFFLE9BQUEsQ0FBUUEsQ0FBQUEsQ0FBSSxXQUFXLEVBQzVELENBQ0YsQ0FBQyxDQUFBLENBQUEsQ0FFSWdCLEVBQVMsSUFBQSxDQUFLLElBQUksQ0FDM0IsRUFDRixDQ3JIQXZCLENBQUFBLEVBQW9CIiwiZmlsZSI6ImF1ZGlvLmdsb2JhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDQvMjguXG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19wdXBfYXVkaW9fY2FwdHVyaW5nX18/OiBib29sZWFuO1xuICAgIHdlYmtpdEF1ZGlvQ29udGV4dD86IHR5cGVvZiBBdWRpb0NvbnRleHQ7XG4gICAgX19wdXBfYXVkaW9fXz86IFB1cEF1ZGlvQnJpZGdlO1xuICB9XG4gIGludGVyZmFjZSBBdWRpb0NvbnRleHQge1xuICAgIF9fcHVwX2NhcHR1cmVEZXN0X18/OiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlO1xuICB9XG4gIGludGVyZmFjZSBIVE1MTWVkaWFFbGVtZW50IHtcbiAgICBfX3B1cF9jYXB0dXJlZF9fPzogYm9vbGVhbjtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cEF1ZGlvQnJpZGdlIHtcbiAgbWV0YTogKHNhbXBsZVJhdGU6IG51bWJlcikgPT4gdm9pZDtcbiAgY2h1bms6IChwY206IEZsb2F0MzJBcnJheSkgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIE1hc3RlciB7XG4gIGN0eDogQXVkaW9Db250ZXh0O1xuICBwcm9jZXNzb3I6IFNjcmlwdFByb2Nlc3Nvck5vZGU7XG59XG5cbi8vIFBhZ2Utd29ybGQgY2FwdHVyZTogcGF0Y2hlcyBBdWRpb0NvbnRleHQvSFRNTE1lZGlhRWxlbWVudCwgdGhlbiBoYW5kcyBQQ00gdG8gdGhlIHByZWxvYWQgYnJpZGdlIGZvciBJUEMuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbEF1ZGlvQ2FwdHVyZSgpOiB2b2lkIHtcbiAgaWYgKHdpbmRvdy5fX3B1cF9hdWRpb19jYXB0dXJpbmdfXykge1xuICAgIHJldHVybjtcbiAgfVxuICB3aW5kb3cuX19wdXBfYXVkaW9fY2FwdHVyaW5nX18gPSB0cnVlO1xuXG4gIGNvbnN0IE9SSUdfQUMgPSB3aW5kb3cuQXVkaW9Db250ZXh0IHx8IHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQ7XG4gIGlmICghT1JJR19BQykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNhcHR1cmVkQ29udGV4dHMgPSBuZXcgV2Vha1NldDxBdWRpb0NvbnRleHQ+KCk7XG4gIGNvbnN0IHNvdXJjZWRFbGVtZW50cyA9IG5ldyBXZWFrU2V0PEhUTUxNZWRpYUVsZW1lbnQ+KCk7XG5cbiAgbGV0IG1hc3RlckN0eDogQXVkaW9Db250ZXh0IHwgdW5kZWZpbmVkO1xuICBsZXQgbWFzdGVyUHJvY2Vzc29yOiBTY3JpcHRQcm9jZXNzb3JOb2RlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGVuc3VyZU1hc3RlciA9ICgpOiBNYXN0ZXIgPT4ge1xuICAgIGlmIChtYXN0ZXJDdHggJiYgbWFzdGVyUHJvY2Vzc29yKSB7XG4gICAgICByZXR1cm4geyBjdHg6IG1hc3RlckN0eCwgcHJvY2Vzc29yOiBtYXN0ZXJQcm9jZXNzb3IgfTtcbiAgICB9XG4gICAgY29uc3QgY3R4ID0gbmV3IE9SSUdfQUMoKTtcbiAgICBjb25zdCBwcm9jZXNzb3IgPSBjdHguY3JlYXRlU2NyaXB0UHJvY2Vzc29yKDQwOTYsIDIsIDIpO1xuICAgIHByb2Nlc3Nvci5vbmF1ZGlvcHJvY2VzcyA9IChlOiBBdWRpb1Byb2Nlc3NpbmdFdmVudCkgPT4ge1xuICAgICAgY29uc3QgTCA9IGUuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7XG4gICAgICBjb25zdCBSID0gZS5pbnB1dEJ1ZmZlci5nZXRDaGFubmVsRGF0YSgxKTtcbiAgICAgIGNvbnN0IG91dCA9IG5ldyBGbG9hdDMyQXJyYXkoTC5sZW5ndGggKiAyKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTC5sZW5ndGg7IGkrKykge1xuICAgICAgICBvdXRbaSAqIDJdID0gTFtpXSA/PyAwO1xuICAgICAgICBvdXRbaSAqIDIgKyAxXSA9IFJbaV0gPz8gMDtcbiAgICAgIH1cbiAgICAgIC8vIFJlc29sdmVkIHBlciBjYWxsOiBjb250ZXh0QnJpZGdlIG1heSBleHBvc2UgdGhlIGNoYW5uZWwgYWZ0ZXIgdGhpcyBzY3JpcHQgaGFzIGFscmVhZHkgcnVuLlxuICAgICAgd2luZG93Ll9fcHVwX2F1ZGlvX18/LmNodW5rKG91dCk7XG4gICAgfTtcbiAgICBwcm9jZXNzb3IuY29ubmVjdChjdHguZGVzdGluYXRpb24pO1xuICAgIHdpbmRvdy5fX3B1cF9hdWRpb19fPy5tZXRhKGN0eC5zYW1wbGVSYXRlKTtcbiAgICB2b2lkIGN0eC5yZXN1bWUoKTtcbiAgICBtYXN0ZXJDdHggPSBjdHg7XG4gICAgbWFzdGVyUHJvY2Vzc29yID0gcHJvY2Vzc29yO1xuICAgIHJldHVybiB7IGN0eCwgcHJvY2Vzc29yIH07XG4gIH07XG5cbiAgY29uc3Qgb3JpZ0NyZWF0ZU1FUyA9IEF1ZGlvQ29udGV4dC5wcm90b3R5cGUuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlO1xuICBBdWRpb0NvbnRleHQucHJvdG90eXBlLmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZSA9IGZ1bmN0aW9uIChlbCkge1xuICAgIHNvdXJjZWRFbGVtZW50cy5hZGQoZWwpO1xuICAgIHJldHVybiBvcmlnQ3JlYXRlTUVTLmNhbGwodGhpcywgZWwpO1xuICB9O1xuXG4gIGNvbnN0IG9yaWdDb25uZWN0ID0gQXVkaW9Ob2RlLnByb3RvdHlwZS5jb25uZWN0IGFzICguLi5hcmdzOiB1bmtub3duW10pID0+IEF1ZGlvTm9kZTtcbiAgQXVkaW9Ob2RlLnByb3RvdHlwZS5jb25uZWN0ID0gZnVuY3Rpb24gKFxuICAgIHRoaXM6IEF1ZGlvTm9kZSxcbiAgICBkZXN0OiBBdWRpb05vZGUgfCBBdWRpb1BhcmFtLFxuICAgIG91dElkeD86IG51bWJlcixcbiAgICBpbklkeD86IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3QgY3R4ID0gKGRlc3QgYXMgQXVkaW9Ob2RlKS5jb250ZXh0IGFzIEF1ZGlvQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjYXB0dXJlRGVzdCA9IGN0eD8uX19wdXBfY2FwdHVyZURlc3RfXztcbiAgICBpZiAoY2FwdHVyZURlc3QgJiYgY3R4ICYmIGRlc3QgPT09IGN0eC5kZXN0aW5hdGlvbiAmJiB0aGlzICE9PSBjYXB0dXJlRGVzdCkge1xuICAgICAgb3JpZ0Nvbm5lY3QuY2FsbCh0aGlzLCBjYXB0dXJlRGVzdCwgb3V0SWR4LCBpbklkeCk7XG4gICAgfVxuICAgIHJldHVybiBvcmlnQ29ubmVjdC5jYWxsKHRoaXMsIGRlc3QsIG91dElkeCwgaW5JZHgpO1xuICB9IGFzIHR5cGVvZiBBdWRpb05vZGUucHJvdG90eXBlLmNvbm5lY3Q7XG5cbiAgZnVuY3Rpb24gUGF0Y2hlZEFDKHRoaXM6IEF1ZGlvQ29udGV4dCwgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgY29uc3QgY3R4ID0gbmV3IChPUklHX0FDIGFzIHsgbmV3ICguLi5hOiB1bmtub3duW10pOiBBdWRpb0NvbnRleHQgfSkoLi4uYXJncyk7XG4gICAgaWYgKCFjYXB0dXJlZENvbnRleHRzLmhhcyhjdHgpKSB7XG4gICAgICBjYXB0dXJlZENvbnRleHRzLmFkZChjdHgpO1xuICAgICAgY29uc3QgbWFzdGVyID0gZW5zdXJlTWFzdGVyKCk7XG4gICAgICBjb25zdCBjYXB0dXJlRGVzdCA9IGN0eC5jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7XG4gICAgICBjdHguX19wdXBfY2FwdHVyZURlc3RfXyA9IGNhcHR1cmVEZXN0O1xuICAgICAgbWFzdGVyLmN0eC5jcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShjYXB0dXJlRGVzdC5zdHJlYW0pLmNvbm5lY3QobWFzdGVyLnByb2Nlc3Nvcik7XG4gICAgfVxuICAgIHJldHVybiBjdHg7XG4gIH1cbiAgUGF0Y2hlZEFDLnByb3RvdHlwZSA9IE9SSUdfQUMucHJvdG90eXBlO1xuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoUGF0Y2hlZEFDLCBPUklHX0FDKTtcbiAgd2luZG93LkF1ZGlvQ29udGV4dCA9IFBhdGNoZWRBQyBhcyB1bmtub3duIGFzIHR5cGVvZiBBdWRpb0NvbnRleHQ7XG4gIGlmIChcIndlYmtpdEF1ZGlvQ29udGV4dFwiIGluIHdpbmRvdykge1xuICAgIHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQgPSBQYXRjaGVkQUMgYXMgdW5rbm93biBhcyB0eXBlb2YgQXVkaW9Db250ZXh0O1xuICB9XG5cbiAgY29uc3Qgb3JpZ1BsYXkgPSBIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZS5wbGF5O1xuICBIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZS5wbGF5ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX3B1cF9jYXB0dXJlZF9fKSB7XG4gICAgICB0aGlzLl9fcHVwX2NhcHR1cmVkX18gPSB0cnVlO1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGlmICghc291cmNlZEVsZW1lbnRzLmhhcyh0aGlzKSkge1xuICAgICAgICAgIGNvbnN0IGN0eCA9IG5ldyAoUGF0Y2hlZEFDIGFzIHVua25vd24gYXMgdHlwZW9mIEF1ZGlvQ29udGV4dCkoKTtcbiAgICAgICAgICBjdHguY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHRoaXMpLmNvbm5lY3QoY3R4LmRlc3RpbmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBvcmlnUGxheS5jYWxsKHRoaXMpO1xuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNy8yNy5cblxuaW1wb3J0IHsgaW5zdGFsbEF1ZGlvQ2FwdHVyZSB9IGZyb20gXCIuL2F1ZGlvL2NhcHR1cmVcIjtcblxuaW5zdGFsbEF1ZGlvQ2FwdHVyZSgpO1xuIl19
@@ -0,0 +1,2 @@
1
+ 'use strict';require('source-map-support/register.js');var fs=require('fs'),electron=require('electron');var r="audio-meta",n="audio-chunk";var a="stego-tick";var o="--pup-world=";var p={meta:e=>electron.ipcRenderer.send(r,{sampleRate:e}),chunk:e=>electron.ipcRenderer.send(n,Buffer.from(e.buffer))};if(!process.contextIsolated)throw new Error("preload requires contextIsolation");electron.contextBridge.exposeInMainWorld("__pup_stego_tick__",()=>electron.ipcRenderer.send(a));electron.contextBridge.exposeInMainWorld("__pup_audio__",p);var s=process.argv.find(e=>e.startsWith(o))?.slice(o.length);s&&electron.webFrame.executeJavaScript(fs.readFileSync(s,"utf-8"));//# sourceMappingURL=preload.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlci9hdWRpby50cyIsIi4uLy4uL3NyYy9yZW5kZXJlci9zdGVnby50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3dvcmxkLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvcHJlbG9hZC50cyJdLCJuYW1lcyI6WyJBVURJT19NRVRBX0NIQU5ORUwiLCJBVURJT19DSFVOS19DSEFOTkVMIiwiU1RFR09fVElDS19DSEFOTkVMIiwiV09STERfQVJHIiwiYXVkaW8iLCJzYW1wbGVSYXRlIiwiaXBjUmVuZGVyZXIiLCJwY20iLCJjb250ZXh0QnJpZGdlIiwid29ybGRTY3JpcHQiLCJhIiwid2ViRnJhbWUiLCJyZWFkRmlsZVN5bmMiXSwibWFwcGluZ3MiOiJ5R0FLTyxJQUFNQSxFQUFxQixZQUFBLENBQ3JCQyxDQUFBQSxDQUFzQixjQ0U1QixJQUFNQyxDQUFBQSxDQUFxQixhQ0gzQixJQUFNQyxDQUFBQSxDQUFZLGVDS3pCLElBQU1DLENBQUFBLENBQXdCLENBQzVCLElBQUEsQ0FBT0MsQ0FBQUEsRUFBZUMscUJBQVksSUFBQSxDQUFLTixDQUFBQSxDQUFvQixDQUFFLFVBQUEsQ0FBQUssQ0FBVyxDQUFDLENBQUEsQ0FDekUsS0FBQSxDQUFRRSxHQUFRRCxvQkFBQUEsQ0FBWSxJQUFBLENBQUtMLEVBQXFCLE1BQUEsQ0FBTyxJQUFBLENBQUtNLEVBQUksTUFBTSxDQUFDLENBQy9FLENBQUEsQ0FHQSxHQUFJLENBQUMsT0FBQSxDQUFRLGVBQUEsQ0FDWCxNQUFNLElBQUksS0FBQSxDQUFNLG1DQUFtQyxDQUFBLENBSXJEQyxzQkFBQUEsQ0FBYyxrQkFBa0Isb0JBQUEsQ0FBc0IsSUFBTUYscUJBQVksSUFBQSxDQUFLSixDQUFrQixDQUFDLENBQUEsQ0FDaEdNLHNCQUFBQSxDQUFjLGtCQUFrQixlQUFBLENBQWlCSixDQUFLLEVBR3RELElBQU1LLENBQUFBLENBQWMsUUFBUSxJQUFBLENBQUssSUFBQSxDQUFNQyxHQUFNQSxDQUFBQSxDQUFFLFVBQUEsQ0FBV1AsQ0FBUyxDQUFDLENBQUEsRUFBRyxNQUFNQSxDQUFBQSxDQUFVLE1BQU0sRUFDekZNLENBQUFBLEVBQ0ZFLGlCQUFBQSxDQUFTLGtCQUFrQkMsZUFBQUEsQ0FBYUgsQ0FBQUEsQ0FBYSxPQUFPLENBQUMsQ0FBQSIsImZpbGUiOiJwcmVsb2FkLmNqcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDMvMDIuXG5cbmltcG9ydCB0eXBlIHsgV2ViQ29udGVudHMgfSBmcm9tIFwiZWxlY3Ryb25cIjtcbmltcG9ydCB0eXBlIHsgRW5jb2RlclBpcGVsaW5lIH0gZnJvbSBcIi4uL2Jhc2UvZW5jb2Rlci9waXBlbGluZVwiO1xuXG5leHBvcnQgY29uc3QgQVVESU9fTUVUQV9DSEFOTkVMID0gXCJhdWRpby1tZXRhXCI7XG5leHBvcnQgY29uc3QgQVVESU9fQ0hVTktfQ0hBTk5FTCA9IFwiYXVkaW8tY2h1bmtcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdWRpb0xpc3RlbmVyT3B0aW9ucyB7XG4gIHdjOiBXZWJDb250ZW50cztcbiAgZW5jb2RlcjogRW5jb2RlclBpcGVsaW5lO1xuICBnZXRWaWRlb1RpbWVNczogKCkgPT4gbnVtYmVyO1xuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBBdWRpb0Rpc3Bvc2FsID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGF0dGFjaEF1ZGlvTGlzdGVuZXJzKHsgd2MsIGVuY29kZXIsIGdldFZpZGVvVGltZU1zLCBvbkVycm9yIH06IEF1ZGlvTGlzdGVuZXJPcHRpb25zKTogQXVkaW9EaXNwb3NhbCB7XG4gIGNvbnN0IG9uTWV0YSA9IGFzeW5jIChfZTogdW5rbm93biwgZGF0YTogeyBzYW1wbGVSYXRlOiBudW1iZXIgfSkgPT4ge1xuICAgIGNvbnN0IHNhbXBsZVJhdGUgPSBkYXRhLnNhbXBsZVJhdGU7XG4gICAgY29uc3Qgc3RhcnRNcyA9IGdldFZpZGVvVGltZU1zKCk7XG4gICAgZW5jb2Rlci5zZXR1cEF1ZGlvKHNhbXBsZVJhdGUpO1xuICAgIGNvbnN0IHNpbGVuY2VTYW1wbGVzID0gTWF0aC5jZWlsKChzdGFydE1zICogc2FtcGxlUmF0ZSkgLyAxMDAwKTtcbiAgICBpZiAoc2lsZW5jZVNhbXBsZXMgPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZW5jb2Rlci5lbmNvZGVBdWRpbyhCdWZmZXIuYWxsb2Moc2lsZW5jZVNhbXBsZXMgKiAyICogNCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25DaHVuayA9IGFzeW5jIChfZTogdW5rbm93biwgYnVmZmVyOiBCdWZmZXIpID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZW5jb2Rlci5lbmNvZGVBdWRpbyhidWZmZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgd2MuaXBjLm9uKEFVRElPX01FVEFfQ0hBTk5FTCwgb25NZXRhKTtcbiAgd2MuaXBjLm9uKEFVRElPX0NIVU5LX0NIQU5ORUwsIG9uQ2h1bmspO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgd2MuaXBjLnJlbW92ZUxpc3RlbmVyKEFVRElPX01FVEFfQ0hBTk5FTCwgb25NZXRhKTtcbiAgICB3Yy5pcGMucmVtb3ZlTGlzdGVuZXIoQVVESU9fQ0hVTktfQ0hBTk5FTCwgb25DaHVuayk7XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgdHlwZSB7IERlYnVnZ2VyLCBTaXplLCBXZWJDb250ZW50cyB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IHsgZXZhbEluIH0gZnJvbSBcIi4uL2Jhc2UvY2RwXCI7XG5pbXBvcnQgeyB3aXRoVGltZW91dCB9IGZyb20gXCIuLi9iYXNlL3RpbWluZ1wiO1xuXG5leHBvcnQgY29uc3QgRlJBTUVfU1lOQ19NQVJLRVJfV0lEVEggPSAzMjtcbmV4cG9ydCBjb25zdCBGUkFNRV9TWU5DX01BUktFUl9IRUlHSFQgPSAxO1xuZXhwb3J0IGNvbnN0IFNURUdPX1RJQ0tfQ0hBTk5FTCA9IFwic3RlZ28tdGlja1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTdGVnb0hUTUwodGFyZ2V0VVJMOiBzdHJpbmcsIHNpemU6IFNpemUpOiBzdHJpbmcge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHNpemU7XG4gIHJldHVybiBgPCFET0NUWVBFIGh0bWw+XG48aHRtbD5cbjxoZWFkPlxuICA8bWV0YSBjaGFyc2V0PVwiVVRGLThcIj5cbiAgPHN0eWxlPlxuICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgICBodG1sLCBib2R5IHsgd2lkdGg6ICR7d2lkdGh9cHg7IGhlaWdodDogJHtoZWlnaHQgKyAxfXB4OyBvdmVyZmxvdzogaGlkZGVuOyB9XG4gICAgI3RhcmdldCB7IFxuICAgICAgcG9zaXRpb246IGFic29sdXRlOyBcbiAgICAgIHRvcDogMDsgXG4gICAgICBsZWZ0OiAwOyBcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4OyBcbiAgICAgIGhlaWdodDogJHtoZWlnaHR9cHg7IFxuICAgICAgYm9yZGVyOiBub25lOyBcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAjc3RlZ28ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAke2hlaWdodH1weDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogJHt3aWR0aH1weDtcbiAgICAgIGhlaWdodDogMXB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDtcbiAgICB9XG4gIDwvc3R5bGU+XG48L2hlYWQ+XG48Ym9keT5cbiAgPGlmcmFtZSBpZD1cInRhcmdldFwiIHNyYz1cIiR7dGFyZ2V0VVJMfVwiPjwvaWZyYW1lPlxuICA8Y2FudmFzIGlkPVwic3RlZ29cIiB3aWR0aD1cIiR7d2lkdGh9XCIgaGVpZ2h0PVwiMVwiPjwvY2FudmFzPlxuICA8c2NyaXB0PlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IFdJRFRIID0gJHt3aWR0aH07XG4gICAgICBjb25zdCBNQVJLRVJfV0lEVEggPSAke0ZSQU1FX1NZTkNfTUFSS0VSX1dJRFRIfTtcbiAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVnbycpO1xuICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywgeyB3aWxsUmVhZEZyZXF1ZW50bHk6IHRydWUgfSk7XG4gICAgICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcbiAgICAgIGxldCByYWZJZCA9IG51bGw7XG5cbiAgICAgIGZ1bmN0aW9uIGVuY29kZVRpbWVzdGFtcCh0aW1lc3RhbXBNcykge1xuICAgICAgICBjb25zdCBpbWFnZURhdGEgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKFdJRFRILCAxKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGltYWdlRGF0YS5kYXRhO1xuXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcEludCA9IE1hdGguZmxvb3IodGltZXN0YW1wTXMpID4+PiAwO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTUFSS0VSX1dJRFRIOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBiaXQgPSAodGltZXN0YW1wSW50ID4+PiAoTUFSS0VSX1dJRFRIIC0gMSAtIGkpKSAmIDE7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBiaXQgPyAyNTUgOiAwO1xuICAgICAgICAgIGNvbnN0IGlkeCA9IGkgKiA0O1xuICAgICAgICAgIGRhdGFbaWR4XSA9IHZhbHVlO1xuICAgICAgICAgIGRhdGFbaWR4ICsgMV0gPSB2YWx1ZTtcbiAgICAgICAgICBkYXRhW2lkeCArIDJdID0gdmFsdWU7XG4gICAgICAgICAgZGF0YVtpZHggKyAzXSA9IDI1NTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSBNQVJLRVJfV0lEVEg7IGkgPCBXSURUSDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgaWR4ID0gaSAqIDQ7XG4gICAgICAgICAgZGF0YVtpZHhdID0gMDtcbiAgICAgICAgICBkYXRhW2lkeCArIDFdID0gMDtcbiAgICAgICAgICBkYXRhW2lkeCArIDJdID0gMDtcbiAgICAgICAgICBkYXRhW2lkeCArIDNdID0gMjU1O1xuICAgICAgICB9XG5cbiAgICAgICAgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDApO1xuICAgICAgICB3aW5kb3cuX19wdXBfc3RlZ29fdGlja19fKCk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHVwZGF0ZUxvb3AoKSB7XG4gICAgICAgIGlmIChzdGFydFRpbWUgPT09IG51bGwpIHJldHVybjtcbiAgICAgICAgY29uc3QgZWxhcHNlZCA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgICAgICBlbmNvZGVUaW1lc3RhbXAoZWxhcHNlZCk7XG4gICAgICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZUxvb3ApO1xuICAgICAgfVxuXG4gICAgICB3aW5kb3cuX19wdXBfc3RhcnRfc3RlZ29fXyA9ICgpID0+IHtcbiAgICAgICAgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICAgIGVuY29kZVRpbWVzdGFtcCgwKTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZUxvb3ApO1xuICAgICAgfTtcblxuICAgICAgd2luZG93Ll9fcHVwX2RyYXdfc3RlZ29fXyA9IChtcykgPT4ge1xuICAgICAgICBlbmNvZGVUaW1lc3RhbXAobXMpO1xuICAgICAgfTtcblxuICAgICAgd2luZG93Ll9fcHVwX3N0b3Bfc3RlZ29fXyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJhZklkICE9PSBudWxsKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgICAgIHJhZklkID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KSgpO1xuICA8L3NjcmlwdD5cbjwvYm9keT5cbjwvaHRtbD5gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3RlZ28oYml0bWFwOiBCdWZmZXIsIHNpemU6IFNpemUpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHNpemU7XG4gIGlmICh3aWR0aCA8IEZSQU1FX1NZTkNfTUFSS0VSX1dJRFRIIHx8IGhlaWdodCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgbWFya2VyUm93ID0gaGVpZ2h0IC0gMTtcblxuICBsZXQgdGltZXN0YW1wID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBGUkFNRV9TWU5DX01BUktFUl9XSURUSDsgaSsrKSB7XG4gICAgY29uc3QgcGl4ZWxJZHggPSAobWFya2VyUm93ICogd2lkdGggKyBpKSAqIDQ7XG4gICAgY29uc3QgciA9IGJpdG1hcFtwaXhlbElkeF0gPz8gMDtcbiAgICBjb25zdCBiaXQgPSByID4gMTI3ID8gMSA6IDA7XG4gICAgdGltZXN0YW1wID0gKHRpbWVzdGFtcCA8PCAxKSB8IGJpdDtcbiAgfVxuXG4gIHRpbWVzdGFtcCA9IHRpbWVzdGFtcCA+Pj4gMDtcblxuICBpZiAoIU51bWJlci5pc0Zpbml0ZSh0aW1lc3RhbXApIHx8IHRpbWVzdGFtcCA8IDAgfHwgdGltZXN0YW1wID4gMWU3KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB0aW1lc3RhbXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydFN0ZWdvKGNkcDogRGVidWdnZXIpIHtcbiAgcmV0dXJuIGV2YWxJbihjZHAsIGBfX3B1cF9zdGFydF9zdGVnb19fKClgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BTdGVnbyhjZHA6IERlYnVnZ2VyKSB7XG4gIHJldHVybiBldmFsSW4oY2RwLCBgX19wdXBfc3RvcF9zdGVnb19fKClgKTtcbn1cblxuLy8gUGFpbnRzIHRoZSBzdGVnbyByb3cgZm9yIGBleHBlY3RlZGAgbXMgc3luY2hyb25vdXNseTsgdGhlIGRhbWFnZSByaWRlcyBvdXQgb24gdGhlIG5leHQgY29tcG9zaXRlZCBmcmFtZS5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkcmF3U3RlZ28od2M6IFdlYkNvbnRlbnRzLCBleHBlY3RlZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV2YWxJbih3Yy5kZWJ1Z2dlciwgYF9fcHVwX2RyYXdfc3RlZ29fXygke2V4cGVjdGVkfSlgKTtcbn1cblxuLy8gUmVzb2x2ZXMgd2hlbiB0aGUgcmVuZGVyZXIgY29tbWl0dGVkIHRoZSBzdGVnbyByb3c7IGFybSBCRUZPUkUgZHJhd1N0ZWdvIHRvIGF2b2lkIG1pc3NpbmcgdGhlIGFjay5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0U3RlZ29UaWNrKHdjOiBXZWJDb250ZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzd2FwcGVkID0gbmV3IFByb21pc2UoKHIpID0+IHdjLmlwYy5vbmNlKFNURUdPX1RJQ0tfQ0hBTk5FTCwgcikpO1xuICBhd2FpdCB3aXRoVGltZW91dChzd2FwcGVkLCA1XzAwMCwgXCJzdGVnbyB0aWNrXCIpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNy8yNy5cblxuZXhwb3J0IHR5cGUgV29ybGRNb2RlID0gXCJzaG9vdFwiIHwgXCJyZW5kZXJcIiB8IFwiYXVkaW9cIjtcblxuLy8gTmFtZXMgdGhlIHBhZ2Utd29ybGQgYnVuZGxlIGluIHRoZSBwcmVsb2FkJ3MgYXJndjsga2VlcCB0aGlzIG1vZHVsZSBkZXBlbmRlbmN5LWZyZWUsIHRoZSBwcmVsb2FkIGxvYWRzIGl0IGFzLWlzLlxuZXhwb3J0IGNvbnN0IFdPUkxEX0FSRyA9IFwiLS1wdXAtd29ybGQ9XCI7XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA3LzI3LlxuXG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgY29udGV4dEJyaWRnZSwgaXBjUmVuZGVyZXIsIHdlYkZyYW1lIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5cbmltcG9ydCB7IEFVRElPX0NIVU5LX0NIQU5ORUwsIEFVRElPX01FVEFfQ0hBTk5FTCB9IGZyb20gXCIuLi9yZW5kZXJlci9hdWRpb1wiO1xuaW1wb3J0IHsgU1RFR09fVElDS19DSEFOTkVMIH0gZnJvbSBcIi4uL3JlbmRlcmVyL3N0ZWdvXCI7XG5pbXBvcnQgdHlwZSB7IFB1cEF1ZGlvQnJpZGdlIH0gZnJvbSBcIi4vYXVkaW8vY2FwdHVyZVwiO1xuaW1wb3J0IHsgV09STERfQVJHIH0gZnJvbSBcIi4vd29ybGRcIjtcblxuY29uc3QgYXVkaW86IFB1cEF1ZGlvQnJpZGdlID0ge1xuICBtZXRhOiAoc2FtcGxlUmF0ZSkgPT4gaXBjUmVuZGVyZXIuc2VuZChBVURJT19NRVRBX0NIQU5ORUwsIHsgc2FtcGxlUmF0ZSB9KSxcbiAgY2h1bms6IChwY20pID0+IGlwY1JlbmRlcmVyLnNlbmQoQVVESU9fQ0hVTktfQ0hBTk5FTCwgQnVmZmVyLmZyb20ocGNtLmJ1ZmZlcikpLFxufTtcblxuLy8gR3VhcmRzIHRoZSB3aG9sZSBkZXNpZ246IHdpdGhvdXQgaXNvbGF0aW9uIHRoZSBwYWdlIHNoYXJlcyB0aGlzIHNjb3BlIGFuZCBjYW4gZmlzaCBpcGNSZW5kZXJlciBvdXQgb2YgaXQuXG5pZiAoIXByb2Nlc3MuY29udGV4dElzb2xhdGVkKSB7XG4gIHRocm93IG5ldyBFcnJvcihcInByZWxvYWQgcmVxdWlyZXMgY29udGV4dElzb2xhdGlvblwiKTtcbn1cblxuLy8gVGhlIG9ubHkgY2FwYWJpbGl0eSB0aGUgcGFnZSB3b3JsZCBnZXRzOiB0d28gZml4ZWQgSVBDIGNoYW5uZWxzIGJlaGluZCBjb250ZXh0QnJpZGdlLCBuZXZlciBpcGNSZW5kZXJlciBpdHNlbGYuXG5jb250ZXh0QnJpZGdlLmV4cG9zZUluTWFpbldvcmxkKFwiX19wdXBfc3RlZ29fdGlja19fXCIsICgpID0+IGlwY1JlbmRlcmVyLnNlbmQoU1RFR09fVElDS19DSEFOTkVMKSk7XG5jb250ZXh0QnJpZGdlLmV4cG9zZUluTWFpbldvcmxkKFwiX19wdXBfYXVkaW9fX1wiLCBhdWRpbyk7XG5cbi8vIEhvb2tzIG11c3QgcGF0Y2ggcGFnZSBnbG9iYWxzLCBzbyB0aGV5IHJ1biBpbiB0aGUgbWFpbiB3b3JsZCDigJQgcmVhY2hhYmxlIGZyb20gaGVyZSBidXQgbm90IGZyb20gdGhpcyBpc29sYXRlZCBzY29wZS5cbmNvbnN0IHdvcmxkU2NyaXB0ID0gcHJvY2Vzcy5hcmd2LmZpbmQoKGEpID0+IGEuc3RhcnRzV2l0aChXT1JMRF9BUkcpKT8uc2xpY2UoV09STERfQVJHLmxlbmd0aCk7XG5pZiAod29ybGRTY3JpcHQpIHtcbiAgd2ViRnJhbWUuZXhlY3V0ZUphdmFTY3JpcHQocmVhZEZpbGVTeW5jKHdvcmxkU2NyaXB0LCBcInV0Zi04XCIpKTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ (function(){'use strict';function o(){window.__HF_MODE__="export";}window.self!==window.top&&o();})();//# sourceMappingURL=render.global.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2h5cGVyZnJhbWVzLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvcmVuZGVyLnRzIl0sIm5hbWVzIjpbImluc3RhbGxIZkhvb2siXSwibWFwcGluZ3MiOiJ5QkFRTyxTQUFTQSxDQUFBQSxFQUFnQixDQUM5QixNQUFBLENBQU8sV0FBQSxDQUFjLFNBQ3ZCLENDTkksTUFBQSxDQUFPLElBQUEsR0FBUyxNQUFBLENBQU8sR0FBQSxFQUN6QkEsQ0FBQUEsRUFBYyIsImZpbGUiOiJyZW5kZXIuZ2xvYmFsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNy8xNi5cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX0hGX01PREVfXz86IHN0cmluZztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbEhmSG9vaygpIHtcbiAgd2luZG93Ll9fSEZfTU9ERV9fID0gXCJleHBvcnRcIjtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDcvMjcuXG5cbmltcG9ydCB7IGluc3RhbGxIZkhvb2sgfSBmcm9tIFwiLi9oeXBlcmZyYW1lc1wiO1xuXG5pZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHtcbiAgaW5zdGFsbEhmSG9vaygpO1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ (function(){'use strict';function v(n){queueMicrotask(()=>{Object.defineProperty(n,"error",{configurable:true,value:{code:4,message:"audio disabled in deterministic mode"}}),n.dispatchEvent(new Event("error"));});}function U(n){let t=document.createElement("audio");return t.preload="none",n&&(t.src=n,v(t)),t}function L(){let n=window.Audio;window.Audio=U,window.Audio.prototype=n.prototype;let t=HTMLAudioElement.prototype;t.load=function(){v(this);},t.play=function(){return v(this),Promise.reject(new DOMException("audio disabled in deterministic mode","NotSupportedError"))};}function O(){window.__HF_MODE__="export";}function C(){if(window.__pup_tick__)return;let n=Date,t=n.now(),e=0,r=0,a=[],o={},i=1,f=()=>(r+=.01,r);function m(...c){return this instanceof m?c.length?new(Function.prototype.bind.apply(n,[null,...c])):new n(t+e+f()):new n(t+e).toString()}m.prototype=n.prototype,m.now=()=>t+e+f(),m.parse=n.parse,m.UTC=n.UTC,window.Date=m,performance.now=()=>e+f(),window.requestAnimationFrame=c=>{let u=i++;return a.push({id:u,cb:c}),u},window.cancelAnimationFrame=c=>{a=a.filter(u=>u.id!==c);},window.setTimeout=(c,u)=>{let d=i++;return o[d]={type:"timeout",cb:c,delay:u||0,next:e+(u||0)},d},window.clearTimeout=c=>{typeof c=="number"&&delete o[c];},window.setInterval=(c,u)=>{let d=i++,h=Math.max(u||0,1);return o[d]={type:"interval",cb:c,delay:h,next:e+h},d},window.clearInterval=c=>{typeof c=="number"&&delete o[c];};function g(c){try{typeof c=="string"?new Function(c)():c();}catch(u){console.error("[Tick] error:",u instanceof Error&&u.stack||u);}}function p(c,u){try{c(u);}catch(d){console.error("[Tick] error:",d instanceof Error&&d.stack||d);}}let b=new WeakMap;function w(c){try{let u=c.effect?.getComputedTiming().endTime;return typeof u=="number"&&Number.isFinite(u)?u:void 0}catch{return}}function y(c){let u;try{u=document.getAnimations();}catch{return}for(let d of u){let h=d.playState;if(h==="idle"||h==="finished"){b.delete(d);continue}let T=typeof d.playbackRate=="number"?d.playbackRate:1;if(T===0)continue;let E=b.get(d);if(E){if(!E.adopted&&h!=="paused"){let H=typeof d.currentTime=="number"?d.currentTime:0;E.startMs=c-H/T,E.adopted=true;try{d.pause();}catch{}}}else {let H=typeof d.currentTime=="number"?d.currentTime:0;if(E={startMs:c-H/T,adopted:h!=="paused"},b.set(d,E),E.adopted)try{d.pause();}catch{}}if(!E.adopted)continue;let x=(c-E.startMs)*T,A=w(d);if(T>0?A!==void 0&&x>=A:x<=0){b.delete(d);try{d.finish();}catch{}continue}d.currentTime=x;}}function s(c){e=c,r=0;for(let d of Object.keys(o)){let h=o[Number(d)];if(h)for(;h.next<=e;){if(g(h.cb),h.type==="timeout"){delete o[Number(d)];break}h.next+=h.delay;}}let u=a.splice(0);for(let d of u)p(d.cb,e);y(e);}window.__pup_tick__={process:s};}var G=["borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","transform","transformOrigin","filter","clipPath","boxShadow","opacity","mixBlendMode","mask","zIndex","position","left","top","right","bottom"];function F(n){return n.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function k(n,t){let e=window.getComputedStyle(n);t.style.position="absolute",t.style.left=`${n.offsetLeft}px`,t.style.top=`${n.offsetTop}px`,t.style.width=`${n.offsetWidth}px`,t.style.height=`${n.offsetHeight}px`;for(let m of G){if(m==="position"||m==="left"||m==="top"||m==="right"||m==="bottom")continue;let g=e.getPropertyValue(F(m));g&&t.style.setProperty(F(m),g);}let r=n.getBoundingClientRect(),a=window.devicePixelRatio||1,o=Math.max(1,Math.round(r.width*a)),i=Math.max(1,Math.round(r.height*a)),f=false;return t.width!==o&&(t.width=o,f=true),t.height!==i&&(t.height=i,f=true),f}function D(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),k(n,e),t)try{e.getContext("2d").drawImage(t,0,0,e.width,e.height);}catch{}return e}function P(n,t,e,r,a){if(a==="none")return [(e-n)/2,(r-t)/2,n,t];if(a==="contain"||a==="scale-down"){let o=Math.min(e/n,r/t),i=a==="scale-down"?Math.min(1,o):o,f=i*n,m=i*t;return [(e-f)/2,(r-m)/2,f,m]}if(a==="cover"){let o=Math.max(e/n,r/t),i=o*n,f=o*t;return [(e-i)/2,(r-f)/2,i,f]}return [0,0,e,r]}var M="pup-frame://";var I="[VideoHook]";function V(n){return {length:n>0?1:0,start:()=>0,end:()=>n}}function l(n,t){n.dispatchEvent(new Event(t));}function K(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 a of t)a(e,r);}async function Q(n,t,e,r){let a=n.cache.cacheOf(e.meta.id);a.readers.set(e,r);let o=a.bitmaps.get(r);if(!o){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,l(t,"waiting"));return}o=m;}e.waiting&&(e.waiting=false,e.paused||l(t,"playing"));let i=e.cv,f=P(o.width,o.height,i.width,i.height,e.objectFit);e.ctx.clearRect(0,0,i.width,i.height),e.ctx.drawImage(o,f[0],f[1],f[2],f[3]),e.lastDrawnIdx=r,e.presentedFrames++,K(e),n.cache.prefetch(e,r+1,10),n.cache.evict(a);}function N(n,t){let e=Math.max(0,t-n.currMs)/1e3;n.currMs=t;let r=[];return document.querySelectorAll("video").forEach(a=>{let o=a,i=n.sessions.get(o);if(!i||i.dead||(k(o,i.cv)&&(i.lastDrawnIdx=-1),!i.meta))return;if(i.meta.frameWidth<i.meta.width&&i.cv.width>i.meta.frameWidth*1.05&&!n.attaching.has(o)){n.reattach(o,i);return}!i.paused&&!i.ended&&(i.currentTime+=e*(o.playbackRate||1),i.maxReached=Math.max(i.maxReached,i.currentTime),i.currentTime>=i.meta.duration?o.loop?i.currentTime=i.currentTime%i.meta.duration:(i.currentTime=i.meta.duration,i.paused=true,i.ended=true,l(o,"ended")):l(o,"timeupdate"));let f=Math.max(1,Math.round(i.currentTime*i.meta.fps));f!==i.lastDrawnIdx&&r.push(Q(n,o,i,f));}),Promise.all(r)}var S=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=t.meta;if(!r)return Promise.resolve(void 0);let a=this.cacheOf(r.id),o=a.inFlight.get(e);if(o)return o;let i=a.bitmaps.get(e);if(i)return Promise.resolve(i);let f=r.frameWidth,m=r.frameHeight,g=fetch(`${M}frame?id=${r.id}&idx=${e}`).then(p=>p.ok?p.arrayBuffer():void 0).then(p=>p&&p.byteLength===f*m*4?createImageBitmap(new ImageData(new Uint8ClampedArray(p),f,m)):void 0).then(p=>(a.inFlight.delete(e),p&&a.bitmaps.set(e,p),p)).catch(()=>{a.inFlight.delete(e);});return a.inFlight.set(e,g),g}prefetch(t,e,r){let a=t.meta;if(!a)return;let o=Math.max(1,Math.round(a.duration*a.fps));for(let i=e;i<e+r;i++)i<1||i>o||this.fetch(t,i);}evict(t){let e=1/0;if(t.readers.forEach(a=>{a<e&&(e=a);}),!Number.isFinite(e))return;let r=e-2;t.bitmaps.forEach((a,o)=>{o<r&&(a.close(),t.bitmaps.delete(o));});}release(t,e){let r=this._caches.get(t);r&&(r.readers.delete(e),!(r.readers.size>0)&&(r.bitmaps.forEach(a=>{a.close();}),this._caches.delete(t),fetch(`${M}close?id=${t}`,{keepalive:true})));}};function $(n){let t=HTMLVideoElement.prototype,e=HTMLMediaElement.prototype,r=s=>Object.getOwnPropertyDescriptor(t,s)||Object.getOwnPropertyDescriptor(e,s),a=r("currentTime"),o=r("src"),i=r("playbackRate"),f=t.pause,m=t.requestVideoFrameCallback,g=t.cancelVideoFrameCallback,p=t.getVideoPlaybackQuality,b=t.load,w=n.sessions,y=(s,c)=>{let u=r(s)?.get;if(!u)throw new Error(`media_shim: no native getter for ${s}`);Object.defineProperty(t,s,{configurable:true,get(){let d=w.get(this);return d?c(d):u.call(this)}});};if(y("paused",s=>s.paused),y("ended",s=>s.ended),y("readyState",s=>s.readyState),y("networkState",s=>s.networkState),y("error",s=>s.error??null),y("seeking",s=>s.seeking),y("buffered",s=>V(s.meta?s.meta.duration:0)),y("seekable",s=>V(s.meta?s.meta.duration:0)),y("played",s=>V(s.maxReached)),t.play=function(){let s=w.get(this);return s?(n.resume(this,s),Promise.resolve()):n.attach(this).then(c=>{c&&n.resume(this,c);})},t.pause=function(){let s=w.get(this);if(!s){f.call(this);return}s.paused||(s.paused=true,l(this,"pause"));},a?.get&&a.set){let s=a.get,c=a.set;Object.defineProperty(t,"currentTime",{configurable:true,get(){let u=w.get(this);return u?u.currentTime:s.call(this)},set(u){let d=w.get(this);if(!d){c.call(this,u);return}let h=d.meta?d.meta.duration:u;d.currentTime=Math.max(0,Math.min(u,h)),d.maxReached=Math.max(d.maxReached,d.currentTime),d.currentTime<h&&(d.ended=false),d.seeking=true,l(this,"seeking"),d.seeking=false,l(this,"seeked"),l(this,"timeupdate");}});}if(i?.set){let s=i.set;Object.defineProperty(t,"playbackRate",{configurable:true,get:i.get,set(c){s.call(this,c),w.has(this)&&l(this,"ratechange");}});}if(t.requestVideoFrameCallback=function(s){let c=w.get(this);if(!c)return m.call(this,s);let u=++n.rvfcSeq;return c.rvfc.set(u,s),u},t.cancelVideoFrameCallback=function(s){let c=w.get(this);if(!c){g.call(this,s);return}c.rvfc.delete(s);},t.getVideoPlaybackQuality=function(){let s=w.get(this);return s?{creationTime:performance.now(),totalVideoFrames:s.presentedFrames,droppedVideoFrames:0,corruptedVideoFrames:0}:p.call(this)},t.load=function(){if(!w.has(this))return b.call(this);n.detach(this),l(this,"emptied"),this.__pupLastSrc=void 0,n.attach(this);},o?.set){let s=o.set;Object.defineProperty(t,"src",{configurable:true,get:o.get,set(c){s.call(this,c),n.onSrcChange(this);}});}}function W(n,t){return {meta:void 0,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 j(n,t,e){t.dead=true,t.error=e,t.networkState=3,console.error(I,`${e.message} src=${n.src||n.currentSrc}`),l(n,"error");}async function q(n,t){let{video:e,state:r,src:a,birthMs:o,native:i}=t,f=Number.parseInt(e.dataset.pupFps||"30",10);r.networkState=2,l(e,"loadstart");let m;try{let b=i?"":`&w=${r.cv.width}&h=${r.cv.height}&fit=${encodeURIComponent(r.objectFit)}`;m=await fetch(`${M}open?src=${encodeURIComponent(a)}&fps=${f}${b}`);}catch(b){return j(e,r,{code:2,message:`open failed: ${b instanceof Error?b.message:String(b)}`})}if(n.sessions.get(e)!==r)return;if(!m.ok)return j(e,r,{code:3,message:`open ${m.status}: ${await m.text()}`});let g=await m.json();if(n.sessions.get(e)!==r)return;r.meta=g,r.currentTime=r.paused?0:Math.max(0,(n.currMs-o)/1e3);let p=e.videoWidth>0;return Object.defineProperty(e,"videoWidth",{value:g.width,configurable:true}),Object.defineProperty(e,"videoHeight",{value:g.height,configurable:true}),Object.defineProperty(e,"duration",{value:g.duration,configurable:true}),r.readyState=1,p||(l(e,"durationchange"),l(e,"loadedmetadata")),r.readyState=4,p||(l(e,"loadeddata"),l(e,"canplay"),l(e,"canplaythrough")),r.networkState=1,p||(l(e,"suspend"),r.paused||(l(e,"play"),l(e,"playing"))),n.cache.prefetch(r,1,10),r}var R=class{sessions=new WeakMap;attaching=new WeakMap;opening=new Set;cache=new S;rvfcSeq=0;currMs=0;_lastSnapshot=new WeakMap;install(){$(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=>N(this,t),ready:()=>this.ready()};}attach(t,e=false){let r=this.sessions.get(t);if(r)return Promise.resolve(r);let a=this.attaching.get(t);if(a)return a;let o=t.src||t.currentSrc;if(!o||/^(blob:|data:|mediastream:)/i.test(o))return Promise.resolve(void 0);let i=D(t,this._lastSnapshot.get(t)),f=W(t,i);this.sessions.set(t,f);let m=q(this,{video:t,state:f,src:o,birthMs:this.currMs,native:e}).finally(()=>{this.attaching.delete(t),this.opening.delete(m);});return this.attaching.set(t,m),this.opening.add(m),m}async ready(){await Promise.allSettled([...this.opening]);}resume(t,e){!e.paused&&!e.ended||(e.paused=false,e.ended=false,l(t,"play"),l(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),a=r.getContext("2d");if(!a)throw new Error("no 2d context");a.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,a=e.paused,o=e.ended;this.detach(t),this.attach(t,true).then(i=>{i&&(i.currentTime=r,i.paused=a,i.ended=o);});}scan(t){t&&(t.tagName==="VIDEO"&&this.attach(t),t.querySelectorAll&&t.querySelectorAll("video").forEach(e=>{this.attach(e);}));}};function B(){window.__pup_video__||new R().install();}window.self!==window.top&&(L(),O(),C(),B());
2
+ })();//# sourceMappingURL=shoot.global.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2F1ZGlvL3NoaW0udHMiLCIuLi8uLi9zcmMvcnVudGltZS9oeXBlcmZyYW1lcy50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3RpY2sudHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9vdmVybGF5LnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vdHlwZXMudHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9kcml2ZXIudHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9mcmFtZV9jYWNoZS50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3ZpZGVvL21lZGlhX3NoaW0udHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9zZXNzaW9uLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vaG9vay50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3Nob290LnRzIl0sIm5hbWVzIjpbImZhaWwiLCJlbCIsIkF1ZGlvU2hpbSIsInVybCIsImluc3RhbGxBdWRpb1NoaW0iLCJOYXRpdmVBdWRpbyIsIkhBRSIsImluc3RhbGxIZkhvb2siLCJpbnN0YWxsVGlja0hvb2siLCJSRUFMX0RBVEUiLCJkYXRlT3JpZ2luIiwiY3Vyck1zIiwidGltZU9mZnNldCIsInJhZlF1ZXVlIiwidGltZXJzIiwibmV4dElkIiwidGljayIsIkZha2VEYXRlIiwiYXJncyIsImNiIiwiaWQiLCJyIiwiZGVsYXkiLCJkIiwic2FmZUludm9rZVRpbWVyIiwiZm4iLCJlIiwic2FmZUludm9rZVJhZiIsInRzIiwiYW5pbVN0YXRlIiwiZW5kQm91bmRhcnkiLCJhIiwidCIsInN5bmNBbmltYXRpb25zIiwibXMiLCJhbmltcyIsInN0YXRlIiwicmF0ZSIsInMiLCJjdCIsImN0MCIsInRhcmdldCIsImVuZCIsInByb2Nlc3MiLCJ0aW1lc3RhbXBNcyIsInJhZnMiLCJNSVJST1JfUFJPUFMiLCJjc3NDYXNlIiwiYyIsInN5bmNPdmVybGF5IiwidmlkZW8iLCJjdiIsImNzIiwicCIsInYiLCJ2ciIsImRwciIsInciLCJoIiwicmVzaXplZCIsInNldHVwQ2FudmFzIiwic25hcCIsImZpdFJlY3QiLCJzcmNXIiwic3JjSCIsImRzdFciLCJkc3RIIiwiZml0Iiwic2MiLCJrIiwid3MiLCJocyIsInNjMiIsIndzMiIsImhzMiIsIlNDSEVNRSIsIlRBRyIsInRpbWVSYW5nZXMiLCJmaXJlIiwidHlwZSIsImZpcmVGcmFtZUNhbGxiYWNrcyIsImNicyIsIm5vdyIsIm1ldGEiLCJwYWludCIsImhvb2siLCJpZHgiLCJibSIsImZldGNoZWQiLCJhZHZhbmNlIiwiZHQiLCJwcyIsIkZyYW1lQ2FjaGUiLCJleGlzdGluZyIsImNhY2hlZCIsImJ1ZiIsImZyb21JZHgiLCJjb3VudCIsIm1heElkeCIsIm1pbklkeCIsImZsb29yIiwiaW5zdGFsbE1lZGlhU2hpbSIsIkhWRSIsIk1FRElBIiwibWRlc2MiLCJjdERlc2MiLCJzcmNEZXNjIiwicmF0ZURlc2MiLCJvcmlnUGF1c2UiLCJvcmlnUlZGQyIsIm9yaWdDYW5jZWxSVkZDIiwib3JpZ1F1YWxpdHkiLCJvcmlnTG9hZCIsInNlc3Npb25zIiwiZGVmIiwicHJvcCIsInBpY2siLCJuYXRpdmVHZXQiLCJucyIsImN0R2V0IiwiY3RTZXQiLCJkdXIiLCJyYXRlU2V0Iiwic3JjU2V0IiwibmV3VmlkZW9TdGF0ZSIsImZhaWxPcGVuIiwiZXJyb3IiLCJvcGVuU2Vzc2lvbiIsInNyYyIsImJpcnRoTXMiLCJuYXRpdmUiLCJmcHMiLCJyZXMiLCJxIiwibmF0aXZlTWV0YSIsIlZpZGVvSG9vayIsIm11dHMiLCJtIiwibiIsInBlbmRpbmciLCJzY3R4IiwicGF1c2VkIiwiZW5kZWQiLCJyb290IiwiaW5zdGFsbFZpZGVvSG9vayJdLCJtYXBwaW5ncyI6InlCQUtBLFNBQVNBLENBQUFBLENBQUtDLEVBQTRCLENBQ3hDLGNBQUEsQ0FBZSxJQUFNLENBQ25CLE1BQUEsQ0FBTyxlQUFlQSxDQUFBQSxDQUFJLE9BQUEsQ0FBUyxDQUNqQyxZQUFBLENBQWMsSUFB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ZSI6InNob290Lmdsb2JhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC1kIGNhcHR1cmVzIG5vIGF1ZGlvOyBhIGxvYWRpbmcgPGF1ZGlvPiB3b3VsZCBoaXQgdGhlIG1lZGlh4oaSc3R1YiByZWRpcmVjdCwgd2hpY2ggc2VydmVzIHZpZGVvIHN0dWJzIG9ubHkuXG5cbmNvbnN0IFNSQ19OT1RfU1VQUE9SVEVEID0gNDsgLy8gTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVEXG5cbi8vIE1pcnJvciBhIGZhaWxlZCBuYXRpdmUgbG9hZCBzbyBlcnJvci1oYW5kbGluZyBwYWdlcyBwcm9jZWVkIGV4YWN0bHkgYXMgdGhleSBkbyB3aGVuIHRoZSBzb3VyY2UgaXMgYnJva2VuLlxuZnVuY3Rpb24gZmFpbChlbDogSFRNTEF1ZGlvRWxlbWVudCk6IHZvaWQge1xuICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsLCBcImVycm9yXCIsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiB7IGNvZGU6IFNSQ19OT1RfU1VQUE9SVEVELCBtZXNzYWdlOiBcImF1ZGlvIGRpc2FibGVkIGluIGRldGVybWluaXN0aWMgbW9kZVwiIH0sXG4gICAgfSk7XG4gICAgZWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJlcnJvclwiKSk7XG4gIH0pO1xufVxuXG4vLyBUaGUgbmF0aXZlIEF1ZGlvKCkgY29uc3RydWN0b3IgaW52b2tlcyB0aGUgbG9hZCBhbGdvcml0aG0gaW50ZXJuYWxseSwgc28gb25seSBhIGNvbnN0cnVjdG9yIHN3YXAgY2FuIHByZWVtcHQgdGhlIGZldGNoLlxuZnVuY3Rpb24gQXVkaW9TaGltKHVybD86IHN0cmluZyk6IEhUTUxBdWRpb0VsZW1lbnQge1xuICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhdWRpb1wiKTtcbiAgZWwucHJlbG9hZCA9IFwibm9uZVwiO1xuICBpZiAodXJsKSB7XG4gICAgZWwuc3JjID0gdXJsO1xuICAgIGZhaWwoZWwpO1xuICB9XG4gIHJldHVybiBlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxBdWRpb1NoaW0oKTogdm9pZCB7XG4gIGNvbnN0IE5hdGl2ZUF1ZGlvID0gd2luZG93LkF1ZGlvO1xuICB3aW5kb3cuQXVkaW8gPSBBdWRpb1NoaW0gYXMgdW5rbm93biBhcyB0eXBlb2YgQXVkaW87XG4gIHdpbmRvdy5BdWRpby5wcm90b3R5cGUgPSBOYXRpdmVBdWRpby5wcm90b3R5cGU7XG5cbiAgY29uc3QgSEFFID0gSFRNTEF1ZGlvRWxlbWVudC5wcm90b3R5cGU7XG4gIEhBRS5sb2FkID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxBdWRpb0VsZW1lbnQpIHtcbiAgICBmYWlsKHRoaXMpO1xuICB9O1xuICBIQUUucGxheSA9IGZ1bmN0aW9uICh0aGlzOiBIVE1MQXVkaW9FbGVtZW50KSB7XG4gICAgZmFpbCh0aGlzKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IERPTUV4Y2VwdGlvbihcImF1ZGlvIGRpc2FibGVkIGluIGRldGVybWluaXN0aWMgbW9kZVwiLCBcIk5vdFN1cHBvcnRlZEVycm9yXCIpKTtcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDcvMTYuXG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19IRl9NT0RFX18/OiBzdHJpbmc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxIZkhvb2soKSB7XG4gIHdpbmRvdy5fX0hGX01PREVfXyA9IFwiZXhwb3J0XCI7XG59XG4iLCJkZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fcHVwX3RpY2tfXz86IHsgcHJvY2VzczogKG1zOiBudW1iZXIpID0+IHZvaWQgfTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgVGltZXIge1xuICB0eXBlOiBcInRpbWVvdXRcIiB8IFwiaW50ZXJ2YWxcIjtcbiAgY2I6IFRpbWVySGFuZGxlcjtcbiAgZGVsYXk6IG51bWJlcjtcbiAgbmV4dDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmFmRW50cnkge1xuICBpZDogbnVtYmVyO1xuICBjYjogRnJhbWVSZXF1ZXN0Q2FsbGJhY2s7XG59XG5cbmludGVyZmFjZSBBbmltRW50cnkge1xuICBzdGFydE1zOiBudW1iZXI7XG4gIGFkb3B0ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsVGlja0hvb2soKTogdm9pZCB7XG4gIGlmICh3aW5kb3cuX19wdXBfdGlja19fKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgUkVBTF9EQVRFID0gRGF0ZTtcbiAgY29uc3QgZGF0ZU9yaWdpbiA9IFJFQUxfREFURS5ub3coKTtcbiAgbGV0IGN1cnJNcyA9IDA7XG4gIGxldCB0aW1lT2Zmc2V0ID0gMDtcbiAgbGV0IHJhZlF1ZXVlOiBSYWZFbnRyeVtdID0gW107XG4gIGNvbnN0IHRpbWVyczogUmVjb3JkPG51bWJlciwgVGltZXIgfCB1bmRlZmluZWQ+ID0ge307XG4gIGxldCBuZXh0SWQgPSAxO1xuICBjb25zdCB0aWNrID0gKCkgPT4ge1xuICAgIHRpbWVPZmZzZXQgKz0gMC4wMTtcbiAgICByZXR1cm4gdGltZU9mZnNldDtcbiAgfTtcblxuICBmdW5jdGlvbiBGYWtlRGF0ZSh0aGlzOiB1bmtub3duLCAuLi5hcmdzOiB1bmtub3duW10pOiBEYXRlIHwgc3RyaW5nIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRmFrZURhdGUpKSB7XG4gICAgICByZXR1cm4gbmV3IFJFQUxfREFURShkYXRlT3JpZ2luICsgY3Vyck1zKS50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm4gYXJncy5sZW5ndGhcbiAgICAgID8gbmV3IChGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5hcHBseShSRUFMX0RBVEUsIFtudWxsLCAuLi5hcmdzXSkpKClcbiAgICAgIDogbmV3IFJFQUxfREFURShkYXRlT3JpZ2luICsgY3Vyck1zICsgdGljaygpKTtcbiAgfVxuICBGYWtlRGF0ZS5wcm90b3R5cGUgPSBSRUFMX0RBVEUucHJvdG90eXBlO1xuICBGYWtlRGF0ZS5ub3cgPSAoKSA9PiBkYXRlT3JpZ2luICsgY3Vyck1zICsgdGljaygpO1xuICBGYWtlRGF0ZS5wYXJzZSA9IFJFQUxfREFURS5wYXJzZTtcbiAgRmFrZURhdGUuVVRDID0gUkVBTF9EQVRFLlVUQztcbiAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgRGF0ZTogdW5rbm93biB9KS5EYXRlID0gRmFrZURhdGU7XG4gIHBlcmZvcm1hbmNlLm5vdyA9ICgpID0+IGN1cnJNcyArIHRpY2soKTtcblxuICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gKGNiKSA9PiB7XG4gICAgY29uc3QgaWQgPSBuZXh0SWQrKztcbiAgICByYWZRdWV1ZS5wdXNoKHsgaWQsIGNiIH0pO1xuICAgIHJldHVybiBpZDtcbiAgfTtcbiAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lID0gKGlkKSA9PiB7XG4gICAgcmFmUXVldWUgPSByYWZRdWV1ZS5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgfTtcbiAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgc2V0VGltZW91dDogdW5rbm93biB9KS5zZXRUaW1lb3V0ID0gKGNiOiBUaW1lckhhbmRsZXIsIGRlbGF5PzogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaWQgPSBuZXh0SWQrKztcbiAgICB0aW1lcnNbaWRdID0geyB0eXBlOiBcInRpbWVvdXRcIiwgY2IsIGRlbGF5OiBkZWxheSB8fCAwLCBuZXh0OiBjdXJyTXMgKyAoZGVsYXkgfHwgMCkgfTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG4gIHdpbmRvdy5jbGVhclRpbWVvdXQgPSAoaWQpID0+IHtcbiAgICBpZiAodHlwZW9mIGlkID09PSBcIm51bWJlclwiKSB7XG4gICAgICBkZWxldGUgdGltZXJzW2lkXTtcbiAgICB9XG4gIH07XG4gICh3aW5kb3cgYXMgdW5rbm93biBhcyB7IHNldEludGVydmFsOiB1bmtub3duIH0pLnNldEludGVydmFsID0gKGNiOiBUaW1lckhhbmRsZXIsIGRlbGF5PzogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaWQgPSBuZXh0SWQrKztcbiAgICBjb25zdCBkID0gTWF0aC5tYXgoZGVsYXkgfHwgMCwgMSk7XG4gICAgdGltZXJzW2lkXSA9IHsgdHlwZTogXCJpbnRlcnZhbFwiLCBjYiwgZGVsYXk6IGQsIG5leHQ6IGN1cnJNcyArIGQgfTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG4gIHdpbmRvdy5jbGVhckludGVydmFsID0gKGlkKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgZGVsZXRlIHRpbWVyc1tpZF07XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIHNhZmVJbnZva2VUaW1lcihmbjogVGltZXJIYW5kbGVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlb2YgZm4gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgLy8gU3RyaW5nIHRpbWVyIGhhbmRsZXIgcnVucyBhcyBwYWdlIHNjcmlwdCBpbiBnbG9iYWwgc2NvcGUgKEhUTUwgc3BlYyk7IEZ1bmN0aW9uIGN0b3IgbWF0Y2hlcyB0aGF0LCBhdm9pZHMgZXZhbC5cbiAgICAgICAgbmV3IEZ1bmN0aW9uKGZuKSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiW1RpY2tdIGVycm9yOlwiLCAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHx8IGUpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBzYWZlSW52b2tlUmFmKGNiOiBGcmFtZVJlcXVlc3RDYWxsYmFjaywgdHM6IG51bWJlcikge1xuICAgIHRyeSB7XG4gICAgICBjYih0cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIltUaWNrXSBlcnJvcjpcIiwgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLnN0YWNrKSB8fCBlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhbmltU3RhdGUgPSBuZXcgV2Vha01hcDxBbmltYXRpb24sIEFuaW1FbnRyeT4oKTtcbiAgZnVuY3Rpb24gZW5kQm91bmRhcnkoYTogQW5pbWF0aW9uKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdCA9IGEuZWZmZWN0Py5nZXRDb21wdXRlZFRpbWluZygpLmVuZFRpbWU7XG4gICAgICByZXR1cm4gdHlwZW9mIHQgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKHQpID8gdCA6IHVuZGVmaW5lZDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIERldGFjaGVkL2ZvcmVpZ24gZWZmZWN0cyBoYXZlIG5vIHRpbWluZzsgdHJlYXQgYXMgdW5ib3VuZGVkLlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgLy8gQWRvcHQgcnVubmluZyBhbmltYXRpb25zIChwYXVzZSArIGRyaXZlIGN1cnJlbnRUaW1lIG9mZiB0aGUgdmlydHVhbCBjbG9jayk6IGFuIGluZmluaXRlIGNvbXBvc2l0b3IgYW5pbWF0aW9uIG90aGVyd2lzZSBrZWVwcyB2aXogZnJlZS1ydW5uaW5nIGF0IFJFTkRFUl9GUFMsIHN0YXJ2aW5nIENEUCBldmFscy5cbiAgZnVuY3Rpb24gc3luY0FuaW1hdGlvbnMobXM6IG51bWJlcikge1xuICAgIGxldCBhbmltczogQW5pbWF0aW9uW107XG4gICAgdHJ5IHtcbiAgICAgIGFuaW1zID0gZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGEgb2YgYW5pbXMpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gYS5wbGF5U3RhdGU7XG4gICAgICBpZiAoc3RhdGUgPT09IFwiaWRsZVwiIHx8IHN0YXRlID09PSBcImZpbmlzaGVkXCIpIHtcbiAgICAgICAgYW5pbVN0YXRlLmRlbGV0ZShhKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCByYXRlID0gdHlwZW9mIGEucGxheWJhY2tSYXRlID09PSBcIm51bWJlclwiID8gYS5wbGF5YmFja1JhdGUgOiAxO1xuICAgICAgaWYgKHJhdGUgPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBsZXQgcyA9IGFuaW1TdGF0ZS5nZXQoYSk7XG4gICAgICBpZiAoIXMpIHtcbiAgICAgICAgY29uc3QgY3QwID0gdHlwZW9mIGEuY3VycmVudFRpbWUgPT09IFwibnVtYmVyXCIgPyBhLmN1cnJlbnRUaW1lIDogMDtcbiAgICAgICAgcyA9IHsgc3RhcnRNczogbXMgLSBjdDAgLyByYXRlLCBhZG9wdGVkOiBzdGF0ZSAhPT0gXCJwYXVzZWRcIiB9O1xuICAgICAgICBhbmltU3RhdGUuc2V0KGEsIHMpO1xuICAgICAgICBpZiAocy5hZG9wdGVkKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGEucGF1c2UoKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIFBhdXNlLXJlamVjdGluZyBzdGF0ZXMgKGUuZy4gbWlkLWNhbmNlbCkgc3RpbGwgYWNjZXB0IGN1cnJlbnRUaW1lIHdyaXRlcyBiZWxvdy5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXMuYWRvcHRlZCAmJiBzdGF0ZSAhPT0gXCJwYXVzZWRcIikge1xuICAgICAgICBjb25zdCBjdCA9IHR5cGVvZiBhLmN1cnJlbnRUaW1lID09PSBcIm51bWJlclwiID8gYS5jdXJyZW50VGltZSA6IDA7XG4gICAgICAgIHMuc3RhcnRNcyA9IG1zIC0gY3QgLyByYXRlO1xuICAgICAgICBzLmFkb3B0ZWQgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGEucGF1c2UoKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gU2FtZSBhcyBhZG9wdGlvbiBhYm92ZTogZHJpdmUgYnkgY3VycmVudFRpbWUgcmVnYXJkbGVzcy5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFzLmFkb3B0ZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXQgPSAobXMgLSBzLnN0YXJ0TXMpICogcmF0ZTtcbiAgICAgIGNvbnN0IGVuZCA9IGVuZEJvdW5kYXJ5KGEpO1xuICAgICAgLy8gZmluaXNoKCkgc2Vla3MgdG8gdGhlIHJhdGUtYXBwcm9wcmlhdGUgYm91bmRhcnkgYW5kIGFwcGxpZXMgZmlsbCBtb2RlOyBwYXVzZWQgaG9sZHMgd291bGQgbWlzcmVuZGVyIGZpbGw6bm9uZS5cbiAgICAgIGlmIChyYXRlID4gMCA/IGVuZCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldCA+PSBlbmQgOiB0YXJnZXQgPD0gMCkge1xuICAgICAgICBhbmltU3RhdGUuZGVsZXRlKGEpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGEuZmluaXNoKCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIEluZmluaXRlLWR1cmF0aW9uIHJldmVyc2Ugb3IgZGV0YWNoZWQgZWZmZWN0OiBsZWF2ZSBhcy1pcy5cbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGEuY3VycmVudFRpbWUgPSB0YXJnZXQ7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcHJvY2Vzcyh0aW1lc3RhbXBNczogbnVtYmVyKSB7XG4gICAgY3Vyck1zID0gdGltZXN0YW1wTXM7XG4gICAgdGltZU9mZnNldCA9IDA7XG4gICAgZm9yIChjb25zdCBpZCBvZiBPYmplY3Qua2V5cyh0aW1lcnMpKSB7XG4gICAgICBjb25zdCB0ID0gdGltZXJzW051bWJlcihpZCldO1xuICAgICAgaWYgKCF0KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHQubmV4dCA8PSBjdXJyTXMpIHtcbiAgICAgICAgc2FmZUludm9rZVRpbWVyKHQuY2IpO1xuICAgICAgICBpZiAodC50eXBlID09PSBcInRpbWVvdXRcIikge1xuICAgICAgICAgIGRlbGV0ZSB0aW1lcnNbTnVtYmVyKGlkKV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdC5uZXh0ICs9IHQuZGVsYXk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJhZnMgPSByYWZRdWV1ZS5zcGxpY2UoMCk7XG4gICAgZm9yIChjb25zdCByIG9mIHJhZnMpIHtcbiAgICAgIHNhZmVJbnZva2VSYWYoci5jYiwgY3Vyck1zKTtcbiAgICB9XG4gICAgc3luY0FuaW1hdGlvbnMoY3Vyck1zKTtcbiAgfVxuXG4gIHdpbmRvdy5fX3B1cF90aWNrX18gPSB7IHByb2Nlc3MgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDYvMDIuXG5cbnR5cGUgVmVjNCA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG5jb25zdCBNSVJST1JfUFJPUFMgPSBbXG4gIFwiYm9yZGVyUmFkaXVzXCIsXG4gIFwiYm9yZGVyVG9wTGVmdFJhZGl1c1wiLFxuICBcImJvcmRlclRvcFJpZ2h0UmFkaXVzXCIsXG4gIFwiYm9yZGVyQm90dG9tTGVmdFJhZGl1c1wiLFxuICBcImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzXCIsXG4gIFwidHJhbnNmb3JtXCIsXG4gIFwidHJhbnNmb3JtT3JpZ2luXCIsXG4gIFwiZmlsdGVyXCIsXG4gIFwiY2xpcFBhdGhcIixcbiAgXCJib3hTaGFkb3dcIixcbiAgXCJvcGFjaXR5XCIsXG4gIFwibWl4QmxlbmRNb2RlXCIsXG4gIFwibWFza1wiLFxuICBcInpJbmRleFwiLFxuICBcInBvc2l0aW9uXCIsXG4gIFwibGVmdFwiLFxuICBcInRvcFwiLFxuICBcInJpZ2h0XCIsXG4gIFwiYm90dG9tXCIsXG5dIGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBjc3NDYXNlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzLnJlcGxhY2UoL1tBLVpdL2csIChjKSA9PiBgLSR7Yy50b0xvd2VyQ2FzZSgpfWApO1xufVxuXG4vLyBUcmFjayB0aGUgb3ZlcmxheSBjYW52YXMgdG8gdGhlIHZpZGVvIGVsZW1lbnQncyBsaXZlIGJveDsgdHJ1ZSA9IGJhY2tpbmcgc3RvcmUgcmVzaXplZCAod2hpY2ggd2lwZXMgdGhlIGNhbnZhcykuXG5leHBvcnQgZnVuY3Rpb24gc3luY092ZXJsYXkodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIGN2OiBIVE1MQ2FudmFzRWxlbWVudCk6IGJvb2xlYW4ge1xuICBjb25zdCBjcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHZpZGVvKTtcbiAgY3Yuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gIC8vIG9mZnNldCogYXJlIHByZS10cmFuc2Zvcm0gY29vcmRzIGZyb20gb2Zmc2V0UGFyZW50J3MgcGFkZGluZyBlZGdlID0gdGhlIGFicyBjb250YWluaW5nLWJsb2NrIG9yaWdpbjsgbWFwIGRpcmVjdC5cbiAgY3Yuc3R5bGUubGVmdCA9IGAke3ZpZGVvLm9mZnNldExlZnR9cHhgO1xuICBjdi5zdHlsZS50b3AgPSBgJHt2aWRlby5vZmZzZXRUb3B9cHhgO1xuICBjdi5zdHlsZS53aWR0aCA9IGAke3ZpZGVvLm9mZnNldFdpZHRofXB4YDtcbiAgY3Yuc3R5bGUuaGVpZ2h0ID0gYCR7dmlkZW8ub2Zmc2V0SGVpZ2h0fXB4YDtcbiAgZm9yIChjb25zdCBwIG9mIE1JUlJPUl9QUk9QUykge1xuICAgIGlmIChwID09PSBcInBvc2l0aW9uXCIgfHwgcCA9PT0gXCJsZWZ0XCIgfHwgcCA9PT0gXCJ0b3BcIiB8fCBwID09PSBcInJpZ2h0XCIgfHwgcCA9PT0gXCJib3R0b21cIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHYgPSBjcy5nZXRQcm9wZXJ0eVZhbHVlKGNzc0Nhc2UocCkpO1xuICAgIGlmICh2KSB7XG4gICAgICBjdi5zdHlsZS5zZXRQcm9wZXJ0eShjc3NDYXNlKHApLCB2KTtcbiAgICB9XG4gIH1cbiAgLy8gQmFja2luZyBzdG9yZSBhdCBvbi1zY3JlZW4gcGl4ZWwgc2l6ZSAocG9zdC10cmFuc2Zvcm0pIHNvIGRlY29kZSByZXNvbHV0aW9uIG1hdGNoZXMgZGlzcGxheWVkIHBpeGVscy5cbiAgY29uc3QgdnIgPSB2aWRlby5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZHByID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgY29uc3QgdyA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQodnIud2lkdGggKiBkcHIpKTtcbiAgY29uc3QgaCA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQodnIuaGVpZ2h0ICogZHByKSk7XG4gIGxldCByZXNpemVkID0gZmFsc2U7XG4gIGlmIChjdi53aWR0aCAhPT0gdykge1xuICAgIGN2LndpZHRoID0gdztcbiAgICByZXNpemVkID0gdHJ1ZTtcbiAgfVxuICBpZiAoY3YuaGVpZ2h0ICE9PSBoKSB7XG4gICAgY3YuaGVpZ2h0ID0gaDtcbiAgICByZXNpemVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVzaXplZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwQ2FudmFzKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBzbmFwOiBPZmZzY3JlZW5DYW52YXMgfCB1bmRlZmluZWQpOiBIVE1MQ2FudmFzRWxlbWVudCB7XG4gIGNvbnN0IGN2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY3YuZGF0YXNldFtcInB1cFZpZGVvT3ZlcmxheVwiXSA9IFwiMVwiO1xuICBjdi5zdHlsZS5wb2ludGVyRXZlbnRzID0gXCJub25lXCI7XG4gIHZpZGVvLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICB2aWRlby5tdXRlZCA9IHRydWU7XG4gIGNvbnN0IHBhcmVudCA9IHZpZGVvLnBhcmVudE5vZGUgfHwgZG9jdW1lbnQuYm9keTtcbiAgcGFyZW50Lmluc2VydEJlZm9yZShjdiwgdmlkZW8ubmV4dFNpYmxpbmcpO1xuICBzeW5jT3ZlcmxheSh2aWRlbywgY3YpO1xuICBpZiAoc25hcCkge1xuICAgIHRyeSB7XG4gICAgICBjdi5nZXRDb250ZXh0KFwiMmRcIikhLmRyYXdJbWFnZShzbmFwLCAwLCAwLCBjdi53aWR0aCwgY3YuaGVpZ2h0KTtcbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgcmV0dXJuIGN2O1xufVxuXG4vLyBEcmF3IHJlY3QgZm9yIHRoZSBiaXRtYXAgd2l0aGluIHRoZSBjYW52YXMgcGVyIG9iamVjdEZpdC5cbmV4cG9ydCBmdW5jdGlvbiBmaXRSZWN0KHNyY1c6IG51bWJlciwgc3JjSDogbnVtYmVyLCBkc3RXOiBudW1iZXIsIGRzdEg6IG51bWJlciwgZml0OiBzdHJpbmcpOiBWZWM0IHtcbiAgaWYgKGZpdCA9PT0gXCJub25lXCIpIHtcbiAgICByZXR1cm4gWyhkc3RXIC0gc3JjVykgLyAyLCAoZHN0SCAtIHNyY0gpIC8gMiwgc3JjVywgc3JjSF07XG4gIH1cbiAgaWYgKGZpdCA9PT0gXCJjb250YWluXCIgfHwgZml0ID09PSBcInNjYWxlLWRvd25cIikge1xuICAgIGNvbnN0IHNjID0gTWF0aC5taW4oZHN0VyAvIHNyY1csIGRzdEggLyBzcmNIKTtcbiAgICBjb25zdCBrID0gZml0ID09PSBcInNjYWxlLWRvd25cIiA/IE1hdGgubWluKDEsIHNjKSA6IHNjO1xuICAgIGNvbnN0IHdzID0gayAqIHNyY1c7XG4gICAgY29uc3QgaHMgPSBrICogc3JjSDtcbiAgICByZXR1cm4gWyhkc3RXIC0gd3MpIC8gMiwgKGRzdEggLSBocykgLyAyLCB3cywgaHNdO1xuICB9XG4gIGlmIChmaXQgPT09IFwiY292ZXJcIikge1xuICAgIGNvbnN0IHNjMiA9IE1hdGgubWF4KGRzdFcgLyBzcmNXLCBkc3RIIC8gc3JjSCk7XG4gICAgY29uc3Qgd3MyID0gc2MyICogc3JjVztcbiAgICBjb25zdCBoczIgPSBzYzIgKiBzcmNIO1xuICAgIHJldHVybiBbKGRzdFcgLSB3czIpIC8gMiwgKGRzdEggLSBoczIpIC8gMiwgd3MyLCBoczJdO1xuICB9XG4gIHJldHVybiBbMCwgMCwgZHN0VywgZHN0SF07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5leHBvcnQgY29uc3QgU0NIRU1FID0gXCJwdXAtZnJhbWU6Ly9cIjtcbmV4cG9ydCBjb25zdCBBSEVBRCA9IDEwO1xuZXhwb3J0IGNvbnN0IFRBRyA9IFwiW1ZpZGVvSG9va11cIjtcblxuZXhwb3J0IGNvbnN0IE1FRElBX0VSUl9ORVRXT1JLID0gMjtcbmV4cG9ydCBjb25zdCBNRURJQV9FUlJfREVDT0RFID0gMztcbmV4cG9ydCBjb25zdCBIQVZFX05PVEhJTkcgPSAwO1xuZXhwb3J0IGNvbnN0IEhBVkVfTUVUQURBVEEgPSAxO1xuZXhwb3J0IGNvbnN0IEhBVkVfRU5PVUdIX0RBVEEgPSA0O1xuZXhwb3J0IGNvbnN0IE5FVFdPUktfRU1QVFkgPSAwO1xuZXhwb3J0IGNvbnN0IE5FVFdPUktfSURMRSA9IDE7XG5leHBvcnQgY29uc3QgTkVUV09SS19MT0FESU5HID0gMjtcbmV4cG9ydCBjb25zdCBORVRXT1JLX05PX1NPVVJDRSA9IDM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9NZXRhIHtcbiAgaWQ6IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGZyYW1lV2lkdGg6IG51bWJlcjtcbiAgZnJhbWVIZWlnaHQ6IG51bWJlcjtcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgZnBzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9GcmFtZU1ldGEge1xuICBwcmVzZW50YXRpb25UaW1lOiBudW1iZXI7XG4gIGV4cGVjdGVkRGlzcGxheVRpbWU6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIG1lZGlhVGltZTogbnVtYmVyO1xuICBwcmVzZW50ZWRGcmFtZXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRnJhbWVDYiA9IChub3c6IG51bWJlciwgbWV0YTogVmlkZW9GcmFtZU1ldGEpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFFcnJvckxpa2Uge1xuICBjb2RlOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWRlb0NhY2hlIHtcbiAgYml0bWFwczogTWFwPG51bWJlciwgSW1hZ2VCaXRtYXA+O1xuICBpbkZsaWdodDogTWFwPG51bWJlciwgUHJvbWlzZTxJbWFnZUJpdG1hcCB8IHVuZGVmaW5lZD4+O1xuICByZWFkZXJzOiBNYXA8VmlkZW9TdGF0ZSwgbnVtYmVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWRlb1N0YXRlIHtcbiAgbWV0YT86IFZpZGVvTWV0YTtcbiAgY3Y6IEhUTUxDYW52YXNFbGVtZW50O1xuICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgcGF1c2VkOiBib29sZWFuO1xuICBjdXJyZW50VGltZTogbnVtYmVyO1xuICBlbmRlZDogYm9vbGVhbjtcbiAgbGFzdERyYXduSWR4OiBudW1iZXI7XG4gIGRlYWQ6IGJvb2xlYW47XG4gIG9iamVjdEZpdDogc3RyaW5nO1xuICByZWFkeVN0YXRlOiBudW1iZXI7XG4gIG5ldHdvcmtTdGF0ZTogbnVtYmVyO1xuICBzZWVraW5nOiBib29sZWFuO1xuICB3YWl0aW5nOiBib29sZWFuO1xuICBlcnJvcjogTWVkaWFFcnJvckxpa2UgfCB1bmRlZmluZWQ7XG4gIHByZXNlbnRlZEZyYW1lczogbnVtYmVyO1xuICBtYXhSZWFjaGVkOiBudW1iZXI7XG4gIHJ2ZmM6IE1hcDxudW1iZXIsIEZyYW1lQ2I+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVSYW5nZXNMaWtlIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIHN0YXJ0KGk6IG51bWJlcik6IG51bWJlcjtcbiAgZW5kKGk6IG51bWJlcik6IG51bWJlcjtcbn1cblxuLy8gV2hvbGUgY2xpcCBpcyBkZWNvZGUtb24tZGVtYW5kLCBzbyB0aGUgYXZhaWxhYmxlIHJhbmdlIGlzIGFsd2F5cyBbMCwgZW5kXSAob25lIFRpbWVSYW5nZXMgZW50cnkpLlxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVSYW5nZXMoZW5kOiBudW1iZXIpOiBUaW1lUmFuZ2VzTGlrZSB7XG4gIHJldHVybiB7IGxlbmd0aDogZW5kID4gMCA/IDEgOiAwLCBzdGFydDogKCkgPT4gMCwgZW5kOiAoKSA9PiBlbmQgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpcmUoZWw6IEV2ZW50VGFyZ2V0LCB0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgZWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQodHlwZSkpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuaW1wb3J0IHR5cGUgeyBWaWRlb0hvb2sgfSBmcm9tIFwiLi9ob29rXCI7XG5pbXBvcnQgeyBmaXRSZWN0LCBzeW5jT3ZlcmxheSB9IGZyb20gXCIuL292ZXJsYXlcIjtcbmltcG9ydCB7IEFIRUFELCBmaXJlLCB0eXBlIFZpZGVvRnJhbWVNZXRhLCB0eXBlIFZpZGVvU3RhdGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5mdW5jdGlvbiBmaXJlRnJhbWVDYWxsYmFja3Moc3RhdGU6IFZpZGVvU3RhdGUpOiB2b2lkIHtcbiAgaWYgKHN0YXRlLnJ2ZmMuc2l6ZSA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBjYnMgPSBbLi4uc3RhdGUucnZmYy52YWx1ZXMoKV07XG4gIHN0YXRlLnJ2ZmMuY2xlYXIoKTtcbiAgY29uc3Qgbm93ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gIGNvbnN0IG1ldGE6IFZpZGVvRnJhbWVNZXRhID0ge1xuICAgIHByZXNlbnRhdGlvblRpbWU6IG5vdyxcbiAgICBleHBlY3RlZERpc3BsYXlUaW1lOiBub3csXG4gICAgd2lkdGg6IHN0YXRlLm1ldGEhLmZyYW1lV2lkdGgsXG4gICAgaGVpZ2h0OiBzdGF0ZS5tZXRhIS5mcmFtZUhlaWdodCxcbiAgICBtZWRpYVRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgIHByZXNlbnRlZEZyYW1lczogc3RhdGUucHJlc2VudGVkRnJhbWVzLFxuICB9O1xuICBmb3IgKGNvbnN0IGNiIG9mIGNicykge1xuICAgIGNiKG5vdywgbWV0YSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcGFpbnQoaG9vazogVmlkZW9Ib29rLCB2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc3RhdGU6IFZpZGVvU3RhdGUsIGlkeDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGMgPSBob29rLmNhY2hlLmNhY2hlT2Yoc3RhdGUubWV0YSEuaWQpO1xuICBjLnJlYWRlcnMuc2V0KHN0YXRlLCBpZHgpO1xuICBsZXQgYm0gPSBjLmJpdG1hcHMuZ2V0KGlkeCk7XG4gIGlmICghYm0pIHtcbiAgICBob29rLmNhY2hlLnByZWZldGNoKHN0YXRlLCBpZHggKyAxLCBBSEVBRCAtIDEpO1xuICAgIGNvbnN0IGZldGNoZWQgPSBhd2FpdCBob29rLmNhY2hlLmZldGNoKHN0YXRlLCBpZHgpO1xuICAgIGlmIChob29rLnNlc3Npb25zLmdldCh2aWRlbykgIT09IHN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghZmV0Y2hlZCkge1xuICAgICAgaWYgKCFzdGF0ZS5wYXVzZWQgJiYgIXN0YXRlLndhaXRpbmcpIHtcbiAgICAgICAgc3RhdGUud2FpdGluZyA9IHRydWU7XG4gICAgICAgIGZpcmUodmlkZW8sIFwid2FpdGluZ1wiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYm0gPSBmZXRjaGVkO1xuICB9XG4gIGlmIChzdGF0ZS53YWl0aW5nKSB7XG4gICAgc3RhdGUud2FpdGluZyA9IGZhbHNlO1xuICAgIGlmICghc3RhdGUucGF1c2VkKSB7XG4gICAgICBmaXJlKHZpZGVvLCBcInBsYXlpbmdcIik7XG4gICAgfVxuICB9XG4gIGNvbnN0IGN2ID0gc3RhdGUuY3Y7XG4gIGNvbnN0IHIgPSBmaXRSZWN0KGJtLndpZHRoLCBibS5oZWlnaHQsIGN2LndpZHRoLCBjdi5oZWlnaHQsIHN0YXRlLm9iamVjdEZpdCk7XG4gIHN0YXRlLmN0eC5jbGVhclJlY3QoMCwgMCwgY3Yud2lkdGgsIGN2LmhlaWdodCk7XG4gIHN0YXRlLmN0eC5kcmF3SW1hZ2UoYm0sIHJbMF0sIHJbMV0sIHJbMl0sIHJbM10pO1xuICBzdGF0ZS5sYXN0RHJhd25JZHggPSBpZHg7XG4gIHN0YXRlLnByZXNlbnRlZEZyYW1lcysrO1xuICBmaXJlRnJhbWVDYWxsYmFja3Moc3RhdGUpO1xuICBob29rLmNhY2hlLnByZWZldGNoKHN0YXRlLCBpZHggKyAxLCBBSEVBRCk7XG4gIGhvb2suY2FjaGUuZXZpY3QoYyk7XG59XG5cbi8vIFZpcnR1YWwtdGltZSB0aWNrOiBzeW5jIG92ZXJsYXlzLCBhZHZhbmNlIGVhY2ggaG9va2VkIHZpZGVvJ3MgY2xvY2sgKGxvb3AvZW5kKSwgcGFpbnQgdGhlIGR1ZSBmcmFtZS5cbmV4cG9ydCBmdW5jdGlvbiBhZHZhbmNlKGhvb2s6IFZpZGVvSG9vaywgdGltZXN0YW1wTXM6IG51bWJlcik6IFByb21pc2U8dW5rbm93bj4ge1xuICBjb25zdCBkdCA9IE1hdGgubWF4KDAsIHRpbWVzdGFtcE1zIC0gaG9vay5jdXJyTXMpIC8gMTAwMDtcbiAgaG9vay5jdXJyTXMgPSB0aW1lc3RhbXBNcztcbiAgY29uc3QgcHM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdO1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwidmlkZW9cIikuZm9yRWFjaCgoZWwpID0+IHtcbiAgICBjb25zdCB2aWRlbyA9IGVsIGFzIEhUTUxWaWRlb0VsZW1lbnQ7XG4gICAgY29uc3Qgc3RhdGUgPSBob29rLnNlc3Npb25zLmdldCh2aWRlbyk7XG4gICAgaWYgKCFzdGF0ZSB8fCBzdGF0ZS5kZWFkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIEEgYmFja2luZy1zdG9yZSByZXNpemUgKGFuaW1hdGVkIGNvbnRhaW5lcikgd2lwZXMgdGhlIGNhbnZhczsgZm9yY2UgYSByZWRyYXcgZXZlbiBvbiBhbiB1bmNoYW5nZWQgZnJhbWUgaWR4LlxuICAgIGlmIChzeW5jT3ZlcmxheSh2aWRlbywgc3RhdGUuY3YpKSB7XG4gICAgICBzdGF0ZS5sYXN0RHJhd25JZHggPSAtMTtcbiAgICB9XG4gICAgaWYgKCFzdGF0ZS5tZXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIEVsZW1lbnQgZ3JldyBwYXN0IHRoZSBkZWNvZGVkIChkb3duc2NhbGVkKSByZXMg4oaSIHJlLWRlY29kZSBhdCBuYXRpdmUsIG9uZS1zaG90IChjb3ZlcnMgem9vbSkuXG4gICAgaWYgKFxuICAgICAgc3RhdGUubWV0YS5mcmFtZVdpZHRoIDwgc3RhdGUubWV0YS53aWR0aCAmJlxuICAgICAgc3RhdGUuY3Yud2lkdGggPiBzdGF0ZS5tZXRhLmZyYW1lV2lkdGggKiAxLjA1ICYmXG4gICAgICAhaG9vay5hdHRhY2hpbmcuaGFzKHZpZGVvKVxuICAgICkge1xuICAgICAgaG9vay5yZWF0dGFjaCh2aWRlbywgc3RhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXN0YXRlLnBhdXNlZCAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHN0YXRlLmN1cnJlbnRUaW1lICs9IGR0ICogKHZpZGVvLnBsYXliYWNrUmF0ZSB8fCAxKTtcbiAgICAgIHN0YXRlLm1heFJlYWNoZWQgPSBNYXRoLm1heChzdGF0ZS5tYXhSZWFjaGVkLCBzdGF0ZS5jdXJyZW50VGltZSk7XG4gICAgICBpZiAoc3RhdGUuY3VycmVudFRpbWUgPj0gc3RhdGUubWV0YS5kdXJhdGlvbikge1xuICAgICAgICBpZiAodmlkZW8ubG9vcCkge1xuICAgICAgICAgIHN0YXRlLmN1cnJlbnRUaW1lID0gc3RhdGUuY3VycmVudFRpbWUgJSBzdGF0ZS5tZXRhLmR1cmF0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLmN1cnJlbnRUaW1lID0gc3RhdGUubWV0YS5kdXJhdGlvbjtcbiAgICAgICAgICBzdGF0ZS5wYXVzZWQgPSB0cnVlO1xuICAgICAgICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgICAgICAgICBmaXJlKHZpZGVvLCBcImVuZGVkXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXJlKHZpZGVvLCBcInRpbWV1cGRhdGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGlkeCA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQoc3RhdGUuY3VycmVudFRpbWUgKiBzdGF0ZS5tZXRhLmZwcykpO1xuICAgIGlmIChpZHggPT09IHN0YXRlLmxhc3REcmF3bklkeCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwcy5wdXNoKHBhaW50KGhvb2ssIHZpZGVvLCBzdGF0ZSwgaWR4KSk7XG4gIH0pO1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHMpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuaW1wb3J0IHsgU0NIRU1FLCB0eXBlIFZpZGVvQ2FjaGUsIHR5cGUgVmlkZW9TdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8vIFBlci1zZXNzaW9uIGJpdG1hcCBjYWNoZTogZmV0Y2hlcyBSR0JBIGZyYW1lcyBmcm9tIHRoZSBmcmFtZSBwcm90b2NvbCwgZGVkdXBlcyBpbi1mbGlnaHQsIGV2aWN0cyBiZWhpbmQgcmVhZGVycy5cbmV4cG9ydCBjbGFzcyBGcmFtZUNhY2hlIHtcbiAgcHJpdmF0ZSBfY2FjaGVzID0gbmV3IE1hcDxzdHJpbmcsIFZpZGVvQ2FjaGU+KCk7XG5cbiAgY2FjaGVPZihpZDogc3RyaW5nKTogVmlkZW9DYWNoZSB7XG4gICAgbGV0IGMgPSB0aGlzLl9jYWNoZXMuZ2V0KGlkKTtcbiAgICBpZiAoIWMpIHtcbiAgICAgIGMgPSB7IGJpdG1hcHM6IG5ldyBNYXAoKSwgaW5GbGlnaHQ6IG5ldyBNYXAoKSwgcmVhZGVyczogbmV3IE1hcCgpIH07XG4gICAgICB0aGlzLl9jYWNoZXMuc2V0KGlkLCBjKTtcbiAgICB9XG4gICAgcmV0dXJuIGM7XG4gIH1cblxuICBmZXRjaChzdGF0ZTogVmlkZW9TdGF0ZSwgaWR4OiBudW1iZXIpOiBQcm9taXNlPEltYWdlQml0bWFwIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgbWV0YSA9IHN0YXRlLm1ldGE7XG4gICAgaWYgKCFtZXRhKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIGNvbnN0IGMgPSB0aGlzLmNhY2hlT2YobWV0YS5pZCk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBjLmluRmxpZ2h0LmdldChpZHgpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgIH1cbiAgICBjb25zdCBjYWNoZWQgPSBjLmJpdG1hcHMuZ2V0KGlkeCk7XG4gICAgaWYgKGNhY2hlZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjYWNoZWQpO1xuICAgIH1cbiAgICBjb25zdCB3ID0gbWV0YS5mcmFtZVdpZHRoO1xuICAgIGNvbnN0IGggPSBtZXRhLmZyYW1lSGVpZ2h0O1xuICAgIGNvbnN0IHAgPSBmZXRjaChgJHtTQ0hFTUV9ZnJhbWU/aWQ9JHttZXRhLmlkfSZpZHg9JHtpZHh9YClcbiAgICAgIC50aGVuKChyKSA9PiAoci5vayA/IHIuYXJyYXlCdWZmZXIoKSA6IHVuZGVmaW5lZCkpXG4gICAgICAudGhlbigoYnVmKSA9PlxuICAgICAgICBidWYgJiYgYnVmLmJ5dGVMZW5ndGggPT09IHcgKiBoICogNFxuICAgICAgICAgID8gY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoYnVmKSwgdywgaCkpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICApXG4gICAgICAudGhlbigoYm0pID0+IHtcbiAgICAgICAgYy5pbkZsaWdodC5kZWxldGUoaWR4KTtcbiAgICAgICAgaWYgKGJtKSB7XG4gICAgICAgICAgYy5iaXRtYXBzLnNldChpZHgsIGJtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYm07XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgYy5pbkZsaWdodC5kZWxldGUoaWR4KTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0pO1xuICAgIGMuaW5GbGlnaHQuc2V0KGlkeCwgcCk7XG4gICAgcmV0dXJuIHA7XG4gIH1cblxuICBwcmVmZXRjaChzdGF0ZTogVmlkZW9TdGF0ZSwgZnJvbUlkeDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbWV0YSA9IHN0YXRlLm1ldGE7XG4gICAgaWYgKCFtZXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1heElkeCA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQobWV0YS5kdXJhdGlvbiAqIG1ldGEuZnBzKSk7XG4gICAgZm9yIChsZXQgaSA9IGZyb21JZHg7IGkgPCBmcm9tSWR4ICsgY291bnQ7IGkrKykge1xuICAgICAgaWYgKGkgPCAxIHx8IGkgPiBtYXhJZHgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2b2lkIHRoaXMuZmV0Y2goc3RhdGUsIGkpO1xuICAgIH1cbiAgfVxuXG4gIGV2aWN0KGM6IFZpZGVvQ2FjaGUpOiB2b2lkIHtcbiAgICBsZXQgbWluSWR4ID0gSW5maW5pdHk7XG4gICAgYy5yZWFkZXJzLmZvckVhY2goKGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA8IG1pbklkeCkge1xuICAgICAgICBtaW5JZHggPSBpZHg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWluSWR4KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmbG9vciA9IG1pbklkeCAtIDI7XG4gICAgYy5iaXRtYXBzLmZvckVhY2goKGJtLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPCBmbG9vcikge1xuICAgICAgICBibS5jbG9zZSgpO1xuICAgICAgICBjLmJpdG1hcHMuZGVsZXRlKGlkeCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBEcm9wIGEgcmVhZGVyOyB3aGVuIHRoZSBsYXN0IGxlYXZlcywgY2xvc2UgYml0bWFwcyBhbmQgdGVsbCB0aGUgc2VydmVyIHRvIHJlbGVhc2UgdGhlIGRlY29kZSBzZXNzaW9uLlxuICByZWxlYXNlKGlkOiBzdHJpbmcsIHN0YXRlOiBWaWRlb1N0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgYyA9IHRoaXMuX2NhY2hlcy5nZXQoaWQpO1xuICAgIGlmICghYykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjLnJlYWRlcnMuZGVsZXRlKHN0YXRlKTtcbiAgICBpZiAoYy5yZWFkZXJzLnNpemUgPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGMuYml0bWFwcy5mb3JFYWNoKChibSkgPT4ge1xuICAgICAgYm0uY2xvc2UoKTtcbiAgICB9KTtcbiAgICB0aGlzLl9jYWNoZXMuZGVsZXRlKGlkKTtcbiAgICBmZXRjaChgJHtTQ0hFTUV9Y2xvc2U/aWQ9JHtpZH1gLCB7IGtlZXBhbGl2ZTogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxuaW1wb3J0IHR5cGUgeyBWaWRlb0hvb2sgfSBmcm9tIFwiLi9ob29rXCI7XG5pbXBvcnQgeyB0eXBlIEZyYW1lQ2IsIGZpcmUsIHRpbWVSYW5nZXMsIHR5cGUgVmlkZW9TdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8vIE92ZXJyaWRlIHRoZSBIVE1MTWVkaWFFbGVtZW50IHN1cmZhY2UgZm9yIGhvb2tlZCA8dmlkZW8+OyB1bmhvb2tlZCBlbGVtZW50cyBmYWxsIHRocm91Z2ggdG8gbmF0aXZlLlxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxNZWRpYVNoaW0oaG9vazogVmlkZW9Ib29rKTogdm9pZCB7XG4gIGNvbnN0IEhWRSA9IEhUTUxWaWRlb0VsZW1lbnQucHJvdG90eXBlO1xuICBjb25zdCBNRURJQSA9IEhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlO1xuICBjb25zdCBtZGVzYyA9IChwOiBzdHJpbmcpID0+IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFZFLCBwKSB8fCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE1FRElBLCBwKTtcbiAgY29uc3QgY3REZXNjID0gbWRlc2MoXCJjdXJyZW50VGltZVwiKTtcbiAgY29uc3Qgc3JjRGVzYyA9IG1kZXNjKFwic3JjXCIpO1xuICBjb25zdCByYXRlRGVzYyA9IG1kZXNjKFwicGxheWJhY2tSYXRlXCIpO1xuICBjb25zdCBvcmlnUGF1c2UgPSBIVkUucGF1c2U7XG4gIGNvbnN0IG9yaWdSVkZDID0gSFZFLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2s7XG4gIGNvbnN0IG9yaWdDYW5jZWxSVkZDID0gSFZFLmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjaztcbiAgY29uc3Qgb3JpZ1F1YWxpdHkgPSBIVkUuZ2V0VmlkZW9QbGF5YmFja1F1YWxpdHk7XG4gIGNvbnN0IG9yaWdMb2FkID0gSFZFLmxvYWQ7XG4gIGNvbnN0IHNlc3Npb25zID0gaG9vay5zZXNzaW9ucztcblxuICAvLyBTZXNzaW9uLWJhY2tlZCByZWFkLW9ubHkgcHJvcGVydHkgd2l0aCBuYXRpdmUgZmFsbGJhY2sgd2hlbiB0aGUgZWxlbWVudCBpc24ndCBob29rZWQuXG4gIGNvbnN0IGRlZiA9IChwcm9wOiBzdHJpbmcsIHBpY2s6IChzOiBWaWRlb1N0YXRlKSA9PiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgbmF0aXZlR2V0ID0gbWRlc2MocHJvcCk/LmdldDtcbiAgICBpZiAoIW5hdGl2ZUdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtZWRpYV9zaGltOiBubyBuYXRpdmUgZ2V0dGVyIGZvciAke3Byb3B9YCk7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVkUsIHByb3AsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgICAgIHJldHVybiBzID8gcGljayhzKSA6IG5hdGl2ZUdldC5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcbiAgZGVmKFwicGF1c2VkXCIsIChzKSA9PiBzLnBhdXNlZCk7XG4gIGRlZihcImVuZGVkXCIsIChzKSA9PiBzLmVuZGVkKTtcbiAgZGVmKFwicmVhZHlTdGF0ZVwiLCAocykgPT4gcy5yZWFkeVN0YXRlKTtcbiAgZGVmKFwibmV0d29ya1N0YXRlXCIsIChzKSA9PiBzLm5ldHdvcmtTdGF0ZSk7XG4gIGRlZihcImVycm9yXCIsIChzKSA9PiBzLmVycm9yID8/IG51bGwpO1xuICBkZWYoXCJzZWVraW5nXCIsIChzKSA9PiBzLnNlZWtpbmcpO1xuICBkZWYoXCJidWZmZXJlZFwiLCAocykgPT4gdGltZVJhbmdlcyhzLm1ldGEgPyBzLm1ldGEuZHVyYXRpb24gOiAwKSk7XG4gIGRlZihcInNlZWthYmxlXCIsIChzKSA9PiB0aW1lUmFuZ2VzKHMubWV0YSA/IHMubWV0YS5kdXJhdGlvbiA6IDApKTtcbiAgZGVmKFwicGxheWVkXCIsIChzKSA9PiB0aW1lUmFuZ2VzKHMubWF4UmVhY2hlZCkpO1xuXG4gIEhWRS5wbGF5ID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgcmV0dXJuIGhvb2suYXR0YWNoKHRoaXMpLnRoZW4oKG5zKSA9PiB7XG4gICAgICAgIGlmIChucykge1xuICAgICAgICAgIGhvb2sucmVzdW1lKHRoaXMsIG5zKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGhvb2sucmVzdW1lKHRoaXMsIHMpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfTtcbiAgSFZFLnBhdXNlID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgb3JpZ1BhdXNlLmNhbGwodGhpcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghcy5wYXVzZWQpIHtcbiAgICAgIHMucGF1c2VkID0gdHJ1ZTtcbiAgICAgIGZpcmUodGhpcywgXCJwYXVzZVwiKTtcbiAgICB9XG4gIH07XG4gIGlmIChjdERlc2M/LmdldCAmJiBjdERlc2Muc2V0KSB7XG4gICAgY29uc3QgY3RHZXQgPSBjdERlc2MuZ2V0O1xuICAgIGNvbnN0IGN0U2V0ID0gY3REZXNjLnNldDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFZFLCBcImN1cnJlbnRUaW1lXCIsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgICAgIHJldHVybiBzID8gcy5jdXJyZW50VGltZSA6IGN0R2V0LmNhbGwodGhpcyk7XG4gICAgICB9LFxuICAgICAgc2V0KHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQsIHQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICBjdFNldC5jYWxsKHRoaXMsIHQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkdXIgPSBzLm1ldGEgPyBzLm1ldGEuZHVyYXRpb24gOiB0O1xuICAgICAgICBzLmN1cnJlbnRUaW1lID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odCwgZHVyKSk7XG4gICAgICAgIHMubWF4UmVhY2hlZCA9IE1hdGgubWF4KHMubWF4UmVhY2hlZCwgcy5jdXJyZW50VGltZSk7XG4gICAgICAgIGlmIChzLmN1cnJlbnRUaW1lIDwgZHVyKSB7XG4gICAgICAgICAgcy5lbmRlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHMuc2Vla2luZyA9IHRydWU7XG4gICAgICAgIGZpcmUodGhpcywgXCJzZWVraW5nXCIpO1xuICAgICAgICBzLnNlZWtpbmcgPSBmYWxzZTtcbiAgICAgICAgZmlyZSh0aGlzLCBcInNlZWtlZFwiKTtcbiAgICAgICAgZmlyZSh0aGlzLCBcInRpbWV1cGRhdGVcIik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGlmIChyYXRlRGVzYz8uc2V0KSB7XG4gICAgY29uc3QgcmF0ZVNldCA9IHJhdGVEZXNjLnNldDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFZFLCBcInBsYXliYWNrUmF0ZVwiLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IHJhdGVEZXNjLmdldCxcbiAgICAgIHNldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCByOiBudW1iZXIpIHtcbiAgICAgICAgcmF0ZVNldC5jYWxsKHRoaXMsIHIpO1xuICAgICAgICBpZiAoc2Vzc2lvbnMuaGFzKHRoaXMpKSB7XG4gICAgICAgICAgZmlyZSh0aGlzLCBcInJhdGVjaGFuZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgSFZFLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCwgY2IpOiBudW1iZXIge1xuICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgaWYgKCFzKSB7XG4gICAgICByZXR1cm4gb3JpZ1JWRkMuY2FsbCh0aGlzLCBjYik7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gKytob29rLnJ2ZmNTZXE7XG4gICAgcy5ydmZjLnNldChpZCwgY2IgYXMgRnJhbWVDYik7XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuICBIVkUuY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQsIGlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzID0gc2Vzc2lvbnMuZ2V0KHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgb3JpZ0NhbmNlbFJWRkMuY2FsbCh0aGlzLCBpZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHMucnZmYy5kZWxldGUoaWQpO1xuICB9O1xuICBIVkUuZ2V0VmlkZW9QbGF5YmFja1F1YWxpdHkgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgaWYgKCFzKSB7XG4gICAgICByZXR1cm4gb3JpZ1F1YWxpdHkuY2FsbCh0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyZWF0aW9uVGltZTogcGVyZm9ybWFuY2Uubm93KCksXG4gICAgICB0b3RhbFZpZGVvRnJhbWVzOiBzLnByZXNlbnRlZEZyYW1lcyxcbiAgICAgIGRyb3BwZWRWaWRlb0ZyYW1lczogMCxcbiAgICAgIGNvcnJ1cHRlZFZpZGVvRnJhbWVzOiAwLFxuICAgIH0gYXMgVmlkZW9QbGF5YmFja1F1YWxpdHk7XG4gIH07XG4gIEhWRS5sb2FkID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBpZiAoIXNlc3Npb25zLmhhcyh0aGlzKSkge1xuICAgICAgcmV0dXJuIG9yaWdMb2FkLmNhbGwodGhpcyk7XG4gICAgfVxuICAgIGhvb2suZGV0YWNoKHRoaXMpO1xuICAgIGZpcmUodGhpcywgXCJlbXB0aWVkXCIpO1xuICAgIHRoaXMuX19wdXBMYXN0U3JjID0gdW5kZWZpbmVkO1xuICAgIGhvb2suYXR0YWNoKHRoaXMpO1xuICB9O1xuICBpZiAoc3JjRGVzYz8uc2V0KSB7XG4gICAgY29uc3Qgc3JjU2V0ID0gc3JjRGVzYy5zZXQ7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhWRSwgXCJzcmNcIiwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBzcmNEZXNjLmdldCxcbiAgICAgIHNldCh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCB2OiBzdHJpbmcpIHtcbiAgICAgICAgc3JjU2V0LmNhbGwodGhpcywgdik7XG4gICAgICAgIGhvb2sub25TcmNDaGFuZ2UodGhpcyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgdHlwZSB7IFZpZGVvSG9vayB9IGZyb20gXCIuL2hvb2tcIjtcbmltcG9ydCB7XG4gIEFIRUFELFxuICBmaXJlLFxuICBIQVZFX0VOT1VHSF9EQVRBLFxuICBIQVZFX01FVEFEQVRBLFxuICBIQVZFX05PVEhJTkcsXG4gIE1FRElBX0VSUl9ERUNPREUsXG4gIE1FRElBX0VSUl9ORVRXT1JLLFxuICB0eXBlIE1lZGlhRXJyb3JMaWtlLFxuICBORVRXT1JLX0VNUFRZLFxuICBORVRXT1JLX0lETEUsXG4gIE5FVFdPUktfTE9BRElORyxcbiAgTkVUV09SS19OT19TT1VSQ0UsXG4gIFNDSEVNRSxcbiAgVEFHLFxuICB0eXBlIFZpZGVvTWV0YSxcbiAgdHlwZSBWaWRlb1N0YXRlLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaEFyZ3Mge1xuICB2aWRlbzogSFRNTFZpZGVvRWxlbWVudDtcbiAgc3RhdGU6IFZpZGVvU3RhdGU7XG4gIHNyYzogc3RyaW5nO1xuICBiaXJ0aE1zOiBudW1iZXI7XG4gIG5hdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld1ZpZGVvU3RhdGUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIGN2OiBIVE1MQ2FudmFzRWxlbWVudCk6IFZpZGVvU3RhdGUge1xuICByZXR1cm4ge1xuICAgIG1ldGE6IHVuZGVmaW5lZCxcbiAgICBjdixcbiAgICBjdHg6IGN2LmdldENvbnRleHQoXCIyZFwiKSEsXG4gICAgcGF1c2VkOiAhKHZpZGVvLmF1dG9wbGF5IHx8ICF2aWRlby5wYXVzZWQpLFxuICAgIGN1cnJlbnRUaW1lOiAwLFxuICAgIGVuZGVkOiBmYWxzZSxcbiAgICBsYXN0RHJhd25JZHg6IC0xLFxuICAgIGRlYWQ6IGZhbHNlLFxuICAgIG9iamVjdEZpdDogd2luZG93LmdldENvbXB1dGVkU3R5bGUodmlkZW8pLm9iamVjdEZpdCB8fCBcImZpbGxcIixcbiAgICByZWFkeVN0YXRlOiBIQVZFX05PVEhJTkcsXG4gICAgbmV0d29ya1N0YXRlOiBORVRXT1JLX0VNUFRZLFxuICAgIHNlZWtpbmc6IGZhbHNlLFxuICAgIHdhaXRpbmc6IGZhbHNlLFxuICAgIGVycm9yOiB1bmRlZmluZWQsXG4gICAgcHJlc2VudGVkRnJhbWVzOiAwLFxuICAgIG1heFJlYWNoZWQ6IDAsXG4gICAgcnZmYzogbmV3IE1hcCgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBmYWlsT3Blbih2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc3RhdGU6IFZpZGVvU3RhdGUsIGVycm9yOiBNZWRpYUVycm9yTGlrZSk6IHVuZGVmaW5lZCB7XG4gIHN0YXRlLmRlYWQgPSB0cnVlO1xuICBzdGF0ZS5lcnJvciA9IGVycm9yO1xuICBzdGF0ZS5uZXR3b3JrU3RhdGUgPSBORVRXT1JLX05PX1NPVVJDRTtcbiAgY29uc29sZS5lcnJvcihUQUcsIGAke2Vycm9yLm1lc3NhZ2V9IHNyYz0ke3ZpZGVvLnNyYyB8fCB2aWRlby5jdXJyZW50U3JjfWApO1xuICBmaXJlKHZpZGVvLCBcImVycm9yXCIpO1xuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vLyBPcGVuIHRoZSBmcmFtZSBzZXJ2ZXIgc2Vzc2lvbiwgdGhlbiBlbWl0IHRoZSBIVE1MTWVkaWFFbGVtZW50IGxvYWQgc2VxdWVuY2UgKHJlYWR5U3RhdGUvbmV0d29ya1N0YXRlICsgZXZlbnRzKS5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuU2Vzc2lvbihob29rOiBWaWRlb0hvb2ssIGFyZ3M6IEF0dGFjaEFyZ3MpOiBQcm9taXNlPFZpZGVvU3RhdGUgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgeyB2aWRlbywgc3RhdGUsIHNyYywgYmlydGhNcywgbmF0aXZlIH0gPSBhcmdzO1xuICBjb25zdCBmcHMgPSBOdW1iZXIucGFyc2VJbnQodmlkZW8uZGF0YXNldFtcInB1cEZwc1wiXSB8fCBcIjMwXCIsIDEwKTtcbiAgc3RhdGUubmV0d29ya1N0YXRlID0gTkVUV09SS19MT0FESU5HO1xuICBmaXJlKHZpZGVvLCBcImxvYWRzdGFydFwiKTtcbiAgbGV0IHJlczogUmVzcG9uc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgcSA9IG5hdGl2ZSA/IFwiXCIgOiBgJnc9JHtzdGF0ZS5jdi53aWR0aH0maD0ke3N0YXRlLmN2LmhlaWdodH0mZml0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHN0YXRlLm9iamVjdEZpdCl9YDtcbiAgICByZXMgPSBhd2FpdCBmZXRjaChgJHtTQ0hFTUV9b3Blbj9zcmM9JHtlbmNvZGVVUklDb21wb25lbnQoc3JjKX0mZnBzPSR7ZnBzfSR7cX1gKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWlsT3Blbih2aWRlbywgc3RhdGUsIHtcbiAgICAgIGNvZGU6IE1FRElBX0VSUl9ORVRXT1JLLFxuICAgICAgbWVzc2FnZTogYG9wZW4gZmFpbGVkOiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKX1gLFxuICAgIH0pO1xuICB9XG4gIGlmIChob29rLnNlc3Npb25zLmdldCh2aWRlbykgIT09IHN0YXRlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiBmYWlsT3Blbih2aWRlbywgc3RhdGUsIHtcbiAgICAgIGNvZGU6IE1FRElBX0VSUl9ERUNPREUsXG4gICAgICBtZXNzYWdlOiBgb3BlbiAke3Jlcy5zdGF0dXN9OiAke2F3YWl0IHJlcy50ZXh0KCl9YCxcbiAgICB9KTtcbiAgfVxuICBjb25zdCBtZXRhID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIFZpZGVvTWV0YTtcbiAgaWYgKGhvb2suc2Vzc2lvbnMuZ2V0KHZpZGVvKSAhPT0gc3RhdGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHN0YXRlLm1ldGEgPSBtZXRhO1xuICBzdGF0ZS5jdXJyZW50VGltZSA9IHN0YXRlLnBhdXNlZCA/IDAgOiBNYXRoLm1heCgwLCAoaG9vay5jdXJyTXMgLSBiaXJ0aE1zKSAvIDEwMDApO1xuICAvLyBUaGUgc3R1YiBtZWRpYSB1c3VhbGx5IGxvYWRzIG5hdGl2ZWx5IGZpcnN0OyBCbGluayB0aGVuIG93bnMgdGhlIHJlYWwgZXZlbnQgc2VxdWVuY2Ug4oCUIGRvbid0IGR1cGxpY2F0ZSBpdC5cbiAgY29uc3QgbmF0aXZlTWV0YSA9IHZpZGVvLnZpZGVvV2lkdGggPiAwO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmlkZW8sIFwidmlkZW9XaWR0aFwiLCB7XG4gICAgdmFsdWU6IG1ldGEud2lkdGgsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZpZGVvLCBcInZpZGVvSGVpZ2h0XCIsIHtcbiAgICB2YWx1ZTogbWV0YS5oZWlnaHQsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZpZGVvLCBcImR1cmF0aW9uXCIsIHtcbiAgICB2YWx1ZTogbWV0YS5kdXJhdGlvbixcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH0pO1xuICBzdGF0ZS5yZWFkeVN0YXRlID0gSEFWRV9NRVRBREFUQTtcbiAgaWYgKCFuYXRpdmVNZXRhKSB7XG4gICAgZmlyZSh2aWRlbywgXCJkdXJhdGlvbmNoYW5nZVwiKTtcbiAgICBmaXJlKHZpZGVvLCBcImxvYWRlZG1ldGFkYXRhXCIpO1xuICB9XG4gIHN0YXRlLnJlYWR5U3RhdGUgPSBIQVZFX0VOT1VHSF9EQVRBO1xuICBpZiAoIW5hdGl2ZU1ldGEpIHtcbiAgICBmaXJlKHZpZGVvLCBcImxvYWRlZGRhdGFcIik7XG4gICAgZmlyZSh2aWRlbywgXCJjYW5wbGF5XCIpO1xuICAgIGZpcmUodmlkZW8sIFwiY2FucGxheXRocm91Z2hcIik7XG4gIH1cbiAgc3RhdGUubmV0d29ya1N0YXRlID0gTkVUV09SS19JRExFO1xuICBpZiAoIW5hdGl2ZU1ldGEpIHtcbiAgICBmaXJlKHZpZGVvLCBcInN1c3BlbmRcIik7XG4gICAgaWYgKCFzdGF0ZS5wYXVzZWQpIHtcbiAgICAgIGZpcmUodmlkZW8sIFwicGxheVwiKTtcbiAgICAgIGZpcmUodmlkZW8sIFwicGxheWluZ1wiKTtcbiAgICB9XG4gIH1cbiAgaG9vay5jYWNoZS5wcmVmZXRjaChzdGF0ZSwgMSwgQUhFQUQpO1xuICByZXR1cm4gc3RhdGU7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgeyBhZHZhbmNlIH0gZnJvbSBcIi4vZHJpdmVyXCI7XG5pbXBvcnQgeyBGcmFtZUNhY2hlIH0gZnJvbSBcIi4vZnJhbWVfY2FjaGVcIjtcbmltcG9ydCB7IGluc3RhbGxNZWRpYVNoaW0gfSBmcm9tIFwiLi9tZWRpYV9zaGltXCI7XG5pbXBvcnQgeyBzZXR1cENhbnZhcyB9IGZyb20gXCIuL292ZXJsYXlcIjtcbmltcG9ydCB7IG5ld1ZpZGVvU3RhdGUsIG9wZW5TZXNzaW9uIH0gZnJvbSBcIi4vc2Vzc2lvblwiO1xuaW1wb3J0IHsgZmlyZSwgdHlwZSBWaWRlb1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX3B1cF92aWRlb19fPzogeyBhZHZhbmNlOiAobXM6IG51bWJlcikgPT4gUHJvbWlzZTx1bmtub3duPjsgcmVhZHk6ICgpID0+IFByb21pc2U8dm9pZD4gfTtcbiAgfVxuICBpbnRlcmZhY2UgSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgX19wdXBMYXN0U3JjPzogc3RyaW5nO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBWaWRlb0hvb2sge1xuICByZWFkb25seSBzZXNzaW9ucyA9IG5ldyBXZWFrTWFwPEhUTUxWaWRlb0VsZW1lbnQsIFZpZGVvU3RhdGU+KCk7XG4gIHJlYWRvbmx5IGF0dGFjaGluZyA9IG5ldyBXZWFrTWFwPEhUTUxWaWRlb0VsZW1lbnQsIFByb21pc2U8VmlkZW9TdGF0ZSB8IHVuZGVmaW5lZD4+KCk7XG4gIC8vIEVudW1lcmFibGUgbWlycm9yIG9mIGluLWZsaWdodCBvcGVucyAoV2Vha01hcCBpc24ndCBpdGVyYWJsZSkgc28gcmVhZHkoKSBjYW4gYXdhaXQgdGhlbS5cbiAgcmVhZG9ubHkgb3BlbmluZyA9IG5ldyBTZXQ8UHJvbWlzZTx1bmtub3duPj4oKTtcbiAgcmVhZG9ubHkgY2FjaGUgPSBuZXcgRnJhbWVDYWNoZSgpO1xuICBydmZjU2VxID0gMDtcbiAgY3Vyck1zID0gMDtcbiAgcHJpdmF0ZSBfbGFzdFNuYXBzaG90ID0gbmV3IFdlYWtNYXA8SFRNTFZpZGVvRWxlbWVudCwgT2Zmc2NyZWVuQ2FudmFzPigpO1xuXG4gIGluc3RhbGwoKTogdm9pZCB7XG4gICAgaW5zdGFsbE1lZGlhU2hpbSh0aGlzKTtcbiAgICB0aGlzLnNjYW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0cykgPT4ge1xuICAgICAgZm9yIChjb25zdCBtIG9mIG11dHMpIHtcbiAgICAgICAgaWYgKG0udHlwZSA9PT0gXCJhdHRyaWJ1dGVzXCIgJiYgbS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50ICYmIG0uYXR0cmlidXRlTmFtZSA9PT0gXCJzcmNcIikge1xuICAgICAgICAgIHRoaXMub25TcmNDaGFuZ2UobS50YXJnZXQpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG0uYWRkZWROb2Rlcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgICAgaWYgKG4gaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNjYW4obik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbS5yZW1vdmVkTm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgIGlmIChuIGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5kZXRhY2gobik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KS5vYnNlcnZlKGRvY3VtZW50LCB7IHN1YnRyZWU6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbXCJzcmNcIl0gfSk7XG4gICAgd2luZG93Ll9fcHVwX3ZpZGVvX18gPSB7IGFkdmFuY2U6IChtcykgPT4gYWR2YW5jZSh0aGlzLCBtcyksIHJlYWR5OiAoKSA9PiB0aGlzLnJlYWR5KCkgfTtcbiAgfVxuXG4gIGF0dGFjaCh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgbmF0aXZlID0gZmFsc2UpOiBQcm9taXNlPFZpZGVvU3RhdGUgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHZpZGVvKTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZXhpc3RpbmcpO1xuICAgIH1cbiAgICBjb25zdCBwZW5kaW5nID0gdGhpcy5hdHRhY2hpbmcuZ2V0KHZpZGVvKTtcbiAgICBpZiAocGVuZGluZykge1xuICAgICAgcmV0dXJuIHBlbmRpbmc7XG4gICAgfVxuICAgIGNvbnN0IHNyYyA9IHZpZGVvLnNyYyB8fCB2aWRlby5jdXJyZW50U3JjO1xuICAgIGlmICghc3JjKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIGlmICgvXihibG9iOnxkYXRhOnxtZWRpYXN0cmVhbTopL2kudGVzdChzcmMpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIGNvbnN0IGN2ID0gc2V0dXBDYW52YXModmlkZW8sIHRoaXMuX2xhc3RTbmFwc2hvdC5nZXQodmlkZW8pKTtcbiAgICBjb25zdCBzdGF0ZSA9IG5ld1ZpZGVvU3RhdGUodmlkZW8sIGN2KTtcbiAgICB0aGlzLnNlc3Npb25zLnNldCh2aWRlbywgc3RhdGUpO1xuICAgIGNvbnN0IHAgPSBvcGVuU2Vzc2lvbih0aGlzLCB7IHZpZGVvLCBzdGF0ZSwgc3JjLCBiaXJ0aE1zOiB0aGlzLmN1cnJNcywgbmF0aXZlIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgdGhpcy5hdHRhY2hpbmcuZGVsZXRlKHZpZGVvKTtcbiAgICAgIHRoaXMub3BlbmluZy5kZWxldGUocCk7XG4gICAgfSk7XG4gICAgdGhpcy5hdHRhY2hpbmcuc2V0KHZpZGVvLCBwKTtcbiAgICB0aGlzLm9wZW5pbmcuYWRkKHApO1xuICAgIHJldHVybiBwO1xuICB9XG5cbiAgLy8gQXdhaXQgb25seSB0aGUgb3BlbnMgaW4gZmxpZ2h0IHJpZ2h0IG5vdyDigJQgbmV2ZXIgY2hhc2UgbmV3bHktc3Bhd25lZCBvbmVzLCBvciBhIHJldHJ5aW5nIHBhZ2UgbG9vcHMgZm9yZXZlci5cbiAgYXN5bmMgcmVhZHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFsuLi50aGlzLm9wZW5pbmddKTtcbiAgfVxuXG4gIHJlc3VtZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc3RhdGU6IFZpZGVvU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAoIXN0YXRlLnBhdXNlZCAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RhdGUucGF1c2VkID0gZmFsc2U7XG4gICAgc3RhdGUuZW5kZWQgPSBmYWxzZTtcbiAgICBmaXJlKHZpZGVvLCBcInBsYXlcIik7XG4gICAgZmlyZSh2aWRlbywgXCJwbGF5aW5nXCIpO1xuICB9XG5cbiAgZGV0YWNoKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNlc3Npb25zLmdldCh2aWRlbyk7XG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RhdGUubWV0YSkge1xuICAgICAgaWYgKHN0YXRlLmxhc3REcmF3bklkeCA+PSAwKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qgc25hcCA9IG5ldyBPZmZzY3JlZW5DYW52YXMoc3RhdGUuY3Yud2lkdGgsIHN0YXRlLmN2LmhlaWdodCk7XG4gICAgICAgICAgY29uc3Qgc2N0eCA9IHNuYXAuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgICAgIGlmICghc2N0eCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm8gMmQgY29udGV4dFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2N0eC5kcmF3SW1hZ2Uoc3RhdGUuY3YsIDAsIDApO1xuICAgICAgICAgIHRoaXMuX2xhc3RTbmFwc2hvdC5zZXQodmlkZW8sIHNuYXApO1xuICAgICAgICB9IGNhdGNoIHt9XG4gICAgICB9XG4gICAgICB0aGlzLmNhY2hlLnJlbGVhc2Uoc3RhdGUubWV0YS5pZCwgc3RhdGUpO1xuICAgIH1cbiAgICBzdGF0ZS5jdi5yZW1vdmUoKTtcbiAgICB0aGlzLnNlc3Npb25zLmRlbGV0ZSh2aWRlbyk7XG4gICAgdGhpcy5hdHRhY2hpbmcuZGVsZXRlKHZpZGVvKTtcbiAgfVxuXG4gIG9uU3JjQ2hhbmdlKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc3JjID0gdmlkZW8uc3JjIHx8IHZpZGVvLmN1cnJlbnRTcmMgfHwgXCJcIjtcbiAgICBpZiAodmlkZW8uX19wdXBMYXN0U3JjID09PSBzcmMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmlkZW8uX19wdXBMYXN0U3JjID0gc3JjO1xuICAgIGlmICh0aGlzLnNlc3Npb25zLmhhcyh2aWRlbykpIHtcbiAgICAgIHRoaXMuZGV0YWNoKHZpZGVvKTtcbiAgICB9XG4gICAgdGhpcy5hdHRhY2godmlkZW8pO1xuICB9XG5cbiAgLy8gUmUtb3BlbiBhdCBuYXRpdmUgcmVzb2x1dGlvbiAodGhlIGVsZW1lbnQgb3V0Z3JldyB0aGUgZG93bnNjYWxlZCBkZWNvZGUpLCBwcmVzZXJ2aW5nIHBsYXliYWNrIHN0YXRlLlxuICByZWF0dGFjaCh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgc3RhdGU6IFZpZGVvU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCB0ID0gc3RhdGUuY3VycmVudFRpbWU7XG4gICAgY29uc3QgcGF1c2VkID0gc3RhdGUucGF1c2VkO1xuICAgIGNvbnN0IGVuZGVkID0gc3RhdGUuZW5kZWQ7XG4gICAgdGhpcy5kZXRhY2godmlkZW8pO1xuICAgIHZvaWQgdGhpcy5hdHRhY2godmlkZW8sIHRydWUpLnRoZW4oKG5zKSA9PiB7XG4gICAgICBpZiAoIW5zKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG5zLmN1cnJlbnRUaW1lID0gdDtcbiAgICAgIG5zLnBhdXNlZCA9IHBhdXNlZDtcbiAgICAgIG5zLmVuZGVkID0gZW5kZWQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNjYW4ocm9vdDogRWxlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJvb3QudGFnTmFtZSA9PT0gXCJWSURFT1wiKSB7XG4gICAgICB0aGlzLmF0dGFjaChyb290IGFzIEhUTUxWaWRlb0VsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAocm9vdC5xdWVyeVNlbGVjdG9yQWxsKSB7XG4gICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ2aWRlb1wiKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIHRoaXMuYXR0YWNoKHYpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsVmlkZW9Ib29rKCk6IHZvaWQge1xuICBpZiAod2luZG93Ll9fcHVwX3ZpZGVvX18pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbmV3IFZpZGVvSG9vaygpLmluc3RhbGwoKTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDcvMjcuXG5cbmltcG9ydCB7IGluc3RhbGxBdWRpb1NoaW0gfSBmcm9tIFwiLi9hdWRpby9zaGltXCI7XG5pbXBvcnQgeyBpbnN0YWxsSGZIb29rIH0gZnJvbSBcIi4vaHlwZXJmcmFtZXNcIjtcbmltcG9ydCB7IGluc3RhbGxUaWNrSG9vayB9IGZyb20gXCIuL3RpY2tcIjtcbmltcG9ydCB7IGluc3RhbGxWaWRlb0hvb2sgfSBmcm9tIFwiLi92aWRlby9ob29rXCI7XG5cbmlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkge1xuICBpbnN0YWxsQXVkaW9TaGltKCk7XG4gIGluc3RhbGxIZkhvb2soKTtcbiAgaW5zdGFsbFRpY2tIb29rKCk7XG4gIGluc3RhbGxWaWRlb0hvb2soKTtcbn1cbiJdfQ==