voxflow 1.10.21 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
(()=>{var e={7171:e=>{const t={opening:{speed:1,volume:1},explain:{speed:.95,volume:1},question:{speed:1.05,volume:1.05},react:{speed:1,volume:.95},debate:{speed:1.1,volume:1.1},summary:{speed:.9,volume:1},summarize:{speed:.9,volume:1},transition:{speed:1.1,volume:.9},joke:{speed:1.05,volume:1.05},closing:{speed:.95,volume:.95}};function getIntentParams(e){if(!e||typeof e!=="string"){return{speed:1,volume:1}}return t[e]||{speed:1,volume:1}}e.exports={INTENT_TTS_PARAMS:t,getIntentParams:getIntentParams}},9226:(e,t,o)=>{const n=o(8330);const{logger:r,parseVerbosityFromArgv:a}=o(5984);const i={login:"handleLogin",logout:"handleLogout",status:"handleStatus",dashboard:"handleDashboard",clone:"handleClone"};const s=o(9229);function discoverCommands(){const e={};const t={};const o={};for(const[n,r]of Object.entries(s)){const a=r();if(!a||typeof a.meta!=="object")continue;for(const[r,i]of Object.entries(a.meta)){if(!i||typeof i!=="object")continue;e[r]=a;o[r]=i;void n;if(typeof i.alias==="string"){t[r]=i.alias}}}return{COMMAND_MAP:e,ALIASES:t,META:o}}let l=null;function getRegistry(){if(!l)l=discoverCommands();return l}function fastResolveCommand(e){if(!/^[a-z][a-z0-9-]*$/i.test(e))return null;const t=s[e];if(!t)return null;const o=t();if(!o||typeof o.meta!=="object")return null;const n=o.meta[e];if(!n||n.alias)return null;return o}async function run(e){const t=e||process.argv.slice(2);if(t.length===1&&(t[0]==="--version"||t[0]==="-v")){console.log(n.version);return}const{level:s,rest:l}=a(t);r.setLevel(s);const c=l[0];if(!c||c==="--help"||c==="-h"){printHelp();return}if(c==="--version"){console.log(n.version);return}if(l.includes("--help")||l.includes("-h")){printSubcommandHelp(c);return}if(i[c]){const e=o(7823);return e[i[c]](l.slice(1))}let d=fastResolveCommand(c);let u=null;if(!d){const{COMMAND_MAP:e,ALIASES:t}=getRegistry();const o=e[c];if(!o){console.error(`Unknown command: ${c}\nRun voxflow --help for usage.`);process.exit(1)}u=t[c]||null;d=u?e[u]:o}await d.handle(l.slice(1));try{const{promptFeedback:e}=o(5503);await e(u||c)}catch{}}function getAllMeta(){return{...getRegistry().META}}function printHelp(){const e=getAllMeta();const t=[`\nvoxflow v${n.version} — AI audio content creation CLI`,"","Usage:"," voxflow <command> [options]","","Commands:"];for(const[o,n]of Object.entries(e)){if(n.alias)continue;const e=(o+(n.usage?" "+n.usage:"")).padEnd(18);t.push(` ${e} ${n.description}`)}t.push("");for(const[o,n]of Object.entries(e)){if(n.alias||!n.options)continue;const e=n.aliasOf?`${o} options (alias: ${n.aliasOf}):`:`${o} options:`;t.push(e.charAt(0).toUpperCase()+e.slice(1));t.push(...n.options.map((e=>" "+e)));t.push("")}t.push("Common options:"," --help, -h Show help (use with a command for command-specific help)"," --version, -v Show version","","Advanced options:"," --api <url> Override API endpoint (for self-hosted servers)"," --token <jwt> Use explicit token (CI/CD, skip browser login)","","Examples:");for(const[,o]of Object.entries(e)){if(o.alias||!o.examples)continue;t.push(...o.examples.map((e=>" "+e)))}console.log(t.join("\n"))}function printSubcommandHelp(e){const t=getAllMeta();const o=t[e];if(!o){printHelp();return}const n=o.alias?t[o.alias]:o;if(!n||!n.options){printHelp();return}const r=o.alias||e;const a=[`\nvoxflow ${r} — ${n.description}`,"","Usage:",` voxflow ${r}${n.usage?" "+n.usage:""}`,"","Options:",...n.options.map((e=>" "+e))," --api <url> Override API endpoint"," --token <jwt> Use explicit token (skip browser login)"];if(n.examples&&n.examples.length>0){a.push("","Examples:",...n.examples.map((e=>" "+e)))}console.log(a.join("\n"))}e.exports={run:run}},9229:(e,t,o)=>{"use strict";e.exports={add:()=>o(9492),asr:()=>o(5357),"asr-jobs":()=>o(7654),"auth-cmds":()=>o(7823),dub:()=>o(220),explain:()=>o(6352),feedback:()=>o(1104),image:()=>o(6794),narrate:()=>o(4268),picstory:()=>o(1850),podcast:()=>o(8167),present:()=>o(8204),publish:()=>o(4460),skills:()=>o(89),slides:()=>o(1089),story:()=>o(3362),summarize:()=>o(6046),synthesize:()=>o(5859),translate:()=>o(173),"video-translate":()=>o(6851),voices:()=>o(2972)}},9492:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const a=o(8611);const i=o(5692);const{URL:s}=o(7016);const l="https://raw.githubusercontent.com/VoxFlowStudio/skills/main";const c="voxflow";const d={"voxflow:flow":"flows","voxflow:voice-recipe":"recipes","voxflow:preset":"presets"};function fetchText(e){return new Promise(((t,o)=>{const n=new s(e);const r=n.protocol==="https:"?i:a;r.get(n,(n=>{if(n.statusCode===301||n.statusCode===302){if(n.headers.location){fetchText(n.headers.location).then(t,o);return}}if(n.statusCode!==200){o(new Error(`HTTP ${n.statusCode} fetching ${e}`));n.resume();return}const r=[];n.on("data",(e=>r.push(e)));n.on("end",(()=>t(Buffer.concat(r).toString("utf8"))))})).on("error",(e=>o(e)))}))}function resolveItemName(e,t){if(e.includes("/")){const[t,o]=e.split("/",2);return{author:t,name:o,key:`${t}/${o}`}}return{author:t,name:e,key:`${t}/${e}`}}function localTargetForFile(e,t){const o=`${e.author}/${e.name}/`;const n=t.startsWith(o)?t.slice(o.length):t;const a=d[e.type]||"voxflow-items";return r.join(a,e.name,n)}function findItem(e,t,o){return e.items.find((e=>(e.author||c)===t&&e.name===o))}function suggestNearby(e,t){const o=e.items.map((e=>`${e.author||c}/${e.name}`));return o.filter((e=>e.includes(t)||t.includes(e.split("/")[1]))).slice(0,5)}async function add(e){const{name:t,registry:o=l,defaultAuthor:a=c,targetRoot:i=process.cwd(),force:s=false,log:d=console.log}=e;if(!t){throw new Error(`add_missing_name: voxflow add <name> — see voxflow add --help`)}const{author:u,name:p,key:A}=resolveItemName(t,a);d(`◆ Fetching registry index: ${o}/registry.json`);let f;try{f=await fetchText(`${o}/registry.json`)}catch(e){throw new Error(`registry_unreachable: ${e.message}\n fix: check network or pass --registry <url>`)}let h;try{h=JSON.parse(f)}catch(e){throw new Error(`registry_invalid_json: ${o}/registry.json\n fix: check the registry repo is healthy`)}if(!h||!Array.isArray(h.items)){throw new Error(`registry_invalid_shape: missing items[] in registry.json`)}const m=findItem(h,u,p);if(!m){const e=suggestNearby(h,p);const t=e.length?`\n did you mean: ${e.join(", ")}`:`\n fix: voxflow add --list to see available items`;throw new Error(`item_not_found: ${A}${t}`)}if(!Array.isArray(m.files)||m.files.length===0){throw new Error(`item_empty_files: ${A} declares no files in registry`)}d(`◆ Resolving ${A} (${m.type}) v${m.version||"unversioned"}`);const g=[];const v=[];for(const e of m.files){const t=r.join(i,localTargetForFile(m,e));if(n.existsSync(t)&&!s){v.push(t);continue}const a=`${o}/${e}`;let l;try{l=await fetchText(a)}catch(e){throw new Error(`file_fetch_failed: ${a}\n ${e.message}`)}n.mkdirSync(r.dirname(t),{recursive:true});n.writeFileSync(t,l);g.push(t)}d(`✓ Added ${A} (${m.type})${m.version?" v"+m.version:""}`);for(const e of g){d(` ${r.relative(i,e)}`)}if(v.length){d(`\n Skipped (use --force to overwrite):`);for(const e of v){d(` ${r.relative(i,e)}`)}}if(m.tryWith){d(`\nTry it:\n ${m.tryWith}`)}return{item:m,written:g,skipped:v}}async function handle(e){const t={};const o=e.filter(((t,o)=>{if(t.startsWith("--"))return false;if(o>0&&e[o-1].startsWith("--")&&!e[o-1].includes("="))return false;return true}));t.name=o[0];for(let o=0;o<e.length;o++){if(e[o]==="--registry"&&e[o+1])t.registry=e[++o];else if(e[o]==="--default-author"&&e[o+1])t.defaultAuthor=e[++o];else if(e[o]==="--force")t.force=true;else if(e[o]==="--list")t.list=true}if(t.list){const e=(t.registry||l)+"/registry.json";const o=await fetchText(e);const n=JSON.parse(o);console.log(`Registry: ${n.name} v${n.version||"unversioned"}\n`);for(const e of n.items){const t=`${e.author||c}/${e.name}`;console.log(` ${t.padEnd(36)} ${e.type.padEnd(22)} ${e.description||""}`)}return}await add(t)}const u={add:{usage:"<name> [opts]",description:"Pull a flow / voice-recipe / preset from the registry into the current project",options:[`--registry <url> Override registry URL (default: ${l})`,`--default-author <name> Resolve unscoped names against this author (default: ${c})`,`--force Overwrite existing local files`,`--list List all items in the registry`],examples:["voxflow add dub-anime-jp-zh","voxflow add chico/my-custom-recipe","voxflow add --list","voxflow add foo --registry https://example.com/voxflow-registry/main"]}};e.exports={add:add,handle:handle,meta:u,_internal:{resolveItemName:resolveItemName,localTargetForFile:localTargetForFile,findItem:findItem,suggestNearby:suggestNearby}}},7654:(e,t,o)=>{const n=o(9896);const r=o(6928);const{API_BASE:a}=o(3282);const{getToken:i,getTokenInfo:s}=o(598);const{parseFlag:l,parseIntFlag:c,runWithRetry:d}=o(5537);const u=o(3077);const p=o(5013);const{formatSrt:A,formatPlainText:f,formatJson:h}=o(8217);const m={srt:".srt",txt:".txt",json:".json"};async function listJobs({apiBase:e,token:t,limit:o,jsonOut:n}){const r=await u.listJobs(e,t,{limit:o});if(n){process.stdout.write(`${JSON.stringify(r,null,2)}\n`);return{count:r.length}}if(r.length===0){console.log("No ASR jobs found.");return{count:0}}console.log(`\n=== ASR Jobs (${r.length}) ===\n`);console.log(" ID Status Duration Created Filename");console.log(" ──────────────────────────────────── ───────── ───────── ───────────────────── ────────");for(const e of r){const t=(e.id||"").padEnd(38);const o=String(e.status||"?").padEnd(9);const n=e.result_duration_sec?`${Math.round(e.result_duration_sec)}s`:e.source_duration_sec?`~${e.source_duration_sec}s`:"?";const r=(e.created_at||"").slice(0,19).replace("T"," ").padEnd(21);const a=e.source_filename||"";console.log(` ${t} ${o} ${n.padEnd(9)} ${r} ${a}`)}return{count:r.length}}async function showJob({apiBase:e,token:t,jobId:o,jsonOut:n}){const r=await u.getJob(e,t,o);if(n){process.stdout.write(`${JSON.stringify(r,null,2)}\n`);return r}console.log(`\n=== ASR Job ${r.id} ===`);console.log(`Status: ${r.status}${r.progress!=null?` (${r.progress}%)`:""}`);console.log(`Provider: ${r.provider}`);console.log(`Source: ${r.source_filename||"(unknown)"}${r.source_size?` (${formatSize(r.source_size)})`:""}`);console.log(`Language: ${r.result_language||r.language||"?"}`);console.log(`Duration: ${r.result_duration_sec?Math.round(r.result_duration_sec)+"s":r.source_duration_sec?"~"+r.source_duration_sec+"s":"?"}`);console.log(`Quota: ${r.quota_charged}`);console.log(`Created: ${r.created_at}`);if(r.completed_at)console.log(`Completed: ${r.completed_at}`);if(r.error_code)console.log(`Error: ${r.error_code} — ${r.error_message||""}`);if(r.status==="succeeded"&&r.result_json?.text){const e=r.result_json.text.slice(0,500);console.log(`\n--- Transcript (${r.result_segments_count||0} segments) ---`);console.log(e+(r.result_json.text.length>500?"...":""));console.log(`\nRun \`voxflow asr-jobs download ${r.id}\` to write the full transcript.`)}return r}async function cancelJob({apiBase:e,token:t,jobId:o}){const n=await u.cancelJob(e,t,o);if(n.status==="cancelled"){console.log(`Cancelled job ${n.id}. Quota refunded: ${n.quota_charged}.`)}else{console.log(`Job ${n.id} is already ${n.status} (no-op).`)}p.deleteJob(o);return n}async function downloadJob({apiBase:e,token:t,jobId:o,format:a,outputPath:i}){const s=await u.getJob(e,t,o);if(s.status!=="succeeded"){throw new Error(`Job is ${s.status}, no transcript available yet. Status:\n voxflow asr-jobs show ${o}`)}const l=s.result_json?.segments||[];const c=l.map(((e,t)=>({id:t+1,startMs:Math.round((e.start||0)*1e3),endMs:Math.round((e.end||0)*1e3),text:e.text||"",speakerId:e.speaker||null})));let d;switch(a){case"srt":d=A(c);break;case"txt":d=f(c,{includeSpeakers:true});break;case"json":d=h(c);break;default:throw new Error(`Unknown format: ${a}`)}const p=m[a]||".txt";const g="asr-"+o+p;const v=i?r.resolve(i):r.resolve(g);n.writeFileSync(v,d,"utf8");console.log(`Wrote ${c.length} segments to ${v}`);return{outputPath:v,captionCount:c.length}}function formatSize(e){if(!Number.isFinite(e))return"?";if(e<1024)return`${e} B`;if(e<1024*1024)return`${(e/1024).toFixed(1)} KB`;return`${(e/1024/1024).toFixed(1)} MB`}async function handle(e){const t=e[0];if(!t||t.startsWith("-")){printHelp();process.exit(t?0:1)}if(!["list","show","cancel","download"].includes(t)){console.error(`Error: unknown subcommand "${t}". Use one of: list | show | cancel | download`);process.exit(1)}const o=e.slice(1);const n=l(o,"--api")||a;const r=l(o,"--token");const u=o.includes("--json");const p=c(o,"--limit")||20;const A=l(o,"--format")||"srt";const f=l(o,"--output","-o");if(A&&!["srt","txt","json"].includes(A)){console.error(`Error: --format must be one of: srt, txt, json (got: "${A}")`);process.exit(1)}const h=o.filter((e=>!e.startsWith("-")));const m=pickJobId(o);const g=r||await i({api:n});const v=s();if(v&&!u)console.log(`[32mLogged in as ${v.email}[0m`);const y={apiBase:n,token:g,jobId:m,limit:p,jsonOut:u,format:A,outputPath:f};async function dispatch(e){if(t==="list"){return await listJobs({apiBase:e.apiBase,token:e.token,limit:e.limit,jsonOut:e.jsonOut})}if(!e.jobId){console.error(`Error: <jobId> is required for ${t}.\nUsage: voxflow asr-jobs ${t} <jobId>`);process.exit(1)}if(t==="show")return await showJob({apiBase:e.apiBase,token:e.token,jobId:e.jobId,jsonOut:e.jsonOut});if(t==="cancel")return await cancelJob({apiBase:e.apiBase,token:e.token,jobId:e.jobId});if(t==="download")return await downloadJob({apiBase:e.apiBase,token:e.token,jobId:e.jobId,format:e.format,outputPath:e.outputPath});return null}try{return await d(dispatch,y,n,r)}catch(e){console.error(`Error: ${e.message}`);process.exit(1)}return h}function pickJobId(e){const t=new Set(["--api","--token","--limit","--format","--output","-o"]);let o=false;for(const n of e){if(o){o=false;continue}if(t.has(n)){o=true;continue}if(n.startsWith("-"))continue;return n}return null}function printHelp(){console.log(`Usage: voxflow asr-jobs <subcommand> [options]\n\nSubcommands:\n list List recent ASR jobs (server-side)\n show <jobId> Show one job (with transcript preview)\n cancel <jobId> Cancel a running job (refunds quota)\n download <jobId> Write the transcript to a file\n\nOptions:\n --api <url> API base URL (default: ${a})\n --token <jwt> Bypass token cache for one-off calls\n --limit <n> (list) Number of jobs to fetch (default 20)\n --format srt|txt|json (download) Output format (default srt)\n --output, -o <path> (download) Output file path\n --json (list/show) Emit raw JSON to stdout\n\nExamples:\n voxflow asr-jobs list\n voxflow asr-jobs show 6f3c2798-87bf-4367-bb4c-08b872e12bef\n voxflow asr-jobs download 6f3c2798-… --format srt -o meeting.srt\n voxflow asr-jobs cancel 6f3c2798-…`)}const g={"asr-jobs":{usage:"<list|show|cancel|download> [opts]",description:"Browse, inspect, cancel, and download long-running Azure ASR jobs",options:[`list List recent jobs`,`show <jobId> Show one job (with preview)`,`cancel <jobId> Cancel a running job`,`download <jobId> Write the transcript locally`,`--limit <n> (list) default 20`,`--format srt|txt|json (download) default srt`,`--output, -o <path> (download) target file path`,`--json (list/show) raw JSON output`],examples:["voxflow asr-jobs list","voxflow asr-jobs show 6f3c2798-87bf-4367-bb4c-08b872e12bef","voxflow asr-jobs download 6f3c2798-… --format srt -o meeting.srt","voxflow asr-jobs cancel 6f3c2798-…"]}};e.exports={handle:handle,meta:g,listJobs:listJobs,showJob:showJob,cancelJob:cancelJob,downloadJob:downloadJob}},5357:(e,t,o)=>{"use strict";e.exports=o(8630)},9261:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const{getMediaInfo:a,extractAudioForAsr:i}=o(7656);const{uploadToR2:s}=o(8683);const l=o(3077);const c=o(5013);const{formatSrt:d,formatPlainText:u,formatJson:p}=o(8217);const{FORMAT_EXTENSIONS:A,formatDuration:f,formatSize:h}=o(4231);const m={"16k_zh":"zh-CN","16k_zh_en":"zh-CN","16k_zh_dialect":"zh-CN","8k_zh":"zh-CN","16k_en":"en-US","8k_en":"en-US","16k_ja":"ja-JP","16k_ko":"ko-KR"};function toBcp47(e){if(!e||e==="auto")return"auto";return m[e]||e}const g=8;const v=2.5;const y=/[。!?]/;const b=/[.!?。!?]/;const w=/[-ヿ㐀-䶿一-鿿-]/;function joinWords(e){let t="";for(let o=0;o<e.length;o++){const n=e[o];if(o===0){t=n;continue}const r=e[o-1];const a=!w.test(r.slice(-1))&&!w.test(n.slice(0,1));t+=(a?" ":"")+n}return t}function splitSegmentByWords(e){const t=e.words;if(!t||t.length===0){return[{start:e.start,end:e.end,text:e.text,speaker:e.speaker}]}const o=[];let n=[];let r=null;const flush=t=>{if(n.length===0)return;o.push({start:r,end:t,text:joinWords(n.map((e=>e.word))),speaker:e.speaker||null});n=[];r=null};for(let e=0;e<t.length;e++){const o=t[e];if(r===null)r=o.start;n.push(o);const a=o.end-r;const i=e===t.length-1;const s=y.test(o.word)||b.test(o.word);if(i||a>=g||s&&a>=v){flush(o.end)}}return o}function azureSegmentsToCaptions(e=[]){const t=[];for(const o of e){for(const e of splitSegmentByWords(o)){t.push(e)}}return t.map(((e,t)=>({id:t+1,startMs:Math.round(e.start*1e3),endMs:Math.round(e.end*1e3),text:e.text,speakerId:e.speaker||null})))}async function asrAzure({apiBase:e,token:t,input:o,lang:d,format:u,output:p,opts:A,tempFiles:m}){if(!o){throw new Error("Azure engine requires --input <file>. URL and microphone input "+"will be supported in a follow-up.")}let g=r.resolve(o);if(!n.existsSync(g))throw new Error(`Input file not found: ${g}`);console.log("\n=== VoxFlow ASR (Azure Batch) ===");console.log(`Input: ${r.basename(g)}`);const v=toBcp47(d);console.log(`Language: ${v}`);console.log(`Format: ${u}`);const y=await a(g);if(!y.hasAudio)throw new Error("Input file has no audio track.");const b=Math.max(1,Math.round(y.durationMs/1e3));const w=r.basename(g);let x=n.statSync(g).size;console.log(`Duration: ${f(y.durationMs)}`);console.log(`Size: ${h(x)}`);try{console.log(`\n[1/4] Extract audio (16kHz mono WAV)...`);const e=await i(g);m.push(e.wavPath);g=e.wavPath;x=n.statSync(g).size;console.log(` OK (${h(x)})`)}catch(e){console.log(` ffmpeg unavailable, uploading original (${e.message})`)}console.log(`\n[2/4] Upload to Cloudflare R2...`);let S=-1;const{key:k,mode:C}=await s({filePath:g,apiBase:e,token:t,onProgress:({uploaded:e,total:t,partNumber:o,partCount:n})=>{const r=Math.floor(e/t*100);if(r!==S){process.stdout.write(`\r ${r}% (${h(e)}/${h(t)}, part ${o}/${n}) `);S=r}}});process.stdout.write("\n");console.log(` OK (${C}, key=${k})`);console.log(`\n[3/4] Create transcription job...`);let T=await l.createJob({apiBase:e,token:t,sourceKey:k,sourceFilename:w,sourceSize:x,durationSec:b,language:v,options:{wordTimestamps:true,diarize:!!A.diarize,speakerCount:A.speakerNumber||undefined}});console.log(` OK (jobId=${T.id})`);c.saveJob(T.id,{createdAt:T.created_at,status:T.status,source:{path:o,filename:w,durationSec:b},language:v});try{c.pruneTerminal()}catch{}console.log(`\n[4/4] Wait for transcription (Ctrl+C is safe — job persists)`);const P=Date.now();let E=null;T=await l.waitForTerminal({apiBase:e,token:t,jobId:T.id,onProgress:e=>{c.saveJob(e.id,{createdAt:e.created_at,status:e.status,source:{path:o,filename:w,durationSec:b},language:v});if(e.status!==E||e.progress!==T.progress){const t=Math.round((Date.now()-P)/1e3);process.stdout.write(`\r ${e.status} ${e.progress||0}% (${t}s) `);E=e.status;T=e}}});process.stdout.write("\n");if(T.status!=="succeeded"){c.saveJob(T.id,{createdAt:T.created_at,status:T.status,source:{path:o,filename:w,durationSec:b},language:v});throw new Error(`Job ${T.status}: ${T.error_message||T.error_code||"unknown error"}`)}return finalizeAzureOutput({job:T,input:o,format:u,output:p,durationMs:y.durationMs})}async function asrAzureResume({apiBase:e,token:t,jobId:o,format:n,output:r}){console.log(`\n=== VoxFlow ASR — Resume Azure Job ===`);console.log(`Job ID: ${o}`);const a=Date.now();let i=null;const s=await l.waitForTerminal({apiBase:e,token:t,jobId:o,onProgress:e=>{if(e.status!==i){const t=Math.round((Date.now()-a)/1e3);process.stdout.write(`\r ${e.status} ${e.progress||0}% (${t}s) `);i=e.status}}});process.stdout.write("\n");if(s.status!=="succeeded"){throw new Error(`Job ${s.status}: ${s.error_message||s.error_code||"unknown error"}`)}c.saveJob(s.id,{createdAt:s.created_at,status:s.status,source:{filename:s.source_filename},language:s.language});return finalizeAzureOutput({job:s,format:n,output:r})}function finalizeAzureOutput({job:e,input:t,format:o,output:a,durationMs:i}){const s=azureSegmentsToCaptions(e.result_json?.segments||[]);let l;switch(o){case"srt":l=d(s);break;case"txt":l=u(s,{includeSpeakers:true});break;case"json":l=p(s);break;default:throw new Error(`Unknown format: ${o}`)}const c=A[o]||".txt";let h;if(a){h=r.resolve(a)}else if(t){const e=r.basename(t,r.extname(t));const o=e+c;h=r.resolve(r.dirname(t),o)}else{const t="asr-"+e.id+c;h=r.resolve(t)}n.writeFileSync(h,l,"utf8");const m=e.result_duration_sec?Math.round(e.result_duration_sec*1e3):i||0;console.log(`\n=== Done ===`);console.log(`Output: ${h}`);console.log(`Captions: ${s.length}`);console.log(`Duration: ${f(m)}`);console.log(`Engine: azure`);console.log(`Job ID: ${e.id}`);console.log(`Quota: ${e.quota_charged} charged`);if(s.length>0&&o!=="json"){console.log(`\n--- Preview ---`);for(const e of s.slice(0,3)){const t=f(e.startMs);const o=e.speakerId?`[${e.speakerId}] `:"";const n=e.text.length>60?`${e.text.slice(0,57)}...`:e.text;console.log(` ${t} ${o}${n}`)}if(s.length>3)console.log(` ... (${s.length-3} more)`)}return{outputPath:h,mode:"azure",duration:m/1e3,captionCount:s.length,jobId:e.id,quotaUsed:e.quota_charged||0}}e.exports={asrAzure:asrAzure,asrAzureResume:asrAzureResume,finalizeAzureOutput:finalizeAzureOutput,azureSegmentsToCaptions:azureSegmentsToCaptions,joinWords:joinWords,splitSegmentByWords:splitSegmentByWords}},3931:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const{API_BASE:a,ASR_DEFAULTS:i}=o(3282);const{getMediaInfo:s,extractAudioForAsr:l}=o(7656);const{uploadAsrAudio:c}=o(2040);const{downloadUrlToTempFile:d}=o(5764);const{recognize:u,detectMode:p,BASE64_MAX_BYTES:A,TASK_STATUS:f}=o(4142);const{formatSrt:h,formatPlainText:m,formatJson:g,buildCaptionsFromFlash:v,buildCaptionsFromSentence:y,buildCaptionsFromFile:b}=o(8217);const{FORMAT_EXTENSIONS:w,LANG_LABELS:x,formatDuration:S,formatSize:k}=o(4231);async function asrCloud(e,t){const{token:o,api:C=a,input:T,url:P,mic:E=false,mode:_=i.mode,lang:L=i.lang,format:I=i.format,output:B,speakers:D=false,speakerNumber:N=0}=e;const R=[T,P,E].filter(Boolean).length;if(R===0){throw new Error("No input specified. Provide one of:\n"+" --input <file> Local audio/video file\n"+" --url <url> Remote audio URL\n"+" --mic Record from microphone")}if(R>1){throw new Error("Specify only one input source: --input, --url, or --mic")}console.log("\n=== VoxFlow ASR ===");let F=T?r.resolve(T):null;let M=P;if(E){F=await handleMicInput();t.push(F)}if(M&&!F){console.log(`Input: ${M}`);console.log(`\nFetching remote URL...`);try{const e=await d(M,{onProgress:(e,t)=>{const o=(e/1024/1024).toFixed(1);if(t){const n=Math.round(e/t*100);process.stdout.write(`\r ${o} MB / ${(t/1024/1024).toFixed(1)} MB (${n}%) `)}else{process.stdout.write(`\r ${o} MB downloaded `)}}});process.stdout.write(`\n`);console.log(` OK (${(e.size/1024/1024).toFixed(1)} MB → ${e.filePath})`);F=e.filePath;t.push(F);M=null}catch(e){throw new Error(`Failed to fetch ${M}: ${e.message}`)}}try{if(F&&!n.existsSync(F)){throw new Error(`Input file not found: ${F}`)}let a=0;let i=0;let d=M||null;if(F){console.log(`Input: ${r.basename(F)}`);const e=await s(F);a=e.durationMs;i=n.statSync(F).size;const o=S(a);const c=k(i);console.log(`Duration: ${o}`);console.log(`Size: ${c}`);if(!e.hasAudio){throw new Error("Input file has no audio track.")}console.log(`\n[1/3] Extracting audio (16kHz mono WAV)...`);const d=await l(F);t.push(d.wavPath);a=d.durationMs;i=n.statSync(d.wavPath).size;F=d.wavPath;console.log(` OK (${k(i)}, ${S(a)})`)}else{console.log(`Input: ${P}`);console.log(`(Remote URL — duration will be detected by ASR API)`)}const R=!!d;const O=_==="auto"?p(a,R||!!F,i):_;console.log(`Mode: ${O}`);console.log(`Language: ${x[L]||L}`);console.log(`Format: ${I}`);if(F&&!d){const e=O==="flash"||O==="file"&&i>A||O==="sentence"&&i>A;if(e){console.log(`\n[2/3] Uploading to Supabase Storage...`);const e=await c(F,C,o);d=e.downloadUrl;console.log(` OK (${e.path})`)}else{console.log(`\n[2/3] Uploading... (skipped, using base64)`)}}else if(!F&&d){console.log(`\n[2/3] Uploading... (skipped, using remote URL)`)}console.log(`\n[3/3] ASR speech recognition (${O})...`);const $=Date.now();const z=await u({apiBase:C,token:o,mode:O,url:d,filePath:!d?F:undefined,durationMs:a,fileSize:i,lang:L,speakerDiarization:D,speakerNumber:N,wordInfo:I==="srt",onProgress:(e,t)=>{const o=e===f.WAITING?"Queued":e===f.PROCESSING?"Recognizing":"Unknown";process.stdout.write(`\r ${o}... (${Math.round(t/1e3)}s)`)}});const j=((Date.now()-$)/1e3).toFixed(1);console.log(`\n OK (${j}s)`);const U=z.audioTime||a/1e3||0;let W;switch(z.mode){case"flash":W=v(z.flashResult||[]);break;case"sentence":W=y(z.result,U,z.wordList);break;case"file":W=b(z.result,U);break;default:W=[{id:1,startMs:0,endMs:0,text:z.result||""}]}let q;switch(I){case"srt":q=h(W);break;case"txt":q=m(W,{includeSpeakers:D});break;case"json":q=g(W);break;default:throw new Error(`Unknown format: ${I}. Use: srt, txt, json`)}const G=w[I]||".txt";const X=e._initialCwd||process.cwd();let H;if(B){H=r.isAbsolute(B)?B:r.resolve(X,B)}else if(T){const e=r.isAbsolute(T)?T:r.resolve(X,T);const t=r.basename(e,r.extname(e));const o=t+G;H=r.join(r.dirname(e),o)}else if(E){const e="mic-"+Date.now()+G;H=r.join(X,e)}else{try{const e=new URL(P);const t=r.basename(e.pathname,r.extname(e.pathname))||"asr";const o=t+G;H=r.join(X,o)}catch{const e="asr-"+Date.now()+G;H=r.join(X,e)}}n.writeFileSync(H,q,"utf8");const Q=z.quota||{};const V=1;const Y=Q.remaining??"?";console.log(`\n=== Done ===`);console.log(`Output: ${H}`);console.log(`Captions: ${W.length}`);console.log(`Duration: ${S(a||(z.audioTime||0)*1e3)}`);console.log(`Mode: ${z.mode}`);console.log(`Quota: ${V} used, ${Y} remaining`);if(W.length>0&&I!=="json"){console.log(`\n--- Preview ---`);const e=W.slice(0,3);for(const t of e){const e=S(t.startMs);const o=t.speakerId?`[${t.speakerId}] `:"";const n=t.text.length>60?t.text.slice(0,57)+"...":t.text;console.log(` ${e} ${o}${n}`)}if(W.length>3){console.log(` ... (${W.length-3} more)`)}}return{outputPath:H,mode:z.mode,duration:a/1e3,captionCount:W.length,quotaUsed:V}}finally{for(const e of t){try{n.unlinkSync(e)}catch{}}}}async function resumePoll({apiBase:e,token:t,taskId:a,format:i,output:s}){console.log(`\n=== VoxFlow ASR — Resume Task ===`);console.log(`Task ID: ${a}`);const{pollTaskResult:l,TASK_STATUS:c}=o(4142);console.log(`Polling...`);const d=await l({apiBase:e,token:t,taskId:a,onProgress:(e,t)=>{const o=e===c.WAITING?"Queued":e===c.PROCESSING?"Recognizing":"?";process.stdout.write(`\r ${o}... (${Math.round(t/1e3)}s)`)}});console.log(`\n OK`);const u=b(d.result,d.audioTime);let p;switch(i){case"srt":p=h(u);break;case"txt":p=m(u);break;case"json":p=g(u);break;default:p=m(u)}const A=w[i]||".txt";const f=s?r.resolve(s):r.resolve(`task-${a}${A}`);n.writeFileSync(f,p,"utf8");console.log(`\n=== Done ===`);console.log(`Output: ${f}`);console.log(`Captions: ${u.length}`);console.log(`Duration: ${S((d.audioTime||0)*1e3)}`);return{outputPath:f,mode:"file",duration:d.audioTime,captionCount:u.length}}async function handleMicInput(){const{recordMic:e,checkRecAvailable:t}=o(132);const n=await t();if(!n.available){throw new Error(n.error)}console.log(`\nRecording from microphone...`);console.log(` Press Enter or Q to stop recording.`);console.log(` Max duration: 5 minutes.\n`);const{wavPath:r,durationMs:a,stopped:i}=await e({maxSeconds:300});console.log(`\n Recording ${i==="user"?"stopped":"finished"}: ${S(a)}`);return r}e.exports={asrCloud:asrCloud,resumePoll:resumePoll}},4231:(e,t,o)=>{"use strict";const n={"16k_zh":"Chinese (16kHz)","16k_en":"English (16kHz)","16k_zh_en":"Chinese-English (16kHz)","16k_ja":"Japanese (16kHz)","16k_ko":"Korean (16kHz)","16k_zh_dialect":"Chinese dialect (16kHz)","8k_zh":"Chinese (8kHz phone)","8k_en":"English (8kHz phone)"};const r={srt:".srt",txt:".txt",json:".json"};function formatDuration(e){if(!e||e<=0)return"0s";const t=Math.round(e/1e3);if(t<60)return`${t}s`;const o=Math.floor(t/60);const n=t%60;if(o<60)return`${o}m${n>0?n+"s":""}`;const r=Math.floor(o/60);const a=o%60;return`${r}h${a>0?a+"m":""}`}function formatSize(e){if(e<1024)return`${e} B`;if(e<1024*1024)return`${(e/1024).toFixed(1)} KB`;return`${(e/1024/1024).toFixed(1)} MB`}function resolveEngine(e){const{checkWhisperAvailable:t}=o(4178);if(e==="local"||e==="whisper"){const e=t();if(!e.available){throw new Error("Local whisper engine requires nodejs-whisper.\n"+"Install: npm install -g nodejs-whisper\n"+"Download a model: npx nodejs-whisper download\n"+"Or use: --engine cloud")}return"local"}if(e==="azure")return"azure";if(e==="cloud"||e==="tencent")return"cloud";if(e==="auto"){const{available:e}=t();return e?"local":"cloud"}return"cloud"}e.exports={LANG_LABELS:n,FORMAT_EXTENSIONS:r,formatDuration:formatDuration,formatSize:formatSize,resolveEngine:resolveEngine}},8630:(e,t,o)=>{"use strict";const n=o(9896);const{API_BASE:r,ASR_DEFAULTS:a}=o(3282);const{ApiError:i}=o(2768);const{resolveEngine:s}=o(4231);const{asrLocal:l}=o(1053);const{asrAzure:c,asrAzureResume:d,joinWords:u,splitSegmentByWords:p,azureSegmentsToCaptions:A}=o(9261);const{asrCloud:f,resumePoll:h}=o(3931);async function asr(e){let t=false;let r=[];const a=process.cwd();const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nASR cancelled.");for(const e of r){try{n.unlinkSync(e)}catch{}}process.exit(130)};process.on("SIGINT",sigintHandler);const{startBackgroundRefresh:i}=o(598);const s=i({api:e.api});try{return await _asr({...e,_initialCwd:a},r)}finally{s();process.removeListener("SIGINT",sigintHandler)}}async function _asr(e,t){const{token:o,api:n=r,mode:i=a.mode,lang:u=a.lang,format:p=a.format,output:A,taskId:m,jobId:g,engine:v="auto",model:y="base"}=e;if(g){return await d({apiBase:n,token:o,jobId:g,format:p,output:A})}if(m){return await h({apiBase:n,token:o,taskId:m,format:p,output:A,lang:u})}const b=s(v);if(b==="local"){return await l({input:e.input,format:p,output:A,model:y,lang:u})}if(b==="azure"){return await c({apiBase:n,token:o,input:e.input,lang:u,format:p,output:A,opts:e,tempFiles:t})}return await f(e,t)}async function handle(e){const{parseFlag:t,parseIntFlag:r,parseBoolFlag:a,runWithRetry:i}=o(5537);const{getToken:s,getTokenInfo:l}=o(598);const{API_BASE:c,ASR_DEFAULTS:d,getConfigDir:u}=o(3282);const{warnIfMissingFfmpeg:p}=o(9933);await p(u(),"asr");const A=t(e,"--api")||c;const f=t(e,"--token");const h=t(e,"--engine")||d.engine;const m=t(e,"--model")||d.model;if(h&&!["auto","local","cloud","whisper","tencent","azure"].includes(h)){console.error(`Error: --engine must be one of: auto, local, cloud, azure (got: "${h}")`);process.exit(1)}if(m&&!["tiny","base","small","medium","large"].includes(m)){console.error(`Error: --model must be one of: tiny, base, small, medium, large (got: "${m}")`);process.exit(1)}const g=t(e,"--input");const v=t(e,"--url");const y=a(e,"--mic");const b=t(e,"--mode")||d.mode;const w=t(e,"--lang")||t(e,"--language")||d.lang;const x=t(e,"--format")||d.format;const S=t(e,"--output","-o");const k=a(e,"--speakers");const C=r(e,"--speaker-number");const T=r(e,"--task-id");const P=t(e,"--job-id");const E=a(e,"--diarize")||k;if(b&&!["auto","sentence","flash","file"].includes(b)){console.error(`Error: --mode must be one of: auto, sentence, flash, file (got: "${b}")`);process.exit(1)}if(x&&!["srt","txt","json"].includes(x)){console.error(`Error: --format must be one of: srt, txt, json (got: "${x}")`);process.exit(1)}if(g){const e=o(6928);const t=e.resolve(g);if(!n.existsSync(t)){console.error(`Error: Input file not found: ${t}`);process.exit(1)}}const _=h==="local"||h==="whisper";let L;if(_){L=null}else if(f){L=f}else{L=await s({api:A});const e=l();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const I={token:L,api:A,input:g,url:v,mic:y,mode:b,lang:w,format:x,output:S,speakers:k,speakerNumber:C,taskId:T,jobId:P,diarize:E,engine:h,model:m};if(_){await asr(I)}else{await i(asr,I,A,f)}}const m={asr:{usage:"[opts]",description:"Transcribe audio/video to text (alias: transcribe)",aliasOf:"transcribe",options:[`--input <file> Local audio or video file to transcribe`,`--url <url> Remote audio URL — CLI fetches it locally then re-uploads (cloud only)`,`--mic Record from microphone (cloud only, requires sox)`,`--engine <type> auto (default) | local | cloud | azure`,`--model <name> Whisper model: tiny, base (default), small, medium, large`,`--mode <type> auto (default) | sentence | flash | file (cloud only)`,`--lang <model> Language. Tencent: 16k_zh (default), 16k_en, ... | Azure: ja-JP, en-US, zh-CN, ...`,`--format <fmt> Output format: srt (default), txt, json`,`--output <path> Output file path (default: <input>.<format>)`,`--speakers Enable speaker diarization (alias of --diarize)`,`--diarize Enable speaker diarization (azure)`,`--speaker-number <n> Expected number of speakers (with --speakers / --diarize)`,`--task-id <id> Resume polling an existing async task (Tencent — numeric)`,`--job-id <uuid> Resume polling an existing Azure job (UUID)`],examples:["voxflow asr --input recording.mp3","voxflow asr --input recording.mp3 --engine local --model small","voxflow asr --input video.mp4 --format srt --lang 16k_zh","voxflow asr --input meeting.mp4 --engine azure --lang ja-JP --diarize","voxflow asr --engine azure --job-id 6f3c2798-87bf-4367-bb4c-08b872e12bef","voxflow transcribe --input meeting.wav --speakers --speaker-number 3"]},transcribe:{alias:"asr",description:"Alias for asr"}};e.exports={asr:asr,handle:handle,meta:m,ApiError:i};e.exports._internals={joinWords:u,splitSegmentByWords:p,azureSegmentsToCaptions:A}},1053:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const{ASR_DEFAULTS:a}=o(3282);const{getMediaInfo:i,extractAudioForAsr:s}=o(7656);const{transcribeLocal:l}=o(4178);const{formatSrt:c,formatPlainText:d,formatJson:u}=o(8217);const{FORMAT_EXTENSIONS:p,formatDuration:A,formatSize:f}=o(4231);async function asrLocal(e){const{input:t,format:o=a.format,output:h,model:m="base",lang:g=a.lang}=e;console.log("\n=== VoxFlow ASR (Local Whisper) ===");if(!t){throw new Error("Local whisper engine requires --input <file>.\n"+"URL and microphone input are cloud-only features.\n"+"Use: voxflow asr --input <file> --engine local")}const v=r.resolve(t);if(!n.existsSync(v)){throw new Error(`Input file not found: ${v}`)}const y=await i(v);console.log(`Input: ${r.basename(v)}`);console.log(`Duration: ${A(y.durationMs)}`);console.log(`Engine: whisper (local)`);console.log(`Model: ${m}`);console.log(`\n[1/2] Extracting audio (16kHz mono WAV)...`);const b=await s(v);console.log(` OK (${f(n.statSync(b.wavPath).size)})`);console.log(`[2/2] Whisper local recognition...`);const w=Date.now();const x=await l(b.wavPath,{model:m,lang:g});const S=((Date.now()-w)/1e3).toFixed(1);console.log(` OK (${S}s, ${x.length} segments)`);try{n.unlinkSync(b.wavPath)}catch{}let k;switch(o){case"srt":k=c(x);break;case"txt":k=d(x);break;case"json":k=u(x);break;default:throw new Error(`Unknown format: ${o}. Use: srt, txt, json`)}const C=p[o]||".txt";let T;if(h){T=r.resolve(h)}else{const e=r.basename(t,r.extname(t))+C;T=r.resolve(r.dirname(t),e)}n.writeFileSync(T,k,"utf8");console.log(`\n=== Done ===`);console.log(`Output: ${T}`);console.log(`Captions: ${x.length}`);console.log(`Duration: ${A(y.durationMs)}`);console.log(`Engine: whisper (local, no quota used)`);if(x.length>0&&o!=="json"){console.log(`\n--- Preview ---`);const e=x.slice(0,3);for(const t of e){const e=A(t.startMs);const o=t.text.length>60?t.text.slice(0,57)+"...":t.text;console.log(` ${e} ${o}`)}if(x.length>3){console.log(` ... (${x.length-3} more)`)}}return{outputPath:T,mode:"local",duration:y.durationMs/1e3,captionCount:x.length,quotaUsed:0}}e.exports={asrLocal:asrLocal}},7823:(e,t,o)=>{const{getToken:n,clearToken:r,getTokenInfo:a,getFreshTokenInfo:i,terminalOtpLogin:s,buildPrintOnlyLoginUrl:l,acceptManualAuthPayload:c,readCachedToken:d}=o(598);const{API_BASE:u,DASHBOARD_URL:p}=o(3282);const{parseFlag:A,parseBoolFlag:f,runWithRetry:h}=o(5537);const{request:m}=o(2768);const g="https://www.voxflow.studio/app#voice-clone";async function readAllStdin(){const e=[];for await(const t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf8")}async function handleLogin(e){const t=A(e,"--api")||u;const o=f(e,"--otp");const r=f(e,"--print-url");const i=A(e,"--paste");if(r){const e=l(t);process.stdout.write(`${e}\n`);if(process.stderr.isTTY){process.stderr.write("\nNext step: open this URL in a browser, complete login,\n");process.stderr.write("then paste the auth payload back via:\n");process.stderr.write(" voxflow login --paste '<json-payload>'\n\n")}return}if(i!=null){let e=i;if(i==="-"){e=await readAllStdin();if(!e||!e.trim()){console.error("[31m✗ Login failed: stdin is empty. Pipe the JSON payload, e.g. echo '{...}' | voxflow login --paste -[0m");process.exit(1)}}const o=c(e,t);if(!o.ok){console.error(`[31m✗ Login failed: ${o.message}[0m`);process.exit(1)}console.log(`[32m✓ Logged in as ${o.info.email}[0m`);console.log(`Token expires: ${o.info.expiresAt}`);console.log(`API: ${o.info.api}`);return}if(o){await s(t)}else{console.log("Logging in...");const e=await n({api:t,force:true});void e}const d=a();if(d){console.log(`[32mLogged in as ${d.email}[0m`);console.log(`Token expires: ${d.expiresAt}`);console.log(`API: ${d.api}`)}}function handleLogout(){r();console.log("Logged out. Token cache cleared.")}async function fetchQuota(e){try{const t=d();if(!t)return null;const{status:o,data:n}=await m(`${e}/api/user/quota`,{method:"GET",headers:{Authorization:`Bearer ${t.access_token}`},timeoutMs:5e3});if(o!==200||n?.code!=="success")return null;return n.data||null}catch{return null}}function formatQuotaLines(e){const t=[];const o=e.subscription_tier||"free";const n=e.monthly||0;const r=e.used||0;const a=Math.max(0,n-r);const i=e.bonus||0;const s=e.remaining!=null?e.remaining:a+i;t.push(`Tier: ${o}`);t.push(`Quota: ${s.toLocaleString()} credits remaining`);t.push(` ${a.toLocaleString()} monthly + ${i.toLocaleString()} bonus (used ${r.toLocaleString()} this cycle)`);if(e.days_until_reset!=null){t.push(` monthly resets in ${e.days_until_reset} day${e.days_until_reset===1?"":"s"}`)}return t}async function handleStatus(e=[]){const t=f(e,"--json");const o=await i();const n=o?await fetchQuota(o.api||u):null;if(t){const e=o?{loggedIn:true,email:o.email,api:o.api,expiresAt:o.expiresAt,valid:o.valid,refreshHealth:o.refreshHealth,quota:n,dashboard:p}:{loggedIn:false,dashboard:p};console.log(JSON.stringify(e,null,2));return}if(!o){console.log("Not logged in. Run: voxflow login");return}console.log(`Email: ${o.email}`);console.log(`API: ${o.api}`);console.log(`Expires: ${o.expiresAt}`);console.log(`Valid: ${o.valid?"[32myes[0m":"[31mexpired[0m"}`);if(o.refreshHealth==="ok"){console.log(`Refresh: [32mhealthy[0m`)}else if(o.refreshHealth==="missing"){console.log(`Refresh: [33mmissing — next token expiry will require browser login[0m`)}else if(o.refreshHealth==="malformed"){console.log(`Refresh: [31mmalformed — run [36mvoxflow login[31m to recover cleanly[0m`)}if(n){for(const e of formatQuotaLines(n))console.log(e)}if(!o.valid){console.log("\nToken expired. Run: voxflow login")}console.log(`\nDashboard: ${p}`);console.log("Run [36mvoxflow dashboard[0m to open in browser.")}async function handleDashboard(){const e=p;console.log(`\nOpening dashboard: ${e}`);try{const t=(await Promise.resolve().then(o.bind(o,6257))).default;const n=await t(e);if(n&&typeof n.on==="function"){n.on("error",(()=>{console.log("[31mFailed to open browser. Visit manually:[0m");console.log(` ${e}`)}))}}catch{console.log("[31mFailed to open browser. Visit manually:[0m");console.log(` ${e}`)}}async function handleClone(e=[]){const t=o(9896);const r=o(6928);const i=A(e,"--input")||A(e,"-i");const s=A(e,"--name")||"";if(!i){const e=g;console.log("\nNo --input file provided. Opening web interface for recording...");console.log("Record or upload 30+ seconds of audio, then get a voice ID you can use anywhere.\n");console.log(`Opening: ${e}`);try{const t=(await Promise.resolve().then(o.bind(o,6257))).default;const n=await t(e);if(n&&typeof n.on==="function"){n.on("error",(()=>{console.log("[31mFailed to open browser. Visit manually:[0m");console.log(` ${e}`)}))}}catch{console.log("[31mFailed to open browser. Visit manually:[0m");console.log(` ${e}`)}console.log("\nOr provide a local audio file:");console.log(' voxflow clone --input my-voice.wav --name "My Voice"');return}const l=r.resolve(i);if(!t.existsSync(l)){console.error(`Error: File not found: ${l}`);process.exit(1)}const c=A(e,"--api")||u;const d=A(e,"--token");const{throwApiError:p,throwNetworkError:f}=o(2768);const{startSpinner:v}=o(5319);const y=d||await n({api:c});const b=a();if(b){console.log(`[32mLogged in as ${b.email}[0m`)}const w=t.readFileSync(l);const x=w.toString("base64");const S=(w.length/1024/1024).toFixed(1);if(w.length>10*1024*1024){console.error(`Error: File too large (${S}MB). Maximum is 10MB.`);process.exit(1)}const k=s||r.basename(l,r.extname(l));console.log(`\nCloning voice from: ${r.basename(l)} (${S}MB)`);console.log(`Voice name: ${k}`);async function doClone(e){const t=v("Cloning voice");let o,n;try{({status:o,data:n}=await m(`${c}/api/voice/clone`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`}},{audioData:x,voiceName:k}))}catch(e){t.stop("");f(e,c)}t.stop("");if(o===401){p(401,n,"voice clone")}if(o!==200||n?.code!=="success"){const e=n?.message||`Clone failed (HTTP ${o})`;console.error(`[31mError: ${e}[0m`);if(n?.code==="clone_limit_exceeded"){console.error("Tip: Delete unused clones at https://www.voxflow.studio/app#voice-clone")}process.exit(1)}const r=n.voiceId||n.data?.voiceId||n.data?.voice_id||"unknown";console.log(`\n[32mVoice cloned successfully![0m`);console.log(`Voice ID: [36m${r}[0m`);console.log(`\nUse it in any command:`);console.log(` voxflow say "你好" --voice ${r}`);console.log(` voxflow narrate --input doc.md --voice ${r}`);console.log(` voxflow podcast "topic" --voice ${r}`)}await h(doClone,{token:y},c,d)}const v={login:{usage:"[--otp] [--print-url] [--paste <json>]",description:"Login via browser (default), terminal OTP, or non-interactive paste (for AI agents)",options:["--otp Login via email + verification code in terminal (no browser)","--print-url Print the login URL and exit (no listener) — for AI agents that hand the URL to a human","--paste <json|-> Accept the auth payload from a flag (or `-` to read stdin) — pairs with --print-url"],examples:["voxflow login # browser flow (interactive)","voxflow login --otp # terminal OTP (no browser)","voxflow login --print-url # AI agent: print URL, hand to user",'voxflow login --paste \'{"access_token":"..."}\' # AI agent: feed back the JSON the user copied']},logout:{usage:"",description:"Clear cached token"},status:{usage:"[--json]",description:"Show login status and token info",options:["--json Output machine-readable JSON (for scripts/CI)"]},dashboard:{usage:"",description:"Open Web dashboard in browser"},clone:{usage:"[--input <file>] [--name <name>]",description:"Clone your voice from an audio file, or open web UI to record",options:["--input <file> Audio file (wav/mp3, 30s+) to clone from","--name <name> Voice name (default: filename)"]}};e.exports={handleLogin:handleLogin,handleLogout:handleLogout,handleStatus:handleStatus,handleDashboard:handleDashboard,handleClone:handleClone,meta:v,_test:{fetchQuota:fetchQuota,formatQuotaLines:formatQuotaLines,readAllStdin:readAllStdin}}},220:(e,t,o)=>{const n=o(9896);const r=o(6928);const{DUB_DEFAULTS:a}=o(3282);const{ApiError:i}=o(2768);const{buildWav:s}=o(7188);const{parseSrt:l}=o(8217);const{buildTimelineAudio:c,msToBytes:d,BYTES_PER_MS:u}=o(9167);const{synthesizeTTS:p}=o(1428);function parseVoicesMap(e){if(!n.existsSync(e)){throw new Error(`Voices map file not found: ${e}`)}let t;try{t=JSON.parse(n.readFileSync(e,"utf8"))}catch(e){throw new Error(`Invalid JSON in voices map: ${e.message}`)}if(typeof t!=="object"||t===null||Array.isArray(t)){throw new Error('Voices map must be a JSON object: { "SpeakerName": "voiceId", ... }')}for(const[e,o]of Object.entries(t)){if(typeof o!=="string"||o.trim().length===0){throw new Error(`Invalid voice ID for speaker "${e}": must be a non-empty string`)}}return t}async function synthesizeCaption(e,t,o,n,r,a,i,s){const l=await p({apiBase:e,token:t,text:o,voiceId:n,speed:r??1,format:a||"pcm",index:i,total:s});const c=l.audio.length/u;console.log(` OK (${(l.audio.length/1024).toFixed(0)} KB, ${(c/1e3).toFixed(1)}s)`);return{audio:l.audio,quota:l.quota,durationMs:c}}async function dub(e){let t=false;const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nDubbing cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _dub(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _dub(e){const t=e.srt;if(!t){throw new Error("No SRT file provided. Usage: voxflow dub --srt <file.srt>")}const i=r.resolve(t);if(!n.existsSync(i)){throw new Error(`SRT file not found: ${i}`)}const s=n.readFileSync(i,"utf8");const d=l(s);if(d.length===0){throw new Error("SRT file contains no valid captions")}const u=e.voice||a.voice;const p=e.speed??a.speed;const A=e.speedAuto||false;const f=a.toleranceMs;const h=e.api;const m=e.token;const g=e.patch;const v=[];let y=null;if(e.voicesMap){y=parseVoicesMap(r.resolve(e.voicesMap))}let b=e.output;const w=!!e.video;const x=w?".mp4":".wav";if(!b){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);b=r.resolve(`dub-${e}${x}`)}console.log("\n=== VoxFlow Dub ===");console.log(`SRT: ${t} (${d.length} captions)`);console.log(`Voice: ${u}${y?` + voices map (${Object.keys(y).length} speakers)`:""}`);console.log(`Speed: ${p}${A?" (auto-compensate)":""}`);if(w)console.log(`Video: ${e.video}`);if(e.bgm)console.log(`BGM: ${e.bgm} (ducking: ${e.ducking??a.ducking})`);if(g!=null)console.log(`Patch: caption #${g}`);console.log(`Output: ${b}`);if(g!=null){return _dubPatch(e,d,b,v,y)}console.log(`\n[1/2] Synthesizing TTS audio (${d.length} captions)...`);const S=[];let k=null;let C=0;for(let e=0;e<d.length;e++){const t=d[e];const o=t.endMs-t.startMs;let n=u;if(y&&t.speakerId&&y[t.speakerId]){n=y[t.speakerId]}let r=await synthesizeCaption(h,m,t.text,n,p,"pcm",e,d.length);C++;k=r.quota;if(A&&r.durationMs>o+f){const a=r.durationMs/o;if(a<=2){const i=Math.min(p*a,2);process.stdout.write(` ↳ Re-synth #${t.id} (${(r.durationMs/1e3).toFixed(1)}s > ${(o/1e3).toFixed(1)}s, speed: ${i.toFixed(2)})...`);r=await synthesizeCaption(h,m,t.text,n,i,"pcm",e,d.length);C++;k=r.quota}else{const i=`Caption #${t.id}: audio too long (${(r.durationMs/1e3).toFixed(1)}s for ${(o/1e3).toFixed(1)}s slot, alpha=${a.toFixed(1)}). Consider shortening text.`;v.push(i);console.log(` ⚠ OVERFLOW: ${i}`);const s=await synthesizeCaption(h,m,t.text,n,2,"pcm",e,d.length);C++;k=s.quota;r=s}}S.push({startMs:t.startMs,endMs:t.endMs,audioBuffer:r.audio})}console.log("\n[2/2] Building timeline audio...");const{wav:T,duration:P}=c(S);const E=r.extname(b).toLowerCase();const _=!w&&E!==".wav";const L=w?b.replace(/\.[^.]+$/,".tmp.wav"):_?b.slice(0,-E.length)+".tmp.wav":b;const I=r.dirname(L);n.mkdirSync(I,{recursive:true});n.writeFileSync(L,T);const B=b.replace(/\.[^.]+$/,".txt");const D=d.map((e=>{const t=e.speakerId?`|${e.speakerId}`:"";const o=y&&e.speakerId&&y[e.speakerId]?`|${y[e.speakerId]}`:"";return`[${e.id}${t}${o}] ${e.text}`})).join("\n\n");n.writeFileSync(B,D,"utf8");const N=w||e.bgm||_;if(N){const{checkFfmpeg:t,mergeAudioVideo:r,mixWithBgm:i,convertAudioFormat:s}=o(9933);const l=await t();if(!l.available){throw new Error("ffmpeg is required for BGM mixing / video merging / audio format conversion. Install it:\n"+" macOS: brew install ffmpeg\n"+" Ubuntu: sudo apt install ffmpeg\n"+" Windows: https://ffmpeg.org/download.html")}let c=L;if(e.bgm){const t=L.replace(".tmp.wav","-mixed.tmp.wav").replace(/(?<!\.tmp)\.wav$/,"-mixed.wav");console.log(` Mixing BGM (ducking: ${e.ducking??a.ducking})...`);await i(L,e.bgm,t,{ducking:e.ducking??a.ducking});c=t;if(!w){n.copyFileSync(c,L);try{n.unlinkSync(c)}catch{}c=L}}if(w){console.log(" Merging with video...");await r(e.video,c,b);try{if(L!==b)n.unlinkSync(L);if(e.bgm){const e=L.replace(".tmp.wav","-mixed.tmp.wav").replace(/(?<!\.tmp)\.wav$/,"-mixed.wav");if(n.existsSync(e))n.unlinkSync(e)}}catch{}}if(_&&!w){await s(L,b);try{n.unlinkSync(L)}catch{}}}console.log(`\n=== Done ===`);console.log(`Output: ${b} (${(n.statSync(b).size/1024).toFixed(1)} KB)`);console.log(`Duration: ${P.toFixed(1)}s`);console.log(`Transcript: ${B}`);console.log(`Captions: ${d.length}`);console.log(`Quota: ${C} used, ${k?.remaining??"?"} remaining`);if(v.length>0){console.log(`\nWarnings (${v.length}):`);for(const e of v){console.log(` ⚠ ${e}`)}}return{outputPath:b,textPath:B,duration:P,quotaUsed:C,segmentCount:d.length,warnings:v}}async function _dubPatch(e,t,o,r,i){const l=e.patch;const c=e.api;const p=e.token;const A=e.voice||a.voice;const f=e.speed??a.speed;const h=t.findIndex((e=>e.id===l));if(h===-1){throw new Error(`Caption #${l} not found in SRT. Available IDs: ${t.map((e=>e.id)).join(", ")}`)}const m=t[h];const g=o.replace(/\.[^.]+$/,".wav");if(!n.existsSync(g)){throw new Error(`Patch mode requires an existing output file. `+`Run a full dub first, then use --patch to update individual captions.`)}let v=A;if(i&&m.speakerId&&i[m.speakerId]){v=i[m.speakerId]}console.log(`\n[Patch] Re-synthesizing caption #${l}: "${m.text.slice(0,40)}..."`);const y=await synthesizeCaption(c,p,m.text,v,f,"pcm",0,1);const b=n.readFileSync(g);const w=b.subarray(44);const x=d(m.startMs);const S=d(m.endMs);w.fill(0,x,Math.min(S,w.length));const k=Math.min(y.audio.length,S-x,w.length-x);if(k>0){y.audio.copy(w,x,0,k)}const{wav:C}=s([w],0);n.writeFileSync(g,C);console.log(`\n=== Patch Done ===`);console.log(`Updated: caption #${l} in ${g}`);console.log(`Quota: 1 used, ${y.quota?.remaining??"?"} remaining`);return{outputPath:g,textPath:g.replace(/\.wav$/i,".txt"),duration:w.length/(u*1e3),quotaUsed:1,segmentCount:1,warnings:r}}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,validateSpeed:i,runWithRetry:s}=o(5537);const{getToken:l,getTokenInfo:c}=o(598);const{API_BASE:d,getConfigDir:u}=o(3282);const{warnIfMissingFfmpeg:p}=o(9933);await p(u(),"dub");const A=t(e,"--api")||d;const f=t(e,"--token");const h=t(e,"--srt");const m=t(e,"--video");const g=t(e,"--output","-o");const v=r(e,"--speed");const y=r(e,"--ducking");const b=n(e,"--patch");if(!h&&!a(e,"--help")){console.error("Error: --srt <file> is required. Usage: voxflow dub --srt <file.srt>");process.exit(1)}if(h){const e=o(9896);const t=o(6928);const n=t.resolve(h);if(!e.existsSync(n)){console.error(`Error: SRT file not found: ${n}`);process.exit(1)}}if(m){const e=o(9896);const t=o(6928);const n=t.resolve(m);if(!e.existsSync(n)){console.error(`Error: Video file not found: ${n}`);process.exit(1)}}const w=t(e,"--voices");if(w){const e=o(9896);const t=o(6928);const n=t.resolve(w);if(!e.existsSync(n)){console.error(`Error: Voices map file not found: ${n}`);process.exit(1)}}const x=t(e,"--bgm");if(x){const e=o(9896);const t=o(6928);const n=t.resolve(x);if(!e.existsSync(n)){console.error(`Error: BGM file not found: ${n}`);process.exit(1)}}i(e,v);if(g){const e=m?[".mp4",".mkv",".mov"]:[".wav",".mp3"];const t=e.some((e=>g.toLowerCase().endsWith(e)));if(!t){const t=e.join(", ");console.error(`Error: --output path must end with ${t}`);process.exit(1)}}if(y!==undefined){if(isNaN(y)||y<0||y>1){console.error(`Error: --ducking must be between 0 and 1.0 (got: "${t(e,"--ducking")}")`);process.exit(1)}}let S;if(f){S=f}else{S=await l({api:A});const e=c();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const k={token:S,api:A,srt:h,video:m,output:g,speed:v,patch:b,voice:t(e,"--voice"),voicesMap:w,speedAuto:a(e,"--speed-auto"),bgm:x,ducking:y};await s(dub,k,A,f)}const A={dub:{usage:"[opts]",description:"Dub video/audio from SRT subtitles (timeline-aligned TTS)",options:[`--srt <file> SRT subtitle file (required)`,`--video <file> Video file — merge dubbed audio into video`,`--voice <id> Default TTS voice ID (default: ${a.voice})`,`--voices <file> JSON speaker→voiceId map for multi-speaker dubbing`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--speed-auto Auto-adjust speed when audio overflows time slot`,`--bgm <file> Background music file to mix in`,`--ducking <n> BGM volume ducking 0-1.0 (default: ${a.ducking})`,`--patch <id> Re-synthesize a single caption by ID (patch mode)`,`--output <path> Output file path (default: ./dub-<timestamp>.wav)`],examples:["voxflow dub --srt subtitles.srt","voxflow dub --srt subtitles.srt --video input.mp4 --output dubbed.mp4","voxflow dub --srt subtitles.srt --voices speakers.json --speed-auto","voxflow dub --srt subtitles.srt --bgm music.mp3 --ducking 0.3","voxflow dub --srt subtitles.srt --patch 5 --output dub-existing.wav"]}};e.exports={dub:dub,handle:handle,meta:A,ApiError:i,_test:{parseVoicesMap:parseVoicesMap}}},6352:(e,t,o)=>{const n=o(9896);const r=o(6928);const{EXPLAIN_DEFAULTS:a}=o(3282);const{request:i,throwApiError:s,throwNetworkError:l}=o(2768);const{buildWav:c}=o(7188);const{BYTES_PER_MS:d}=o(9167);const{mergeAudioVideo:u}=o(9933);const{startSpinner:p}=o(5319);const A={title:"What is React?",language:"en",style:"modern",scenes:[{type:"title",title:"What is React?",subtitle:"A JavaScript library for building user interfaces",narration:"Welcome to this quick explainer on React, one of the most popular frontend libraries in the world."},{type:"bullets",heading:"Core Concepts",bullets:["Component-based architecture","Virtual DOM for efficient updates","Declarative UI with JSX","Unidirectional data flow"],narration:"React is built around several core concepts. First, everything is a component. Second, it uses a virtual DOM for efficient rendering. Third, you write declarative UI with JSX syntax. And fourth, data flows in one direction, from parent to child."},{type:"bullets",heading:"Why Use React?",bullets:["Massive ecosystem and community","Reusable component library","Excellent developer tools"],narration:"So why choose React? It has a massive ecosystem with thousands of libraries. You can build reusable component libraries. And the developer tools are some of the best in the industry."},{type:"summary",heading:"Key Takeaways",points:["React makes UI development predictable and efficient","Components are the building blocks of React apps","The virtual DOM optimizes rendering performance"],narration:"To summarize: React makes UI development predictable and efficient. Components are the fundamental building blocks. And the virtual DOM ensures your app stays fast, even as it grows. Thanks for watching!"}]};async function synthesizeScene(e,t,o,n,r,a,c){process.stdout.write(` TTS scene [${a+1}/${c}]...`);let u,p;try{({status:u,data:p}=await i(`${e}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}},{text:o,voiceId:n,speed:r,volume:1}))}catch(t){console.log(" FAIL");l(t,e)}if(u!==200||p.code!=="success"){console.log(" FAIL");s(u,p,`TTS scene ${a+1}`)}const A=Buffer.from(p.audio,"base64");const f=Math.round(A.length/d);console.log(` OK (${(A.length/1024).toFixed(0)} KB, ${(f/1e3).toFixed(1)}s)`);return{pcm:A,durationMs:f,quota:p.quota}}function buildNarrationWav(e,t){const o=c(e,t);return o.wav}async function generateScript(e,t,o,{language:n="en",sceneCount:r=5,style:a="modern"}={}){let s,l;try{({status:s,data:l}=await i(`${e}/api/llm/generate-explain-script`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{topic:o,language:n,sceneCount:r,style:a}))}catch(e){console.log(` ⚠ LLM request failed: ${e.message}`);console.log(" Falling back to demo script template.");return buildFallbackScript(o,a)}if(s!==200||l.code!=="success"||!l.script){const e=l?.message||`HTTP ${s}`;console.log(` ⚠ LLM generation failed: ${e}`);console.log(" Falling back to demo script template.");return buildFallbackScript(o,a)}console.log(` ✓ Script generated: "${l.script.title}" (${l.script.scenes.length} scenes)`);return l.script}function buildFallbackScript(e,t){const o={...A,title:e,style:t};o.scenes=[{...A.scenes[0],title:e,narration:`Welcome to this explainer on ${e}.`},...A.scenes.slice(1)];return o}function findRemotionDir(){let e=__dirname;for(let t=0;t<5;t++){const t=r.join(e,"remotion");if(n.existsSync(r.join(t,"package.json"))){return t}e=r.dirname(e)}return null}function isRemotionAvailable(){const e=findRemotionDir();if(!e)return false;return n.existsSync(r.join(e,"node_modules","remotion"))}async function renderVideo(e,t,a,i){const s=findRemotionDir();if(!s){throw new Error("Remotion directory not found. Ensure remotion/ exists at the repo root with dependencies installed.")}const l=n.mkdtempSync(r.join(o(857).tmpdir(),"voxflow-explain-"));const c=r.join(l,"props.json");const d={fps:30,script:e,scenes:t};n.writeFileSync(c,JSON.stringify(d,null,2));const u=r.join(s,"render.ts");const{execFile:p}=o(5317);const A=r.join(s,"node_modules",".bin","ts-node");return new Promise(((e,t)=>{const o=p(A,[u,"--props",c,"--output",a],{cwd:s,maxBuffer:50*1024*1024,timeout:6e5},((o,r,i)=>{try{n.unlinkSync(c);n.rmdirSync(l)}catch{}if(o){t(new Error(`Remotion render failed: ${o.message}\n${i}`));return}try{const t=r.trim().split("\n");const o=t[t.length-1];const n=JSON.parse(o);e(n)}catch{e({output:a})}}));if(o.stderr&&i){let e="";o.stderr.on("data",(t=>{e+=t.toString();const o=e.split("\n");e=o.pop()||"";for(const e of o){try{const t=JSON.parse(e);if(t.type==="progress"&&i){i(t.percent)}}catch{}}}))}}))}async function explain(e){const{token:t,api:o,topic:r="demo",voice:i=a.voice,style:s=a.style,language:l=a.language,speed:c=a.speed,scenes:d=a.sceneCount,audioOnly:f=false,cloud:h=false}=e;if(e.output&&e.output.endsWith(".mp3")){throw new Error("MP3 output is not supported for explain. Use .wav or .mp4")}const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{let m;const g=r==="demo"||r==="Demo";if(g){console.log("\n[1/4] Using demo script (hardcoded)...");m={...A,style:s}}else{console.log("\n[1/4] Generating script via LLM...");console.log(` Topic: "${r}" (${l}, ${d} scenes)`);m=await generateScript(o,t,r,{language:l,sceneCount:d,style:s})}console.log(` Script: ${m.scenes.length} scenes, style: ${m.style}`);console.log(`\n[2/4] Synthesizing narration (${m.scenes.length} scenes)...`);const v=[];const y=[];let b=null;let w=null;for(let e=0;e<m.scenes.length;e++){const n=m.scenes[e];const r=await synthesizeScene(o,t,n.narration,i,c,e,m.scenes.length);v.push(r.pcm);if(!b&&r.quota)b=r.quota;w=r.quota;y.push({scene:n,durationMs:r.durationMs,audioSrc:""})}const x=buildNarrationWav(v,a.silence);const S=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);let k;if(f||!isRemotionAvailable()){if(!f&&!isRemotionAvailable()){console.log("\n[3/4] Remotion not available. Falling back to audio-only output.");console.log(" To enable video rendering, install Remotion:");console.log(" cd remotion && npm install")}else{console.log("\n[3/4] Building audio-only output...")}k=e.output||`explain-${S}.wav`;n.writeFileSync(k,x)}else{if(h){console.log("\n[3/4] Cloud rendering coming in Phase 2. Using local render.")}k=e.output||`explain-${S}.mp4`;const t=p(h?" Rendering video...":"\n[3/4] Rendering video...");try{const e=k+".silent.mp4";await renderVideo(m,y,e,(e=>{t.update(` Rendering video... ${e}%`)}));t.stop("OK");console.log(" Merging narration audio...");const o=k+".narration.wav";n.writeFileSync(o,x);await u(e,o,k);try{n.unlinkSync(e)}catch{}try{n.unlinkSync(o)}catch{}console.log(" Audio merged OK")}catch(e){t.stop("FAIL");console.log(` Video render failed: ${e.message}`);console.log(" Falling back to audio-only...");k=k.replace(/\.mp4$/,".wav");n.writeFileSync(k,x)}}const C=k.replace(/\.(mp4|wav)$/,".json");n.writeFileSync(C,JSON.stringify(m,null,2));const T=y.reduce(((e,t)=>e+t.durationMs),0);const P=n.statSync(k);const E=(P.size/(1024*1024)).toFixed(1);const _=formatDuration(T);console.log("\n[4/4] Done!");console.log(`\n=== Output ===`);console.log(` File: ${k} (${E} MB, ${_})`);console.log(` Script: ${C}`);console.log(` Scenes: ${m.scenes.length}`);console.log(` Style: ${m.style}`);if(w){const e=b&&w?b.remaining-w.remaining:m.scenes.length*100;console.log(` Quota: ${e} used, ${w.remaining??"?"} remaining`)}return{outputPath:k,scriptPath:C,duration:T}}finally{process.removeListener("SIGINT",sigintHandler)}}function formatDuration(e){const t=Math.round(e/1e3);const o=Math.floor(t/60);const n=t%60;if(o===0)return`${n}s`;return`${o}m${n.toString().padStart(2,"0")}s`}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,validateSpeed:i,runWithRetry:s}=o(5537);const{getToken:l,getTokenInfo:c}=o(598);const{API_BASE:d}=o(3282);const u=t(e,"--api")||d;const p=t(e,"--token");const A=r(e,"--speed");const f=t(e,"--output","-o");const h=n(e,"--scenes");i(e,A);if(f){const e=[".wav",".mp3",".mp4"];const t=e.some((e=>f.toLowerCase().endsWith(e)));if(!t){console.error("Error: --output path must end with .wav, .mp3, or .mp4");process.exit(1)}}const m=t(e,"--style");if(m&&!["modern","playful","corporate","chalkboard"].includes(m)){console.error(`Error: --style must be one of: modern, playful, corporate, chalkboard (got: "${m}")`);process.exit(1)}if(h!==undefined){if(isNaN(h)||h<3||h>12){console.error(`Error: --scenes must be between 3 and 12 (got: "${t(e,"--scenes")}")`);process.exit(1)}}let g;if(p){g=p}else{g=await l({api:u});const e=c();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const v={token:g,api:u,topic:t(e,"--topic")||undefined,voice:t(e,"--voice")||undefined,style:m||undefined,language:t(e,"--language")||undefined,output:f,speed:A,scenes:h,audioOnly:a(e,"--audio-only"),cloud:a(e,"--cloud")};await s(explain,v,u,p)}const f={explain:{usage:"[opts]",description:"Generate an AI explainer video from a topic",options:[`--topic <text> Topic to explain (use "demo" for built-in demo)`,`--style <style> Visual style: modern (default), playful, corporate, chalkboard`,`--language <code> Script language: en (default), zh, ja, ko, etc.`,`--voice <id> TTS voice ID (default: ${a.voice})`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--scenes <n> Number of scenes, 3-12 (default: ${a.sceneCount})`,`--audio-only Skip video render, output WAV narration only`,`--cloud Render on cloud instead of local Remotion`,`--output <path> Output file path (default: ./explain-<timestamp>.mp4)`],examples:['voxflow explain --topic "What is React?"',"voxflow explain --topic demo --output demo.mp4",'voxflow explain --topic "区块链入门" --style chalkboard --voice v-male-Bk7vD3xP','voxflow explain --topic "Machine Learning" --audio-only']}};e.exports={explain:explain,handle:handle,meta:f}},1104:(e,t,o)=>{"use strict";const n=o(857);const{execFile:r}=o(5317);const a=o(3785);const i=o(8330);const s="VoxFlowStudio/FlowStudio";const l=`https://github.com/${s}`;const c={bug:{prefix:"[CLI Bug] ",labels:"type/bug,area/cli",template:"cli-bug.md"},feature:{prefix:"[CLI Feature] ",labels:"type/feat,area/cli",template:"cli-feature.md"},general:{prefix:"[CLI] ",labels:"area/cli",template:null}};function systemInfo(){return[`**CLI version:** ${i.version}`,`**OS:** ${process.platform} ${n.arch()} (${n.release()})`,`**Node:** ${process.version}`].join("\n")}function buildIssueUrl({type:e,title:t,body:o}){const n=c[e]||c.general;const r=new URLSearchParams;r.set("title",n.prefix+t);r.set("body",(o?o+"\n\n":"")+"---\n\n"+systemInfo());r.set("labels",n.labels);if(n.template)r.set("template",n.template);return`${l}/issues/new?${r.toString()}`}function ghSubmit({type:e,title:t,body:o}){return new Promise((n=>{const a=c[e]||c.general;const i=a.prefix+t;const l=(o?o+"\n\n":"")+"---\n\n"+systemInfo();const d=["issue","create","--repo",s,"--title",i,"--body",l,"--label",a.labels];r("gh",d,{timeout:15e3},((e,t)=>{if(e){n(null);return}n((t||"").trim()||null)}))}))}async function collectInfo(e){const t=a.createInterface({input:process.stdin,output:process.stderr});const ask=e=>new Promise((o=>t.question(e,(e=>o(e.trim())))));try{process.stderr.write("\n VoxFlow CLI Feedback\n\n");let t=e;if(!t){process.stderr.write(" Type:\n 1) Bug report\n 2) Feature request\n 3) General feedback\n\n");const e=await ask(" Choice [1/2/3]: ");t={1:"bug",2:"feature",3:"general"}[e]||"general"}const o=await ask("\n Title: ");if(!o){process.stderr.write(" Title is required.\n\n");return null}process.stderr.write("\n Description (empty line to finish):\n");const n=[];let r;do{r=await ask(" > ");if(r)n.push(r)}while(r!=="");return{type:t,title:o,body:n.join("\n")}}finally{t.close()}}async function submitOrFallback({type:e,title:t,body:n},r){const a=await ghSubmit({type:e,title:t,body:n});if(a){process.stderr.write(`\n ✓ Issue created: ${a}\n\n`);process.stdout.write(a+"\n");return}const i=buildIssueUrl({type:e,title:t,body:n});if(r){process.stdout.write(i+"\n")}else{process.stderr.write("\n Opening browser...\n\n");const e=(await Promise.resolve().then(o.bind(o,6257))).default;await e(i)}}async function handle(e){const{parseBoolFlag:t,parseFlag:n}=o(5537);let r=null;if(t(e,"--bug"))r="bug";else if(t(e,"--feature"))r="feature";else if(t(e,"--general"))r="general";const a=n(e,"--title");const i=n(e,"--body");const s=t(e,"--print-url");if(a){await submitOrFallback({type:r||"general",title:a,body:i||""},s);return}if(!process.stdin.isTTY){process.stderr.write("voxflow feedback requires an interactive terminal.\n"+'For non-interactive use: voxflow feedback --bug --title "..." --body "..."\n');process.exit(1)}const l=await collectInfo(r);if(!l)return;await submitOrFallback(l,s)}const d={feedback:{usage:'[--bug | --feature | --general] [--title "..."] [--body "..."] [--print-url]',description:"Submit a bug report or feature request to GitHub",options:["--bug Pre-fill as bug report","--feature Pre-fill as feature request","--general Pre-fill as general feedback","--title <text> Title (enables non-interactive / AI mode)","--body <text> Description body","--print-url Print URL instead of opening browser (fallback only)"],examples:["voxflow feedback","voxflow feedback --bug",'voxflow feedback --bug --title "asr crashes on wav files" --body "Steps: ..."']}};e.exports={buildIssueUrl:buildIssueUrl,systemInfo:systemInfo,ghSubmit:ghSubmit,handle:handle,meta:d}},6794:(e,t,o)=>{const n=o(9896);const r=o(6928);const{request:a,throwApiError:i,throwNetworkError:s,ApiError:l}=o(2768);const{startSpinner:c}=o(5319);const d=["768:768","768:1024","1024:768","1024:1024","720:1280","1280:720","768:1280","1280:768","1080:1920","1920:1080"];async function generateHunyuanImage(e){let t=false;const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nImage generation cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _generate(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _generate(e){const t=e.prompt;if(!t||t.trim().length===0){throw new Error('No prompt provided. Usage: voxflow image "your prompt here"')}if(t.length>1e3){throw new Error("Prompt too long (max 1000 characters)")}const o=e.resolution||"1024:1024";const l=e.api;const d=e.token;let u=e.output;if(!u){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);u=r.resolve(`hunyuan-${e}.png`)}console.log("\n=== VoxFlow Image (Hunyuan) ===");console.log(`Prompt: ${t.length>60?t.slice(0,57)+"...":t}`);console.log(`Resolution: ${o}`);console.log(`Output: ${u}`);const p=c("\n[1/1] Generating image (10-30s)...");let A,f;try{({status:A,data:f}=await a(`${l}/api/hunyuan/text-to-image`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${d}`},timeoutMs:18e4},{prompt:t.trim(),resolution:o,logoAdd:0,rspImgType:"base64"}))}catch(e){p.stop("FAIL");s(e,l)}if(A!==200||f.code!=="success"){p.stop("FAIL");i(A,f,"Image generation")}if(!f.image){p.stop("FAIL");throw new Error("API returned no image data")}const h=Buffer.from(f.image,"base64");p.stop("OK");const m=r.dirname(u);n.mkdirSync(m,{recursive:true});n.writeFileSync(u,h);console.log("\n=== Done ===");console.log(`Output: ${u} (${(h.length/1024).toFixed(1)} KB)`);if(f.imageUrl)console.log(`COS URL: ${f.imageUrl}`);console.log(`RequestId: ${f.requestId||"(none)"}`);if(f.quota){console.log(`Quota: ${f.quota.used??"?"}/${f.quota.daily??"?"}, remaining ${f.quota.remaining??"?"}`)}return{outputPath:u,imageUrl:f.imageUrl||null,requestId:f.requestId,quota:f.quota}}async function handle(e){const{parseFlag:t,runWithRetry:n}=o(5537);const{getToken:r,getTokenInfo:a}=o(598);const{API_BASE:i}=o(3282);const s=t(e,"--api")||i;const l=t(e,"--token");let c=t(e,"--prompt");if(!c){const t=new Set(["--prompt","--resolution","--output","-o","--token","--api"]);for(let o=0;o<e.length;o++){if(e[o].startsWith("-")){if(t.has(e[o]))o++;continue}c=e[o];break}}if(!c){console.error('Error: No prompt provided. Usage: voxflow image "your prompt here"');process.exit(1)}const u=t(e,"--resolution");if(u&&!d.includes(u)){console.error(`Error: --resolution must be one of: ${d.join(", ")} (got: "${u}")`);process.exit(1)}const p=t(e,"--output","-o");if(p&&!p.toLowerCase().endsWith(".png")){console.error("Error: --output path must end with .png");process.exit(1)}let A;if(l){A=l}else{A=await r({api:s});const e=a();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const f={token:A,api:s,prompt:c,resolution:u||undefined,output:p};await n(generateHunyuanImage,f,s,l)}const u={image:{usage:"<prompt>",description:"Generate an image from text via Hunyuan (text-to-image)",options:["<prompt> Image description (positional arg or --prompt)","--prompt <text> Image description (alternative to positional)","--resolution <W:H> Resolution, colon-separated (default: 1024:1024)"," Options: 768:768, 1024:1024, 1024:768, 768:1024,"," 1280:720, 720:1280, 1920:1080, 1080:1920","-o, --output <path> Output PNG path (default: ./hunyuan-<timestamp>.png)"],examples:['voxflow image "雨中, 竹林, 小路, 中国风"','voxflow image "A calm ocean at sunset" --resolution 1920:1080 -o sunset.png']}};e.exports={generateHunyuanImage:generateHunyuanImage,handle:handle,meta:u,ApiError:l}},4268:(e,t,o)=>{const n=o(9896);const r=o(6928);const{NARRATE_DEFAULTS:a}=o(3282);const{ApiError:i}=o(2768);const{parseParagraphs:s,buildWav:l,concatAudioBuffers:c,getFileExtension:d}=o(7188);const{synthesizeTTS:u}=o(1428);function parseScript(e){if(!n.existsSync(e)){throw new Error(`Script file not found: ${e}`)}let t;try{t=JSON.parse(n.readFileSync(e,"utf8"))}catch(e){throw new Error(`Invalid JSON in script file: ${e.message}`)}if(!t.segments||!Array.isArray(t.segments)||t.segments.length===0){throw new Error('Script must have a non-empty "segments" array')}for(let e=0;e<t.segments.length;e++){const o=t.segments[e];if(!o.text||typeof o.text!=="string"||o.text.trim().length===0){throw new Error(`Segment ${e+1} must have a non-empty "text" field`)}}return{segments:t.segments.map((e=>({text:e.text.trim(),voiceId:e.voiceId||undefined,speed:e.speed!=null?Number(e.speed):undefined,volume:e.volume!=null?Number(e.volume):undefined,pitch:e.pitch!=null?Number(e.pitch):undefined}))),silence:t.silence!=null?Number(t.silence):a.silence,output:t.output||undefined}}function stripMarkdown(e){return e.replace(/```[\s\S]*?```/g,"").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/^#{1,6}\s+/gm,"").replace(/\*{1,3}([^*]+)\*{1,3}/g,"$1").replace(/_{1,3}([^_]+)_{1,3}/g,"$1").replace(/^[-*_]{3,}\s*$/gm,"").replace(/^>\s?/gm,"").replace(/\n{3,}/g,"\n\n").trim()}async function readStdin(){const e=[];for await(const t of process.stdin){e.push(t)}return Buffer.concat(e).toString("utf8")}async function synthesizeSegment(e,t,o,n,r,a,i,s,l,c){const d=await u({apiBase:e,token:t,text:o,voiceId:n,speed:r??1,volume:a??1,pitch:i,format:s||"pcm",index:l,total:c});const p=s==="mp3"?"MP3":s==="wav"?"WAV":"PCM";console.log(` OK (${(d.audio.length/1024).toFixed(0)} KB ${p})`);return d}function scanSegmentRisks(e){const t=[];for(let o=0;o<e.length;o++){const n=(e[o].text||"").trim();const r=n.length>0&&n.length<30;const a=/^[A-Za-z0-9 .,_\-:;'"!?@#$%&*()/]+$/.test(n);const i=/[A-Za-z]{2,}/.test(n);if(r&&a){t.push({index:o+1,severity:"high",text:n,message:`pure-Latin short line (${n.length} chars) — Chinese TTS often returns tts_failed (Issue #2901). Try padding with Chinese context.`})}else if(n.length<25&&i){t.push({index:o+1,severity:"medium",text:n,message:`short line (${n.length} chars) with Latin word(s) — may fail; CLI will auto-retry with Chinese context wrap.`})}}return t}function shouldAutoWrap(e){const t=(e||"").trim();if(!t||t.length>60)return false;const o=/^[A-Za-z0-9 .,_\-:;'"!?@#$%&*()/]+$/.test(t);const n=(t.match(/[A-Za-z]/g)||[]).length;return o||n/t.length>.4&&t.length<30}function chineseContextWrap(e){return`如下:${e}。`}function isTtsProviderRejection(e){if(!(e instanceof i))return false;if(e.code==="tts_failed")return true;return/\[tts_failed\]/.test(e.message||"")}async function synthesizeWithRetry(e,t={wrap:0}){try{return await synthesizeSegment(e.apiBase,e.token,e.text,e.voiceId,e.speed,e.volume,e.pitch,e.format,e.index,e.total)}catch(o){if(isTtsProviderRejection(o)&&t.wrap===0&&shouldAutoWrap(e.text)){const t=chineseContextWrap(e.text);process.stdout.write(`\n ↻ retrying with Chinese context wrap: ${JSON.stringify(t)}\n TTS [${e.index+1}/${e.total}]...`);return await synthesizeWithRetry({...e,text:t},{wrap:1})}throw o}}async function narrate(e){let t=false;const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nNarration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _narrate(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _narrate(e){const t=e.voice||a.voice;const o=e.speed??a.speed;const u=e.format||"pcm";const p=e.api;const A=e.token;let f;let h;let m;let g;if(e.script){const t=parseScript(e.script);f=t.segments;h=e.silence??t.silence;m=e.output||t.output;g=`script: ${e.script} (${f.length} segments)`}else if(e.input){const t=r.resolve(e.input);if(!n.existsSync(t)){throw new Error(`Input file not found: ${t}`)}let o=n.readFileSync(t,"utf8");const i=r.extname(t).toLowerCase();if(i===".md"||i===".markdown"){o=stripMarkdown(o)}const l=s(o);if(l.length===0){throw new Error("No text content found in input file")}f=l.map((e=>({text:e})));h=e.silence??a.silence;m=e.output;g=`file: ${e.input} (${f.length} paragraphs)`}else if(e.text){const t=s(e.text);if(t.length===0){throw new Error("No text content provided")}f=t.map((e=>({text:e})));h=e.silence??a.silence;m=e.output;g=`text: ${e.text.length} chars (${f.length} paragraphs)`}else if(!process.stdin.isTTY){const t=await readStdin();if(!t||t.trim().length===0){throw new Error("No input provided via stdin")}const o=s(t);if(o.length===0){throw new Error("No text content found in stdin input")}f=o.map((e=>({text:e})));h=e.silence??a.silence;g=`stdin (${f.length} paragraphs)`}else{throw new Error("No input provided. Use one of:\n"+" --input <file.txt> Read a text or markdown file\n"+' --text "text" Provide inline text\n'+" --script <file.json> Use a script with per-segment control\n"+' echo "text" | voxflow narrate Pipe from stdin')}const v=d(u);if(!m){let t;if(e.input){const o=r.basename(e.input,r.extname(e.input));t=o+v}else{const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);t="narration-"+e+v}m=r.join(process.cwd(),t)}if(!m.endsWith(v)){m=m.replace(/\.(wav|mp3|pcm)$/i,"")+v}console.log("\n=== VoxFlow Narrate ===");console.log(`Input: ${g}`);console.log(`Voice: ${t}${e.script?" (may be overridden per segment)":""}`);console.log(`Format: ${u==="pcm"?"wav (pcm)":u}`);console.log(`Speed: ${o}`);if(u==="mp3"){console.log(`Output: ${m}`);console.log(` (MP3 mode: no silence inserted between segments)`)}else{console.log(`Silence: ${h}s`);console.log(`Output: ${m}`)}const y=scanSegmentRisks(f);if(y.length>0){console.log("");console.log(`⚠ ${y.length} segment(s) may trigger TTS edge cases:`);for(const e of y){const t=e.text.length>50?`${e.text.slice(0,50)}…`:e.text;console.log(` [${e.severity}] segment ${e.index}: ${JSON.stringify(t)}`);console.log(` → ${e.message}`)}console.log(" CLI will auto-retry with Chinese context wrap on tts_failed.")}console.log(`\n[1/2] Synthesizing TTS audio (${f.length} segments)...`);const b=[];const w=[];const x=[];let S=null;for(let e=0;e<f.length;e++){const n=f[e];try{const r=await synthesizeWithRetry({apiBase:p,token:A,text:n.text,voiceId:n.voiceId||t,speed:n.speed??o,volume:n.volume,pitch:n.pitch,format:u,index:e,total:f.length});b.push(r.audio);x.push(n);S=r.quota}catch(t){if(t instanceof i&&(t.code==="quota_exceeded"||t.code==="token_expired"||t.code==="network_error")){throw t}const o=n.text.length>60?`${n.text.slice(0,60)}…`:n.text;console.log(` ⚠ Segment ${e+1} skipped: ${t.message}`);console.log(` text: ${JSON.stringify(o)}`);w.push({index:e+1,text:n.text,message:t.message})}}if(b.length===0){const e=[`All ${f.length} segments failed TTS synthesis.`,"","Failed segments:",...w.map((e=>{const t=e.text.length>60?`${e.text.slice(0,60)}…`:e.text;return` [${e.index}] ${JSON.stringify(t)}\n ${e.message}`})),"","How to fix:"," • Short pure-English lines (brand names, English headings) often fail"," on Chinese TTS voices (Issue #2901). Pad with Chinese context, e.g.",' "VoxFlow" → "VoxFlow 工具介绍" or merge into adjacent paragraphs.'," • CLI already auto-retries with Chinese wrap; if that also failed, the"," provider may be down — try `voxflow voices` to check connectivity."," • Re-run with -vv to see full TTS request/response for each segment."];throw new Error(e.join("\n"))}console.log("\n[2/2] Merging audio...");const{audio:k,wav:C,duration:T}=u==="mp3"||u==="wav"?c(b,u,h):l(b,h);const P=k||C;const E=r.dirname(m);n.mkdirSync(E,{recursive:true});n.writeFileSync(m,P);const _=m.replace(/\.(wav|mp3)$/i,".txt");const L=x.map(((e,t)=>{const o=e.voiceId?`[${t+1}|${e.voiceId}]`:`[${t+1}]`;return`${o} ${e.text}`})).join("\n\n");n.writeFileSync(_,L,"utf8");const I=x.length;console.log(`\n=== Done ===`);console.log(`Output: ${m} (${(P.length/1024).toFixed(1)} KB, ${T.toFixed(1)}s)`);console.log(`Transcript: ${_}`);console.log(`Segments: ${x.length}/${f.length}${w.length?` (${w.length} skipped)`:""}`);console.log(`Quota: ${I} used, ${S?.remaining??"?"} remaining`);return{outputPath:m,textPath:_,duration:T,quotaUsed:I,segmentCount:x.length,skippedCount:w.length,format:u}}async function handle(e){const{parseFlag:t,parseFloatFlag:n,validateSpeed:r,validateSilence:a,validateOutput:i,validateFormat:s,runWithRetry:l}=o(5537);const{getToken:c,getTokenInfo:d}=o(598);const{API_BASE:u}=o(3282);const p=t(e,"--api")||u;const A=t(e,"--token");const f=t(e,"--input");const h=t(e,"--text");const m=t(e,"--script");const g=n(e,"--speed");const v=n(e,"--silence");const y=t(e,"--output","-o");const b=t(e,"--format");r(e,g);a(e,v);i(y,b);s(b);if(f){const e=o(9896);const t=o(6928);const n=t.resolve(f);if(!e.existsSync(n)){console.error(`Error: Input file not found: ${n}`);const e=!f.includes("/")&&!/\.[a-z0-9]{1,4}$/i.test(f)&&(/[^\x20-\x7e]/.test(f)||f.includes(" "));if(e){console.error("");console.error(" Hint: --input expects a FILE PATH. For inline text use:");console.error(` voxflow narrate --text ${JSON.stringify(f)}`);console.error(` voxflow say ${JSON.stringify(f)} # simpler for one-liners`)}process.exit(1)}}if(m){const e=o(9896);const t=o(6928);const n=t.resolve(m);if(!e.existsSync(n)){console.error(`Error: Script file not found: ${n}`);process.exit(1)}}let w;if(A){w=A}else{w=await c({api:p});const e=d();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const x={token:w,api:p,input:f,text:h,script:m,voice:t(e,"--voice"),output:y,speed:g,silence:v,format:b||undefined};await l(narrate,x,p,A)}const p={narrate:{usage:"[opts]",description:"Narrate a file, text, or script to audio",options:[`--input <file> Input .txt or .md file`,`--text <text> Inline text to narrate`,`--script <file> JSON script with per-segment voice/speed control`,`--voice <id> Default voice ID (default: ${a.voice})`,`--format <fmt> Output format: pcm, wav, mp3 (default: pcm → WAV)`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--silence <sec> Silence between segments, 0-5.0 (default: ${a.silence})`,`--output <path> Output file path (default: matches input basename, e.g. design.md → design.wav)`],examples:["voxflow narrate --input article.txt --voice v-female-R2s4N9qJ","voxflow narrate --script narration-script.json",'echo "Hello" | voxflow narrate --output hello.wav']}};e.exports={narrate:narrate,handle:handle,meta:p,ApiError:i,_test:{parseScript:parseScript,stripMarkdown:stripMarkdown,scanSegmentRisks:scanSegmentRisks,shouldAutoWrap:shouldAutoWrap,chineseContextWrap:chineseContextWrap,synthesizeWithRetry:synthesizeWithRetry,isTtsProviderRejection:isTtsProviderRejection}}},6652:e=>{const t={portrait:{w:1080,h:1920,label:"1080×1920 (9:16)"},landscape:{w:1920,h:1080,label:"1920×1080 (16:9)"},square:{w:1080,h:1080,label:"1080×1080 (1:1)"}};const o=Object.keys(t);const n=new Set(["sketchnote","neon_noir","minimal_3d","chalkboard"]);const r=new Set(["photo","manga_panel","vintage_newspaper"]);const a=[...n,...r];const isCardStyle=e=>n.has(e);function buildSystemPrompt(e){if(!isCardStyle(e)){return["You are a visual storytelling expert. Generate a picstory script as JSON.","Return ONLY valid JSON, no markdown fences, no explanation.","Format:","{",' "title": "story title",',' "scenes": ['," {",' "sceneDesc": "detailed visual scene description for AI image generation, no text in image",',' "narration": "2-3 sentence natural spoken narration (30-70 words)"'," }"," ]","}"].join("\n")}return["You are a visual sketchnote expert. Generate a picstory script for knowledge card videos.","Return ONLY valid JSON, no markdown fences, no explanation.","Format:","{",' "title": "video title (concise, punchy)",',' "scenes": ['," {",' "heading": "01 Section heading (8-20 chars, with 01/02/03 prefix)",',' "keyPoints": ["point A", "point B", "point C"],',' "subheadings": [',' { "label": "sublabel", "content": "short description" }'," ],",' "summary": "One-line insight or takeaway (20-40 chars)",',' "narration": "Natural spoken explanation of this card (30-70 words)"'," }"," ]","}","","Rules:",'- heading: include "01 ", "02 " prefix; short and punchy',"- keyPoints: 2-4 items, 5-20 chars each, concise actionable phrases","- subheadings: 0-3 items, optional deeper breakdown","- summary: memorable insight or quote for the card footer","- narration: natural speech, explains the card content","- Use the SAME language as the topic/input text"].join("\n")}function buildSketchnotePrompt(e,t){const o=t!=="landscape";const n=o?"vertical 9:16 portrait":"horizontal 16:9 landscape";const{heading:r,keyPoints:a=[],subheadings:i=[],summary:s}=e;const l=[];a.forEach(((e,t)=>l.push(` Point ${String(t+1).padStart(2,"0")}: ${e}`)));(i||[]).forEach((e=>l.push(` [${e.label}]: ${e.content}`)));if(s)l.push(` Footer insight: "${s}"`);return["Create a colorful hand-drawn educational sketchnote card in Japanese stationery / bullet-journal style.",`Orientation: ${n}, white or very light warm paper background.`,"","Card structure (top to bottom):",` TITLE BOX (top): Bold title text in a rounded colorful border: "${r}"`," CONTENT AREA (middle):",...l,"","Visual style requirements:"," - Colorful marker-pen borders: mix of coral red, sky blue, mint green, warm orange"," - Hand-drawn look with slight imperfections (not too perfect)"," - Cute small icons or simple illustrations next to each key point"," - Hand-drawn arrows or dividers between sections"," - Slightly decorated borders and doodle elements (stars, dots, small sketches)"," - Clear, legible text — render ALL text content exactly as provided"," - Warm, inviting feel — like a student's creative study notes","","IMPORTANT: Render all text faithfully in the same language as the content. No watermarks. No extra text."].join("\n")}function buildNeonNoirPrompt(e,t){const o=t==="landscape"?"horizontal 16:9 landscape":"vertical 9:16 portrait";const{heading:n,keyPoints:r=[],summary:a}=e;const i=r.map((e=>` ★ ${e}`));if(a)i.push(` ▸ ${a}`);return["Create a cyberpunk-style knowledge card with neon glow aesthetic, dark mode.",`Orientation: ${o}.`,"","Card content to render:",` HEADER: "${n}"`,...i,"","Visual style:"," - Very dark background (#0a0a0f), atmospheric depth"," - Neon glow text: header in bright cyan (#00f5ff) or hot magenta (#ff00aa)"," - Key points in electric purple or lime neon, with glowing bullet icons"," - Subtle neon grid lines or digital rain texture in background"," - Glowing neon-lit border frame with corner accent marks"," - Cinematic HUD display aesthetic, cyberpunk city atmosphere"," - Footer in dim amber/gold text","","IMPORTANT: Render all text faithfully. No watermarks."].join("\n")}function buildMinimal3dPrompt(e,t){const o=t==="landscape"?"horizontal 16:9 landscape":"vertical 9:16 portrait";const{heading:n,keyPoints:r=[],summary:a}=e;const i=r.map((e=>` • ${e}`));if(a)i.push(` ✦ ${a}`);return["Create a 小红书 / Instagram-style knowledge card with soft 3D clay aesthetic.",`Orientation: ${o}.`,"","Card content to render:",` TITLE: "${n}"`,...i,"","Visual style:"," - Soft pastel gradient background (lavender-to-peach, mint-to-sky, or cream-to-rose)"," - 3D clay-rendered decorative objects floating near edges (books, stars, diamonds, capsules)"," - Smooth surfaces with gentle soft-box studio lighting, subtle shadows"," - Clean rounded typography on white frosted card panel"," - Friendly, premium aesthetic popular on 小红书 knowledge cards"," - Harmonious pastel color scheme throughout","","IMPORTANT: Render all text faithfully. No watermarks."].join("\n")}function buildChalkboardPrompt(e,t){const o=t==="landscape"?"horizontal 16:9 landscape":"vertical 9:16 portrait";const{heading:n,keyPoints:r=[],subheadings:a=[],summary:i}=e;const s=r.map((e=>` → ${e}`));(a||[]).forEach((e=>s.push(` [${e.label}] ${e.content}`)));if(i)s.push(` ✎ ${i}`);return["Create a hand-drawn chalkboard educational card.",`Orientation: ${o}.`,"","Card content to render:",` TITLE (underlined): "${n}"`,...s,"","Visual style:"," - Dark forest green chalkboard texture background"," - White chalk handwritten text, slightly rough and organic"," - Simple chalk-drawn diagrams, arrows, and decorative underlines"," - Color chalk accents: yellow for titles, pink/blue for highlights"," - Academic feel — like a teacher's classroom blackboard"," - Hand-drawn boxes, circles, and connector arrows for structure","","IMPORTANT: Render all text faithfully in the same language as the content. No watermarks."].join("\n")}function buildPhotoPrompt(e,t){const o=t==="landscape"?"16:9 widescreen landscape":"9:16 vertical portrait";return[`Create a stunning, high-quality ${o} illustration:`,"",e.sceneDesc,"","Style: cinematic, dramatic lighting, vivid colors, professional quality.",`Technical: ${o} aspect ratio, sharp details, atmospheric depth.`,"No text, no watermarks, no logos."].join("\n")}function buildMangaPanelPrompt(e,t){const o=t==="landscape"?"16:9 landscape manga panel":"9:16 portrait manga panel";return[`Create a Japanese manga-style panel illustration, ${o}:`,"",e.sceneDesc,"","Visual style:"," - Clean manga ink linework with bold black outlines"," - Speed lines, dynamic composition, manga perspective"," - Screentone dot/line texture for depth and shadow"," - Mostly black and white, with one vivid accent color (red or blue)"," - Dramatic, expressive, high-energy framing"," - Professional manga quality, Shonen Jump style","No text overlays. No watermarks."].join("\n")}function buildVintageNewspaperPrompt(e,t){const o=t==="landscape"?"16:9 widescreen landscape":"9:16 portrait";return[`Create a vintage 1940s newspaper-style editorial illustration, ${o}:`,"",e.sceneDesc,"","Visual style:"," - Aged yellowed newsprint texture with paper grain"," - Halftone dot pattern overlay, classic editorial aesthetic"," - Black, white, and sepia tones with period-accurate details"," - Classic editorial illustration style, reportage journalism feel"," - Historical, atmospheric, early-20th-century newspaper graphic","No text overlays. No watermarks."].join("\n")}const i={sketchnote:buildSketchnotePrompt,neon_noir:buildNeonNoirPrompt,minimal_3d:buildMinimal3dPrompt,chalkboard:buildChalkboardPrompt,photo:buildPhotoPrompt,manga_panel:buildMangaPanelPrompt,vintage_newspaper:buildVintageNewspaperPrompt};function buildImagePrompt(e,t,o){const n=i[t]||buildSketchnotePrompt;return n(e,o)}e.exports={RATIO_CONFIG:t,VALID_RATIOS:o,VALID_STYLES:a,CARD_STYLES:n,SCENE_STYLES:r,isCardStyle:isCardStyle,buildSystemPrompt:buildSystemPrompt,buildImagePrompt:buildImagePrompt,buildSketchnotePrompt:buildSketchnotePrompt,buildPhotoPrompt:buildPhotoPrompt,_test:{buildSketchnotePrompt:buildSketchnotePrompt,buildPhotoPrompt:buildPhotoPrompt,buildNeonNoirPrompt:buildNeonNoirPrompt,buildMinimal3dPrompt:buildMinimal3dPrompt,buildChalkboardPrompt:buildChalkboardPrompt,buildMangaPanelPrompt:buildMangaPanelPrompt,buildVintageNewspaperPrompt:buildVintageNewspaperPrompt,buildSystemPrompt:buildSystemPrompt}}},1850:(e,t,o)=>{const n=o(9896);const r=o(857);const a=o(6928);const{PICSTORY_DEFAULTS:i}=o(3282);const{request:s,throwApiError:l,throwNetworkError:c}=o(2768);const{buildWav:d}=o(7188);const{BYTES_PER_MS:u}=o(9167);const{synthesizeTTS:p}=o(1428);const{generateImage:A}=o(967);const{runCommand:f,checkFfmpeg:h,concatVideos:m}=o(9933);const{startSpinner:g}=o(5319);const{RATIO_CONFIG:v,VALID_RATIOS:y,VALID_STYLES:b,buildSystemPrompt:w,buildImagePrompt:x,buildSketchnotePrompt:S,buildPhotoPrompt:k}=o(6652);const C={default:null,"gemini-flash":{provider:"openrouter",model:"google/gemini-3-flash-preview"},deepseek:{provider:"deepseek",model:"deepseek-chat"},hunyuan:{provider:"hunyuan",model:"hunyuan-lite"},moonshot:{provider:"moonshot",model:"moonshot-v1-8k"}};const T=Object.keys(C);async function generateScript(e,t,o,{language:n,sceneCount:r,style:a,scriptModel:i}){const d=w(a);const u=[`Topic: ${o}`,`Language: ${n}`,`Number of scenes: ${r}`,`Visual style: ${a}`,"",`Generate a compelling ${r}-scene picstory script about the topic above.`,"Each scene should cover a distinct aspect or step."].join("\n");const p=i&&i!=="default"?C[i]:null;const A={messages:[{role:"system",content:d},{role:"user",content:u}],temperature:.7,max_tokens:2e3};if(p){A.model=p.model;A.provider=p.provider}let f,h;try{({status:f,data:h}=await s(`${e}/api/llm/chat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},A))}catch(t){c(t,e)}if(f!==200||h.code!=="success")l(f,h,"LLM script");let m;try{const e=h.content.trim().replace(/^```json\s*/i,"").replace(/```\s*$/,"");m=JSON.parse(e)}catch(e){throw new Error(`LLM returned invalid JSON: ${e.message}\nContent: ${h.content.slice(0,200)}`)}if(!m.title||!Array.isArray(m.scenes)||m.scenes.length===0){throw new Error("LLM script missing required fields: title, scenes[]")}return{script:m,quota:h.quota}}const P=[{x:`'iw/2-(iw/zoom/2)'`,y:`'ih/2-(ih/zoom/2)'`},{x:`'0'`,y:`'0'`},{x:`'iw-iw/zoom'`,y:`'ih-ih/zoom'`},{x:`'iw-iw/zoom'`,y:`'0'`}];async function renderScene({imgPath:e,wavPath:t,outPath:o,durationMs:n,ratio:r,sceneIndex:i=0,fadeSeconds:s=.4}){const{w:l,h:c}=v[r]||v.portrait;const d=30;const u=n/1e3;const p=Math.max(2,Math.round(u*d));const A=(.25/Math.max(p-1,1)).toFixed(8);const h=`'min(1.0+${A}*on,1.25)'`;const{x:m,y:g}=P[i%P.length];const y=s>0&&u>s*2.5?s:0;const b=(u-y).toFixed(3);const w=[`scale=${l}:${c}:force_original_aspect_ratio=increase`,`crop=${l}:${c}`,`zoompan=z=${h}:x=${m}:y=${g}:d=${p}:s=${l}x${c}:fps=${d}`];if(y>0){w.push(`fade=t=in:st=0:d=${y}`,`fade=t=out:st=${b}:d=${y}`)}w.push("format=yuv420p");const x=y>0?[`afade=t=in:st=0:d=${y}`,`afade=t=out:st=${b}:d=${y}`]:[];const S=["-loop","1","-t",String(u+.1),"-i",a.resolve(e),"-i",a.resolve(t),"-vf",w.join(",")];if(x.length>0){S.push("-af",x.join(","))}S.push("-c:v","libx264","-preset","fast","-crf","22","-c:a","aac","-b:a","128k","-ar","24000","-ac","1","-shortest","-movflags","+faststart","-y",a.resolve(o));await f("ffmpeg",S)}async function mixBgmIntoVideo(e,t,o,n={}){const r=n.volume??.1;const i=n.fadeIn??2;await f("ffmpeg",["-i",a.resolve(e),"-stream_loop","-1","-i",a.resolve(t),"-filter_complex",`[1:a]volume=${r},afade=t=in:st=0:d=${i}[bgm];[0:a][bgm]amix=inputs=2:duration=first:dropout_transition=2[out]`,"-map","0:v","-map","[out]","-c:v","copy","-c:a","aac","-b:a","128k","-y",a.resolve(o)])}async function picstory(e){const{token:t,api:o,topic:s,text:l,voice:c=i.voice,speed:f=i.speed,style:v=i.style,ratio:y=i.ratio,language:b=i.language,sceneCount:w=i.sceneCount,quality:S=i.quality,fadeSeconds:k=i.fadeSeconds,bgm:C,bgmVolume:T=i.bgmVolume,imageOnly:P=false,scriptModel:E="default"}=e;const _=l||s;if(!_)throw new Error("No input provided. Use --topic or --text");const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);const L=n.mkdtempSync(a.join(r.tmpdir(),"voxflow-picstory-"));try{console.log("\n[1/4] Generating script via LLM...");const r=E&&E!=="default"?`, model: ${E}`:"";console.log(` Topic: "${_.slice(0,80)}" (${b}, ${w} scenes, ${v}${r})`);const i=g(" Thinking...");let s,l;try{({script:s,quota:l}=await generateScript(o,t,_,{language:b,sceneCount:w,style:v,scriptModel:E}));i.stop(`OK — "${s.title}" (${s.scenes.length} scenes)`)}catch(e){i.stop("FAIL");throw e}console.log(`\n[2/4] Synthesizing narration (${s.scenes.length} scenes)...`);const I=[];let B=l;for(let e=0;e<s.scenes.length;e++){const n=s.scenes[e].narration||"";if(!n.trim()){I.push({scene:s.scenes[e],pcm:Buffer.alloc(48*1e3),durationMs:1e3});continue}const r=await p({apiBase:o,token:t,text:n,voiceId:c,speed:f,index:e,total:s.scenes.length});const a=Math.round(r.audio.length/u);console.log(` OK (${(r.audio.length/1024).toFixed(0)} KB, ${(a/1e3).toFixed(1)}s)`);B=r.quota;I.push({scene:s.scenes[e],pcm:r.audio,durationMs:a})}console.log(`\n[3/4] Generating images (${s.scenes.length} scenes, parallel)...`);let D=B;const N=s.scenes.map(((e,n)=>{const r=x(e,v,y);return A({apiBase:o,token:t,prompt:r,ratio:y,quality:S,index:n,total:s.scenes.length}).then((e=>{D=e.quota;return e.imageDataUrl}))}));const R=await Promise.all(N);const F=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const M=e.output||resolveOutputPath(`picstory-${F}.mp4`,e.outputDir);if(P){console.log("\n[4/4] Saving images and audio...");const e=M.replace(/\.mp4$/i,"");for(let t=0;t<I.length;t++){const o=`${e}-scene-${t+1}.jpg`;const r=`${e}-scene-${t+1}.wav`;saveImageDataUrl(R[t],o);n.writeFileSync(r,d([I[t].pcm],0).wav);console.log(` Scene ${t+1}: ${o} + ${r}`)}const t=I.reduce(((e,t)=>e+t.durationMs),0);const o=`${e}-script.json`;n.writeFileSync(o,JSON.stringify(s,null,2));printSummary({outputPath:null,imageOnly:true,script:s,totalMs:t,sceneCount:I.length,style:v,ratio:y,lastQuota:D});return{outputPath:null,scriptPath:o,duration:t}}const O=await h();if(!O.available){throw new Error("ffmpeg not found. picstory requires ffmpeg for video rendering.\n"+" Install: brew install ffmpeg (macOS) / sudo apt install ffmpeg (Linux)")}console.log("\n[4/4] Rendering video...");const $=[];for(let e=0;e<I.length;e++){process.stdout.write(` Scene [${e+1}/${I.length}]...`);const t=a.join(L,`scene-${e}.jpg`);const o=a.join(L,`scene-${e}.wav`);const r=a.join(L,`scene-${e}.mp4`);saveImageDataUrl(R[e],t);n.writeFileSync(o,d([I[e].pcm],0).wav);try{await renderScene({imgPath:t,wavPath:o,outPath:r,durationMs:I[e].durationMs,ratio:y,sceneIndex:e,fadeSeconds:k});console.log(" OK");$.push(r)}catch(t){console.log(" FAIL");throw new Error(`Scene ${e+1} render failed: ${t.message}`)}}const z=C?a.join(L,"concat.mp4"):a.resolve(M);process.stdout.write(" Concatenating scenes...");try{await m($,z);console.log(" OK")}catch(e){console.log(" FAIL");throw new Error(`Concat failed: ${e.message}`)}if(C){process.stdout.write(" Mixing BGM...");try{await mixBgmIntoVideo(z,C,a.resolve(M),{volume:T});console.log(" OK")}catch(e){console.log(` WARN (BGM mix failed: ${e.message.slice(0,80)})`);n.copyFileSync(z,a.resolve(M))}}const j=M.replace(/\.mp4$/i,".json");n.writeFileSync(j,JSON.stringify(s,null,2));const U=I.reduce(((e,t)=>e+t.durationMs),0);printSummary({outputPath:M,imageOnly:false,script:s,totalMs:U,sceneCount:I.length,style:v,ratio:y,lastQuota:D,bgm:C});return{outputPath:M,scriptPath:j,duration:U}}finally{process.removeListener("SIGINT",sigintHandler);try{n.rmSync(L,{recursive:true,force:true})}catch{}}}function resolveOutputPath(e,t){if(!t)return e;n.mkdirSync(t,{recursive:true});return a.join(t,a.basename(e))}function saveImageDataUrl(e,t){const o=e.startsWith("data:")?e.slice(e.indexOf(",")+1):e;n.writeFileSync(t,Buffer.from(o,"base64"))}function printSummary({outputPath:e,imageOnly:t,script:o,totalMs:r,sceneCount:i,style:s,ratio:l,lastQuota:c,bgm:d}){const u=Math.round(r/1e3);const p=u>=60?`${Math.floor(u/60)}m${String(u%60).padStart(2,"0")}s`:`${u}s`;console.log("\n=== Output ===");if(e){console.log(` Video: ${e} (${(n.statSync(e).size/(1024*1024)).toFixed(1)} MB, ${p})`)}else if(t){console.log(` Mode: images + audio saved (no video render)`);console.log(` Duration: ~${p}`)}console.log(` Title: ${o.title}`);console.log(` Scenes: ${i}`);console.log(` Style: ${s} / ${l}`);if(d)console.log(` BGM: ${a.basename(d)}`);if(c)console.log(` Quota: ${c.remaining??"?"} remaining`)}async function handle(e){const{parseFlag:t,parseIntFlag:r,parseFloatFlag:i,parseBoolFlag:s,validateSpeed:l,runWithRetry:c}=o(5537);const{getToken:d,getTokenInfo:u}=o(598);const{API_BASE:p}=o(3282);const A=t(e,"--api")||p;const f=t(e,"--token");const h=i(e,"--speed");const m=t(e,"--output","-o");const g=r(e,"--scenes");l(e,h);if(m&&!/\.mp4$/i.test(m)){console.error("Error: --output path must end with .mp4");process.exit(1)}const v=t(e,"--style");if(v&&!b.includes(v)){console.error(`Error: --style must be one of: ${b.join(", ")} (got: "${v}")`);process.exit(1)}const w=t(e,"--ratio");if(w&&!y.includes(w)){console.error(`Error: --ratio must be one of: ${y.join(", ")} (got: "${w}")`);process.exit(1)}if(g!==undefined&&(isNaN(g)||g<2||g>10)){console.error(`Error: --scenes must be between 2 and 10 (got: "${t(e,"--scenes")}")`);process.exit(1)}const x=t(e,"--topic");const S=t(e,"--text");if(!x&&!S){console.error("Error: provide --topic <text> or --text <content>");process.exit(1)}let k;if(f){k=f}else{k=await d({api:A});const e=u();if(e)console.log(`[32mLogged in as ${e.email}[0m`)}const C=t(e,"--quality");const P=["fast","hd","ultra","fast-aiberm","hd-aiberm"];if(C&&!P.includes(C)){console.error(`Error: --quality must be one of: ${P.join(", ")}`);process.exit(1)}const E=t(e,"--script-model");if(E&&!T.includes(E)){console.error(`Error: --script-model must be one of: ${T.join(", ")} (got: "${E}")`);process.exit(1)}const _=t(e,"--output-dir","-d");const L=t(e,"--bgm");if(L){const e=a.resolve(L);if(!n.existsSync(e)){console.error(`Error: --bgm file not found: ${L}`);process.exit(1)}}const I=i(e,"--bgm-volume");if(I!==undefined&&(isNaN(I)||I<0||I>1)){console.error("Error: --bgm-volume must be between 0 and 1");process.exit(1)}const B=i(e,"--fade");const D={token:k,api:A,topic:x||undefined,text:S||undefined,voice:t(e,"--voice")||undefined,speed:h,output:m,outputDir:_||undefined,style:v||undefined,ratio:w||undefined,language:t(e,"--language")||undefined,sceneCount:g,quality:C||undefined,fadeSeconds:B!==undefined?B:undefined,bgm:L?a.resolve(L):undefined,bgmVolume:I!==undefined?I:undefined,imageOnly:s(e,"--image-only"),scriptModel:E||undefined};await c(picstory,D,A,f)}const E={picstory:{usage:"<--topic|--text> [opts]",description:"Generate a narrated visual story video (AI images + TTS + MP4)",options:[`--topic <text> Story topic`,`--text <content> Input text content to visualize`,`--style <name> Visual style: sketchnote (default), neon_noir, minimal_3d, chalkboard, photo, manga_panel, vintage_newspaper`,`--ratio <name> Aspect ratio: portrait (default, 9:16), landscape (16:9), square (1:1)`,`--language <code> Script language: zh (default), en, ja, etc.`,`--scenes <n> Number of scenes, 2-10 (default: ${i.sceneCount})`,`--quality <tier> Image quality: fast (default), hd, ultra (gpt-5.4-image-2, best quality, ~16× cost), hd-aiberm / fast-aiberm (Aiberm Gemini — strongest Chinese text rendering)`,`--voice <id> TTS voice ID`,`--speed <n> TTS speed 0.5-2.0 (default: ${i.speed})`,`--script-model <preset> LLM model for script generation: ${T.join(", ")} (default: server default)`,`--bgm <file> Background music file (.mp3/.wav) to mix under narration`,`--bgm-volume <n> BGM volume 0-1 (default: ${i.bgmVolume})`,`--fade <n> Scene fade-in/out duration in seconds (default: ${i.fadeSeconds}, set 0 to disable)`,`--image-only Save images+audio without rendering video`,`--output-dir <dir> Directory for all output files (auto-created if needed)`,`--output <path> Output file path (overrides --output-dir)`],examples:['voxflow picstory --topic "AI Agent 入门" --style sketchnote','voxflow picstory --topic "React hooks explained" --style photo --ratio landscape --language en','voxflow picstory --topic "量子计算原理" --style minimal_3d --scenes 6','voxflow picstory --topic "产品增长故事" --style neon_noir --bgm ~/music/lofi.mp3','voxflow picstory --topic "三体故事" --style manga_panel --ratio portrait','voxflow picstory --topic "2026 AI趋势" --output-dir ~/my-videos --fade 0.6']}};e.exports={picstory:picstory,handle:handle,meta:E,buildSketchnotePrompt:S,buildPhotoPrompt:k,buildImagePrompt:x,VALID_STYLES:b,VALID_RATIOS:y,RATIO_CONFIG:v,SCRIPT_MODEL_PRESETS:C,VALID_SCRIPT_MODELS:T,_test:{buildSketchnotePrompt:S,buildPhotoPrompt:k,buildImagePrompt:x,buildSystemPrompt:w,saveImageDataUrl:saveImageDataUrl,...o(6652)._test}}},8167:(e,t,o)=>{"use strict";e.exports=o(4928)},3272:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const a=/[-ヿ㐀-䶿一-鿿]/;function loadScript(e){const t=r.resolve(e);if(!n.existsSync(t)){throw new Error(`Script file not found: ${t}`)}let o;try{o=JSON.parse(n.readFileSync(t,"utf8"))}catch(e){throw new Error(`Invalid JSON in script file: ${e.message}`)}if(!Array.isArray(o.segments)||o.segments.length===0){throw new Error('Script must contain a non-empty "segments" array.\n'+'Expected: { "segments": [{ "speaker": "Host", "text": "Hello" }, ...] }')}for(let e=0;e<o.segments.length;e++){const t=o.segments[e];if(!t||typeof t.speaker!=="string"||!t.speaker.trim()){throw new Error(`Script segment [${e}] is missing a valid "speaker" field`)}if(!t||typeof t.text!=="string"||!t.text.trim()){throw new Error(`Script segment [${e}] is missing a valid "text" field`)}}return{segments:o.segments.map((e=>({speaker:e.speaker.trim(),text:e.text.trim()}))),voiceMapping:o.voiceMapping||{}}}function parseDialogueText(e,t={}){const o=e.split("\n").filter((e=>e.trim()));const n=[];const r=/^([^::]+)[::]\s*(.+)$/;const i=t.narratorLabel||(a.test(e)?"旁白":"Narrator");for(const e of o){const t=e.trim();if(!t)continue;const o=t.match(r);if(o){const e=o[1].trim();const t=o[2].trim();if(t){n.push({speaker:e,text:t})}}else if(t.length>0){n.push({speaker:i,text:t})}}return n}function parseStructuredScript(e){if(!e?.dialogue||!Array.isArray(e.dialogue))return[];return e.dialogue.map((t=>{const o=e.speakers?.[t.speaker];const n=o?.name||t.speaker;return{speaker:n,text:t.text,intent:t.intent||null}}))}e.exports={loadScript:loadScript,parseDialogueText:parseDialogueText,parseStructuredScript:parseStructuredScript}},2341:(e,t,o)=>{"use strict";const{PODCAST_DEFAULTS:n}=o(3282);const{request:r,throwApiError:a,throwNetworkError:i}=o(2768);const{startSpinner:s}=o(5319);const{parseDialogueText:l,parseStructuredScript:c}=o(3272);function resolveEngine(e){if(e==="legacy"){console.warn("[33m⚠ Warning: the legacy podcast engine is deprecated and will be removed in a future release.[0m");console.warn("[33m Use --engine ai-sdk (default) for better quality and more features.[0m\n");return"legacy"}if(e==="ai-sdk")return"ai-sdk";return"ai-sdk"}async function generateDialogueLegacy(e,t,o){const n=s("\n[1/3] Generating dialogue text (legacy)...");let c,d;try{({status:c,data:d}=await r(`${e}/api/llm/generate-dialogue`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{prompt:o.topic,style:o.style||o.template,length:o.length,dialogueMode:true,autoSpeakerNames:true,exchanges:o.exchanges}))}catch(t){n.stop("FAIL");i(t,e)}if(c!==200||d.code!=="success"){n.stop("FAIL");a(c,d,"Dialogue generation")}const u=d.text;const p=d.voiceMapping||{};const A=d.quota;n.stop("OK");const f=l(u);const h=[...new Set(f.map((e=>e.speaker)))];console.log(` ${u.length} 字, ${f.length} 段, ${h.length} 位说话者`);console.log(` 说话者: ${h.join(", ")}`);console.log(` 配额剩余: ${A?.remaining??"?"}`);return{text:u,segments:f,voiceMapping:p,speakers:h,quota:A,script:null}}async function generateDialogueAiSdk(e,t,o){const l=s("\n[1/3] Generating dialogue text (ai-sdk)...");const d={short:"1-3",medium:"3-5",long:"5-10"};let u,p;try{({status:u,data:p}=await r(`${e}/api/podcast/generate-script`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{topic:o.topic,speakerCount:o.speakers||n.speakers,colloquialLevel:o.colloquial||"medium",language:o.language||"zh-CN",duration:d[o.length]||"3-5",autoMatchVoices:true}))}catch(t){l.stop("FAIL");i(t,e)}if(u!==200||p.code!=="success"){l.stop("FAIL");a(u,p,"Podcast script generation")}const A=p.script;const f=p.voiceMapping||{};const h=p.quota;l.stop("OK");const m=c(A);const g=[...new Set(m.map((e=>e.speaker)))];const v=m.map((e=>`${e.speaker}: ${e.text}`)).join("\n");console.log(` ${v.length} chars, ${m.length} segments, ${g.length} speakers`);console.log(` Speakers: ${g.join(", ")}`);if(A?.quality_score?.overall){console.log(` Quality score: ${A.quality_score.overall}/10`)}console.log(` Quota remaining: ${h?.remaining??"?"}`);return{text:v,segments:m,voiceMapping:f,speakers:g,quota:h,script:A}}e.exports={resolveEngine:resolveEngine,generateDialogueLegacy:generateDialogueLegacy,generateDialogueAiSdk:generateDialogueAiSdk}},4928:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const{PODCAST_DEFAULTS:a}=o(3282);const{ApiError:i}=o(2768);const{buildWav:s}=o(7188);const{loadScript:l,parseStructuredScript:c}=o(3272);const{resolveEngine:d,generateDialogueLegacy:u,generateDialogueAiSdk:p}=o(2341);const{synthesizeAll:A}=o(62);async function podcast(e){const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _podcast(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _podcast(e){const t=e.style||e.template||a.template;const i=e.length||a.length;const c=e.exchanges||a.exchanges;const f=e.speed??a.speed;const h=e.silence??a.silence;const m=e.api;const g=e.token;const v=d(e.engine||"auto");const y=e.colloquial||"medium";const b=e.speakers||a.speakers;const w=e.language||"zh-CN";const x=e.format==="json";const S=e.noTts||false;const k=e.voice||null;const C=e.script||null;const T=e.topic||"Latest trends in technology";if(e.input){return _podcastFromFile(e)}let P=e.output;if(!P){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const t=S?".txt":".wav";P=r.resolve(`podcast-${e}${t}`)}console.log("\n=== VoxFlow Podcast Generator ===");console.log(`Topic: ${T}`);if(C){console.log(`Script: ${C}`)}else{console.log(`Engine: ${v}`);console.log(`Template: ${t}`);console.log(`Length: ${i}`);console.log(`Colloquial: ${y}`);console.log(`Speakers: ${b}`);console.log(`Language: ${w}`)}console.log(`Speed: ${f}`);if(k)console.log(`Voice: ${k}`);if(e.bgm)console.log(`BGM: ${e.bgm} (ducking: ${e.ducking??a.ducking})`);console.log(`API: ${m}`);if(!S)console.log(`Output: ${P}`);let E,_,L,I,B;if(C){console.log("\n[1/3] 加载脚本文件...");const e=l(C);_=e.segments;L=e.voiceMapping;I=[...new Set(_.map((e=>e.speaker)))];E=_.map((e=>`${e.speaker}:${e.text}`)).join("\n");B=null;console.log(` ${E.length} chars, ${_.length} segments, ${I.length} speakers`);console.log(` Speakers: ${I.join(", ")}`)}else if(v==="ai-sdk"){const e=await p(m,g,{topic:T,style:t,length:i,exchanges:c,colloquial:y,speakers:b,language:w});E=e.text;_=e.segments;L=e.voiceMapping;I=e.speakers;B=e.script}else{const e=await u(m,g,{topic:T,style:t,length:i,exchanges:c,template:t});E=e.text;_=e.segments;L=e.voiceMapping;I=e.speakers;B=e.script}if(_.length===0){throw new Error("No dialogue segments found in generated text")}if(x){const e=P.replace(/\.\w+$/,".podcast.json");const o={version:1,engine:v,topic:T,script:B||{dialogue:_.map((e=>({speaker:e.speaker,text:e.text})))},voiceMapping:L,meta:{colloquial:y,speakers:b,language:w,length:i,style:t}};const a=r.dirname(e);n.mkdirSync(a,{recursive:true});n.writeFileSync(e,JSON.stringify(o,null,2),"utf8");console.log(`\n JSON exported: ${e}`)}if(S){const e=P.endsWith(".txt")?P:P.replace(/\.\w+$/,".txt");const t=_.map(((e,t)=>`[${t+1}] ${e.speaker}:${e.text}`)).join("\n\n");const o=r.dirname(e);n.mkdirSync(o,{recursive:true});n.writeFileSync(e,t,"utf8");console.log(`\n=== Done (script only) ===`);console.log(`Script: ${e}`);return{outputPath:e,textPath:e,duration:0,quotaUsed:1}}console.log("\n Voice assignments:");for(const e of I){if(k){console.log(` ${e} → ${k} (override)`)}else{const t=L[e];if(t){console.log(` ${e} → ${t.voiceId}`)}else{console.log(` ${e} → (default)`)}}}const{pcmBuffers:D,quota:N}=await A(m,g,_,L,f,k);const R=e.bgm?"[3/4]":"[3/3]";console.log(`\n${R} 拼接音频...`);const{wav:F,duration:M}=s(D,h);const O=r.dirname(P);n.mkdirSync(O,{recursive:true});const $=r.extname(P).toLowerCase();const z=$!==".wav";const j=z?P.slice(0,-$.length)+".tmp.wav":P;n.writeFileSync(j,F);const U=P.slice(0,-$.length)+".txt";const W=_.map(((e,t)=>`[${t+1}] ${e.speaker}:${e.text}`)).join("\n\n");n.writeFileSync(U,W,"utf8");if(e.bgm){const{checkFfmpeg:t,mixWithBgm:r}=o(9933);const i=await t();if(!i.available){throw new Error("ffmpeg is required for BGM mixing. Install it:\n"+" macOS: brew install ffmpeg\n"+" Ubuntu: sudo apt install ffmpeg\n"+" Windows: https://ffmpeg.org/download.html")}console.log(`\n[4/4] 混合背景音乐 (ducking: ${e.ducking??a.ducking})...`);const s=j.replace(".tmp.wav","-mixed.tmp.wav").replace(/(?<!\.tmp)\.wav$/,"-mixed.wav");await r(j,e.bgm,s,{ducking:e.ducking??a.ducking});n.copyFileSync(s,j);try{n.unlinkSync(s)}catch{}}if(z){const{checkFfmpeg:e,convertAudioFormat:t}=o(9933);const r=await e();if(!r.available){n.renameSync(j,P);console.log(`\n Warning: ffmpeg not found, saved as WAV in ${P}`)}else{await t(j,P);try{n.unlinkSync(j)}catch{}}}const q=(C?0:2)+_.length;console.log(`\n=== Done ===`);console.log(`Output: ${P} (${(n.statSync(P).size/1024).toFixed(1)} KB, ${M.toFixed(1)}s)`);console.log(`Script: ${U}`);console.log(`Quota: ${q} used, ${N?.remaining??"?"} remaining`);return{outputPath:P,textPath:U,duration:M,quotaUsed:q}}async function _podcastFromFile(e){if(!e.token){throw new Error("Authentication required. Run `voxflow login` first.")}const t=r.resolve(e.input);if(!n.existsSync(t)){throw new Error(`Input file not found: ${t}`)}console.log(`\n=== Loading podcast from ${t} ===`);let i;try{i=JSON.parse(n.readFileSync(t,"utf8"))}catch(e){throw new Error(`Invalid JSON in input file ${t}: ${e.message}`)}const l=i.script;const d=i.voiceMapping||{};const u=c(l)||(l?.dialogue||[]).map((e=>({speaker:e.speaker,text:e.text})));if(u.length===0){throw new Error("No dialogue segments found in input file")}const p=e.speed??a.speed;const f=e.silence??a.silence;let h=e.output;if(!h){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);h=r.resolve(`podcast-${e}.wav`)}const m=[...new Set(u.map((e=>e.speaker)))];console.log(` ${u.length} segments, ${m.length} speakers`);const{pcmBuffers:g,quota:v}=await A(e.api,e.token,u,d,p);console.log("\n[3/3] Building audio...");const{wav:y,duration:b}=s(g,f);const w=r.dirname(h);n.mkdirSync(w,{recursive:true});const x=r.extname(h).toLowerCase();const S=x!==".wav";if(S){const e=h.slice(0,-x.length)+".tmp.wav";n.writeFileSync(e,y);const{checkFfmpeg:t,convertAudioFormat:r}=o(9933);const a=await t();if(!a.available){n.renameSync(e,h);console.log(`\n Warning: ffmpeg not found, saved as WAV in ${h}`)}else{await r(e,h);try{n.unlinkSync(e)}catch{}}}else{n.writeFileSync(h,y)}const k=h.slice(0,-x.length)+".txt";const C=u.map(((e,t)=>`[${t+1}] ${e.speaker}:${e.text}`)).join("\n\n");n.writeFileSync(k,C,"utf8");console.log(`\n=== Done ===`);console.log(`Output: ${h} (${(n.statSync(h).size/1024).toFixed(1)} KB, ${b.toFixed(1)}s)`);console.log(`Script: ${k}`);console.log(`Quota: ${u.length} TTS calls, ${v?.remaining??"?"} remaining`);return{outputPath:h,textPath:k,duration:b,quotaUsed:u.length}}async function handle(e){const{parseFlag:t,parseIntFlag:a,parseFloatFlag:i,parseBoolFlag:s,validateSpeed:l,validateSilence:c,runWithRetry:d}=o(5537);const{getToken:u,getTokenInfo:p}=o(598);const{API_BASE:A}=o(3282);const f=t(e,"--api")||A;const h=t(e,"--token");const m=s(e,"--no-tts");const g=t(e,"--input");const v=a(e,"--exchanges");const y=i(e,"--speed");const b=i(e,"--silence");const w=i(e,"--ducking");const x=t(e,"--output","-o");const S=a(e,"--speakers");if(v!==undefined){if(isNaN(v)||v<2||v>30){console.error(`Error: --exchanges must be an integer between 2 and 30 (got: "${t(e,"--exchanges")}")`);process.exit(1)}}l(e,y);c(e,b);if(x){const e=[".wav",".mp3",".txt",".json"];const t=e.some((e=>x.toLowerCase().endsWith(e)));if(!t){console.error(`Error: --output path must end with ${e.join(", ")}`);process.exit(1)}}const k=t(e,"--length");if(k&&!["short","medium","long"].includes(k)){console.error(`Error: --length must be one of: short, medium, long (got: "${k}")`);process.exit(1)}const C=t(e,"--engine");if(C&&!["auto","legacy","ai-sdk"].includes(C)){console.error(`Error: --engine must be one of: auto, legacy, ai-sdk (got: "${C}")`);process.exit(1)}const T=t(e,"--colloquial");if(T&&!["low","medium","high"].includes(T)){console.error(`Error: --colloquial must be one of: low, medium, high (got: "${T}")`);process.exit(1)}if(S!==undefined){if(isNaN(S)||S<1||S>3){console.error(`Error: --speakers must be 1, 2, or 3 (got: "${t(e,"--speakers")}")`);process.exit(1)}}const P=t(e,"--language","--lang");const E={zh:"zh-CN","en-US":"en","ja-JP":"ja"};const _=P?E[P]||P:null;if(_&&!["zh-CN","en","ja"].includes(_)){console.error(`Error: --language must be one of: zh-CN, en, ja (got: "${P}")`);process.exit(1)}const L=t(e,"--template");if(L&&!["interview","discussion","news","story","tutorial"].includes(L)){console.error(`Error: --template must be one of: interview, discussion, news, story, tutorial (got: "${L}")`);process.exit(1)}const I=t(e,"--format");if(I&&!["json"].includes(I)){console.error(`Error: --format must be: json (got: "${I}")`);process.exit(1)}if(g){const e=r.resolve(g);if(!n.existsSync(e)){console.error(`Error: Input file not found: ${e}`);process.exit(1)}}const B=t(e,"--script");if(B){const e=r.resolve(B);if(!n.existsSync(e)){console.error(`Error: Script file not found: ${e}`);process.exit(1)}}const D=t(e,"--bgm");if(D){const e=r.resolve(D);if(!n.existsSync(e)){console.error(`Error: BGM file not found: ${e}`);process.exit(1)}}if(w!==undefined){if(isNaN(w)||w<0||w>1){console.error(`Error: --ducking must be between 0 and 1.0 (got: "${t(e,"--ducking")}")`);process.exit(1)}}let N;if(h){N=h}else{N=await u({api:f});const e=p();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}let R=t(e,"--topic");if(!R){const t=new Set(["--topic","--engine","--template","--style","--colloquial","--speakers","--language","--lang","--length","--exchanges","--format","--input","--script","--voice","--bgm","--ducking","--output","-o","--speed","--silence","--api","--token"]);for(let o=0;o<e.length;o++){if(e[o].startsWith("-")){if(t.has(e[o]))o++;continue}R=e[o];break}}const F={token:N,api:f,topic:R,style:t(e,"--style")||L,template:L,length:k,exchanges:v,output:x,speed:y,silence:b,engine:C||undefined,colloquial:T||undefined,speakers:S||undefined,language:_||undefined,format:I||undefined,input:g||undefined,noTts:m,voice:t(e,"--voice"),script:B,bgm:D,ducking:w};await d(podcast,F,f,h)}const f={podcast:{usage:"[topic] [opts]",description:"Generate a multi-speaker podcast/dialogue",options:[`<topic> Podcast topic (positional arg or --topic)`,`--topic <text> Podcast topic (alternative to positional, default: tech trends)`,`--engine <type> auto | legacy | ai-sdk (default: auto → ai-sdk)`,`--template <name> interview | discussion | news | story | tutorial`,`--colloquial <lvl> low | medium | high (default: medium)`,`--speakers <n> Speaker count: 1, 2, or 3 (default: ${a.speakers})`,`--language <code> zh-CN | en | ja (alias: --lang; accepts zh, en-US, ja-JP)`,`--style <style> Legacy: dialogue style (maps to --template)`,`--length <len> short | medium | long (default: ${a.length})`,`--exchanges <n> Number of exchanges, 2-30 (legacy, default: ${a.exchanges})`,`--format json Output .podcast.json alongside audio`,`--input <file> Load .podcast.json and synthesize from it`,`--no-tts Generate script only, skip TTS synthesis`,`--script <file> Pre-written script JSON (skips LLM generation)`,`--voice <id> Override TTS voice for all speakers`,`--bgm <file> Background music file to mix in`,`--ducking <n> BGM volume ducking 0-1.0 (default: ${a.ducking})`,`--output <path> Output WAV path (default: ./podcast-<timestamp>.wav)`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--silence <sec> Silence between segments, 0-5.0 (default: ${a.silence})`],examples:['voxflow podcast "远程工作让人更累的三个原因"','voxflow podcast --topic "AI in healthcare"','voxflow podcast "climate change" --colloquial high --speakers 3','voxflow podcast "tech news" --template news --lang en','voxflow podcast --topic "AI" --format json --no-tts',"voxflow podcast --input podcast.podcast.json",'voxflow podcast --topic "debate" --engine legacy --length long --exchanges 20',"voxflow podcast --script dialogue.json --voice v-male-Bk7vD3xP",'voxflow podcast --topic "music history" --bgm background.mp3 --ducking 0.15']}};const{parseDialogueText:h}=o(3272);e.exports={podcast:podcast,handle:handle,meta:f,ApiError:i,_test:{parseDialogueText:h,parseStructuredScript:c,resolveEngine:d,loadScript:l}}},62:(e,t,o)=>{"use strict";const{getIntentParams:n}=o(6669);const{synthesizeTTS:r}=o(1428);async function synthesizeSegment(e,t,o,n,a,i,s,l,c){const d=await r({apiBase:e,token:t,text:o,voiceId:n,speed:a,volume:i,index:s,total:l,label:c});console.log(` OK (${(d.audio.length/1024).toFixed(0)} KB)`);return{pcm:d.audio,quota:d.quota}}async function synthesizeAll(e,t,o,r,a,i){console.log(`\n[2/3] 合成 TTS 音频 (${o.length} 段, 多角色)...`);const s=[];let l=null;for(let c=0;c<o.length;c++){const d=o[c];const u=r[d.speaker]||{};const p=i||u.voiceId||"v-female-R2s4N9qJ";const A=u.speed||a;const f=n(d.intent);const h=A*f.speed;const m=f.volume;const g=await synthesizeSegment(e,t,d.text,p,h,m,c,o.length,d.speaker);s.push(g.pcm);l=g.quota}return{pcmBuffers:s,quota:l}}e.exports={synthesizeSegment:synthesizeSegment,synthesizeAll:synthesizeAll}},8204:(e,t,o)=>{const n=o(9896);const r=o(6928);const{PRESENT_DEFAULTS:a}=o(3282);const{request:i,throwApiError:s,throwNetworkError:l}=o(2768);const{buildWav:c}=o(7188);const{BYTES_PER_MS:d}=o(9167);const{startSpinner:u}=o(5319);const p={noir:"Scheme1-CinematicNoir",neon:"Scheme2-NeonGlass",editorial:"Scheme3-EditorialLuxury",aurora:"Scheme4-GradientAurora",brutalist:"Scheme5-BoldBrutalist"};const A=Object.keys(p);const f=p;const h=A;const m=10;const g=1;function findVideoPresentDir(){let e=__dirname;for(let t=0;t<5;t++){const t=r.join(e,"remotion-cards");if(n.existsSync(r.join(t,"package.json"))){return t}e=r.dirname(e)}return null}function isRemotionReady(){const e=findVideoPresentDir();if(!e)return false;return n.existsSync(r.join(e,"node_modules","remotion"))}async function generateCards(e,t,o){let n,r;try{({status:n,data:r}=await i(`${e}/api/llm/generate-present-cards`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},o))}catch(t){l(t,e)}if(n!==200||r.code!=="success"){s(n,r,"Card generation")}return{cards:r.data.cards,quota:r.data.quota}}async function synthesizeNarration(e,t,o,n,r,a,c){process.stdout.write(` TTS card [${a+1}/${c}]...`);let u,p;try{({status:u,data:p}=await i(`${e}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}},{text:o,voiceId:n,speed:r,volume:1}))}catch(t){console.log(" FAIL");l(t,e)}if(u!==200||p.code!=="success"){console.log(" FAIL");s(u,p,`TTS card ${a+1}`)}const A=Buffer.from(p.audio,"base64");const f=Math.round(A.length/d);console.log(` OK (${(A.length/1024).toFixed(0)} KB, ${(f/1e3).toFixed(1)}s)`);return{pcm:A,durationMs:f,quota:p.quota}}function computeDurations(e,t){return e.map(((e,o)=>{if(t&&t[o]&&t[o].durationMs>0){return Math.max(5,Math.ceil(t[o].durationMs/1e3)+g)}return m}))}async function renderVideo(e,t,a){const i=findVideoPresentDir();if(!i){throw new Error("remotion-cards/ directory not found.\n"+" Install: cd remotion-cards && npm install")}if(!n.existsSync(r.join(i,"node_modules","remotion"))){throw new Error("Remotion not installed in remotion-cards/.\n"+" Run: cd remotion-cards && npm install")}const s=r.join(o(857).tmpdir(),`voxflow-present-${Date.now()}-${Math.random().toString(36).slice(2,8)}.json`);n.writeFileSync(s,JSON.stringify({cardsData:e}));const l=p[t]||"Scheme4-GradientAurora";const{execFileSync:c}=o(5317);const d=process.platform==="win32"?"npx.cmd":"npx";const u=["remotion","render",l,a,"--props",s,"--codec","h264","--image-format","jpeg"];try{c(d,u,{cwd:i,stdio:"pipe",timeout:6e5,maxBuffer:50*1024*1024})}finally{try{n.unlinkSync(s)}catch{}}}async function present(e){const{token:t,api:o,text:i,url:s,cards:l,style:d=a.style,voice:p=a.voice,speed:A=a.speed,noAudio:f=false,webSearch:h=false}=e;const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{const a=f?3:4;let m=1;let g;let v=null;if(l){console.log(`\n[${m}/${a}] Loading cards from ${l}...`);const e=n.readFileSync(l,"utf8");try{g=JSON.parse(e)}catch(e){throw new Error(`Invalid JSON in cards file ${l}: ${e.message}`)}if(!g.cards||!Array.isArray(g.cards)){throw new Error('Invalid cards.json: missing "cards" array')}console.log(` Loaded ${g.cards.length} cards`)}else{if(s){console.log(`\n[${m}/${a}] Generating cards from URL...`);console.log(` URL: ${s}`)}else if(i){console.log(`\n[${m}/${a}] Generating cards from text...`)}else{throw new Error("No input provided. Use --text, --url, or --cards")}if(h)console.log(" Web search: enabled");const e={};if(s)e.url=s;else e.content=i;if(h)e.webSearch=true;const n=u(" Generating via API...");try{const r=await generateCards(o,t,e);g=r.cards;v=r.quota;n.stop(`OK (${g.cards.length} cards)`)}catch(e){n.stop("FAIL");throw new Error(`Card generation failed: ${e.message}`)}}const y=g.cards.length;const b=g.cards.map((e=>e.type)).join(", ");console.log(` Cards: ${y} (${b})`);m++;let w=null;let x=v;let S=v;const k=findVideoPresentDir();const C=[];if(!f){const e=g.cards.filter((e=>e.narration));console.log(`\n[${m}/${a}] Synthesizing narration (${e.length} cards with narration)...`);w=[];for(let e=0;e<g.cards.length;e++){const a=g.cards[e];if(!a.narration){w.push({durationMs:0});C.push(null);continue}const i=await synthesizeNarration(o,t,a.narration,p,A,e,y);w.push({durationMs:i.durationMs});if(!x&&i.quota)x=i.quota;S=i.quota;const s=`card-narration-${e}.wav`;if(k){const e=r.join(k,"public");n.mkdirSync(e,{recursive:true});const t=c([i.pcm],0);n.writeFileSync(r.join(e,s),t.wav)}C.push(s)}m++}const T=computeDurations(g.cards,w);g.cards=g.cards.map(((e,t)=>({...e,durationSec:T[t],audioFile:C[t]||null})));console.log(`\n[${m}/${a}] Rendering video (style: ${d})...`);if(!isRemotionReady()){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const t=`present-${e}.json`;n.writeFileSync(t,JSON.stringify(g,null,2));console.log(" Remotion not available. Saved cards & audio for later rendering.");console.log(` Cards: ${t}`);if(C.some(Boolean)&&k){C.filter(Boolean).forEach((e=>{console.log(` Audio: ${r.join(k,"public",e)}`)}))}console.log("\n To install Remotion: cd remotion-cards && npm install");console.log(" Then re-run with: voxflow present --cards "+t);const o=T.reduce(((e,t)=>e+t*1e3),0);return{outputPath:null,cardsPath:t,duration:o}}const P=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const E=e.output||`present-${P}.mp4`;const _=u(" Rendering...");try{await renderVideo(g,d,E);_.stop("OK")}catch(e){_.stop("FAIL");try{n.unlinkSync(E)}catch{}throw new Error(`Video render failed: ${e.message}`)}finally{if(k){C.forEach((e=>{if(e)try{n.unlinkSync(r.join(k,"public",e))}catch{}}))}}m++;const L=E.replace(/\.mp4$/,".json");n.writeFileSync(L,JSON.stringify(g,null,2));const I=T.reduce(((e,t)=>e+t*1e3),0);const B=n.statSync(E);const D=(B.size/(1024*1024)).toFixed(1);console.log(`\n[${m}/${a}] Done!`);console.log("\n=== Output ===");console.log(` Video: ${E} (${D} MB, ${formatDuration(I)})`);console.log(` Cards: ${L}`);console.log(` Style: ${d}`);console.log(` Cards: ${y} (${b})`);if(S){const e=x&&S?x.remaining-S.remaining:y*100;console.log(` Quota: ${e} used, ${S.remaining??"?"} remaining`)}return{outputPath:E,cardsPath:L,duration:I}}finally{process.removeListener("SIGINT",sigintHandler)}}function formatDuration(e){const t=Math.round(e/1e3);const o=Math.floor(t/60);const n=t%60;if(o===0)return`${n}s`;return`${o}m${n.toString().padStart(2,"0")}s`}async function handle(e){const{parseFlag:t,parseFloatFlag:n,parseBoolFlag:r,validateSpeed:a,runWithRetry:i}=o(5537);const{getToken:s,getTokenInfo:l}=o(598);const{API_BASE:c}=o(3282);const d=t(e,"--api")||c;const u=t(e,"--token");const p=n(e,"--speed");const f=t(e,"--output","-o");a(e,p);if(f){const e=[".mp4",".wav"].some((e=>f.toLowerCase().endsWith(e)));if(!e){console.error("Error: --output path must end with .mp4 or .wav");process.exit(1)}}const h=t(e,"--style")||t(e,"--scheme");if(h&&!A.includes(h)){console.error(`Error: --style must be one of: ${A.join(", ")} (got: "${h}")`);process.exit(1)}const m=t(e,"--text");const g=t(e,"--url");const v=t(e,"--cards");if(!m&&!g&&!v){console.error("Error: provide one of --text, --url, or --cards");process.exit(1)}if(v&&!o(9896).existsSync(v)){console.error(`Error: cards file not found: ${v}`);process.exit(1)}let y;if(u){y=u}else{y=await s({api:d});const e=l();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const b={token:y,api:d,text:m,url:g,cards:v,style:h||undefined,voice:t(e,"--voice")||undefined,speed:p,output:f,noAudio:r(e,"--no-audio"),webSearch:r(e,"--web-search")};await i(present,b,d,u)}const v={present:{usage:"<--text|--url|--cards> [opts]",description:"Generate a short video from text or URL content",options:[`--text <text> Input text content`,`--url <url> URL to fetch and convert`,`--cards <path> Pre-generated cards.json (skip LLM)`,`--style <name> Visual style: noir, neon, editorial, aurora (default), brutalist`,`--voice <id> TTS voice ID (default: ${a.voice})`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--no-audio Skip TTS, render silent video only`,`--web-search Search the web for up-to-date info on the topic`,`--output <path> Output file path (default: ./present-<timestamp>.mp4)`],examples:['voxflow present --text "Claude Code 是一个 AI 编程工具" --style aurora',"voxflow present --url https://example.com/article --style noir",'voxflow present --text "2025 AI芯片格局" --web-search --style neon',"voxflow present --cards my-cards.json --no-audio",'voxflow present --text "React 入门指南" --voice v-male-Bk7vD3xP --output react.mp4']}};e.exports={present:present,handle:handle,meta:v,STYLES:p,VALID_STYLES:A,SCHEMES:f,VALID_SCHEMES:h,renderVideo:renderVideo,findVideoPresentDir:findVideoPresentDir,isRemotionReady:isRemotionReady,computeDurations:computeDurations,synthesizeNarration:synthesizeNarration,_test:{computeDurations:computeDurations,formatDuration:formatDuration,STYLES:p,VALID_STYLES:A,SCHEMES:f,VALID_SCHEMES:h}}},4460:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(6982);const{API_BASE:i}=o(3282);const{request:s}=o(2768);const{videoTranslate:l}=o(6851);const{dub:c}=o(220);const{mergeAudioVideo:d,getAudioDuration:u}=o(9933);function ensureDir(e){n.mkdirSync(e,{recursive:true})}function defaultOutputPath(e){const t=r.basename(e,r.extname(e));const o=t+"-published.mp4";return r.resolve(r.dirname(e),o)}function defaultPublishDir(){return r.resolve(process.cwd(),"published")}function toFileUrl(e){const t=e.split(r.sep).join("/");return t.startsWith("/")?`file://${t}`:`file:///${t}`}function copyToPublishDir(e,t,o){ensureDir(t);const a=(new Date).toISOString().replace(/[:.]/g,"-");const i=r.basename(e,r.extname(e));const s=`${i}-${o}-${a}.mp4`;const l=r.join(t,s);n.copyFileSync(e,l);return{target:"local",platform:o,status:"ready",publishedPath:l,publishUrl:toFileUrl(l)}}async function publishToWebhook(e,t){const o=new URL(e);if(o.protocol!=="https:"&&o.protocol!=="http:"){throw new Error("Webhook URL must use HTTP or HTTPS")}const n=o.hostname;if(n==="localhost"||n==="127.0.0.1"||n==="0.0.0.0"||n==="::1"||n.startsWith("10.")||n.startsWith("192.168.")||n.match(/^172\.(1[6-9]|2\d|3[01])\./)||n==="169.254.169.254"||n.startsWith("169.254.")||n.startsWith("fd")||n.startsWith("fc")||n.startsWith("fe80")||n.endsWith(".internal")||n.endsWith(".local")){throw new Error("Webhook URL must not target private networks")}const{status:r,data:a}=await s(e,{method:"POST",headers:{"Content-Type":"application/json"}},t);if(r>=400){throw new Error(`Webhook publish failed (${r}): ${a?.message||JSON.stringify(a)}`)}return{target:"webhook",status:a.status||"submitted",platform:a.platform||t.platform,publishUrl:a.publishUrl||a.url||null,platformJobId:a.jobId||null,raw:a}}async function publish(e){const sigintHandler=()=>{console.log("\n\nPublish cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _publish(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _publish(e){const{token:t,api:o=i,input:s,from:p,to:A,srt:f,video:h,audio:m,voice:g,voicesMap:v,speed:y,realign:b=false,batchSize:w,keepIntermediates:x=false,output:S,publishTarget:k="local",publishDir:C=defaultPublishDir(),publishWebhook:T,platform:P="generic",title:E}=e;const _=!!(s&&A);const L=!!(f&&h);const I=!!(h&&m);const B=[_,L,I].filter(Boolean).length;if(B!==1){throw new Error("Invalid publish input. Use exactly one mode:\n"+" 1) --input <video> --to <lang> (video-translate + publish)\n"+" 2) --srt <file> --video <video> (dub + publish)\n"+" 3) --video <video> --audio <audio> (merge existing + publish)")}if(!["local","webhook","none"].includes(k)){throw new Error(`--publish must be one of: local, webhook, none (got: ${k})`)}if(k==="webhook"&&!T){throw new Error("--publish webhook requires --publish-webhook <url>")}console.log("\n=== VoxFlow Publish ===");console.log(`Publish target: ${k}`);console.log(`Platform: ${P}`);let D;let N;let R={};if(_){if(!t){throw new Error('Publish mode "video-translate" requires authentication token')}console.log("Build mode: video-translate");const e=await l({token:t,api:o,input:s,from:p,to:A,voice:g,voicesMap:v,output:S?r.resolve(S):undefined,realign:b,batchSize:w,keepIntermediates:x,speed:y});D=e.outputPath;N="video-translate";R=e}else if(L){if(!t){throw new Error('Publish mode "srt-dub" requires authentication token')}console.log("Build mode: srt-dub");const e=await c({token:t,api:o,srt:f,video:h,voice:g,voicesMap:v,speed:y,output:S?r.resolve(S):undefined});D=e.outputPath;N="srt-dub";R=e}else{console.log("Build mode: merge-existing");D=S?r.resolve(S):defaultOutputPath(r.resolve(h));await d(h,m,D);N="merge-existing";R={outputPath:D,quotaUsed:0}}const F=r.resolve(D);const M=n.statSync(F);const O=await u(F);const $=`pub_${a.randomUUID()}`;const z={jobId:$,title:E||r.basename(F,r.extname(F)),buildMode:N,platform:P,createdAt:(new Date).toISOString(),artifact:{localPath:F,sizeBytes:M.size,durationSec:Number((O/1e3).toFixed(2))}};let j={target:"none",status:"skipped",platform:P,publishUrl:null};if(k==="local"){j=copyToPublishDir(F,r.resolve(C),P)}else if(k==="webhook"){const{localPath:e,...t}=z.artifact;j=await publishToWebhook(T,{...z,artifact:{...t,filePath:r.basename(z.artifact.localPath)}})}const U={...z,publish:j,quotaUsed:R.quotaUsed||0,buildResult:R};console.log("\n=== Publish Done ===");console.log(`Final video: ${F}`);console.log(`Duration: ${U.artifact.durationSec}s`);console.log(`Size: ${(U.artifact.sizeBytes/1024/1024).toFixed(2)} MB`);console.log(`Publish status: ${j.status}`);if(j.publishUrl){console.log(`Publish URL: ${j.publishUrl}`)}else if(j.publishedPath){console.log(`Published file: ${j.publishedPath}`)}return U}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,validateSpeed:i,assertFileExists:s,runWithRetry:l}=o(5537);const{getToken:c,getTokenInfo:d}=o(598);const{API_BASE:u,getConfigDir:p}=o(3282);const{warnIfMissingFfmpeg:A}=o(9933);await A(p(),"dub");const f=t(e,"--api")||u;const h=t(e,"--token");const m=t(e,"--input");const g=t(e,"--to");const v=t(e,"--video");const y=t(e,"--srt");const b=t(e,"--audio");const w=t(e,"--output","-o");const x=t(e,"--publish")||"local";const S=t(e,"--publish-webhook");if(m)s(m,"Input video");if(v)s(v,"Video");if(y)s(y,"SRT");if(b)s(b,"Audio");if(x&&!["local","webhook","none"].includes(x)){console.error(`Error: --publish must be one of: local, webhook, none (got: "${x}")`);process.exit(1)}if(x==="webhook"&&!S){console.error("Error: --publish webhook requires --publish-webhook <url>");process.exit(1)}if(w&&!w.toLowerCase().endsWith(".mp4")){console.error("Error: --output path must end with .mp4");process.exit(1)}const k=r(e,"--speed");i(e,k);const C=n(e,"--batch-size");if(C!==undefined&&(isNaN(C)||C<1||C>20)){console.error(`Error: --batch-size must be between 1 and 20 (got: "${t(e,"--batch-size")}")`);process.exit(1)}const T=!!(v&&b&&!y&&!m);let P=null;if(!T){if(h){P=h}else{P=await c({api:f});const e=d();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}}const E={token:P,api:f,input:m,from:t(e,"--from"),to:g,srt:y,video:v,audio:b,voice:t(e,"--voice"),voicesMap:t(e,"--voices"),output:w,speed:k,realign:a(e,"--realign"),keepIntermediates:a(e,"--keep-intermediates"),batchSize:C,publishTarget:x,publishDir:t(e,"--publish-dir"),publishWebhook:S,platform:t(e,"--platform")||undefined,title:t(e,"--title")||undefined};try{const t=T?await publish(E):await l(publish,E,f,h);if(a(e,"--json")){console.log(JSON.stringify(t,null,2))}}catch(e){const t=e.message||e.code||String(e);console.error(`\nFatal error: ${t}`);process.exit(1)}}const p={publish:{usage:"[opts]",description:"One-command build+merge+publish for Skill/Web orchestration",options:["--input <video> Mode A: video-translate then publish (requires --to)","--to <lang> Target language for Mode A","--from <lang> Source language for Mode A (default: auto)","--srt <file> Mode B: dub existing subtitles into video (requires --video)","--video <file> Video file for Mode B/Mode C","--audio <file> Mode C: merge existing audio into video","--voice <id> TTS voice for Mode A/B","--voices <file> Multi-speaker voice map for Mode A/B","--output <path> Final MP4 output path","--publish <target> local (default) | webhook | none","--publish-dir <dir> Local publish directory (for --publish local)","--publish-webhook <url> Webhook URL (for --publish webhook)","--platform <name> Platform metadata tag (default: generic)","--title <text> Title metadata","--json Print structured JSON result (recommended for skills)"],examples:["voxflow publish --input video.mp4 --to en --publish local","voxflow publish --srt captions.srt --video input.mp4 --publish local","voxflow publish --video input.mp4 --audio narration.mp3 --publish local","voxflow publish --input video.mp4 --to ja --publish webhook --publish-webhook https://publisher.example.com/hook --json"]}};e.exports={publish:publish,handle:handle,meta:p}},89:(e,t,o)=>{"use strict";const{execFile:n,execFileSync:r}=o(5317);const{promisify:a}=o(9023);const i=o(3785);const{getFreshTokenInfo:s}=o(598);const{detectAIAgent:l}=o(2093);const c=a(n);const d="VoxFlowStudio/skills";const u=["hub","podcast","transcribe","video","paper-slide"];const p=Object.freeze(["npx",Object.freeze(["-y","skills","add",d,"--all","--yes","--global"])]);const A={claude:{name:"Claude Code",binary:"claude",install:p,docs:"https://docs.anthropic.com/claude/docs/claude-code"},cursor:{name:"Cursor",binary:"cursor",install:p,docs:"https://docs.cursor.com/"},codex:{name:"Codex CLI",binary:"codex",install:p,docs:"https://github.com/openai/codex"},gemini:{name:"Gemini CLI",binary:"gemini",install:p,docs:"https://github.com/google-gemini/gemini-cli"},workbuddy:{name:"WorkBuddy",binary:"workbuddy",install:p,docs:"https://voxflow.studio/docs/skills"},openclaw:{name:"OpenClaw",binary:"openclaw",install:p,docs:"https://voxflow.studio/docs/skills"},generic:{name:"Generic Skills-protocol agent",binary:null,install:p,docs:"https://voxflow.studio/docs/skills"}};const f=Object.keys(A).filter((e=>A[e].binary));function binaryExists(e,t=r){if(!e)return false;try{const o=process.platform==="win32"?"where":"which";t(o,[e],{stdio:"ignore",timeout:3e3});return true}catch{return false}}function detectAgents(e=r){return f.filter((t=>binaryExists(A[t].binary,e))).map((e=>({key:e,...A[e]})))}function dedupeByInstallCommand(e){const t=new Map;for(const o of e){const e=`${o.install[0]} ${o.install[1].join(" ")}`;if(!t.has(e))t.set(e,o)}return Array.from(t.values())}function chooseTargets(e,t){if(e.for){const t=A[e.for];if(!t){const t=Object.keys(A).join(", ");throw new Error(`Unknown agent "${e.for}". Supported: ${t}`)}return[{key:e.for,...t}]}if(t.length===0)return[{key:"generic",...A.generic}];return t}function parseArgs(e){const t={for:null,all:false,dryRun:false,yes:false};for(let o=0;o<e.length;o++){const n=e[o];if(n==="--for"){t.for=e[++o];if(t.for)t.for=t.for.toLowerCase()}else if(n==="--all")t.all=true;else if(n==="--dry-run")t.dryRun=true;else if(n==="-y"||n==="--yes")t.yes=true}return t}async function runInstall(e,{dryRun:t},o=c){const[n,r]=e.install;const a=`${n} ${r.join(" ")}`;if(t)return{ok:true,dryRun:true,command:a};try{const{stdout:e,stderr:t}=await o(n,r,{timeout:18e4});return{ok:true,stdout:e,stderr:t,command:a}}catch(e){return{ok:false,error:e,command:a}}}function ask(e,t=process.stdin,o=process.stderr){return new Promise((n=>{if(!t.isTTY){n("");return}const r=i.createInterface({input:t,output:o});r.question(e,(e=>{r.close();n(e.trim())}))}))}function out(e){process.stderr.write(e)}function printDetection(e,t=f){out(" Detecting AI agents on this machine...\n");for(const o of t){const t=e.some((e=>e.key===o));const n=t?"✓":"·";const r=t?"":" (not detected)";out(` ${n} ${A[o].name}${r}\n`)}out("\n")}function printList(){out("\n Supported AI agents and install methods:\n\n");for(const[e,t]of Object.entries(A)){const o=`${t.install[0]} ${t.install[1].join(" ")}`;const n=t.binary?"[auto-detect]":"[fallback]";out(` ${e.padEnd(11)} ${t.name.padEnd(35)} ${n}\n`);out(` → ${o}\n`)}out("\n Run `voxflow skills install` for auto-detection,\n");out(" or `voxflow skills install --for <agent>` to force one,\n");out(" or `voxflow skills install --all` to install for every detected agent.\n\n")}function printNextSteps(e,t){out("\n What you can do now:\n");out(" 1. Make sure CLI is logged in (only needed once):\n");out(" voxflow login\n");out(" 2. Open your AI agent and try saying:\n");out(' "把这段话合成语音"\n');out(' "生成一个 3 分钟 AI 播客"\n');out(' "把这个视频翻译成日语"\n');if(t){out("\n ⚠ Some installs failed. You can retry manually with:\n");for(const t of e){out(` ${t.install[0]} ${t.install[1].join(" ")}\n`)}}out("\n Docs: https://voxflow.studio/docs/skills\n\n")}async function preflightAuthAdvice(){let e;try{e=await s()}catch{e=null}if(e&&e.valid){out(` ✓ Logged in as ${e.email}\n\n`);return{loggedIn:true,info:e}}const t=l();out(" ⚠ Not logged in to VoxFlow.\n");out(" Skills will install successfully, but the first `voxflow say` /\n");out(" `voxflow narrate` call will prompt for login.\n");out("\n");if(t){out(` 👤 USER ACTION (you are running inside ${t}):\n`);out(" After this command, run `voxflow login` and finish the browser flow.\n");out(" Or skip browser entirely: `export VOXFLOW_TOKEN=<jwt>` then re-run.\n")}else{out(" Run `voxflow login` separately to set up auth ahead of time.\n")}out("\n");return{loggedIn:false}}async function handleInstall(e){const t=parseArgs(e);const o=detectAgents();out("\n VoxFlow Skill Installer\n\n");printDetection(o);let n;try{n=chooseTargets(t,o)}catch(e){out(` Error: ${e.message}\n\n`);printList();process.exit(1)}const r=dedupeByInstallCommand(n);out(" Will install for:\n");for(const e of n){out(` → ${e.name}\n`)}out(`\n Command: ${r[0].install[0]} ${r[0].install[1].join(" ")}\n`);if(r.length===1){out(" (One command covers all detected agents — `npx skills add` writes\n");out(" to each agent's standard location automatically.)\n")}out("\n");if(!t.dryRun){await preflightAuthAdvice()}if(!t.yes&&!t.dryRun&&process.stdin.isTTY){const e=(await ask(" Proceed? [Y/n] ")).toLowerCase();if(e&&e!=="y"&&e!=="yes"){out(" Cancelled.\n\n");return{ok:false,reason:"user-cancelled"}}out("\n")}const a=[];for(const e of r){out(` Installing...\n`);out(` $ ${e.install[0]} ${e.install[1].join(" ")}\n`);const o=await runInstall(e,t);a.push({target:e,result:o});if(o.dryRun)out(` (dry-run, nothing executed)\n`);else if(o.ok){out(` ✓ Installed: ${u.join(", ")}\n`);out(` → ~/.agents/skills/ (linked into every detected agent's skill dir)\n`)}else{out(` ✗ Failed: ${o.error.message.split("\n")[0]}\n`);if(o.error.stderr){const e=o.error.stderr.toString().trim().split("\n").slice(-3).join("\n ");if(e)out(` ${e}\n`)}}}const i=a.some((e=>!e.result.ok&&!e.result.dryRun));printNextSteps(n,i);if(i)process.exit(1);return{ok:!i,results:a}}function handleList(){printList();return{ok:true}}function handleDetect(){const e=detectAgents();out("\n");printDetection(e);const t=`${p[0]} ${p[1].join(" ")}`;if(e.length===0){out(" No AI agents auto-detected. You can still install via the universal\n");out(" Skills-protocol installer (it will write to whatever standard agent\n");out(" locations exist on this machine):\n\n");out(` ${t}\n\n`)}else{out(` Run \`voxflow skills install\` to install for the detected agents,\n`);out(` or run the underlying command directly:\n\n ${t}\n\n`)}return{ok:true,detected:e.map((e=>e.key))}}const h=["install","list","detect"];async function handle(e){const t=e[0];const o=e.slice(1);if(!t||t==="-h"||t==="--help"){printHelp();process.exit(t?0:1);return}if(!h.includes(t)){out(`Error: unknown subcommand "${t}". Use one of: ${h.join(" | ")}\n`);printHelp();process.exit(1);return}if(t==="install")return handleInstall(o);if(t==="list")return handleList();if(t==="detect")return handleDetect()}function printHelp(){out(`\nUsage: voxflow skills <subcommand> [options]\n\nSubcommands:\n install Install VoxFlow Skills into your AI agent\n list Show all supported agents and their install commands\n detect Show which agents are detected on this machine\n\nOptions for \`install\`:\n --for <agent> Target a specific agent (claude | cursor | codex | gemini |\n workbuddy | openclaw | generic)\n --all Install for every detected agent\n --dry-run Print commands without executing\n -y, --yes Skip confirmation prompt\n\nExamples:\n voxflow skills install # auto-detect best target\n voxflow skills install --for claude # force Claude Code\n voxflow skills install --all # install for every detected agent\n voxflow skills install --dry-run # preview without running\n voxflow skills detect # what's on this machine\n voxflow skills list # all supported agents\n\n`)}const m={skills:{usage:"<install | list | detect> [options]",description:"Install VoxFlow Skills into your AI agent (Claude Code, Cursor, Codex, Gemini, WorkBuddy, OpenClaw, etc.)",options:["install [--for <agent>] Install skills (auto-detect or force one)","install --all Install for every detected agent","install --dry-run Print commands without executing","install -y Skip confirmation prompt","list Show every supported agent + command","detect Show what is auto-detected on this machine"],examples:["voxflow skills install","voxflow skills install --for claude","voxflow skills install --all","voxflow skills detect","voxflow skills list"]}};e.exports={handle:handle,meta:m,AGENTS:A,AUTO_DETECTABLE:f,SKILL_LIST:u,UNIVERSAL_INSTALL:p,binaryExists:binaryExists,detectAgents:detectAgents,chooseTargets:chooseTargets,dedupeByInstallCommand:dedupeByInstallCommand,parseArgs:parseArgs,runInstall:runInstall,preflightAuthAdvice:preflightAuthAdvice}},1089:(e,t,o)=>{"use strict";e.exports=o(1082)},2395:e=>{"use strict";const t=["midnight","paper","ember","forest","ocean"];const o=["product","report","tutorial","pitch","free"];const n=["swift","balanced","pro","creative"];const r=["hero","title-bullets","two-column","three-cards","image-left","image-right","quote","timeline","stats","section"];const a={product:"This is a product launch presentation. Focus on value proposition, clear feature benefits, and persuasive metrics. End with a strong call to action.",report:"This is an annual/quarterly report. Use real-looking data, professional tone, clear metrics with year-over-year comparisons. Be factual and concise.",tutorial:"This is a step-by-step tutorial. Number each step clearly, use practical examples, and include actionable tips. Keep instructions concise and easy to follow.",pitch:"This is a startup investor pitch deck. Be compelling with real-looking metrics, clear market sizing (TAM/SAM/SOM), and a persuasive narrative arc. Show traction with specific numbers.",free:""};const i={product:[{layout:"hero",hint:"Product name and tagline"},{layout:"title-bullets",hint:"Pain points the product solves"},{layout:"two-column",hint:"Problem vs Solution comparison"},{layout:"three-cards",hint:"Key feature 1, 2, 3"},{layout:"three-cards",hint:"More features or benefits"},{layout:"stats",hint:"Performance metrics or user stats"},{layout:"quote",hint:"Customer testimonial or endorsement"},{layout:"hero",hint:"Call to action and next steps"}],report:[{layout:"hero",hint:"Report title, year, organization"},{layout:"title-bullets",hint:"Executive summary highlights"},{layout:"stats",hint:"Quarterly or annual key metrics"},{layout:"two-column",hint:"Achievements and highlights"},{layout:"title-bullets",hint:"Challenges and lessons learned"},{layout:"timeline",hint:"Key milestones or roadmap"},{layout:"hero",hint:"Outlook and closing statement"}],tutorial:[{layout:"hero",hint:"Tutorial title and what you will learn"},{layout:"title-bullets",hint:"Overview and prerequisites"},{layout:"two-column",hint:"Step 1 with details"},{layout:"two-column",hint:"Step 2 with details"},{layout:"two-column",hint:"Step 3 with details"},{layout:"two-column",hint:"Step 4 with details"},{layout:"three-cards",hint:"Pro tips and best practices"},{layout:"hero",hint:"Summary and next steps"}],pitch:[{layout:"hero",hint:"Company name, one-line pitch"},{layout:"title-bullets",hint:"The problem being solved"},{layout:"stats",hint:"Market size and opportunity"},{layout:"two-column",hint:"Solution and how it works"},{layout:"three-cards",hint:"Business model and revenue streams"},{layout:"stats",hint:"Traction and key metrics"},{layout:"three-cards",hint:"Team members and expertise"},{layout:"hero",hint:"The ask — funding, partnerships, next steps"}],free:[]};const s=`You are a professional presentation designer creating business-quality slide decks. Generate structured JSON.\n\nSTRICT RULES:\n1. Output ONLY valid JSON, no markdown fences, no extra text\n2. Each slide must have: id (number), layout (string), content (object), narration (string)\n3. narration: speaker script, 2-3 sentences, natural professional tone\n4. Layout choices: ${r.join(", ")}\n5. NEVER use emoji characters anywhere — not in titles, bullets, headings, or card icons. Use short text labels instead (e.g. "01", "A", "i", or leave icon field empty string "")\n6. Write concise, data-driven text. No vague filler. Every bullet should contain a specific fact, number, or insight.\n7. First slide: "hero". Last slide: "hero" or "section" for closing. Use varied layouts in between — avoid repeating the same layout consecutively.\n8. 8-10 slides total. Prefer stats, timeline, two-column, quote layouts for variety.\n9. For three-cards: set icon to "" (empty string). For stats: use real-looking numbers with units.\n\nCONTENT STRUCTURE per layout:\n- hero: { title, subtitle }\n- title-bullets: { title, bullets: string[] } (max 5 bullets)\n- two-column: { title, left: { heading, text }, right: { heading, text } }\n- three-cards: { title, cards: [{ icon: "", heading, text }] } (exactly 3 cards)\n- image-left / image-right: { title, imagePrompt, text }\n- quote: { quote, author, context }\n- timeline: { title, events: [{ year, text }] } (3-5 events)\n- stats: { title, stats: [{ value, label }] } (2-4 stats with realistic numbers)\n- section: { title, subtitle }\n\nOUTPUT FORMAT:\n{\n "meta": { "title": "..." },\n "slides": [ ... ]\n}`;const l=["swift","balanced","pro","creative"];e.exports={VALID_THEMES:t,VALID_TEMPLATES:o,VALID_MODELS:n,SLIDE_LAYOUTS:r,TEMPLATE_HINTS:a,TEMPLATE_STRUCTURES:i,SLIDES_SYSTEM_PROMPT:s,VALID_MODEL_ALIASES:l}},645:e=>{"use strict";function esc(e){if(!e)return"";return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}const t={hero(e){return`<div class="slide-page slide-hero">\n <h1>${esc(e.title)}</h1>\n ${e.subtitle?`<div class="slide-subtitle">${esc(e.subtitle)}</div>`:""}\n </div>`},"title-bullets"(e){const t=(e.bullets||[]).map((e=>`<li>${esc(e)}</li>`)).join("");return`<div class="slide-page slide-title-bullets">\n <h2>${esc(e.title)}</h2>\n <ul class="slide-bullets">${t}</ul>\n </div>`},"two-column"(e){return`<div class="slide-page slide-two-column">\n <h2>${esc(e.title)}</h2>\n <div class="slide-columns">\n <div class="slide-col">\n <h3>${esc(e.left?.heading)}</h3>\n <p>${esc(e.left?.text)}</p>\n </div>\n <div class="slide-col">\n <h3>${esc(e.right?.heading)}</h3>\n <p>${esc(e.right?.text)}</p>\n </div>\n </div>\n </div>`},"three-cards"(e){const t=(e.cards||[]).map((e=>`\n <div class="slide-card">\n ${e.icon?`<div class="slide-card-icon">${esc(e.icon)}</div>`:""}\n <h3>${esc(e.heading)}</h3>\n <p>${esc(e.text)}</p>\n </div>`)).join("");return`<div class="slide-page slide-three-cards">\n <h2>${esc(e.title)}</h2>\n <div class="slide-cards-grid">${t}</div>\n </div>`},"image-left"(e){return`<div class="slide-page slide-image-split left">\n <div class="slide-image-placeholder">IMG</div>\n <div class="slide-image-content">\n <h2>${esc(e.title)}</h2>\n <p>${esc(e.text)}</p>\n </div>\n </div>`},"image-right"(e){return`<div class="slide-page slide-image-split right">\n <div class="slide-image-content">\n <h2>${esc(e.title)}</h2>\n <p>${esc(e.text)}</p>\n </div>\n <div class="slide-image-placeholder">IMG</div>\n </div>`},quote(e){return`<div class="slide-page slide-quote">\n <blockquote>"${esc(e.quote)}"</blockquote>\n <div class="slide-quote-author">— ${esc(e.author)}</div>\n ${e.context?`<div class="slide-quote-context">${esc(e.context)}</div>`:""}\n </div>`},timeline(e){const t=(e.events||[]).map((e=>`\n <div class="slide-timeline-event">\n <div class="slide-timeline-year">${esc(e.year)}</div>\n <div class="slide-timeline-text">${esc(e.text)}</div>\n </div>`)).join("");return`<div class="slide-page slide-timeline">\n <h2>${esc(e.title)}</h2>\n <div class="slide-timeline-track">${t}</div>\n </div>`},stats(e){const t=e.stats||[];const o=Math.min(t.length,4);const n=t.map((e=>`\n <div class="slide-stat">\n <div class="slide-stat-value">${esc(e.value)}</div>\n <div class="slide-stat-label">${esc(e.label)}</div>\n </div>`)).join("");return`<div class="slide-page slide-stats">\n <h2>${esc(e.title)}</h2>\n <div class="slide-stats-grid" data-cols="${o}">${n}</div>\n </div>`},section(e){return`<div class="slide-page slide-section">\n <h2>${esc(e.title)}</h2>\n ${e.subtitle?`<div class="slide-subtitle">${esc(e.subtitle)}</div>`:""}\n </div>`}};function renderSlideHTML(e){const o=t[e.layout]||t["title-bullets"];return o(e.content)}const o=`\n/* Theme presets */\n.slides-style-midnight {\n --slide-bg:#18181b;--slide-bg-alt:#27272a;--slide-accent:#2dd4bf;\n --slide-accent-soft:rgba(45,212,191,0.15);--slide-text:#fafafa;\n --slide-text-secondary:#a1a1aa;--slide-text-muted:#71717a;\n --slide-border:#3f3f46;--slide-card-bg:#27272a;\n --slide-hero-from:#18181b;--slide-hero-via:#1c1c22;--slide-hero-to:#18181b;\n}\n.slides-style-paper {\n --slide-bg:#fafaf9;--slide-bg-alt:#f5f5f4;--slide-accent:#2563eb;\n --slide-accent-soft:rgba(37,99,235,0.1);--slide-text:#1c1917;\n --slide-text-secondary:#57534e;--slide-text-muted:#a8a29e;\n --slide-border:#d6d3d1;--slide-card-bg:#ffffff;\n --slide-hero-from:#f5f5f4;--slide-hero-via:#fafaf9;--slide-hero-to:#f5f5f4;\n}\n.slides-style-ember {\n --slide-bg:#1c1917;--slide-bg-alt:#292524;--slide-accent:#f59e0b;\n --slide-accent-soft:rgba(245,158,11,0.15);--slide-text:#fafaf9;\n --slide-text-secondary:#a8a29e;--slide-text-muted:#78716c;\n --slide-border:#44403c;--slide-card-bg:#292524;\n --slide-hero-from:#1c1917;--slide-hero-via:#231f1b;--slide-hero-to:#1c1917;\n}\n.slides-style-forest {\n --slide-bg:#14231a;--slide-bg-alt:#1a3024;--slide-accent:#4ade80;\n --slide-accent-soft:rgba(74,222,128,0.12);--slide-text:#f0fdf4;\n --slide-text-secondary:#86efac;--slide-text-muted:#4ade80;\n --slide-border:#2d5a3e;--slide-card-bg:#1a3024;\n --slide-hero-from:#14231a;--slide-hero-via:#182b20;--slide-hero-to:#14231a;\n}\n.slides-style-ocean {\n --slide-bg:#0c1929;--slide-bg-alt:#132240;--slide-accent:#38bdf8;\n --slide-accent-soft:rgba(56,189,248,0.12);--slide-text:#f0f9ff;\n --slide-text-secondary:#7dd3fc;--slide-text-muted:#38bdf8;\n --slide-border:#1e3a5f;--slide-card-bg:#132240;\n --slide-hero-from:#0c1929;--slide-hero-via:#0f2035;--slide-hero-to:#0c1929;\n}\n\n/* Slide container */\n.slides-viewport { width:100vw;height:100vh;position:relative;overflow:hidden; background:var(--slide-bg); }\n.slide-page { position:absolute;inset:0;display:none;color:var(--slide-text); }\n.slide-page.active { display:flex; }\n\n.slide-hero { flex-direction:column;align-items:center;justify-content:center;text-align:center;\n background:linear-gradient(135deg,var(--slide-hero-from),var(--slide-hero-via),var(--slide-hero-to));padding:10% 12%; }\n.slide-hero h1 { font-size:clamp(1.8rem,4vw,3.5rem);font-weight:700;line-height:1.2;margin-bottom:0.5em; }\n.slide-hero .slide-subtitle { font-size:clamp(1rem,1.8vw,1.5rem);color:var(--slide-accent); }\n\n.slide-title-bullets { flex-direction:column;justify-content:center;padding:8% 10%;background:var(--slide-bg); }\n.slide-title-bullets h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.5em; }\n.slide-bullets { list-style:none;padding:0;display:flex;flex-direction:column;gap:0.8em; }\n.slide-bullets li { display:flex;align-items:flex-start;gap:0.6em;font-size:clamp(0.9rem,1.4vw,1.25rem);color:var(--slide-text-secondary);line-height:1.5; }\n.slide-bullets li::before { content:'';flex-shrink:0;width:8px;height:8px;margin-top:0.5em;border-radius:50%;background:var(--slide-accent); }\n\n.slide-two-column { flex-direction:column;justify-content:center;padding:8%;background:var(--slide-bg); }\n.slide-two-column h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.2em; }\n.slide-columns { display:grid;grid-template-columns:1fr 1fr;gap:1.5em; }\n.slide-col { background:var(--slide-card-bg);border-radius:12px;padding:1.5em;border:1px solid var(--slide-border); }\n.slide-col h3 { font-size:clamp(0.9rem,1.3vw,1.15rem);font-weight:600;color:var(--slide-accent);margin-bottom:0.6em; }\n.slide-col p { font-size:clamp(0.8rem,1.1vw,1rem);color:var(--slide-text-secondary);line-height:1.6; }\n\n.slide-three-cards { flex-direction:column;align-items:center;justify-content:center;padding:6% 8%;background:var(--slide-bg); }\n.slide-three-cards h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.2em;text-align:center; }\n.slide-cards-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:1.2em;width:100%; }\n.slide-card { background:var(--slide-card-bg);border-radius:12px;padding:1.5em;text-align:center;border:1px solid var(--slide-border); }\n.slide-card-icon { font-size:2em;margin-bottom:0.5em; }\n.slide-card h3 { font-size:clamp(0.85rem,1.2vw,1.1rem);font-weight:600;margin-bottom:0.4em; }\n.slide-card p { font-size:clamp(0.75rem,1vw,0.9rem);color:var(--slide-text-muted);line-height:1.5; }\n\n.slide-image-split { background:var(--slide-bg); }\n.slide-image-split.left { flex-direction:row; }\n.slide-image-split.right { flex-direction:row-reverse; }\n.slide-image-placeholder { flex:1;display:flex;align-items:center;justify-content:center;background:var(--slide-bg-alt);font-size:3em;color:var(--slide-text-muted); }\n.slide-image-content { flex:1;display:flex;flex-direction:column;justify-content:center;padding:8%; }\n.slide-image-content h2 { font-size:clamp(1.2rem,2.2vw,2rem);font-weight:700;margin-bottom:0.8em; }\n.slide-image-content p { font-size:clamp(0.85rem,1.2vw,1.1rem);color:var(--slide-text-secondary);line-height:1.7; }\n\n.slide-quote { flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:10% 12%;background:var(--slide-bg); }\n.slide-quote blockquote { font-size:clamp(1.2rem,2.2vw,2rem);font-weight:300;font-style:italic;line-height:1.6;max-width:80%;margin-bottom:1em; }\n.slide-quote .slide-quote-author { font-size:clamp(0.85rem,1.2vw,1.1rem);color:var(--slide-accent); }\n.slide-quote .slide-quote-context { font-size:clamp(0.75rem,1vw,0.9rem);color:var(--slide-text-muted);margin-top:0.3em; }\n\n.slide-timeline { flex-direction:column;justify-content:center;padding:8% 10%;background:var(--slide-bg); }\n.slide-timeline h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.2em; }\n.slide-timeline-track { position:relative;padding-left:2em;border-left:2px solid var(--slide-accent);display:flex;flex-direction:column;gap:1.2em; }\n.slide-timeline-event { position:relative; }\n.slide-timeline-event::before { content:'';position:absolute;left:calc(-2em - 5px);top:0.35em;width:12px;height:12px;border-radius:50%;background:var(--slide-accent); }\n.slide-timeline-year { font-weight:700;color:var(--slide-accent);font-size:clamp(0.9rem,1.3vw,1.15rem); }\n.slide-timeline-text { color:var(--slide-text-secondary);margin-top:0.2em;font-size:clamp(0.8rem,1.1vw,1rem); }\n\n.slide-stats { flex-direction:column;align-items:center;justify-content:center;padding:8% 10%;background:var(--slide-bg); }\n.slide-stats h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.5em;text-align:center; }\n.slide-stats-grid { display:grid;gap:2em;width:100%; }\n.slide-stats-grid[data-cols="2"] { grid-template-columns:1fr 1fr; }\n.slide-stats-grid[data-cols="3"] { grid-template-columns:1fr 1fr 1fr; }\n.slide-stats-grid[data-cols="4"] { grid-template-columns:1fr 1fr 1fr 1fr; }\n.slide-stat { text-align:center; }\n.slide-stat-value { font-size:clamp(1.8rem,3.5vw,3rem);font-weight:800;color:var(--slide-accent);margin-bottom:0.2em; }\n.slide-stat-label { font-size:clamp(0.8rem,1.1vw,1rem);color:var(--slide-text-muted); }\n\n.slide-section { flex-direction:column;align-items:center;justify-content:center;text-align:center;\n background:linear-gradient(135deg,var(--slide-bg-alt),var(--slide-bg));padding:10%; }\n.slide-section h2 { font-size:clamp(1.8rem,3.5vw,3rem);font-weight:700;margin-bottom:0.3em; }\n.slide-section .slide-subtitle { font-size:clamp(0.9rem,1.5vw,1.3rem);color:var(--slide-text-muted); }\n`;function buildExportHTML(e,t){const n=e.slides||[];const r=n.map(((e,t)=>{const o=e.audio?.durationMs||5e3;const n=e.audio?.dataUri||"";const r=renderSlideHTML(e);const a=r.match(/class="slide-page ([^"]*)">([\s\S]*)<\/div>$/);const i=a?a[1]:"";const s=a?a[2]:r;return`<section class="slide-page ${i}"\n data-slide-id="${e.id}" data-slide-index="${t}"\n data-duration-ms="${o}"\n data-narration="${esc(e.narration||"")}"\n ${n?`data-audio-url="${esc(n)}"`:""}\n >${s}</section>`})).join("\n");return`<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="UTF-8">\n<meta name="viewport" content="width=device-width, initial-scale=1.0">\n<title>${esc(e.meta?.title||"Presentation")}</title>\n<style>\n* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; overflow: hidden; }\n${o}\n.export-controls {\n position: fixed; bottom: 0; left: 0; right: 0;\n background: rgba(0,0,0,0.85); backdrop-filter: blur(8px);\n padding: 10px 24px; display: flex; align-items: center; gap: 14px;\n z-index: 100; border-top: 1px solid rgba(255,255,255,0.1);\n}\n.export-controls button {\n background: none; border: 1px solid rgba(255,255,255,0.25);\n color: #fff; padding: 6px 14px; border-radius: 6px; cursor: pointer; font-size: 13px;\n}\n.export-controls button:hover { background: rgba(255,255,255,0.1); }\n.export-progress { flex: 1; height: 3px; background: rgba(255,255,255,0.1); border-radius: 2px; overflow: hidden; cursor: pointer; }\n.export-progress-fill { height: 100%; background: var(--slide-accent); border-radius: 2px; width: 0%; transition: width 0.1s linear; }\n.export-counter { color: rgba(255,255,255,0.5); font-size: 13px; min-width: 50px; text-align: center; }\n.export-subtitle {\n position: fixed; bottom: 60px; left: 50%; transform: translateX(-50%);\n background: rgba(0,0,0,0.7); color: #fff; padding: 6px 20px; border-radius: 10px;\n font-size: 15px; max-width: 80vw; text-align: center; opacity: 0; transition: opacity 0.3s; z-index: 100;\n}\n.export-subtitle.visible { opacity: 1; }\n</style>\n</head>\n<body>\n<div class="slides-viewport slides-style-${t}">\n${r}\n<div class="export-subtitle" id="subtitle"></div>\n</div>\n<div class="export-controls">\n <button id="btn-prev">◀</button>\n <button id="btn-play">▶ Play</button>\n <button id="btn-next">▶</button>\n <div class="export-progress" id="progress"><div class="export-progress-fill" id="progress-fill"></div></div>\n <div class="export-counter" id="counter">1 / ${n.length}</div>\n</div>\n<script>\nconst pages=document.querySelectorAll('.slide-page'),total=pages.length;\nlet idx=0,playing=false,timer=null,audio=null,progTimer=null;\nfunction show(i){pages.forEach(p=>p.classList.remove('active'));pages[i].classList.add('active');idx=i;\ndocument.getElementById('counter').textContent=(i+1)+' / '+total;\nconst n=pages[i].dataset.narration,s=document.getElementById('subtitle');\nif(n){s.textContent=n;s.classList.add('visible')}else{s.classList.remove('visible')}}\nfunction prog(r){document.getElementById('progress-fill').style.width=(r*100)+'%'}\nfunction globalProg(si,sr){let t=0,b=0;pages.forEach((p,i)=>{const d=+p.dataset.durationMs||5000;t+=d;if(i<si)b+=d});\nreturn(b+(+pages[si].dataset.durationMs||5000)*sr)/t}\nasync function playSlide(i){show(i);const d=+pages[i].dataset.durationMs||5000,u=pages[i].dataset.audioUrl;\nif(u){audio=new Audio(u);audio.play().catch(()=>{})}\nconst st=Date.now();clearInterval(progTimer);progTimer=setInterval(()=>{prog(globalProg(i,Math.min((Date.now()-st)/d,1)))},50);\nreturn new Promise(r=>{timer=setTimeout(()=>{clearInterval(progTimer);r()},d)})}\nasync function playAll(){playing=true;document.getElementById('btn-play').textContent='\\u23F8 Pause';\nfor(let i=idx;i<total;i++){if(!playing)break;await playSlide(i)}stop()}\nfunction stop(){playing=false;clearTimeout(timer);clearInterval(progTimer);if(audio){audio.pause();audio=null}\ndocument.getElementById('btn-play').textContent='\\u25B6 Play'}\ndocument.getElementById('btn-play').onclick=()=>{if(playing)stop();else playAll()};\ndocument.getElementById('btn-prev').onclick=()=>{stop();show(Math.max(0,idx-1))};\ndocument.getElementById('btn-next').onclick=()=>{stop();show(Math.min(total-1,idx+1))};\ndocument.addEventListener('keydown',e=>{if(e.key==='ArrowRight'||e.key===' '){e.preventDefault();stop();show(Math.min(total-1,idx+1))}\nif(e.key==='ArrowLeft'){stop();show(Math.max(0,idx-1))}if(e.key==='Escape')stop()});\ndocument.getElementById('progress').onclick=e=>{const r=(e.clientX-e.target.getBoundingClientRect().left)/e.target.offsetWidth;\nstop();show(Math.min(total-1,Math.max(0,Math.floor(r*total))))};\nshow(0);\n<\/script>\n</body>\n</html>`}e.exports={buildExportHTML:buildExportHTML,renderSlideHTML:renderSlideHTML,esc:esc}},1082:(e,t,o)=>{"use strict";const n=o(9896);const{SLIDES_DEFAULTS:r}=o(3282);const{request:a,throwApiError:i,throwNetworkError:s}=o(2768);const{chatCompletion:l}=o(929);const{buildWav:c}=o(7188);const{BYTES_PER_MS:d}=o(9167);const{startSpinner:u}=o(5319);const{VALID_THEMES:p,VALID_TEMPLATES:A,VALID_MODELS:f,TEMPLATE_HINTS:h,TEMPLATE_STRUCTURES:m,SLIDES_SYSTEM_PROMPT:g,VALID_MODEL_ALIASES:v}=o(2395);const{buildExportHTML:y}=o(645);async function generateSlides(e,t,o,n,r){const a=h[n]||"";const i=m[n]||[];let s=o;if(a){s+=`\n\nTemplate hint: ${a}`}if(i.length>0){const e=i.map(((e,t)=>` Slide ${t+1}: layout="${e.layout}" — ${e.hint}`)).join("\n");s+=`\n\nSuggested structure:\n${e}`}const c=[{role:"system",content:g},{role:"user",content:s}];const d=v.includes(r)?r:"swift";const u=await l({apiBase:e,token:t,messages:c,temperature:.7,maxTokens:4e3,modelPreset:d});let p=u.content.trim();const A=p.match(/```(?:json)?\s*([\s\S]*?)```/);if(A)p=A[1].trim();const f=JSON.parse(p);if(!f.slides||!Array.isArray(f.slides)||f.slides.length<2){throw new Error("LLM returned invalid slide structure (need at least 2 slides)")}return{data:f,quota:u.quota}}async function synthesizeNarration(e,t,o,n,r,l,c){process.stdout.write(` TTS slide [${l+1}/${c}]...`);let u,p;try{({status:u,data:p}=await a(`${e}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{text:o,voiceId:n,speed:r,volume:1}))}catch(t){console.log(" FAIL");s(t,e)}if(u!==200||p.code!=="success"){console.log(" FAIL");i(u,p,`TTS slide ${l+1}`)}const A=Buffer.from(p.audio,"base64");const f=Math.round(A.length/d);console.log(` OK (${(A.length/1024).toFixed(0)} KB, ${(f/1e3).toFixed(1)}s)`);return{pcm:A,durationMs:f,quota:p.quota}}async function slides(e){const{token:t,api:o,text:a,voice:i=r.voice,speed:s=r.speed,theme:l=r.theme,template:d=r.template,model:p=r.model,noAudio:A=false}=e;const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(0)};process.on("SIGINT",sigintHandler);try{const r=A?2:3;let f=1;console.log(`\n[${f}/${r}] Generating slides from text...`);console.log(` Theme: ${l}, Template: ${d}, Model: ${p}`);const h=u(" Calling LLM...");let m;let g=null;try{const e=await generateSlides(o,t,a,d,p);m=e.data;g=e.quota;h.stop(`OK (${m.slides.length} slides)`)}catch(e){h.stop("FAIL");throw new Error(`Slide generation failed: ${e.message}`)}const v=m.slides.length;const b=m.slides.map((e=>e.layout)).join(", ");console.log(` Slides: ${v} (${b})`);f++;let w=g;let x=g;if(!A){const e=m.slides.filter((e=>e.narration));console.log(`\n[${f}/${r}] Synthesizing narration (${e.length} slides with narration)...`);for(let e=0;e<m.slides.length;e++){const n=m.slides[e];if(!n.narration){n.audio={durationMs:5e3};continue}const r=await synthesizeNarration(o,t,n.narration,i,s,e,v);if(!w&&r.quota)w=r.quota;x=r.quota;const{wav:a}=c([r.pcm],0);const l=`data:audio/wav;base64,${a.toString("base64")}`;n.audio={durationMs:r.durationMs,dataUri:l}}f++}else{for(const e of m.slides){e.audio={durationMs:5e3}}}const S=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const k=e.output||`slides-${S}.html`;console.log(`\n[${f}/${r}] Writing HTML...`);const C=y(m,l);n.writeFileSync(k,C,"utf8");const T=n.statSync(k);const P=(T.size/1024).toFixed(0);console.log("\n=== Output ===");console.log(` File: ${k} (${P} KB)`);console.log(` Slides: ${v} (${b})`);console.log(` Theme: ${l}`);console.log(` Template: ${d}`);if(!A){const e=m.slides.reduce(((e,t)=>e+(t.audio?.durationMs||5e3)),0);console.log(` Duration: ${formatDuration(e)}`)}if(x){const e=w&&x?w.remaining-x.remaining:v*100;console.log(` Quota: ${e} used, ${x.remaining??"?"} remaining`)}console.log("\n Open in browser to view and present.");return{outputPath:k,slideCount:v}}finally{process.removeListener("SIGINT",sigintHandler)}}function formatDuration(e){const t=Math.round(e/1e3);const o=Math.floor(t/60);const n=t%60;if(o===0)return`${n}s`;return`${o}m${n.toString().padStart(2,"0")}s`}async function handle(e){const{parseFlag:t,parseFloatFlag:n,parseBoolFlag:r,validateSpeed:a,runWithRetry:i}=o(5537);const{getToken:s,getTokenInfo:l}=o(598);const{API_BASE:c}=o(3282);const d=t(e,"--api")||c;const u=t(e,"--token");const h=n(e,"--speed");const m=t(e,"--output","-o");a(e,h);if(m){if(!m.toLowerCase().endsWith(".html")){console.error("Error: --output path must end with .html");process.exit(1)}}const g=t(e,"--theme");if(g&&!p.includes(g)){console.error(`Error: --theme must be one of: ${p.join(", ")} (got: "${g}")`);process.exit(1)}const v=t(e,"--template");if(v&&!A.includes(v)){console.error(`Error: --template must be one of: ${A.join(", ")} (got: "${v}")`);process.exit(1)}const y=t(e,"--model");if(y&&!f.includes(y)){console.error(`Error: --model must be one of: ${f.join(", ")} (got: "${y}")`);process.exit(1)}let b=t(e,"--text");if(!b){const t=new Set(["--text","--voice","--speed","--theme","--template","--model","--output","-o","--token","--api"]);for(let o=0;o<e.length;o++){if(e[o].startsWith("-")){if(t.has(e[o]))o++;continue}b=e[o];break}}if(!b){console.error('Error: No text provided. Usage: voxflow slides "your topic" [options]');process.exit(1)}let w;if(u){w=u}else{w=await s({api:d});const e=l();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const x={token:w,api:d,text:b,theme:g||undefined,template:v||undefined,model:y||undefined,voice:t(e,"--voice")||undefined,speed:h,output:m,noAudio:r(e,"--no-audio")};await i(slides,x,d,u)}const b={slides:{usage:'"topic" [opts]',description:"Generate AI presentation slides as HTML",options:[`<text> Topic or text (positional arg or --text)`,`--text <text> Topic to generate slides about`,`--voice <id> TTS voice ID (default: ${r.voice})`,`--speed <n> TTS speed 0.5-2.0 (default: ${r.speed})`,`--theme <name> Theme: midnight, paper, ember, forest, ocean (default: ${r.theme})`,`--template <name> Template: product, report, tutorial, pitch, free (default: ${r.template})`,`--model <id> Model: swift, balanced, pro, creative (default: ${r.model})`,`--no-audio Skip TTS synthesis, generate slides only`,`--output <path> Output HTML file (default: ./slides-<timestamp>.html)`],examples:['voxflow slides "AI in Healthcare"','voxflow slides "Q4 Revenue Report" --template report --theme paper','voxflow slides "React Tutorial" --template tutorial --model balanced','voxflow slides "Startup Pitch" --template pitch --theme ocean --no-audio']}};e.exports={slides:slides,handle:handle,meta:b,VALID_THEMES:p,VALID_TEMPLATES:A,VALID_MODELS:f}},3362:(e,t,o)=>{const n=o(9896);const r=o(6928);const{STORY_DEFAULTS:a}=o(3282);const{request:i,throwApiError:s,throwNetworkError:l,ApiError:c}=o(2768);const{parseParagraphs:d,buildWav:u,createSilence:p}=o(7188);const{startSpinner:A}=o(5319);const{synthesizeTTS:f}=o(1428);async function generateStory(e,t,o){const n=A("\n[1/3] Generating story text...");let r,a;try{({status:r,data:a}=await i(`${e}/api/llm/chat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{messages:[{role:"user",content:o}],stream:false,temperature:.8}))}catch(t){n.stop("FAIL");l(t,e)}if(r!==200||a.code!=="success"){n.stop("FAIL");s(r,a,"LLM")}const c=a.content;const d=a.quota;n.stop("OK");console.log(` ${c.length} chars. Quota remaining: ${d?.remaining??"?"}`);return{story:c,quota:d}}async function synthesizeParagraph(e,t,o,n,r,a,i){const s=await f({apiBase:e,token:t,text:o,voiceId:n,speed:r,index:a,total:i});console.log(` OK (${(s.audio.length/1024).toFixed(0)} KB)`);return{pcm:s.audio,quota:s.quota}}async function synthesizeAll(e,t,o,n,r){console.log(`\n[2/3] Synthesizing TTS audio (${o.length} segments)...`);const a=[];let i=null;for(let s=0;s<o.length;s++){const l=await synthesizeParagraph(e,t,o[s],n,r,s,o.length);a.push(l.pcm);i=l.quota}return{pcmBuffers:a,quota:i}}async function story(e){const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _story(e)}finally{process.removeListener("SIGINT",sigintHandler)}}function buildStoryPrompt(e,t){if(e){return`${e}\n\n要求:\n1. 严格输出 ${t} 段(不多不少)\n2. 段落之间用且仅用一个空行分隔\n3. 不要添加段落编号、标题或前言,直接输出正文`}return`请写一个适合5岁儿童的短故事,要求:\n1. 严格输出 ${t} 段(不多不少),每段 2-3 句话\n2. 每段描述一个清晰的画面场景\n3. 语言简单易懂,充满童趣\n4. 段落之间用且仅用一个空行分隔\n5. 不要添加段落编号、标题或前言,直接输出故事内容`}function clampParagraphs(e,t){if(!Array.isArray(e))return[];if(e.length<=t||t<1)return e;const o=Array.from({length:t},(()=>[]));for(let n=0;n<e.length;n++){const r=Math.min(t-1,Math.floor(n*t/e.length));o[r].push(e[n])}return o.map((e=>e.join(" "))).filter((e=>e.trim().length>0))}async function _story(e){const t=e.voice||a.voice;const i=e.paragraphs||a.paragraphs;const s=e.speed??a.speed;const l=e.silence??a.silence;const c=e.api;const p=e.token;const A=buildStoryPrompt(e.topic,i);let f=e.output;if(!f){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);f=r.resolve(`story-${e}.wav`)}console.log("\n=== VoxFlow Story Generator ===");console.log(`Voice: ${t}`);console.log(`API: ${c}`);console.log(`Paragraphs: ${i}`);console.log(`Speed: ${s}`);console.log(`Output: ${f}`);const{story:h}=await generateStory(c,p,A);const m=d(h);if(m.length===0){throw new Error("No paragraphs found in generated story")}const g=clampParagraphs(m,i);if(m.length!==g.length){console.log(` ${m.length} paragraphs from LLM → merged to ${g.length} (--paragraphs ${i})`)}else{console.log(` ${g.length} paragraphs`)}const{pcmBuffers:v,quota:y}=await synthesizeAll(c,p,g,t,s);console.log("\n[3/3] Merging audio...");const{wav:b,duration:w}=u(v,l);const x=r.dirname(f);n.mkdirSync(x,{recursive:true});const S=r.extname(f).toLowerCase();const k=S!==".wav";if(k){const e=f.replace(/\.[^.]+$/,".tmp.wav");n.writeFileSync(e,b);const{checkFfmpeg:t,convertAudioFormat:r}=o(9933);const a=await t();if(!a.available){n.renameSync(e,f);console.log(`\n Warning: ffmpeg not found, saved as WAV in ${f}`)}else{await r(e,f);try{n.unlinkSync(e)}catch{}}}else{n.writeFileSync(f,b)}const C=f.slice(0,-r.extname(f).length)+".txt";const T=g.map(((e,t)=>`[${t+1}] ${e}`)).join("\n\n");n.writeFileSync(C,T,"utf8");const P=1+g.length;console.log(`\n=== Done ===`);console.log(`Output: ${f} (${(n.statSync(f).size/1024).toFixed(1)} KB, ${w.toFixed(1)}s)`);console.log(`Story: ${C}`);console.log(`Quota: ${P} used, ${y?.remaining??"?"} remaining`);return{outputPath:f,textPath:C,duration:w,quotaUsed:P}}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,validateSpeed:a,validateSilence:i,validateOutput:s,runWithRetry:l}=o(5537);const{getToken:c,getTokenInfo:d}=o(598);const{API_BASE:u}=o(3282);const p=t(e,"--api")||u;const A=t(e,"--token");const f=n(e,"--paragraphs");const h=r(e,"--speed");const m=r(e,"--silence");const g=t(e,"--output","-o");if(f!==undefined){if(isNaN(f)||f<1||f>20){console.error(`Error: --paragraphs must be an integer between 1 and 20 (got: "${t(e,"--paragraphs")}")`);process.exit(1)}}a(e,h);i(e,m);s(g);let v;if(A){v=A}else{v=await c({api:p});const e=d();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const y={token:v,api:p,topic:t(e,"--topic"),voice:t(e,"--voice"),output:g,paragraphs:f,speed:h,silence:m};await l(story,y,p,A)}const h={story:{usage:"[opts]",description:"Generate a story with TTS narration",options:[`--topic <text> Story topic (default: children's story)`,`--voice <id> TTS voice ID (default: ${a.voice})`,`--output <path> Output WAV path (default: ./story-<timestamp>.wav)`,`--paragraphs <n> Paragraph count, 1-20 (default: ${a.paragraphs})`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--silence <sec> Silence between paragraphs, 0-5.0 (default: ${a.silence})`],examples:['voxflow story --topic "三只小猪"','voxflow story --topic "space adventure" --voice v-male-Bk7vD3xP --paragraphs 10']},generate:{alias:"story",description:"Alias for story"}};e.exports={story:story,handle:handle,meta:h,ApiError:c,_test:{parseParagraphs:d,buildWav:u,createSilence:p,buildStoryPrompt:buildStoryPrompt,clampParagraphs:clampParagraphs}}},6046:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(857);const{asr:i}=o(5357);const{chatCompletion:s}=o(929);const{request:l,throwApiError:c,throwNetworkError:d}=o(2768);const{buildWav:u,createSilence:p}=o(7188);const{API_BASE:A,SUMMARIZE_DEFAULTS:f}=o(3282);const h=`You are a video content analyst. Given a transcript with timestamps, extract key points and structure them for a summary presentation.\n\nLANGUAGE RULE: Detect the language of the input content. All text fields (titles, bullets, narration) MUST be in the SAME language as the input.\n\nSTRICT RULES:\n1. Output ONLY valid JSON, no markdown fences, no extra text.\n2. Extract 4-8 key points from the transcript.\n3. Each point MUST reference a time range from the original video.\n4. narration: a professional summary of this point, 2-3 sentences, as if narrating a recap video.\n5. Remove filler words and repetitions. Every bullet should be specific.\n6. Do NOT invent facts not in the transcript.\n7. title: a short slide title for the point (max 15 chars).\n8. bullets: 1-3 concise bullet points (max 25 chars each).\n\nOUTPUT FORMAT:\n{\n "meta": { "title": "...", "language": "..." },\n "points": [\n {\n "id": 1,\n "title": "<point title>",\n "bullets": ["<bullet 1>", "<bullet 2>"],\n "startSec": 0,\n "endSec": 25,\n "narration": "<narrator summary of this point>"\n }\n ]\n}`;async function generatePptx(e,t){let r;try{r=o(8394)}catch{const o=t.replace(/\.pptx$/,".json");n.writeFileSync(o,JSON.stringify(e,null,2),"utf8");return{path:o,format:"json",fallback:true}}const a=new r;a.title=e.meta?.title||"Summary";a.author="VoxFlow Studio";a.layout="LAYOUT_WIDE";const i="6366F1";const s="0F172A";const l="F1F5F9";const c="94A3B8";for(const t of e.points){const e=a.addSlide();e.background={color:s};e.addText(t.title,{x:.8,y:.5,w:"85%",fontSize:32,bold:true,color:l,fontFace:"Arial"});e.addShape("rect",{x:.8,y:1.3,w:1.2,h:.04,fill:{color:i}});if(t.bullets?.length){const o=t.bullets.map((e=>({text:e,options:{bullet:{code:"2022"},fontSize:18,color:l,breakLine:true}})));e.addText(o,{x:.8,y:1.8,w:"85%",h:3,fontFace:"Arial",paraSpaceAfter:10,valign:"top"})}const o=`${formatTime(t.startSec)} - ${formatTime(t.endSec)}`;e.addText(o,{x:.8,y:4.8,w:3,fontSize:12,color:c,fontFace:"Arial"});if(t.narration)e.addNotes(t.narration)}const d=await a.write({outputType:"nodebuffer"});n.writeFileSync(t,d);return{path:t,format:"pptx",fallback:false}}function formatTime(e){const t=Math.floor(e/60);const o=Math.floor(e%60);return`${t}:${o.toString().padStart(2,"0")}`}async function composeVideo(e,t,i,s){const{generateTitleCard:l,concatVideos:c,normalizeVideo:d,runCommand:u}=o(9933);const p=n.mkdtempSync(r.join(a.tmpdir(),"voxflow-sumvideo-"));let A=1920,f=1080;try{const{stdout:t}=await u("ffprobe",["-v","quiet","-select_streams","v:0","-show_entries","stream=width,height","-of","csv=p=0",r.resolve(e)]);const[o,n]=t.trim().split(",").map(Number);if(o&&n){A=o;f=n}}catch{}const h=`${A}x${f}`;const m=Math.round(A*.35);const g=Math.round(A*.025);const v=[];try{process.stdout.write(" [1] Title card... ");const o=r.join(p,"title.mp4");await l(o,"",{duration:3,resolution:h,sourceVideo:e});const n=r.join(p,"title-norm.mp4");await d(o,n,{resolution:h});v.push(n);console.log("OK");for(let o=0;o<t.length;o++){const n=t[o];process.stdout.write(` [${o+2}] "${n.title}"... `);const a=Math.max(0,n.startSec);const s=Math.min(n.endSec,n.startSec+30);const l=r.join(p,`pip-${o}.mp4`);const c=Math.round(m*f/A/2)*2;const y=Math.round(m/2)*2;const b=f-c-g;const w=[`[0:v]scale=${A}:${f},boxblur=25:5,eq=brightness=-0.3:saturation=0.5[bg]`,`[0:v]scale=${y}:${c}[pip]`,`[bg][pip]overlay=${A-y-g}:${b}[out]`].join(";");if(i[o]){await u("ffmpeg",["-ss",String(a),"-to",String(s),"-i",r.resolve(e),"-i",r.resolve(i[o]),"-filter_complex",w,"-map","[out]","-map","1:a:0","-c:v","libx264","-preset","fast","-crf","23","-pix_fmt","yuv420p","-c:a","aac","-ar","24000","-ac","1","-shortest","-y",l],{timeout:3e5})}else{await u("ffmpeg",["-ss",String(a),"-to",String(s),"-i",r.resolve(e),"-filter_complex",w,"-map","[out]","-map","0:a:0","-c:v","libx264","-preset","fast","-crf","23","-pix_fmt","yuv420p","-c:a","aac","-ar","24000","-ac","1","-shortest","-y",l],{timeout:3e5})}const x=r.join(p,`norm-${o}.mp4`);await d(l,x,{resolution:h});v.push(x);console.log("OK")}process.stdout.write(" [last] Closing... ");const a=r.join(p,"closing.mp4");await l(a,"",{duration:2,resolution:h,sourceVideo:e});const y=r.join(p,"closing-norm.mp4");await d(a,y,{resolution:h});v.push(y);console.log("OK");process.stdout.write(" Concatenating... ");await c(v,r.resolve(s));console.log("OK")}finally{try{n.rmSync(p,{recursive:true,force:true})}catch{}}}async function synthesizeTts(e,t,o,n,r){let a,i;try{({status:a,data:i}=await l(`${e}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}},{text:o,voiceId:n,speed:r,format:"pcm",sampleRate:24e3}))}catch(t){d(t,e)}if(a!==200||i.code!=="success"){c(a,i,"TTS")}return Buffer.from(i.audio,"base64")}async function summarize(e){const sigintHandler=()=>{console.log("\n\nSummarize cancelled.");process.exit(0)};process.on("SIGINT",sigintHandler);try{return await _summarize(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _summarize(e){const{token:t,api:o=A,input:l,text:c,slideCount:d=f.slides,language:m=f.language,voice:g=f.voice,speed:v=f.speed,engine:y=f.engine,model:b,tts:w=false,video:x=false,output:S}=e;console.log("\n=== VoxFlow Summarize ===");let k;let C=0;const T=l?r.resolve(l):null;if(c){console.log(`Input: text (${c.length} chars)`);k=c}else if(l){console.log(`Input: ${r.basename(T)}`);process.stdout.write("[1] Transcribing audio... ");const e=n.mkdtempSync(r.join(a.tmpdir(),"voxflow-summarize-"));const s=r.join(e,"transcript.txt");const l=await i({token:t,api:o,input:T,format:"txt",output:s,engine:y,model:b,mode:"file"});k=n.readFileSync(s,"utf8");C+=l.quotaUsed;console.log(`${l.captionCount} segments (${l.mode})`);try{n.rmSync(e,{recursive:true,force:true})}catch{}}else{throw new Error("Either --input <file> or --text <text> is required.")}if(!k.trim()){throw new Error("Transcript is empty. No audible speech detected.")}process.stdout.write("[2] Extracting key points... ");const P=await s({apiBase:o,token:t,messages:[{role:"system",content:h},{role:"user",content:`Extract ${d} key points from this transcript. Language: ${m}.\n\nTRANSCRIPT:\n${k.slice(0,8e3)}\n\nOutput JSON only:`}],temperature:.3,maxTokens:4e3});C+=1;let E;try{E=JSON.parse(P.content.trim())}catch{const e=P.content.match(/```(?:json)?\s*([\s\S]*?)```/);if(e?.[1])E=JSON.parse(e[1].trim());else throw new Error("Failed to parse summary JSON from LLM")}const _=E.points||[];console.log(`${_.length} points`);process.stdout.write("[3] Generating PPTX... ");const L=l?r.basename(T,r.extname(T)):"summary";const I=l?r.dirname(T):process.cwd();const B=S?r.resolve(S):r.resolve(I,`${L}-summary.pptx`);const D=await generatePptx(E,B);console.log(`OK (${D.format})`);const N=[];if(x||w){console.log("[4] Synthesizing narrations...");const e=[];for(let i=0;i<_.length;i++){const s=_[i];if(!s.narration?.trim()){N.push(null);e.push(p(1,24e3));continue}process.stdout.write(` TTS [${i+1}/${_.length}]... `);const l=await synthesizeTts(o,t,s.narration,g,v);C+=1;if(x){const e=r.join(a.tmpdir(),`voxflow-sum-tts-${i}.wav`);const t=u([l],0);n.writeFileSync(e,t.wav||t);N.push(e)}e.push(l);e.push(p(.5,24e3));const c=(l.length/48).toFixed(0);console.log(`OK (${c}ms)`)}if(w){const t=B.replace(/\.(pptx|json)$/,"-narration.wav");const o=u(e,0);n.writeFileSync(t,o.wav||o);console.log(` Narration: ${t}`)}}let R=null;if(x&&T){console.log("[5] Composing video...");R=B.replace(/\.(pptx|json)$/,".mp4");try{await composeVideo(T,_,N,R,{title:E.meta?.title||"Summary"})}catch(e){console.log(` Video failed: ${e.message}`);R=null}N.forEach((e=>{if(e)try{n.unlinkSync(e)}catch{}}))}console.log("\n=== Done ===");console.log(`Slides: ${D.path} (${_.length} points)`);if(R)console.log(`Video: ${R}`);console.log(`Quota: ${C} used`);return{pptxPath:D.path,videoPath:R,slideCount:_.length,quotaUsed:C,summaryData:E}}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,runWithRetry:i}=o(5537);const{getToken:s}=o(598);const{API_BASE:l,SUMMARIZE_DEFAULTS:c}=o(3282);const d=o(9896);const u=o(6928);const p=t(e,"--api")||l;const A=t(e,"--token");const f=t(e,"--input");const h=t(e,"--text");const m=t(e,"--output","-o");const g=t(e,"--voice")||c.voice;const v=r(e,"--speed")??c.speed;const y=n(e,"--slides")??c.slides;const b=t(e,"--lang")||c.language;const w=t(e,"--engine")||c.engine;const x=t(e,"--model");const S=a(e,"--tts");const k=a(e,"--video");const C=t(e,"--scheme")||"aurora";if(!f&&!h){console.error("Error: --input <file> or --text <text> is required.\nExample: voxflow summarize --input lecture.mp4");process.exit(1)}if(f){const e=u.resolve(f);if(!d.existsSync(e)){console.error(`Error: File not found: ${e}`);process.exit(1)}}if(v!==undefined&&(isNaN(v)||v<.5||v>2)){console.error(`Error: --speed must be between 0.5 and 2.0`);process.exit(1)}const T=A||await s();if(!T){console.error("Not logged in. Run: voxflow login");process.exit(1)}const P={token:T,api:p,input:f,text:h,output:m,voice:g,speed:v,slideCount:y,language:b,engine:w,model:x,tts:S,video:k,scheme:C};await i(summarize,P,p,A)}const m={summarize:{usage:"<--input|--text> [opts]",description:"Summarize video/audio/text into presentation slides (PPTX)",options:[`--input <file> Input video/audio file → ASR + summarize`,`--text <text> Direct text input (skip ASR)`,`--slides <n> Number of slides, 4-12 (default: ${f.slides})`,`--lang <code> Output language: en, zh, ja, etc. (default: ${f.language})`,`--engine <engine> ASR engine: auto, local, cloud (default: ${f.engine})`,`--model <model> Whisper model for local ASR: tiny, base, small, medium, large`,`--tts Generate TTS narration audio for each slide`,`--video Also render an MP4 video (requires remotion-cards/ + Remotion)`,`--scheme <name> Video visual scheme: noir, neon, editorial, aurora (default), brutalist`,`--voice <id> TTS voice ID (default: ${f.voice})`,`--speed <n> TTS speed 0.5-2.0 (default: ${f.speed})`,`--output <path> Output PPTX path (default: <input>-summary.pptx)`],examples:["voxflow summarize --input lecture.mp4","voxflow summarize --input meeting.mp4 --lang zh --slides 10","voxflow summarize --input podcast.mp3 --engine local --tts","voxflow summarize --input lecture.mp4 --video --scheme aurora",'voxflow summarize --text "长篇文章内容..." --slides 6 --lang zh']}};e.exports={summarize:summarize,handle:handle,meta:m}},5859:(e,t,o)=>{const n=o(9896);const r=o(6928);const{SYNTHESIZE_DEFAULTS:a}=o(3282);const{request:i,throwApiError:s,throwNetworkError:l,ApiError:c}=o(2768);const{buildWav:d,getFileExtension:u}=o(7188);const{startSpinner:p}=o(5319);async function synthesize(e){let t=false;const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nSynthesis cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _synthesize(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _synthesize(e){const t=e.text;if(!t||t.trim().length===0){throw new Error('No text provided. Usage: voxflow synthesize "your text here"')}const o=e.voice||a.voice;const c=e.speed??a.speed;const A=e.volume??a.volume;const f=e.pitch??a.pitch;const h=e.format||"pcm";const m=e.api;const g=e.token;const v=u(h);let y=e.output;if(!y){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);y=r.resolve(`tts-${e}${v}`)}console.log("\n=== VoxFlow Synthesize ===");console.log(`Voice: ${o}`);console.log(`Format: ${h==="pcm"?"wav (pcm)":h}`);console.log(`Speed: ${c}`);if(A!==1)console.log(`Volume: ${A}`);if(f!==0)console.log(`Pitch: ${f}`);console.log(`Text: ${t.length>60?t.slice(0,57)+"...":t}`);console.log(`Output: ${y}`);const b=p("\n[1/1] Synthesizing TTS audio...");let w,x;try{({status:w,data:x}=await i(`${m}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`}},{text:t.trim(),voiceId:o,format:h,speed:c,volume:A,pitch:f}))}catch(e){b.stop("FAIL");l(e,m)}if(w!==200||x.code!=="success"){b.stop("FAIL");s(w,x,"TTS")}const S=Buffer.from(x.audio,"base64");b.stop("OK");let k,C;if(h==="mp3"){k=S;C=S.length/4e3;console.log(` ${(S.length/1024).toFixed(0)} KB MP3`)}else if(h==="wav"){k=S;const e=S.length>44?S.readUInt32LE(28):48e3;const t=S.length>44?S.readUInt32LE(40):S.length;C=t/e;console.log(` ${(S.length/1024).toFixed(0)} KB WAV`)}else{const e=d([S],0);k=e.wav;C=e.duration;console.log(` ${(S.length/1024).toFixed(0)} KB PCM → WAV`)}const T=r.dirname(y);n.mkdirSync(T,{recursive:true});n.writeFileSync(y,k);const P=100;const E=typeof x.quota?.used==="number"&&typeof x.quota?.costDelta==="number"?x.quota.costDelta:P;console.log(`\n=== Done ===`);console.log(`Output: ${y} (${(k.length/1024).toFixed(1)} KB, ${C.toFixed(1)}s)`);console.log(`Quota: ${E} used, ${x.quota?.remaining??"?"} remaining`);return{outputPath:y,duration:C,quotaUsed:E,format:h}}async function handle(e){const{parseFlag:t,parseFloatFlag:n,validateSpeed:r,validateOutput:a,validateFormat:i,runWithRetry:s}=o(5537);const{getToken:l,getTokenInfo:c}=o(598);const{API_BASE:d}=o(3282);const u=t(e,"--api")||d;const p=t(e,"--token");let A=t(e,"--text");if(!A){const t=new Set(["--text","--voice","--speed","--volume","--pitch","--output","-o","--token","--api","--format"]);for(let o=0;o<e.length;o++){if(e[o].startsWith("-")){if(t.has(e[o]))o++;continue}A=e[o];break}}if(!A){console.error('Error: No text provided. Usage: voxflow synthesize "your text here"');process.exit(1)}const f=n(e,"--speed");const h=n(e,"--volume");const m=n(e,"--pitch");const g=t(e,"--output","-o");const v=t(e,"--format");r(e,f);a(g,v);i(v);if(h!==undefined){if(isNaN(h)||h<.1||h>2){console.error(`Error: --volume must be between 0.1 and 2.0 (got: "${t(e,"--volume")}")`);process.exit(1)}}if(m!==undefined){if(isNaN(m)||m<-12||m>12){console.error(`Error: --pitch must be between -12 and 12 (got: "${t(e,"--pitch")}")`);process.exit(1)}}let y;if(p){y=p}else{y=await l({api:u});const e=c();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const b={token:y,api:u,text:A,voice:t(e,"--voice"),output:g,speed:f,volume:h,pitch:m,format:v||undefined};await s(synthesize,b,u,p)}const A={synthesize:{usage:"<text>",description:"Synthesize a single text snippet to audio (alias: say)",aliasOf:"say",options:[`<text> Text to synthesize (positional arg or --text)`,`--text <text> Text to synthesize (alternative to positional)`,`--voice <id> TTS voice ID (default: ${a.voice})`,`--format <fmt> Output format: pcm, wav, mp3 (default: pcm → WAV)`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--volume <n> TTS volume 0.1-2.0 (default: ${a.volume})`,`--pitch <n> TTS pitch -12 to 12 (default: ${a.pitch})`,`-o, --output <path> Output file path (default: ./tts-<timestamp>.wav)`],examples:['voxflow say "你好世界"','voxflow say "你好世界" --format mp3','voxflow synthesize "Welcome" --voice v-male-Bk7vD3xP --format mp3']},say:{alias:"synthesize",description:"Alias for synthesize"}};e.exports={synthesize:synthesize,handle:handle,meta:A,ApiError:c}},173:(e,t,o)=>{const n=o(9896);const r=o(6928);const{API_BASE:a,TRANSLATE_DEFAULTS:i}=o(3282);const{chatCompletion:s,detectLanguage:l}=o(929);const{parseSrt:c,formatSrt:d}=o(8217);const u={zh:"Chinese (Simplified)",en:"English",ja:"Japanese",ko:"Korean",fr:"French",de:"German",es:"Spanish",pt:"Portuguese",ru:"Russian",ar:"Arabic",th:"Thai",vi:"Vietnamese",it:"Italian",id:"Indonesian",ms:"Malay",yue:"Cantonese"};function batchCaptions(e,t=10){const o=[];for(let n=0;n<e.length;n+=t){o.push(e.slice(n,n+t))}return o}function buildTranslationPrompt(e,t,o){const n=[`You are a professional subtitle translator. Translate each numbered line from ${t} to ${o}.`,"","Rules:","- Return ONLY the translated lines, one per number","- Keep the exact same numbering (1., 2., 3., ...)","- Preserve [Speaker: xxx] tags unchanged — do NOT translate speaker names","- Keep translations concise and natural for subtitles","- Do not add explanations, notes, or extra text"].join("\n");const r=e.map(((e,t)=>{const o=e.speakerId?`[Speaker: ${e.speakerId}] `:"";return`${t+1}. ${o}${e.text}`})).join("\n");return{system:n,user:r}}function parseTranslationResponse(e,t){const o=e.trim().split("\n").filter((e=>e.trim()));const n=[];for(let e=0;e<t.length;e++){const r=new RegExp(`^${e+1}\\.\\s*(.+)$`);const a=o.find((e=>r.test(e.trim())));if(a){const o=a.trim().replace(r,"$1").trim();let i=o;const s=o.match(/^\[Speaker:\s*[^\]]+\]\s*/i);if(s){i=o.slice(s[0].length)}n.push({...t[e],text:i||t[e].text})}else{if(e<o.length){const r=o[e].replace(/^\d+\.\s*/,"").trim();let a=r;const i=r.match(/^\[Speaker:\s*[^\]]+\]\s*/i);if(i){a=r.slice(i[0].length)}n.push({...t[e],text:a||t[e].text})}else{n.push({...t[e]})}}}return n}function realignTimings(e,t){const o=.3;const n=100;const r=t.map(((t,r)=>{const a=e[r];if(!a)return t;const i=a.text.length;const s=t.text.length;if(i===0)return t;const l=s/i;if(l<1+o&&l>1-o){return t}const c=a.endMs-a.startMs;let d=Math.round(c*l);const u=r<e.length-1?e[r+1].startMs:Infinity;const p=u-t.startMs-n;if(d>p&&p>0){d=p}d=Math.max(d,500);return{...t,endMs:t.startMs+d}}));return r}async function translate(e){const sigintHandler=()=>{console.log("\n\nTranslation cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _translate(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _translate(e){const{token:t,api:o=a,srt:n,text:r,input:s,from:l,to:c,output:d,realign:u=false,batchSize:p=i.batchSize}=e;if(n)return _translateSrt({token:t,api:o,srt:n,from:l,to:c,output:d,realign:u,batchSize:p});if(r)return _translateText({token:t,api:o,text:r,from:l,to:c});if(s)return _translateFile({token:t,api:o,input:s,from:l,to:c,output:d});throw new Error("No input specified. Use --srt, --text, or --input")}async function _translateSrt({token:e,api:t,srt:o,from:a,to:l,output:p,realign:A,batchSize:f}){console.log("\n=== VoxFlow Translate (SRT) ===");const h=r.resolve(o);const m=n.readFileSync(h,"utf8");const g=c(m);if(g.length===0){throw new Error(`SRT file is empty or invalid: ${h}`)}console.log(`Input: ${r.basename(h)}`);console.log(`Captions: ${g.length}`);const v=a||await autoDetectLanguage(t,g);const y=u[v]||v;const b=u[l]||l;console.log(`From: ${y} (${v})`);console.log(`To: ${b} (${l})`);console.log(`Realign: ${A?"yes":"no"}`);const w=batchCaptions(g,f);console.log(`Batches: ${w.length} (batch size: ${f})`);console.log("");let x=[];let S=0;for(let o=0;o<w.length;o++){const n=w[o];process.stdout.write(` [${o+1}/${w.length}] Translating ${n.length} captions...`);const{system:r,user:a}=buildTranslationPrompt(n,y,b);const l=await s({apiBase:t,token:e,messages:[{role:"system",content:r},{role:"user",content:a}],temperature:i.temperature,maxTokens:i.maxTokens});const c=parseTranslationResponse(l.content,n);x=x.concat(c);S++;if(l.quota){console.log(` OK (remaining: ${l.quota.remaining})`)}else{console.log(" OK")}}if(A){console.log(" Re-aligning subtitle timing...");x=realignTimings(g,x)}x=x.map(((e,t)=>({...e,id:t+1})));const k=d(x);let C;if(p){C=r.resolve(p)}else{const e=r.basename(h,r.extname(h));const t=r.dirname(h);const o=e+"-"+l+".srt";C=r.resolve(t,o)}n.writeFileSync(C,k,"utf8");console.log(`\n=== Done ===`);console.log(`Output: ${C}`);console.log(`Captions: ${x.length}`);console.log(`Quota: ${S} used`);if(x.length>0){console.log(`\n--- Preview ---`);const e=x.slice(0,3);for(const t of e){const e=t.speakerId?`[${t.speakerId}] `:"";const o=t.text.length>60?t.text.slice(0,57)+"...":t.text;console.log(` ${t.id}. ${e}${o}`)}if(x.length>3){console.log(` ... (${x.length-3} more)`)}}return{outputPath:C,captionCount:x.length,quotaUsed:S,from:v,to:l}}async function _translateText({token:e,api:t,text:o,from:n,to:r}){console.log("\n=== VoxFlow Translate (Text) ===");const a=n||await autoDetectLanguage(t,[{text:o}]);const l=u[a]||a;const c=u[r]||r;console.log(`From: ${l} → To: ${c}`);const d=await s({apiBase:t,token:e,messages:[{role:"system",content:`You are a professional translator. Translate the following text from ${l} to ${c}. Return ONLY the translation, no explanations.`},{role:"user",content:o}],temperature:i.temperature,maxTokens:i.maxTokens});const p=d.content.trim();console.log(`\n${p}`);const A=d.quota?d.quota.remaining:"?";console.log(`\n(Quota: 1 used, ${A} remaining)`);return{text:p,quotaUsed:1,from:a,to:r}}async function _translateFile({token:e,api:t,input:o,from:a,to:l,output:c}){console.log("\n=== VoxFlow Translate (File) ===");const d=r.resolve(o);const p=n.readFileSync(d,"utf8");if(p.trim().length===0){throw new Error(`Input file is empty: ${d}`)}console.log(`Input: ${r.basename(d)}`);console.log(`Length: ${p.length} chars`);const A=a||await autoDetectLanguage(t,[{text:p}]);const f=u[A]||A;const h=u[l]||l;console.log(`From: ${f} → To: ${h}`);const m=await s({apiBase:t,token:e,messages:[{role:"system",content:`You are a professional translator. Translate the following document from ${f} to ${h}. Preserve the original formatting (paragraphs, line breaks, markdown). Return ONLY the translation.`},{role:"user",content:p}],temperature:i.temperature,maxTokens:Math.max(i.maxTokens,4e3)});const g=m.content.trim();let v;if(c){v=r.resolve(c)}else{const e=r.extname(d);const t=r.basename(d,e);const o=r.dirname(d);const n=t+"-"+l+e;v=r.resolve(o,n)}n.writeFileSync(v,g+"\n","utf8");const y=m.quota?m.quota.remaining:"?";console.log(`\n=== Done ===`);console.log(`Output: ${v}`);console.log(`Quota: 1 used, ${y} remaining`);return{outputPath:v,quotaUsed:1,from:A,to:l}}async function autoDetectLanguage(e,t){const o=t.slice(0,3).map((e=>e.text)).join(" ");const n=await l({apiBase:e,text:o});return n||"auto"}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseBoolFlag:r,runWithRetry:a}=o(5537);const{getToken:i,getTokenInfo:s}=o(598);const{API_BASE:l}=o(3282);const c=t(e,"--api")||l;const d=t(e,"--token");const u=t(e,"--srt");const p=t(e,"--text");const A=t(e,"--input");const f=t(e,"--from");const h=t(e,"--to");const m=t(e,"--output","-o");const g=r(e,"--realign");const v=n(e,"--batch-size");if(!h&&!r(e,"--help")){console.error("Error: --to <lang> is required. Example: voxflow translate --srt file.srt --to en");process.exit(1)}const y=["zh","en","ja","ko","fr","de","es","pt","ru","ar","th","vi","it","id","ms","yue"];if(h&&!y.includes(h)){console.error(`Error: --to must be one of: ${y.join(", ")} (got: "${h}")`);process.exit(1)}if(f&&!y.includes(f)&&f!=="auto"){console.error(`Error: --from must be one of: auto, ${y.join(", ")} (got: "${f}")`);process.exit(1)}const b=[u,p,A].filter(Boolean).length;if(b===0&&!r(e,"--help")){console.error("Error: Provide one of: --srt <file>, --text <text>, --input <file>");process.exit(1)}if(b>1){console.error("Error: Specify only one input: --srt, --text, or --input");process.exit(1)}if(u){const e=o(9896);const t=o(6928);const n=t.resolve(u);if(!e.existsSync(n)){console.error(`Error: SRT file not found: ${n}`);process.exit(1)}}if(A){const e=o(9896);const t=o(6928);const n=t.resolve(A);if(!e.existsSync(n)){console.error(`Error: Input file not found: ${n}`);process.exit(1)}}if(v!==undefined){if(isNaN(v)||v<1||v>20){console.error(`Error: --batch-size must be between 1 and 20 (got: "${t(e,"--batch-size")}")`);process.exit(1)}}let w;if(d){w=d}else{w=await i({api:c});const e=s();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const x={token:w,api:c,srt:u,text:p,input:A,from:f,to:h,output:m,realign:g,batchSize:v};await a(translate,x,c,d)}const p={translate:{usage:"[opts]",description:"Translate SRT subtitles, text, or files",options:[`--srt <file> SRT subtitle file to translate`,`--text <text> Inline text to translate`,`--input <file> Text file (.txt, .md) to translate`,`--from <lang> Source language code (default: auto-detect)`,`--to <lang> Target language code (required)`,`--output <path> Output file path (default: <input>-<lang>.<ext>)`,`--realign Adjust subtitle timing for target language length`,`--batch-size <n> Captions per LLM call, 1-20 (default: ${i.batchSize})`],examples:["voxflow translate --srt subtitles.srt --to en",'voxflow translate --text "你好世界" --to en',"voxflow translate --input article.txt --to en --output article-en.txt"]}};e.exports={translate:translate,handle:handle,meta:p,LANG_MAP:u,_test:{buildTranslationPrompt:buildTranslationPrompt,parseTranslationResponse:parseTranslationResponse,realignTimings:realignTimings,batchCaptions:batchCaptions}}},6851:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(857);const{checkFfmpeg:i,extractAudio:s}=o(9933);const{asr:l}=o(5357);const{translate:c}=o(173);const{dub:d}=o(220);const{detectLanguage:u}=o(929);const{parseSrt:p}=o(8217);const{API_BASE:A,VIDEO_TRANSLATE_DEFAULTS:f}=o(3282);const h={zh:"16k_zh",en:"16k_en",ja:"16k_ja",ko:"16k_ko","zh-en":"16k_zh_en"};function resolveAsrLang(e,t){if(t)return t;if(e&&h[e])return h[e];return"16k_zh"}async function videoTranslate(e){const sigintHandler=()=>{console.log("\n\nVideo translation cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);const{startBackgroundRefresh:t}=o(598);const n=t({api:e.api});try{return await _videoTranslate(e)}finally{n();process.removeListener("SIGINT",sigintHandler)}}async function _videoTranslate(e){const{token:t,api:h=A,input:m,from:g,to:v,voice:y,voicesMap:b,realign:w=false,output:x,keepIntermediates:S=false,batchSize:k=f.batchSize,speed:C=f.speed,asrMode:T,asrLang:P,engine:E="auto",model:_}=e;const L=r.resolve(m);const I=r.basename(L,r.extname(L));console.log("\n=== VoxFlow Video Translate ===");console.log(`Input: ${r.basename(L)}`);console.log(`Target: ${v}`);console.log("");const B=n.mkdtempSync(r.join(a.tmpdir(),"voxflow-vtranslate-"));let D=0;const N={};try{process.stdout.write("[1/5] Checking FFmpeg... ");const R=await i();if(!R.available){throw new Error("FFmpeg is required for video-translate. Install: https://ffmpeg.org/download.html")}console.log(`OK (${R.version})`);process.stdout.write("[2/5] Transcribing audio... ");const F=r.join(B,"extracted-audio.wav");await s(L,F);const M=r.join(B,"source.srt");const O=resolveAsrLang(g,P);const $={token:t,api:h,input:F,format:"srt",output:M,lang:O,engine:E,mode:T||"flash"};if(_)$.model=_;let z;try{z=await l($)}catch(ae){if(!T&&E!=="local"&&ae.message&&ae.message.includes("500")){console.log(`\n ⚠ Flash ASR failed, falling back to Azure...`);$.engine="azure";$.mode=undefined;const ie={"16k_zh":"zh-CN","16k_en":"en-US","16k_ja":"ja-JP","16k_ko":"ko-KR","16k_zh_en":"auto"};$.lang=ie[O]||"auto";z=await l($)}else{throw ae}}if(z.captionCount===0){throw new Error("ASR produced no captions. The video may have no audible speech.")}N.asr={mode:z.mode,duration:z.duration,captionCount:z.captionCount,quotaUsed:z.quotaUsed};D+=z.quotaUsed;console.log(`${z.captionCount} captions (${z.mode} mode)`);let j=g;if(!j){const se=n.readFileSync(M,"utf8");const le=p(se);const ce=le.slice(0,3).map((e=>e.text)).join(" ");j=await u({apiBase:h,text:ce})||"auto"}process.stdout.write(`[3/5] Translating (${j} → ${v})... `);const U=r.join(B,`translated-${v}.srt`);const W=await c({token:t,api:h,srt:M,from:j,to:v,output:U,realign:w,batchSize:k});N.translate={from:W.from,to:W.to,captionCount:W.captionCount,quotaUsed:W.quotaUsed};D+=W.quotaUsed;const q=n.readFileSync(U,"utf8");const G=p(q);const X=p(n.readFileSync(M,"utf8"));const{formatSrt:H}=o(8217);const{chatCompletion:Q}=o(929);const{TRANSLATE_DEFAULTS:V}=o(3282);function looksUntranslated(e,t,o){if(e===t)return true;const n=["en","fr","de","es","pt","it","vi"];if(n.includes(o)){const t=(e.match(/[一-鿿-ヿ가-]/g)||[]).length;const o=e.replace(/\s/g,"").length;if(o>0&&t/o>.5)return true}return false}let Y=0;for(let de=0;de<G.length&&de<X.length;de++){if(looksUntranslated(G[de].text,X[de].text,v)){const{LANG_MAP:ue}=o(173);const pe=ue[v]||v;const Ae=ue[j]||j;for(let fe=0;fe<2;fe++){try{if(fe>0)await new Promise((e=>setTimeout(e,2e3)));const he=await Q({apiBase:h,token:t,messages:[{role:"system",content:`Translate this subtitle from ${Ae} to ${pe}. Return ONLY the translation, nothing else.`},{role:"user",content:X[de].text}],temperature:V.temperature,maxTokens:V.maxTokens});const me=he.content.trim();if(me&&me!==X[de].text){G[de].text=me;Y++;break}D++}catch{D++}}}}if(Y>0){const ge=H(G);n.writeFileSync(U,ge,"utf8")}const J=G.filter(((e,t)=>t<X.length&&looksUntranslated(e.text,X[t].text,v))).length;if(Y>0){console.log(`${W.captionCount} captions translated (${Y} fixed on retry)`)}else{console.log(`${W.captionCount} captions translated`)}if(J>0){console.log(` ⚠ ${J} caption(s) could not be translated`)}process.stdout.write("[4/5] Dubbing and merging video... ");const K=I+"-"+v+".mp4";const Z=x?r.resolve(x):r.resolve(r.dirname(L),K);const ee=r.join(B,"dubbed-nosubs.mp4");const te=await d({token:t,api:h,srt:U,voice:y,voicesMap:b,speed:C,speedAuto:true,video:L,output:ee});N.dub={segmentCount:te.segmentCount,duration:te.duration,quotaUsed:te.quotaUsed,warnings:te.warnings};D+=te.quotaUsed;console.log(`${te.segmentCount} segments dubbed`);process.stdout.write("[5/5] Burning subtitles into video... ");const oe=r.join(B,"subs.srt");n.copyFileSync(U,oe);let ne=false;try{const{runCommand:ve}=o(9933);await ve("ffmpeg",["-i",ee,"-vf",`subtitles=${oe}:force_style='FontSize=18,PrimaryColour=&Hffffff,OutlineColour=&H000000,Outline=2,Shadow=1,Alignment=2,Bold=1'`,"-c:a","copy","-y",Z]);ne=true;console.log("OK")}catch(ye){console.log(`skip (${ye.message?.includes("subtitles")?"libass not available":"failed"})`);n.copyFileSync(ee,Z);const be=Z.replace(/\.[^.]+$/,`.${v}.srt`);n.copyFileSync(U,be);console.log(` → Subtitle file saved separately: ${be}`)}if(S){const we=r.resolve(r.dirname(Z),`${I}-${v}-intermediates`);n.mkdirSync(we,{recursive:true});const xe=[["extracted-audio.wav",F],["source.srt",M],[`translated-${v}.srt`,U]];for(const[Se,ke]of xe){if(n.existsSync(ke)){n.copyFileSync(ke,r.join(we,Se))}}console.log(`\nIntermediates saved: ${we}`)}const re=Z.replace(/\.[^.]+$/,`.srt`);n.copyFileSync(U,re);console.log("\n=== Done ===");console.log(`Output: ${Z}`);console.log(`Subtitle: ${re}`);console.log(`Language: ${j} → ${v}`);console.log(`Captions: ${W.captionCount}`);console.log(`Duration: ${te.duration.toFixed(1)}s`);console.log(`Quota: ${D} used`);if(N.dub.warnings&&N.dub.warnings.length>0){console.log(`\nWarnings:`);for(const Ce of N.dub.warnings){console.log(` - ${Ce}`)}}try{const Te=o(6257);await Te(Z)}catch{}return{outputPath:Z,srtOutputPath:re,from:j,to:v,captionCount:W.captionCount,quotaUsed:D,stages:N}}finally{if(!S){try{n.rmSync(B,{recursive:true,force:true})}catch{}}}}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,validateSpeed:i,runWithRetry:s}=o(5537);const{getToken:l,getTokenInfo:c}=o(598);const{API_BASE:d}=o(3282);const u=t(e,"--api")||d;const p=t(e,"--token");const A=t(e,"--input");const f=t(e,"--from");const h=t(e,"--to");const m=t(e,"--voice");const g=t(e,"--voices");const v=t(e,"--output","-o");const y=a(e,"--realign");const b=a(e,"--keep-intermediates");const w=n(e,"--batch-size");const x=r(e,"--speed");const S=t(e,"--asr-mode");const k=t(e,"--asr-lang");const C=t(e,"--engine");const T=t(e,"--model");if(!A){console.error("Error: --input <video-file> is required. Example: voxflow video-translate --input video.mp4 --to en");process.exit(1)}if(!h){console.error("Error: --to <lang> is required. Example: voxflow video-translate --input video.mp4 --to en");process.exit(1)}const P=["zh","en","ja","ko","fr","de","es","pt","ru","ar","th","vi","it"];if(h&&!P.includes(h)){console.error(`Error: --to must be one of: ${P.join(", ")} (got: "${h}")`);process.exit(1)}if(f&&!P.includes(f)&&f!=="auto"){console.error(`Error: --from must be one of: auto, ${P.join(", ")} (got: "${f}")`);process.exit(1)}if(A){const e=o(9896);const t=o(6928);const n=t.resolve(A);if(!e.existsSync(n)){console.error(`Error: Video file not found: ${n}`);process.exit(1)}}i(e,x);if(w!==undefined&&(isNaN(w)||w<1||w>20)){console.error(`Error: --batch-size must be between 1 and 20 (got: "${t(e,"--batch-size")}")`);process.exit(1)}const E=["auto","sentence","flash","file"];if(S&&!E.includes(S)){console.error(`Error: --asr-mode must be one of: ${E.join(", ")} (got: "${S}")`);process.exit(1)}const _=["auto","local","cloud","whisper","tencent"];if(C&&!_.includes(C)){console.error(`Error: --engine must be one of: ${_.join(", ")} (got: "${C}")`);process.exit(1)}if(g){const e=o(9896);const t=o(6928);const n=t.resolve(g);if(!e.existsSync(n)){console.error(`Error: Voices map file not found: ${n}`);process.exit(1)}}let L;if(p){L=p}else{L=await l({api:u});const e=c();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const I={token:L,api:u,input:A,from:f,to:h,voice:m,voicesMap:g,output:v,realign:y,keepIntermediates:b,batchSize:w,speed:x,asrMode:S,asrLang:k,engine:C,model:T};await s(videoTranslate,I,u,p)}const m={"video-translate":{usage:"[opts]",description:"Translate entire video: ASR → translate → dub → merge",options:[`--input <file> Input video file (required)`,`--to <lang> Target language code (required)`,`--from <lang> Source language code (default: auto-detect)`,`--voice <id> TTS voice ID for dubbed audio`,`--voices <file> JSON speaker→voiceId map for multi-speaker dubbing`,`--realign Adjust subtitle timing for target language length`,`--speed <n> TTS speed 0.5-2.0 (default: ${o(3282).VIDEO_TRANSLATE_DEFAULTS.speed})`,`--batch-size <n> Translation batch size, 1-20 (default: ${o(3282).VIDEO_TRANSLATE_DEFAULTS.batchSize})`,`--keep-intermediates Keep intermediate files (SRT, audio) for debugging`,`--output <path> Output MP4 path (default: <input>-<lang>.mp4)`,`--asr-mode <mode> Override ASR mode: auto, sentence, flash, file`,`--asr-lang <engine> Override ASR engine: 16k_zh, 16k_en, 16k_ja, 16k_ko, etc.`,`--engine <engine> ASR engine: auto, local, cloud (default: auto)`,`--model <model> Whisper model for local engine: tiny, base, small, medium, large`],examples:["voxflow video-translate --input video.mp4 --to en","voxflow video-translate --input video.mp4 --from zh --to en --realign","voxflow video-translate --input video.mp4 --to ja --voice v-male-Bk7vD3xP","voxflow video-translate --input video.mp4 --to en --engine local"]}};e.exports={videoTranslate:videoTranslate,handle:handle,meta:m}},2972:(e,t,o)=>{const{request:n,throwNetworkError:r}=o(2768);async function voices(e){const t=e.api;const o=e.extended?"true":"false";let a,i;try{({status:a,data:i}=await n(`${t}/api/tts/voices?includeExtended=${o}`,{method:"GET"}))}catch(e){r(e,t)}if(a!==200){throw new Error(`Failed to fetch voices (${a}): ${i?.message||"unknown error"}`)}let s=i.voices||i.data?.voices||[];if(e.gender){const t=normalizeGender(e.gender);if(!t){throw new Error(`--gender must be one of: male, m, female, f (got: "${e.gender}")`)}s=s.filter((e=>{const o=(e.gender||"").toLowerCase();return o===t}))}if(e.language){const t=e.language.toLowerCase();s=s.filter((e=>(e.language||"").toLowerCase()===t))}if(e.search){const t=e.search.toLowerCase();s=s.filter((e=>{const o=[e.name,e.nameEn,e.tone,e.style,e.description,e.scenarios].filter(Boolean).join(" ").toLowerCase();return o.includes(t)}))}if(s.length===0){console.log("No voices match your criteria.");return}if(e.json){console.log(JSON.stringify(s,null,2))}else{printTable(s)}console.log(`\nFound ${s.length} voice${s.length===1?"":"s"}.`)}function normalizeGender(e){const t=(e||"").toLowerCase().trim();if(t==="male"||t==="m")return"male";if(t==="female"||t==="f")return"female";return null}function printTable(e){const t=24;const o=14;const n=8;const r=22;const a=20;const i=["ID".padEnd(t),"Name".padEnd(o),"Gender".padEnd(n),"Tone".padEnd(r),"Style".padEnd(a)].join(" ");console.log(`\n${i}`);console.log("-".repeat(i.length));for(const i of e){const e=[truncate(i.id||"",t).padEnd(t),truncate(i.name||"",o).padEnd(o),truncate(i.gender||"",n).padEnd(n),truncate(i.tone||"",r).padEnd(r),truncate(i.style||"",a).padEnd(a)].join(" ");console.log(e)}}function truncate(e,t){if(e.length<=t)return e;return e.slice(0,t-1)+"…"}async function handle(e){const{parseFlag:t,parseBoolFlag:n}=o(5537);const{API_BASE:r}=o(3282);const a=t(e,"--api")||r;const i={api:a,search:t(e,"--search"),gender:t(e,"--gender"),language:t(e,"--language"),json:n(e,"--json"),extended:n(e,"--extended")};await voices(i)}const a={voices:{usage:"[opts]",description:"Browse and search available TTS voices",options:[`--search <query> Search by name, tone, style, description`,`--gender <m|f> Filter by gender: male/m or female/f`,`--language <code> Filter by language: zh, en, etc.`,`--extended Include extended voice library (380+ voices)`,`--json Output raw JSON instead of table`],examples:['voxflow voices --search "温柔" --gender female',"voxflow voices --extended --json"]}};e.exports={voices:voices,handle:handle,meta:a}},2093:e=>{"use strict";const t=process.env;function detectAIAgent(e=t){if(e.CLAUDECODE)return"Claude Code";if(e.CURSOR_AGENT||e.CURSOR_TRACE_ID)return"Cursor";if(e.CODEX_SANDBOX||e.CODEX_AGENT||e.OPENAI_CODEX)return"Codex";if(e.GEMINI_CLI||e.GEMINI_AGENT)return"Gemini CLI";if(e.WORKBUDDY||e.WORKBUDDY_AGENT)return"WorkBuddy";if(e.OPENCLAW||e.OPENCLAW_AGENT)return"OpenClaw";if(e.AI_AGENT)return e.AI_AGENT;return null}function isAIAgent(e=t){return detectAIAgent(e)!==null}function buildUserActionPanel({loginUrl:e,agentName:t,timeoutSec:o=600,userCode:n}){const r=Math.round(o/60);const a=t?`USER ACTION REQUIRED (you are running inside ${t})`:`USER ACTION REQUIRED`;const i=["","╔══════════════════════════════════════════════════════════════════╗",`║ 👤 ${a.padEnd(60)} ║`,"╠══════════════════════════════════════════════════════════════════╣","║ 1. Open this URL in your browser to authorize voxflow CLI: ║","║ ║",`║ ${e}`,"║ ║"];if(n){i.push(`║ Pairing code (verify it matches the page): ${n}`,"║ ║")}i.push(`║ 2. After login, this command will continue automatically (waiting ${String(r).padStart(2)} min). ║`,"║ ║","║ Skip this entirely: ║","║ export VOXFLOW_TOKEN=<your-jwt> # then re-run ║","║ ║","║ Already logged in but stuck? ║","║ rm ~/.config/voxflow/token.json # then re-run `voxflow login` ║","╚══════════════════════════════════════════════════════════════════╝","");return i.join("\n")}e.exports={detectAIAgent:detectAIAgent,isAIAgent:isAIAgent,buildUserActionPanel:buildUserActionPanel}},5537:(e,t,o)=>{const{getToken:n}=o(598);const{ApiError:r}=o(2768);function parseFlag(e,...t){for(const o of t){const t=e.indexOf(o);if(t!==-1&&t+1<e.length)return e[t+1]}return null}function parseIntFlag(e,...t){const o=parseFlag(e,...t);return o!=null?parseInt(o,10):undefined}function parseFloatFlag(e,...t){const o=parseFlag(e,...t);return o!=null?parseFloat(o):undefined}function parseBoolFlag(e,...t){return t.some((t=>e.includes(t)))}function validateSpeed(e,t){if(t!==undefined){if(isNaN(t)||t<.5||t>2){console.error(`Error: --speed must be between 0.5 and 2.0 (got: "${parseFlag(e,"--speed")}")`);process.exit(1)}}}function validateSilence(e,t){if(t!==undefined){if(isNaN(t)||t<0||t>5){console.error(`Error: --silence must be between 0 and 5.0 (got: "${parseFlag(e,"--silence")}")`);process.exit(1)}}}function validateOutput(e,t){if(e){const t=[".wav",".mp3"];const o=t.some((t=>e.toLowerCase().endsWith(t)));if(!o){console.error("Error: --output path must end with .wav or .mp3");process.exit(1)}}}function validateFormat(e){if(e&&!["pcm","wav","mp3"].includes(e)){console.error(`Error: --format must be one of: pcm, wav, mp3 (got: "${e}")`);process.exit(1)}}function assertFileExists(e,t){const n=o(6928).resolve(e);if(!o(9896).existsSync(n)){console.error(`Error: ${t} file not found: ${n}`);process.exit(1)}}async function runWithRetry(e,t,o,a){try{return await e(t)}catch(i){if(i instanceof r&&i.code==="token_expired"&&!a){console.log("\nToken expired, refreshing...");t.token=await n({api:o,refresh:true});return await e(t)}else{throw i}}}e.exports={parseFlag:parseFlag,parseIntFlag:parseIntFlag,parseFloatFlag:parseFloatFlag,parseBoolFlag:parseBoolFlag,validateSpeed:validateSpeed,validateSilence:validateSilence,validateOutput:validateOutput,validateFormat:validateFormat,assertFileExists:assertFileExists,runWithRetry:runWithRetry}},4142:(e,t,o)=>{const n=o(9896);const{request:r,throwApiError:a,throwNetworkError:i,ApiError:s}=o(2768);const l=6e4;const c=72e5;const d=5*1024*1024;const u=3e3;const p=3e5;const A={WAITING:0,PROCESSING:1,SUCCESS:2,FAILED:3};function detectMode(e,t,o){if(e<=l&&o<=d){return"sentence"}if(e<=c&&t){return"flash"}return"file"}function authHeaders(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function recognizeSentence(e){const{apiBase:t,token:o,url:l,filePath:c,lang:d="16k_zh",wordInfo:u=false}=e;const p={EngSerViceType:d,VoiceFormat:"wav",SubServiceType:2,WordInfo:u?1:0,ConvertNumMode:1};if(l){p.Url=l;p.SourceType=0}else if(c){const e=n.readFileSync(c);p.Data=e.toString("base64");p.DataLen=e.length;p.SourceType=1}else{throw new Error("Either url or filePath is required for sentence recognition")}try{const{status:e,data:n}=await r(`${t}/api/asr/sentence`,{method:"POST",headers:authHeaders(o)},p);if(e!==200||n.code!=="success"){a(e,n,"ASR sentence")}return{result:n.result,audioTime:n.audioTime,wordList:n.wordList||[],requestId:n.requestId,quota:n.quota}}catch(e){if(e instanceof s)throw e;i(e,t)}}async function recognizeFlash(e){const{apiBase:t,token:o,url:n,lang:l="16k_zh",speakerDiarization:c=false,speakerNumber:d=0}=e;if(!n){throw new Error("Flash recognition requires a URL (cannot use base64 data)")}const u={engine_type:l,voice_format:"wav",url:n,speaker_diarization:c?1:0,speaker_number:d,filter_dirty:0,filter_modal:0,filter_punc:0,convert_num_mode:1,word_info:1,first_channel_only:1};try{const{status:e,data:n}=await r(`${t}/api/asr/flash`,{method:"POST",headers:authHeaders(o)},u);if(e!==200||n.code!=="success"){a(e,n,"ASR flash")}return{flashResult:n.flash_result||[],audioDuration:n.audio_duration||0,requestId:n.request_id,quota:n.quota}}catch(e){if(e instanceof s)throw e;i(e,t)}}async function submitFileTask(e){const{apiBase:t,token:o,url:l,filePath:c,lang:u="16k_zh",speakerDiarization:p=false,speakerNumber:A=0}=e;const f={EngineModelType:u,ChannelNum:1,ResTextFormat:0,FilterDirty:0,FilterModal:0,FilterPunc:0,ConvertNumMode:1,SpeakerDiarization:p?1:0,SpeakerNumber:A};if(l){f.Url=l;f.SourceType=0}else if(c){const e=n.readFileSync(c);if(e.length>d){throw new Error(`File too large for base64 upload (${(e.length/1024/1024).toFixed(1)} MB). `+"Upload to COS first or use flash mode with a URL.")}f.Data=e.toString("base64");f.DataLen=e.length;f.SourceType=1}else{throw new Error("Either url or filePath is required for file recognition")}try{const{status:e,data:n}=await r(`${t}/api/asr/file`,{method:"POST",headers:authHeaders(o)},f);if(e!==200||n.code!=="success"){a(e,n,"ASR file submit")}return{taskId:n.taskId,requestId:n.requestId,quota:n.quota}}catch(e){if(e instanceof s)throw e;i(e,t)}}async function pollTaskResult(e){const{apiBase:t,token:o,taskId:n,pollIntervalMs:l=u,pollTimeoutMs:c=p,onProgress:d}=e;const f=Date.now();while(true){const e=Date.now()-f;if(e>c){throw new Error(`ASR task ${n} timed out after ${Math.round(e/1e3)}s. `+"The task may still complete — check later with: voxflow asr --task-id "+n)}try{const{status:i,data:s}=await r(`${t}/api/asr/result/${n}`,{method:"GET",headers:authHeaders(o)});if(i!==200||s.code!=="success"){a(i,s,"ASR poll")}const l=s.data;const c=l.Status;if(d)d(c,e);if(c===A.SUCCESS){return{result:l.Result,audioTime:l.AudioTime,status:c}}if(c===A.FAILED){throw new Error(`ASR task ${n} failed: ${l.Result||"Unknown error"}`)}}catch(o){if(o instanceof s)throw o;if(e+l<c){}else{i(o,t)}}await sleep(l)}}async function recognize(e){const{mode:t="auto",url:o,durationMs:n,fileSize:r=0}=e;const a=!!o;const i=t==="auto"?detectMode(n,a,r):t;switch(i){case"sentence":{const t=await recognizeSentence(e);return{mode:"sentence",result:t.result,audioTime:t.audioTime,wordList:t.wordList,quota:t.quota}}case"flash":{if(!o){throw new Error("Flash mode requires a URL. Upload the file to COS first, or use --mode auto.")}const t=await recognizeFlash(e);const n=(t.flashResult||[]).flatMap((e=>e.sentence_list?e.sentence_list.map((e=>e.text)):[e.text])).join("");return{mode:"flash",result:n,flashResult:t.flashResult,audioDuration:t.audioDuration,audioTime:(t.audioDuration||0)/1e3,quota:t.quota}}case"file":{const t=await submitFileTask(e);const o=await pollTaskResult({apiBase:e.apiBase,token:e.token,taskId:t.taskId,onProgress:e.onProgress});return{mode:"file",result:o.result,audioTime:o.audioTime,taskId:t.taskId,quota:t.quota}}default:throw new Error(`Unknown ASR mode: ${i}. Use: auto, sentence, flash, or file`)}}function sleep(e){return new Promise((t=>setTimeout(t,e)))}e.exports={recognize:recognize,recognizeSentence:recognizeSentence,recognizeFlash:recognizeFlash,submitFileTask:submitFileTask,pollTaskResult:pollTaskResult,detectMode:detectMode,SENTENCE_MAX_MS:l,FLASH_MAX_MS:c,BASE64_MAX_BYTES:d,TASK_STATUS:A}},3077:(e,t,o)=>{const{request:n,throwApiError:r,throwNetworkError:a}=o(2768);function authHeaders(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function call(e,t,o,i,s){let l;try{l=await n(`${e}${o}`,{method:t,headers:authHeaders(i)},s)}catch(t){a(t,e)}if(l.status<200||l.status>=300){r(l.status,l.data,`ASR jobs ${t} ${o}`)}return l.data?.data||l.data}async function createJob({apiBase:e,token:t,sourceKey:o,sourceFilename:n,sourceSize:r,durationSec:a,language:i="auto",options:s={}}){const l=await call(e,"POST","/api/asr/jobs",t,{sourceKey:o,sourceFilename:n,sourceSize:r,durationSec:a,language:i,options:s});return l.job}async function getJob(e,t,o){const n=await call(e,"GET",`/api/asr/jobs/${encodeURIComponent(o)}`,t);return n.job}async function listJobs(e,t,{limit:o=20,before:n}={}){const r=new URLSearchParams;if(o)r.set("limit",String(o));if(n)r.set("before",n);const a=r.toString();const i=await call(e,"GET",`/api/asr/jobs${a?`?${a}`:""}`,t);return i.jobs||[]}async function cancelJob(e,t,o){const n=await call(e,"DELETE",`/api/asr/jobs/${encodeURIComponent(o)}`,t);return n.job}const i=new Set(["succeeded","failed","cancelled"]);async function waitForTerminal({apiBase:e,token:t,jobId:o,onProgress:n,signal:r}){const a=[2e3,5e3,1e4,3e4];let s=0;while(true){if(r?.aborted){const e=new Error("Aborted");e.code="aborted";throw e}const l=await getJob(e,t,o);if(n)n(l);if(i.has(l.status))return l;const c=a[Math.min(s,a.length-1)];await new Promise((e=>setTimeout(e,c)));s++}}e.exports={createJob:createJob,getJob:getJob,listJobs:listJobs,cancelJob:cancelJob,waitForTerminal:waitForTerminal,TERMINAL_STATUSES:i,__internals:{call:call}}},5013:(e,t,o)=>{const n=o(9896);const r=o(6928);const{getConfigDir:a}=o(3282);function getJobsDir(){const e=r.join(a(),"jobs");n.mkdirSync(e,{recursive:true});return e}function jobFilePath(e){const t=String(e).replace(/[^A-Za-z0-9._-]/g,"_");return r.join(getJobsDir(),`asr-${t}.json`)}function saveJob(e,t){const o=jobFilePath(e);const r=JSON.stringify({jobId:e,...t,lastPolledAt:(new Date).toISOString()},null,2);const a=`${o}.tmp`;n.writeFileSync(a,r);n.renameSync(a,o);return o}function loadJob(e){const t=jobFilePath(e);if(!n.existsSync(t))return null;try{return JSON.parse(n.readFileSync(t,"utf8"))}catch{return null}}function listJobs(){const e=getJobsDir();const t=n.readdirSync(e).filter((e=>e.startsWith("asr-")&&e.endsWith(".json")));return t.map((t=>{try{return JSON.parse(n.readFileSync(r.join(e,t),"utf8"))}catch{return null}})).filter(Boolean).sort(((e,t)=>(t.createdAt||"").localeCompare(e.createdAt||"")))}function deleteJob(e){const t=jobFilePath(e);try{n.unlinkSync(t);return true}catch{return false}}function pruneTerminal(e=30){const t=Date.now()-e*24*60*60*1e3;let o=0;for(const e of listJobs()){if(!["succeeded","failed","cancelled"].includes(e.status))continue;const n=Date.parse(e.lastPolledAt||e.createdAt||0);if(Number.isFinite(n)&&n<t){deleteJob(e.jobId);o++}}return o}e.exports={saveJob:saveJob,loadJob:loadJob,listJobs:listJobs,deleteJob:deleteJob,pruneTerminal:pruneTerminal,getJobsDir:getJobsDir,__internals:{jobFilePath:jobFilePath}}},8683:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(8611);const i=o(5692);const{request:s,throwApiError:l,throwNetworkError:c,ApiError:d}=o(2768);const u={".wav":"audio/wav",".mp3":"audio/mpeg",".m4a":"audio/mp4",".aac":"audio/aac",".flac":"audio/flac",".ogg":"audio/ogg",".opus":"audio/opus",".amr":"audio/amr",".mp4":"video/mp4",".mov":"video/quicktime",".m4v":"video/x-m4v",".mkv":"video/x-matroska",".webm":"video/webm"};function guessContentType(e){return u[r.extname(e).toLowerCase()]||"application/octet-stream"}function putBytes(e,t,o){return new Promise(((n,r)=>{const s=new URL(e);const l=s.protocol==="https:"?i:a;const c=l.request(s,{method:"PUT",headers:{"Content-Length":t.length,"Content-Type":o}},(e=>{const t=[];e.on("data",(e=>t.push(e)));e.on("end",(()=>{if(e.statusCode>=200&&e.statusCode<300){n({status:e.statusCode,etag:e.headers.etag||null})}else{const o=Buffer.concat(t).toString("utf8").slice(0,500);r(new d(`R2 PUT failed (${e.statusCode}): ${o}`,"r2_put_failed",e.statusCode))}}))}));c.on("error",r);c.setTimeout(5*60*1e3,(()=>{c.destroy();r(new Error("R2 PUT timeout (5m)"))}));c.write(t);c.end()}))}async function postJson(e,t,o,n){let r;try{r=await s(`${e}${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`}},n)}catch(t){c(t,e)}if(r.status<200||r.status>=300){l(r.status,r.data,`R2 ${t}`)}return r.data?.data||r.data}async function uploadToR2({filePath:e,apiBase:t,token:o,onProgress:a}){const i=n.statSync(e);const s=i.size;const l=r.basename(e);const c=guessContentType(l);const d=await postJson(t,"/api/asr-upload-r2/init",o,{filename:l,fileSize:s,contentType:c});if(d.mode==="single"){const t=n.readFileSync(e);await putBytes(d.url,t,c);if(a)a({uploaded:s,total:s,partNumber:1,partCount:1});return{key:d.key,mode:"single",size:s}}const u=d.recommendedPartSize||16*1024*1024;const p=Math.ceil(s/u);const A=n.openSync(e,"r");const f=[];let h=0;try{for(let e=1;e<=p;e++){const r=(e-1)*u;const i=Math.min(u,s-r);const l=Buffer.alloc(i);n.readSync(A,l,0,i,r);const{url:m}=await postJson(t,"/api/asr-upload-r2/sign-part",o,{key:d.key,uploadId:d.uploadId,partNumber:e});const{etag:g}=await putBytes(m,l,c);if(!g)throw new Error(`R2 part ${e} returned no ETag`);f.push({PartNumber:e,ETag:g});h+=i;if(a)a({uploaded:h,total:s,partNumber:e,partCount:p})}}catch(e){try{await postJson(t,"/api/asr-upload-r2/abort",o,{key:d.key,uploadId:d.uploadId})}catch{}throw e}finally{try{n.closeSync(A)}catch{}}await postJson(t,"/api/asr-upload-r2/complete",o,{key:d.key,uploadId:d.uploadId,parts:f});return{key:d.key,mode:"multipart",size:s}}e.exports={uploadToR2:uploadToR2,guessContentType:guessContentType,__internals:{putBytes:putBytes,postJson:postJson}}},2040:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(8611);const i=o(5692);const{request:s,throwApiError:l,throwNetworkError:c,ApiError:d}=o(2768);const u={".wav":"audio/wav",".mp3":"audio/mpeg",".ogg":"audio/ogg",".m4a":"audio/x-m4a",".mp4":"video/mp4",".webm":"video/webm",".mov":"video/quicktime",".avi":"video/x-msvideo",".mkv":"video/x-matroska",".flac":"audio/flac"};function getMimeType(e){const t=r.extname(e).toLowerCase();return u[t]||"application/octet-stream"}async function uploadAsrAudio(e,t,o){const a=r.resolve(e);if(!n.existsSync(a)){throw new Error(`File not found: ${a}`)}const i=n.statSync(a);const u=r.basename(a);const p=getMimeType(a);let A;try{const{status:e,data:n}=await s(`${t}/api/asr-upload/get-upload-url`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`}},{filename:u,fileSize:i.size});if(e!==200||n.code!=="success")l(e,n,"Get upload URL");A=n.data}catch(e){if(e instanceof d)throw e;c(e,t)}await putFile(A.signedUrl,a,p);let f;try{const{status:e,data:n}=await s(`${t}/api/asr-upload/get-download-url`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`}},{path:A.path});if(e!==200||n.code!=="success")l(e,n,"Get download URL");f=n.data.downloadUrl}catch(e){if(e instanceof d)throw e;c(e,t)}return{downloadUrl:f,path:A.path}}function putFile(e,t,o){return new Promise(((r,s)=>{const l=new URL(e);const c=l.protocol==="https:"?i:a;const d=n.statSync(t).size;const u=c.request({hostname:l.hostname,port:l.port||(l.protocol==="https:"?443:80),path:l.pathname+l.search,method:"PUT",headers:{"Content-Type":o,"Content-Length":d}},(e=>{const t=[];e.on("data",(e=>t.push(e)));e.on("end",(()=>{if(e.statusCode>=200&&e.statusCode<300){r()}else{const o=Buffer.concat(t).toString("utf8");s(new Error(`Upload failed (${e.statusCode}): ${o.slice(0,300)}`))}}))}));u.on("error",(e=>s(new Error(`Upload network error: ${e.message}`))));u.setTimeout(3e5,(()=>{u.destroy();s(new Error("Upload timeout (5 min)"))}));const p=n.createReadStream(t);p.pipe(u);p.on("error",(e=>{p.destroy();u.destroy();s(new Error(`Failed to read file for upload: ${e.message}`))}))}))}e.exports={uploadAsrAudio:uploadAsrAudio,getMimeType:getMimeType}},7656:(e,t,o)=>{const n=o(6928);const r=o(857);const a=o(9896);const{runCommand:i}=o(9933);async function getMediaInfo(e){const t=n.resolve(e);if(!a.existsSync(t)){throw new Error(`File not found: ${t}`)}try{const{stdout:e}=await i("ffprobe",["-v","error","-show_entries","format=duration","-show_entries","stream=codec_type,codec_name,sample_rate,channels","-of","json",t]);const o=JSON.parse(e);const n=o.streams||[];const r=o.format||{};const a=n.find((e=>e.codec_type==="audio"));const s=n.find((e=>e.codec_type==="video"));const l=parseFloat(r.duration);const c=isNaN(l)?0:Math.round(l*1e3);return{durationMs:c,hasVideo:!!s,hasAudio:!!a,audioCodec:a?a.codec_name:null,sampleRate:a?parseInt(a.sample_rate,10):null,channels:a?parseInt(a.channels,10):null}}catch(t){if(t.code==="ENOENT"){throw new Error("ffprobe not found. Please install ffmpeg:\n"+" macOS: brew install ffmpeg\n"+" Ubuntu: sudo apt install ffmpeg\n"+" Windows: https://ffmpeg.org/download.html")}throw new Error(`Failed to probe media file ${e}: ${t.message}`)}}async function extractAudioForAsr(e,t={}){const o=n.resolve(e);if(!a.existsSync(o)){throw new Error(`File not found: ${o}`)}const s=t.outputDir||r.tmpdir();const l=n.basename(o,n.extname(o));const c=n.join(s,`asr-${l}-${Date.now()}.wav`);try{await i("ffmpeg",["-i",o,"-vn","-acodec","pcm_s16le","-ar","16000","-ac","1","-y",c])}catch(t){if(t.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg:\n"+" macOS: brew install ffmpeg\n"+" Ubuntu: sudo apt install ffmpeg\n"+" Windows: https://ffmpeg.org/download.html")}throw new Error(`Failed to extract audio from ${e}: ${t.stderr||t.message}`)}const d=a.statSync(c);const u=Math.round((d.size-44)/32);return{wavPath:c,durationMs:u,needsCleanup:true}}async function needsConversion(e){try{const t=await getMediaInfo(e);if(t.hasVideo)return true;if(t.audioCodec!=="pcm_s16le")return true;if(t.sampleRate!==16e3)return true;if(t.channels!==1)return true;return false}catch{return true}}e.exports={getMediaInfo:getMediaInfo,extractAudioForAsr:extractAudioForAsr,needsConversion:needsConversion}},7188:e=>{function parseParagraphs(e){const t=e.split(/\n\s*\n/).map((e=>e.replace(/^\d+[.、)\]]\s*/,"").trim())).filter((e=>e.length>0));return t}function createSilence(e,t){const o=Math.floor(t*e);return Buffer.alloc(o*2,0)}function buildWav(e,t){const o=24e3;const n=16;const r=1;const a=n/8;const i=r*a;const s=o*i;const l=createSilence(t,o);let c=0;for(let t=0;t<e.length;t++){c+=e[t].length;if(t<e.length-1){c+=l.length}}const d=Buffer.alloc(44);d.write("RIFF",0);d.writeUInt32LE(36+c,4);d.write("WAVE",8);d.write("fmt ",12);d.writeUInt32LE(16,16);d.writeUInt16LE(1,20);d.writeUInt16LE(r,22);d.writeUInt32LE(o,24);d.writeUInt32LE(s,28);d.writeUInt16LE(i,32);d.writeUInt16LE(n,34);d.write("data",36);d.writeUInt32LE(c,40);const u=[d];for(let t=0;t<e.length;t++){u.push(e[t]);if(t<e.length-1){u.push(l)}}return{wav:Buffer.concat(u),duration:c/s}}function getFileExtension(e){switch(e){case"mp3":return".mp3";case"wav":return".wav";case"pcm":default:return".wav"}}function concatAudioBuffers(e,t,o){if(t==="mp3"){const t=Buffer.concat(e);const o=t.length/4e3;return{audio:t,duration:o}}if(t==="wav"){const t=e.map(extractPcmFromWav);const{wav:n,duration:r}=buildWav(t,o);return{audio:n,duration:r}}const{wav:n,duration:r}=buildWav(e,o);return{audio:n,duration:r}}function extractPcmFromWav(e){const t=Buffer.from("data");let o=12;while(o<e.length-8){if(e.subarray(o,o+4).equals(t)){const t=e.readUInt32LE(o+4);return e.subarray(o+8,o+8+t)}const n=e.readUInt32LE(o+4);o+=8+n}return e.subarray(44)}e.exports={parseParagraphs:parseParagraphs,createSilence:createSilence,buildWav:buildWav,concatAudioBuffers:concatAudioBuffers,getFileExtension:getFileExtension}},598:(e,t,o)=>{const n=o(9896);const r=o(6982);const a=o(3785);const{TOKEN_PATH:i,getConfigDir:s,LOGIN_PAGE:l,AUTH_TIMEOUT_MS:c,API_BASE:d,SUPABASE_URL:u,SUPABASE_ANON_KEY:p}=o(3282);const{detectAIAgent:A,buildUserActionPanel:f}=o(2093);const h=6e5;const m=600;const g=15e3;function isPlausibleRefreshToken(e){if(e==null||e==="")return true;if(typeof e!=="string")return false;if(e.length<6)return false;if(!/^[A-Za-z0-9._\-+/=]+$/.test(e))return false;return true}function classifyRefreshToken(e){if(e==null||e==="")return"missing";if(!isPlausibleRefreshToken(e))return"malformed";return"ok"}const v="token.json.lock";const y=3e4;const b=50;const w=5e3;function lockPath(){return i+".lock"}async function withRefreshLock(e){const t=Date.now();const o=lockPath();try{n.mkdirSync(s(),{recursive:true,mode:448})}catch{}while(true){try{n.mkdirSync(o);try{return await e()}finally{try{n.rmdirSync(o)}catch{}}}catch(r){if(r.code!=="EEXIST")throw r;try{const e=n.statSync(o);if(Date.now()-e.mtimeMs>y){try{n.rmdirSync(o)}catch{}continue}}catch{}if(Date.now()-t>w){return await e()}await new Promise((e=>setTimeout(e,b)))}}}void v;function readCachedToken(){try{const e=n.readFileSync(i,"utf8");const t=JSON.parse(e);if(!t.access_token)return null;const o=decodeJwtPayload(t.access_token);if(!o||!o.exp)return null;const r=Math.floor(Date.now()/1e3);if(o.exp-r<m)return null;return t}catch{return null}}function readRawCachedToken(){try{const e=n.readFileSync(i,"utf8");const t=JSON.parse(e);if(!t.access_token)return null;return t}catch{return null}}function writeCachedToken(e){const t=s();n.mkdirSync(t,{recursive:true,mode:448});let o=e;if(e&&e.refresh_token!=null&&e.refresh_token!==""){if(!isPlausibleRefreshToken(e.refresh_token)){try{process.stderr.write("[33m⚠ Dropped malformed refresh_token (length "+String(e.refresh_token).length+"). Run `voxflow login` to refresh credentials cleanly.[0m\n")}catch{}o={...e,refresh_token:""}}}const r=i+".tmp";const a=n.openSync(r,"w",384);try{n.writeSync(a,JSON.stringify(o,null,2))}finally{n.closeSync(a)}n.chmodSync(r,384);n.renameSync(r,i)}function clearToken(){try{n.unlinkSync(i)}catch{}}function decodeJwtPayload(e){try{const t=e.split(".");if(t.length!==3)return null;const o=t[1].replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(Buffer.from(o,"base64").toString("utf8"))}catch{return null}}function parseManualAuthInput(e){const t=String(e||"").trim();if(!t)return null;let o=null;if(t.startsWith("{")){try{o=JSON.parse(t)}catch{return null}}const n=o?o.access_token||o.accessToken||o.token||"":t;const r=o?o.refresh_token||o.refreshToken||"":"";if(!decodeJwtPayload(n))return null;const a=isPlausibleRefreshToken(r)?r:"";return{accessToken:n,refreshToken:a}}function readEnvToken(){const e=(process.env.VOXFLOW_TOKEN||process.env.VOXFLOW_JWT||"").trim();if(!e)return null;const t=decodeJwtPayload(e);if(!t)return null;if(!t.exp)return null;const o=Math.floor(Date.now()/1e3);if(t.exp-o<m)return null;return e}async function getToken({api:e,force:t,refresh:o}={}){if(!t&&!o){const e=readEnvToken();if(e)return e}if(!t&&!o){const t=readCachedToken();if(t){const o=!e||e===t.api;if(o)return t.access_token}}if(!t){const t=await refreshCachedToken(e);if(t)return t}return browserLogin(e||d)}async function refreshCachedToken(e){return withRefreshLock((async()=>{const t=readCachedToken();if(t)return t.access_token;const o=readRawCachedToken();if(!o?.refresh_token)return null;if(!isPlausibleRefreshToken(o.refresh_token))return null;return tryRefreshToken(o.refresh_token,e||o.api||d)}))}async function tryRefreshToken(e,t=d){try{const o=await supabasePost(`${u}/auth/v1/token?grant_type=refresh_token`,{refresh_token:e});if(o.status>=400||!o.data?.access_token)return null;const n=o.data.access_token;const r=decodeJwtPayload(n);writeCachedToken({access_token:n,refresh_token:o.data.refresh_token||e,expires_at:r?.exp||0,email:r?.email||"",api:t,cached_at:(new Date).toISOString()});return n}catch{return null}}function getTokenInfo(){const e=readCachedToken();if(!e)return null;const t=decodeJwtPayload(e.access_token);if(!t)return null;const o=Math.floor(Date.now()/1e3);return{email:t.email||e.email||"(unknown)",expiresAt:new Date(t.exp*1e3).toISOString(),remaining:t.exp-o,valid:t.exp-o>m,api:e.api||d,refreshHealth:classifyRefreshToken(e.refresh_token)}}async function getFreshTokenInfo({api:e}={}){const t=getTokenInfo();if(t)return t;const o=await refreshCachedToken(e);if(!o)return null;return getTokenInfo()}const x=300;function startBackgroundRefresh({api:e}={}){let t=false;let o=null;function schedule(){if(t)return;const n=readRawCachedToken();if(!n?.access_token)return;const r=decodeJwtPayload(n.access_token);if(!r?.exp)return;const a=Math.floor(Date.now()/1e3);const i=Math.max(30,r.exp-a-x);o=setTimeout((async()=>{if(t)return;try{await refreshCachedToken(e)}catch{}schedule()}),i*1e3);if(typeof o.unref==="function")o.unref()}schedule();return function stop(){t=true;if(o){clearTimeout(o);o=null}}}function postDeviceAuth(e,t,n){return new Promise(((r,a)=>{const i=new URL(t,e);const s=i.protocol==="https:"?o(5692):o(8611);const l=JSON.stringify(n||{});const c=s.request({hostname:i.hostname,port:i.port||(i.protocol==="https:"?443:80),path:i.pathname+i.search,method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(l),"X-Client-Source":"cli"}},(e=>{const t=[];e.on("data",(e=>t.push(e)));e.on("end",(()=>{const o=Buffer.concat(t).toString("utf8");try{r({status:e.statusCode,data:JSON.parse(o)})}catch{r({status:e.statusCode,data:{raw:o}})}}))}));c.on("error",a);c.setTimeout(3e4,(()=>{c.destroy(new Error("Device auth request timeout (30s)"))}));c.write(l);c.end()}))}const S=5;function browserLogin(e){return new Promise(((t,n)=>{(async()=>{let r,a,i,s,l;try{const{status:t,data:o}=await postDeviceAuth(e,"/api/device-auth/code",{});if(t!==200||o?.code!=="success"||!o?.data?.deviceCode){return n(new Error(`Failed to start device login (HTTP ${t}): ${o?.message||"unexpected response"}`))}({deviceCode:r,userCode:a,verifyUrl:i}=o.data);s=o.data.interval||S;l=o.data.expiresIn||300}catch(t){return n(new Error(`Cannot reach ${e}: ${t.message}`))}const d=process.stdin.isTTY;const u=A();const p=u!==null;const m=process.platform==="darwin"||process.platform==="win32"||!!(process.env.DISPLAY||process.env.WAYLAND_DISPLAY);const g=!process.env.CI&&(d||m);if(p){const e=Math.min(h,l*1e3);process.stderr.write(f({loginUrl:i,agentName:u,timeoutSec:Math.round(e/1e3),userCode:a}))}else{const e=d?console.log:e=>process.stderr.write(e+"\n");e("");e("[33m🔐 Confirm device authorization[0m");e("");e(` Pairing code: [1;36m${a}[0m`);e(` Verify at: [36m${i}[0m`);e("");e(` Code expires in ${Math.round(l/60)} min. Polling every ${s}s...`);e("")}if(g){try{const e=(await Promise.resolve().then(o.bind(o,6257))).default;const t=await e(i);if(t&&typeof t.on==="function"){t.on("error",(()=>{process.stderr.write("[31m Browser auto-open failed. Open the URL above manually.[0m\n")}))}}catch{process.stderr.write("[31m Browser auto-open failed. Open the URL above manually.[0m\n")}}const v=Math.min(p?h:c,l*1e3);const y=Date.now()+v;let b=s*1e3;while(Date.now()<y){await new Promise((e=>setTimeout(e,b)));let o;try{o=await postDeviceAuth(e,"/api/device-auth/token",{deviceCode:r})}catch(e){process.stderr.write(`[33m Poll error (${e.message}), retrying...[0m\n`);continue}const{status:a,data:i}=o;const s=i?.code;if(a===200&&s==="success"&&i?.data?.token){const o=i.data.token;const n=i.data.refreshToken||"";const r=decodeJwtPayload(o);writeCachedToken({access_token:o,refresh_token:n,expires_at:r?.exp||0,email:r?.email||"",api:e,cached_at:(new Date).toISOString()});if(d){console.log(`[32m✓ Authorized (${r?.email||"user"})[0m\n`)}return t(o)}if(a===202||s==="authorization_pending"){continue}if(s==="too_many_attempts"){b=Math.min(b*2,3e4);continue}if(s==="expired"||a===410){return n(new Error(`Pairing code expired before login. Run \`voxflow login\` again.`))}if(s==="invalid_device_code"||a===404){return n(new Error(`Pairing code invalidated by server. Run \`voxflow login\` again.`))}if(s==="already_consumed"||a===409){return n(new Error(`Token already issued for this code. Run \`voxflow login\` again.`))}process.stderr.write(`[33m Unexpected poll response (HTTP ${a}, code=${s}), retrying...[0m\n`)}return n(new Error(`Login timed out (${Math.round(v/1e3)}s). `+`Please retry: voxflow login `+`(or set VOXFLOW_TOKEN in env to skip browser login)`))})()}))}function terminalOtpLogin(e=d){return new Promise(((t,o)=>{const n=a.createInterface({input:process.stdin,output:process.stdout});function ask(e){return new Promise((t=>n.question(e,t)))}(async()=>{try{console.log("\n[33m🔐 Terminal login (no browser needed)[0m\n");const o=(await ask(" Email: ")).trim();if(!o||!o.includes("@")){throw new Error("Invalid email address.")}process.stdout.write(" Sending verification code... ");const r=await supabasePost(`${u}/auth/v1/otp`,{email:o,create_user:true});if(r.status>=400){const e=r.data?.error_description||r.data?.msg||r.data?.message||JSON.stringify(r.data);throw new Error(`OTP send failed (${r.status}): ${e}`)}console.log("✓ Code sent!");console.log(" [36mCheck your email for the 6-digit verification code.[0m\n");const a=(await ask(" Verification code: ")).trim();if(!a){throw new Error("No verification code entered.")}process.stdout.write(" Verifying... ");const i=await supabasePost(`${u}/auth/v1/verify`,{email:o,token:a,type:"email"});if(i.status>=400||!i.data?.access_token){const e=i.data?.error_description||i.data?.msg||i.data?.message||"Invalid or expired code";throw new Error(`Verification failed: ${e}`)}const s=i.data.access_token;const l=decodeJwtPayload(s);writeCachedToken({access_token:s,refresh_token:i.data.refresh_token||"",expires_at:l?.exp||0,email:l?.email||o,api:e,cached_at:(new Date).toISOString()});console.log("✓ Success!");console.log(`\n[32m✓ Logged in as ${l?.email||o}[0m\n`);n.close();t(s)}catch(e){n.close();o(e)}})()}))}function supabasePost(e,t){const n=o(5692);const r=JSON.stringify(t);const a=new URL(e);return new Promise(((e,t)=>{const o=n.request({hostname:a.hostname,port:443,path:a.pathname+a.search,method:"POST",headers:{"Content-Type":"application/json",apikey:p,"Content-Length":Buffer.byteLength(r)}},(t=>{let o="";t.on("data",(e=>o+=e));t.on("end",(()=>{try{e({status:t.statusCode,data:JSON.parse(o)})}catch{e({status:t.statusCode,data:o})}}))}));o.on("error",t);o.setTimeout(g,(()=>{o.destroy(new Error(`Supabase auth request timeout (${g/1e3}s)`))}));o.write(r);o.end()}))}function buildPrintOnlyLoginUrl(e=d){const t=r.randomBytes(16).toString("hex");const o=`${l}?state=${t}&callback_port=0`;void e;return o}function acceptManualAuthPayload(e,t=d){const o=parseManualAuthInput(e);if(!o){return{ok:false,reason:"invalid-payload",message:'Could not parse the auth payload — expected JSON {"access_token":"..."} or a raw JWT.'}}const n=decodeJwtPayload(o.accessToken);if(!n){return{ok:false,reason:"invalid-jwt",message:"access_token is not a valid JWT."}}const r=Math.floor(Date.now()/1e3);if(n.exp&&n.exp<r){return{ok:false,reason:"expired",message:"Token has already expired. Re-run the login URL and paste a fresh payload."}}writeCachedToken({access_token:o.accessToken,refresh_token:o.refreshToken||"",expires_at:n.exp||0,email:n.email||"",api:t,cached_at:(new Date).toISOString()});return{ok:true,info:{email:n.email||"(unknown)",expiresAt:new Date((n.exp||0)*1e3).toISOString(),api:t}}}e.exports={getToken:getToken,clearToken:clearToken,getTokenInfo:getTokenInfo,getFreshTokenInfo:getFreshTokenInfo,terminalOtpLogin:terminalOtpLogin,readCachedToken:readCachedToken,buildPrintOnlyLoginUrl:buildPrintOnlyLoginUrl,acceptManualAuthPayload:acceptManualAuthPayload,startBackgroundRefresh:startBackgroundRefresh,isPlausibleRefreshToken:isPlausibleRefreshToken,_test:{parseManualAuthInput:parseManualAuthInput,tryRefreshToken:tryRefreshToken,withRefreshLock:withRefreshLock,refreshCachedToken:refreshCachedToken,classifyRefreshToken:classifyRefreshToken,MIN_TOKEN_REMAINING_SEC:m}}},3282:(e,t,o)=>{const n=o(6928);const r=o(857);const a="https://api.voxflow.studio";const i="https://iwkonytsjysszmafqchh.supabase.co";const s="sb_publishable_TEh6H4K9OWXUNfWSeBKXlQ_hg7Zzm6b";const l="voxflow";function getConfigDir(){if(process.platform==="win32"){return n.join(process.env.APPDATA||n.join(r.homedir(),"AppData","Roaming"),l)}const e=process.env.XDG_CONFIG_HOME||n.join(r.homedir(),".config");return n.join(e,l)}const c=n.join(getConfigDir(),"token.json");const d="v-female-R2s4N9qJ";const u={voice:d,paragraphs:5,speed:1,silence:.8};const p={template:"interview",exchanges:8,length:"medium",style:"professional",speakers:2,silence:.5,speed:1,ducking:.2};const A={voice:d,speed:1,volume:1,pitch:0};const f={voice:d,speed:1,silence:.8};const h={voice:d,speed:1,toleranceMs:50,ducking:.2};const m={lang:"16k_zh",mode:"auto",format:"srt",pollIntervalMs:3e3,pollTimeoutMs:3e5,engine:"auto",model:"base"};const g={batchSize:5,temperature:.3,maxTokens:2e3};const v={batchSize:5,speed:1};const y={voice:d,speed:1,style:"modern",sceneCount:5,silence:.8,language:"en"};const b={voice:d,speed:1,theme:"midnight",template:"free",model:"swift"};const w={voice:d,speed:1,style:"sketchnote",ratio:"portrait",sceneCount:5,language:"zh",quality:"fast",silence:.5,fadeSeconds:.4,bgmVolume:.1};const x={voice:d,speed:1,style:"aurora"};const S={voice:d,speed:1,slides:8,language:"en",engine:"auto"};const k="https://voxflow.studio";const C=`${k}/cli-auth.html`;const T=`${k}/app`;const P=18e4;e.exports={API_BASE:a,WEB_BASE:k,DASHBOARD_URL:T,SUPABASE_URL:i,SUPABASE_ANON_KEY:s,TOKEN_PATH:c,getConfigDir:getConfigDir,DEFAULT_VOICE:d,DEFAULTS:u,STORY_DEFAULTS:u,PODCAST_DEFAULTS:p,SYNTHESIZE_DEFAULTS:A,NARRATE_DEFAULTS:f,DUB_DEFAULTS:h,ASR_DEFAULTS:m,TRANSLATE_DEFAULTS:g,VIDEO_TRANSLATE_DEFAULTS:v,EXPLAIN_DEFAULTS:y,SLIDES_DEFAULTS:b,PRESENT_DEFAULTS:x,PICSTORY_DEFAULTS:w,SUMMARIZE_DEFAULTS:S,LOGIN_PAGE:C,AUTH_TIMEOUT_MS:P}},5503:(e,t,o)=>{const n=o(3785);const{readCachedToken:r}=o(598);const{request:a}=o(2768);const{API_BASE:i}=o(3282);async function promptFeedback(e){if(!process.stdin.isTTY)return;const t=r();if(!t?.access_token)return;const s=n.createInterface({input:process.stdin,output:process.stderr});try{const n=await new Promise((e=>{const t=setTimeout((()=>{s.close();e(null)}),5e3);s.question("\n Was this helpful? [y/n] (skip: Enter) ",(o=>{clearTimeout(t);e(o.trim().toLowerCase())}))}));if(!n||n!=="y"&&n!=="n")return;const r=n==="y";const l=new URL("/api/feedback/submit",i);a(l.href,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t.access_token}`,"X-Client-Source":"cli"}},JSON.stringify({type:"thumbs",feature:e,sentiment:r,context:{cli_version:o(8330).version}})).catch((()=>{}))}finally{s.close()}}e.exports={promptFeedback:promptFeedback}},9933:(e,t,o)=>{const{execFile:n}=o(5317);const r=o(6928);const a=o(9896);function runCommand(e,t,o){return new Promise(((r,a)=>{n(e,t,{timeout:6e5,...o},((e,t,o)=>{if(e){e.stderr=o;e.stdout=t;a(e)}else{r({stdout:t,stderr:o})}}))}))}async function checkFfmpeg(){try{const{stdout:e}=await runCommand("ffmpeg",["-version"]);const t=e.match(/ffmpeg version (\S+)/);const o=t?t[1]:"unknown";let n=false;try{await runCommand("ffprobe",["-version"]);n=true}catch{}return{available:true,version:o,ffprobeAvailable:n}}catch{return{available:false}}}async function getAudioDuration(e){const t=r.resolve(e);try{const{stdout:e}=await runCommand("ffprobe",["-v","error","-show_entries","format=duration","-of","default=noprint_wrappers=1:nokey=1",t]);const o=parseFloat(e.trim());if(isNaN(o)){throw new Error(`Could not parse duration from ffprobe output: "${e.trim()}"`)}return Math.round(o*1e3)}catch(t){if(t.code==="ENOENT"){throw new Error("ffprobe not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to get duration of ${e}: ${t.message}`)}}async function extractAudio(e,t){const o=r.resolve(e);const n=r.resolve(t);try{await runCommand("ffmpeg",["-i",o,"-vn","-acodec","pcm_s16le","-ar","24000","-ac","1","-y",n]);return n}catch(t){if(t.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to extract audio from ${e}: ${t.stderr||t.message}`)}}async function mergeAudioVideo(e,t,o){const n=r.resolve(e);const a=r.resolve(t);const i=r.resolve(o);try{await runCommand("ffmpeg",["-i",n,"-i",a,"-c:v","copy","-map","0:v:0","-map","1:a:0","-shortest","-y",i]);return i}catch(e){if(e.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to merge audio/video: ${e.stderr||e.message}`)}}async function mixWithBgm(e,t,o,n={}){const a=n.ducking??.2;const i=r.resolve(e);const s=r.resolve(t);const l=r.resolve(o);try{await runCommand("ffmpeg",["-i",i,"-i",s,"-filter_complex",`[1:a]volume=${a}[bgm_low];`+`[0:a][bgm_low]amix=inputs=2:duration=first:dropout_transition=2[out]`,"-map","[out]","-acodec","pcm_s16le","-ar","24000","-ac","1","-y",l]);return l}catch(e){if(e.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to mix audio with BGM: ${e.stderr||e.message}`)}}async function warnIfMissingFfmpeg(e,t){const o=await checkFfmpeg();if(o.available)return o;const n=r.join(e,".ffmpeg-hint-shown");try{if(a.existsSync(n))return o}catch{}const i={dub:"video merging (--video), BGM mixing (--bgm), speed adjustment (--speed-auto)",asr:"audio format conversion, video audio extraction"};const s=i[t]||"audio/video processing";console.log("\n[33m"+`[hint] ffmpeg not found — needed for ${s}.\n`+" Install: brew install ffmpeg (macOS) / sudo apt install ffmpeg (Linux)\n"+" Without ffmpeg, some features will be unavailable.[0m\n");try{a.mkdirSync(e,{recursive:true});a.writeFileSync(n,(new Date).toISOString(),"utf8")}catch{}return o}async function cutVideo(e,t,o,n){await runCommand("ffmpeg",["-i",r.resolve(e),"-ss",String(o),"-to",String(n),"-c","copy","-y",r.resolve(t)])}async function overlayText(e,t){a.copyFileSync(r.resolve(e),r.resolve(t))}async function generateTitleCard(e,t,o={}){const n=o.duration||3;const i=o.resolution||"1920x1080";if(o.sourceVideo&&a.existsSync(r.resolve(o.sourceVideo))){const t=e+".frame.jpg";try{await runCommand("ffmpeg",["-i",r.resolve(o.sourceVideo),"-vframes","1","-q:v","2","-y",t]);await runCommand("ffmpeg",["-loop","1","-i",t,"-f","lavfi","-i","anullsrc=r=24000:cl=mono","-t",String(n),"-vf","eq=brightness=-0.4:saturation=0.6,boxblur=8:2","-c:v","libx264","-pix_fmt","yuv420p","-preset","fast","-c:a","aac","-shortest","-y",r.resolve(e)]);return}catch{}finally{try{a.unlinkSync(t)}catch{}}}const s=o.bgColor||"0x0F172A";await runCommand("ffmpeg",["-f","lavfi","-i",`color=c=${s}:s=${i}:d=${n}`,"-f","lavfi","-i","anullsrc=r=24000:cl=mono","-c:v","libx264","-pix_fmt","yuv420p","-c:a","aac","-shortest","-y",r.resolve(e)])}async function replaceAudio(e,t,o){await runCommand("ffmpeg",["-i",r.resolve(e),"-i",r.resolve(t),"-c:v","copy","-map","0:v:0","-map","1:a:0","-shortest","-y",r.resolve(o)])}async function concatVideos(e,t){const o=r.dirname(t);const n=r.join(o,`concat-list-${Date.now()}.txt`);const i=e.map((e=>`file '${r.resolve(e)}'`)).join("\n");a.writeFileSync(n,i,"utf8");try{await runCommand("ffmpeg",["-f","concat","-safe","0","-i",n,"-c","copy","-y",r.resolve(t)])}finally{try{a.unlinkSync(n)}catch{}}}async function normalizeVideo(e,t,o={}){const n=["-i",r.resolve(e),"-c:v","libx264","-preset","fast","-crf","23","-c:a","aac","-ar","24000","-ac","1","-pix_fmt","yuv420p"];if(o.resolution){n.push("-vf",`scale=${o.resolution.replace("x",":")}:force_original_aspect_ratio=decrease,pad=${o.resolution.replace("x",":")}:(ow-iw)/2:(oh-ih)/2`)}n.push("-y",r.resolve(t));await runCommand("ffmpeg",n,{timeout:6e5})}function detectCjkFont(){const e=["/System/Library/Fonts/PingFang.ttc","/System/Library/Fonts/STHeiti Light.ttc","/System/Library/Fonts/Hiragino Sans GB.ttc","/usr/share/fonts/truetype/noto/NotoSansCJK-Regular.ttc","/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc","/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc","C:\\Windows\\Fonts\\msyh.ttc","C:\\Windows\\Fonts\\simhei.ttf"];for(const t of e){if(a.existsSync(t))return t}return null}async function convertAudioFormat(e,t){const o=r.resolve(e);const n=r.resolve(t);if(o===n){throw new Error("convertAudioFormat: input and output paths must differ")}try{await runCommand("ffmpeg",["-i",o,"-y",n]);return n}catch(e){if(e.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to convert audio format: ${e.stderr||e.message}`)}}e.exports={runCommand:runCommand,checkFfmpeg:checkFfmpeg,getAudioDuration:getAudioDuration,extractAudio:extractAudio,mergeAudioVideo:mergeAudioVideo,mixWithBgm:mixWithBgm,warnIfMissingFfmpeg:warnIfMissingFfmpeg,convertAudioFormat:convertAudioFormat,cutVideo:cutVideo,overlayText:overlayText,generateTitleCard:generateTitleCard,replaceAudio:replaceAudio,concatVideos:concatVideos,normalizeVideo:normalizeVideo,detectCjkFont:detectCjkFont}},2768:(e,t,o)=>{const n=o(8611);const r=o(5692);const a=o(6982);const{logger:i}=o(5984);class ApiError extends Error{constructor(e,t,o){super(e);this.name="ApiError";this.code=t;this.status=o}}function throwApiError(e,t,o){if(e===401){throw new ApiError(`Token expired or invalid. Run: voxflow login`,"token_expired",401)}if(e===402||e===429||t&&t.code==="quota_exceeded"){throw new ApiError(`Monthly quota exceeded. Resets in ~30 days. Check: voxflow status`,"quota_exceeded",e)}if(e>=500){const o=t?.code;const n=t?.message||t?.error;let r;if(n||o){const e=o?`[${o}] `:"";r=`: ${e}${n||"no message from server"}`}else{r=". Please try again later."}throw new ApiError(`Server error (${e})${r}`,"server_error",e)}const n=t?.message||t?.code||JSON.stringify(t);throw new ApiError(`${o} failed (${e}): ${n}`,"api_error",e)}function throwNetworkError(e,t){const o=e.code||"";if(o==="ECONNREFUSED"||o==="ENOTFOUND"||o==="ETIMEDOUT"){throw new ApiError(`Cannot reach API server at ${t}. Check your internet connection or try --api <url>`,"network_error",0)}throw e}function request(e,t,o){return new Promise(((s,l)=>{const c=new URL(e);const d=c.protocol==="https:"?r:n;const u=Number(t.timeoutMs)>0?Number(t.timeoutMs):6e4;if(!t.headers){t.headers={}}t.headers["X-Client-Source"]="cli";if(!t.headers["X-Request-Id"]){t.headers["X-Request-Id"]=a.randomUUID()}const p=Date.now();const A=(t.method||"GET").toUpperCase();i.debug({method:A,host:c.host,path:c.pathname},"http request");const f=d.request(c,t,(e=>{const t=[];e.on("data",(e=>t.push(e)));e.on("end",(()=>{const o=Buffer.concat(t).toString("utf8");const n=Date.now()-p;i.debug({method:A,path:c.pathname,status:e.statusCode,durationMs:n,responseBytes:o.length},"http response");try{s({status:e.statusCode,data:JSON.parse(o)})}catch{l(new Error(`Non-JSON response (${e.statusCode}): ${o.slice(0,200)}`))}}))}));f.on("error",(e=>{i.debug({method:A,path:c.pathname,err:e},"http error");l(e)}));f.setTimeout(u,(()=>{f.destroy();const e=Math.round(u/1e3);l(new Error(`Request timeout (${e}s)`))}));if(o)f.write(JSON.stringify(o));f.end()}))}e.exports={request:request,ApiError:ApiError,throwApiError:throwApiError,throwNetworkError:throwNetworkError}},967:(e,t,o)=>{const{request:n,throwApiError:r,throwNetworkError:a}=o(2768);async function generateImage({apiBase:e,token:t,prompt:o,ratio:i="portrait",quality:s="fast",index:l,total:c}){if(l!==undefined&&c!==undefined){process.stdout.write(` Image [${l+1}/${c}]...`)}let d,u;try{({status:d,data:u}=await n(`${e}/api/image/generate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{prompt:o,ratio:i,quality:s}))}catch(t){if(l!==undefined)console.log(" FAIL");a(t,e)}if(d!==200||u.code!=="success"){if(l!==undefined)console.log(" FAIL");r(d,u,`Image generation scene ${(l??0)+1}`)}if(l!==undefined){const e=Math.round(u.image.length*.75/1024);console.log(` OK (~${e} KB)`)}return{imageDataUrl:u.image,quota:u.quota}}e.exports={generateImage:generateImage}},6669:(e,t,o)=>{const{INTENT_TTS_PARAMS:n,getIntentParams:r}=o(7171);e.exports={INTENT_TTS_PARAMS:n,getIntentParams:r}},929:(e,t,o)=>{const{request:n,throwApiError:r,throwNetworkError:a}=o(2768);async function chatCompletion({apiBase:e,token:t,messages:o,temperature:i=.3,maxTokens:s=2e3,model:l,modelPreset:c,timeoutMs:d}){const u={messages:o,temperature:i,max_tokens:s};if(c)u.modelPreset=c;else if(l)u.model=l;let p,A;try{({status:p,data:A}=await n(`${e}/api/llm/chat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:Number(d)>0?Number(d):18e4},u))}catch(t){a(t,e)}if(p!==200||A.code!=="success"){r(p,A,"LLM chat")}return{content:A.content,usage:A.usage,quota:A.quota}}async function detectLanguage({apiBase:e,text:t}){let o,r;try{({status:o,data:r}=await n(`${e}/api/lang-detect/detect`,{method:"POST",headers:{"Content-Type":"application/json"}},{text:t.slice(0,200)}))}catch{return"auto"}if(o===200&&r.code==="success"){return r.language}return"auto"}e.exports={chatCompletion:chatCompletion,detectLanguage:detectLanguage}},5984:e=>{const t=Object.freeze({silent:0,error:1,warn:2,info:3,debug:4,trace:5});const o=Object.freeze({error:"ERR",warn:"WRN",info:"INF",debug:"DBG",trace:"TRC"});const n=Object.freeze({reset:"[0m",dim:"[2m",red:"[31m",yellow:"[33m",cyan:"[36m",magenta:"[35m",grey:"[90m"});const r=Object.freeze({error:n.red,warn:n.yellow,info:n.cyan,debug:n.magenta,trace:n.grey});function parseVerbosityFromArgv(e){let o=0;let n=null;const r=[];for(const a of e){if(a==="-v"||a==="--verbose"){o+=1;continue}if(a==="-vv"){o+=2;continue}if(a==="-vvv"){o+=3;continue}if(a.startsWith("--verbose=")){const e=a.slice("--verbose=".length).toLowerCase();if(e in t)n=e;continue}r.push(a)}const a=process.env.DEBUG||"";const i=a.split(",").some((e=>e.trim()==="voxflow"||e.trim().startsWith("voxflow:")||e.trim()==="*"));if(n)return{level:n,rest:r};if(o>=3)return{level:"trace",rest:r};if(o===2)return{level:"debug",rest:r};if(o===1)return{level:"info",rest:r};if(i)return{level:"debug",rest:r};return{level:"warn",rest:r}}let a=t.warn;let i=Boolean(process.stderr.isTTY)&&process.env.NO_COLOR!=="1";let s=Boolean(process.stderr.isTTY);function setLevel(e){if(!(e in t))return;a=t[e]}function getLevel(){for(const[e,o]of Object.entries(t)){if(o===a)return e}return"warn"}function formatRecord(e,t,a){const l={time:(new Date).toISOString(),level:e,msg:a||"",...t||{}};if(l.err instanceof Error){l.errorMessage=l.err.message;l.errorStack=l.err.stack;delete l.err}if(!s){return JSON.stringify(l)}const c=o[e]||e.toUpperCase();const d=i?r[e]||"":"";const u=i?n.reset:"";const p=i?n.dim:"";const A=i?n.grey:"";const f=l.time.slice(11,19);const{time:h,level:m,msg:g,...v}=l;const y=Object.entries(v).map((([e,t])=>`${A}${e}=${u}${formatValue(t)}`)).join(" ");return`${p}${f}${u} ${d}${c}${u} ${l.msg}${y?" "+y:""}`}function formatValue(e){if(e===null||e===undefined)return String(e);if(typeof e==="string")return e.length>200?JSON.stringify(e.slice(0,200)+"…"):e;if(typeof e==="number"||typeof e==="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function emit(e,o,n){if(t[e]>a)return;let r,i;if(typeof o==="string"){i=o;r=null}else{r=o;i=n}const s=formatRecord(e,r,i);process.stderr.write(s+"\n")}function createLogger(e){const t=e||{};const merge=e=>e?{...t,...e}:t;return{error:(e,t)=>emit("error",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),warn:(e,t)=>emit("warn",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),info:(e,t)=>emit("info",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),debug:(e,t)=>emit("debug",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),trace:(e,t)=>emit("trace",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),with:e=>createLogger({...t,...e}),setLevel:setLevel,getLevel:getLevel}}const l=createLogger({});e.exports={logger:l,parseVerbosityFromArgv:parseVerbosityFromArgv,LEVELS:t,_formatRecord:formatRecord}},132:(e,t,o)=>{const{spawn:n}=o(5317);const r=o(6928);const a=o(857);const i=o(9896);async function checkRecAvailable(){return new Promise((e=>{const t=n("rec",["--version"],{stdio:"pipe"});let o="";t.stdout.on("data",(e=>{o+=e}));t.stderr.on("data",(e=>{o+=e}));t.on("error",(()=>{e({available:false,error:"rec (sox) not found. Please install sox:\n"+" macOS: brew install sox\n"+" Ubuntu: sudo apt install sox\n"+" Windows: https://sourceforge.net/projects/sox/"})}));t.on("close",(t=>{e({available:t===0||o.length>0})}))}))}function recordMic(e={}){const{outputDir:t=a.tmpdir(),maxSeconds:o=300,silenceThreshold:s=0}=e;const l=r.join(t,`mic-${Date.now()}.wav`);return new Promise(((e,t)=>{const r=["-r","16000","-c","1","-b","16","-e","signed-integer",l,"trim","0",String(o)];if(s>0){r.push("silence","1","0.1","1%","1",String(s),"1%")}const a=n("rec",r,{stdio:["pipe","pipe","pipe"]});let c="";a.stderr.on("data",(e=>{c+=e.toString()}));a.on("error",(e=>{if(e.code==="ENOENT"){t(new Error("rec (sox) not found. Please install sox:\n"+" macOS: brew install sox\n"+" Ubuntu: sudo apt install sox\n"+" Windows: https://sourceforge.net/projects/sox/"))}else{t(new Error(`Microphone recording failed: ${e.message}`))}}));let d="timeout";a.on("close",(o=>{if(!i.existsSync(l)){return t(new Error(`Recording failed — no output file created.\n${c.slice(0,500)}`))}const n=i.statSync(l);if(n.size<100){i.unlinkSync(l);return t(new Error("Recording produced an empty file. Check that your microphone is connected and accessible."))}const r=Math.round((n.size-44)/32);e({wavPath:l,durationMs:r,stopped:d})}));const stopRecording=()=>{d="user";a.kill("SIGTERM")};if(process.stdin.isTTY){process.stdin.setRawMode(true);process.stdin.resume();const onKey=e=>{if(e[0]===13||e[0]===10||e[0]===113){d="user";process.stdin.setRawMode(false);process.stdin.removeListener("data",onKey);process.stdin.pause();a.kill("SIGTERM")}if(e[0]===3){d="user";process.stdin.setRawMode(false);process.stdin.removeListener("data",onKey);process.stdin.pause();a.kill("SIGTERM")}};process.stdin.on("data",onKey);a.on("close",(()=>{try{process.stdin.removeListener("data",onKey);if(process.stdin.isTTY){process.stdin.setRawMode(false)}process.stdin.pause()}catch{}}))}a._stopRecording=stopRecording}))}e.exports={recordMic:recordMic,checkRecAvailable:checkRecAvailable}},5319:e=>{function startSpinner(e){const t=["|","/","-","\\"];let o=0;let n=e;process.stdout.write(e+" "+t[0]);const r=setInterval((()=>{o=(o+1)%t.length;process.stdout.write("\b"+t[o])}),120);return{stop(e){clearInterval(r);process.stdout.write("\b"+e+"\n")},update(e){process.stdout.write("\r"+" ".repeat(n.length+4)+"\r");n=e;process.stdout.write(e+" "+t[o])}}}e.exports={startSpinner:startSpinner}},8217:e=>{function parseTimestamp(e){const t=e.trim().match(/^(\d{1,2}):(\d{2}):(\d{2})[,.](\d{3})$/);if(!t){throw new Error(`Invalid SRT timestamp: "${e}"`)}const[,o,n,r,a]=t;return parseInt(o,10)*36e5+parseInt(n,10)*6e4+parseInt(r,10)*1e3+parseInt(a,10)}function formatTimestamp(e){if(e<0)e=0;const t=Math.floor(e/36e5);e%=36e5;const o=Math.floor(e/6e4);e%=6e4;const n=Math.floor(e/1e3);const r=e%1e3;return String(t).padStart(2,"0")+":"+String(o).padStart(2,"0")+":"+String(n).padStart(2,"0")+","+String(r).padStart(3,"0")}function parseSrt(e){if(!e||e.trim().length===0){return[]}const t=[];const o=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");const n=o.split(/\n\s*\n/).filter((e=>e.trim().length>0));for(const e of n){const o=e.trim().split("\n");if(o.length<2)continue;let n=0;let r;const a=o[0].trim();if(/^\d+$/.test(a)){r=parseInt(a,10);n=1}else{r=t.length+1}if(n>=o.length)continue;const i=o[n].trim();const s=i.match(/^(\d{1,2}:\d{2}:\d{2}[,.]\d{3})\s*-->\s*(\d{1,2}:\d{2}:\d{2}[,.]\d{3})/);if(!s)continue;const l=parseTimestamp(s[1]);const c=parseTimestamp(s[2]);n++;const d=o.slice(n).filter((e=>e.trim().length>0));if(d.length===0)continue;const u=d.join("\n");let p;let A=u;const f=u.match(/^\[Speaker:\s*([^\]]+)\]\s*/i);if(f){p=f[1].trim();A=u.slice(f[0].length)}if(A.trim().length===0)continue;t.push({id:r,startMs:l,endMs:c,text:A.trim(),...p?{speakerId:p}:{}})}t.sort(((e,t)=>e.startMs-t.startMs));return t}function formatSrt(e){return e.map(((e,t)=>{const o=e.id||t+1;const n=formatTimestamp(e.startMs);const r=formatTimestamp(e.endMs);const a=e.speakerId?`[Speaker: ${e.speakerId}] `:"";return`${o}\n${n} --\x3e ${r}\n${a}${e.text}`})).join("\n\n")+"\n"}function buildCaptionsFromFlash(e){const t=[];let o=1;for(const n of e){const e=n.sentence_list||[];for(const n of e){const e={id:o++,startMs:n.start_time||0,endMs:n.end_time||0,text:(n.text||"").trim()};if(n.speaker_id!==undefined&&n.speaker_id!==null){e.speakerId=`Speaker${n.speaker_id}`}if(e.text.length>0){t.push(e)}}}return t}function buildCaptionsFromSentence(e,t,o){if(!e||e.trim().length===0)return[];if(o&&o.length>0){return buildCaptionsFromWordList(o,e)}return[{id:1,startMs:0,endMs:Math.round(t*1e3),text:e.trim()}]}function buildCaptionsFromWordList(e,t){if(!e||e.length===0){return t?[{id:1,startMs:0,endMs:0,text:t}]:[]}const o=500;const n=5e3;const r=15e3;const a=/[.!?。!?…]+$/;const getWord=e=>e.word||e.Word||"";const getStart=e=>e.startTime??e.StartTime??0;const getEnd=e=>e.endTime??e.EndTime??0;const i=e.slice(0,10).map(getWord).join("");const s=(i.match(/[\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]/g)||[]).length;const l=s<i.length*.3;const c=l?" ":"";const d=[];let u=[];let p=getStart(e[0]);let A=p;function flushCaption(){if(u.length===0)return;const e=u.join(c).trim();if(e.length>0){d.push({id:d.length+1,startMs:p,endMs:A,text:e})}u=[]}for(let t=0;t<e.length;t++){const i=e[t];const s=getStart(i);const l=getEnd(i);const c=s-A;const d=s-p;if(c>o&&u.length>0){flushCaption();p=s}else if(u.length>0&&d>n&&a.test(u[u.length-1])){flushCaption();p=s}else if(u.length>0&&d>r){flushCaption();p=s}u.push(getWord(i));A=l||A}flushCaption();return d}function buildCaptionsFromFile(e,t){if(!e||e.trim().length===0)return[];if(/^\d+\s*\n\d{2}:\d{2}:\d{2}[,.]\d{3}\s*-->/.test(e.trim())){return parseSrt(e)}return[{id:1,startMs:0,endMs:Math.round(t*1e3),text:e.trim()}]}function formatPlainText(e,t={}){return e.map((e=>{const o=t.includeSpeakers&&e.speakerId?`[${e.speakerId}] `:"";return`${o}${e.text}`})).join("\n")+"\n"}function formatJson(e){return JSON.stringify(e,null,2)+"\n"}e.exports={parseSrt:parseSrt,formatSrt:formatSrt,parseTimestamp:parseTimestamp,formatTimestamp:formatTimestamp,buildCaptionsFromFlash:buildCaptionsFromFlash,buildCaptionsFromSentence:buildCaptionsFromSentence,buildCaptionsFromWordList:buildCaptionsFromWordList,buildCaptionsFromFile:buildCaptionsFromFile,formatPlainText:formatPlainText,formatJson:formatJson}},9167:(e,t,o)=>{const{buildWav:n}=o(7188);const r=24e3;const a=2;const i=r*a/1e3;function msToBytes(e){const t=Math.round(e*i);return t-t%a}function buildTimelinePcm(e,t){if(!e||e.length===0){return{pcm:Buffer.alloc(0),durationMs:0}}const o=Math.max(...e.map((e=>e.endMs)));const n=t||o;const r=msToBytes(n);const a=Buffer.alloc(r,0);for(const t of e){const e=msToBytes(t.startMs);const o=msToBytes(t.endMs)-e;const n=Math.min(t.audioBuffer.length,o,r-e);if(n>0&&e<r){t.audioBuffer.copy(a,e,0,n)}}return{pcm:a,durationMs:n}}function buildTimelineAudio(e,t){const{pcm:o,durationMs:r}=buildTimelinePcm(e,t);if(o.length===0){return{wav:Buffer.alloc(0),duration:0}}const{wav:a}=n([o],0);return{wav:a,duration:r/1e3}}e.exports={buildTimelinePcm:buildTimelinePcm,buildTimelineAudio:buildTimelineAudio,msToBytes:msToBytes,SAMPLE_RATE:r,BYTES_PER_SAMPLE:a,BYTES_PER_MS:i}},1428:(e,t,o)=>{const{request:n,throwApiError:r,throwNetworkError:a}=o(2768);async function synthesizeTTS(e){const{apiBase:t,token:o,text:i,voiceId:s,speed:l=1,volume:c=1,pitch:d,format:u="pcm",index:p,total:A,label:f}=e;const h=f?` ${f}`:"";process.stdout.write(` TTS [${p+1}/${A}]${h}...`);const m={text:i,voiceId:s,speed:l,volume:c,format:u};if(d!=null&&d!==0)m.pitch=d;let g,v;try{({status:g,data:v}=await n(`${t}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},timeoutMs:18e4},m))}catch(e){console.log(" FAIL");a(e,t)}if(g!==200||v.code!=="success"){console.log(" FAIL");r(g,v,`TTS segment ${p+1}`)}const y=Buffer.from(v.audio,"base64");return{audio:y,quota:v.quota}}e.exports={synthesizeTTS:synthesizeTTS}},5764:(e,t,o)=>{"use strict";const n=o(9896);const r=o(857);const a=o(6928);const i=o(8611);const s=o(5692);const l=500*1024*1024;function pickClient(e){if(e.protocol==="https:")return s;if(e.protocol==="http:")return i;return null}function suggestExt(e,t){const o=a.extname(e.pathname);if(o&&o.length<=5)return o;if(t){const e=t.split(";")[0].trim().toLowerCase();if(e==="audio/mpeg")return".mp3";if(e==="audio/wav"||e==="audio/x-wav")return".wav";if(e==="audio/ogg")return".ogg";if(e==="audio/mp4"||e==="audio/m4a")return".m4a";if(e==="audio/flac")return".flac";if(e==="video/mp4")return".mp4"}return".bin"}async function downloadUrlToTempFile(e,t={}){const o=t.maxBytes??l;const i=t.onProgress||(()=>{});return new Promise(((t,s)=>{const l=new Set;const start=(e,c)=>{let d;try{d=new URL(e)}catch{s(new Error(`Invalid URL: ${e}`));return}const u=pickClient(d);if(!u){s(new Error(`Unsupported URL scheme: ${d.protocol} (use http or https)`));return}if(l.has(e)){s(new Error(`Redirect loop detected at ${e}`));return}l.add(e);const p=u.get(e,{headers:{"User-Agent":"voxflow-cli"}},(l=>{if(l.statusCode>=300&&l.statusCode<400&&l.headers.location){if(c<=0){l.resume();s(new Error("Too many redirects (>5)"));return}const t=new URL(l.headers.location,e).toString();l.resume();start(t,c-1);return}if(l.statusCode!==200){l.resume();s(new Error(`Download failed: HTTP ${l.statusCode} for ${e}`));return}const u=l.headers["content-length"]?parseInt(l.headers["content-length"],10):null;if(u!=null&&u>o){l.resume();s(new Error(`Remote file too large (${u} bytes, max ${o})`));return}const p=suggestExt(d,l.headers["content-type"]);const A=a.join(r.tmpdir(),`voxflow-asr-${Date.now()}-${Math.random().toString(36).slice(2,8)}${p}`);const f=n.createWriteStream(A);let h=0;let m=false;l.on("data",(e=>{if(m)return;h+=e.length;if(h>o){m=true;f.destroy();l.destroy();try{n.unlinkSync(A)}catch{}s(new Error(`Remote file exceeded ${o} bytes during download`));return}i(h,u)}));l.pipe(f);f.on("finish",(()=>{if(m)return;f.close((()=>t({filePath:A,size:h})))}));f.on("error",(e=>{try{n.unlinkSync(A)}catch{}s(e)}))}));p.on("error",s);p.setTimeout(6e4,(()=>{p.destroy(new Error(`Download timed out after 60s: ${e}`))}))};start(e,5)}))}e.exports={downloadUrlToTempFile:downloadUrlToTempFile,MAX_DOWNLOAD_BYTES:l}},4178:(e,t,o)=>{const n=o(9896);const r=o(6928);const{execFileSync:a}=o(5317);const i={"16k_zh":"Chinese","16k_en":"English","16k_zh_en":"Chinese","16k_ja":"Japanese","16k_ko":"Korean","16k_zh_dialect":"Chinese","8k_zh":"Chinese","8k_en":"English",zh:"Chinese",en:"English",ja:"Japanese",ko:"Korean",auto:"auto"};function checkWhisperAvailable(){try{const e=resolveWhisperModule();if(e){return{available:true}}return{available:false,error:"nodejs-whisper is not installed.\n"+"Install it with: npm install -g nodejs-whisper\n"+"Then download a model: npx nodejs-whisper download"}}catch{return{available:false,error:"nodejs-whisper is not installed.\n"+"Install it with: npm install -g nodejs-whisper\n"+"Then download a model: npx nodejs-whisper download"}}}function resolveWhisperModule(){try{return require.resolve("nodejs-whisper")}catch{}try{const e=a("npm",["root","-g"],{encoding:"utf8"}).trim();const t=r.join(e,"nodejs-whisper");if(n.existsSync(t)){return t}}catch{}return null}function loadWhisperModule(){const e=resolveWhisperModule();if(!e){throw new Error("nodejs-whisper is not installed.\n"+"Install: npm install -g nodejs-whisper\n"+"Then: npx nodejs-whisper download")}const t=require(e);return t.nodewhisper||t.default||t}async function transcribeLocal(e,t={}){const{model:o="base",lang:r="16k_zh"}=t;if(!n.existsSync(e)){throw new Error(`WAV file not found: ${e}`)}const a=loadWhisperModule();const s=i[r]||i["auto"]||"auto";const l=o;await a(e,{modelName:l,autoDownloadModelName:l,removeWavFileAfterTranscription:false,whisperOptions:{outputInJson:true,outputInSrt:false,outputInVtt:false,outputInTxt:false,wordTimestamps:true,splitOnWord:true,language:s==="auto"?undefined:s}});const c=e+".json";if(!n.existsSync(c)){const t=e.replace(/\.wav$/i,"");const o=[t+".json",e+".json"];const r=o.find((e=>n.existsSync(e)));if(!r){throw new Error("Whisper completed but no JSON output found.\n"+`Expected: ${c}\n`+"Ensure nodejs-whisper is correctly installed.")}}const d=n.readFileSync(c,"utf8");const u=JSON.parse(d);const p=u.transcription||u.segments||[];const A=parseWhisperOutput(p);cleanupWhisperFiles(e);return A}function parseWhisperOutput(e){if(!e||!Array.isArray(e))return[];let t=0;const o=[];for(const n of e){const e=(n.text||"").trim();if(!e)continue;t++;let r=0;let a=0;if(n.timestamps){r=parseTimestamp(n.timestamps.from);a=parseTimestamp(n.timestamps.to)}else if(n.offsets){r=n.offsets.from||0;a=n.offsets.to||0}else if(typeof n.start==="number"){r=Math.round(n.start*1e3);a=Math.round(n.end*1e3)}o.push({id:t,startMs:r,endMs:a,text:e})}return o}function parseTimestamp(e){if(!e||typeof e!=="string")return 0;const t=e.match(/^(\d+):(\d+):(\d+)\.(\d+)$/);if(!t)return 0;const o=parseInt(t[1],10);const n=parseInt(t[2],10);const r=parseInt(t[3],10);const a=parseInt(t[4].padEnd(3,"0").slice(0,3),10);return(o*3600+n*60+r)*1e3+a}function cleanupWhisperFiles(e){const t=[".json",".srt",".vtt",".txt",".lrc",".wts"];for(const o of t){const t=e+o;try{if(n.existsSync(t)){n.unlinkSync(t)}}catch{}}}e.exports={checkWhisperAvailable:checkWhisperAvailable,transcribeLocal:transcribeLocal,parseWhisperOutput:parseWhisperOutput,parseTimestamp:parseTimestamp,LANG_MAP:i}},47:(e,t)=>{function isArray(e){if(Array.isArray){return Array.isArray(e)}return objectToString(e)==="[object Array]"}t.isArray=isArray;function isBoolean(e){return typeof e==="boolean"}t.isBoolean=isBoolean;function isNull(e){return e===null}t.isNull=isNull;function isNullOrUndefined(e){return e==null}t.isNullOrUndefined=isNullOrUndefined;function isNumber(e){return typeof e==="number"}t.isNumber=isNumber;function isString(e){return typeof e==="string"}t.isString=isString;function isSymbol(e){return typeof e==="symbol"}t.isSymbol=isSymbol;function isUndefined(e){return e===void 0}t.isUndefined=isUndefined;function isRegExp(e){return objectToString(e)==="[object RegExp]"}t.isRegExp=isRegExp;function isObject(e){return typeof e==="object"&&e!==null}t.isObject=isObject;function isDate(e){return objectToString(e)==="[object Date]"}t.isDate=isDate;function isError(e){return objectToString(e)==="[object Error]"||e instanceof Error}t.isError=isError;function isFunction(e){return typeof e==="function"}t.isFunction=isFunction;function isPrimitive(e){return e===null||typeof e==="boolean"||typeof e==="number"||typeof e==="string"||typeof e==="symbol"||typeof e==="undefined"}t.isPrimitive=isPrimitive;t.isBuffer=Buffer.isBuffer;function objectToString(e){return Object.prototype.toString.call(e)}},4603:e=>{"use strict";var t=global.MutationObserver||global.WebKitMutationObserver;var o;if(process.browser){if(t){var n=0;var r=new t(nextTick);var a=global.document.createTextNode("");r.observe(a,{characterData:true});o=function(){a.data=n=++n%2}}else if(!global.setImmediate&&typeof global.MessageChannel!=="undefined"){var i=new global.MessageChannel;i.port1.onmessage=nextTick;o=function(){i.port2.postMessage(0)}}else if("document"in global&&"onreadystatechange"in global.document.createElement("script")){o=function(){var e=global.document.createElement("script");e.onreadystatechange=function(){nextTick();e.onreadystatechange=null;e.parentNode.removeChild(e);e=null};global.document.documentElement.appendChild(e)}}else{o=function(){setTimeout(nextTick,0)}}}else{o=function(){process.nextTick(nextTick)}}var s;var l=[];function nextTick(){s=true;var e,t;var o=l.length;while(o){t=l;l=[];e=-1;while(++e<o){t[e]()}o=l.length}s=false}e.exports=immediate;function immediate(e){if(l.push(e)===1&&!s){o()}}},4244:(e,t,o)=>{try{var n=o(9023);if(typeof n.inherits!=="function")throw"";e.exports=n.inherits}catch(t){e.exports=o(1103)}},1103:e=>{if(typeof Object.create==="function"){e.exports=function inherits(e,t){if(t){e.super_=t;e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}})}}}else{e.exports=function inherits(e,t){if(t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype;e.prototype=new TempCtor;e.prototype.constructor=e}}}},8941:(e,t,o)=>{"use strict";var n=o(7441);var r=o(5375);var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.encode=function(e){var t=[];var o,r,i,s,l,c,d;var u=0,p=e.length,A=p;var f=n.getTypeOf(e)!=="string";while(u<e.length){A=p-u;if(!f){o=e.charCodeAt(u++);r=u<p?e.charCodeAt(u++):0;i=u<p?e.charCodeAt(u++):0}else{o=e[u++];r=u<p?e[u++]:0;i=u<p?e[u++]:0}s=o>>2;l=(o&3)<<4|r>>4;c=A>1?(r&15)<<2|i>>6:64;d=A>2?i&63:64;t.push(a.charAt(s)+a.charAt(l)+a.charAt(c)+a.charAt(d))}return t.join("")};t.decode=function(e){var t,o,n;var i,s,l,c;var d=0,u=0;var p="data:";if(e.substr(0,p.length)===p){throw new Error("Invalid base64 input, it looks like a data url.")}e=e.replace(/[^A-Za-z0-9+/=]/g,"");var A=e.length*3/4;if(e.charAt(e.length-1)===a.charAt(64)){A--}if(e.charAt(e.length-2)===a.charAt(64)){A--}if(A%1!==0){throw new Error("Invalid base64 input, bad content length.")}var f;if(r.uint8array){f=new Uint8Array(A|0)}else{f=new Array(A|0)}while(d<e.length){i=a.indexOf(e.charAt(d++));s=a.indexOf(e.charAt(d++));l=a.indexOf(e.charAt(d++));c=a.indexOf(e.charAt(d++));t=i<<2|s>>4;o=(s&15)<<4|l>>2;n=(l&3)<<6|c;f[u++]=t;if(l!==64){f[u++]=o}if(c!==64){f[u++]=n}}return f}},8368:(e,t,o)=>{"use strict";var n=o(8301);var r=o(7623);var a=o(8074);var i=o(3819);function CompressedObject(e,t,o,n,r){this.compressedSize=e;this.uncompressedSize=t;this.crc32=o;this.compression=n;this.compressedContent=r}CompressedObject.prototype={getContentWorker:function(){var e=new r(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new i("data_length"));var t=this;e.on("end",(function(){if(this.streamInfo["data_length"]!==t.uncompressedSize){throw new Error("Bug : uncompressed data size mismatch")}}));return e},getCompressedWorker:function(){return new r(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}};CompressedObject.createWorkerFrom=function(e,t,o){return e.pipe(new a).pipe(new i("uncompressedSize")).pipe(t.compressWorker(o)).pipe(new i("compressedSize")).withStreamInfo("compression",t)};e.exports=CompressedObject},5605:(e,t,o)=>{"use strict";var n=o(270);t.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}};t.DEFLATE=o(3646)},1243:(e,t,o)=>{"use strict";var n=o(7441);function makeTable(){var e,t=[];for(var o=0;o<256;o++){e=o;for(var n=0;n<8;n++){e=e&1?3988292384^e>>>1:e>>>1}t[o]=e}return t}var r=makeTable();function crc32(e,t,o,n){var a=r,i=n+o;e=e^-1;for(var s=n;s<i;s++){e=e>>>8^a[(e^t[s])&255]}return e^-1}function crc32str(e,t,o,n){var a=r,i=n+o;e=e^-1;for(var s=n;s<i;s++){e=e>>>8^a[(e^t.charCodeAt(s))&255]}return e^-1}e.exports=function crc32wrapper(e,t){if(typeof e==="undefined"||!e.length){return 0}var o=n.getTypeOf(e)!=="string";if(o){return crc32(t|0,e,e.length,0)}else{return crc32str(t|0,e,e.length,0)}}},4380:(e,t)=>{"use strict";t.base64=false;t.binary=false;t.dir=false;t.createFolders=true;t.date=null;t.compression=null;t.compressionOptions=null;t.comment=null;t.unixPermissions=null;t.dosPermissions=null},8301:(e,t,o)=>{"use strict";var n=null;if(typeof Promise!=="undefined"){n=Promise}else{n=o(8924)}e.exports={Promise:n}},3646:(e,t,o)=>{"use strict";var n=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Uint32Array!=="undefined";var r=o(7375);var a=o(7441);var i=o(270);var s=n?"uint8array":"array";t.magic="\b\0";function FlateWorker(e,t){i.call(this,"FlateWorker/"+e);this._pako=null;this._pakoAction=e;this._pakoOptions=t;this.meta={}}a.inherits(FlateWorker,i);FlateWorker.prototype.processChunk=function(e){this.meta=e.meta;if(this._pako===null){this._createPako()}this._pako.push(a.transformTo(s,e.data),false)};FlateWorker.prototype.flush=function(){i.prototype.flush.call(this);if(this._pako===null){this._createPako()}this._pako.push([],true)};FlateWorker.prototype.cleanUp=function(){i.prototype.cleanUp.call(this);this._pako=null};FlateWorker.prototype._createPako=function(){this._pako=new r[this._pakoAction]({raw:true,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}};t.compressWorker=function(e){return new FlateWorker("Deflate",e)};t.uncompressWorker=function(){return new FlateWorker("Inflate",{})}},8993:(e,t,o)=>{"use strict";var n=o(7441);var r=o(270);var a=o(885);var i=o(1243);var s=o(2486);var decToHex=function(e,t){var o="",n;for(n=0;n<t;n++){o+=String.fromCharCode(e&255);e=e>>>8}return o};var generateUnixExternalFileAttr=function(e,t){var o=e;if(!e){o=t?16893:33204}return(o&65535)<<16};var generateDosExternalFileAttr=function(e){return(e||0)&63};var generateZipParts=function(e,t,o,r,l,c){var d=e["file"],u=e["compression"],p=c!==a.utf8encode,A=n.transformTo("string",c(d.name)),f=n.transformTo("string",a.utf8encode(d.name)),h=d.comment,m=n.transformTo("string",c(h)),g=n.transformTo("string",a.utf8encode(h)),v=f.length!==d.name.length,y=g.length!==h.length,b,w,x="",S="",k="",C=d.dir,T=d.date;var P={crc32:0,compressedSize:0,uncompressedSize:0};if(!t||o){P.crc32=e["crc32"];P.compressedSize=e["compressedSize"];P.uncompressedSize=e["uncompressedSize"]}var E=0;if(t){E|=8}if(!p&&(v||y)){E|=2048}var _=0;var L=0;if(C){_|=16}if(l==="UNIX"){L=798;_|=generateUnixExternalFileAttr(d.unixPermissions,C)}else{L=20;_|=generateDosExternalFileAttr(d.dosPermissions,C)}b=T.getUTCHours();b=b<<6;b=b|T.getUTCMinutes();b=b<<5;b=b|T.getUTCSeconds()/2;w=T.getUTCFullYear()-1980;w=w<<4;w=w|T.getUTCMonth()+1;w=w<<5;w=w|T.getUTCDate();if(v){S=decToHex(1,1)+decToHex(i(A),4)+f;x+="up"+decToHex(S.length,2)+S}if(y){k=decToHex(1,1)+decToHex(i(m),4)+g;x+="uc"+decToHex(k.length,2)+k}var I="";I+="\n\0";I+=decToHex(E,2);I+=u.magic;I+=decToHex(b,2);I+=decToHex(w,2);I+=decToHex(P.crc32,4);I+=decToHex(P.compressedSize,4);I+=decToHex(P.uncompressedSize,4);I+=decToHex(A.length,2);I+=decToHex(x.length,2);var B=s.LOCAL_FILE_HEADER+I+A+x;var D=s.CENTRAL_FILE_HEADER+decToHex(L,2)+I+decToHex(m.length,2)+"\0\0"+"\0\0"+decToHex(_,4)+decToHex(r,4)+A+x+m;return{fileRecord:B,dirRecord:D}};var generateCentralDirectoryEnd=function(e,t,o,r,a){var i="";var l=n.transformTo("string",a(r));i=s.CENTRAL_DIRECTORY_END+"\0\0"+"\0\0"+decToHex(e,2)+decToHex(e,2)+decToHex(t,4)+decToHex(o,4)+decToHex(l.length,2)+l;return i};var generateDataDescriptors=function(e){var t="";t=s.DATA_DESCRIPTOR+decToHex(e["crc32"],4)+decToHex(e["compressedSize"],4)+decToHex(e["uncompressedSize"],4);return t};function ZipFileWorker(e,t,o,n){r.call(this,"ZipFileWorker");this.bytesWritten=0;this.zipComment=t;this.zipPlatform=o;this.encodeFileName=n;this.streamFiles=e;this.accumulate=false;this.contentBuffer=[];this.dirRecords=[];this.currentSourceOffset=0;this.entriesCount=0;this.currentFile=null;this._sources=[]}n.inherits(ZipFileWorker,r);ZipFileWorker.prototype.push=function(e){var t=e.meta.percent||0;var o=this.entriesCount;var n=this._sources.length;if(this.accumulate){this.contentBuffer.push(e)}else{this.bytesWritten+=e.data.length;r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:o?(t+100*(o-n-1))/o:100}})}};ZipFileWorker.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten;this.currentFile=e["file"].name;var t=this.streamFiles&&!e["file"].dir;if(t){var o=generateZipParts(e,t,false,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:o.fileRecord,meta:{percent:0}})}else{this.accumulate=true}};ZipFileWorker.prototype.closedSource=function(e){this.accumulate=false;var t=this.streamFiles&&!e["file"].dir;var o=generateZipParts(e,t,true,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.dirRecords.push(o.dirRecord);if(t){this.push({data:generateDataDescriptors(e),meta:{percent:100}})}else{this.push({data:o.fileRecord,meta:{percent:0}});while(this.contentBuffer.length){this.push(this.contentBuffer.shift())}}this.currentFile=null};ZipFileWorker.prototype.flush=function(){var e=this.bytesWritten;for(var t=0;t<this.dirRecords.length;t++){this.push({data:this.dirRecords[t],meta:{percent:100}})}var o=this.bytesWritten-e;var n=generateCentralDirectoryEnd(this.dirRecords.length,o,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})};ZipFileWorker.prototype.prepareNextSource=function(){this.previous=this._sources.shift();this.openedSource(this.previous.streamInfo);if(this.isPaused){this.previous.pause()}else{this.previous.resume()}};ZipFileWorker.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;e.on("data",(function(e){t.processChunk(e)}));e.on("end",(function(){t.closedSource(t.previous.streamInfo);if(t._sources.length){t.prepareNextSource()}else{t.end()}}));e.on("error",(function(e){t.error(e)}));return this};ZipFileWorker.prototype.resume=function(){if(!r.prototype.resume.call(this)){return false}if(!this.previous&&this._sources.length){this.prepareNextSource();return true}if(!this.previous&&!this._sources.length&&!this.generatedError){this.end();return true}};ZipFileWorker.prototype.error=function(e){var t=this._sources;if(!r.prototype.error.call(this,e)){return false}for(var o=0;o<t.length;o++){try{t[o].error(e)}catch(e){}}return true};ZipFileWorker.prototype.lock=function(){r.prototype.lock.call(this);var e=this._sources;for(var t=0;t<e.length;t++){e[t].lock()}};e.exports=ZipFileWorker},7718:(e,t,o)=>{"use strict";var n=o(5605);var r=o(8993);var getCompression=function(e,t){var o=e||t;var r=n[o];if(!r){throw new Error(o+" is not a valid compression method !")}return r};t.generateWorker=function(e,t,o){var n=new r(t.streamFiles,o,t.platform,t.encodeFileName);var a=0;try{e.forEach((function(e,o){a++;var r=getCompression(o.options.compression,t.compression);var i=o.options.compressionOptions||t.compressionOptions||{};var s=o.dir,l=o.date;o._compressWorker(r,i).withStreamInfo("file",{name:e,dir:s,date:l,comment:o.comment||"",unixPermissions:o.unixPermissions,dosPermissions:o.dosPermissions}).pipe(n)}));n.entriesCount=a}catch(e){n.error(e)}return n}},3016:(e,t,o)=>{"use strict";function JSZip(){if(!(this instanceof JSZip)){return new JSZip}if(arguments.length){throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.")}this.files=Object.create(null);this.comment=null;this.root="";this.clone=function(){var e=new JSZip;for(var t in this){if(typeof this[t]!=="function"){e[t]=this[t]}}return e}}JSZip.prototype=o(1642);JSZip.prototype.loadAsync=o(7858);JSZip.support=o(5375);JSZip.defaults=o(4380);JSZip.version="3.10.1";JSZip.loadAsync=function(e,t){return(new JSZip).loadAsync(e,t)};JSZip.external=o(8301);e.exports=JSZip},7858:(e,t,o)=>{"use strict";var n=o(7441);var r=o(8301);var a=o(885);var i=o(2747);var s=o(8074);var l=o(1764);function checkEntryCRC32(e){return new r.Promise((function(t,o){var n=e.decompressed.getContentWorker().pipe(new s);n.on("error",(function(e){o(e)})).on("end",(function(){if(n.streamInfo.crc32!==e.decompressed.crc32){o(new Error("Corrupted zip : CRC32 mismatch"))}else{t()}})).resume()}))}e.exports=function(e,t){var o=this;t=n.extend(t||{},{base64:false,checkCRC32:false,optimizedBinaryString:false,createFolders:false,decodeFileName:a.utf8decode});if(l.isNode&&l.isStream(e)){return r.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file."))}return n.prepareContent("the loaded zip file",e,true,t.optimizedBinaryString,t.base64).then((function(e){var o=new i(t);o.load(e);return o})).then((function checkCRC32(e){var o=[r.Promise.resolve(e)];var n=e.files;if(t.checkCRC32){for(var a=0;a<n.length;a++){o.push(checkEntryCRC32(n[a]))}}return r.Promise.all(o)})).then((function addFiles(e){var r=e.shift();var a=r.files;for(var i=0;i<a.length;i++){var s=a[i];var l=s.fileNameStr;var c=n.resolve(s.fileNameStr);o.file(c,s.decompressed,{binary:true,optimizedBinaryString:true,date:s.date,dir:s.dir,comment:s.fileCommentStr.length?s.fileCommentStr:null,unixPermissions:s.unixPermissions,dosPermissions:s.dosPermissions,createFolders:t.createFolders});if(!s.dir){o.file(c).unsafeOriginalName=l}}if(r.zipComment.length){o.comment=r.zipComment}return o}))}},9500:(e,t,o)=>{"use strict";var n=o(7441);var r=o(270);function NodejsStreamInputAdapter(e,t){r.call(this,"Nodejs stream input adapter for "+e);this._upstreamEnded=false;this._bindStream(t)}n.inherits(NodejsStreamInputAdapter,r);NodejsStreamInputAdapter.prototype._bindStream=function(e){var t=this;this._stream=e;e.pause();e.on("data",(function(e){t.push({data:e,meta:{percent:0}})})).on("error",(function(e){if(t.isPaused){this.generatedError=e}else{t.error(e)}})).on("end",(function(){if(t.isPaused){t._upstreamEnded=true}else{t.end()}}))};NodejsStreamInputAdapter.prototype.pause=function(){if(!r.prototype.pause.call(this)){return false}this._stream.pause();return true};NodejsStreamInputAdapter.prototype.resume=function(){if(!r.prototype.resume.call(this)){return false}if(this._upstreamEnded){this.end()}else{this._stream.resume()}return true};e.exports=NodejsStreamInputAdapter},8911:(e,t,o)=>{"use strict";var n=o(5783).Readable;var r=o(7441);r.inherits(NodejsStreamOutputAdapter,n);function NodejsStreamOutputAdapter(e,t,o){n.call(this,t);this._helper=e;var r=this;e.on("data",(function(e,t){if(!r.push(e)){r._helper.pause()}if(o){o(t)}})).on("error",(function(e){r.emit("error",e)})).on("end",(function(){r.push(null)}))}NodejsStreamOutputAdapter.prototype._read=function(){this._helper.resume()};e.exports=NodejsStreamOutputAdapter},1764:e=>{"use strict";e.exports={isNode:typeof Buffer!=="undefined",newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from){return Buffer.from(e,t)}else{if(typeof e==="number"){throw new Error('The "data" argument must not be a number')}return new Buffer(e,t)}},allocBuffer:function(e){if(Buffer.alloc){return Buffer.alloc(e)}else{var t=new Buffer(e);t.fill(0);return t}},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&typeof e.on==="function"&&typeof e.pause==="function"&&typeof e.resume==="function"}}},1642:(e,t,o)=>{"use strict";var n=o(885);var r=o(7441);var a=o(270);var i=o(7933);var s=o(4380);var l=o(8368);var c=o(7648);var d=o(7718);var u=o(1764);var p=o(9500);var fileAdd=function(e,t,o){var n=r.getTypeOf(t),i;var d=r.extend(o||{},s);d.date=d.date||new Date;if(d.compression!==null){d.compression=d.compression.toUpperCase()}if(typeof d.unixPermissions==="string"){d.unixPermissions=parseInt(d.unixPermissions,8)}if(d.unixPermissions&&d.unixPermissions&16384){d.dir=true}if(d.dosPermissions&&d.dosPermissions&16){d.dir=true}if(d.dir){e=forceTrailingSlash(e)}if(d.createFolders&&(i=parentFolder(e))){folderAdd.call(this,i,true)}var A=n==="string"&&d.binary===false&&d.base64===false;if(!o||typeof o.binary==="undefined"){d.binary=!A}var f=t instanceof l&&t.uncompressedSize===0;if(f||d.dir||!t||t.length===0){d.base64=false;d.binary=true;t="";d.compression="STORE";n="string"}var h=null;if(t instanceof l||t instanceof a){h=t}else if(u.isNode&&u.isStream(t)){h=new p(e,t)}else{h=r.prepareContent(e,t,d.binary,d.optimizedBinaryString,d.base64)}var m=new c(e,h,d);this.files[e]=m};var parentFolder=function(e){if(e.slice(-1)==="/"){e=e.substring(0,e.length-1)}var t=e.lastIndexOf("/");return t>0?e.substring(0,t):""};var forceTrailingSlash=function(e){if(e.slice(-1)!=="/"){e+="/"}return e};var folderAdd=function(e,t){t=typeof t!=="undefined"?t:s.createFolders;e=forceTrailingSlash(e);if(!this.files[e]){fileAdd.call(this,e,null,{dir:true,createFolders:t})}return this.files[e]};function isRegExp(e){return Object.prototype.toString.call(e)==="[object RegExp]"}var A={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(e){var t,o,n;for(t in this.files){n=this.files[t];o=t.slice(this.root.length,t.length);if(o&&t.slice(0,this.root.length)===this.root){e(o,n)}}},filter:function(e){var t=[];this.forEach((function(o,n){if(e(o,n)){t.push(n)}}));return t},file:function(e,t,o){if(arguments.length===1){if(isRegExp(e)){var n=e;return this.filter((function(e,t){return!t.dir&&n.test(e)}))}else{var r=this.files[this.root+e];if(r&&!r.dir){return r}else{return null}}}else{e=this.root+e;fileAdd.call(this,e,t,o)}return this},folder:function(e){if(!e){return this}if(isRegExp(e)){return this.filter((function(t,o){return o.dir&&e.test(t)}))}var t=this.root+e;var o=folderAdd.call(this,t);var n=this.clone();n.root=o.name;return n},remove:function(e){e=this.root+e;var t=this.files[e];if(!t){if(e.slice(-1)!=="/"){e+="/"}t=this.files[e]}if(t&&!t.dir){delete this.files[e]}else{var o=this.filter((function(t,o){return o.name.slice(0,e.length)===e}));for(var n=0;n<o.length;n++){delete this.files[o[n].name]}}return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(e){var t,o={};try{o=r.extend(e||{},{streamFiles:false,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:n.utf8encode});o.type=o.type.toLowerCase();o.compression=o.compression.toUpperCase();if(o.type==="binarystring"){o.type="string"}if(!o.type){throw new Error("No output type specified.")}r.checkSupport(o.type);if(o.platform==="darwin"||o.platform==="freebsd"||o.platform==="linux"||o.platform==="sunos"){o.platform="UNIX"}if(o.platform==="win32"){o.platform="DOS"}var s=o.comment||this.comment||"";t=d.generateWorker(this,o,s)}catch(e){t=new a("error");t.error(e)}return new i(t,o.type||"string",o.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){e=e||{};if(!e.type){e.type="nodebuffer"}return this.generateInternalStream(e).toNodejsStream(t)}};e.exports=A},1832:(e,t,o)=>{"use strict";var n=o(5723);var r=o(7441);function ArrayReader(e){n.call(this,e);for(var t=0;t<this.data.length;t++){e[t]=e[t]&255}}r.inherits(ArrayReader,n);ArrayReader.prototype.byteAt=function(e){return this.data[this.zero+e]};ArrayReader.prototype.lastIndexOfSignature=function(e){var t=e.charCodeAt(0),o=e.charCodeAt(1),n=e.charCodeAt(2),r=e.charCodeAt(3);for(var a=this.length-4;a>=0;--a){if(this.data[a]===t&&this.data[a+1]===o&&this.data[a+2]===n&&this.data[a+3]===r){return a-this.zero}}return-1};ArrayReader.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),o=e.charCodeAt(1),n=e.charCodeAt(2),r=e.charCodeAt(3),a=this.readData(4);return t===a[0]&&o===a[1]&&n===a[2]&&r===a[3]};ArrayReader.prototype.readData=function(e){this.checkOffset(e);if(e===0){return[]}var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);this.index+=e;return t};e.exports=ArrayReader},5723:(e,t,o)=>{"use strict";var n=o(7441);function DataReader(e){this.data=e;this.length=e.length;this.index=0;this.zero=0}DataReader.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0){throw new Error("End of data reached (data length = "+this.length+", asked index = "+e+"). Corrupted zip ?")}},setIndex:function(e){this.checkIndex(e);this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t=0,o;this.checkOffset(e);for(o=this.index+e-1;o>=this.index;o--){t=(t<<8)+this.byteAt(o)}this.index+=e;return t},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC((e>>25&127)+1980,(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(e&31)<<1))}};e.exports=DataReader},6853:(e,t,o)=>{"use strict";var n=o(7846);var r=o(7441);function NodeBufferReader(e){n.call(this,e)}r.inherits(NodeBufferReader,n);NodeBufferReader.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);this.index+=e;return t};e.exports=NodeBufferReader},9930:(e,t,o)=>{"use strict";var n=o(5723);var r=o(7441);function StringReader(e){n.call(this,e)}r.inherits(StringReader,n);StringReader.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)};StringReader.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero};StringReader.prototype.readAndCheckSignature=function(e){var t=this.readData(4);return e===t};StringReader.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);this.index+=e;return t};e.exports=StringReader},7846:(e,t,o)=>{"use strict";var n=o(1832);var r=o(7441);function Uint8ArrayReader(e){n.call(this,e)}r.inherits(Uint8ArrayReader,n);Uint8ArrayReader.prototype.readData=function(e){this.checkOffset(e);if(e===0){return new Uint8Array(0)}var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);this.index+=e;return t};e.exports=Uint8ArrayReader},3136:(e,t,o)=>{"use strict";var n=o(7441);var r=o(5375);var a=o(1832);var i=o(9930);var s=o(6853);var l=o(7846);e.exports=function(e){var t=n.getTypeOf(e);n.checkSupport(t);if(t==="string"&&!r.uint8array){return new i(e)}if(t==="nodebuffer"){return new s(e)}if(r.uint8array){return new l(n.transformTo("uint8array",e))}return new a(n.transformTo("array",e))}},2486:(e,t)=>{"use strict";t.LOCAL_FILE_HEADER="PK";t.CENTRAL_FILE_HEADER="PK";t.CENTRAL_DIRECTORY_END="PK";t.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK";t.ZIP64_CENTRAL_DIRECTORY_END="PK";t.DATA_DESCRIPTOR="PK\b"},6308:(e,t,o)=>{"use strict";var n=o(270);var r=o(7441);function ConvertWorker(e){n.call(this,"ConvertWorker to "+e);this.destType=e}r.inherits(ConvertWorker,n);ConvertWorker.prototype.processChunk=function(e){this.push({data:r.transformTo(this.destType,e.data),meta:e.meta})};e.exports=ConvertWorker},8074:(e,t,o)=>{"use strict";var n=o(270);var r=o(1243);var a=o(7441);function Crc32Probe(){n.call(this,"Crc32Probe");this.withStreamInfo("crc32",0)}a.inherits(Crc32Probe,n);Crc32Probe.prototype.processChunk=function(e){this.streamInfo.crc32=r(e.data,this.streamInfo.crc32||0);this.push(e)};e.exports=Crc32Probe},3819:(e,t,o)=>{"use strict";var n=o(7441);var r=o(270);function DataLengthProbe(e){r.call(this,"DataLengthProbe for "+e);this.propName=e;this.withStreamInfo(e,0)}n.inherits(DataLengthProbe,r);DataLengthProbe.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}r.prototype.processChunk.call(this,e)};e.exports=DataLengthProbe},7623:(e,t,o)=>{"use strict";var n=o(7441);var r=o(270);var a=16*1024;function DataWorker(e){r.call(this,"DataWorker");var t=this;this.dataIsReady=false;this.index=0;this.max=0;this.data=null;this.type="";this._tickScheduled=false;e.then((function(e){t.dataIsReady=true;t.data=e;t.max=e&&e.length||0;t.type=n.getTypeOf(e);if(!t.isPaused){t._tickAndRepeat()}}),(function(e){t.error(e)}))}n.inherits(DataWorker,r);DataWorker.prototype.cleanUp=function(){r.prototype.cleanUp.call(this);this.data=null};DataWorker.prototype.resume=function(){if(!r.prototype.resume.call(this)){return false}if(!this._tickScheduled&&this.dataIsReady){this._tickScheduled=true;n.delay(this._tickAndRepeat,[],this)}return true};DataWorker.prototype._tickAndRepeat=function(){this._tickScheduled=false;if(this.isPaused||this.isFinished){return}this._tick();if(!this.isFinished){n.delay(this._tickAndRepeat,[],this);this._tickScheduled=true}};DataWorker.prototype._tick=function(){if(this.isPaused||this.isFinished){return false}var e=a;var t=null,o=Math.min(this.max,this.index+e);if(this.index>=this.max){return this.end()}else{switch(this.type){case"string":t=this.data.substring(this.index,o);break;case"uint8array":t=this.data.subarray(this.index,o);break;case"array":case"nodebuffer":t=this.data.slice(this.index,o);break}this.index=o;return this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})}};e.exports=DataWorker},270:e=>{"use strict";function GenericWorker(e){this.name=e||"default";this.streamInfo={};this.generatedError=null;this.extraStreamInfo={};this.isPaused=true;this.isFinished=false;this.isLocked=false;this._listeners={data:[],end:[],error:[]};this.previous=null}GenericWorker.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished){return false}this.flush();try{this.emit("end");this.cleanUp();this.isFinished=true}catch(e){this.emit("error",e)}return true},error:function(e){if(this.isFinished){return false}if(this.isPaused){this.generatedError=e}else{this.isFinished=true;this.emit("error",e);if(this.previous){this.previous.error(e)}this.cleanUp()}return true},on:function(e,t){this._listeners[e].push(t);return this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null;this._listeners=[]},emit:function(e,t){if(this._listeners[e]){for(var o=0;o<this._listeners[e].length;o++){this._listeners[e][o].call(this,t)}}},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked){throw new Error("The stream '"+this+"' has already been used.")}this.streamInfo=e.streamInfo;this.mergeStreamInfo();this.previous=e;var t=this;e.on("data",(function(e){t.processChunk(e)}));e.on("end",(function(){t.end()}));e.on("error",(function(e){t.error(e)}));return this},pause:function(){if(this.isPaused||this.isFinished){return false}this.isPaused=true;if(this.previous){this.previous.pause()}return true},resume:function(){if(!this.isPaused||this.isFinished){return false}this.isPaused=false;var e=false;if(this.generatedError){this.error(this.generatedError);e=true}if(this.previous){this.previous.resume()}return!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){this.extraStreamInfo[e]=t;this.mergeStreamInfo();return this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo){if(!Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)){continue}this.streamInfo[e]=this.extraStreamInfo[e]}},lock:function(){if(this.isLocked){throw new Error("The stream '"+this+"' has already been used.")}this.isLocked=true;if(this.previous){this.previous.lock()}},toString:function(){var e="Worker "+this.name;if(this.previous){return this.previous+" -> "+e}else{return e}}};e.exports=GenericWorker},7933:(e,t,o)=>{"use strict";var n=o(7441);var r=o(6308);var a=o(270);var i=o(8941);var s=o(5375);var l=o(8301);var c=null;if(s.nodestream){try{c=o(8911)}catch(e){}}function transformZipOutput(e,t,o){switch(e){case"blob":return n.newBlob(n.transformTo("arraybuffer",t),o);case"base64":return i.encode(t);default:return n.transformTo(e,t)}}function concat(e,t){var o,n=0,r=null,a=0;for(o=0;o<t.length;o++){a+=t[o].length}switch(e){case"string":return t.join("");case"array":return Array.prototype.concat.apply([],t);case"uint8array":r=new Uint8Array(a);for(o=0;o<t.length;o++){r.set(t[o],n);n+=t[o].length}return r;case"nodebuffer":return Buffer.concat(t);default:throw new Error("concat : unsupported type '"+e+"'")}}function accumulate(e,t){return new l.Promise((function(o,n){var r=[];var a=e._internalType,i=e._outputType,s=e._mimeType;e.on("data",(function(e,o){r.push(e);if(t){t(o)}})).on("error",(function(e){r=[];n(e)})).on("end",(function(){try{var e=transformZipOutput(i,concat(a,r),s);o(e)}catch(e){n(e)}r=[]})).resume()}))}function StreamHelper(e,t,o){var i=t;switch(t){case"blob":case"arraybuffer":i="uint8array";break;case"base64":i="string";break}try{this._internalType=i;this._outputType=t;this._mimeType=o;n.checkSupport(i);this._worker=e.pipe(new r(i));e.lock()}catch(e){this._worker=new a("error");this._worker.error(e)}}StreamHelper.prototype={accumulate:function(e){return accumulate(this,e)},on:function(e,t){var o=this;if(e==="data"){this._worker.on(e,(function(e){t.call(o,e.data,e.meta)}))}else{this._worker.on(e,(function(){n.delay(t,arguments,o)}))}return this},resume:function(){n.delay(this._worker.resume,[],this._worker);return this},pause:function(){this._worker.pause();return this},toNodejsStream:function(e){n.checkSupport("nodestream");if(this._outputType!=="nodebuffer"){throw new Error(this._outputType+" is not supported by this method")}return new c(this,{objectMode:this._outputType!=="nodebuffer"},e)}};e.exports=StreamHelper},5375:(e,t,o)=>{"use strict";t.base64=true;t.array=true;t.string=true;t.arraybuffer=typeof ArrayBuffer!=="undefined"&&typeof Uint8Array!=="undefined";t.nodebuffer=typeof Buffer!=="undefined";t.uint8array=typeof Uint8Array!=="undefined";if(typeof ArrayBuffer==="undefined"){t.blob=false}else{var n=new ArrayBuffer(0);try{t.blob=new Blob([n],{type:"application/zip"}).size===0}catch(e){try{var r=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder;var a=new r;a.append(n);t.blob=a.getBlob("application/zip").size===0}catch(e){t.blob=false}}}try{t.nodestream=!!o(5783).Readable}catch(e){t.nodestream=false}},885:(e,t,o)=>{"use strict";var n=o(7441);var r=o(5375);var a=o(1764);var i=o(270);var s=new Array(256);for(var l=0;l<256;l++){s[l]=l>=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1}s[254]=s[254]=1;var string2buf=function(e){var t,o,n,a,i,s=e.length,l=0;for(a=0;a<s;a++){o=e.charCodeAt(a);if((o&64512)===55296&&a+1<s){n=e.charCodeAt(a+1);if((n&64512)===56320){o=65536+(o-55296<<10)+(n-56320);a++}}l+=o<128?1:o<2048?2:o<65536?3:4}if(r.uint8array){t=new Uint8Array(l)}else{t=new Array(l)}for(i=0,a=0;i<l;a++){o=e.charCodeAt(a);if((o&64512)===55296&&a+1<s){n=e.charCodeAt(a+1);if((n&64512)===56320){o=65536+(o-55296<<10)+(n-56320);a++}}if(o<128){t[i++]=o}else if(o<2048){t[i++]=192|o>>>6;t[i++]=128|o&63}else if(o<65536){t[i++]=224|o>>>12;t[i++]=128|o>>>6&63;t[i++]=128|o&63}else{t[i++]=240|o>>>18;t[i++]=128|o>>>12&63;t[i++]=128|o>>>6&63;t[i++]=128|o&63}}return t};var utf8border=function(e,t){var o;t=t||e.length;if(t>e.length){t=e.length}o=t-1;while(o>=0&&(e[o]&192)===128){o--}if(o<0){return t}if(o===0){return t}return o+s[e[o]]>t?o:t};var buf2string=function(e){var t,o,r,a;var i=e.length;var l=new Array(i*2);for(o=0,t=0;t<i;){r=e[t++];if(r<128){l[o++]=r;continue}a=s[r];if(a>4){l[o++]=65533;t+=a-1;continue}r&=a===2?31:a===3?15:7;while(a>1&&t<i){r=r<<6|e[t++]&63;a--}if(a>1){l[o++]=65533;continue}if(r<65536){l[o++]=r}else{r-=65536;l[o++]=55296|r>>10&1023;l[o++]=56320|r&1023}}if(l.length!==o){if(l.subarray){l=l.subarray(0,o)}else{l.length=o}}return n.applyFromCharCode(l)};t.utf8encode=function utf8encode(e){if(r.nodebuffer){return a.newBufferFrom(e,"utf-8")}return string2buf(e)};t.utf8decode=function utf8decode(e){if(r.nodebuffer){return n.transformTo("nodebuffer",e).toString("utf-8")}e=n.transformTo(r.uint8array?"uint8array":"array",e);return buf2string(e)};function Utf8DecodeWorker(){i.call(this,"utf-8 decode");this.leftOver=null}n.inherits(Utf8DecodeWorker,i);Utf8DecodeWorker.prototype.processChunk=function(e){var o=n.transformTo(r.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(r.uint8array){var a=o;o=new Uint8Array(a.length+this.leftOver.length);o.set(this.leftOver,0);o.set(a,this.leftOver.length)}else{o=this.leftOver.concat(o)}this.leftOver=null}var i=utf8border(o);var s=o;if(i!==o.length){if(r.uint8array){s=o.subarray(0,i);this.leftOver=o.subarray(i,o.length)}else{s=o.slice(0,i);this.leftOver=o.slice(i,o.length)}}this.push({data:t.utf8decode(s),meta:e.meta})};Utf8DecodeWorker.prototype.flush=function(){if(this.leftOver&&this.leftOver.length){this.push({data:t.utf8decode(this.leftOver),meta:{}});this.leftOver=null}};t.Utf8DecodeWorker=Utf8DecodeWorker;function Utf8EncodeWorker(){i.call(this,"utf-8 encode")}n.inherits(Utf8EncodeWorker,i);Utf8EncodeWorker.prototype.processChunk=function(e){this.push({data:t.utf8encode(e.data),meta:e.meta})};t.Utf8EncodeWorker=Utf8EncodeWorker},7441:(e,t,o)=>{"use strict";var n=o(5375);var r=o(8941);var a=o(1764);var i=o(8301);o(5950);function string2binary(e){var t=null;if(n.uint8array){t=new Uint8Array(e.length)}else{t=new Array(e.length)}return stringToArrayLike(e,t)}t.newBlob=function(e,o){t.checkSupport("blob");try{return new Blob([e],{type:o})}catch(t){try{var n=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder;var r=new n;r.append(e);return r.getBlob(o)}catch(e){throw new Error("Bug : can't construct the Blob.")}}};function identity(e){return e}function stringToArrayLike(e,t){for(var o=0;o<e.length;++o){t[o]=e.charCodeAt(o)&255}return t}var s={stringifyByChunk:function(e,t,o){var n=[],r=0,a=e.length;if(a<=o){return String.fromCharCode.apply(null,e)}while(r<a){if(t==="array"||t==="nodebuffer"){n.push(String.fromCharCode.apply(null,e.slice(r,Math.min(r+o,a))))}else{n.push(String.fromCharCode.apply(null,e.subarray(r,Math.min(r+o,a))))}r+=o}return n.join("")},stringifyByChar:function(e){var t="";for(var o=0;o<e.length;o++){t+=String.fromCharCode(e[o])}return t},applyCanBeUsed:{uint8array:function(){try{return n.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch(e){return false}}(),nodebuffer:function(){try{return n.nodebuffer&&String.fromCharCode.apply(null,a.allocBuffer(1)).length===1}catch(e){return false}}()}};function arrayLikeToString(e){var o=65536,n=t.getTypeOf(e),r=true;if(n==="uint8array"){r=s.applyCanBeUsed.uint8array}else if(n==="nodebuffer"){r=s.applyCanBeUsed.nodebuffer}if(r){while(o>1){try{return s.stringifyByChunk(e,n,o)}catch(e){o=Math.floor(o/2)}}}return s.stringifyByChar(e)}t.applyFromCharCode=arrayLikeToString;function arrayLikeToArrayLike(e,t){for(var o=0;o<e.length;o++){t[o]=e[o]}return t}var l={};l["string"]={string:identity,array:function(e){return stringToArrayLike(e,new Array(e.length))},arraybuffer:function(e){return l["string"]["uint8array"](e).buffer},uint8array:function(e){return stringToArrayLike(e,new Uint8Array(e.length))},nodebuffer:function(e){return stringToArrayLike(e,a.allocBuffer(e.length))}};l["array"]={string:arrayLikeToString,array:identity,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return a.newBufferFrom(e)}};l["arraybuffer"]={string:function(e){return arrayLikeToString(new Uint8Array(e))},array:function(e){return arrayLikeToArrayLike(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:identity,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return a.newBufferFrom(new Uint8Array(e))}};l["uint8array"]={string:arrayLikeToString,array:function(e){return arrayLikeToArrayLike(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:identity,nodebuffer:function(e){return a.newBufferFrom(e)}};l["nodebuffer"]={string:arrayLikeToString,array:function(e){return arrayLikeToArrayLike(e,new Array(e.length))},arraybuffer:function(e){return l["nodebuffer"]["uint8array"](e).buffer},uint8array:function(e){return arrayLikeToArrayLike(e,new Uint8Array(e.length))},nodebuffer:identity};t.transformTo=function(e,o){if(!o){o=""}if(!e){return o}t.checkSupport(e);var n=t.getTypeOf(o);var r=l[n][e](o);return r};t.resolve=function(e){var t=e.split("/");var o=[];for(var n=0;n<t.length;n++){var r=t[n];if(r==="."||r===""&&n!==0&&n!==t.length-1){continue}else if(r===".."){o.pop()}else{o.push(r)}}return o.join("/")};t.getTypeOf=function(e){if(typeof e==="string"){return"string"}if(Object.prototype.toString.call(e)==="[object Array]"){return"array"}if(n.nodebuffer&&a.isBuffer(e)){return"nodebuffer"}if(n.uint8array&&e instanceof Uint8Array){return"uint8array"}if(n.arraybuffer&&e instanceof ArrayBuffer){return"arraybuffer"}};t.checkSupport=function(e){var t=n[e.toLowerCase()];if(!t){throw new Error(e+" is not supported by this platform")}};t.MAX_VALUE_16BITS=65535;t.MAX_VALUE_32BITS=-1;t.pretty=function(e){var t="",o,n;for(n=0;n<(e||"").length;n++){o=e.charCodeAt(n);t+="\\x"+(o<16?"0":"")+o.toString(16).toUpperCase()}return t};t.delay=function(e,t,o){setImmediate((function(){e.apply(o||null,t||[])}))};t.inherits=function(e,t){var Obj=function(){};Obj.prototype=t.prototype;e.prototype=new Obj};t.extend=function(){var e={},t,o;for(t=0;t<arguments.length;t++){for(o in arguments[t]){if(Object.prototype.hasOwnProperty.call(arguments[t],o)&&typeof e[o]==="undefined"){e[o]=arguments[t][o]}}}return e};t.prepareContent=function(e,o,a,s,l){var c=i.Promise.resolve(o).then((function(e){var t=n.blob&&(e instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(e))!==-1);if(t&&typeof FileReader!=="undefined"){return new i.Promise((function(t,o){var n=new FileReader;n.onload=function(e){t(e.target.result)};n.onerror=function(e){o(e.target.error)};n.readAsArrayBuffer(e)}))}else{return e}}));return c.then((function(o){var n=t.getTypeOf(o);if(!n){return i.Promise.reject(new Error("Can't read the data of '"+e+"'. Is it "+"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))}if(n==="arraybuffer"){o=t.transformTo("uint8array",o)}else if(n==="string"){if(l){o=r.decode(o)}else if(a){if(s!==true){o=string2binary(o)}}}return o}))}},2747:(e,t,o)=>{"use strict";var n=o(3136);var r=o(7441);var a=o(2486);var i=o(2695);var s=o(5375);function ZipEntries(e){this.files=[];this.loadOptions=e}ZipEntries.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature "+"("+r.pretty(t)+", expected "+r.pretty(e)+")")}},isSignature:function(e,t){var o=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4);var r=n===t;this.reader.setIndex(o);return r},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2);this.diskWithCentralDirStart=this.reader.readInt(2);this.centralDirRecordsOnThisDisk=this.reader.readInt(2);this.centralDirRecords=this.reader.readInt(2);this.centralDirSize=this.reader.readInt(4);this.centralDirOffset=this.reader.readInt(4);this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength);var t=s.uint8array?"uint8array":"array";var o=r.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(o)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8);this.reader.skip(4);this.diskNumber=this.reader.readInt(4);this.diskWithCentralDirStart=this.reader.readInt(4);this.centralDirRecordsOnThisDisk=this.reader.readInt(8);this.centralDirRecords=this.reader.readInt(8);this.centralDirSize=this.reader.readInt(8);this.centralDirOffset=this.reader.readInt(8);this.zip64ExtensibleData={};var e=this.zip64EndOfCentralSize-44,t=0,o,n,r;while(t<e){o=this.reader.readInt(2);n=this.reader.readInt(4);r=this.reader.readData(n);this.zip64ExtensibleData[o]={id:o,length:n,value:r}}},readBlockZip64EndOfCentralLocator:function(){this.diskWithZip64CentralDirStart=this.reader.readInt(4);this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8);this.disksCount=this.reader.readInt(4);if(this.disksCount>1){throw new Error("Multi-volumes zip are not supported")}},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++){t=this.files[e];this.reader.setIndex(t.localHeaderOffset);this.checkSignature(a.LOCAL_FILE_HEADER);t.readLocalPart(this.reader);t.handleUTF8();t.processAttributes()}},readCentralDir:function(){var e;this.reader.setIndex(this.centralDirOffset);while(this.reader.readAndCheckSignature(a.CENTRAL_FILE_HEADER)){e=new i({zip64:this.zip64},this.loadOptions);e.readCentralPart(this.reader);this.files.push(e)}if(this.centralDirRecords!==this.files.length){if(this.centralDirRecords!==0&&this.files.length===0){throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)}else{}}},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(a.CENTRAL_DIRECTORY_END);if(e<0){var t=!this.isSignature(0,a.LOCAL_FILE_HEADER);if(t){throw new Error("Can't find end of central directory : is this a zip file ? "+"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html")}else{throw new Error("Corrupted zip: can't find end of central directory")}}this.reader.setIndex(e);var o=e;this.checkSignature(a.CENTRAL_DIRECTORY_END);this.readBlockEndOfCentral();if(this.diskNumber===r.MAX_VALUE_16BITS||this.diskWithCentralDirStart===r.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===r.MAX_VALUE_16BITS||this.centralDirRecords===r.MAX_VALUE_16BITS||this.centralDirSize===r.MAX_VALUE_32BITS||this.centralDirOffset===r.MAX_VALUE_32BITS){this.zip64=true;e=this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR);if(e<0){throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator")}this.reader.setIndex(e);this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR);this.readBlockZip64EndOfCentralLocator();if(!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,a.ZIP64_CENTRAL_DIRECTORY_END)){this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_END);if(this.relativeOffsetEndOfZip64CentralDir<0){throw new Error("Corrupted zip: can't find the ZIP64 end of central directory")}}this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_END);this.readBlockZip64EndOfCentral()}var n=this.centralDirOffset+this.centralDirSize;if(this.zip64){n+=20;n+=12+this.zip64EndOfCentralSize}var i=o-n;if(i>0){if(this.isSignature(o,a.CENTRAL_FILE_HEADER)){}else{this.reader.zero=i}}else if(i<0){throw new Error("Corrupted zip: missing "+Math.abs(i)+" bytes.")}},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e);this.readEndOfCentral();this.readCentralDir();this.readLocalFiles()}};e.exports=ZipEntries},2695:(e,t,o)=>{"use strict";var n=o(3136);var r=o(7441);var a=o(8368);var i=o(1243);var s=o(885);var l=o(5605);var c=o(5375);var d=0;var u=3;var findCompression=function(e){for(var t in l){if(!Object.prototype.hasOwnProperty.call(l,t)){continue}if(l[t].magic===e){return l[t]}}return null};function ZipEntry(e,t){this.options=e;this.loadOptions=t}ZipEntry.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(e){var t,o;e.skip(22);this.fileNameLength=e.readInt(2);o=e.readInt(2);this.fileName=e.readData(this.fileNameLength);e.skip(o);if(this.compressedSize===-1||this.uncompressedSize===-1){throw new Error("Bug or corrupted zip : didn't get enough information from the central directory "+"(compressedSize === -1 || uncompressedSize === -1)")}t=findCompression(this.compressionMethod);if(t===null){throw new Error("Corrupted zip : compression "+r.pretty(this.compressionMethod)+" unknown (inner file : "+r.transformTo("string",this.fileName)+")")}this.decompressed=new a(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2);e.skip(2);this.bitFlag=e.readInt(2);this.compressionMethod=e.readString(2);this.date=e.readDate();this.crc32=e.readInt(4);this.compressedSize=e.readInt(4);this.uncompressedSize=e.readInt(4);var t=e.readInt(2);this.extraFieldsLength=e.readInt(2);this.fileCommentLength=e.readInt(2);this.diskNumberStart=e.readInt(2);this.internalFileAttributes=e.readInt(2);this.externalFileAttributes=e.readInt(4);this.localHeaderOffset=e.readInt(4);if(this.isEncrypted()){throw new Error("Encrypted zip are not supported")}e.skip(t);this.readExtraFields(e);this.parseZIP64ExtraField(e);this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null;this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=this.externalFileAttributes&16?true:false;if(e===d){this.dosPermissions=this.externalFileAttributes&63}if(e===u){this.unixPermissions=this.externalFileAttributes>>16&65535}if(!this.dir&&this.fileNameStr.slice(-1)==="/"){this.dir=true}},parseZIP64ExtraField:function(){if(!this.extraFields[1]){return}var e=n(this.extraFields[1].value);if(this.uncompressedSize===r.MAX_VALUE_32BITS){this.uncompressedSize=e.readInt(8)}if(this.compressedSize===r.MAX_VALUE_32BITS){this.compressedSize=e.readInt(8)}if(this.localHeaderOffset===r.MAX_VALUE_32BITS){this.localHeaderOffset=e.readInt(8)}if(this.diskNumberStart===r.MAX_VALUE_32BITS){this.diskNumberStart=e.readInt(4)}},readExtraFields:function(e){var t=e.index+this.extraFieldsLength,o,n,r;if(!this.extraFields){this.extraFields={}}while(e.index+4<t){o=e.readInt(2);n=e.readInt(2);r=e.readData(n);this.extraFields[o]={id:o,length:n,value:r}}e.setIndex(t)},handleUTF8:function(){var e=c.uint8array?"uint8array":"array";if(this.useUTF8()){this.fileNameStr=s.utf8decode(this.fileName);this.fileCommentStr=s.utf8decode(this.fileComment)}else{var t=this.findExtraFieldUnicodePath();if(t!==null){this.fileNameStr=t}else{var o=r.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(o)}var n=this.findExtraFieldUnicodeComment();if(n!==null){this.fileCommentStr=n}else{var a=r.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(a)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);if(t.readInt(1)!==1){return null}if(i(this.fileName)!==t.readInt(4)){return null}return s.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);if(t.readInt(1)!==1){return null}if(i(this.fileComment)!==t.readInt(4)){return null}return s.utf8decode(t.readData(e.length-5))}return null}};e.exports=ZipEntry},7648:(e,t,o)=>{"use strict";var n=o(7933);var r=o(7623);var a=o(885);var i=o(8368);var s=o(270);var ZipObject=function(e,t,o){this.name=e;this.dir=o.dir;this.date=o.date;this.comment=o.comment;this.unixPermissions=o.unixPermissions;this.dosPermissions=o.dosPermissions;this._data=t;this._dataBinary=o.binary;this.options={compression:o.compression,compressionOptions:o.compressionOptions}};ZipObject.prototype={internalStream:function(e){var t=null,o="string";try{if(!e){throw new Error("No output type specified.")}o=e.toLowerCase();var r=o==="string"||o==="text";if(o==="binarystring"||o==="text"){o="string"}t=this._decompressWorker();var i=!this._dataBinary;if(i&&!r){t=t.pipe(new a.Utf8EncodeWorker)}if(!i&&r){t=t.pipe(new a.Utf8DecodeWorker)}}catch(e){t=new s("error");t.error(e)}return new n(t,o,"")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||"nodebuffer").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof i&&this._data.compression.magic===e.magic){return this._data.getCompressedWorker()}else{var o=this._decompressWorker();if(!this._dataBinary){o=o.pipe(new a.Utf8EncodeWorker)}return i.createWorkerFrom(o,e,t)}},_decompressWorker:function(){if(this._data instanceof i){return this._data.getContentWorker()}else if(this._data instanceof s){return this._data}else{return new r(this._data)}}};var l=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"];var removedFn=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")};for(var c=0;c<l.length;c++){ZipObject.prototype[l[c]]=removedFn}e.exports=ZipObject},7029:e=>{var t={}.toString;e.exports=Array.isArray||function(e){return t.call(e)=="[object Array]"}},7499:(e,t,o)=>{"use strict";var n=o(6246);var r=Object.keys||function(e){var t=[];for(var o in e){t.push(o)}return t};e.exports=Duplex;var a=Object.create(o(47));a.inherits=o(4244);var i=o(953);var s=o(3305);a.inherits(Duplex,i);{var l=r(s.prototype);for(var c=0;c<l.length;c++){var d=l[c];if(!Duplex.prototype[d])Duplex.prototype[d]=s.prototype[d]}}function Duplex(e){if(!(this instanceof Duplex))return new Duplex(e);i.call(this,e);s.call(this,e);if(e&&e.readable===false)this.readable=false;if(e&&e.writable===false)this.writable=false;this.allowHalfOpen=true;if(e&&e.allowHalfOpen===false)this.allowHalfOpen=false;this.once("end",onend)}Object.defineProperty(Duplex.prototype,"writableHighWaterMark",{enumerable:false,get:function(){return this._writableState.highWaterMark}});function onend(){if(this.allowHalfOpen||this._writableState.ended)return;n.nextTick(onEndNT,this)}function onEndNT(e){e.end()}Object.defineProperty(Duplex.prototype,"destroyed",{get:function(){if(this._readableState===undefined||this._writableState===undefined){return false}return this._readableState.destroyed&&this._writableState.destroyed},set:function(e){if(this._readableState===undefined||this._writableState===undefined){return}this._readableState.destroyed=e;this._writableState.destroyed=e}});Duplex.prototype._destroy=function(e,t){this.push(null);this.end();n.nextTick(t,e)}},8567:(e,t,o)=>{"use strict";e.exports=PassThrough;var n=o(2557);var r=Object.create(o(47));r.inherits=o(4244);r.inherits(PassThrough,n);function PassThrough(e){if(!(this instanceof PassThrough))return new PassThrough(e);n.call(this,e)}PassThrough.prototype._transform=function(e,t,o){o(null,e)}},953:(e,t,o)=>{"use strict";var n=o(6246);e.exports=Readable;var r=o(7029);var a;Readable.ReadableState=ReadableState;var i=o(4434).EventEmitter;var EElistenerCount=function(e,t){return e.listeners(t).length};var s=o(4503);var l=o(1742).Buffer;var c=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(e){return l.from(e)}function _isUint8Array(e){return l.isBuffer(e)||e instanceof c}var d=Object.create(o(47));d.inherits=o(4244);var u=o(9023);var p=void 0;if(u&&u.debuglog){p=u.debuglog("stream")}else{p=function(){}}var A=o(4673);var f=o(9269);var h;d.inherits(Readable,s);var m=["error","close","destroy","pause","resume"];function prependListener(e,t,o){if(typeof e.prependListener==="function")return e.prependListener(t,o);if(!e._events||!e._events[t])e.on(t,o);else if(r(e._events[t]))e._events[t].unshift(o);else e._events[t]=[o,e._events[t]]}function ReadableState(e,t){a=a||o(7499);e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode;if(n)this.objectMode=this.objectMode||!!e.readableObjectMode;var r=e.highWaterMark;var i=e.readableHighWaterMark;var s=this.objectMode?16:16*1024;if(r||r===0)this.highWaterMark=r;else if(n&&(i||i===0))this.highWaterMark=i;else this.highWaterMark=s;this.highWaterMark=Math.floor(this.highWaterMark);this.buffer=new A;this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.resumeScheduled=false;this.destroyed=false;this.defaultEncoding=e.defaultEncoding||"utf8";this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(e.encoding){if(!h)h=o(6374).I;this.decoder=new h(e.encoding);this.encoding=e.encoding}}function Readable(e){a=a||o(7499);if(!(this instanceof Readable))return new Readable(e);this._readableState=new ReadableState(e,this);this.readable=true;if(e){if(typeof e.read==="function")this._read=e.read;if(typeof e.destroy==="function")this._destroy=e.destroy}s.call(this)}Object.defineProperty(Readable.prototype,"destroyed",{get:function(){if(this._readableState===undefined){return false}return this._readableState.destroyed},set:function(e){if(!this._readableState){return}this._readableState.destroyed=e}});Readable.prototype.destroy=f.destroy;Readable.prototype._undestroy=f.undestroy;Readable.prototype._destroy=function(e,t){this.push(null);t(e)};Readable.prototype.push=function(e,t){var o=this._readableState;var n;if(!o.objectMode){if(typeof e==="string"){t=t||o.defaultEncoding;if(t!==o.encoding){e=l.from(e,t);t=""}n=true}}else{n=true}return readableAddChunk(this,e,t,false,n)};Readable.prototype.unshift=function(e){return readableAddChunk(this,e,null,true,false)};function readableAddChunk(e,t,o,n,r){var a=e._readableState;if(t===null){a.reading=false;onEofChunk(e,a)}else{var i;if(!r)i=chunkInvalid(a,t);if(i){e.emit("error",i)}else if(a.objectMode||t&&t.length>0){if(typeof t!=="string"&&!a.objectMode&&Object.getPrototypeOf(t)!==l.prototype){t=_uint8ArrayToBuffer(t)}if(n){if(a.endEmitted)e.emit("error",new Error("stream.unshift() after end event"));else addChunk(e,a,t,true)}else if(a.ended){e.emit("error",new Error("stream.push() after EOF"))}else{a.reading=false;if(a.decoder&&!o){t=a.decoder.write(t);if(a.objectMode||t.length!==0)addChunk(e,a,t,false);else maybeReadMore(e,a)}else{addChunk(e,a,t,false)}}}else if(!n){a.reading=false}}return needMoreData(a)}function addChunk(e,t,o,n){if(t.flowing&&t.length===0&&!t.sync){e.emit("data",o);e.read(0)}else{t.length+=t.objectMode?1:o.length;if(n)t.buffer.unshift(o);else t.buffer.push(o);if(t.needReadable)emitReadable(e)}maybeReadMore(e,t)}function chunkInvalid(e,t){var o;if(!_isUint8Array(t)&&typeof t!=="string"&&t!==undefined&&!e.objectMode){o=new TypeError("Invalid non-string/buffer chunk")}return o}function needMoreData(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||e.length===0)}Readable.prototype.isPaused=function(){return this._readableState.flowing===false};Readable.prototype.setEncoding=function(e){if(!h)h=o(6374).I;this._readableState.decoder=new h(e);this._readableState.encoding=e;return this};var g=8388608;function computeNewHighWaterMark(e){if(e>=g){e=g}else{e--;e|=e>>>1;e|=e>>>2;e|=e>>>4;e|=e>>>8;e|=e>>>16;e++}return e}function howMuchToRead(e,t){if(e<=0||t.length===0&&t.ended)return 0;if(t.objectMode)return 1;if(e!==e){if(t.flowing&&t.length)return t.buffer.head.data.length;else return t.length}if(e>t.highWaterMark)t.highWaterMark=computeNewHighWaterMark(e);if(e<=t.length)return e;if(!t.ended){t.needReadable=true;return 0}return t.length}Readable.prototype.read=function(e){p("read",e);e=parseInt(e,10);var t=this._readableState;var o=e;if(e!==0)t.emittedReadable=false;if(e===0&&t.needReadable&&(t.length>=t.highWaterMark||t.ended)){p("read: emitReadable",t.length,t.ended);if(t.length===0&&t.ended)endReadable(this);else emitReadable(this);return null}e=howMuchToRead(e,t);if(e===0&&t.ended){if(t.length===0)endReadable(this);return null}var n=t.needReadable;p("need readable",n);if(t.length===0||t.length-e<t.highWaterMark){n=true;p("length less than watermark",n)}if(t.ended||t.reading){n=false;p("reading or ended",n)}else if(n){p("do read");t.reading=true;t.sync=true;if(t.length===0)t.needReadable=true;this._read(t.highWaterMark);t.sync=false;if(!t.reading)e=howMuchToRead(o,t)}var r;if(e>0)r=fromList(e,t);else r=null;if(r===null){t.needReadable=true;e=0}else{t.length-=e}if(t.length===0){if(!t.ended)t.needReadable=true;if(o!==e&&t.ended)endReadable(this)}if(r!==null)this.emit("data",r);return r};function onEofChunk(e,t){if(t.ended)return;if(t.decoder){var o=t.decoder.end();if(o&&o.length){t.buffer.push(o);t.length+=t.objectMode?1:o.length}}t.ended=true;emitReadable(e)}function emitReadable(e){var t=e._readableState;t.needReadable=false;if(!t.emittedReadable){p("emitReadable",t.flowing);t.emittedReadable=true;if(t.sync)n.nextTick(emitReadable_,e);else emitReadable_(e)}}function emitReadable_(e){p("emit readable");e.emit("readable");flow(e)}function maybeReadMore(e,t){if(!t.readingMore){t.readingMore=true;n.nextTick(maybeReadMore_,e,t)}}function maybeReadMore_(e,t){var o=t.length;while(!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark){p("maybeReadMore read 0");e.read(0);if(o===t.length)break;else o=t.length}t.readingMore=false}Readable.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))};Readable.prototype.pipe=function(e,t){var o=this;var r=this._readableState;switch(r.pipesCount){case 0:r.pipes=e;break;case 1:r.pipes=[r.pipes,e];break;default:r.pipes.push(e);break}r.pipesCount+=1;p("pipe count=%d opts=%j",r.pipesCount,t);var a=(!t||t.end!==false)&&e!==process.stdout&&e!==process.stderr;var i=a?onend:unpipe;if(r.endEmitted)n.nextTick(i);else o.once("end",i);e.on("unpipe",onunpipe);function onunpipe(e,t){p("onunpipe");if(e===o){if(t&&t.hasUnpiped===false){t.hasUnpiped=true;cleanup()}}}function onend(){p("onend");e.end()}var s=pipeOnDrain(o);e.on("drain",s);var l=false;function cleanup(){p("cleanup");e.removeListener("close",onclose);e.removeListener("finish",onfinish);e.removeListener("drain",s);e.removeListener("error",onerror);e.removeListener("unpipe",onunpipe);o.removeListener("end",onend);o.removeListener("end",unpipe);o.removeListener("data",ondata);l=true;if(r.awaitDrain&&(!e._writableState||e._writableState.needDrain))s()}var c=false;o.on("data",ondata);function ondata(t){p("ondata");c=false;var n=e.write(t);if(false===n&&!c){if((r.pipesCount===1&&r.pipes===e||r.pipesCount>1&&indexOf(r.pipes,e)!==-1)&&!l){p("false write response, pause",r.awaitDrain);r.awaitDrain++;c=true}o.pause()}}function onerror(t){p("onerror",t);unpipe();e.removeListener("error",onerror);if(EElistenerCount(e,"error")===0)e.emit("error",t)}prependListener(e,"error",onerror);function onclose(){e.removeListener("finish",onfinish);unpipe()}e.once("close",onclose);function onfinish(){p("onfinish");e.removeListener("close",onclose);unpipe()}e.once("finish",onfinish);function unpipe(){p("unpipe");o.unpipe(e)}e.emit("pipe",o);if(!r.flowing){p("pipe resume");o.resume()}return e};function pipeOnDrain(e){return function(){var t=e._readableState;p("pipeOnDrain",t.awaitDrain);if(t.awaitDrain)t.awaitDrain--;if(t.awaitDrain===0&&EElistenerCount(e,"data")){t.flowing=true;flow(e)}}}Readable.prototype.unpipe=function(e){var t=this._readableState;var o={hasUnpiped:false};if(t.pipesCount===0)return this;if(t.pipesCount===1){if(e&&e!==t.pipes)return this;if(!e)e=t.pipes;t.pipes=null;t.pipesCount=0;t.flowing=false;if(e)e.emit("unpipe",this,o);return this}if(!e){var n=t.pipes;var r=t.pipesCount;t.pipes=null;t.pipesCount=0;t.flowing=false;for(var a=0;a<r;a++){n[a].emit("unpipe",this,{hasUnpiped:false})}return this}var i=indexOf(t.pipes,e);if(i===-1)return this;t.pipes.splice(i,1);t.pipesCount-=1;if(t.pipesCount===1)t.pipes=t.pipes[0];e.emit("unpipe",this,o);return this};Readable.prototype.on=function(e,t){var o=s.prototype.on.call(this,e,t);if(e==="data"){if(this._readableState.flowing!==false)this.resume()}else if(e==="readable"){var r=this._readableState;if(!r.endEmitted&&!r.readableListening){r.readableListening=r.needReadable=true;r.emittedReadable=false;if(!r.reading){n.nextTick(nReadingNextTick,this)}else if(r.length){emitReadable(this)}}}return o};Readable.prototype.addListener=Readable.prototype.on;function nReadingNextTick(e){p("readable nexttick read 0");e.read(0)}Readable.prototype.resume=function(){var e=this._readableState;if(!e.flowing){p("resume");e.flowing=true;resume(this,e)}return this};function resume(e,t){if(!t.resumeScheduled){t.resumeScheduled=true;n.nextTick(resume_,e,t)}}function resume_(e,t){if(!t.reading){p("resume read 0");e.read(0)}t.resumeScheduled=false;t.awaitDrain=0;e.emit("resume");flow(e);if(t.flowing&&!t.reading)e.read(0)}Readable.prototype.pause=function(){p("call pause flowing=%j",this._readableState.flowing);if(false!==this._readableState.flowing){p("pause");this._readableState.flowing=false;this.emit("pause")}return this};function flow(e){var t=e._readableState;p("flow",t.flowing);while(t.flowing&&e.read()!==null){}}Readable.prototype.wrap=function(e){var t=this;var o=this._readableState;var n=false;e.on("end",(function(){p("wrapped end");if(o.decoder&&!o.ended){var e=o.decoder.end();if(e&&e.length)t.push(e)}t.push(null)}));e.on("data",(function(r){p("wrapped data");if(o.decoder)r=o.decoder.write(r);if(o.objectMode&&(r===null||r===undefined))return;else if(!o.objectMode&&(!r||!r.length))return;var a=t.push(r);if(!a){n=true;e.pause()}}));for(var r in e){if(this[r]===undefined&&typeof e[r]==="function"){this[r]=function(t){return function(){return e[t].apply(e,arguments)}}(r)}}for(var a=0;a<m.length;a++){e.on(m[a],this.emit.bind(this,m[a]))}this._read=function(t){p("wrapped _read",t);if(n){n=false;e.resume()}};return this};Object.defineProperty(Readable.prototype,"readableHighWaterMark",{enumerable:false,get:function(){return this._readableState.highWaterMark}});Readable._fromList=fromList;function fromList(e,t){if(t.length===0)return null;var o;if(t.objectMode)o=t.buffer.shift();else if(!e||e>=t.length){if(t.decoder)o=t.buffer.join("");else if(t.buffer.length===1)o=t.buffer.head.data;else o=t.buffer.concat(t.length);t.buffer.clear()}else{o=fromListPartial(e,t.buffer,t.decoder)}return o}function fromListPartial(e,t,o){var n;if(e<t.head.data.length){n=t.head.data.slice(0,e);t.head.data=t.head.data.slice(e)}else if(e===t.head.data.length){n=t.shift()}else{n=o?copyFromBufferString(e,t):copyFromBuffer(e,t)}return n}function copyFromBufferString(e,t){var o=t.head;var n=1;var r=o.data;e-=r.length;while(o=o.next){var a=o.data;var i=e>a.length?a.length:e;if(i===a.length)r+=a;else r+=a.slice(0,e);e-=i;if(e===0){if(i===a.length){++n;if(o.next)t.head=o.next;else t.head=t.tail=null}else{t.head=o;o.data=a.slice(i)}break}++n}t.length-=n;return r}function copyFromBuffer(e,t){var o=l.allocUnsafe(e);var n=t.head;var r=1;n.data.copy(o);e-=n.data.length;while(n=n.next){var a=n.data;var i=e>a.length?a.length:e;a.copy(o,o.length-e,0,i);e-=i;if(e===0){if(i===a.length){++r;if(n.next)t.head=n.next;else t.head=t.tail=null}else{t.head=n;n.data=a.slice(i)}break}++r}t.length-=r;return o}function endReadable(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');if(!t.endEmitted){t.ended=true;n.nextTick(endReadableNT,t,e)}}function endReadableNT(e,t){if(!e.endEmitted&&e.length===0){e.endEmitted=true;t.readable=false;t.emit("end")}}function indexOf(e,t){for(var o=0,n=e.length;o<n;o++){if(e[o]===t)return o}return-1}},2557:(e,t,o)=>{"use strict";e.exports=Transform;var n=o(7499);var r=Object.create(o(47));r.inherits=o(4244);r.inherits(Transform,n);function afterTransform(e,t){var o=this._transformState;o.transforming=false;var n=o.writecb;if(!n){return this.emit("error",new Error("write callback called multiple times"))}o.writechunk=null;o.writecb=null;if(t!=null)this.push(t);n(e);var r=this._readableState;r.reading=false;if(r.needReadable||r.length<r.highWaterMark){this._read(r.highWaterMark)}}function Transform(e){if(!(this instanceof Transform))return new Transform(e);n.call(this,e);this._transformState={afterTransform:afterTransform.bind(this),needTransform:false,transforming:false,writecb:null,writechunk:null,writeencoding:null};this._readableState.needReadable=true;this._readableState.sync=false;if(e){if(typeof e.transform==="function")this._transform=e.transform;if(typeof e.flush==="function")this._flush=e.flush}this.on("prefinish",prefinish)}function prefinish(){var e=this;if(typeof this._flush==="function"){this._flush((function(t,o){done(e,t,o)}))}else{done(this,null,null)}}Transform.prototype.push=function(e,t){this._transformState.needTransform=false;return n.prototype.push.call(this,e,t)};Transform.prototype._transform=function(e,t,o){throw new Error("_transform() is not implemented")};Transform.prototype._write=function(e,t,o){var n=this._transformState;n.writecb=o;n.writechunk=e;n.writeencoding=t;if(!n.transforming){var r=this._readableState;if(n.needTransform||r.needReadable||r.length<r.highWaterMark)this._read(r.highWaterMark)}};Transform.prototype._read=function(e){var t=this._transformState;if(t.writechunk!==null&&t.writecb&&!t.transforming){t.transforming=true;this._transform(t.writechunk,t.writeencoding,t.afterTransform)}else{t.needTransform=true}};Transform.prototype._destroy=function(e,t){var o=this;n.prototype._destroy.call(this,e,(function(e){t(e);o.emit("close")}))};function done(e,t,o){if(t)return e.emit("error",t);if(o!=null)e.push(o);if(e._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(e._transformState.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}},3305:(e,t,o)=>{"use strict";var n=o(6246);e.exports=Writable;function WriteReq(e,t,o){this.chunk=e;this.encoding=t;this.callback=o;this.next=null}function CorkedRequest(e){var t=this;this.next=null;this.entry=null;this.finish=function(){onCorkedFinish(t,e)}}var r=!process.browser&&["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:n.nextTick;var a;Writable.WritableState=WritableState;var i=Object.create(o(47));i.inherits=o(4244);var s={deprecate:o(8430)};var l=o(4503);var c=o(1742).Buffer;var d=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(e){return c.from(e)}function _isUint8Array(e){return c.isBuffer(e)||e instanceof d}var u=o(9269);i.inherits(Writable,l);function nop(){}function WritableState(e,t){a=a||o(7499);e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode;if(n)this.objectMode=this.objectMode||!!e.writableObjectMode;var r=e.highWaterMark;var i=e.writableHighWaterMark;var s=this.objectMode?16:16*1024;if(r||r===0)this.highWaterMark=r;else if(n&&(i||i===0))this.highWaterMark=i;else this.highWaterMark=s;this.highWaterMark=Math.floor(this.highWaterMark);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;var l=e.decodeStrings===false;this.decodeStrings=!l;this.defaultEncoding=e.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(e){onwrite(t,e)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function getBuffer(){var e=this.bufferedRequest;var t=[];while(e){t.push(e);e=e.next}return t};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.","DEP0003")})}catch(e){}})();var p;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function"){p=Function.prototype[Symbol.hasInstance];Object.defineProperty(Writable,Symbol.hasInstance,{value:function(e){if(p.call(this,e))return true;if(this!==Writable)return false;return e&&e._writableState instanceof WritableState}})}else{p=function(e){return e instanceof this}}function Writable(e){a=a||o(7499);if(!p.call(Writable,this)&&!(this instanceof a)){return new Writable(e)}this._writableState=new WritableState(e,this);this.writable=true;if(e){if(typeof e.write==="function")this._write=e.write;if(typeof e.writev==="function")this._writev=e.writev;if(typeof e.destroy==="function")this._destroy=e.destroy;if(typeof e.final==="function")this._final=e.final}l.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function writeAfterEnd(e,t){var o=new Error("write after end");e.emit("error",o);n.nextTick(t,o)}function validChunk(e,t,o,r){var a=true;var i=false;if(o===null){i=new TypeError("May not write null values to stream")}else if(typeof o!=="string"&&o!==undefined&&!t.objectMode){i=new TypeError("Invalid non-string/buffer chunk")}if(i){e.emit("error",i);n.nextTick(r,i);a=false}return a}Writable.prototype.write=function(e,t,o){var n=this._writableState;var r=false;var a=!n.objectMode&&_isUint8Array(e);if(a&&!c.isBuffer(e)){e=_uint8ArrayToBuffer(e)}if(typeof t==="function"){o=t;t=null}if(a)t="buffer";else if(!t)t=n.defaultEncoding;if(typeof o!=="function")o=nop;if(n.ended)writeAfterEnd(this,o);else if(a||validChunk(this,n,e,o)){n.pendingcb++;r=writeOrBuffer(this,n,a,e,t,o)}return r};Writable.prototype.cork=function(){var e=this._writableState;e.corked++};Writable.prototype.uncork=function(){var e=this._writableState;if(e.corked){e.corked--;if(!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest)clearBuffer(this,e)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if(typeof e==="string")e=e.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);this._writableState.defaultEncoding=e;return this};function decodeChunk(e,t,o){if(!e.objectMode&&e.decodeStrings!==false&&typeof t==="string"){t=c.from(t,o)}return t}Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:false,get:function(){return this._writableState.highWaterMark}});function writeOrBuffer(e,t,o,n,r,a){if(!o){var i=decodeChunk(t,n,r);if(n!==i){o=true;r="buffer";n=i}}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length<t.highWaterMark;if(!l)t.needDrain=true;if(t.writing||t.corked){var c=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:r,isBuf:o,callback:a,next:null};if(c){c.next=t.lastBufferedRequest}else{t.bufferedRequest=t.lastBufferedRequest}t.bufferedRequestCount+=1}else{doWrite(e,t,false,s,n,r,a)}return l}function doWrite(e,t,o,n,r,a,i){t.writelen=n;t.writecb=i;t.writing=true;t.sync=true;if(o)e._writev(r,t.onwrite);else e._write(r,a,t.onwrite);t.sync=false}function onwriteError(e,t,o,r,a){--t.pendingcb;if(o){n.nextTick(a,r);n.nextTick(finishMaybe,e,t);e._writableState.errorEmitted=true;e.emit("error",r)}else{a(r);e._writableState.errorEmitted=true;e.emit("error",r);finishMaybe(e,t)}}function onwriteStateUpdate(e){e.writing=false;e.writecb=null;e.length-=e.writelen;e.writelen=0}function onwrite(e,t){var o=e._writableState;var n=o.sync;var a=o.writecb;onwriteStateUpdate(o);if(t)onwriteError(e,o,n,t,a);else{var i=needFinish(o);if(!i&&!o.corked&&!o.bufferProcessing&&o.bufferedRequest){clearBuffer(e,o)}if(n){r(afterWrite,e,o,i,a)}else{afterWrite(e,o,i,a)}}}function afterWrite(e,t,o,n){if(!o)onwriteDrain(e,t);t.pendingcb--;n();finishMaybe(e,t)}function onwriteDrain(e,t){if(t.length===0&&t.needDrain){t.needDrain=false;e.emit("drain")}}function clearBuffer(e,t){t.bufferProcessing=true;var o=t.bufferedRequest;if(e._writev&&o&&o.next){var n=t.bufferedRequestCount;var r=new Array(n);var a=t.corkedRequestsFree;a.entry=o;var i=0;var s=true;while(o){r[i]=o;if(!o.isBuf)s=false;o=o.next;i+=1}r.allBuffers=s;doWrite(e,t,true,t.length,r,"",a.finish);t.pendingcb++;t.lastBufferedRequest=null;if(a.next){t.corkedRequestsFree=a.next;a.next=null}else{t.corkedRequestsFree=new CorkedRequest(t)}t.bufferedRequestCount=0}else{while(o){var l=o.chunk;var c=o.encoding;var d=o.callback;var u=t.objectMode?1:l.length;doWrite(e,t,false,u,l,c,d);o=o.next;t.bufferedRequestCount--;if(t.writing){break}}if(o===null)t.lastBufferedRequest=null}t.bufferedRequest=o;t.bufferProcessing=false}Writable.prototype._write=function(e,t,o){o(new Error("_write() is not implemented"))};Writable.prototype._writev=null;Writable.prototype.end=function(e,t,o){var n=this._writableState;if(typeof e==="function"){o=e;e=null;t=null}else if(typeof t==="function"){o=t;t=null}if(e!==null&&e!==undefined)this.write(e,t);if(n.corked){n.corked=1;this.uncork()}if(!n.ending)endWritable(this,n,o)};function needFinish(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function callFinal(e,t){e._final((function(o){t.pendingcb--;if(o){e.emit("error",o)}t.prefinished=true;e.emit("prefinish");finishMaybe(e,t)}))}function prefinish(e,t){if(!t.prefinished&&!t.finalCalled){if(typeof e._final==="function"){t.pendingcb++;t.finalCalled=true;n.nextTick(callFinal,e,t)}else{t.prefinished=true;e.emit("prefinish")}}}function finishMaybe(e,t){var o=needFinish(t);if(o){prefinish(e,t);if(t.pendingcb===0){t.finished=true;e.emit("finish")}}return o}function endWritable(e,t,o){t.ending=true;finishMaybe(e,t);if(o){if(t.finished)n.nextTick(o);else e.once("finish",o)}t.ended=true;e.writable=false}function onCorkedFinish(e,t,o){var n=e.entry;e.entry=null;while(n){var r=n.callback;t.pendingcb--;r(o);n=n.next}t.corkedRequestsFree.next=e}Object.defineProperty(Writable.prototype,"destroyed",{get:function(){if(this._writableState===undefined){return false}return this._writableState.destroyed},set:function(e){if(!this._writableState){return}this._writableState.destroyed=e}});Writable.prototype.destroy=u.destroy;Writable.prototype._undestroy=u.undestroy;Writable.prototype._destroy=function(e,t){this.end();t(e)}},4673:(e,t,o)=>{"use strict";function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var n=o(1742).Buffer;var r=o(9023);function copyBuffer(e,t,o){e.copy(t,o)}e.exports=function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0}BufferList.prototype.push=function push(e){var t={data:e,next:null};if(this.length>0)this.tail.next=t;else this.head=t;this.tail=t;++this.length};BufferList.prototype.unshift=function unshift(e){var t={data:e,next:this.head};if(this.length===0)this.tail=t;this.head=t;++this.length};BufferList.prototype.shift=function shift(){if(this.length===0)return;var e=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return e};BufferList.prototype.clear=function clear(){this.head=this.tail=null;this.length=0};BufferList.prototype.join=function join(e){if(this.length===0)return"";var t=this.head;var o=""+t.data;while(t=t.next){o+=e+t.data}return o};BufferList.prototype.concat=function concat(e){if(this.length===0)return n.alloc(0);var t=n.allocUnsafe(e>>>0);var o=this.head;var r=0;while(o){copyBuffer(o.data,t,r);r+=o.data.length;o=o.next}return t};return BufferList}();if(r&&r.inspect&&r.inspect.custom){e.exports.prototype[r.inspect.custom]=function(){var e=r.inspect({length:this.length});return this.constructor.name+" "+e}}},9269:(e,t,o)=>{"use strict";var n=o(6246);function destroy(e,t){var o=this;var r=this._readableState&&this._readableState.destroyed;var a=this._writableState&&this._writableState.destroyed;if(r||a){if(t){t(e)}else if(e){if(!this._writableState){n.nextTick(emitErrorNT,this,e)}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;n.nextTick(emitErrorNT,this,e)}}return this}if(this._readableState){this._readableState.destroyed=true}if(this._writableState){this._writableState.destroyed=true}this._destroy(e||null,(function(e){if(!t&&e){if(!o._writableState){n.nextTick(emitErrorNT,o,e)}else if(!o._writableState.errorEmitted){o._writableState.errorEmitted=true;n.nextTick(emitErrorNT,o,e)}}else if(t){t(e)}}));return this}function undestroy(){if(this._readableState){this._readableState.destroyed=false;this._readableState.reading=false;this._readableState.ended=false;this._readableState.endEmitted=false}if(this._writableState){this._writableState.destroyed=false;this._writableState.ended=false;this._writableState.ending=false;this._writableState.finalCalled=false;this._writableState.prefinished=false;this._writableState.finished=false;this._writableState.errorEmitted=false}}function emitErrorNT(e,t){e.emit("error",t)}e.exports={destroy:destroy,undestroy:undestroy}},4503:(e,t,o)=>{e.exports=o(2203)},5783:(e,t,o)=>{var n=o(2203);if(process.env.READABLE_STREAM==="disable"&&n){e.exports=n;t=e.exports=n.Readable;t.Readable=n.Readable;t.Writable=n.Writable;t.Duplex=n.Duplex;t.Transform=n.Transform;t.PassThrough=n.PassThrough;t.Stream=n}else{t=e.exports=o(953);t.Stream=n||t;t.Readable=t;t.Writable=o(3305);t.Duplex=o(7499);t.Transform=o(2557);t.PassThrough=o(8567)}},1742:(e,t,o)=>{var n=o(181);var r=n.Buffer;function copyProps(e,t){for(var o in e){t[o]=e[o]}}if(r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow){e.exports=n}else{copyProps(n,t);t.Buffer=SafeBuffer}function SafeBuffer(e,t,o){return r(e,t,o)}copyProps(r,SafeBuffer);SafeBuffer.from=function(e,t,o){if(typeof e==="number"){throw new TypeError("Argument must not be a number")}return r(e,t,o)};SafeBuffer.alloc=function(e,t,o){if(typeof e!=="number"){throw new TypeError("Argument must be a number")}var n=r(e);if(t!==undefined){if(typeof o==="string"){n.fill(t,o)}else{n.fill(t)}}else{n.fill(0)}return n};SafeBuffer.allocUnsafe=function(e){if(typeof e!=="number"){throw new TypeError("Argument must be a number")}return r(e)};SafeBuffer.allocUnsafeSlow=function(e){if(typeof e!=="number"){throw new TypeError("Argument must be a number")}return n.SlowBuffer(e)}},6374:(e,t,o)=>{"use strict";var n=o(1742).Buffer;var r=n.isEncoding||function(e){e=""+e;switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return true;default:return false}};function _normalizeEncoding(e){if(!e)return"utf8";var t;while(true){switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase();t=true}}}function normalizeEncoding(e){var t=_normalizeEncoding(e);if(typeof t!=="string"&&(n.isEncoding===r||!r(e)))throw new Error("Unknown encoding: "+e);return t||e}t.I=StringDecoder;function StringDecoder(e){this.encoding=normalizeEncoding(e);var t;switch(this.encoding){case"utf16le":this.text=utf16Text;this.end=utf16End;t=4;break;case"utf8":this.fillLast=utf8FillLast;t=4;break;case"base64":this.text=base64Text;this.end=base64End;t=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=n.allocUnsafe(t)}StringDecoder.prototype.write=function(e){if(e.length===0)return"";var t;var o;if(this.lastNeed){t=this.fillLast(e);if(t===undefined)return"";o=this.lastNeed;this.lastNeed=0}else{o=0}if(o<e.length)return t?t+this.text(e,o):this.text(e,o);return t||""};StringDecoder.prototype.end=utf8End;StringDecoder.prototype.text=utf8Text;StringDecoder.prototype.fillLast=function(e){if(this.lastNeed<=e.length){e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length);this.lastNeed-=e.length};function utf8CheckByte(e){if(e<=127)return 0;else if(e>>5===6)return 2;else if(e>>4===14)return 3;else if(e>>3===30)return 4;return e>>6===2?-1:-2}function utf8CheckIncomplete(e,t,o){var n=t.length-1;if(n<o)return 0;var r=utf8CheckByte(t[n]);if(r>=0){if(r>0)e.lastNeed=r-1;return r}if(--n<o||r===-2)return 0;r=utf8CheckByte(t[n]);if(r>=0){if(r>0)e.lastNeed=r-2;return r}if(--n<o||r===-2)return 0;r=utf8CheckByte(t[n]);if(r>=0){if(r>0){if(r===2)r=0;else e.lastNeed=r-3}return r}return 0}function utf8CheckExtraBytes(e,t,o){if((t[0]&192)!==128){e.lastNeed=0;return"�"}if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128){e.lastNeed=1;return"�"}if(e.lastNeed>2&&t.length>2){if((t[2]&192)!==128){e.lastNeed=2;return"�"}}}}function utf8FillLast(e){var t=this.lastTotal-this.lastNeed;var o=utf8CheckExtraBytes(this,e,t);if(o!==undefined)return o;if(this.lastNeed<=e.length){e.copy(this.lastChar,t,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,t,0,e.length);this.lastNeed-=e.length}function utf8Text(e,t){var o=utf8CheckIncomplete(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=o;var n=e.length-(o-this.lastNeed);e.copy(this.lastChar,0,n);return e.toString("utf8",t,n)}function utf8End(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed)return t+"�";return t}function utf16Text(e,t){if((e.length-t)%2===0){var o=e.toString("utf16le",t);if(o){var n=o.charCodeAt(o.length-1);if(n>=55296&&n<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1];return o.slice(0,-1)}}return o}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=e[e.length-1];return e.toString("utf16le",t,e.length-1)}function utf16End(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var o=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,o)}return t}function base64Text(e,t){var o=(e.length-t)%3;if(o===0)return e.toString("base64",t);this.lastNeed=3-o;this.lastTotal=3;if(o===1){this.lastChar[0]=e[e.length-1]}else{this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1]}return e.toString("base64",t,e.length-o)}function base64End(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed)return t+this.lastChar.toString("base64",0,3-this.lastNeed);return t}function simpleWrite(e){return e.toString(this.encoding)}function simpleEnd(e){return e&&e.length?this.write(e):""}},8924:(e,t,o)=>{"use strict";var n=o(4603);function INTERNAL(){}var r={};var a=["REJECTED"];var i=["FULFILLED"];var s=["PENDING"];if(!process.browser){var l=["UNHANDLED"]}e.exports=Promise;function Promise(e){if(typeof e!=="function"){throw new TypeError("resolver must be a function")}this.state=s;this.queue=[];this.outcome=void 0;if(!process.browser){this.handled=l}if(e!==INTERNAL){safelyResolveThenable(this,e)}}Promise.prototype.finally=function(e){if(typeof e!=="function"){return this}var t=this.constructor;return this.then(resolve,reject);function resolve(o){function yes(){return o}return t.resolve(e()).then(yes)}function reject(o){function no(){throw o}return t.resolve(e()).then(no)}};Promise.prototype.catch=function(e){return this.then(null,e)};Promise.prototype.then=function(e,t){if(typeof e!=="function"&&this.state===i||typeof t!=="function"&&this.state===a){return this}var o=new this.constructor(INTERNAL);if(!process.browser){if(this.handled===l){this.handled=null}}if(this.state!==s){var n=this.state===i?e:t;unwrap(o,n,this.outcome)}else{this.queue.push(new QueueItem(o,e,t))}return o};function QueueItem(e,t,o){this.promise=e;if(typeof t==="function"){this.onFulfilled=t;this.callFulfilled=this.otherCallFulfilled}if(typeof o==="function"){this.onRejected=o;this.callRejected=this.otherCallRejected}}QueueItem.prototype.callFulfilled=function(e){r.resolve(this.promise,e)};QueueItem.prototype.otherCallFulfilled=function(e){unwrap(this.promise,this.onFulfilled,e)};QueueItem.prototype.callRejected=function(e){r.reject(this.promise,e)};QueueItem.prototype.otherCallRejected=function(e){unwrap(this.promise,this.onRejected,e)};function unwrap(e,t,o){n((function(){var n;try{n=t(o)}catch(t){return r.reject(e,t)}if(n===e){r.reject(e,new TypeError("Cannot resolve promise with itself"))}else{r.resolve(e,n)}}))}r.resolve=function(e,t){var o=tryCatch(getThen,t);if(o.status==="error"){return r.reject(e,o.value)}var n=o.value;if(n){safelyResolveThenable(e,n)}else{e.state=i;e.outcome=t;var a=-1;var s=e.queue.length;while(++a<s){e.queue[a].callFulfilled(t)}}return e};r.reject=function(e,t){e.state=a;e.outcome=t;if(!process.browser){if(e.handled===l){n((function(){if(e.handled===l){process.emit("unhandledRejection",t,e)}}))}}var o=-1;var r=e.queue.length;while(++o<r){e.queue[o].callRejected(t)}return e};function getThen(e){var t=e&&e.then;if(e&&(typeof e==="object"||typeof e==="function")&&typeof t==="function"){return function appyThen(){t.apply(e,arguments)}}}function safelyResolveThenable(e,t){var o=false;function onError(t){if(o){return}o=true;r.reject(e,t)}function onSuccess(t){if(o){return}o=true;r.resolve(e,t)}function tryToUnwrap(){t(onSuccess,onError)}var n=tryCatch(tryToUnwrap);if(n.status==="error"){onError(n.value)}}function tryCatch(e,t){var o={};try{o.value=e(t);o.status="success"}catch(e){o.status="error";o.value=e}return o}Promise.resolve=resolve;function resolve(e){if(e instanceof this){return e}return r.resolve(new this(INTERNAL),e)}Promise.reject=reject;function reject(e){var t=new this(INTERNAL);return r.reject(t,e)}Promise.all=all;function all(e){var t=this;if(Object.prototype.toString.call(e)!=="[object Array]"){return this.reject(new TypeError("must be an array"))}var o=e.length;var n=false;if(!o){return this.resolve([])}var a=new Array(o);var i=0;var s=-1;var l=new this(INTERNAL);while(++s<o){allResolver(e[s],s)}return l;function allResolver(e,s){t.resolve(e).then(resolveFromAll,(function(e){if(!n){n=true;r.reject(l,e)}}));function resolveFromAll(e){a[s]=e;if(++i===o&&!n){n=true;r.resolve(l,a)}}}}Promise.race=race;function race(e){var t=this;if(Object.prototype.toString.call(e)!=="[object Array]"){return this.reject(new TypeError("must be an array"))}var o=e.length;var n=false;if(!o){return this.resolve([])}var a=-1;var i=new this(INTERNAL);while(++a<o){resolver(e[a])}return i;function resolver(e){t.resolve(e).then((function(e){if(!n){n=true;r.resolve(i,e)}}),(function(e){if(!n){n=true;r.reject(i,e)}}))}}},7375:(e,t,o)=>{"use strict";var n=o(7424).assign;var r=o(860);var a=o(2368);var i=o(1952);var s={};n(s,r,a,i);e.exports=s},860:(e,t,o)=>{"use strict";var n=o(4622);var r=o(7424);var a=o(8447);var i=o(8737);var s=o(2239);var l=Object.prototype.toString;var c=0;var d=4;var u=0;var p=1;var A=2;var f=-1;var h=0;var m=8;function Deflate(e){if(!(this instanceof Deflate))return new Deflate(e);this.options=r.assign({level:f,method:m,chunkSize:16384,windowBits:15,memLevel:8,strategy:h,to:""},e||{});var t=this.options;if(t.raw&&t.windowBits>0){t.windowBits=-t.windowBits}else if(t.gzip&&t.windowBits>0&&t.windowBits<16){t.windowBits+=16}this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new s;this.strm.avail_out=0;var o=n.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(o!==u){throw new Error(i[o])}if(t.header){n.deflateSetHeader(this.strm,t.header)}if(t.dictionary){var c;if(typeof t.dictionary==="string"){c=a.string2buf(t.dictionary)}else if(l.call(t.dictionary)==="[object ArrayBuffer]"){c=new Uint8Array(t.dictionary)}else{c=t.dictionary}o=n.deflateSetDictionary(this.strm,c);if(o!==u){throw new Error(i[o])}this._dict_set=true}}Deflate.prototype.push=function(e,t){var o=this.strm;var i=this.options.chunkSize;var s,f;if(this.ended){return false}f=t===~~t?t:t===true?d:c;if(typeof e==="string"){o.input=a.string2buf(e)}else if(l.call(e)==="[object ArrayBuffer]"){o.input=new Uint8Array(e)}else{o.input=e}o.next_in=0;o.avail_in=o.input.length;do{if(o.avail_out===0){o.output=new r.Buf8(i);o.next_out=0;o.avail_out=i}s=n.deflate(o,f);if(s!==p&&s!==u){this.onEnd(s);this.ended=true;return false}if(o.avail_out===0||o.avail_in===0&&(f===d||f===A)){if(this.options.to==="string"){this.onData(a.buf2binstring(r.shrinkBuf(o.output,o.next_out)))}else{this.onData(r.shrinkBuf(o.output,o.next_out))}}}while((o.avail_in>0||o.avail_out===0)&&s!==p);if(f===d){s=n.deflateEnd(this.strm);this.onEnd(s);this.ended=true;return s===u}if(f===A){this.onEnd(u);o.avail_out=0;return true}return true};Deflate.prototype.onData=function(e){this.chunks.push(e)};Deflate.prototype.onEnd=function(e){if(e===u){if(this.options.to==="string"){this.result=this.chunks.join("")}else{this.result=r.flattenChunks(this.chunks)}}this.chunks=[];this.err=e;this.msg=this.strm.msg};function deflate(e,t){var o=new Deflate(t);o.push(e,true);if(o.err){throw o.msg||i[o.err]}return o.result}function deflateRaw(e,t){t=t||{};t.raw=true;return deflate(e,t)}function gzip(e,t){t=t||{};t.gzip=true;return deflate(e,t)}t.Deflate=Deflate;t.deflate=deflate;t.deflateRaw=deflateRaw;t.gzip=gzip},2368:(e,t,o)=>{"use strict";var n=o(5518);var r=o(7424);var a=o(8447);var i=o(1952);var s=o(8737);var l=o(2239);var c=o(1321);var d=Object.prototype.toString;function Inflate(e){if(!(this instanceof Inflate))return new Inflate(e);this.options=r.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;if(t.raw&&t.windowBits>=0&&t.windowBits<16){t.windowBits=-t.windowBits;if(t.windowBits===0){t.windowBits=-15}}if(t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)){t.windowBits+=32}if(t.windowBits>15&&t.windowBits<48){if((t.windowBits&15)===0){t.windowBits|=15}}this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new l;this.strm.avail_out=0;var o=n.inflateInit2(this.strm,t.windowBits);if(o!==i.Z_OK){throw new Error(s[o])}this.header=new c;n.inflateGetHeader(this.strm,this.header);if(t.dictionary){if(typeof t.dictionary==="string"){t.dictionary=a.string2buf(t.dictionary)}else if(d.call(t.dictionary)==="[object ArrayBuffer]"){t.dictionary=new Uint8Array(t.dictionary)}if(t.raw){o=n.inflateSetDictionary(this.strm,t.dictionary);if(o!==i.Z_OK){throw new Error(s[o])}}}}Inflate.prototype.push=function(e,t){var o=this.strm;var s=this.options.chunkSize;var l=this.options.dictionary;var c,u;var p,A,f;var h=false;if(this.ended){return false}u=t===~~t?t:t===true?i.Z_FINISH:i.Z_NO_FLUSH;if(typeof e==="string"){o.input=a.binstring2buf(e)}else if(d.call(e)==="[object ArrayBuffer]"){o.input=new Uint8Array(e)}else{o.input=e}o.next_in=0;o.avail_in=o.input.length;do{if(o.avail_out===0){o.output=new r.Buf8(s);o.next_out=0;o.avail_out=s}c=n.inflate(o,i.Z_NO_FLUSH);if(c===i.Z_NEED_DICT&&l){c=n.inflateSetDictionary(this.strm,l)}if(c===i.Z_BUF_ERROR&&h===true){c=i.Z_OK;h=false}if(c!==i.Z_STREAM_END&&c!==i.Z_OK){this.onEnd(c);this.ended=true;return false}if(o.next_out){if(o.avail_out===0||c===i.Z_STREAM_END||o.avail_in===0&&(u===i.Z_FINISH||u===i.Z_SYNC_FLUSH)){if(this.options.to==="string"){p=a.utf8border(o.output,o.next_out);A=o.next_out-p;f=a.buf2string(o.output,p);o.next_out=A;o.avail_out=s-A;if(A){r.arraySet(o.output,o.output,p,A,0)}this.onData(f)}else{this.onData(r.shrinkBuf(o.output,o.next_out))}}}if(o.avail_in===0&&o.avail_out===0){h=true}}while((o.avail_in>0||o.avail_out===0)&&c!==i.Z_STREAM_END);if(c===i.Z_STREAM_END){u=i.Z_FINISH}if(u===i.Z_FINISH){c=n.inflateEnd(this.strm);this.onEnd(c);this.ended=true;return c===i.Z_OK}if(u===i.Z_SYNC_FLUSH){this.onEnd(i.Z_OK);o.avail_out=0;return true}return true};Inflate.prototype.onData=function(e){this.chunks.push(e)};Inflate.prototype.onEnd=function(e){if(e===i.Z_OK){if(this.options.to==="string"){this.result=this.chunks.join("")}else{this.result=r.flattenChunks(this.chunks)}}this.chunks=[];this.err=e;this.msg=this.strm.msg};function inflate(e,t){var o=new Inflate(t);o.push(e,true);if(o.err){throw o.msg||s[o.err]}return o.result}function inflateRaw(e,t){t=t||{};t.raw=true;return inflate(e,t)}t.Inflate=Inflate;t.inflate=inflate;t.inflateRaw=inflateRaw;t.ungzip=inflate},7424:(e,t)=>{"use strict";var o=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Int32Array!=="undefined";function _has(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);while(t.length){var o=t.shift();if(!o){continue}if(typeof o!=="object"){throw new TypeError(o+"must be non-object")}for(var n in o){if(_has(o,n)){e[n]=o[n]}}}return e};t.shrinkBuf=function(e,t){if(e.length===t){return e}if(e.subarray){return e.subarray(0,t)}e.length=t;return e};var n={arraySet:function(e,t,o,n,r){if(t.subarray&&e.subarray){e.set(t.subarray(o,o+n),r);return}for(var a=0;a<n;a++){e[r+a]=t[o+a]}},flattenChunks:function(e){var t,o,n,r,a,i;n=0;for(t=0,o=e.length;t<o;t++){n+=e[t].length}i=new Uint8Array(n);r=0;for(t=0,o=e.length;t<o;t++){a=e[t];i.set(a,r);r+=a.length}return i}};var r={arraySet:function(e,t,o,n,r){for(var a=0;a<n;a++){e[r+a]=t[o+a]}},flattenChunks:function(e){return[].concat.apply([],e)}};t.setTyped=function(e){if(e){t.Buf8=Uint8Array;t.Buf16=Uint16Array;t.Buf32=Int32Array;t.assign(t,n)}else{t.Buf8=Array;t.Buf16=Array;t.Buf32=Array;t.assign(t,r)}};t.setTyped(o)},8447:(e,t,o)=>{"use strict";var n=o(7424);var r=true;var a=true;try{String.fromCharCode.apply(null,[0])}catch(e){r=false}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){a=false}var i=new n.Buf8(256);for(var s=0;s<256;s++){i[s]=s>=252?6:s>=248?5:s>=240?4:s>=224?3:s>=192?2:1}i[254]=i[254]=1;t.string2buf=function(e){var t,o,r,a,i,s=e.length,l=0;for(a=0;a<s;a++){o=e.charCodeAt(a);if((o&64512)===55296&&a+1<s){r=e.charCodeAt(a+1);if((r&64512)===56320){o=65536+(o-55296<<10)+(r-56320);a++}}l+=o<128?1:o<2048?2:o<65536?3:4}t=new n.Buf8(l);for(i=0,a=0;i<l;a++){o=e.charCodeAt(a);if((o&64512)===55296&&a+1<s){r=e.charCodeAt(a+1);if((r&64512)===56320){o=65536+(o-55296<<10)+(r-56320);a++}}if(o<128){t[i++]=o}else if(o<2048){t[i++]=192|o>>>6;t[i++]=128|o&63}else if(o<65536){t[i++]=224|o>>>12;t[i++]=128|o>>>6&63;t[i++]=128|o&63}else{t[i++]=240|o>>>18;t[i++]=128|o>>>12&63;t[i++]=128|o>>>6&63;t[i++]=128|o&63}}return t};function buf2binstring(e,t){if(t<65534){if(e.subarray&&a||!e.subarray&&r){return String.fromCharCode.apply(null,n.shrinkBuf(e,t))}}var o="";for(var i=0;i<t;i++){o+=String.fromCharCode(e[i])}return o}t.buf2binstring=function(e){return buf2binstring(e,e.length)};t.binstring2buf=function(e){var t=new n.Buf8(e.length);for(var o=0,r=t.length;o<r;o++){t[o]=e.charCodeAt(o)}return t};t.buf2string=function(e,t){var o,n,r,a;var s=t||e.length;var l=new Array(s*2);for(n=0,o=0;o<s;){r=e[o++];if(r<128){l[n++]=r;continue}a=i[r];if(a>4){l[n++]=65533;o+=a-1;continue}r&=a===2?31:a===3?15:7;while(a>1&&o<s){r=r<<6|e[o++]&63;a--}if(a>1){l[n++]=65533;continue}if(r<65536){l[n++]=r}else{r-=65536;l[n++]=55296|r>>10&1023;l[n++]=56320|r&1023}}return buf2binstring(l,n)};t.utf8border=function(e,t){var o;t=t||e.length;if(t>e.length){t=e.length}o=t-1;while(o>=0&&(e[o]&192)===128){o--}if(o<0){return t}if(o===0){return t}return o+i[e[o]]>t?o:t}},9624:e=>{"use strict";function adler32(e,t,o,n){var r=e&65535|0,a=e>>>16&65535|0,i=0;while(o!==0){i=o>2e3?2e3:o;o-=i;do{r=r+t[n++]|0;a=a+r|0}while(--i);r%=65521;a%=65521}return r|a<<16|0}e.exports=adler32},1952:e=>{"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},6250:e=>{"use strict";function makeTable(){var e,t=[];for(var o=0;o<256;o++){e=o;for(var n=0;n<8;n++){e=e&1?3988292384^e>>>1:e>>>1}t[o]=e}return t}var t=makeTable();function crc32(e,o,n,r){var a=t,i=r+n;e^=-1;for(var s=r;s<i;s++){e=e>>>8^a[(e^o[s])&255]}return e^-1}e.exports=crc32},4622:(e,t,o)=>{"use strict";var n=o(7424);var r=o(9372);var a=o(9624);var i=o(6250);var s=o(8737);var l=0;var c=1;var d=3;var u=4;var p=5;var A=0;var f=1;var h=-2;var m=-3;var g=-5;var v=-1;var y=1;var b=2;var w=3;var x=4;var S=0;var k=2;var C=8;var T=9;var P=15;var E=8;var _=29;var L=256;var I=L+1+_;var B=30;var D=19;var N=2*I+1;var R=15;var F=3;var M=258;var O=M+F+1;var $=32;var z=42;var j=69;var U=73;var W=91;var q=103;var G=113;var X=666;var H=1;var Q=2;var V=3;var Y=4;var J=3;function err(e,t){e.msg=s[t];return t}function rank(e){return(e<<1)-(e>4?9:0)}function zero(e){var t=e.length;while(--t>=0){e[t]=0}}function flush_pending(e){var t=e.state;var o=t.pending;if(o>e.avail_out){o=e.avail_out}if(o===0){return}n.arraySet(e.output,t.pending_buf,t.pending_out,o,e.next_out);e.next_out+=o;t.pending_out+=o;e.total_out+=o;e.avail_out-=o;t.pending-=o;if(t.pending===0){t.pending_out=0}}function flush_block_only(e,t){r._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t);e.block_start=e.strstart;flush_pending(e.strm)}function put_byte(e,t){e.pending_buf[e.pending++]=t}function putShortMSB(e,t){e.pending_buf[e.pending++]=t>>>8&255;e.pending_buf[e.pending++]=t&255}function read_buf(e,t,o,r){var s=e.avail_in;if(s>r){s=r}if(s===0){return 0}e.avail_in-=s;n.arraySet(t,e.input,e.next_in,s,o);if(e.state.wrap===1){e.adler=a(e.adler,t,s,o)}else if(e.state.wrap===2){e.adler=i(e.adler,t,s,o)}e.next_in+=s;e.total_in+=s;return s}function longest_match(e,t){var o=e.max_chain_length;var n=e.strstart;var r;var a;var i=e.prev_length;var s=e.nice_match;var l=e.strstart>e.w_size-O?e.strstart-(e.w_size-O):0;var c=e.window;var d=e.w_mask;var u=e.prev;var p=e.strstart+M;var A=c[n+i-1];var f=c[n+i];if(e.prev_length>=e.good_match){o>>=2}if(s>e.lookahead){s=e.lookahead}do{r=t;if(c[r+i]!==f||c[r+i-1]!==A||c[r]!==c[n]||c[++r]!==c[n+1]){continue}n+=2;r++;do{}while(c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&n<p);a=M-(p-n);n=p-M;if(a>i){e.match_start=t;i=a;if(a>=s){break}A=c[n+i-1];f=c[n+i]}}while((t=u[t&d])>l&&--o!==0);if(i<=e.lookahead){return i}return e.lookahead}function fill_window(e){var t=e.w_size;var o,r,a,i,s;do{i=e.window_size-e.lookahead-e.strstart;if(e.strstart>=t+(t-O)){n.arraySet(e.window,e.window,t,t,0);e.match_start-=t;e.strstart-=t;e.block_start-=t;r=e.hash_size;o=r;do{a=e.head[--o];e.head[o]=a>=t?a-t:0}while(--r);r=t;o=r;do{a=e.prev[--o];e.prev[o]=a>=t?a-t:0}while(--r);i+=t}if(e.strm.avail_in===0){break}r=read_buf(e.strm,e.window,e.strstart+e.lookahead,i);e.lookahead+=r;if(e.lookahead+e.insert>=F){s=e.strstart-e.insert;e.ins_h=e.window[s];e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;while(e.insert){e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+F-1])&e.hash_mask;e.prev[s&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=s;s++;e.insert--;if(e.lookahead+e.insert<F){break}}}}while(e.lookahead<O&&e.strm.avail_in!==0)}function deflate_stored(e,t){var o=65535;if(o>e.pending_buf_size-5){o=e.pending_buf_size-5}for(;;){if(e.lookahead<=1){fill_window(e);if(e.lookahead===0&&t===l){return H}if(e.lookahead===0){break}}e.strstart+=e.lookahead;e.lookahead=0;var n=e.block_start+o;if(e.strstart===0||e.strstart>=n){e.lookahead=e.strstart-n;e.strstart=n;flush_block_only(e,false);if(e.strm.avail_out===0){return H}}if(e.strstart-e.block_start>=e.w_size-O){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}e.insert=0;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.strstart>e.block_start){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return H}function deflate_fast(e,t){var o;var n;for(;;){if(e.lookahead<O){fill_window(e);if(e.lookahead<O&&t===l){return H}if(e.lookahead===0){break}}o=0;if(e.lookahead>=F){e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+F-1])&e.hash_mask;o=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=e.strstart}if(o!==0&&e.strstart-o<=e.w_size-O){e.match_length=longest_match(e,o)}if(e.match_length>=F){n=r._tr_tally(e,e.strstart-e.match_start,e.match_length-F);e.lookahead-=e.match_length;if(e.match_length<=e.max_lazy_match&&e.lookahead>=F){e.match_length--;do{e.strstart++;e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+F-1])&e.hash_mask;o=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=e.strstart}while(--e.match_length!==0);e.strstart++}else{e.strstart+=e.match_length;e.match_length=0;e.ins_h=e.window[e.strstart];e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask}}else{n=r._tr_tally(e,0,e.window[e.strstart]);e.lookahead--;e.strstart++}if(n){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}e.insert=e.strstart<F-1?e.strstart:F-1;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.last_lit){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return Q}function deflate_slow(e,t){var o;var n;var a;for(;;){if(e.lookahead<O){fill_window(e);if(e.lookahead<O&&t===l){return H}if(e.lookahead===0){break}}o=0;if(e.lookahead>=F){e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+F-1])&e.hash_mask;o=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=e.strstart}e.prev_length=e.match_length;e.prev_match=e.match_start;e.match_length=F-1;if(o!==0&&e.prev_length<e.max_lazy_match&&e.strstart-o<=e.w_size-O){e.match_length=longest_match(e,o);if(e.match_length<=5&&(e.strategy===y||e.match_length===F&&e.strstart-e.match_start>4096)){e.match_length=F-1}}if(e.prev_length>=F&&e.match_length<=e.prev_length){a=e.strstart+e.lookahead-F;n=r._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F);e.lookahead-=e.prev_length-1;e.prev_length-=2;do{if(++e.strstart<=a){e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+F-1])&e.hash_mask;o=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=e.strstart}}while(--e.prev_length!==0);e.match_available=0;e.match_length=F-1;e.strstart++;if(n){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}else if(e.match_available){n=r._tr_tally(e,0,e.window[e.strstart-1]);if(n){flush_block_only(e,false)}e.strstart++;e.lookahead--;if(e.strm.avail_out===0){return H}}else{e.match_available=1;e.strstart++;e.lookahead--}}if(e.match_available){n=r._tr_tally(e,0,e.window[e.strstart-1]);e.match_available=0}e.insert=e.strstart<F-1?e.strstart:F-1;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.last_lit){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return Q}function deflate_rle(e,t){var o;var n;var a,i;var s=e.window;for(;;){if(e.lookahead<=M){fill_window(e);if(e.lookahead<=M&&t===l){return H}if(e.lookahead===0){break}}e.match_length=0;if(e.lookahead>=F&&e.strstart>0){a=e.strstart-1;n=s[a];if(n===s[++a]&&n===s[++a]&&n===s[++a]){i=e.strstart+M;do{}while(n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&a<i);e.match_length=M-(i-a);if(e.match_length>e.lookahead){e.match_length=e.lookahead}}}if(e.match_length>=F){o=r._tr_tally(e,1,e.match_length-F);e.lookahead-=e.match_length;e.strstart+=e.match_length;e.match_length=0}else{o=r._tr_tally(e,0,e.window[e.strstart]);e.lookahead--;e.strstart++}if(o){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}e.insert=0;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.last_lit){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return Q}function deflate_huff(e,t){var o;for(;;){if(e.lookahead===0){fill_window(e);if(e.lookahead===0){if(t===l){return H}break}}e.match_length=0;o=r._tr_tally(e,0,e.window[e.strstart]);e.lookahead--;e.strstart++;if(o){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}e.insert=0;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.last_lit){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return Q}function Config(e,t,o,n,r){this.good_length=e;this.max_lazy=t;this.nice_length=o;this.max_chain=n;this.func=r}var K;K=[new Config(0,0,0,0,deflate_stored),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)];function lm_init(e){e.window_size=2*e.w_size;zero(e.head);e.max_lazy_match=K[e.level].max_lazy;e.good_match=K[e.level].good_length;e.nice_match=K[e.level].nice_length;e.max_chain_length=K[e.level].max_chain;e.strstart=0;e.block_start=0;e.lookahead=0;e.insert=0;e.match_length=e.prev_length=F-1;e.match_available=0;e.ins_h=0}function DeflateState(){this.strm=null;this.status=0;this.pending_buf=null;this.pending_buf_size=0;this.pending_out=0;this.pending=0;this.wrap=0;this.gzhead=null;this.gzindex=0;this.method=C;this.last_flush=-1;this.w_size=0;this.w_bits=0;this.w_mask=0;this.window=null;this.window_size=0;this.prev=null;this.head=null;this.ins_h=0;this.hash_size=0;this.hash_bits=0;this.hash_mask=0;this.hash_shift=0;this.block_start=0;this.match_length=0;this.prev_match=0;this.match_available=0;this.strstart=0;this.match_start=0;this.lookahead=0;this.prev_length=0;this.max_chain_length=0;this.max_lazy_match=0;this.level=0;this.strategy=0;this.good_match=0;this.nice_match=0;this.dyn_ltree=new n.Buf16(N*2);this.dyn_dtree=new n.Buf16((2*B+1)*2);this.bl_tree=new n.Buf16((2*D+1)*2);zero(this.dyn_ltree);zero(this.dyn_dtree);zero(this.bl_tree);this.l_desc=null;this.d_desc=null;this.bl_desc=null;this.bl_count=new n.Buf16(R+1);this.heap=new n.Buf16(2*I+1);zero(this.heap);this.heap_len=0;this.heap_max=0;this.depth=new n.Buf16(2*I+1);zero(this.depth);this.l_buf=0;this.lit_bufsize=0;this.last_lit=0;this.d_buf=0;this.opt_len=0;this.static_len=0;this.matches=0;this.insert=0;this.bi_buf=0;this.bi_valid=0}function deflateResetKeep(e){var t;if(!e||!e.state){return err(e,h)}e.total_in=e.total_out=0;e.data_type=k;t=e.state;t.pending=0;t.pending_out=0;if(t.wrap<0){t.wrap=-t.wrap}t.status=t.wrap?z:G;e.adler=t.wrap===2?0:1;t.last_flush=l;r._tr_init(t);return A}function deflateReset(e){var t=deflateResetKeep(e);if(t===A){lm_init(e.state)}return t}function deflateSetHeader(e,t){if(!e||!e.state){return h}if(e.state.wrap!==2){return h}e.state.gzhead=t;return A}function deflateInit2(e,t,o,r,a,i){if(!e){return h}var s=1;if(t===v){t=6}if(r<0){s=0;r=-r}else if(r>15){s=2;r-=16}if(a<1||a>T||o!==C||r<8||r>15||t<0||t>9||i<0||i>x){return err(e,h)}if(r===8){r=9}var l=new DeflateState;e.state=l;l.strm=e;l.wrap=s;l.gzhead=null;l.w_bits=r;l.w_size=1<<l.w_bits;l.w_mask=l.w_size-1;l.hash_bits=a+7;l.hash_size=1<<l.hash_bits;l.hash_mask=l.hash_size-1;l.hash_shift=~~((l.hash_bits+F-1)/F);l.window=new n.Buf8(l.w_size*2);l.head=new n.Buf16(l.hash_size);l.prev=new n.Buf16(l.w_size);l.lit_bufsize=1<<a+6;l.pending_buf_size=l.lit_bufsize*4;l.pending_buf=new n.Buf8(l.pending_buf_size);l.d_buf=1*l.lit_bufsize;l.l_buf=(1+2)*l.lit_bufsize;l.level=t;l.strategy=i;l.method=o;return deflateReset(e)}function deflateInit(e,t){return deflateInit2(e,t,C,P,E,S)}function deflate(e,t){var o,n;var a,s;if(!e||!e.state||t>p||t<0){return e?err(e,h):h}n=e.state;if(!e.output||!e.input&&e.avail_in!==0||n.status===X&&t!==u){return err(e,e.avail_out===0?g:h)}n.strm=e;o=n.last_flush;n.last_flush=t;if(n.status===z){if(n.wrap===2){e.adler=0;put_byte(n,31);put_byte(n,139);put_byte(n,8);if(!n.gzhead){put_byte(n,0);put_byte(n,0);put_byte(n,0);put_byte(n,0);put_byte(n,0);put_byte(n,n.level===9?2:n.strategy>=b||n.level<2?4:0);put_byte(n,J);n.status=G}else{put_byte(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(!n.gzhead.extra?0:4)+(!n.gzhead.name?0:8)+(!n.gzhead.comment?0:16));put_byte(n,n.gzhead.time&255);put_byte(n,n.gzhead.time>>8&255);put_byte(n,n.gzhead.time>>16&255);put_byte(n,n.gzhead.time>>24&255);put_byte(n,n.level===9?2:n.strategy>=b||n.level<2?4:0);put_byte(n,n.gzhead.os&255);if(n.gzhead.extra&&n.gzhead.extra.length){put_byte(n,n.gzhead.extra.length&255);put_byte(n,n.gzhead.extra.length>>8&255)}if(n.gzhead.hcrc){e.adler=i(e.adler,n.pending_buf,n.pending,0)}n.gzindex=0;n.status=j}}else{var m=C+(n.w_bits-8<<4)<<8;var v=-1;if(n.strategy>=b||n.level<2){v=0}else if(n.level<6){v=1}else if(n.level===6){v=2}else{v=3}m|=v<<6;if(n.strstart!==0){m|=$}m+=31-m%31;n.status=G;putShortMSB(n,m);if(n.strstart!==0){putShortMSB(n,e.adler>>>16);putShortMSB(n,e.adler&65535)}e.adler=1}}if(n.status===j){if(n.gzhead.extra){a=n.pending;while(n.gzindex<(n.gzhead.extra.length&65535)){if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}flush_pending(e);a=n.pending;if(n.pending===n.pending_buf_size){break}}put_byte(n,n.gzhead.extra[n.gzindex]&255);n.gzindex++}if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}if(n.gzindex===n.gzhead.extra.length){n.gzindex=0;n.status=U}}else{n.status=U}}if(n.status===U){if(n.gzhead.name){a=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}flush_pending(e);a=n.pending;if(n.pending===n.pending_buf_size){s=1;break}}if(n.gzindex<n.gzhead.name.length){s=n.gzhead.name.charCodeAt(n.gzindex++)&255}else{s=0}put_byte(n,s)}while(s!==0);if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}if(s===0){n.gzindex=0;n.status=W}}else{n.status=W}}if(n.status===W){if(n.gzhead.comment){a=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}flush_pending(e);a=n.pending;if(n.pending===n.pending_buf_size){s=1;break}}if(n.gzindex<n.gzhead.comment.length){s=n.gzhead.comment.charCodeAt(n.gzindex++)&255}else{s=0}put_byte(n,s)}while(s!==0);if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}if(s===0){n.status=q}}else{n.status=q}}if(n.status===q){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size){flush_pending(e)}if(n.pending+2<=n.pending_buf_size){put_byte(n,e.adler&255);put_byte(n,e.adler>>8&255);e.adler=0;n.status=G}}else{n.status=G}}if(n.pending!==0){flush_pending(e);if(e.avail_out===0){n.last_flush=-1;return A}}else if(e.avail_in===0&&rank(t)<=rank(o)&&t!==u){return err(e,g)}if(n.status===X&&e.avail_in!==0){return err(e,g)}if(e.avail_in!==0||n.lookahead!==0||t!==l&&n.status!==X){var y=n.strategy===b?deflate_huff(n,t):n.strategy===w?deflate_rle(n,t):K[n.level].func(n,t);if(y===V||y===Y){n.status=X}if(y===H||y===V){if(e.avail_out===0){n.last_flush=-1}return A}if(y===Q){if(t===c){r._tr_align(n)}else if(t!==p){r._tr_stored_block(n,0,0,false);if(t===d){zero(n.head);if(n.lookahead===0){n.strstart=0;n.block_start=0;n.insert=0}}}flush_pending(e);if(e.avail_out===0){n.last_flush=-1;return A}}}if(t!==u){return A}if(n.wrap<=0){return f}if(n.wrap===2){put_byte(n,e.adler&255);put_byte(n,e.adler>>8&255);put_byte(n,e.adler>>16&255);put_byte(n,e.adler>>24&255);put_byte(n,e.total_in&255);put_byte(n,e.total_in>>8&255);put_byte(n,e.total_in>>16&255);put_byte(n,e.total_in>>24&255)}else{putShortMSB(n,e.adler>>>16);putShortMSB(n,e.adler&65535)}flush_pending(e);if(n.wrap>0){n.wrap=-n.wrap}return n.pending!==0?A:f}function deflateEnd(e){var t;if(!e||!e.state){return h}t=e.state.status;if(t!==z&&t!==j&&t!==U&&t!==W&&t!==q&&t!==G&&t!==X){return err(e,h)}e.state=null;return t===G?err(e,m):A}function deflateSetDictionary(e,t){var o=t.length;var r;var i,s;var l;var c;var d;var u;var p;if(!e||!e.state){return h}r=e.state;l=r.wrap;if(l===2||l===1&&r.status!==z||r.lookahead){return h}if(l===1){e.adler=a(e.adler,t,o,0)}r.wrap=0;if(o>=r.w_size){if(l===0){zero(r.head);r.strstart=0;r.block_start=0;r.insert=0}p=new n.Buf8(r.w_size);n.arraySet(p,t,o-r.w_size,r.w_size,0);t=p;o=r.w_size}c=e.avail_in;d=e.next_in;u=e.input;e.avail_in=o;e.next_in=0;e.input=t;fill_window(r);while(r.lookahead>=F){i=r.strstart;s=r.lookahead-(F-1);do{r.ins_h=(r.ins_h<<r.hash_shift^r.window[i+F-1])&r.hash_mask;r.prev[i&r.w_mask]=r.head[r.ins_h];r.head[r.ins_h]=i;i++}while(--s);r.strstart=i;r.lookahead=F-1;fill_window(r)}r.strstart+=r.lookahead;r.block_start=r.strstart;r.insert=r.lookahead;r.lookahead=0;r.match_length=r.prev_length=F-1;r.match_available=0;e.next_in=d;e.input=u;e.avail_in=c;r.wrap=l;return A}t.deflateInit=deflateInit;t.deflateInit2=deflateInit2;t.deflateReset=deflateReset;t.deflateResetKeep=deflateResetKeep;t.deflateSetHeader=deflateSetHeader;t.deflate=deflate;t.deflateEnd=deflateEnd;t.deflateSetDictionary=deflateSetDictionary;t.deflateInfo="pako deflate (from Nodeca project)"},1321:e=>{"use strict";function GZheader(){this.text=0;this.time=0;this.xflags=0;this.os=0;this.extra=null;this.extra_len=0;this.name="";this.comment="";this.hcrc=0;this.done=false}e.exports=GZheader},5296:e=>{"use strict";var t=30;var o=12;e.exports=function inflate_fast(e,n){var r;var a;var i;var s;var l;var c;var d;var u;var p;var A;var f;var h;var m;var g;var v;var y;var b;var w;var x;var S;var k;var C;var T;var P,E;r=e.state;a=e.next_in;P=e.input;i=a+(e.avail_in-5);s=e.next_out;E=e.output;l=s-(n-e.avail_out);c=s+(e.avail_out-257);d=r.dmax;u=r.wsize;p=r.whave;A=r.wnext;f=r.window;h=r.hold;m=r.bits;g=r.lencode;v=r.distcode;y=(1<<r.lenbits)-1;b=(1<<r.distbits)-1;e:do{if(m<15){h+=P[a++]<<m;m+=8;h+=P[a++]<<m;m+=8}w=g[h&y];t:for(;;){x=w>>>24;h>>>=x;m-=x;x=w>>>16&255;if(x===0){E[s++]=w&65535}else if(x&16){S=w&65535;x&=15;if(x){if(m<x){h+=P[a++]<<m;m+=8}S+=h&(1<<x)-1;h>>>=x;m-=x}if(m<15){h+=P[a++]<<m;m+=8;h+=P[a++]<<m;m+=8}w=v[h&b];o:for(;;){x=w>>>24;h>>>=x;m-=x;x=w>>>16&255;if(x&16){k=w&65535;x&=15;if(m<x){h+=P[a++]<<m;m+=8;if(m<x){h+=P[a++]<<m;m+=8}}k+=h&(1<<x)-1;if(k>d){e.msg="invalid distance too far back";r.mode=t;break e}h>>>=x;m-=x;x=s-l;if(k>x){x=k-x;if(x>p){if(r.sane){e.msg="invalid distance too far back";r.mode=t;break e}}C=0;T=f;if(A===0){C+=u-x;if(x<S){S-=x;do{E[s++]=f[C++]}while(--x);C=s-k;T=E}}else if(A<x){C+=u+A-x;x-=A;if(x<S){S-=x;do{E[s++]=f[C++]}while(--x);C=0;if(A<S){x=A;S-=x;do{E[s++]=f[C++]}while(--x);C=s-k;T=E}}}else{C+=A-x;if(x<S){S-=x;do{E[s++]=f[C++]}while(--x);C=s-k;T=E}}while(S>2){E[s++]=T[C++];E[s++]=T[C++];E[s++]=T[C++];S-=3}if(S){E[s++]=T[C++];if(S>1){E[s++]=T[C++]}}}else{C=s-k;do{E[s++]=E[C++];E[s++]=E[C++];E[s++]=E[C++];S-=3}while(S>2);if(S){E[s++]=E[C++];if(S>1){E[s++]=E[C++]}}}}else if((x&64)===0){w=v[(w&65535)+(h&(1<<x)-1)];continue o}else{e.msg="invalid distance code";r.mode=t;break e}break}}else if((x&64)===0){w=g[(w&65535)+(h&(1<<x)-1)];continue t}else if(x&32){r.mode=o;break e}else{e.msg="invalid literal/length code";r.mode=t;break e}break}}while(a<i&&s<c);S=m>>3;a-=S;m-=S<<3;h&=(1<<m)-1;e.next_in=a;e.next_out=s;e.avail_in=a<i?5+(i-a):5-(a-i);e.avail_out=s<c?257+(c-s):257-(s-c);r.hold=h;r.bits=m;return}},5518:(e,t,o)=>{"use strict";var n=o(7424);var r=o(9624);var a=o(6250);var i=o(5296);var s=o(457);var l=0;var c=1;var d=2;var u=4;var p=5;var A=6;var f=0;var h=1;var m=2;var g=-2;var v=-3;var y=-4;var b=-5;var w=8;var x=1;var S=2;var k=3;var C=4;var T=5;var P=6;var E=7;var _=8;var L=9;var I=10;var B=11;var D=12;var N=13;var R=14;var F=15;var M=16;var O=17;var $=18;var z=19;var j=20;var U=21;var W=22;var q=23;var G=24;var X=25;var H=26;var Q=27;var V=28;var Y=29;var J=30;var K=31;var Z=32;var ee=852;var te=592;var oe=15;var ne=oe;function zswap32(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function InflateState(){this.mode=0;this.last=false;this.wrap=0;this.havedict=false;this.flags=0;this.dmax=0;this.check=0;this.total=0;this.head=null;this.wbits=0;this.wsize=0;this.whave=0;this.wnext=0;this.window=null;this.hold=0;this.bits=0;this.length=0;this.offset=0;this.extra=0;this.lencode=null;this.distcode=null;this.lenbits=0;this.distbits=0;this.ncode=0;this.nlen=0;this.ndist=0;this.have=0;this.next=null;this.lens=new n.Buf16(320);this.work=new n.Buf16(288);this.lendyn=null;this.distdyn=null;this.sane=0;this.back=0;this.was=0}function inflateResetKeep(e){var t;if(!e||!e.state){return g}t=e.state;e.total_in=e.total_out=t.total=0;e.msg="";if(t.wrap){e.adler=t.wrap&1}t.mode=x;t.last=0;t.havedict=0;t.dmax=32768;t.head=null;t.hold=0;t.bits=0;t.lencode=t.lendyn=new n.Buf32(ee);t.distcode=t.distdyn=new n.Buf32(te);t.sane=1;t.back=-1;return f}function inflateReset(e){var t;if(!e||!e.state){return g}t=e.state;t.wsize=0;t.whave=0;t.wnext=0;return inflateResetKeep(e)}function inflateReset2(e,t){var o;var n;if(!e||!e.state){return g}n=e.state;if(t<0){o=0;t=-t}else{o=(t>>4)+1;if(t<48){t&=15}}if(t&&(t<8||t>15)){return g}if(n.window!==null&&n.wbits!==t){n.window=null}n.wrap=o;n.wbits=t;return inflateReset(e)}function inflateInit2(e,t){var o;var n;if(!e){return g}n=new InflateState;e.state=n;n.window=null;o=inflateReset2(e,t);if(o!==f){e.state=null}return o}function inflateInit(e){return inflateInit2(e,ne)}var re=true;var ae,ie;function fixedtables(e){if(re){var t;ae=new n.Buf32(512);ie=new n.Buf32(32);t=0;while(t<144){e.lens[t++]=8}while(t<256){e.lens[t++]=9}while(t<280){e.lens[t++]=7}while(t<288){e.lens[t++]=8}s(c,e.lens,0,288,ae,0,e.work,{bits:9});t=0;while(t<32){e.lens[t++]=5}s(d,e.lens,0,32,ie,0,e.work,{bits:5});re=false}e.lencode=ae;e.lenbits=9;e.distcode=ie;e.distbits=5}function updatewindow(e,t,o,r){var a;var i=e.state;if(i.window===null){i.wsize=1<<i.wbits;i.wnext=0;i.whave=0;i.window=new n.Buf8(i.wsize)}if(r>=i.wsize){n.arraySet(i.window,t,o-i.wsize,i.wsize,0);i.wnext=0;i.whave=i.wsize}else{a=i.wsize-i.wnext;if(a>r){a=r}n.arraySet(i.window,t,o-r,a,i.wnext);r-=a;if(r){n.arraySet(i.window,t,o-r,r,0);i.wnext=r;i.whave=i.wsize}else{i.wnext+=a;if(i.wnext===i.wsize){i.wnext=0}if(i.whave<i.wsize){i.whave+=a}}}return 0}function inflate(e,t){var o;var ee,te;var oe;var ne;var re,ae;var ie;var se;var le,ce;var de;var ue;var pe;var Ae=0;var fe,he,me;var ge,ve,ye;var be;var we;var xe=new n.Buf8(4);var Se;var ke;var Ce=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0){return g}o=e.state;if(o.mode===D){o.mode=N}ne=e.next_out;te=e.output;ae=e.avail_out;oe=e.next_in;ee=e.input;re=e.avail_in;ie=o.hold;se=o.bits;le=re;ce=ae;we=f;e:for(;;){switch(o.mode){case x:if(o.wrap===0){o.mode=N;break}while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(o.wrap&2&&ie===35615){o.check=0;xe[0]=ie&255;xe[1]=ie>>>8&255;o.check=a(o.check,xe,2,0);ie=0;se=0;o.mode=S;break}o.flags=0;if(o.head){o.head.done=false}if(!(o.wrap&1)||(((ie&255)<<8)+(ie>>8))%31){e.msg="incorrect header check";o.mode=J;break}if((ie&15)!==w){e.msg="unknown compression method";o.mode=J;break}ie>>>=4;se-=4;be=(ie&15)+8;if(o.wbits===0){o.wbits=be}else if(be>o.wbits){e.msg="invalid window size";o.mode=J;break}o.dmax=1<<be;e.adler=o.check=1;o.mode=ie&512?I:D;ie=0;se=0;break;case S:while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.flags=ie;if((o.flags&255)!==w){e.msg="unknown compression method";o.mode=J;break}if(o.flags&57344){e.msg="unknown header flags set";o.mode=J;break}if(o.head){o.head.text=ie>>8&1}if(o.flags&512){xe[0]=ie&255;xe[1]=ie>>>8&255;o.check=a(o.check,xe,2,0)}ie=0;se=0;o.mode=k;case k:while(se<32){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(o.head){o.head.time=ie}if(o.flags&512){xe[0]=ie&255;xe[1]=ie>>>8&255;xe[2]=ie>>>16&255;xe[3]=ie>>>24&255;o.check=a(o.check,xe,4,0)}ie=0;se=0;o.mode=C;case C:while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(o.head){o.head.xflags=ie&255;o.head.os=ie>>8}if(o.flags&512){xe[0]=ie&255;xe[1]=ie>>>8&255;o.check=a(o.check,xe,2,0)}ie=0;se=0;o.mode=T;case T:if(o.flags&1024){while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.length=ie;if(o.head){o.head.extra_len=ie}if(o.flags&512){xe[0]=ie&255;xe[1]=ie>>>8&255;o.check=a(o.check,xe,2,0)}ie=0;se=0}else if(o.head){o.head.extra=null}o.mode=P;case P:if(o.flags&1024){de=o.length;if(de>re){de=re}if(de){if(o.head){be=o.head.extra_len-o.length;if(!o.head.extra){o.head.extra=new Array(o.head.extra_len)}n.arraySet(o.head.extra,ee,oe,de,be)}if(o.flags&512){o.check=a(o.check,ee,de,oe)}re-=de;oe+=de;o.length-=de}if(o.length){break e}}o.length=0;o.mode=E;case E:if(o.flags&2048){if(re===0){break e}de=0;do{be=ee[oe+de++];if(o.head&&be&&o.length<65536){o.head.name+=String.fromCharCode(be)}}while(be&&de<re);if(o.flags&512){o.check=a(o.check,ee,de,oe)}re-=de;oe+=de;if(be){break e}}else if(o.head){o.head.name=null}o.length=0;o.mode=_;case _:if(o.flags&4096){if(re===0){break e}de=0;do{be=ee[oe+de++];if(o.head&&be&&o.length<65536){o.head.comment+=String.fromCharCode(be)}}while(be&&de<re);if(o.flags&512){o.check=a(o.check,ee,de,oe)}re-=de;oe+=de;if(be){break e}}else if(o.head){o.head.comment=null}o.mode=L;case L:if(o.flags&512){while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(ie!==(o.check&65535)){e.msg="header crc mismatch";o.mode=J;break}ie=0;se=0}if(o.head){o.head.hcrc=o.flags>>9&1;o.head.done=true}e.adler=o.check=0;o.mode=D;break;case I:while(se<32){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}e.adler=o.check=zswap32(ie);ie=0;se=0;o.mode=B;case B:if(o.havedict===0){e.next_out=ne;e.avail_out=ae;e.next_in=oe;e.avail_in=re;o.hold=ie;o.bits=se;return m}e.adler=o.check=1;o.mode=D;case D:if(t===p||t===A){break e}case N:if(o.last){ie>>>=se&7;se-=se&7;o.mode=Q;break}while(se<3){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.last=ie&1;ie>>>=1;se-=1;switch(ie&3){case 0:o.mode=R;break;case 1:fixedtables(o);o.mode=j;if(t===A){ie>>>=2;se-=2;break e}break;case 2:o.mode=O;break;case 3:e.msg="invalid block type";o.mode=J}ie>>>=2;se-=2;break;case R:ie>>>=se&7;se-=se&7;while(se<32){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if((ie&65535)!==(ie>>>16^65535)){e.msg="invalid stored block lengths";o.mode=J;break}o.length=ie&65535;ie=0;se=0;o.mode=F;if(t===A){break e}case F:o.mode=M;case M:de=o.length;if(de){if(de>re){de=re}if(de>ae){de=ae}if(de===0){break e}n.arraySet(te,ee,oe,de,ne);re-=de;oe+=de;ae-=de;ne+=de;o.length-=de;break}o.mode=D;break;case O:while(se<14){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.nlen=(ie&31)+257;ie>>>=5;se-=5;o.ndist=(ie&31)+1;ie>>>=5;se-=5;o.ncode=(ie&15)+4;ie>>>=4;se-=4;if(o.nlen>286||o.ndist>30){e.msg="too many length or distance symbols";o.mode=J;break}o.have=0;o.mode=$;case $:while(o.have<o.ncode){while(se<3){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.lens[Ce[o.have++]]=ie&7;ie>>>=3;se-=3}while(o.have<19){o.lens[Ce[o.have++]]=0}o.lencode=o.lendyn;o.lenbits=7;Se={bits:o.lenbits};we=s(l,o.lens,0,19,o.lencode,0,o.work,Se);o.lenbits=Se.bits;if(we){e.msg="invalid code lengths set";o.mode=J;break}o.have=0;o.mode=z;case z:while(o.have<o.nlen+o.ndist){for(;;){Ae=o.lencode[ie&(1<<o.lenbits)-1];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(me<16){ie>>>=fe;se-=fe;o.lens[o.have++]=me}else{if(me===16){ke=fe+2;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=fe;se-=fe;if(o.have===0){e.msg="invalid bit length repeat";o.mode=J;break}be=o.lens[o.have-1];de=3+(ie&3);ie>>>=2;se-=2}else if(me===17){ke=fe+3;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=fe;se-=fe;be=0;de=3+(ie&7);ie>>>=3;se-=3}else{ke=fe+7;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=fe;se-=fe;be=0;de=11+(ie&127);ie>>>=7;se-=7}if(o.have+de>o.nlen+o.ndist){e.msg="invalid bit length repeat";o.mode=J;break}while(de--){o.lens[o.have++]=be}}}if(o.mode===J){break}if(o.lens[256]===0){e.msg="invalid code -- missing end-of-block";o.mode=J;break}o.lenbits=9;Se={bits:o.lenbits};we=s(c,o.lens,0,o.nlen,o.lencode,0,o.work,Se);o.lenbits=Se.bits;if(we){e.msg="invalid literal/lengths set";o.mode=J;break}o.distbits=6;o.distcode=o.distdyn;Se={bits:o.distbits};we=s(d,o.lens,o.nlen,o.ndist,o.distcode,0,o.work,Se);o.distbits=Se.bits;if(we){e.msg="invalid distances set";o.mode=J;break}o.mode=j;if(t===A){break e}case j:o.mode=U;case U:if(re>=6&&ae>=258){e.next_out=ne;e.avail_out=ae;e.next_in=oe;e.avail_in=re;o.hold=ie;o.bits=se;i(e,ce);ne=e.next_out;te=e.output;ae=e.avail_out;oe=e.next_in;ee=e.input;re=e.avail_in;ie=o.hold;se=o.bits;if(o.mode===D){o.back=-1}break}o.back=0;for(;;){Ae=o.lencode[ie&(1<<o.lenbits)-1];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(he&&(he&240)===0){ge=fe;ve=he;ye=me;for(;;){Ae=o.lencode[ye+((ie&(1<<ge+ve)-1)>>ge)];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(ge+fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=ge;se-=ge;o.back+=ge}ie>>>=fe;se-=fe;o.back+=fe;o.length=me;if(he===0){o.mode=H;break}if(he&32){o.back=-1;o.mode=D;break}if(he&64){e.msg="invalid literal/length code";o.mode=J;break}o.extra=he&15;o.mode=W;case W:if(o.extra){ke=o.extra;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.length+=ie&(1<<o.extra)-1;ie>>>=o.extra;se-=o.extra;o.back+=o.extra}o.was=o.length;o.mode=q;case q:for(;;){Ae=o.distcode[ie&(1<<o.distbits)-1];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if((he&240)===0){ge=fe;ve=he;ye=me;for(;;){Ae=o.distcode[ye+((ie&(1<<ge+ve)-1)>>ge)];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(ge+fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=ge;se-=ge;o.back+=ge}ie>>>=fe;se-=fe;o.back+=fe;if(he&64){e.msg="invalid distance code";o.mode=J;break}o.offset=me;o.extra=he&15;o.mode=G;case G:if(o.extra){ke=o.extra;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.offset+=ie&(1<<o.extra)-1;ie>>>=o.extra;se-=o.extra;o.back+=o.extra}if(o.offset>o.dmax){e.msg="invalid distance too far back";o.mode=J;break}o.mode=X;case X:if(ae===0){break e}de=ce-ae;if(o.offset>de){de=o.offset-de;if(de>o.whave){if(o.sane){e.msg="invalid distance too far back";o.mode=J;break}}if(de>o.wnext){de-=o.wnext;ue=o.wsize-de}else{ue=o.wnext-de}if(de>o.length){de=o.length}pe=o.window}else{pe=te;ue=ne-o.offset;de=o.length}if(de>ae){de=ae}ae-=de;o.length-=de;do{te[ne++]=pe[ue++]}while(--de);if(o.length===0){o.mode=U}break;case H:if(ae===0){break e}te[ne++]=o.length;ae--;o.mode=U;break;case Q:if(o.wrap){while(se<32){if(re===0){break e}re--;ie|=ee[oe++]<<se;se+=8}ce-=ae;e.total_out+=ce;o.total+=ce;if(ce){e.adler=o.check=o.flags?a(o.check,te,ce,ne-ce):r(o.check,te,ce,ne-ce)}ce=ae;if((o.flags?ie:zswap32(ie))!==o.check){e.msg="incorrect data check";o.mode=J;break}ie=0;se=0}o.mode=V;case V:if(o.wrap&&o.flags){while(se<32){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(ie!==(o.total&4294967295)){e.msg="incorrect length check";o.mode=J;break}ie=0;se=0}o.mode=Y;case Y:we=h;break e;case J:we=v;break e;case K:return y;case Z:default:return g}}e.next_out=ne;e.avail_out=ae;e.next_in=oe;e.avail_in=re;o.hold=ie;o.bits=se;if(o.wsize||ce!==e.avail_out&&o.mode<J&&(o.mode<Q||t!==u)){if(updatewindow(e,e.output,e.next_out,ce-e.avail_out)){o.mode=K;return y}}le-=e.avail_in;ce-=e.avail_out;e.total_in+=le;e.total_out+=ce;o.total+=ce;if(o.wrap&&ce){e.adler=o.check=o.flags?a(o.check,te,ce,e.next_out-ce):r(o.check,te,ce,e.next_out-ce)}e.data_type=o.bits+(o.last?64:0)+(o.mode===D?128:0)+(o.mode===j||o.mode===F?256:0);if((le===0&&ce===0||t===u)&&we===f){we=b}return we}function inflateEnd(e){if(!e||!e.state){return g}var t=e.state;if(t.window){t.window=null}e.state=null;return f}function inflateGetHeader(e,t){var o;if(!e||!e.state){return g}o=e.state;if((o.wrap&2)===0){return g}o.head=t;t.done=false;return f}function inflateSetDictionary(e,t){var o=t.length;var n;var a;var i;if(!e||!e.state){return g}n=e.state;if(n.wrap!==0&&n.mode!==B){return g}if(n.mode===B){a=1;a=r(a,t,o,0);if(a!==n.check){return v}}i=updatewindow(e,t,o,o);if(i){n.mode=K;return y}n.havedict=1;return f}t.inflateReset=inflateReset;t.inflateReset2=inflateReset2;t.inflateResetKeep=inflateResetKeep;t.inflateInit=inflateInit;t.inflateInit2=inflateInit2;t.inflate=inflate;t.inflateEnd=inflateEnd;t.inflateGetHeader=inflateGetHeader;t.inflateSetDictionary=inflateSetDictionary;t.inflateInfo="pako inflate (from Nodeca project)"},457:(e,t,o)=>{"use strict";var n=o(7424);var r=15;var a=852;var i=592;var s=0;var l=1;var c=2;var d=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0];var u=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78];var p=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0];var A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function inflate_table(e,t,o,f,h,m,g,v){var y=v.bits;var b=0;var w=0;var x=0,S=0;var k=0;var C=0;var T=0;var P=0;var E=0;var _=0;var L;var I;var B;var D;var N;var R=null;var F=0;var M;var O=new n.Buf16(r+1);var $=new n.Buf16(r+1);var z=null;var j=0;var U,W,q;for(b=0;b<=r;b++){O[b]=0}for(w=0;w<f;w++){O[t[o+w]]++}k=y;for(S=r;S>=1;S--){if(O[S]!==0){break}}if(k>S){k=S}if(S===0){h[m++]=1<<24|64<<16|0;h[m++]=1<<24|64<<16|0;v.bits=1;return 0}for(x=1;x<S;x++){if(O[x]!==0){break}}if(k<x){k=x}P=1;for(b=1;b<=r;b++){P<<=1;P-=O[b];if(P<0){return-1}}if(P>0&&(e===s||S!==1)){return-1}$[1]=0;for(b=1;b<r;b++){$[b+1]=$[b]+O[b]}for(w=0;w<f;w++){if(t[o+w]!==0){g[$[t[o+w]]++]=w}}if(e===s){R=z=g;M=19}else if(e===l){R=d;F-=257;z=u;j-=257;M=256}else{R=p;z=A;M=-1}_=0;w=0;b=x;N=m;C=k;T=0;B=-1;E=1<<k;D=E-1;if(e===l&&E>a||e===c&&E>i){return 1}for(;;){U=b-T;if(g[w]<M){W=0;q=g[w]}else if(g[w]>M){W=z[j+g[w]];q=R[F+g[w]]}else{W=32+64;q=0}L=1<<b-T;I=1<<C;x=I;do{I-=L;h[N+(_>>T)+I]=U<<24|W<<16|q|0}while(I!==0);L=1<<b-1;while(_&L){L>>=1}if(L!==0){_&=L-1;_+=L}else{_=0}w++;if(--O[b]===0){if(b===S){break}b=t[o+g[w]]}if(b>k&&(_&D)!==B){if(T===0){T=k}N+=x;C=b-T;P=1<<C;while(C+T<S){P-=O[C+T];if(P<=0){break}C++;P<<=1}E+=1<<C;if(e===l&&E>a||e===c&&E>i){return 1}B=_&D;h[B]=k<<24|C<<16|N-m|0}}if(_!==0){h[N+_]=b-T<<24|64<<16|0}v.bits=k;return 0}},8737:e=>{"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},9372:(e,t,o)=>{"use strict";var n=o(7424);var r=4;var a=0;var i=1;var s=2;function zero(e){var t=e.length;while(--t>=0){e[t]=0}}var l=0;var c=1;var d=2;var u=3;var p=258;var A=29;var f=256;var h=f+1+A;var m=30;var g=19;var v=2*h+1;var y=15;var b=16;var w=7;var x=256;var S=16;var k=17;var C=18;var T=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];var P=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];var E=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];var _=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];var L=512;var I=new Array((h+2)*2);zero(I);var B=new Array(m*2);zero(B);var D=new Array(L);zero(D);var N=new Array(p-u+1);zero(N);var R=new Array(A);zero(R);var F=new Array(m);zero(F);function StaticTreeDesc(e,t,o,n,r){this.static_tree=e;this.extra_bits=t;this.extra_base=o;this.elems=n;this.max_length=r;this.has_stree=e&&e.length}var M;var O;var $;function TreeDesc(e,t){this.dyn_tree=e;this.max_code=0;this.stat_desc=t}function d_code(e){return e<256?D[e]:D[256+(e>>>7)]}function put_short(e,t){e.pending_buf[e.pending++]=t&255;e.pending_buf[e.pending++]=t>>>8&255}function send_bits(e,t,o){if(e.bi_valid>b-o){e.bi_buf|=t<<e.bi_valid&65535;put_short(e,e.bi_buf);e.bi_buf=t>>b-e.bi_valid;e.bi_valid+=o-b}else{e.bi_buf|=t<<e.bi_valid&65535;e.bi_valid+=o}}function send_code(e,t,o){send_bits(e,o[t*2],o[t*2+1])}function bi_reverse(e,t){var o=0;do{o|=e&1;e>>>=1;o<<=1}while(--t>0);return o>>>1}function bi_flush(e){if(e.bi_valid===16){put_short(e,e.bi_buf);e.bi_buf=0;e.bi_valid=0}else if(e.bi_valid>=8){e.pending_buf[e.pending++]=e.bi_buf&255;e.bi_buf>>=8;e.bi_valid-=8}}function gen_bitlen(e,t){var o=t.dyn_tree;var n=t.max_code;var r=t.stat_desc.static_tree;var a=t.stat_desc.has_stree;var i=t.stat_desc.extra_bits;var s=t.stat_desc.extra_base;var l=t.stat_desc.max_length;var c;var d,u;var p;var A;var f;var h=0;for(p=0;p<=y;p++){e.bl_count[p]=0}o[e.heap[e.heap_max]*2+1]=0;for(c=e.heap_max+1;c<v;c++){d=e.heap[c];p=o[o[d*2+1]*2+1]+1;if(p>l){p=l;h++}o[d*2+1]=p;if(d>n){continue}e.bl_count[p]++;A=0;if(d>=s){A=i[d-s]}f=o[d*2];e.opt_len+=f*(p+A);if(a){e.static_len+=f*(r[d*2+1]+A)}}if(h===0){return}do{p=l-1;while(e.bl_count[p]===0){p--}e.bl_count[p]--;e.bl_count[p+1]+=2;e.bl_count[l]--;h-=2}while(h>0);for(p=l;p!==0;p--){d=e.bl_count[p];while(d!==0){u=e.heap[--c];if(u>n){continue}if(o[u*2+1]!==p){e.opt_len+=(p-o[u*2+1])*o[u*2];o[u*2+1]=p}d--}}}function gen_codes(e,t,o){var n=new Array(y+1);var r=0;var a;var i;for(a=1;a<=y;a++){n[a]=r=r+o[a-1]<<1}for(i=0;i<=t;i++){var s=e[i*2+1];if(s===0){continue}e[i*2]=bi_reverse(n[s]++,s)}}function tr_static_init(){var e;var t;var o;var n;var r;var a=new Array(y+1);o=0;for(n=0;n<A-1;n++){R[n]=o;for(e=0;e<1<<T[n];e++){N[o++]=n}}N[o-1]=n;r=0;for(n=0;n<16;n++){F[n]=r;for(e=0;e<1<<P[n];e++){D[r++]=n}}r>>=7;for(;n<m;n++){F[n]=r<<7;for(e=0;e<1<<P[n]-7;e++){D[256+r++]=n}}for(t=0;t<=y;t++){a[t]=0}e=0;while(e<=143){I[e*2+1]=8;e++;a[8]++}while(e<=255){I[e*2+1]=9;e++;a[9]++}while(e<=279){I[e*2+1]=7;e++;a[7]++}while(e<=287){I[e*2+1]=8;e++;a[8]++}gen_codes(I,h+1,a);for(e=0;e<m;e++){B[e*2+1]=5;B[e*2]=bi_reverse(e,5)}M=new StaticTreeDesc(I,T,f+1,h,y);O=new StaticTreeDesc(B,P,0,m,y);$=new StaticTreeDesc(new Array(0),E,0,g,w)}function init_block(e){var t;for(t=0;t<h;t++){e.dyn_ltree[t*2]=0}for(t=0;t<m;t++){e.dyn_dtree[t*2]=0}for(t=0;t<g;t++){e.bl_tree[t*2]=0}e.dyn_ltree[x*2]=1;e.opt_len=e.static_len=0;e.last_lit=e.matches=0}function bi_windup(e){if(e.bi_valid>8){put_short(e,e.bi_buf)}else if(e.bi_valid>0){e.pending_buf[e.pending++]=e.bi_buf}e.bi_buf=0;e.bi_valid=0}function copy_block(e,t,o,r){bi_windup(e);if(r){put_short(e,o);put_short(e,~o)}n.arraySet(e.pending_buf,e.window,t,o,e.pending);e.pending+=o}function smaller(e,t,o,n){var r=t*2;var a=o*2;return e[r]<e[a]||e[r]===e[a]&&n[t]<=n[o]}function pqdownheap(e,t,o){var n=e.heap[o];var r=o<<1;while(r<=e.heap_len){if(r<e.heap_len&&smaller(t,e.heap[r+1],e.heap[r],e.depth)){r++}if(smaller(t,n,e.heap[r],e.depth)){break}e.heap[o]=e.heap[r];o=r;r<<=1}e.heap[o]=n}function compress_block(e,t,o){var n;var r;var a=0;var i;var s;if(e.last_lit!==0){do{n=e.pending_buf[e.d_buf+a*2]<<8|e.pending_buf[e.d_buf+a*2+1];r=e.pending_buf[e.l_buf+a];a++;if(n===0){send_code(e,r,t)}else{i=N[r];send_code(e,i+f+1,t);s=T[i];if(s!==0){r-=R[i];send_bits(e,r,s)}n--;i=d_code(n);send_code(e,i,o);s=P[i];if(s!==0){n-=F[i];send_bits(e,n,s)}}}while(a<e.last_lit)}send_code(e,x,t)}function build_tree(e,t){var o=t.dyn_tree;var n=t.stat_desc.static_tree;var r=t.stat_desc.has_stree;var a=t.stat_desc.elems;var i,s;var l=-1;var c;e.heap_len=0;e.heap_max=v;for(i=0;i<a;i++){if(o[i*2]!==0){e.heap[++e.heap_len]=l=i;e.depth[i]=0}else{o[i*2+1]=0}}while(e.heap_len<2){c=e.heap[++e.heap_len]=l<2?++l:0;o[c*2]=1;e.depth[c]=0;e.opt_len--;if(r){e.static_len-=n[c*2+1]}}t.max_code=l;for(i=e.heap_len>>1;i>=1;i--){pqdownheap(e,o,i)}c=a;do{i=e.heap[1];e.heap[1]=e.heap[e.heap_len--];pqdownheap(e,o,1);s=e.heap[1];e.heap[--e.heap_max]=i;e.heap[--e.heap_max]=s;o[c*2]=o[i*2]+o[s*2];e.depth[c]=(e.depth[i]>=e.depth[s]?e.depth[i]:e.depth[s])+1;o[i*2+1]=o[s*2+1]=c;e.heap[1]=c++;pqdownheap(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1];gen_bitlen(e,t);gen_codes(o,l,e.bl_count)}function scan_tree(e,t,o){var n;var r=-1;var a;var i=t[0*2+1];var s=0;var l=7;var c=4;if(i===0){l=138;c=3}t[(o+1)*2+1]=65535;for(n=0;n<=o;n++){a=i;i=t[(n+1)*2+1];if(++s<l&&a===i){continue}else if(s<c){e.bl_tree[a*2]+=s}else if(a!==0){if(a!==r){e.bl_tree[a*2]++}e.bl_tree[S*2]++}else if(s<=10){e.bl_tree[k*2]++}else{e.bl_tree[C*2]++}s=0;r=a;if(i===0){l=138;c=3}else if(a===i){l=6;c=3}else{l=7;c=4}}}function send_tree(e,t,o){var n;var r=-1;var a;var i=t[0*2+1];var s=0;var l=7;var c=4;if(i===0){l=138;c=3}for(n=0;n<=o;n++){a=i;i=t[(n+1)*2+1];if(++s<l&&a===i){continue}else if(s<c){do{send_code(e,a,e.bl_tree)}while(--s!==0)}else if(a!==0){if(a!==r){send_code(e,a,e.bl_tree);s--}send_code(e,S,e.bl_tree);send_bits(e,s-3,2)}else if(s<=10){send_code(e,k,e.bl_tree);send_bits(e,s-3,3)}else{send_code(e,C,e.bl_tree);send_bits(e,s-11,7)}s=0;r=a;if(i===0){l=138;c=3}else if(a===i){l=6;c=3}else{l=7;c=4}}}function build_bl_tree(e){var t;scan_tree(e,e.dyn_ltree,e.l_desc.max_code);scan_tree(e,e.dyn_dtree,e.d_desc.max_code);build_tree(e,e.bl_desc);for(t=g-1;t>=3;t--){if(e.bl_tree[_[t]*2+1]!==0){break}}e.opt_len+=3*(t+1)+5+5+4;return t}function send_all_trees(e,t,o,n){var r;send_bits(e,t-257,5);send_bits(e,o-1,5);send_bits(e,n-4,4);for(r=0;r<n;r++){send_bits(e,e.bl_tree[_[r]*2+1],3)}send_tree(e,e.dyn_ltree,t-1);send_tree(e,e.dyn_dtree,o-1)}function detect_data_type(e){var t=4093624447;var o;for(o=0;o<=31;o++,t>>>=1){if(t&1&&e.dyn_ltree[o*2]!==0){return a}}if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0){return i}for(o=32;o<f;o++){if(e.dyn_ltree[o*2]!==0){return i}}return a}var z=false;function _tr_init(e){if(!z){tr_static_init();z=true}e.l_desc=new TreeDesc(e.dyn_ltree,M);e.d_desc=new TreeDesc(e.dyn_dtree,O);e.bl_desc=new TreeDesc(e.bl_tree,$);e.bi_buf=0;e.bi_valid=0;init_block(e)}function _tr_stored_block(e,t,o,n){send_bits(e,(l<<1)+(n?1:0),3);copy_block(e,t,o,true)}function _tr_align(e){send_bits(e,c<<1,3);send_code(e,x,I);bi_flush(e)}function _tr_flush_block(e,t,o,n){var a,i;var l=0;if(e.level>0){if(e.strm.data_type===s){e.strm.data_type=detect_data_type(e)}build_tree(e,e.l_desc);build_tree(e,e.d_desc);l=build_bl_tree(e);a=e.opt_len+3+7>>>3;i=e.static_len+3+7>>>3;if(i<=a){a=i}}else{a=i=o+5}if(o+4<=a&&t!==-1){_tr_stored_block(e,t,o,n)}else if(e.strategy===r||i===a){send_bits(e,(c<<1)+(n?1:0),3);compress_block(e,I,B)}else{send_bits(e,(d<<1)+(n?1:0),3);send_all_trees(e,e.l_desc.max_code+1,e.d_desc.max_code+1,l+1);compress_block(e,e.dyn_ltree,e.dyn_dtree)}init_block(e);if(n){bi_windup(e)}}function _tr_tally(e,t,o){e.pending_buf[e.d_buf+e.last_lit*2]=t>>>8&255;e.pending_buf[e.d_buf+e.last_lit*2+1]=t&255;e.pending_buf[e.l_buf+e.last_lit]=o&255;e.last_lit++;if(t===0){e.dyn_ltree[o*2]++}else{e.matches++;t--;e.dyn_ltree[(N[o]+f+1)*2]++;e.dyn_dtree[d_code(t)*2]++}return e.last_lit===e.lit_bufsize-1}t._tr_init=_tr_init;t._tr_stored_block=_tr_stored_block;t._tr_flush_block=_tr_flush_block;t._tr_tally=_tr_tally;t._tr_align=_tr_align},2239:e=>{"use strict";function ZStream(){this.input=null;this.next_in=0;this.avail_in=0;this.total_in=0;this.output=null;this.next_out=0;this.avail_out=0;this.total_out=0;this.msg="";this.state=null;this.data_type=2;this.adler=0}e.exports=ZStream},8394:(e,t,o)=>{"use strict";var n=o(3016);function __awaiter(e,t,o,n){function adopt(e){return e instanceof o?e:new o((function(t){t(e)}))}return new(o||(o=Promise))((function(o,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?o(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))}typeof SuppressedError==="function"?SuppressedError:function(e,t,o){var n=new Error(o);return n.name="SuppressedError",n.error=e,n.suppressed=t,n};const r=914400;const a=12700;const i="\r\n";const s=2147483649;const l=/^[0-9a-fA-F]{6}$/;const c=1.67;const d=27;const u={type:"solid",color:"666666",pt:1};const p=[.05,.1,.05,.1];const A={color:"363636",pt:1};const f={color:"888888",style:"solid",size:1,cap:"flat"};const h="000000";const m=12;const g=18;const v="LAYOUT_16x9";const y="DEFAULT";const b="333333";const w={type:"outer",blur:3,offset:23e3/12700,angle:90,color:"000000",opacity:.35,rotateWithShape:true};const x=[.5,.5,.5,.5];const S={color:"000000"};const k={size:8,color:"FFFFFF",opacity:.75};const C="2094734552";const T="2094734553";const P="2094734554";const E="2094734555";const _="2094734556";const L="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");const I=["C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360","C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360"];const B=["5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7","5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7"];var D;(function(e){e["left"]="left";e["center"]="center";e["right"]="right";e["justify"]="justify"})(D||(D={}));var N;(function(e){e["b"]="b";e["ctr"]="ctr";e["t"]="t"})(N||(N={}));const R="{F7021451-1387-4CA6-816F-3879F97B5CBC}";var F;(function(e){e["arraybuffer"]="arraybuffer";e["base64"]="base64";e["binarystring"]="binarystring";e["blob"]="blob";e["nodebuffer"]="nodebuffer";e["uint8array"]="uint8array"})(F||(F={}));var M;(function(e){e["area"]="area";e["bar"]="bar";e["bar3d"]="bar3D";e["bubble"]="bubble";e["bubble3d"]="bubble3D";e["doughnut"]="doughnut";e["line"]="line";e["pie"]="pie";e["radar"]="radar";e["scatter"]="scatter"})(M||(M={}));var O;(function(e){e["accentBorderCallout1"]="accentBorderCallout1";e["accentBorderCallout2"]="accentBorderCallout2";e["accentBorderCallout3"]="accentBorderCallout3";e["accentCallout1"]="accentCallout1";e["accentCallout2"]="accentCallout2";e["accentCallout3"]="accentCallout3";e["actionButtonBackPrevious"]="actionButtonBackPrevious";e["actionButtonBeginning"]="actionButtonBeginning";e["actionButtonBlank"]="actionButtonBlank";e["actionButtonDocument"]="actionButtonDocument";e["actionButtonEnd"]="actionButtonEnd";e["actionButtonForwardNext"]="actionButtonForwardNext";e["actionButtonHelp"]="actionButtonHelp";e["actionButtonHome"]="actionButtonHome";e["actionButtonInformation"]="actionButtonInformation";e["actionButtonMovie"]="actionButtonMovie";e["actionButtonReturn"]="actionButtonReturn";e["actionButtonSound"]="actionButtonSound";e["arc"]="arc";e["bentArrow"]="bentArrow";e["bentUpArrow"]="bentUpArrow";e["bevel"]="bevel";e["blockArc"]="blockArc";e["borderCallout1"]="borderCallout1";e["borderCallout2"]="borderCallout2";e["borderCallout3"]="borderCallout3";e["bracePair"]="bracePair";e["bracketPair"]="bracketPair";e["callout1"]="callout1";e["callout2"]="callout2";e["callout3"]="callout3";e["can"]="can";e["chartPlus"]="chartPlus";e["chartStar"]="chartStar";e["chartX"]="chartX";e["chevron"]="chevron";e["chord"]="chord";e["circularArrow"]="circularArrow";e["cloud"]="cloud";e["cloudCallout"]="cloudCallout";e["corner"]="corner";e["cornerTabs"]="cornerTabs";e["cube"]="cube";e["curvedDownArrow"]="curvedDownArrow";e["curvedLeftArrow"]="curvedLeftArrow";e["curvedRightArrow"]="curvedRightArrow";e["curvedUpArrow"]="curvedUpArrow";e["custGeom"]="custGeom";e["decagon"]="decagon";e["diagStripe"]="diagStripe";e["diamond"]="diamond";e["dodecagon"]="dodecagon";e["donut"]="donut";e["doubleWave"]="doubleWave";e["downArrow"]="downArrow";e["downArrowCallout"]="downArrowCallout";e["ellipse"]="ellipse";e["ellipseRibbon"]="ellipseRibbon";e["ellipseRibbon2"]="ellipseRibbon2";e["flowChartAlternateProcess"]="flowChartAlternateProcess";e["flowChartCollate"]="flowChartCollate";e["flowChartConnector"]="flowChartConnector";e["flowChartDecision"]="flowChartDecision";e["flowChartDelay"]="flowChartDelay";e["flowChartDisplay"]="flowChartDisplay";e["flowChartDocument"]="flowChartDocument";e["flowChartExtract"]="flowChartExtract";e["flowChartInputOutput"]="flowChartInputOutput";e["flowChartInternalStorage"]="flowChartInternalStorage";e["flowChartMagneticDisk"]="flowChartMagneticDisk";e["flowChartMagneticDrum"]="flowChartMagneticDrum";e["flowChartMagneticTape"]="flowChartMagneticTape";e["flowChartManualInput"]="flowChartManualInput";e["flowChartManualOperation"]="flowChartManualOperation";e["flowChartMerge"]="flowChartMerge";e["flowChartMultidocument"]="flowChartMultidocument";e["flowChartOfflineStorage"]="flowChartOfflineStorage";e["flowChartOffpageConnector"]="flowChartOffpageConnector";e["flowChartOnlineStorage"]="flowChartOnlineStorage";e["flowChartOr"]="flowChartOr";e["flowChartPredefinedProcess"]="flowChartPredefinedProcess";e["flowChartPreparation"]="flowChartPreparation";e["flowChartProcess"]="flowChartProcess";e["flowChartPunchedCard"]="flowChartPunchedCard";e["flowChartPunchedTape"]="flowChartPunchedTape";e["flowChartSort"]="flowChartSort";e["flowChartSummingJunction"]="flowChartSummingJunction";e["flowChartTerminator"]="flowChartTerminator";e["folderCorner"]="folderCorner";e["frame"]="frame";e["funnel"]="funnel";e["gear6"]="gear6";e["gear9"]="gear9";e["halfFrame"]="halfFrame";e["heart"]="heart";e["heptagon"]="heptagon";e["hexagon"]="hexagon";e["homePlate"]="homePlate";e["horizontalScroll"]="horizontalScroll";e["irregularSeal1"]="irregularSeal1";e["irregularSeal2"]="irregularSeal2";e["leftArrow"]="leftArrow";e["leftArrowCallout"]="leftArrowCallout";e["leftBrace"]="leftBrace";e["leftBracket"]="leftBracket";e["leftCircularArrow"]="leftCircularArrow";e["leftRightArrow"]="leftRightArrow";e["leftRightArrowCallout"]="leftRightArrowCallout";e["leftRightCircularArrow"]="leftRightCircularArrow";e["leftRightRibbon"]="leftRightRibbon";e["leftRightUpArrow"]="leftRightUpArrow";e["leftUpArrow"]="leftUpArrow";e["lightningBolt"]="lightningBolt";e["line"]="line";e["lineInv"]="lineInv";e["mathDivide"]="mathDivide";e["mathEqual"]="mathEqual";e["mathMinus"]="mathMinus";e["mathMultiply"]="mathMultiply";e["mathNotEqual"]="mathNotEqual";e["mathPlus"]="mathPlus";e["moon"]="moon";e["noSmoking"]="noSmoking";e["nonIsoscelesTrapezoid"]="nonIsoscelesTrapezoid";e["notchedRightArrow"]="notchedRightArrow";e["octagon"]="octagon";e["parallelogram"]="parallelogram";e["pentagon"]="pentagon";e["pie"]="pie";e["pieWedge"]="pieWedge";e["plaque"]="plaque";e["plaqueTabs"]="plaqueTabs";e["plus"]="plus";e["quadArrow"]="quadArrow";e["quadArrowCallout"]="quadArrowCallout";e["rect"]="rect";e["ribbon"]="ribbon";e["ribbon2"]="ribbon2";e["rightArrow"]="rightArrow";e["rightArrowCallout"]="rightArrowCallout";e["rightBrace"]="rightBrace";e["rightBracket"]="rightBracket";e["round1Rect"]="round1Rect";e["round2DiagRect"]="round2DiagRect";e["round2SameRect"]="round2SameRect";e["roundRect"]="roundRect";e["rtTriangle"]="rtTriangle";e["smileyFace"]="smileyFace";e["snip1Rect"]="snip1Rect";e["snip2DiagRect"]="snip2DiagRect";e["snip2SameRect"]="snip2SameRect";e["snipRoundRect"]="snipRoundRect";e["squareTabs"]="squareTabs";e["star10"]="star10";e["star12"]="star12";e["star16"]="star16";e["star24"]="star24";e["star32"]="star32";e["star4"]="star4";e["star5"]="star5";e["star6"]="star6";e["star7"]="star7";e["star8"]="star8";e["stripedRightArrow"]="stripedRightArrow";e["sun"]="sun";e["swooshArrow"]="swooshArrow";e["teardrop"]="teardrop";e["trapezoid"]="trapezoid";e["triangle"]="triangle";e["upArrow"]="upArrow";e["upArrowCallout"]="upArrowCallout";e["upDownArrow"]="upDownArrow";e["upDownArrowCallout"]="upDownArrowCallout";e["uturnArrow"]="uturnArrow";e["verticalScroll"]="verticalScroll";e["wave"]="wave";e["wedgeEllipseCallout"]="wedgeEllipseCallout";e["wedgeRectCallout"]="wedgeRectCallout";e["wedgeRoundRectCallout"]="wedgeRoundRectCallout"})(O||(O={}));var $;(function(e){e["text1"]="tx1";e["text2"]="tx2";e["background1"]="bg1";e["background2"]="bg2";e["accent1"]="accent1";e["accent2"]="accent2";e["accent3"]="accent3";e["accent4"]="accent4";e["accent5"]="accent5";e["accent6"]="accent6"})($||($={}));var z;(function(e){e["left"]="left";e["center"]="center";e["right"]="right";e["justify"]="justify"})(z||(z={}));var j;(function(e){e["top"]="top";e["middle"]="middle";e["bottom"]="bottom"})(j||(j={}));var U;(function(e){e["ACTION_BUTTON_BACK_OR_PREVIOUS"]="actionButtonBackPrevious";e["ACTION_BUTTON_BEGINNING"]="actionButtonBeginning";e["ACTION_BUTTON_CUSTOM"]="actionButtonBlank";e["ACTION_BUTTON_DOCUMENT"]="actionButtonDocument";e["ACTION_BUTTON_END"]="actionButtonEnd";e["ACTION_BUTTON_FORWARD_OR_NEXT"]="actionButtonForwardNext";e["ACTION_BUTTON_HELP"]="actionButtonHelp";e["ACTION_BUTTON_HOME"]="actionButtonHome";e["ACTION_BUTTON_INFORMATION"]="actionButtonInformation";e["ACTION_BUTTON_MOVIE"]="actionButtonMovie";e["ACTION_BUTTON_RETURN"]="actionButtonReturn";e["ACTION_BUTTON_SOUND"]="actionButtonSound";e["ARC"]="arc";e["BALLOON"]="wedgeRoundRectCallout";e["BENT_ARROW"]="bentArrow";e["BENT_UP_ARROW"]="bentUpArrow";e["BEVEL"]="bevel";e["BLOCK_ARC"]="blockArc";e["CAN"]="can";e["CHART_PLUS"]="chartPlus";e["CHART_STAR"]="chartStar";e["CHART_X"]="chartX";e["CHEVRON"]="chevron";e["CHORD"]="chord";e["CIRCULAR_ARROW"]="circularArrow";e["CLOUD"]="cloud";e["CLOUD_CALLOUT"]="cloudCallout";e["CORNER"]="corner";e["CORNER_TABS"]="cornerTabs";e["CROSS"]="plus";e["CUBE"]="cube";e["CURVED_DOWN_ARROW"]="curvedDownArrow";e["CURVED_DOWN_RIBBON"]="ellipseRibbon";e["CURVED_LEFT_ARROW"]="curvedLeftArrow";e["CURVED_RIGHT_ARROW"]="curvedRightArrow";e["CURVED_UP_ARROW"]="curvedUpArrow";e["CURVED_UP_RIBBON"]="ellipseRibbon2";e["CUSTOM_GEOMETRY"]="custGeom";e["DECAGON"]="decagon";e["DIAGONAL_STRIPE"]="diagStripe";e["DIAMOND"]="diamond";e["DODECAGON"]="dodecagon";e["DONUT"]="donut";e["DOUBLE_BRACE"]="bracePair";e["DOUBLE_BRACKET"]="bracketPair";e["DOUBLE_WAVE"]="doubleWave";e["DOWN_ARROW"]="downArrow";e["DOWN_ARROW_CALLOUT"]="downArrowCallout";e["DOWN_RIBBON"]="ribbon";e["EXPLOSION1"]="irregularSeal1";e["EXPLOSION2"]="irregularSeal2";e["FLOWCHART_ALTERNATE_PROCESS"]="flowChartAlternateProcess";e["FLOWCHART_CARD"]="flowChartPunchedCard";e["FLOWCHART_COLLATE"]="flowChartCollate";e["FLOWCHART_CONNECTOR"]="flowChartConnector";e["FLOWCHART_DATA"]="flowChartInputOutput";e["FLOWCHART_DECISION"]="flowChartDecision";e["FLOWCHART_DELAY"]="flowChartDelay";e["FLOWCHART_DIRECT_ACCESS_STORAGE"]="flowChartMagneticDrum";e["FLOWCHART_DISPLAY"]="flowChartDisplay";e["FLOWCHART_DOCUMENT"]="flowChartDocument";e["FLOWCHART_EXTRACT"]="flowChartExtract";e["FLOWCHART_INTERNAL_STORAGE"]="flowChartInternalStorage";e["FLOWCHART_MAGNETIC_DISK"]="flowChartMagneticDisk";e["FLOWCHART_MANUAL_INPUT"]="flowChartManualInput";e["FLOWCHART_MANUAL_OPERATION"]="flowChartManualOperation";e["FLOWCHART_MERGE"]="flowChartMerge";e["FLOWCHART_MULTIDOCUMENT"]="flowChartMultidocument";e["FLOWCHART_OFFLINE_STORAGE"]="flowChartOfflineStorage";e["FLOWCHART_OFFPAGE_CONNECTOR"]="flowChartOffpageConnector";e["FLOWCHART_OR"]="flowChartOr";e["FLOWCHART_PREDEFINED_PROCESS"]="flowChartPredefinedProcess";e["FLOWCHART_PREPARATION"]="flowChartPreparation";e["FLOWCHART_PROCESS"]="flowChartProcess";e["FLOWCHART_PUNCHED_TAPE"]="flowChartPunchedTape";e["FLOWCHART_SEQUENTIAL_ACCESS_STORAGE"]="flowChartMagneticTape";e["FLOWCHART_SORT"]="flowChartSort";e["FLOWCHART_STORED_DATA"]="flowChartOnlineStorage";e["FLOWCHART_SUMMING_JUNCTION"]="flowChartSummingJunction";e["FLOWCHART_TERMINATOR"]="flowChartTerminator";e["FOLDED_CORNER"]="folderCorner";e["FRAME"]="frame";e["FUNNEL"]="funnel";e["GEAR_6"]="gear6";e["GEAR_9"]="gear9";e["HALF_FRAME"]="halfFrame";e["HEART"]="heart";e["HEPTAGON"]="heptagon";e["HEXAGON"]="hexagon";e["HORIZONTAL_SCROLL"]="horizontalScroll";e["ISOSCELES_TRIANGLE"]="triangle";e["LEFT_ARROW"]="leftArrow";e["LEFT_ARROW_CALLOUT"]="leftArrowCallout";e["LEFT_BRACE"]="leftBrace";e["LEFT_BRACKET"]="leftBracket";e["LEFT_CIRCULAR_ARROW"]="leftCircularArrow";e["LEFT_RIGHT_ARROW"]="leftRightArrow";e["LEFT_RIGHT_ARROW_CALLOUT"]="leftRightArrowCallout";e["LEFT_RIGHT_CIRCULAR_ARROW"]="leftRightCircularArrow";e["LEFT_RIGHT_RIBBON"]="leftRightRibbon";e["LEFT_RIGHT_UP_ARROW"]="leftRightUpArrow";e["LEFT_UP_ARROW"]="leftUpArrow";e["LIGHTNING_BOLT"]="lightningBolt";e["LINE_CALLOUT_1"]="borderCallout1";e["LINE_CALLOUT_1_ACCENT_BAR"]="accentCallout1";e["LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR"]="accentBorderCallout1";e["LINE_CALLOUT_1_NO_BORDER"]="callout1";e["LINE_CALLOUT_2"]="borderCallout2";e["LINE_CALLOUT_2_ACCENT_BAR"]="accentCallout2";e["LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR"]="accentBorderCallout2";e["LINE_CALLOUT_2_NO_BORDER"]="callout2";e["LINE_CALLOUT_3"]="borderCallout3";e["LINE_CALLOUT_3_ACCENT_BAR"]="accentCallout3";e["LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR"]="accentBorderCallout3";e["LINE_CALLOUT_3_NO_BORDER"]="callout3";e["LINE_CALLOUT_4"]="borderCallout4";e["LINE_CALLOUT_4_ACCENT_BAR"]="accentCallout3=4";e["LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR"]="accentBorderCallout4";e["LINE_CALLOUT_4_NO_BORDER"]="callout4";e["LINE"]="line";e["LINE_INVERSE"]="lineInv";e["MATH_DIVIDE"]="mathDivide";e["MATH_EQUAL"]="mathEqual";e["MATH_MINUS"]="mathMinus";e["MATH_MULTIPLY"]="mathMultiply";e["MATH_NOT_EQUAL"]="mathNotEqual";e["MATH_PLUS"]="mathPlus";e["MOON"]="moon";e["NON_ISOSCELES_TRAPEZOID"]="nonIsoscelesTrapezoid";e["NOTCHED_RIGHT_ARROW"]="notchedRightArrow";e["NO_SYMBOL"]="noSmoking";e["OCTAGON"]="octagon";e["OVAL"]="ellipse";e["OVAL_CALLOUT"]="wedgeEllipseCallout";e["PARALLELOGRAM"]="parallelogram";e["PENTAGON"]="homePlate";e["PIE"]="pie";e["PIE_WEDGE"]="pieWedge";e["PLAQUE"]="plaque";e["PLAQUE_TABS"]="plaqueTabs";e["QUAD_ARROW"]="quadArrow";e["QUAD_ARROW_CALLOUT"]="quadArrowCallout";e["RECTANGLE"]="rect";e["RECTANGULAR_CALLOUT"]="wedgeRectCallout";e["REGULAR_PENTAGON"]="pentagon";e["RIGHT_ARROW"]="rightArrow";e["RIGHT_ARROW_CALLOUT"]="rightArrowCallout";e["RIGHT_BRACE"]="rightBrace";e["RIGHT_BRACKET"]="rightBracket";e["RIGHT_TRIANGLE"]="rtTriangle";e["ROUNDED_RECTANGLE"]="roundRect";e["ROUNDED_RECTANGULAR_CALLOUT"]="wedgeRoundRectCallout";e["ROUND_1_RECTANGLE"]="round1Rect";e["ROUND_2_DIAG_RECTANGLE"]="round2DiagRect";e["ROUND_2_SAME_RECTANGLE"]="round2SameRect";e["SMILEY_FACE"]="smileyFace";e["SNIP_1_RECTANGLE"]="snip1Rect";e["SNIP_2_DIAG_RECTANGLE"]="snip2DiagRect";e["SNIP_2_SAME_RECTANGLE"]="snip2SameRect";e["SNIP_ROUND_RECTANGLE"]="snipRoundRect";e["SQUARE_TABS"]="squareTabs";e["STAR_10_POINT"]="star10";e["STAR_12_POINT"]="star12";e["STAR_16_POINT"]="star16";e["STAR_24_POINT"]="star24";e["STAR_32_POINT"]="star32";e["STAR_4_POINT"]="star4";e["STAR_5_POINT"]="star5";e["STAR_6_POINT"]="star6";e["STAR_7_POINT"]="star7";e["STAR_8_POINT"]="star8";e["STRIPED_RIGHT_ARROW"]="stripedRightArrow";e["SUN"]="sun";e["SWOOSH_ARROW"]="swooshArrow";e["TEAR"]="teardrop";e["TRAPEZOID"]="trapezoid";e["UP_ARROW"]="upArrow";e["UP_ARROW_CALLOUT"]="upArrowCallout";e["UP_DOWN_ARROW"]="upDownArrow";e["UP_DOWN_ARROW_CALLOUT"]="upDownArrowCallout";e["UP_RIBBON"]="ribbon2";e["U_TURN_ARROW"]="uturnArrow";e["VERTICAL_SCROLL"]="verticalScroll";e["WAVE"]="wave"})(U||(U={}));var W;(function(e){e["AREA"]="area";e["BAR"]="bar";e["BAR3D"]="bar3D";e["BUBBLE"]="bubble";e["BUBBLE3D"]="bubble3D";e["DOUGHNUT"]="doughnut";e["LINE"]="line";e["PIE"]="pie";e["RADAR"]="radar";e["SCATTER"]="scatter"})(W||(W={}));var q;(function(e){e["TEXT1"]="tx1";e["TEXT2"]="tx2";e["BACKGROUND1"]="bg1";e["BACKGROUND2"]="bg2";e["ACCENT1"]="accent1";e["ACCENT2"]="accent2";e["ACCENT3"]="accent3";e["ACCENT4"]="accent4";e["ACCENT5"]="accent5";e["ACCENT6"]="accent6"})(q||(q={}));var G;(function(e){e["chart"]="chart";e["image"]="image";e["line"]="line";e["rect"]="rect";e["text"]="text";e["placeholder"]="placeholder"})(G||(G={}));var X;(function(e){e["chart"]="chart";e["hyperlink"]="hyperlink";e["image"]="image";e["media"]="media";e["online"]="online";e["placeholder"]="placeholder";e["table"]="table";e["tablecell"]="tablecell";e["text"]="text";e["notes"]="notes"})(X||(X={}));var H;(function(e){e["title"]="title";e["body"]="body";e["image"]="pic";e["chart"]="chart";e["table"]="tbl";e["media"]="media"})(H||(H={}));var Q;(function(e){e["DEFAULT"]="•";e["CHECK"]="✓";e["STAR"]="★";e["TRIANGLE"]="▶"})(Q||(Q={}));const V="data:image/png;base64,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";const Y="data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee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k8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=";function getSmartParseNumber(e,t,o){if(typeof e==="string"&&!isNaN(Number(e)))e=Number(e);if(typeof e==="number"&&e<100)return inch2Emu(e);if(typeof e==="number"&&e>=100)return e;if(typeof e==="string"&&e.includes("%")){if(t&&t==="X")return Math.round(parseFloat(e)/100*o.width);if(t&&t==="Y")return Math.round(parseFloat(e)/100*o.height);return Math.round(parseFloat(e)/100*o.width)}return 0}function getUuid(e){return e.replace(/[xy]/g,(function(e){const t=Math.random()*16|0;const o=e==="x"?t:t&3|8;return o.toString(16)}))}function encodeXmlEntities(e){if(typeof e==="undefined"||e==null)return"";return e.toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function inch2Emu(e){if(typeof e==="number"&&e>100)return e;if(typeof e==="string")e=Number(e.replace(/in*/gi,""));return Math.round(r*e)}function valToPts(e){const t=Number(e)||0;return isNaN(t)?0:Math.round(t*a)}function convertRotationDegrees(e){e=e||0;return Math.round((e>360?e-360:e)*6e4)}function componentToHex(e){const t=e.toString(16);return t.length===1?"0"+t:t}function rgbToHex(e,t,o){return(componentToHex(e)+componentToHex(t)+componentToHex(o)).toUpperCase()}function createColorElement(e,t){let o=(e||"").replace("#","");if(!l.test(o)&&o!==$.background1&&o!==$.background2&&o!==$.text1&&o!==$.text2&&o!==$.accent1&&o!==$.accent2&&o!==$.accent3&&o!==$.accent4&&o!==$.accent5&&o!==$.accent6){console.warn(`"${o}" is not a valid scheme color or hex RGB! "${h}" used instead. Only provide 6-digit RGB or 'pptx.SchemeColor' values!`);o=h}const n=l.test(o)?"srgbClr":"schemeClr";const r='val="'+(l.test(o)?o.toUpperCase():o)+'"';return t?`<a:${n} ${r}>${t}</a:${n}>`:`<a:${n} ${r}/>`}function createGlowElement(e,t){let o="";const n=Object.assign(Object.assign({},t),e);const r=Math.round(n.size*a);const i=n.color;const s=Math.round(n.opacity*1e5);o+=`<a:glow rad="${r}">`;o+=createColorElement(i,`<a:alpha val="${s}"/>`);o+="</a:glow>";return o}function genXmlColorSelection(e){let t="solid";let o="";let n="";let r="";if(e){if(typeof e==="string")o=e;else{if(e.type)t=e.type;if(e.color)o=e.color;if(e.alpha)n+=`<a:alpha val="${Math.round((100-e.alpha)*1e3)}"/>`;if(e.transparency)n+=`<a:alpha val="${Math.round((100-e.transparency)*1e3)}"/>`}switch(t){case"solid":r+=`<a:solidFill>${createColorElement(o,n)}</a:solidFill>`;break;default:r+="";break}}return r}function getNewRelId(e){return e._rels.length+e._relsChart.length+e._relsMedia.length+1}function correctShadowOptions(e){if(!e||typeof e!=="object"){return}if(e.type!=="outer"&&e.type!=="inner"&&e.type!=="none"){console.warn("Warning: shadow.type options are `outer`, `inner` or `none`.");e.type="outer"}if(e.angle){if(isNaN(Number(e.angle))||e.angle<0||e.angle>359){console.warn("Warning: shadow.angle can only be 0-359");e.angle=270}e.angle=Math.round(Number(e.angle))}if(e.opacity){if(isNaN(Number(e.opacity))||e.opacity<0||e.opacity>1){console.warn("Warning: shadow.opacity can only be 0-1");e.opacity=.75}e.opacity=Number(e.opacity)}if(e.color){if(e.color.startsWith("#")){console.warn('Warning: shadow.color should not include hash (#) character, , e.g. "FF0000"');e.color=e.color.replace("#","")}}return e}function parseTextToLines(e,t,o){var n,i;const s=2.3+(((n=e.options)===null||n===void 0?void 0:n.autoPageCharWeight)?e.options.autoPageCharWeight:0);const l=Math.floor(t/a*r)/((((i=e.options)===null||i===void 0?void 0:i.fontSize)?e.options.fontSize:m)/s);const c=[];let d=[];const u=[];const p=[];if(e.text&&e.text.toString().trim().length===0){d.push({_type:X.tablecell,text:" "})}else if(typeof e.text==="number"||typeof e.text==="string"){d.push({_type:X.tablecell,text:(e.text||"").toString().trim()})}else if(Array.isArray(e.text)){d=e.text}let A=[];d.forEach((e=>{var t;if(typeof e.text==="string"){if(e.text.split("\n").length>1){e.text.split("\n").forEach((t=>{A.push({_type:X.tablecell,text:t,options:Object.assign(Object.assign({},e.options),{breakLine:true})})}))}else{A.push({_type:X.tablecell,text:e.text.trim(),options:e.options})}if((t=e.options)===null||t===void 0?void 0:t.breakLine){u.push(A);A=[]}}if(A.length>0){u.push(A);A=[]}}));u.forEach((e=>{e.forEach((e=>{const t=[];const o=String(e.text);const n=o.split(" ");n.forEach(((o,r)=>{const a=Object.assign({},e.options);if(a===null||a===void 0?void 0:a.breakLine)a.breakLine=r+1===n.length;t.push({_type:X.tablecell,text:o+(r+1<n.length?" ":""),options:a})}));p.push(t)}))}));p.forEach((e=>{let t=[];let o="";e.forEach((e=>{if(o.length+e.text.length>l){c.push(t);t=[];o=""}t.push(e);o+=e.text.toString()}));if(t.length>0)c.push(t)}));return c}function getSlidesForTableRows(e=[],t={},o,n){let a=x;let i=r*1;let s=r*1;let l=0;let d=0;const u=[];const p=getSmartParseNumber(t.x,"X",o);const A=getSmartParseNumber(t.y,"Y",o);const f=getSmartParseNumber(t.w,"X",o);const h=getSmartParseNumber(t.h,"Y",o);let g=f;function calcSlideTabH(){let e=0;if(u.length===0)e=A||inch2Emu(a[0]);if(u.length>0)e=inch2Emu(t.autoPageSlideStartY||t.newSlideStartY||a[0]);s=(h||o.height)-e-inch2Emu(a[2]);if(u.length>1){if(typeof t.autoPageSlideStartY==="number"){s=(h||o.height)-inch2Emu(t.autoPageSlideStartY+a[2])}else if(typeof t.newSlideStartY==="number"){s=(h||o.height)-inch2Emu(t.newSlideStartY+a[2])}else if(A){s=(h||o.height)-inch2Emu((A/r<a[0]?A/r:a[0])+a[2]);if(s<h)s=h}}}if(t.verbose){console.log("[[VERBOSE MODE]]");console.log("|-- TABLE PROPS --------------------------------------------------------|");console.log(`| presLayout.width ................................ = ${(o.width/r).toFixed(1)}`);console.log(`| presLayout.height ............................... = ${(o.height/r).toFixed(1)}`);console.log(`| tableProps.x .................................... = ${typeof t.x==="number"?(t.x/r).toFixed(1):t.x}`);console.log(`| tableProps.y .................................... = ${typeof t.y==="number"?(t.y/r).toFixed(1):t.y}`);console.log(`| tableProps.w .................................... = ${typeof t.w==="number"?(t.w/r).toFixed(1):t.w}`);console.log(`| tableProps.h .................................... = ${typeof t.h==="number"?(t.h/r).toFixed(1):t.h}`);console.log(`| tableProps.slideMargin .......................... = ${t.slideMargin?String(t.slideMargin):""}`);console.log(`| tableProps.margin ............................... = ${String(t.margin)}`);console.log(`| tableProps.colW ................................. = ${String(t.colW)}`);console.log(`| tableProps.autoPageSlideStartY .................. = ${t.autoPageSlideStartY}`);console.log(`| tableProps.autoPageCharWeight ................... = ${t.autoPageCharWeight}`);console.log("|-- CALCULATIONS -------------------------------------------------------|");console.log(`| tablePropX ...................................... = ${p/r}`);console.log(`| tablePropY ...................................... = ${A/r}`);console.log(`| tablePropW ...................................... = ${f/r}`);console.log(`| tablePropH ...................................... = ${h/r}`);console.log(`| tableCalcW ...................................... = ${g/r}`)}{if(!t.slideMargin&&t.slideMargin!==0)t.slideMargin=x[0];if(n&&typeof n._margin!=="undefined"){if(Array.isArray(n._margin))a=n._margin;else if(!isNaN(Number(n._margin))){a=[Number(n._margin),Number(n._margin),Number(n._margin),Number(n._margin)]}}else if(t.slideMargin||t.slideMargin===0){if(Array.isArray(t.slideMargin))a=t.slideMargin;else if(!isNaN(t.slideMargin))a=[t.slideMargin,t.slideMargin,t.slideMargin,t.slideMargin]}if(t.verbose)console.log(`| arrInchMargins .................................. = [${a.join(", ")}]`)}{const o=e[0]||[];o.forEach((e=>{if(!e)e={_type:X.tablecell};const t=e.options||null;d+=Number((t===null||t===void 0?void 0:t.colspan)?t.colspan:1)}));if(t.verbose)console.log(`| numCols ......................................... = ${d}`)}if(!f&&t.colW){g=Array.isArray(t.colW)?t.colW.reduce(((e,t)=>e+t))*r:t.colW*d||0;if(t.verbose)console.log(`| tableCalcW ...................................... = ${g/r}`)}{i=g||inch2Emu((p?p/r:a[1])+a[3]);if(t.verbose)console.log(`| emuSlideTabW .................................... = ${(i/r).toFixed(1)}`)}if(!t.colW||!Array.isArray(t.colW)){if(t.colW&&!isNaN(Number(t.colW))){const o=[];const n=e[0]||[];n.forEach((()=>o.push(t.colW)));t.colW=[];o.forEach((e=>{if(Array.isArray(t.colW))t.colW.push(e)}))}else{t.colW=[];for(let e=0;e<d;e++){t.colW.push(i/r/d)}}}let v={rows:[]};e.forEach(((e,o)=>{const n=[];let a=0;let i=0;let d=[];e.forEach((e=>{var o,n,r,s;d.push({_type:X.tablecell,text:[],options:e.options});if(e.options.margin&&e.options.margin[0]>=1){if(((o=e.options)===null||o===void 0?void 0:o.margin)&&e.options.margin[0]&&valToPts(e.options.margin[0])>a)a=valToPts(e.options.margin[0]);else if((t===null||t===void 0?void 0:t.margin)&&t.margin[0]&&valToPts(t.margin[0])>a)a=valToPts(t.margin[0]);if(((n=e.options)===null||n===void 0?void 0:n.margin)&&e.options.margin[2]&&valToPts(e.options.margin[2])>i)i=valToPts(e.options.margin[2]);else if((t===null||t===void 0?void 0:t.margin)&&t.margin[2]&&valToPts(t.margin[2])>i)i=valToPts(t.margin[2])}else{if(((r=e.options)===null||r===void 0?void 0:r.margin)&&e.options.margin[0]&&inch2Emu(e.options.margin[0])>a)a=inch2Emu(e.options.margin[0]);else if((t===null||t===void 0?void 0:t.margin)&&t.margin[0]&&inch2Emu(t.margin[0])>a)a=inch2Emu(t.margin[0]);if(((s=e.options)===null||s===void 0?void 0:s.margin)&&e.options.margin[2]&&inch2Emu(e.options.margin[2])>i)i=inch2Emu(e.options.margin[2]);else if((t===null||t===void 0?void 0:t.margin)&&t.margin[2]&&inch2Emu(t.margin[2])>i)i=inch2Emu(t.margin[2])}}));calcSlideTabH();l+=a+i;if(t.verbose&&o===0)console.log(`| SLIDE [${u.length}]: emuSlideTabH ...... = ${(s/r).toFixed(1)} `);e.forEach(((e,o)=>{var r;const a={_type:X.tablecell,_lines:null,_lineHeight:inch2Emu((((r=e.options)===null||r===void 0?void 0:r.fontSize)?e.options.fontSize:t.fontSize?t.fontSize:m)*(c+(t.autoPageLineWeight?t.autoPageLineWeight:0))/100),text:[],options:e.options};if(a.options.rowspan)a._lineHeight=0;a.options.autoPageCharWeight=t.autoPageCharWeight?t.autoPageCharWeight:null;let i=t.colW[o];if(e.options.colspan&&Array.isArray(t.colW)){i=t.colW.filter(((t,n)=>n>=o&&n<n+e.options.colspan)).reduce(((e,t)=>e+t))}a._lines=parseTextToLines(e,i);n.push(a)}));if(t.verbose)console.log(`\n| SLIDE [${u.length}]: ROW [${o}]: START...`);let p=0;let A=0;let f=false;while(!f){const o=n[p];let c=d[p];n.forEach((e=>{if(e._lineHeight>=A)A=e._lineHeight}));if(l+A>s){if(t.verbose){console.log("\n|-----------------------------------------------------------------------|");console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(l/r).toFixed(2)} + ${(o._lineHeight/r).toFixed(2)} > ${s/r}`);console.log("|-----------------------------------------------------------------------|\n\n")}if(d.length>0&&d.map((e=>e.text.length)).reduce(((e,t)=>e+t))>0)v.rows.push(d);u.push(v);const n=[];v={rows:n};d=[];e.forEach((e=>d.push({_type:X.tablecell,text:[],options:e.options})));calcSlideTabH();l+=a+i;if(t.verbose)console.log(`| SLIDE [${u.length}]: emuSlideTabH ...... = ${(s/r).toFixed(1)} `);l=0;if((t.addHeaderToEach||t.autoPageRepeatHeader)&&t._arrObjTabHeadRows){t._arrObjTabHeadRows.forEach((e=>{const t=[];let o=0;e.forEach((e=>{t.push(e);if(e._lineHeight>o)o=e._lineHeight}));v.rows.push(t);l+=o}))}c=d[p]}const h=o._lines.shift();if(Array.isArray(c.text)){if(h)c.text=c.text.concat(h);else if(c.text.length===0)c.text=c.text.concat({_type:X.tablecell,text:""})}if(p===n.length-1)l+=A;p=p<n.length-1?p+1:0;const m=n.map((e=>e._lines.length)).reduce(((e,t)=>e+t));if(m===0)f=true}if(d.length>0)v.rows.push(d);if(t.verbose){console.log(`- SLIDE [${u.length}]: ROW [${o}]: ...COMPLETE ...... emuTabCurrH = ${(l/r).toFixed(2)} ( emuSlideTabH = ${(s/r).toFixed(2)} )`)}}));u.push(v);if(t.verbose){console.log("\n|================================================|");console.log(`| FINAL: tableRowSlides.length = ${u.length}`);u.forEach((e=>console.log(e)));console.log("|================================================|\n\n")}return u}function genTableToSlides(e,t,o={},n){const a=o||{};a.slideMargin=a.slideMargin||a.slideMargin===0?a.slideMargin:.5;let i=a.w||e.presLayout.width;const s=[];const l=[];const c=[];const d=[];const u=[];let p=[.5,.5,.5,.5];let A=0;if(!document.getElementById(t))throw new Error('tableToSlides: Table ID "'+t+'" does not exist!');if(n===null||n===void 0?void 0:n._margin){if(Array.isArray(n._margin))p=n._margin;else if(!isNaN(n._margin))p=[n._margin,n._margin,n._margin,n._margin];a.slideMargin=p}else if(a===null||a===void 0?void 0:a.slideMargin){if(Array.isArray(a.slideMargin))p=a.slideMargin;else if(!isNaN(a.slideMargin))p=[a.slideMargin,a.slideMargin,a.slideMargin,a.slideMargin]}i=(a.w?inch2Emu(a.w):e.presLayout.width)-inch2Emu(p[1]+p[3]);if(a.verbose){console.log("[[VERBOSE MODE]]");console.log("|-- `tableToSlides` ----------------------------------------------------|");console.log(`| tableProps.h .................................... = ${a.h}`);console.log(`| tableProps.w .................................... = ${a.w}`);console.log(`| pptx.presLayout.width ........................... = ${(e.presLayout.width/r).toFixed(1)}`);console.log(`| pptx.presLayout.height .......................... = ${(e.presLayout.height/r).toFixed(1)}`);console.log(`| emuSlideTabW .................................... = ${(i/r).toFixed(1)}`)}let f=document.querySelectorAll(`#${t} tr:first-child th`);if(f.length===0)f=document.querySelectorAll(`#${t} tr:first-child td`);f.forEach((e=>{const t=e;if(t.getAttribute("colspan")){for(let e=0;e<Number(t.getAttribute("colspan"));e++){u.push(Math.round(t.offsetWidth/Number(t.getAttribute("colspan"))))}}else{u.push(t.offsetWidth)}}));u.forEach((e=>{A+=e}));u.forEach(((e,o)=>{const n=Number((Number(i)*(e/A*100)/100/r).toFixed(2));let a=0;const s=document.querySelector(`#${t} thead tr:first-child th:nth-child(${o+1})`);if(s)a=Number(s.getAttribute("data-pptx-min-width"));const l=document.querySelector(`#${t} thead tr:first-child th:nth-child(${o+1})`);if(l)a=Number(l.getAttribute("data-pptx-width"));d.push(a>n?a:n)}));if(a.verbose){console.log(`| arrColW ......................................... = [${d.join(", ")}]`)}const h=["thead","tbody","tfoot"];h.forEach((e=>{document.querySelectorAll(`#${t} ${e} tr`).forEach((t=>{const o=t;const n=[];Array.from(o.cells).forEach((e=>{const t=window.getComputedStyle(e).getPropertyValue("color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");let o=window.getComputedStyle(e).getPropertyValue("background-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");if(window.getComputedStyle(e).getPropertyValue("background-color")==="rgba(0, 0, 0, 0)"||window.getComputedStyle(e).getPropertyValue("transparent")){o=["255","255","255"]}const r={align:null,bold:!!(window.getComputedStyle(e).getPropertyValue("font-weight")==="bold"||Number(window.getComputedStyle(e).getPropertyValue("font-weight"))>=500),border:null,color:rgbToHex(Number(t[0]),Number(t[1]),Number(t[2])),fill:{color:rgbToHex(Number(o[0]),Number(o[1]),Number(o[2]))},fontFace:(window.getComputedStyle(e).getPropertyValue("font-family")||"").split(",")[0].replace(/"/g,"").replace("inherit","").replace("initial","")||null,fontSize:Number(window.getComputedStyle(e).getPropertyValue("font-size").replace(/[a-z]/gi,"")),margin:null,colspan:Number(e.getAttribute("colspan"))||null,rowspan:Number(e.getAttribute("rowspan"))||null,valign:null};if(["left","center","right","start","end"].includes(window.getComputedStyle(e).getPropertyValue("text-align"))){const t=window.getComputedStyle(e).getPropertyValue("text-align").replace("start","left").replace("end","right");r.align=t==="center"?"center":t==="left"?"left":t==="right"?"right":null}if(["top","middle","bottom"].includes(window.getComputedStyle(e).getPropertyValue("vertical-align"))){const t=window.getComputedStyle(e).getPropertyValue("vertical-align");r.valign=t==="top"?"top":t==="middle"?"middle":t==="bottom"?"bottom":null}if(window.getComputedStyle(e).getPropertyValue("padding-left")){r.margin=[0,0,0,0];const t=["padding-top","padding-right","padding-bottom","padding-left"];t.forEach(((t,o)=>{r.margin[o]=Math.round(Number(window.getComputedStyle(e).getPropertyValue(t).replace(/\D/gi,"")))}))}if(window.getComputedStyle(e).getPropertyValue("border-top-width")||window.getComputedStyle(e).getPropertyValue("border-right-width")||window.getComputedStyle(e).getPropertyValue("border-bottom-width")||window.getComputedStyle(e).getPropertyValue("border-left-width")){r.border=[null,null,null,null];const t=["top","right","bottom","left"];t.forEach(((t,o)=>{const n=Math.round(Number(window.getComputedStyle(e).getPropertyValue("border-"+t+"-width").replace("px","")));let a=[];a=window.getComputedStyle(e).getPropertyValue("border-"+t+"-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");const i=rgbToHex(Number(a[0]),Number(a[1]),Number(a[2]));r.border[o]={pt:n,color:i}}))}n.push({_type:X.tablecell,text:e.innerText,options:r})}));switch(e){case"thead":s.push(n);break;case"tbody":l.push(n);break;case"tfoot":c.push(n);break;default:console.log(`table parsing: unexpected table part: ${e}`);break}}))}));a._arrObjTabHeadRows=s||null;a.colW=d;getSlidesForTableRows([...s,...l,...c],a,e.presLayout,n).forEach(((t,o)=>{const n=e.addSlide({masterName:a.masterSlideName||null});if(o===0)a.y=a.y||p[0];if(o>0)a.y=a.autoPageSlideStartY||a.newSlideStartY||p[0];if(a.verbose)console.log(`| opts.autoPageSlideStartY: ${a.autoPageSlideStartY} / arrInchMargins[0]: ${p[0]} => opts.y = ${a.y}`);n.addTable(t.rows,{x:a.x||p[3],y:a.y,w:Number(i)/r,colW:d,autoPage:false});if(a.addImage){a.addImage.options=a.addImage.options||{};if(!a.addImage.image||!a.addImage.image.path&&!a.addImage.image.data){console.warn("Warning: tableToSlides.addImage requires either `path` or `data`")}else{n.addImage({path:a.addImage.image.path,data:a.addImage.image.data,x:a.addImage.options.x,y:a.addImage.options.y,w:a.addImage.options.w,h:a.addImage.options.h})}}if(a.addShape)n.addShape(a.addShape.shapeName,a.addShape.options||{});if(a.addTable)n.addTable(a.addTable.rows,a.addTable.options||{});if(a.addText)n.addText(a.addText.text,a.addText.options||{})}))}let J=0;function createSlideMaster(e,t){if(e.bkgd)t.bkgd=e.bkgd;if(e.objects&&Array.isArray(e.objects)&&e.objects.length>0){e.objects.forEach(((e,o)=>{const n=Object.keys(e)[0];const r=t;if(G[n]&&n==="chart")addChartDefinition(r,e[n].type,e[n].data,e[n].opts);else if(G[n]&&n==="image")addImageDefinition(r,e[n]);else if(G[n]&&n==="line")addShapeDefinition(r,U.LINE,e[n]);else if(G[n]&&n==="rect")addShapeDefinition(r,U.RECTANGLE,e[n]);else if(G[n]&&n==="text")addTextDefinition(r,[{text:e[n].text}],e[n].options,false);else if(G[n]&&n==="placeholder"){e[n].options.placeholder=e[n].options.name;delete e[n].options.name;e[n].options._placeholderType=e[n].options.type;delete e[n].options.type;e[n].options._placeholderIdx=100+o;addTextDefinition(r,[{text:e[n].text}],e[n].options,true)}}))}if(e.slideNumber&&typeof e.slideNumber==="object")t._slideNumberProps=e.slideNumber}function addChartDefinition(e,t,o,n){var r;function correctGridLineOptions(e){if(!e||e.style==="none")return;if(e.size!==undefined&&(isNaN(Number(e.size))||e.size<=0)){console.warn("Warning: chart.gridLine.size must be greater than 0.");delete e.size}if(e.style&&!["solid","dash","dot"].includes(e.style)){console.warn("Warning: chart.gridLine.style options: `solid`, `dash`, `dot`.");delete e.style}if(e.cap&&!["flat","square","round"].includes(e.cap)){console.warn("Warning: chart.gridLine.cap options: `flat`, `square`, `round`.");delete e.cap}}const a=++J;const i={_type:null,text:null,options:null,chartRid:null};let s=null;let l=[];if(Array.isArray(t)){t.forEach((e=>{l=l.concat(e.data)}));s=o||n}else{l=o;s=n}l.forEach(((e,t)=>{e._dataIndex=t;if(e.labels!==undefined&&!Array.isArray(e.labels[0])){e.labels=[e.labels]}}));const c=s&&typeof s==="object"?s:{};c._type=t;c.x=typeof c.x!=="undefined"&&c.x!=null&&!isNaN(Number(c.x))?c.x:1;c.y=typeof c.y!=="undefined"&&c.y!=null&&!isNaN(Number(c.y))?c.y:1;c.w=c.w||"50%";c.h=c.h||"50%";c.objectName=c.objectName?encodeXmlEntities(c.objectName):`Chart ${e._slideObjects.filter((e=>e._type===X.chart)).length}`;if(!["bar","col"].includes(c.barDir||""))c.barDir="col";if(c._type===W.AREA){if(!["stacked","standard","percentStacked"].includes(c.barGrouping||""))c.barGrouping="standard"}if(c._type===W.BAR){if(!["clustered","stacked","percentStacked"].includes(c.barGrouping||""))c.barGrouping="clustered"}if(c._type===W.BAR3D){if(!["clustered","stacked","standard","percentStacked"].includes(c.barGrouping||""))c.barGrouping="standard"}if((r=c.barGrouping)===null||r===void 0?void 0:r.includes("tacked")){if(!c.barGapWidthPct)c.barGapWidthPct=50}if(c.dataLabelPosition){if(c._type===W.AREA||c._type===W.BAR3D||c._type===W.DOUGHNUT||c._type===W.RADAR){delete c.dataLabelPosition}if(c._type===W.PIE){if(!["bestFit","ctr","inEnd","outEnd"].includes(c.dataLabelPosition))delete c.dataLabelPosition}if(c._type===W.BUBBLE||c._type===W.BUBBLE3D||c._type===W.LINE||c._type===W.SCATTER){if(!["b","ctr","l","r","t"].includes(c.dataLabelPosition))delete c.dataLabelPosition}if(c._type===W.BAR){if(!["stacked","percentStacked"].includes(c.barGrouping||"")){if(!["ctr","inBase","inEnd"].includes(c.dataLabelPosition))delete c.dataLabelPosition}if(!["clustered"].includes(c.barGrouping||"")){if(!["ctr","inBase","inEnd","outEnd"].includes(c.dataLabelPosition))delete c.dataLabelPosition}}}c.dataLabelBkgrdColors=c.dataLabelBkgrdColors||!c.dataLabelBkgrdColors?c.dataLabelBkgrdColors:false;if(!["b","l","r","t","tr"].includes(c.legendPos||""))c.legendPos="r";if(!["cone","coneToMax","box","cylinder","pyramid","pyramidToMax"].includes(c.bar3DShape||""))c.bar3DShape="box";if(!["circle","dash","diamond","dot","none","square","triangle"].includes(c.lineDataSymbol||""))c.lineDataSymbol="circle";if(!["gap","span"].includes(c.displayBlanksAs||""))c.displayBlanksAs="span";if(!["standard","marker","filled"].includes(c.radarStyle||""))c.radarStyle="standard";c.lineDataSymbolSize=c.lineDataSymbolSize&&!isNaN(c.lineDataSymbolSize)?c.lineDataSymbolSize:6;c.lineDataSymbolLineSize=c.lineDataSymbolLineSize&&!isNaN(c.lineDataSymbolLineSize)?valToPts(c.lineDataSymbolLineSize):valToPts(.75);if(c.layout){["x","y","w","h"].forEach((e=>{const t=c.layout[e];if(isNaN(Number(t))||t<0||t>1){console.warn("Warning: chart.layout."+e+" can only be 0-1");delete c.layout[e]}}))}c.catGridLine=c.catGridLine||(c._type===W.SCATTER?{color:"D9D9D9",size:1}:{style:"none"});c.valGridLine=c.valGridLine||(c._type===W.SCATTER?{color:"D9D9D9",size:1}:{});c.serGridLine=c.serGridLine||(c._type===W.SCATTER?{color:"D9D9D9",size:1}:{style:"none"});correctGridLineOptions(c.catGridLine);correctGridLineOptions(c.valGridLine);correctGridLineOptions(c.serGridLine);correctShadowOptions(c.shadow);c.showDataTable=c.showDataTable||!c.showDataTable?c.showDataTable:false;c.showDataTableHorzBorder=c.showDataTableHorzBorder||!c.showDataTableHorzBorder?c.showDataTableHorzBorder:true;c.showDataTableVertBorder=c.showDataTableVertBorder||!c.showDataTableVertBorder?c.showDataTableVertBorder:true;c.showDataTableOutline=c.showDataTableOutline||!c.showDataTableOutline?c.showDataTableOutline:true;c.showDataTableKeys=c.showDataTableKeys||!c.showDataTableKeys?c.showDataTableKeys:true;c.showLabel=c.showLabel||!c.showLabel?c.showLabel:false;c.showLegend=c.showLegend||!c.showLegend?c.showLegend:false;c.showPercent=c.showPercent||!c.showPercent?c.showPercent:true;c.showTitle=c.showTitle||!c.showTitle?c.showTitle:false;c.showValue=c.showValue||!c.showValue?c.showValue:false;c.showLeaderLines=c.showLeaderLines||!c.showLeaderLines?c.showLeaderLines:false;c.catAxisLineShow=typeof c.catAxisLineShow!=="undefined"?c.catAxisLineShow:true;c.valAxisLineShow=typeof c.valAxisLineShow!=="undefined"?c.valAxisLineShow:true;c.serAxisLineShow=typeof c.serAxisLineShow!=="undefined"?c.serAxisLineShow:true;c.v3DRotX=!isNaN(c.v3DRotX)&&c.v3DRotX>=-90&&c.v3DRotX<=90?c.v3DRotX:30;c.v3DRotY=!isNaN(c.v3DRotY)&&c.v3DRotY>=0&&c.v3DRotY<=360?c.v3DRotY:30;c.v3DRAngAx=c.v3DRAngAx||!c.v3DRAngAx?c.v3DRAngAx:true;c.v3DPerspective=!isNaN(c.v3DPerspective)&&c.v3DPerspective>=0&&c.v3DPerspective<=240?c.v3DPerspective:30;c.barGapWidthPct=!isNaN(c.barGapWidthPct)&&c.barGapWidthPct>=0&&c.barGapWidthPct<=1e3?c.barGapWidthPct:150;c.barGapDepthPct=!isNaN(c.barGapDepthPct)&&c.barGapDepthPct>=0&&c.barGapDepthPct<=1e3?c.barGapDepthPct:150;c.chartColors=Array.isArray(c.chartColors)?c.chartColors:c._type===W.PIE||c._type===W.DOUGHNUT?B:I;c.chartColorsOpacity=c.chartColorsOpacity&&!isNaN(c.chartColorsOpacity)?c.chartColorsOpacity:null;c.border=c.border&&typeof c.border==="object"?c.border:null;if(c.border&&(!c.border.pt||isNaN(c.border.pt)))c.border.pt=A.pt;if(c.border&&(!c.border.color||typeof c.border.color!=="string"))c.border.color=A.color;c.plotArea=c.plotArea||{};c.plotArea.border=c.plotArea.border&&typeof c.plotArea.border==="object"?c.plotArea.border:null;if(c.plotArea.border&&(!c.plotArea.border.pt||isNaN(c.plotArea.border.pt)))c.plotArea.border.pt=A.pt;if(c.plotArea.border&&(!c.plotArea.border.color||typeof c.plotArea.border.color!=="string")){c.plotArea.border.color=A.color}if(c.border)c.plotArea.border=c.border;c.plotArea.fill=c.plotArea.fill||{color:null,transparency:null};if(c.fill)c.plotArea.fill.color=c.fill;c.chartArea=c.chartArea||{};c.chartArea.border=c.chartArea.border&&typeof c.chartArea.border==="object"?c.chartArea.border:null;if(c.chartArea.border){c.chartArea.border={color:c.chartArea.border.color||A.color,pt:c.chartArea.border.pt||A.pt}}c.chartArea.roundedCorners=typeof c.chartArea.roundedCorners==="boolean"?c.chartArea.roundedCorners:true;c.dataBorder=c.dataBorder&&typeof c.dataBorder==="object"?c.dataBorder:null;if(c.dataBorder&&(!c.dataBorder.pt||isNaN(c.dataBorder.pt)))c.dataBorder.pt=.75;if(c.dataBorder&&c.dataBorder.color){const e=typeof c.dataBorder.color==="string"&&c.dataBorder.color.length===6&&/^[0-9A-Fa-f]{6}$/.test(c.dataBorder.color);const t=Object.values(q).includes(c.dataBorder.color);if(!e&&!t){c.dataBorder.color="F9F9F9"}}if(!c.dataLabelFormatCode&&c._type===W.SCATTER)c.dataLabelFormatCode="General";if(!c.dataLabelFormatCode&&(c._type===W.PIE||c._type===W.DOUGHNUT)){c.dataLabelFormatCode=c.showPercent?"0%":"General"}c.dataLabelFormatCode=c.dataLabelFormatCode&&typeof c.dataLabelFormatCode==="string"?c.dataLabelFormatCode:"#,##0";if(!c.dataLabelFormatScatter&&c._type===W.SCATTER)c.dataLabelFormatScatter="custom";c.lineSize=typeof c.lineSize==="number"?c.lineSize:2;c.valAxisMajorUnit=typeof c.valAxisMajorUnit==="number"?c.valAxisMajorUnit:null;if(c._type===W.AREA||c._type===W.BAR||c._type===W.BAR3D||c._type===W.LINE){c.catAxisMultiLevelLabels=!!c.catAxisMultiLevelLabels}else{delete c.catAxisMultiLevelLabels}i._type="chart";i.options=c;i.chartRid=getNewRelId(e);e._relsChart.push({rId:getNewRelId(e),data:l,opts:c,type:c._type,globalId:a,fileName:`chart${a}.xml`,Target:`/ppt/charts/chart${a}.xml`});e._slideObjects.push(i);return i}function addImageDefinition(e,t){const o={_type:null,text:null,options:null,image:null,imageRid:null,hyperlink:null};const n=t.x||0;const r=t.y||0;const a=t.w||0;const i=t.h||0;const s=t.sizing||null;const l=t.hyperlink||"";const c=t.data||"";const d=t.path||"";let u=getNewRelId(e);const p=t.objectName?encodeXmlEntities(t.objectName):`Image ${e._slideObjects.filter((e=>e._type===X.image)).length}`;if(!d&&!c){console.error("ERROR: addImage() requires either 'data' or 'path' parameter!");return null}else if(d&&typeof d!=="string"){console.error(`ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent ${String(d)}`);return null}else if(c&&typeof c!=="string"){console.error(`ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent ${String(c)}`);return null}else if(c&&typeof c==="string"&&!c.toLowerCase().includes("base64,")){console.error("ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')");return null}let A=(d.substring(d.lastIndexOf("/")+1).split("?")[0].split(".").pop().split("#")[0]||"png").toLowerCase();if(c&&/image\/(\w+);/.exec(c)&&/image\/(\w+);/.exec(c).length>0){A=/image\/(\w+);/.exec(c)[1]}else if(c===null||c===void 0?void 0:c.toLowerCase().includes("image/svg+xml")){A="svg"}o._type=X.image;o.image=d||"preencoded.png";o.options={x:n||0,y:r||0,w:a||1,h:i||1,altText:t.altText||"",rounding:typeof t.rounding==="boolean"?t.rounding:false,sizing:s,placeholder:t.placeholder,rotate:t.rotate||0,flipV:t.flipV||false,flipH:t.flipH||false,transparency:t.transparency||0,objectName:p,shadow:correctShadowOptions(t.shadow)};if(A==="svg"){e._relsMedia.push({path:d||c+"png",type:"image/png",extn:"png",data:c||"",rId:u,Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.png`,isSvgPng:true,svgSize:{w:getSmartParseNumber(o.options.w,"X",e._presLayout),h:getSmartParseNumber(o.options.h,"Y",e._presLayout)}});o.imageRid=u;e._relsMedia.push({path:d||c,type:"image/svg+xml",extn:A,data:c||"",rId:u+1,Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.${A}`});o.imageRid=u+1}else{const t=e._relsMedia.filter((e=>e.path&&e.path===d&&e.type==="image/"+A&&!e.isDuplicate))[0];e._relsMedia.push({path:d||"preencoded."+A,type:"image/"+A,extn:A,data:c||"",rId:u,isDuplicate:!!(t===null||t===void 0?void 0:t.Target),Target:(t===null||t===void 0?void 0:t.Target)?t.Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.${A}`});o.imageRid=u}if(typeof l==="object"){if(!l.url&&!l.slide)throw new Error("ERROR: `hyperlink` option requires either: `url` or `slide`");else{u++;e._rels.push({type:X.hyperlink,data:l.slide?"slide":"dummy",rId:u,Target:l.url||l.slide.toString()});l._rId=u;o.hyperlink=l}}e._slideObjects.push(o)}function addMediaDefinition(e,t){const o=t.x||0;const n=t.y||0;const r=t.w||2;const a=t.h||2;const i=t.data||"";const s=t.link||"";const l=t.path||"";const c=t.type||"audio";let d="";const u=t.cover||Y;const p=t.objectName?encodeXmlEntities(t.objectName):`Media ${e._slideObjects.filter((e=>e._type===X.media)).length}`;const A={_type:X.media};if(!l&&!i&&c!=="online"){throw new Error("addMedia() error: either `data` or `path` are required!")}else if(i&&!i.toLowerCase().includes("base64,")){throw new Error("addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')")}else if(!u.toLowerCase().includes("base64,")){throw new Error("addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')")}if(c==="online"&&!s){throw new Error("addMedia() error: online videos require `link` value")}d=t.extn||(i?i.split(";")[0].split("/")[1]:l.split(".").pop())||"mp3";A.mtype=c;A.media=l||"preencoded.mov";A.options={};A.options.x=o;A.options.y=n;A.options.w=r;A.options.h=a;A.options.objectName=p;if(c==="online"){const t=getNewRelId(e);e._relsMedia.push({path:l||"preencoded"+d,data:"dummy",type:"online",extn:d,rId:t,Target:s});A.mediaRid=t;e._relsMedia.push({path:"preencoded.png",data:u,type:"image/png",extn:"png",rId:getNewRelId(e),Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.png`})}else{const t=e._relsMedia.filter((e=>e.path&&e.path===l&&e.type===c+"/"+d&&!e.isDuplicate))[0];const o=getNewRelId(e);e._relsMedia.push({path:l||"preencoded"+d,type:c+"/"+d,extn:d,data:i||"",rId:o,isDuplicate:!!(t===null||t===void 0?void 0:t.Target),Target:(t===null||t===void 0?void 0:t.Target)?t.Target:`../media/media-${e._slideNum}-${e._relsMedia.length+1}.${d}`});A.mediaRid=o;e._relsMedia.push({path:l||"preencoded"+d,type:c+"/"+d,extn:d,data:i||"",rId:getNewRelId(e),isDuplicate:!!(t===null||t===void 0?void 0:t.Target),Target:(t===null||t===void 0?void 0:t.Target)?t.Target:`../media/media-${e._slideNum}-${e._relsMedia.length+0}.${d}`});e._relsMedia.push({path:"preencoded.png",type:"image/png",extn:"png",data:u,rId:getNewRelId(e),Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.png`})}e._slideObjects.push(A)}function addNotesDefinition(e,t){e._slideObjects.push({_type:X.notes,text:[{text:t}]})}function addShapeDefinition(e,t,o){const n=typeof o==="object"?o:{};n.line=n.line||{type:"none"};const r={_type:X.text,shape:t||U.RECTANGLE,options:n,text:null};if(!t)throw new Error("Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`");const a={type:n.line.type||"solid",color:n.line.color||b,transparency:n.line.transparency||0,width:n.line.width||1,dashType:n.line.dashType||"solid",beginArrowType:n.line.beginArrowType||null,endArrowType:n.line.endArrowType||null};if(typeof n.line==="object"&&n.line.type!=="none")n.line=a;n.x=n.x||(n.x===0?0:1);n.y=n.y||(n.y===0?0:1);n.w=n.w||(n.w===0?0:1);n.h=n.h||(n.h===0?0:1);n.objectName=n.objectName?encodeXmlEntities(n.objectName):`Shape ${e._slideObjects.filter((e=>e._type===X.text)).length}`;if(typeof n.line==="string"){const e=a;e.color=String(n.line);n.line=e}if(typeof n.lineSize==="number")n.line.width=n.lineSize;if(typeof n.lineDash==="string")n.line.dashType=n.lineDash;if(typeof n.lineHead==="string")n.line.beginArrowType=n.lineHead;if(typeof n.lineTail==="string")n.line.endArrowType=n.lineTail;createHyperlinkRels(e,r);e._slideObjects.push(r)}function addTableDefinition(e,t,o,n,a,i,s){const l=[e];const c=o&&typeof o==="object"?o:{};c.objectName=c.objectName?encodeXmlEntities(c.objectName):`Table ${e._slideObjects.filter((e=>e._type===X.table)).length}`;{if(t===null||t.length===0||!Array.isArray(t)){throw new Error("addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)")}if(!t[0]||!Array.isArray(t[0])){throw new Error("addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)")}}const d=[];t.forEach((e=>{const t=[];if(Array.isArray(e)){e.forEach((e=>{const o={_type:X.tablecell,text:"",options:typeof e==="object"&&e.options?e.options:{}};if(typeof e==="string"||typeof e==="number")o.text=e.toString();else if(e.text){if(typeof e.text==="string"||typeof e.text==="number")o.text=e.text.toString();else if(e.text)o.text=e.text;if(e.options&&typeof e.options==="object")o.options=e.options}o.options.border=o.options.border||c.border||[{type:"none"},{type:"none"},{type:"none"},{type:"none"}];const n=o.options.border;if(!Array.isArray(n)&&typeof n==="object")o.options.border=[n,n,n,n];if(!o.options.border[0])o.options.border[0]={type:"none"};if(!o.options.border[1])o.options.border[1]={type:"none"};if(!o.options.border[2])o.options.border[2]={type:"none"};if(!o.options.border[3])o.options.border[3]={type:"none"};const r=[0,1,2,3];r.forEach((e=>{o.options.border[e]={type:o.options.border[e].type||u.type,color:o.options.border[e].color||u.color,pt:typeof o.options.border[e].pt==="number"?o.options.border[e].pt:u.pt}}));t.push(o)}))}else{console.log("addTable: tableRows has a bad row. A row should be an array of cells. You provided:");console.log(e)}d.push(t)}));c.x=getSmartParseNumber(c.x||(c.x===0?0:r/2),"X",a);c.y=getSmartParseNumber(c.y||(c.y===0?0:r/2),"Y",a);if(c.h)c.h=getSmartParseNumber(c.h,"Y",a);c.fontSize=c.fontSize||m;c.margin=c.margin===0||c.margin?c.margin:p;if(typeof c.margin==="number")c.margin=[Number(c.margin),Number(c.margin),Number(c.margin),Number(c.margin)];if(JSON.stringify({arrRows:d}).indexOf("hyperlink")===-1){if(!c.color)c.color=c.color||h}if(typeof c.border==="string"){console.warn("addTable `border` option must be an object. Ex: `{border: {type:'none'}}`");c.border=null}else if(Array.isArray(c.border)){[0,1,2,3].forEach((e=>{c.border[e]=c.border[e]?{type:c.border[e].type||u.type,color:c.border[e].color||u.color,pt:c.border[e].pt||u.pt}:{type:"none"}}))}c.autoPage=typeof c.autoPage==="boolean"?c.autoPage:false;c.autoPageRepeatHeader=typeof c.autoPageRepeatHeader==="boolean"?c.autoPageRepeatHeader:false;c.autoPageHeaderRows=typeof c.autoPageHeaderRows!=="undefined"&&!isNaN(Number(c.autoPageHeaderRows))?Number(c.autoPageHeaderRows):1;c.autoPageLineWeight=typeof c.autoPageLineWeight!=="undefined"&&!isNaN(Number(c.autoPageLineWeight))?Number(c.autoPageLineWeight):0;if(c.autoPageLineWeight){if(c.autoPageLineWeight>1)c.autoPageLineWeight=1;else if(c.autoPageLineWeight<-1)c.autoPageLineWeight=-1}let A=x;if(n&&typeof n._margin!=="undefined"){if(Array.isArray(n._margin))A=n._margin;else if(!isNaN(Number(n._margin))){A=[Number(n._margin),Number(n._margin),Number(n._margin),Number(n._margin)]}}if(c.colW){const e=d[0].reduce(((e,t)=>{var o;if(((o=t===null||t===void 0?void 0:t.options)===null||o===void 0?void 0:o.colspan)&&typeof t.options.colspan==="number"){e+=t.options.colspan}else{e+=1}return e}),0);if(typeof c.colW==="string"||typeof c.colW==="number"){c.w=Math.floor(Number(c.colW)*e);c.colW=null}else if(c.colW&&Array.isArray(c.colW)&&c.colW.length===1&&e>1){c.w=Math.floor(Number(c.colW)*e);c.colW=null}else if(c.colW&&Array.isArray(c.colW)&&c.colW.length!==e){console.warn("addTable: mismatch: (colW.length != data.length) Therefore, defaulting to evenly distributed col widths.");c.colW=null}}else if(c.w){c.w=getSmartParseNumber(c.w,"X",a)}else{c.w=Math.floor(a._sizeW/r-A[1]-A[3])}if(c.x&&c.x<20)c.x=inch2Emu(c.x);if(c.y&&c.y<20)c.y=inch2Emu(c.y);if(c.w&&typeof c.w==="number"&&c.w<20)c.w=inch2Emu(c.w);if(c.h&&typeof c.h==="number"&&c.h<20)c.h=inch2Emu(c.h);d.forEach((e=>{e.forEach(((t,o)=>{if(typeof t==="number"||typeof t==="string"){e[o]={_type:X.tablecell,text:String(e[o]),options:c}}else if(typeof t==="object"){if(typeof t.text==="number")e[o].text=e[o].text.toString();else if(typeof t.text==="undefined"||t.text===null)e[o].text="";e[o].options=t.options||{};e[o]._type=X.tablecell}}))}));const f=[];if(c&&!c.autoPage){createHyperlinkRels(e,d);e._slideObjects.push({_type:X.table,arrTabRows:d,options:Object.assign({},c)})}else{if(c.autoPageRepeatHeader)c._arrObjTabHeadRows=d.filter(((e,t)=>t<c.autoPageHeaderRows));getSlidesForTableRows(d,c,a,n).forEach(((t,o)=>{if(!s(e._slideNum+o))l.push(i({masterName:(n===null||n===void 0?void 0:n._name)||null}));if(o>0)c.y=inch2Emu(c.autoPageSlideStartY||c.newSlideStartY||A[0]);{const n=s(e._slideNum+o);c.autoPage=false;createHyperlinkRels(n,t.rows);n.addTable(t.rows,Object.assign({},c));if(o>0)f.push(n)}}))}return f}function addTextDefinition(e,t,o,n){const r={_type:n?X.placeholder:X.text,shape:(o===null||o===void 0?void 0:o.shape)||U.RECTANGLE,text:!t||t.length===0?[{text:"",options:null}]:t,options:o||{}};function cleanOpts(t){{if(!t.placeholder){t.color=t.color||r.options.color||e.color||h}if(t.placeholder||n){t.bullet=t.bullet||false}if(t.placeholder&&e._slideLayout&&e._slideLayout._slideObjects){const o=e._slideLayout._slideObjects.filter((e=>e._type==="placeholder"&&e.options&&e.options.placeholder&&e.options.placeholder===t.placeholder))[0];if(o===null||o===void 0?void 0:o.options)t=Object.assign(Object.assign({},t),o.options)}t.objectName=t.objectName?encodeXmlEntities(t.objectName):`Text ${e._slideObjects.filter((e=>e._type===X.text)).length}`;if(t.shape===U.LINE){const e={type:t.line.type||"solid",color:t.line.color||b,transparency:t.line.transparency||0,width:t.line.width||1,dashType:t.line.dashType||"solid",beginArrowType:t.line.beginArrowType||null,endArrowType:t.line.endArrowType||null};if(typeof t.line==="object")t.line=e;if(typeof t.line==="string"){const o=e;if(typeof t.line==="string")o.color=t.line;t.line=o}if(typeof t.lineSize==="number")t.line.width=t.lineSize;if(typeof t.lineDash==="string")t.line.dashType=t.lineDash;if(typeof t.lineHead==="string")t.line.beginArrowType=t.lineHead;if(typeof t.lineTail==="string")t.line.endArrowType=t.lineTail}t.line=t.line||{};t.lineSpacing=t.lineSpacing&&!isNaN(t.lineSpacing)?t.lineSpacing:null;t.lineSpacingMultiple=t.lineSpacingMultiple&&!isNaN(t.lineSpacingMultiple)?t.lineSpacingMultiple:null;t._bodyProp=t._bodyProp||{};t._bodyProp.autoFit=t.autoFit||false;t._bodyProp.anchor=!t.placeholder?N.ctr:null;t._bodyProp.vert=t.vert||null;t._bodyProp.wrap=typeof t.wrap==="boolean"?t.wrap:true;if(t.inset&&!isNaN(Number(t.inset))||t.inset===0){t._bodyProp.lIns=inch2Emu(t.inset);t._bodyProp.rIns=inch2Emu(t.inset);t._bodyProp.tIns=inch2Emu(t.inset);t._bodyProp.bIns=inch2Emu(t.inset)}if(typeof t.underline==="boolean"&&t.underline===true)t.underline={style:"sng"}}{if((t.align||"").toLowerCase().indexOf("c")===0)t._bodyProp.align=D.center;else if((t.align||"").toLowerCase().indexOf("l")===0)t._bodyProp.align=D.left;else if((t.align||"").toLowerCase().indexOf("r")===0)t._bodyProp.align=D.right;else if((t.align||"").toLowerCase().indexOf("j")===0)t._bodyProp.align=D.justify;if((t.valign||"").toLowerCase().indexOf("b")===0)t._bodyProp.anchor=N.b;else if((t.valign||"").toLowerCase().indexOf("m")===0)t._bodyProp.anchor=N.ctr;else if((t.valign||"").toLowerCase().indexOf("t")===0)t._bodyProp.anchor=N.t}correctShadowOptions(t.shadow);return t}r.options=cleanOpts(r.options);r.text.forEach((e=>e.options=cleanOpts(e.options||{})));createHyperlinkRels(e,r.text||"");e._slideObjects.push(r)}function addPlaceholdersToSlideLayouts(e){(e._slideLayout._slideObjects||[]).forEach((t=>{if(t._type===X.placeholder){if(e._slideObjects.filter((e=>e.options&&e.options.placeholder===t.options.placeholder)).length===0){addTextDefinition(e,[{text:""}],t.options,false)}}}))}function addBackgroundDefinition(e,t){var o;if(t.bkgd){if(!t.background)t.background={};if(typeof t.bkgd==="string")t.background.color=t.bkgd;else{if(t.bkgd.data)t.background.data=t.bkgd.data;if(t.bkgd.path)t.background.path=t.bkgd.path;if(t.bkgd.src)t.background.path=t.bkgd.src}}if((o=t.background)===null||o===void 0?void 0:o.fill)t.background.color=t.background.fill;if(e&&(e.path||e.data)){e.path=e.path||"preencoded.png";let o=(e.path.split(".").pop()||"png").split("?")[0];if(o==="jpg")o="jpeg";t._relsMedia=t._relsMedia||[];const n=t._relsMedia.length+1;t._relsMedia.push({path:e.path,type:X.image,extn:o,data:e.data||null,rId:n,Target:`../media/${(t._name||"").replace(/\s+/gi,"-")}-image-${t._relsMedia.length+1}.${o}`});t._bkgdImgRid=n}}function createHyperlinkRels(e,t,o){let n=[];if(typeof t==="string"||typeof t==="number")return;else if(Array.isArray(t))n=t;else if(typeof t==="object")n=[t];n.forEach(((t,n)=>{if(o&&o[n]&&o[n].hyperlink)t.options=Object.assign(Object.assign({},t.options),o[n]);if(Array.isArray(t)){const o=[];t.forEach((e=>{if(e.options&&!e.text.options){o.push(e.options)}}));createHyperlinkRels(e,t,o)}else if(Array.isArray(t.text)){createHyperlinkRels(e,t.text,o&&o[n]?[o[n]]:undefined)}else if(t&&typeof t==="object"&&t.options&&t.options.hyperlink&&!t.options.hyperlink._rId){if(typeof t.options.hyperlink!=="object"){console.log("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` ")}else if(!t.options.hyperlink.url&&!t.options.hyperlink.slide){console.log("ERROR: 'hyperlink requires either: `url` or `slide`'")}else{const o=getNewRelId(e);e._rels.push({type:X.hyperlink,data:t.options.hyperlink.slide?"slide":"dummy",rId:o,Target:encodeXmlEntities(t.options.hyperlink.url)||t.options.hyperlink.slide.toString()});t.options.hyperlink._rId=o}}else if(t&&typeof t==="object"&&t.options&&t.options.hyperlink&&t.options.hyperlink._rId){if(e._rels.filter((e=>e.rId===t.options.hyperlink._rId)).length===0){e._rels.push({type:X.hyperlink,data:t.options.hyperlink.slide?"slide":"dummy",rId:t.options.hyperlink._rId,Target:encodeXmlEntities(t.options.hyperlink.url)||t.options.hyperlink.slide.toString()})}}}))}class Slide{constructor(e){var t;this.addSlide=e.addSlide;this.getSlide=e.getSlide;this._name=`Slide ${e.slideNumber}`;this._presLayout=e.presLayout;this._rId=e.slideRId;this._rels=[];this._relsChart=[];this._relsMedia=[];this._setSlideNum=e.setSlideNum;this._slideId=e.slideId;this._slideLayout=e.slideLayout||null;this._slideNum=e.slideNumber;this._slideObjects=[];this._slideNumberProps=((t=this._slideLayout)===null||t===void 0?void 0:t._slideNumberProps)?this._slideLayout._slideNumberProps:null}set bkgd(e){this._bkgd=e;if(!this._background||!this._background.color){if(!this._background)this._background={};if(typeof e==="string")this._background.color=e}}get bkgd(){return this._bkgd}set background(e){this._background=e;if(e)addBackgroundDefinition(e,this)}get background(){return this._background}set color(e){this._color=e}get color(){return this._color}set hidden(e){this._hidden=e}get hidden(){return this._hidden}set slideNumber(e){this._slideNumberProps=e;this._setSlideNum(e)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart(e,t,o){const n=o||{};n._type=e;addChartDefinition(this,e,t,o);return this}addImage(e){addImageDefinition(this,e);return this}addMedia(e){addMediaDefinition(this,e);return this}addNotes(e){addNotesDefinition(this,e);return this}addShape(e,t){addShapeDefinition(this,e,t);return this}addTable(e,t){this._newAutoPagedSlides=addTableDefinition(this,e,t,this._slideLayout,this._presLayout,this.addSlide,this.getSlide);return this}addText(e,t){const o=typeof e==="string"||typeof e==="number"?[{text:e,options:t}]:e;addTextDefinition(this,o,t,false);return this}}function createExcelWorksheet(e,t){return __awaiter(this,void 0,void 0,(function*(){const o=e.data;return yield new Promise(((r,a)=>{var i,s;const l=new n;const c=(o.length-1)*2+1;const d=((s=(i=o[0])===null||i===void 0?void 0:i.labels)===null||s===void 0?void 0:s.length)>1;l.folder("_rels");l.folder("docProps");l.folder("xl/_rels");l.folder("xl/tables");l.folder("xl/theme");l.folder("xl/worksheets");l.folder("xl/worksheets/_rels");{l.file("[Content_Types].xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'+' <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>'+' <Default Extension="xml" ContentType="application/xml"/>'+' <Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>'+' <Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>'+' <Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>'+' <Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>'+' <Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>'+' <Override PartName="/xl/tables/table1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"/>'+' <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>'+' <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>'+"</Types>\n");l.file("_rels/.rels",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>'+'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>'+'<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>'+"</Relationships>\n");l.file("docProps/app.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">'+"<Application>Microsoft Macintosh Excel</Application>"+"<DocSecurity>0</DocSecurity>"+"<ScaleCrop>false</ScaleCrop>"+'<HeadingPairs><vt:vector size="2" baseType="variant"><vt:variant><vt:lpstr>Worksheets</vt:lpstr></vt:variant><vt:variant><vt:i4>1</vt:i4></vt:variant></vt:vector></HeadingPairs>'+'<TitlesOfParts><vt:vector size="1" baseType="lpstr"><vt:lpstr>Sheet1</vt:lpstr></vt:vector></TitlesOfParts>'+"<Company></Company><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>16.0300</AppVersion>"+"</Properties>\n");l.file("docProps/core.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'+"<dc:creator>PptxGenJS</dc:creator>"+"<cp:lastModifiedBy>PptxGenJS</cp:lastModifiedBy>"+'<dcterms:created xsi:type="dcterms:W3CDTF">'+(new Date).toISOString()+"</dcterms:created>"+'<dcterms:modified xsi:type="dcterms:W3CDTF">'+(new Date).toISOString()+"</dcterms:modified>"+"</cp:coreProperties>");l.file("xl/_rels/workbook.xml.rels",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+'<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>'+'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>'+'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>'+'<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>'+"</Relationships>");l.file("xl/styles.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><numFmts count="1"><numFmt numFmtId="0" formatCode="General"/></numFmts><fonts count="4"><font><sz val="9"/><color indexed="8"/><name val="Geneva"/></font><font><sz val="9"/><color indexed="8"/><name val="Geneva"/></font><font><sz val="10"/><color indexed="8"/><name val="Geneva"/></font><font><sz val="18"/><color indexed="8"/>'+'<name val="Arial"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><dxfs count="0"/><tableStyles count="0"/><colors><indexedColors><rgbColor rgb="ff000000"/><rgbColor rgb="ffffffff"/><rgbColor rgb="ffff0000"/><rgbColor rgb="ff00ff00"/><rgbColor rgb="ff0000ff"/>'+'<rgbColor rgb="ffffff00"/><rgbColor rgb="ffff00ff"/><rgbColor rgb="ff00ffff"/><rgbColor rgb="ff000000"/><rgbColor rgb="ffffffff"/><rgbColor rgb="ff878787"/><rgbColor rgb="fff9f9f9"/></indexedColors></colors></styleSheet>\n');l.file("xl/theme/theme1.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="44546A"/></a:dk2><a:lt2><a:srgbClr val="E7E6E6"/></a:lt2><a:accent1><a:srgbClr val="4472C4"/></a:accent1><a:accent2><a:srgbClr val="ED7D31"/></a:accent2><a:accent3><a:srgbClr val="A5A5A5"/></a:accent3><a:accent4><a:srgbClr val="FFC000"/></a:accent4><a:accent5><a:srgbClr val="5B9BD5"/></a:accent5><a:accent6><a:srgbClr val="70AD47"/></a:accent6><a:hlink><a:srgbClr val="0563C1"/></a:hlink><a:folHlink><a:srgbClr val="954F72"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Calibri Light" panose="020F0302020204030204"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="Yu Gothic Light"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="DengXian Light"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:majorFont><a:minorFont><a:latin typeface="Calibri" panose="020F0502020204030204"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="Yu Gothic"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="DengXian"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:lumMod val="110000"/><a:satMod val="105000"/><a:tint val="67000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="103000"/><a:tint val="73000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="109000"/><a:tint val="81000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:satMod val="103000"/><a:lumMod val="102000"/><a:tint val="94000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:satMod val="110000"/><a:lumMod val="100000"/><a:shade val="100000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="99000"/><a:satMod val="120000"/><a:shade val="78000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="6350" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="12700" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="19050" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="57150" dist="19050" dir="5400000" algn="ctr" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="63000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:solidFill><a:schemeClr val="phClr"><a:tint val="95000"/><a:satMod val="170000"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="93000"/><a:satMod val="150000"/><a:shade val="98000"/><a:lumMod val="102000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:tint val="98000"/><a:satMod val="130000"/><a:shade val="90000"/><a:lumMod val="103000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="63000"/><a:satMod val="120000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri="{05A4C25C-085E-4340-85A3-A5531E510DB2}"><thm15:themeFamily xmlns:thm15="http://schemas.microsoft.com/office/thememl/2012/main" name="Office Theme" id="{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}" vid="{4A3C46E8-61CC-4603-A589-7422A47A8E4A}"/></a:ext></a:extLst></a:theme>');l.file("xl/workbook.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+'<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x15" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main">'+'<fileVersion appName="xl" lastEdited="7" lowestEdited="6" rupBuild="10507"/>'+"<workbookPr/>"+'<bookViews><workbookView xWindow="0" yWindow="500" windowWidth="20960" windowHeight="15960"/></bookViews>'+'<sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets>'+'<calcPr calcId="0" concurrentCalc="0"/>'+"</workbook>\n");l.file("xl/worksheets/_rels/sheet1.xml.rels",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/table" Target="../tables/table1.xml"/>'+"</Relationships>\n")}{let t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){t+=`<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="${c}" uniqueCount="${c}">`}else if(e.opts._type===W.SCATTER){t+=`<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="${o.length}" uniqueCount="${o.length}">`}else if(d){let e=o.length;o[0].labels.forEach((t=>e+=t.filter((e=>e&&e!=="")).length));t+=`<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="${e}" uniqueCount="${e}">`;t+="<si><t/></si>"}else{const e=o.length+o[0].labels.length*o[0].labels[0].length+o[0].labels.length;const n=o.length+o[0].labels.length*o[0].labels[0].length+1;t+=`<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="${e}" uniqueCount="${n}">`;t+='<si><t xml:space="preserve"></t></si>'}if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){o.forEach(((e,o)=>{if(o===0)t+="<si><t>X-Axis</t></si>";else{t+=`<si><t>${encodeXmlEntities(e.name||`Y-Axis${o}`)}</t></si>`;t+=`<si><t>${encodeXmlEntities(`Size${o}`)}</t></si>`}}))}else{o.forEach((e=>{t+=`<si><t>${encodeXmlEntities((e.name||" ").replace("X-Axis","X-Values"))}</t></si>`}))}if(e.opts._type!==W.BUBBLE&&e.opts._type!==W.BUBBLE3D&&e.opts._type!==W.SCATTER){o[0].labels.slice().reverse().forEach((e=>{e.filter((e=>e&&e!=="")).forEach((e=>{t+=`<si><t>${encodeXmlEntities(e)}</t></si>`}))}))}t+="</sst>\n";l.file("xl/sharedStrings.xml",t)}{let t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){t+=`<table xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" id="1" name="Table1" displayName="Table1" ref="A1:${getExcelColName(c)}${c}" totalsRowShown="0">`;t+=`<tableColumns count="${c}">`;let e=1;o.forEach(((o,n)=>{if(n===0){t+=`<tableColumn id="${n+1}" name="X-Values"/>`}else{t+=`<tableColumn id="${n+e}" name="${o.name}"/>`;e++;t+=`<tableColumn id="${n+e}" name="Size${n}"/>`}}))}else if(e.opts._type===W.SCATTER){t+=`<table xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" id="1" name="Table1" displayName="Table1" ref="A1:${getExcelColName(o.length)}${o[0].values.length+1}" totalsRowShown="0">`;t+=`<tableColumns count="${o.length}">`;o.forEach(((e,o)=>{t+=`<tableColumn id="${o+1}" name="${o===0?"X-Values":"Y-Value "}${o}"/>`}))}else{t+=`<table xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" id="1" name="Table1" displayName="Table1" ref="A1:${getExcelColName(o.length+o[0].labels.length)}${o[0].labels[0].length+1}'" totalsRowShown="0">`;t+=`<tableColumns count="${o.length+o[0].labels.length}">`;o[0].labels.forEach(((e,o)=>{t+=`<tableColumn id="${o+1}" name="Column${o+1}"/>`}));o.forEach(((e,n)=>{t+=`<tableColumn id="${n+o[0].labels.length+1}" name="${encodeXmlEntities(e.name)}"/>`}))}t+="</tableColumns>";t+='<tableStyleInfo showFirstColumn="0" showLastColumn="0" showRowStripes="1" showColumnStripes="0"/>';t+="</table>";l.file("xl/tables/table1.xml",t)}{let t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';t+='<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">';if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){t+=`<dimension ref="A1:${getExcelColName(c)}${o[0].values.length+1}"/>`}else if(e.opts._type===W.SCATTER){t+=`<dimension ref="A1:${getExcelColName(o.length)}${o[0].values.length+1}"/>`}else{t+=`<dimension ref="A1:${getExcelColName(o.length+1)}${o[0].values.length+1}"/>`}t+='<sheetViews><sheetView tabSelected="1" workbookViewId="0"><selection activeCell="B1" sqref="B1"/></sheetView></sheetViews>';t+='<sheetFormatPr baseColWidth="10" defaultRowHeight="16"/>';if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){t+="<sheetData>";t+=`<row r="1" spans="1:${c}">`;t+='<c r="A1" t="s"><v>0</v></c>';for(let e=1;e<c;e++){t+=`<c r="${getExcelColName(e+1)}1" t="s"><v>${e}</v></c>`}t+="</row>";o[0].values.forEach(((e,n)=>{t+=`<row r="${n+2}" spans="1:${c}">`;t+=`<c r="A${n+2}"><v>${e}</v></c>`;let r=2;for(let e=1;e<o.length;e++){t+=`<c r="${getExcelColName(r)}${n+2}"><v>${o[e].values[n]||""}</v></c>`;r++;t+=`<c r="${getExcelColName(r)}${n+2}"><v>${o[e].sizes[n]||""}</v></c>`;r++}t+="</row>"}))}else if(e.opts._type===W.SCATTER){t+="<sheetData>";t+=`<row r="1" spans="1:${o.length}">`;for(let e=0;e<o.length;e++){t+=`<c r="${getExcelColName(e+1)}1" t="s"><v>${e}</v></c>`}t+="</row>";o[0].values.forEach(((e,n)=>{t+=`<row r="${n+2}" spans="1:${o.length}">`;t+=`<c r="A${n+2}"><v>${e}</v></c>`;for(let e=1;e<o.length;e++){t+=`<c r="${getExcelColName(e+1)}${n+2}"><v>${o[e].values[n]||o[e].values[n]===0?o[e].values[n]:""}</v></c>`}t+="</row>"}))}else{t+="<sheetData>";if(!d){t+=`<row r="1" spans="1:${o.length+o[0].labels.length}">`;o[0].labels.forEach(((e,o)=>{t+=`<c r="${getExcelColName(o+1)}1" t="s"><v>0</v></c>`}));for(let e=0;e<o.length;e++){t+=`<c r="${getExcelColName(e+1+o[0].labels.length)}1" t="s"><v>${e+1}</v></c>`}t+="</row>";o[0].labels[0].forEach(((e,n)=>{t+=`<row r="${n+2}" spans="1:${o.length+o[0].labels.length}">`;for(let e=o[0].labels.length-1;e>=0;e--){t+=`<c r="${getExcelColName(o[0].labels.length-e)}${n+2}" t="s">`;t+=`<v>${o.length+n+1}</v>`;t+="</c>"}for(let e=0;e<o.length;e++){t+=`<c r="${getExcelColName(o[0].labels.length+e+1)}${n+2}"><v>${o[e].values[n]||""}</v></c>`}t+="</row>"}))}else{t+=`<row r="1" spans="1:${o.length+o[0].labels.length}">`;for(let e=0;e<o[0].labels.length;e++){t+=`<c r="${getExcelColName(e+1)}1" t="s"><v>0</v></c>`}for(let e=o[0].labels.length-1;e<o.length+o[0].labels.length-1;e++){t+=`<c r="${getExcelColName(e+o[0].labels.length)}1" t="s"><v>${e}</v></c>`}t+="</row>";const e=o.length;const n=o[0].labels[0].length;const r=o[0].labels.length;for(let a=0;a<n;a++){t+=`<row r="${a+2}" spans="1:${e+r}">`;let n=e;const i=o[0].labels.slice().reverse();i.forEach(((e,o)=>{const r=e[a];if(r){const e=o===0?1:i[o-1].filter((e=>e&&e!=="")).length;n+=e;t+=`<c r="${getExcelColName(a+1+o)}${a+2}" t="s"><v>${n}</v></c>`}}));for(let n=0;n<e;n++){t+=`<c r="${getExcelColName(r+n+1)}${a+2}"><v>${o[n].values[a]||0}</v></c>`}t+="</row>"}}}t+="</sheetData>";t+='<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>';t+="</worksheet>\n";l.file("xl/worksheets/sheet1.xml",t)}l.generateAsync({type:"base64"}).then((o=>{t.file(`ppt/embeddings/Microsoft_Excel_Worksheet${e.globalId}.xlsx`,o,{base64:true});t.file("ppt/charts/_rels/"+e.fileName+".rels",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+`<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/package" Target="../embeddings/Microsoft_Excel_Worksheet${e.globalId}.xlsx"/>`+"</Relationships>");t.file(`ppt/charts/${e.fileName}`,makeXmlCharts(e));r("")})).catch((e=>{a(e)}))}))}))}function makeXmlCharts(e){var t,o,n,r;let a='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';let i=false;{a+='<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">';a+='<c:date1904 val="0"/>';a+=`<c:roundedCorners val="${e.opts.chartArea.roundedCorners?"1":"0"}"/>`;a+="<c:chart>";if(e.opts.showTitle){a+=genXmlTitle({title:e.opts.title||"Chart Title",color:e.opts.titleColor,fontFace:e.opts.titleFontFace,fontSize:e.opts.titleFontSize||g,titleAlign:e.opts.titleAlign,titleBold:e.opts.titleBold,titlePos:e.opts.titlePos,titleRotate:e.opts.titleRotate},e.opts.x,e.opts.y);a+='<c:autoTitleDeleted val="0"/>'}else{a+='<c:autoTitleDeleted val="1"/>'}if(e.opts._type===W.BAR3D){a+=`<c:view3D><c:rotX val="${e.opts.v3DRotX}"/><c:rotY val="${e.opts.v3DRotY}"/><c:rAngAx val="${!e.opts.v3DRAngAx?0:1}"/><c:perspective val="${e.opts.v3DPerspective}"/></c:view3D>`}a+="<c:plotArea>";if(e.opts.layout){a+="<c:layout>";a+=" <c:manualLayout>";a+=' <c:layoutTarget val="inner" />';a+=' <c:xMode val="edge" />';a+=' <c:yMode val="edge" />';a+=' <c:x val="'+(e.opts.layout.x||0)+'" />';a+=' <c:y val="'+(e.opts.layout.y||0)+'" />';a+=' <c:w val="'+(e.opts.layout.w||1)+'" />';a+=' <c:h val="'+(e.opts.layout.h||1)+'" />';a+=" </c:manualLayout>";a+="</c:layout>"}else{a+="<c:layout/>"}}if(Array.isArray(e.opts._type)){e.opts._type.forEach((t=>{const o=Object.assign(Object.assign({},e.opts),t.options);const n=o.secondaryValAxis?T:C;const r=o.secondaryCatAxis?E:P;i=i||o.secondaryValAxis;a+=makeChartType(t.type,t.data,o,n,r)}))}else{a+=makeChartType(e.opts._type,e.data,e.opts,C,P)}if(e.opts._type!==W.PIE&&e.opts._type!==W.DOUGHNUT){if(e.opts.valAxes&&e.opts.valAxes.length>1&&!i){throw new Error("Secondary axis must be used by one of the multiple charts")}if(e.opts.catAxes){if(!e.opts.valAxes||e.opts.valAxes.length!==e.opts.catAxes.length){throw new Error("There must be the same number of value and category axes.")}a+=makeCatAxis(Object.assign(Object.assign({},e.opts),e.opts.catAxes[0]),P,C)}else{a+=makeCatAxis(e.opts,P,C)}if(e.opts.valAxes){a+=makeValAxis(Object.assign(Object.assign({},e.opts),e.opts.valAxes[0]),C);if(e.opts.valAxes[1]){a+=makeValAxis(Object.assign(Object.assign({},e.opts),e.opts.valAxes[1]),T)}}else{a+=makeValAxis(e.opts,C);if(e.opts._type===W.BAR3D){a+=makeSerAxis(e.opts,_,C)}}if(((t=e.opts)===null||t===void 0?void 0:t.catAxes)&&((o=e.opts)===null||o===void 0?void 0:o.catAxes[1])){a+=makeCatAxis(Object.assign(Object.assign({},e.opts),e.opts.catAxes[1]),E,T)}}{if(e.opts.showDataTable){a+="<c:dTable>";a+=` <c:showHorzBorder val="${!e.opts.showDataTableHorzBorder?0:1}"/>`;a+=` <c:showVertBorder val="${!e.opts.showDataTableVertBorder?0:1}"/>`;a+=` <c:showOutline val="${!e.opts.showDataTableOutline?0:1}"/>`;a+=` <c:showKeys val="${!e.opts.showDataTableKeys?0:1}"/>`;a+=" <c:spPr>";a+=" <a:noFill/>";a+=' <a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="15000"/><a:lumOff val="85000"/></a:schemeClr></a:solidFill><a:round/></a:ln>';a+=" <a:effectLst/>";a+=" </c:spPr>";a+=" <c:txPr>";a+=' <a:bodyPr rot="0" spcFirstLastPara="1" vertOverflow="ellipsis" vert="horz" wrap="square" anchor="ctr" anchorCtr="1"/>';a+=" <a:lstStyle/>";a+=" <a:p>";a+=' <a:pPr rtl="0">';a+=` <a:defRPr sz="${Math.round((e.opts.dataTableFontSize||m)*100)}" b="0" i="0" u="none" strike="noStrike" kern="1200" baseline="0">`;a+=' <a:solidFill><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></a:solidFill>';a+=' <a:latin typeface="+mn-lt"/>';a+=' <a:ea typeface="+mn-ea"/>';a+=' <a:cs typeface="+mn-cs"/>';a+=" </a:defRPr>";a+=" </a:pPr>";a+=' <a:endParaRPr lang="en-US"/>';a+=" </a:p>";a+=" </c:txPr>";a+="</c:dTable>"}a+=" <c:spPr>";a+=((n=e.opts.plotArea.fill)===null||n===void 0?void 0:n.color)?genXmlColorSelection(e.opts.plotArea.fill):"<a:noFill/>";a+=e.opts.plotArea.border?`<a:ln w="${valToPts(e.opts.plotArea.border.pt)}" cap="flat">${genXmlColorSelection(e.opts.plotArea.border.color)}</a:ln>`:"<a:ln><a:noFill/></a:ln>";a+=" <a:effectLst/>";a+=" </c:spPr>";a+="</c:plotArea>";if(e.opts.showLegend){a+="<c:legend>";a+='<c:legendPos val="'+e.opts.legendPos+'"/>';a+='<c:overlay val="0"/>';if(e.opts.legendFontFace||e.opts.legendFontSize||e.opts.legendColor){a+="<c:txPr>";a+=" <a:bodyPr/>";a+=" <a:lstStyle/>";a+=" <a:p>";a+=" <a:pPr>";a+=e.opts.legendFontSize?`<a:defRPr sz="${Math.round(Number(e.opts.legendFontSize)*100)}">`:"<a:defRPr>";if(e.opts.legendColor)a+=genXmlColorSelection(e.opts.legendColor);if(e.opts.legendFontFace)a+='<a:latin typeface="'+e.opts.legendFontFace+'"/>';if(e.opts.legendFontFace)a+='<a:cs typeface="'+e.opts.legendFontFace+'"/>';a+=" </a:defRPr>";a+=" </a:pPr>";a+=' <a:endParaRPr lang="en-US"/>';a+=" </a:p>";a+="</c:txPr>"}a+="</c:legend>"}}a+=' <c:plotVisOnly val="1"/>';a+=' <c:dispBlanksAs val="'+e.opts.displayBlanksAs+'"/>';if(e.opts._type===W.SCATTER)a+='<c:showDLblsOverMax val="1"/>';a+="</c:chart>";a+="<c:spPr>";a+=((r=e.opts.chartArea.fill)===null||r===void 0?void 0:r.color)?genXmlColorSelection(e.opts.chartArea.fill):"<a:noFill/>";a+=e.opts.chartArea.border?`<a:ln w="${valToPts(e.opts.chartArea.border.pt)}" cap="flat">${genXmlColorSelection(e.opts.chartArea.border.color)}</a:ln>`:"<a:ln><a:noFill/></a:ln>";a+=" <a:effectLst/>";a+="</c:spPr>";a+='<c:externalData r:id="rId1"><c:autoUpdate val="0"/></c:externalData>';a+="</c:chartSpace>";return a}function makeChartType(e,t,o,n,r,a){let i=-1;let s=1;let l=null;let c="";switch(e){case W.AREA:case W.BAR:case W.BAR3D:case W.LINE:case W.RADAR:c+=`<c:${e}Chart>`;if(e===W.AREA&&o.barGrouping==="stacked"){c+='<c:grouping val="'+o.barGrouping+'"/>'}if(e===W.BAR||e===W.BAR3D){c+='<c:barDir val="'+o.barDir+'"/>';c+='<c:grouping val="'+(o.barGrouping||"clustered")+'"/>'}if(e===W.RADAR){c+='<c:radarStyle val="'+o.radarStyle+'"/>'}c+='<c:varyColors val="0"/>';t.forEach((n=>{var r;i++;c+="<c:ser>";c+=` <c:idx val="${n._dataIndex}"/><c:order val="${n._dataIndex}"/>`;c+=" <c:tx>";c+=" <c:strRef>";c+=" <c:f>Sheet1!$"+getExcelColName(n._dataIndex+n.labels.length+1)+"$1</c:f>";c+=' <c:strCache><c:ptCount val="1"/><c:pt idx="0"><c:v>'+encodeXmlEntities(n.name)+"</c:v></c:pt></c:strCache>";c+=" </c:strRef>";c+=" </c:tx>";const a=o.chartColors?o.chartColors[i%o.chartColors.length]:null;c+=" <c:spPr>";if(a==="transparent"){c+="<a:noFill/>"}else if(o.chartColorsOpacity){c+="<a:solidFill>"+createColorElement(a,`<a:alpha val="${Math.round(o.chartColorsOpacity*1e3)}"/>`)+"</a:solidFill>"}else{c+="<a:solidFill>"+createColorElement(a)+"</a:solidFill>"}if(e===W.LINE||e===W.RADAR){if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else{c+=`<a:ln w="${valToPts(o.lineSize)}" cap="${createLineCap(o.lineCap)}"><a:solidFill>${createColorElement(a)}</a:solidFill>`;c+='<a:prstDash val="'+(o.lineDash||"solid")+'"/><a:round/></a:ln>'}}else if(o.dataBorder){c+=`<a:ln w="${valToPts(o.dataBorder.pt)}" cap="${createLineCap(o.lineCap)}"><a:solidFill>${createColorElement(o.dataBorder.color)}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`}c+=createShadowElement(o.shadow,w);c+=" </c:spPr>";c+=' <c:invertIfNegative val="0"/>';if(e!==W.RADAR){c+="<c:dLbls>";c+=`<c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;if(o.dataLabelBkgrdColors)c+=`<c:spPr><a:solidFill>${createColorElement(a)}</a:solidFill></c:spPr>`;c+="<c:txPr><a:bodyPr/><a:lstStyle/><a:p><a:pPr>";c+=`<a:defRPr b="${o.dataLabelFontBold?1:0}" i="${o.dataLabelFontItalic?1:0}" strike="noStrike" sz="${Math.round((o.dataLabelFontSize||m)*100)}" u="none">`;c+=`<a:solidFill>${createColorElement(o.dataLabelColor||h)}</a:solidFill>`;c+=`<a:latin typeface="${o.dataLabelFontFace||"Arial"}"/>`;c+="</a:defRPr></a:pPr></a:p></c:txPr>";if(o.dataLabelPosition)c+=`<c:dLblPos val="${o.dataLabelPosition}"/>`;c+='<c:showLegendKey val="0"/>';c+=`<c:showVal val="${o.showValue?"1":"0"}"/>`;c+=`<c:showCatName val="0"/><c:showSerName val="${o.showSerName?"1":"0"}"/><c:showPercent val="0"/><c:showBubbleSize val="0"/>`;c+=`<c:showLeaderLines val="${o.showLeaderLines?"1":"0"}"/>`;c+="</c:dLbls>"}if(e===W.LINE||e===W.RADAR){c+="<c:marker>";c+=' <c:symbol val="'+o.lineDataSymbol+'"/>';if(o.lineDataSymbolSize)c+=`<c:size val="${o.lineDataSymbolSize}"/>`;c+=" <c:spPr>";c+=` <a:solidFill>${createColorElement(o.chartColors[n._dataIndex+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):n._dataIndex])}</a:solidFill>`;c+=` <a:ln w="${o.lineDataSymbolLineSize}" cap="flat"><a:solidFill>${createColorElement(o.lineDataSymbolLineColor||a)}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`;c+=" <a:effectLst/>";c+=" </c:spPr>";c+="</c:marker>"}if((e===W.BAR||e===W.BAR3D)&&t.length===1&&(o.chartColors&&o.chartColors!==I&&o.chartColors.length>1||((r=o.invertedColors)===null||r===void 0?void 0:r.length))){n.values.forEach(((t,n)=>{const r=t<0?o.invertedColors||o.chartColors||I:o.chartColors||[];c+=" <c:dPt>";c+=` <c:idx val="${n}"/>`;c+=' <c:invertIfNegative val="0"/>';c+=' <c:bubble3D val="0"/>';c+=" <c:spPr>";if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else if(e===W.BAR){c+="<a:solidFill>";c+=' <a:srgbClr val="'+r[n%r.length]+'"/>';c+="</a:solidFill>"}else{c+="<a:ln>";c+=" <a:solidFill>";c+=' <a:srgbClr val="'+r[n%r.length]+'"/>';c+=" </a:solidFill>";c+="</a:ln>"}c+=createShadowElement(o.shadow,w);c+=" </c:spPr>";c+=" </c:dPt>"}))}{c+="<c:cat>";if(o.catLabelFormatCode){c+=" <c:numRef>";c+=` <c:f>Sheet1!$A$2:$A$${n.labels[0].length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>"+(o.catLabelFormatCode||"General")+"</c:formatCode>";c+=` <c:ptCount val="${n.labels[0].length}"/>`;n.labels[0].forEach(((e,t)=>c+=`<c:pt idx="${t}"><c:v>${encodeXmlEntities(e)}</c:v></c:pt>`));c+=" </c:numCache>";c+=" </c:numRef>"}else{c+=" <c:multiLvlStrRef>";c+=` <c:f>Sheet1!$A$2:$${getExcelColName(n.labels.length)}$${n.labels[0].length+1}</c:f>`;c+=" <c:multiLvlStrCache>";c+=` <c:ptCount val="${n.labels[0].length}"/>`;n.labels.forEach((e=>{c+="<c:lvl>";e.forEach(((e,t)=>c+=`<c:pt idx="${t}"><c:v>${encodeXmlEntities(e)}</c:v></c:pt>`));c+="</c:lvl>"}));c+=" </c:multiLvlStrCache>";c+=" </c:multiLvlStrRef>"}c+="</c:cat>"}{c+="<c:val>";c+=" <c:numRef>";c+=`<c:f>Sheet1!$${getExcelColName(n._dataIndex+n.labels.length+1)}$2:$${getExcelColName(n._dataIndex+n.labels.length+1)}$${n.labels[0].length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>"+(o.valLabelFormatCode||o.dataTableFormatCode||"General")+"</c:formatCode>";c+=` <c:ptCount val="${n.labels[0].length}"/>`;n.values.forEach(((e,t)=>c+=`<c:pt idx="${t}"><c:v>${e||e===0?e:""}</c:v></c:pt>`));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:val>"}if(e===W.LINE)c+='<c:smooth val="'+(o.lineSmooth?"1":"0")+'"/>';c+="</c:ser>"}));{c+=" <c:dLbls>";c+=` <c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+=" <c:txPr>";c+=" <a:bodyPr/>";c+=" <a:lstStyle/>";c+=" <a:p><a:pPr>";c+=` <a:defRPr b="${o.dataLabelFontBold?1:0}" i="${o.dataLabelFontItalic?1:0}" strike="noStrike" sz="${Math.round((o.dataLabelFontSize||m)*100)}" u="none">`;c+=" <a:solidFill>"+createColorElement(o.dataLabelColor||h)+"</a:solidFill>";c+=' <a:latin typeface="'+(o.dataLabelFontFace||"Arial")+'"/>';c+=" </a:defRPr>";c+=" </a:pPr></a:p>";c+=" </c:txPr>";if(o.dataLabelPosition)c+=' <c:dLblPos val="'+o.dataLabelPosition+'"/>';c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="'+(o.showValue?"1":"0")+'"/>';c+=' <c:showCatName val="0"/>';c+=' <c:showSerName val="'+(o.showSerName?"1":"0")+'"/>';c+=' <c:showPercent val="0"/>';c+=' <c:showBubbleSize val="0"/>';c+=` <c:showLeaderLines val="${o.showLeaderLines?"1":"0"}"/>`;c+=" </c:dLbls>"}if(e===W.BAR){c+=` <c:gapWidth val="${o.barGapWidthPct}"/>`;c+=` <c:overlap val="${(o.barGrouping||"").includes("tacked")?100:o.barOverlapPct?o.barOverlapPct:0}"/>`}else if(e===W.BAR3D){c+=` <c:gapWidth val="${o.barGapWidthPct}"/>`;c+=` <c:gapDepth val="${o.barGapDepthPct}"/>`;c+=' <c:shape val="'+o.bar3DShape+'"/>'}else if(e===W.LINE){c+=' <c:marker val="1"/>'}c+=`<c:axId val="${r}"/><c:axId val="${n}"/><c:axId val="${_}"/>`;c+=`</c:${e}Chart>`;break;case W.SCATTER:c+="<c:"+e+"Chart>";c+='<c:scatterStyle val="lineMarker"/>';c+='<c:varyColors val="0"/>';i=-1;t.filter(((e,t)=>t>0)).forEach(((e,n)=>{i++;c+="<c:ser>";c+=` <c:idx val="${n}"/>`;c+=` <c:order val="${n}"/>`;c+=" <c:tx>";c+=" <c:strRef>";c+=` <c:f>Sheet1!$${getExcelColName(n+2)}$1</c:f>`;c+=' <c:strCache><c:ptCount val="1"/><c:pt idx="0"><c:v>'+encodeXmlEntities(e.name)+"</c:v></c:pt></c:strCache>";c+=" </c:strRef>";c+=" </c:tx>";c+=" <c:spPr>";{const e=o.chartColors[i%o.chartColors.length];if(e==="transparent"){c+="<a:noFill/>"}else if(o.chartColorsOpacity){c+="<a:solidFill>"+createColorElement(e,'<a:alpha val="'+Math.round(o.chartColorsOpacity*1e3).toString()+'"/>')+"</a:solidFill>"}else{c+="<a:solidFill>"+createColorElement(e)+"</a:solidFill>"}if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else{c+=`<a:ln w="${valToPts(o.lineSize)}" cap="${createLineCap(o.lineCap)}"><a:solidFill>${createColorElement(e)}</a:solidFill>`;c+=`<a:prstDash val="${o.lineDash||"solid"}"/><a:round/></a:ln>`}c+=createShadowElement(o.shadow,w)}c+=" </c:spPr>";{c+="<c:marker>";c+=' <c:symbol val="'+o.lineDataSymbol+'"/>';if(o.lineDataSymbolSize){c+=`<c:size val="${o.lineDataSymbolSize}"/>`}c+="<c:spPr>";c+=`<a:solidFill>${createColorElement(o.chartColors[n+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):n])}</a:solidFill>`;c+=`<a:ln w="${o.lineDataSymbolLineSize}" cap="flat"><a:solidFill>${createColorElement(o.lineDataSymbolLineColor||o.chartColors[i%o.chartColors.length])}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`;c+="<a:effectLst/>";c+="</c:spPr>";c+="</c:marker>"}if(o.showLabel){const t=getUuid("-xxxx-xxxx-xxxx-xxxxxxxxxxxx");if(e.labels[0]&&(o.dataLabelFormatScatter==="custom"||o.dataLabelFormatScatter==="customXY")){c+="<c:dLbls>";e.labels[0].forEach(((n,r)=>{if(o.dataLabelFormatScatter==="custom"||o.dataLabelFormatScatter==="customXY"){c+=" <c:dLbl>";c+=` <c:idx val="${r}"/>`;c+=" <c:tx>";c+=" <c:rich>";c+=" <a:bodyPr>";c+=" <a:spAutoFit/>";c+=" </a:bodyPr>";c+=" <a:lstStyle/>";c+=" <a:p>";c+=" <a:pPr>";c+=" <a:defRPr/>";c+=" </a:pPr>";c+=" <a:r>";c+=' <a:rPr lang="'+(o.lang||"en-US")+'" dirty="0"/>';c+=" <a:t>"+encodeXmlEntities(n)+"</a:t>";c+=" </a:r>";if(o.dataLabelFormatScatter==="customXY"&&!/^ *$/.test(n)){c+=" <a:r>";c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0" dirty="0"/>';c+=" <a:t> (</a:t>";c+=" </a:r>";c+=' <a:fld id="{'+getUuid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")+'}" type="XVALUE">';c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0"/>';c+=" <a:pPr>";c+=" <a:defRPr/>";c+=" </a:pPr>";c+=" <a:t>["+encodeXmlEntities(e.name)+"</a:t>";c+=" </a:fld>";c+=" <a:r>";c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0" dirty="0"/>';c+=" <a:t>, </a:t>";c+=" </a:r>";c+=' <a:fld id="{'+getUuid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")+'}" type="YVALUE">';c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0"/>';c+=" <a:pPr>";c+=" <a:defRPr/>";c+=" </a:pPr>";c+=" <a:t>["+encodeXmlEntities(e.name)+"]</a:t>";c+=" </a:fld>";c+=" <a:r>";c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0" dirty="0"/>';c+=" <a:t>)</a:t>";c+=" </a:r>";c+=' <a:endParaRPr lang="'+(o.lang||"en-US")+'" dirty="0"/>'}c+=" </a:p>";c+=" </c:rich>";c+=" </c:tx>";c+=" <c:spPr>";c+=" <a:noFill/>";c+=" <a:ln>";c+=" <a:noFill/>";c+=" </a:ln>";c+=" <a:effectLst/>";c+=" </c:spPr>";if(o.dataLabelPosition)c+=' <c:dLblPos val="'+o.dataLabelPosition+'"/>';c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="0"/>';c+=' <c:showCatName val="0"/>';c+=' <c:showSerName val="0"/>';c+=' <c:showPercent val="0"/>';c+=' <c:showBubbleSize val="0"/>';c+=' <c:showLeaderLines val="1"/>';c+=" <c:extLst>";c+=' <c:ext uri="{CE6537A1-D6FC-4f65-9D91-7224C49458BB}" xmlns:c15="http://schemas.microsoft.com/office/drawing/2012/chart"/>';c+=' <c:ext uri="{C3380CC4-5D6E-409C-BE32-E72D297353CC}" xmlns:c16="http://schemas.microsoft.com/office/drawing/2014/chart">';c+=` <c16:uniqueId val="{${"00000000".substring(0,8-(r+1).toString().length).toString()}${r+1}${t}}"/>`;c+=" </c:ext>";c+=" </c:extLst>";c+="</c:dLbl>"}}));c+="</c:dLbls>"}if(o.dataLabelFormatScatter==="XY"){c+="<c:dLbls>";c+=" <c:spPr>";c+=" <a:noFill/>";c+=" <a:ln>";c+=" <a:noFill/>";c+=" </a:ln>";c+=" <a:effectLst/>";c+=" </c:spPr>";c+=" <c:txPr>";c+=" <a:bodyPr>";c+=" <a:spAutoFit/>";c+=" </a:bodyPr>";c+=" <a:lstStyle/>";c+=" <a:p>";c+=" <a:pPr>";c+=" <a:defRPr/>";c+=" </a:pPr>";c+=' <a:endParaRPr lang="en-US"/>';c+=" </a:p>";c+=" </c:txPr>";if(o.dataLabelPosition)c+=' <c:dLblPos val="'+o.dataLabelPosition+'"/>';c+=' <c:showLegendKey val="0"/>';c+=` <c:showVal val="${o.showLabel?"1":"0"}"/>`;c+=` <c:showCatName val="${o.showLabel?"1":"0"}"/>`;c+=` <c:showSerName val="${o.showSerName?"1":"0"}"/>`;c+=' <c:showPercent val="0"/>';c+=' <c:showBubbleSize val="0"/>';c+=" <c:extLst>";c+=' <c:ext uri="{CE6537A1-D6FC-4f65-9D91-7224C49458BB}" xmlns:c15="http://schemas.microsoft.com/office/drawing/2012/chart">';c+=' <c15:showLeaderLines val="1"/>';c+=" </c:ext>";c+=" </c:extLst>";c+="</c:dLbls>"}}if(t.length===1&&o.chartColors!==I){e.values.forEach(((e,t)=>{const n=e<0?o.invertedColors||o.chartColors||I:o.chartColors||[];c+=" <c:dPt>";c+=` <c:idx val="${t}"/>`;c+=' <c:invertIfNegative val="0"/>';c+=' <c:bubble3D val="0"/>';c+=" <c:spPr>";if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else{c+="<a:solidFill>";c+=' <a:srgbClr val="'+n[t%n.length]+'"/>';c+="</a:solidFill>"}c+=createShadowElement(o.shadow,w);c+=" </c:spPr>";c+=" </c:dPt>"}))}{c+="<c:xVal>";c+=" <c:numRef>";c+=` <c:f>Sheet1!$A$2:$A$${t[0].values.length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${t[0].values.length}"/>`;t[0].values.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${e||e===0?e:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:xVal>";c+="<c:yVal>";c+=" <c:numRef>";c+=` <c:f>Sheet1!$${getExcelColName(n+2)}$2:$${getExcelColName(n+2)}$${t[0].values.length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${t[0].values.length}"/>`;t[0].values.forEach(((t,o)=>{c+=`<c:pt idx="${o}"><c:v>${e.values[o]||e.values[o]===0?e.values[o]:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:yVal>"}c+='<c:smooth val="'+(o.lineSmooth?"1":"0")+'"/>';c+="</c:ser>"}));{c+=" <c:dLbls>";c+=` <c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+=" <c:txPr>";c+=" <a:bodyPr/>";c+=" <a:lstStyle/>";c+=" <a:p><a:pPr>";c+=` <a:defRPr b="${o.dataLabelFontBold?"1":"0"}" i="${o.dataLabelFontItalic?"1":"0"}" strike="noStrike" sz="${Math.round((o.dataLabelFontSize||m)*100)}" u="none">`;c+=" <a:solidFill>"+createColorElement(o.dataLabelColor||h)+"</a:solidFill>";c+=' <a:latin typeface="'+(o.dataLabelFontFace||"Arial")+'"/>';c+=" </a:defRPr>";c+=" </a:pPr></a:p>";c+=" </c:txPr>";if(o.dataLabelPosition)c+=' <c:dLblPos val="'+o.dataLabelPosition+'"/>';c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="'+(o.showValue?"1":"0")+'"/>';c+=' <c:showCatName val="0"/>';c+=' <c:showSerName val="'+(o.showSerName?"1":"0")+'"/>';c+=' <c:showPercent val="0"/>';c+=' <c:showBubbleSize val="0"/>';c+=" </c:dLbls>"}c+=`<c:axId val="${r}"/><c:axId val="${n}"/>`;c+="</c:"+e+"Chart>";break;case W.BUBBLE:case W.BUBBLE3D:c+="<c:bubbleChart>";c+='<c:varyColors val="0"/>';i=-1;t.filter(((e,t)=>t>0)).forEach(((n,r)=>{i++;c+="<c:ser>";c+=` <c:idx val="${r}"/>`;c+=` <c:order val="${r}"/>`;c+=" <c:tx>";c+=" <c:strRef>";c+=" <c:f>Sheet1!$"+getExcelColName(s+1)+"$1</c:f>";c+=' <c:strCache><c:ptCount val="1"/><c:pt idx="0"><c:v>'+encodeXmlEntities(n.name)+"</c:v></c:pt></c:strCache>";c+=" </c:strRef>";c+=" </c:tx>";{c+="<c:spPr>";const e=o.chartColors[i%o.chartColors.length];if(e==="transparent"){c+="<a:noFill/>"}else if(o.chartColorsOpacity){c+=`<a:solidFill>${createColorElement(e,'<a:alpha val="'+Math.round(o.chartColorsOpacity*1e3).toString()+'"/>')}</a:solidFill>`}else{c+="<a:solidFill>"+createColorElement(e)+"</a:solidFill>"}if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else if(o.dataBorder){c+=`<a:ln w="${valToPts(o.dataBorder.pt)}" cap="flat"><a:solidFill>${createColorElement(o.dataBorder.color)}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`}else{c+=`<a:ln w="${valToPts(o.lineSize)}" cap="flat"><a:solidFill>${createColorElement(e)}</a:solidFill>`;c+=`<a:prstDash val="${o.lineDash||"solid"}"/><a:round/></a:ln>`}c+=createShadowElement(o.shadow,w);c+="</c:spPr>"}{c+="<c:xVal>";c+=" <c:numRef>";c+=` <c:f>Sheet1!$A$2:$A$${t[0].values.length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${t[0].values.length}"/>`;t[0].values.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${e||e===0?e:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:xVal>";c+="<c:yVal>";c+=" <c:numRef>";c+=`<c:f>Sheet1!$${getExcelColName(s+1)}$2:$${getExcelColName(s+1)}$${t[0].values.length+1}</c:f>`;s++;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${t[0].values.length}"/>`;t[0].values.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${n.values[t]||n.values[t]===0?n.values[t]:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:yVal>"}c+=" <c:bubbleSize>";c+=" <c:numRef>";c+=`<c:f>Sheet1!$${getExcelColName(s+1)}$2:$${getExcelColName(s+1)}$${n.sizes.length+1}</c:f>`;s++;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${n.sizes.length}"/>`;n.sizes.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${e||""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+=" </c:bubbleSize>";c+=' <c:bubble3D val="'+(e===W.BUBBLE3D?"1":"0")+'"/>';c+="</c:ser>"}));{c+="<c:dLbls>";c+=`<c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+="<c:txPr><a:bodyPr/><a:lstStyle/><a:p><a:pPr>";c+=`<a:defRPr b="${o.dataLabelFontBold?1:0}" i="${o.dataLabelFontItalic?1:0}" strike="noStrike" sz="${Math.round(Math.round(o.dataLabelFontSize||m)*100)}" u="none">`;c+=`<a:solidFill>${createColorElement(o.dataLabelColor||h)}</a:solidFill>`;c+=`<a:latin typeface="${o.dataLabelFontFace||"Arial"}"/>`;c+="</a:defRPr></a:pPr></a:p></c:txPr>";if(o.dataLabelPosition)c+=`<c:dLblPos val="${o.dataLabelPosition}"/>`;c+='<c:showLegendKey val="0"/>';c+=`<c:showVal val="${o.showValue?"1":"0"}"/>`;c+=`<c:showCatName val="0"/><c:showSerName val="${o.showSerName?"1":"0"}"/><c:showPercent val="0"/><c:showBubbleSize val="0"/>`;c+="<c:extLst>";c+=' <c:ext uri="{CE6537A1-D6FC-4f65-9D91-7224C49458BB}" xmlns:c15="http://schemas.microsoft.com/office/drawing/2012/chart">';c+=' <c15:showLeaderLines val="'+(o.showLeaderLines?"1":"0")+'"/>';c+=" </c:ext>";c+="</c:extLst>";c+="</c:dLbls>"}c+=`<c:axId val="${r}"/><c:axId val="${n}"/>`;c+="</c:bubbleChart>";break;case W.DOUGHNUT:case W.PIE:l=t[0];c+="<c:"+e+"Chart>";c+=' <c:varyColors val="1"/>';c+="<c:ser>";c+=' <c:idx val="0"/>';c+=' <c:order val="0"/>';c+=" <c:tx>";c+=" <c:strRef>";c+=" <c:f>Sheet1!$B$1</c:f>";c+=" <c:strCache>";c+=' <c:ptCount val="1"/>';c+=' <c:pt idx="0"><c:v>'+encodeXmlEntities(l.name)+"</c:v></c:pt>";c+=" </c:strCache>";c+=" </c:strRef>";c+=" </c:tx>";c+=" <c:spPr>";c+=' <a:solidFill><a:schemeClr val="accent1"/></a:solidFill>';c+=' <a:ln w="9525" cap="flat"><a:solidFill><a:srgbClr val="F9F9F9"/></a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>';if(o.dataNoEffects){c+="<a:effectLst/>"}else{c+=createShadowElement(o.shadow,w)}c+=" </c:spPr>";l.labels[0].forEach(((e,t)=>{c+="<c:dPt>";c+=` <c:idx val="${t}"/>`;c+=' <c:bubble3D val="0"/>';c+=" <c:spPr>";c+=`<a:solidFill>${createColorElement(o.chartColors[t+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):t])}</a:solidFill>`;if(o.dataBorder){c+=`<a:ln w="${valToPts(o.dataBorder.pt)}" cap="flat"><a:solidFill>${createColorElement(o.dataBorder.color)}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`}c+=createShadowElement(o.shadow,w);c+=" </c:spPr>";c+="</c:dPt>"}));c+="<c:dLbls>";l.labels[0].forEach(((t,n)=>{c+="<c:dLbl>";c+=` <c:idx val="${n}"/>`;c+=` <c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+=" <c:spPr/><c:txPr>";c+=" <a:bodyPr/><a:lstStyle/>";c+=" <a:p><a:pPr>";c+=` <a:defRPr sz="${Math.round((o.dataLabelFontSize||m)*100)}" b="${o.dataLabelFontBold?1:0}" i="${o.dataLabelFontItalic?1:0}" u="none" strike="noStrike">`;c+=" <a:solidFill>"+createColorElement(o.dataLabelColor||h)+"</a:solidFill>";c+=` <a:latin typeface="${o.dataLabelFontFace||"Arial"}"/>`;c+=" </a:defRPr>";c+=" </a:pPr></a:p>";c+=" </c:txPr>";if(e===W.PIE&&o.dataLabelPosition)c+=`<c:dLblPos val="${o.dataLabelPosition}"/>`;c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="'+(o.showValue?"1":"0")+'"/>';c+=' <c:showCatName val="'+(o.showLabel?"1":"0")+'"/>';c+=' <c:showSerName val="'+(o.showSerName?"1":"0")+'"/>';c+=' <c:showPercent val="'+(o.showPercent?"1":"0")+'"/>';c+=' <c:showBubbleSize val="0"/>';c+=" </c:dLbl>"}));c+=` <c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+=" <c:txPr>";c+=" <a:bodyPr/>";c+=" <a:lstStyle/>";c+=" <a:p>";c+=" <a:pPr>";c+=` <a:defRPr sz="1800" b="${o.dataLabelFontBold?"1":"0"}" i="${o.dataLabelFontItalic?"1":"0"}" u="none" strike="noStrike">`;c+=' <a:solidFill><a:srgbClr val="000000"/></a:solidFill><a:latin typeface="Arial"/>';c+=" </a:defRPr>";c+=" </a:pPr>";c+=" </a:p>";c+=" </c:txPr>";c+=e===W.PIE?'<c:dLblPos val="ctr"/>':"";c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="0"/>';c+=' <c:showCatName val="1"/>';c+=' <c:showSerName val="0"/>';c+=' <c:showPercent val="1"/>';c+=' <c:showBubbleSize val="0"/>';c+=` <c:showLeaderLines val="${o.showLeaderLines?"1":"0"}"/>`;c+="</c:dLbls>";c+="<c:cat>";c+=" <c:strRef>";c+=` <c:f>Sheet1!$A$2:$A$${l.labels[0].length+1}</c:f>`;c+=" <c:strCache>";c+=` <c:ptCount val="${l.labels[0].length}"/>`;l.labels[0].forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${encodeXmlEntities(e)}</c:v></c:pt>`}));c+=" </c:strCache>";c+=" </c:strRef>";c+="</c:cat>";c+=" <c:val>";c+=" <c:numRef>";c+=` <c:f>Sheet1!$B$2:$B$${l.labels[0].length+1}</c:f>`;c+=" <c:numCache>";c+=` <c:ptCount val="${l.labels[0].length}"/>`;l.values.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${e||e===0?e:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+=" </c:val>";c+=" </c:ser>";c+=` <c:firstSliceAng val="${o.firstSliceAng?Math.round(o.firstSliceAng):0}"/>`;if(e===W.DOUGHNUT)c+=`<c:holeSize val="${typeof o.holeSize==="number"?o.holeSize:"50"}"/>`;c+="</c:"+e+"Chart>";break;default:c+="";break}return c}function makeCatAxis(e,t,o){let n="";if(e._type===W.SCATTER||e._type===W.BUBBLE||e._type===W.BUBBLE3D){n+="<c:valAx>"}else{n+="<c:"+(e.catLabelFormatCode?"dateAx":"catAx")+">"}n+=' <c:axId val="'+t+'"/>';n+=" <c:scaling>";n+='<c:orientation val="'+(e.catAxisOrientation||(e.barDir==="col"?"minMax":"minMax"))+'"/>';if(e.catAxisMaxVal||e.catAxisMaxVal===0)n+=`<c:max val="${e.catAxisMaxVal}"/>`;if(e.catAxisMinVal||e.catAxisMinVal===0)n+=`<c:min val="${e.catAxisMinVal}"/>`;n+="</c:scaling>";n+=' <c:delete val="'+(e.catAxisHidden?"1":"0")+'"/>';n+=' <c:axPos val="'+(e.barDir==="col"?"b":"l")+'"/>';n+=e.catGridLine.style!=="none"?createGridLineElement(e.catGridLine):"";if(e.showCatAxisTitle){n+=genXmlTitle({color:e.catAxisTitleColor,fontFace:e.catAxisTitleFontFace,fontSize:e.catAxisTitleFontSize,titleRotate:e.catAxisTitleRotate,title:e.catAxisTitle||"Axis Title"})}if(e._type===W.SCATTER||e._type===W.BUBBLE||e._type===W.BUBBLE3D){n+=' <c:numFmt formatCode="'+(e.valAxisLabelFormatCode?encodeXmlEntities(e.valAxisLabelFormatCode):"General")+'" sourceLinked="1"/>'}else{n+=' <c:numFmt formatCode="'+(encodeXmlEntities(e.catLabelFormatCode)||"General")+'" sourceLinked="1"/>'}if(e._type===W.SCATTER){n+=' <c:majorTickMark val="none"/>';n+=' <c:minorTickMark val="none"/>';n+=' <c:tickLblPos val="nextTo"/>'}else{n+=' <c:majorTickMark val="'+(e.catAxisMajorTickMark||"out")+'"/>';n+=' <c:minorTickMark val="'+(e.catAxisMinorTickMark||"none")+'"/>';n+=' <c:tickLblPos val="'+(e.catAxisLabelPos||(e.barDir==="col"?"low":"nextTo"))+'"/>'}n+=" <c:spPr>";n+=` <a:ln w="${e.catAxisLineSize?valToPts(e.catAxisLineSize):a}" cap="flat">`;n+=!e.catAxisLineShow?"<a:noFill/>":"<a:solidFill>"+createColorElement(e.catAxisLineColor||f.color)+"</a:solidFill>";n+=' <a:prstDash val="'+(e.catAxisLineStyle||"solid")+'"/>';n+=" <a:round/>";n+=" </a:ln>";n+=" </c:spPr>";n+=" <c:txPr>";if(e.catAxisLabelRotate){n+=`<a:bodyPr rot="${convertRotationDegrees(e.catAxisLabelRotate)}"/>`}else{n+="<a:bodyPr/>"}n+=" <a:lstStyle/>";n+=" <a:p>";n+=" <a:pPr>";n+=` <a:defRPr sz="${Math.round((e.catAxisLabelFontSize||m)*100)}" b="${e.catAxisLabelFontBold?1:0}" i="${e.catAxisLabelFontItalic?1:0}" u="none" strike="noStrike">`;n+=" <a:solidFill>"+createColorElement(e.catAxisLabelColor||h)+"</a:solidFill>";n+=' <a:latin typeface="'+(e.catAxisLabelFontFace||"Arial")+'"/>';n+=" </a:defRPr>";n+=" </a:pPr>";n+=' <a:endParaRPr lang="'+(e.lang||"en-US")+'"/>';n+=" </a:p>";n+=" </c:txPr>";n+=' <c:crossAx val="'+o+'"/>';n+=` <c:${typeof e.valAxisCrossesAt==="number"?"crossesAt":"crosses"} val="${e.valAxisCrossesAt||"autoZero"}"/>`;n+=' <c:auto val="1"/>';n+=' <c:lblAlgn val="ctr"/>';n+=` <c:noMultiLvlLbl val="${e.catAxisMultiLevelLabels?0:1}"/>`;if(e.catAxisLabelFrequency)n+=' <c:tickLblSkip val="'+e.catAxisLabelFrequency+'"/>';if(e.catLabelFormatCode||e._type===W.SCATTER||e._type===W.BUBBLE||e._type===W.BUBBLE3D){if(e.catLabelFormatCode){["catAxisBaseTimeUnit","catAxisMajorTimeUnit","catAxisMinorTimeUnit"].forEach((t=>{if(e[t]&&(typeof e[t]!=="string"||!["days","months","years"].includes(e[t].toLowerCase()))){console.warn(`"${t}" must be one of: 'days','months','years' !`);e[t]=null}}));if(e.catAxisBaseTimeUnit)n+='<c:baseTimeUnit val="'+e.catAxisBaseTimeUnit.toLowerCase()+'"/>';if(e.catAxisMajorTimeUnit)n+='<c:majorTimeUnit val="'+e.catAxisMajorTimeUnit.toLowerCase()+'"/>';if(e.catAxisMinorTimeUnit)n+='<c:minorTimeUnit val="'+e.catAxisMinorTimeUnit.toLowerCase()+'"/>'}if(e.catAxisMajorUnit)n+=`<c:majorUnit val="${e.catAxisMajorUnit}"/>`;if(e.catAxisMinorUnit)n+=`<c:minorUnit val="${e.catAxisMinorUnit}"/>`}if(e._type===W.SCATTER||e._type===W.BUBBLE||e._type===W.BUBBLE3D){n+="</c:valAx>"}else{n+="</c:"+(e.catLabelFormatCode?"dateAx":"catAx")+">"}return n}function makeValAxis(e,t){let o=t===C?e.barDir==="col"?"l":"b":e.barDir!=="col"?"r":"t";if(t===T)o="r";const n=t===C?P:E;let r="";r+="<c:valAx>";r+=' <c:axId val="'+t+'"/>';r+=" <c:scaling>";if(e.valAxisLogScaleBase)r+=`<c:logBase val="${e.valAxisLogScaleBase}"/>`;r+='<c:orientation val="'+(e.valAxisOrientation||(e.barDir==="col"?"minMax":"minMax"))+'"/>';if(e.valAxisMaxVal||e.valAxisMaxVal===0)r+=`<c:max val="${e.valAxisMaxVal}"/>`;if(e.valAxisMinVal||e.valAxisMinVal===0)r+=`<c:min val="${e.valAxisMinVal}"/>`;r+=" </c:scaling>";r+=` <c:delete val="${e.valAxisHidden?1:0}"/>`;r+=' <c:axPos val="'+o+'"/>';if(e.valGridLine.style!=="none")r+=createGridLineElement(e.valGridLine);if(e.showValAxisTitle){r+=genXmlTitle({color:e.valAxisTitleColor,fontFace:e.valAxisTitleFontFace,fontSize:e.valAxisTitleFontSize,titleRotate:e.valAxisTitleRotate,title:e.valAxisTitle||"Axis Title"})}r+=`<c:numFmt formatCode="${e.valAxisLabelFormatCode?encodeXmlEntities(e.valAxisLabelFormatCode):"General"}" sourceLinked="0"/>`;if(e._type===W.SCATTER){r+=' <c:majorTickMark val="none"/>';r+=' <c:minorTickMark val="none"/>';r+=' <c:tickLblPos val="nextTo"/>'}else{r+=' <c:majorTickMark val="'+(e.valAxisMajorTickMark||"out")+'"/>';r+=' <c:minorTickMark val="'+(e.valAxisMinorTickMark||"none")+'"/>';r+=' <c:tickLblPos val="'+(e.valAxisLabelPos||(e.barDir==="col"?"nextTo":"low"))+'"/>'}r+=" <c:spPr>";r+=` <a:ln w="${e.valAxisLineSize?valToPts(e.valAxisLineSize):a}" cap="flat">`;r+=!e.valAxisLineShow?"<a:noFill/>":"<a:solidFill>"+createColorElement(e.valAxisLineColor||f.color)+"</a:solidFill>";r+=' <a:prstDash val="'+(e.valAxisLineStyle||"solid")+'"/>';r+=" <a:round/>";r+=" </a:ln>";r+=" </c:spPr>";r+=" <c:txPr>";r+=` <a:bodyPr${e.valAxisLabelRotate?' rot="'+convertRotationDegrees(e.valAxisLabelRotate).toString()+'"':""}/>`;r+=" <a:lstStyle/>";r+=" <a:p>";r+=" <a:pPr>";r+=` <a:defRPr sz="${Math.round((e.valAxisLabelFontSize||m)*100)}" b="${e.valAxisLabelFontBold?1:0}" i="${e.valAxisLabelFontItalic?1:0}" u="none" strike="noStrike">`;r+=" <a:solidFill>"+createColorElement(e.valAxisLabelColor||h)+"</a:solidFill>";r+=' <a:latin typeface="'+(e.valAxisLabelFontFace||"Arial")+'"/>';r+=" </a:defRPr>";r+=" </a:pPr>";r+=' <a:endParaRPr lang="'+(e.lang||"en-US")+'"/>';r+=" </a:p>";r+=" </c:txPr>";r+=' <c:crossAx val="'+n+'"/>';if(typeof e.catAxisCrossesAt==="number"){r+=` <c:crossesAt val="${e.catAxisCrossesAt}"/>`}else if(typeof e.catAxisCrossesAt==="string"){r+=' <c:crosses val="'+e.catAxisCrossesAt+'"/>'}else{const e=o==="r"||o==="t";const t=e?"max":"autoZero";r+=' <c:crosses val="'+t+'"/>'}r+=' <c:crossBetween val="'+(e._type===W.SCATTER||!!(Array.isArray(e._type)&&e._type.filter((e=>e.type===W.AREA)).length>0)?"midCat":"between")+'"/>';if(e.valAxisMajorUnit)r+=` <c:majorUnit val="${e.valAxisMajorUnit}"/>`;if(e.valAxisDisplayUnit){r+=`<c:dispUnits><c:builtInUnit val="${e.valAxisDisplayUnit}"/>${e.valAxisDisplayUnitLabel?"<c:dispUnitsLbl/>":""}</c:dispUnits>`}r+="</c:valAx>";return r}function makeSerAxis(e,t,o){let n="";n+="<c:serAx>";n+=' <c:axId val="'+t+'"/>';n+=' <c:scaling><c:orientation val="'+(e.serAxisOrientation||(e.barDir==="col"?"minMax":"minMax"))+'"/></c:scaling>';n+=' <c:delete val="'+(e.serAxisHidden?"1":"0")+'"/>';n+=' <c:axPos val="'+(e.barDir==="col"?"b":"l")+'"/>';n+=e.serGridLine.style!=="none"?createGridLineElement(e.serGridLine):"";if(e.showSerAxisTitle){n+=genXmlTitle({color:e.serAxisTitleColor,fontFace:e.serAxisTitleFontFace,fontSize:e.serAxisTitleFontSize,titleRotate:e.serAxisTitleRotate,title:e.serAxisTitle||"Axis Title"})}n+=` <c:numFmt formatCode="${encodeXmlEntities(e.serLabelFormatCode)||"General"}" sourceLinked="0"/>`;n+=' <c:majorTickMark val="out"/>';n+=' <c:minorTickMark val="none"/>';n+=` <c:tickLblPos val="${e.serAxisLabelPos||e.barDir==="col"?"low":"nextTo"}"/>`;n+=" <c:spPr>";n+=' <a:ln w="12700" cap="flat">';n+=!e.serAxisLineShow?"<a:noFill/>":`<a:solidFill>${createColorElement(e.serAxisLineColor||f.color)}</a:solidFill>`;n+=' <a:prstDash val="solid"/>';n+=" <a:round/>";n+=" </a:ln>";n+=" </c:spPr>";n+=" <c:txPr>";n+=" <a:bodyPr/>";n+=" <a:lstStyle/>";n+=" <a:p>";n+=" <a:pPr>";n+=` <a:defRPr sz="${Math.round((e.serAxisLabelFontSize||m)*100)}" b="${e.serAxisLabelFontBold?"1":"0"}" i="${e.serAxisLabelFontItalic?"1":"0"}" u="none" strike="noStrike">`;n+=` <a:solidFill>${createColorElement(e.serAxisLabelColor||h)}</a:solidFill>`;n+=` <a:latin typeface="${e.serAxisLabelFontFace||"Arial"}"/>`;n+=" </a:defRPr>";n+=" </a:pPr>";n+=' <a:endParaRPr lang="'+(e.lang||"en-US")+'"/>';n+=" </a:p>";n+=" </c:txPr>";n+=' <c:crossAx val="'+o+'"/>';n+=' <c:crosses val="autoZero"/>';if(e.serAxisLabelFrequency)n+=' <c:tickLblSkip val="'+e.serAxisLabelFrequency+'"/>';if(e.serLabelFormatCode){["serAxisBaseTimeUnit","serAxisMajorTimeUnit","serAxisMinorTimeUnit"].forEach((t=>{if(e[t]&&(typeof e[t]!=="string"||!["days","months","years"].includes(t.toLowerCase()))){console.warn(`"${t}" must be one of: 'days','months','years' !`);e[t]=null}}));if(e.serAxisBaseTimeUnit)n+=` <c:baseTimeUnit val="${e.serAxisBaseTimeUnit.toLowerCase()}"/>`;if(e.serAxisMajorTimeUnit)n+=` <c:majorTimeUnit val="${e.serAxisMajorTimeUnit.toLowerCase()}"/>`;if(e.serAxisMinorTimeUnit)n+=` <c:minorTimeUnit val="${e.serAxisMinorTimeUnit.toLowerCase()}"/>`;if(e.serAxisMajorUnit)n+=` <c:majorUnit val="${e.serAxisMajorUnit}"/>`;if(e.serAxisMinorUnit)n+=` <c:minorUnit val="${e.serAxisMinorUnit}"/>`}n+="</c:serAx>";return n}function genXmlTitle(e,t,o){const n=e.titleAlign==="left"||e.titleAlign==="right"?`<a:pPr algn="${e.titleAlign.substring(0,1)}">`:"<a:pPr>";const r=e.titleRotate?`<a:bodyPr rot="${convertRotationDegrees(e.titleRotate)}"/>`:"<a:bodyPr/>";const a=e.fontSize?`sz="${Math.round(e.fontSize*100)}"`:"";const i=e.titleBold?1:0;let s="<c:layout/>";if(e.titlePos&&typeof e.titlePos.x==="number"&&typeof e.titlePos.y==="number"){const n=e.titlePos.x+t;const r=e.titlePos.y+o;let a=n===0?0:n*(n/5)/10;if(a>=1)a=a/10;if(a>=.1)a=a/10;let i=r===0?0:r*(r/5)/10;if(i>=1)i=i/10;if(i>=.1)i=i/10;s=`<c:layout><c:manualLayout><c:xMode val="edge"/><c:yMode val="edge"/><c:x val="${a}"/><c:y val="${i}"/></c:manualLayout></c:layout>`}return`<c:title>\n <c:tx>\n <c:rich>\n ${r}\n <a:lstStyle/>\n <a:p>\n ${n}\n <a:defRPr ${a} b="${i}" i="0" u="none" strike="noStrike">\n <a:solidFill>${createColorElement(e.color||h)}</a:solidFill>\n <a:latin typeface="${e.fontFace||"Arial"}"/>\n </a:defRPr>\n </a:pPr>\n <a:r>\n <a:rPr ${a} b="${i}" i="0" u="none" strike="noStrike">\n <a:solidFill>${createColorElement(e.color||h)}</a:solidFill>\n <a:latin typeface="${e.fontFace||"Arial"}"/>\n </a:rPr>\n <a:t>${encodeXmlEntities(e.title)||""}</a:t>\n </a:r>\n </a:p>\n </c:rich>\n </c:tx>\n ${s}\n <c:overlay val="0"/>\n </c:title>`}function getExcelColName(e){let t="";const o=e-1;if(o<=25){t=L[o]}else{t=`${L[Math.floor(o/L.length-1)]}${L[o%L.length]}`}return t}function createShadowElement(e,t){if(!e){return"<a:effectLst/>"}else if(typeof e!=="object"){console.warn("`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`");return"<a:effectLst/>"}let o="<a:effectLst>";const n=Object.assign(Object.assign({},t),e);const r=n.type||"outer";const a=valToPts(n.blur);const i=valToPts(n.offset);const s=Math.round(n.angle*6e4);const l=n.color;const c=Math.round(n.opacity*1e5);const d=n.rotateWithShape?1:0;o+=`<a:${r}Shdw sx="100000" sy="100000" kx="0" ky="0" algn="bl" blurRad="${a}" rotWithShape="${d}" dist="${i}" dir="${s}">`;o+=`<a:srgbClr val="${l}">`;o+=`<a:alpha val="${c}"/></a:srgbClr>`;o+=`</a:${r}Shdw>`;o+="</a:effectLst>";return o}function createGridLineElement(e){let t="<c:majorGridlines>";t+=" <c:spPr>";t+=` <a:ln w="${valToPts(e.size||f.size)}" cap="${createLineCap(e.cap||f.cap)}">`;t+=' <a:solidFill><a:srgbClr val="'+(e.color||f.color)+'"/></a:solidFill>';t+=' <a:prstDash val="'+(e.style||f.style)+'"/><a:round/>';t+=" </a:ln>";t+=" </c:spPr>";t+="</c:majorGridlines>";return t}function createLineCap(e){if(!e||e==="flat"){return"flat"}else if(e==="square"){return"sq"}else if(e==="round"){return"rnd"}else{const t=e;throw new Error(`Invalid chart line cap: ${t}`)}}function encodeSlideMediaRels(e){var t,n;const r=typeof process!=="undefined"&&!!((t=process.versions)===null||t===void 0?void 0:t.node)&&((n=process.release)===null||n===void 0?void 0:n.name)==="node";let a;let i;const s=r?()=>__awaiter(this,void 0,void 0,(function*(){({default:a}=yield Promise.resolve().then(o.t.bind(o,3024,23)));({default:i}=yield Promise.resolve().then(o.t.bind(o,4708,23)))})):()=>__awaiter(this,void 0,void 0,(function*(){}));if(r)s();const l=[];const c=e._relsMedia.filter((e=>e.type!=="online"&&!e.data&&(!e.path||e.path&&!e.path.includes("preencoded"))));const d=[];c.forEach((e=>{if(!d.includes(e.path)){e.isDuplicate=false;d.push(e.path)}else{e.isDuplicate=true}}));c.filter((e=>!e.isDuplicate)).forEach((e=>{l.push((()=>__awaiter(this,void 0,void 0,(function*(){if(!i)yield s();if(r&&a&&e.path.indexOf("http")!==0){try{const t=a.readFileSync(e.path);e.data=Buffer.from(t).toString("base64");c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));return"done"}catch(t){e.data=V;c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));throw new Error(`ERROR: Unable to read media: "${e.path}"\n${String(t)}`)}}if(r&&i&&e.path.startsWith("http")){return yield new Promise(((t,o)=>{i.get(e.path,(n=>{let r="";n.setEncoding("binary");n.on("data",(e=>r+=e));n.on("end",(()=>{e.data=Buffer.from(r,"binary").toString("base64");c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));t("done")}));n.on("error",(()=>{e.data=V;c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));o(new Error(`ERROR! Unable to load image (https.get): ${e.path}`))}))}))}))}return yield new Promise(((t,o)=>{const n=new XMLHttpRequest;n.onload=()=>{const r=new FileReader;r.onloadend=()=>{e.data=r.result;c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));if(!e.isSvgPng){t("done")}else{createSvgPngPreview(e).then((()=>t("done"))).catch(o)}};r.readAsDataURL(n.response)};n.onerror=()=>{e.data=V;c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));o(new Error(`ERROR! Unable to load image (xhr.onerror): ${e.path}`))};n.open("GET",e.path);n.responseType="blob";n.send()}))})))())}));e._relsMedia.filter((e=>e.isSvgPng&&e.data)).forEach((e=>{(()=>__awaiter(this,void 0,void 0,(function*(){if(r&&!a)yield s();if(r&&a){e.data=V;l.push(Promise.resolve("done"))}else{l.push(createSvgPngPreview(e))}})))()}));return l}function createSvgPngPreview(e){return __awaiter(this,void 0,void 0,(function*(){return yield new Promise(((t,o)=>{const n=new Image;n.onload=()=>{if(n.width+n.height===0){n.onerror("h/w=0")}let o=document.createElement("CANVAS");const r=o.getContext("2d");o.width=n.width;o.height=n.height;r.drawImage(n,0,0);try{e.data=o.toDataURL(e.type);t("done")}catch(e){n.onerror(e.toString())}o=null};n.onerror=()=>{e.data=V;o(new Error(`ERROR! Unable to load image (image.onerror): ${e.path}`))};n.src=typeof e.data==="string"?e.data:V}))}))}const K={cover:function(e,t){const o=e.h/e.w;const n=t.h/t.w;const r=n>o;const a=r?t.h/o:t.w;const i=r?t.h:t.w*o;const s=Math.round(1e5*.5*(1-t.w/a));const l=Math.round(1e5*.5*(1-t.h/i));return`<a:srcRect l="${s}" r="${s}" t="${l}" b="${l}"/><a:stretch/>`},contain:function(e,t){const o=e.h/e.w;const n=t.h/t.w;const r=n>o;const a=r?t.w:t.h/o;const i=r?t.w*o:t.h;const s=Math.round(1e5*.5*(1-t.w/a));const l=Math.round(1e5*.5*(1-t.h/i));return`<a:srcRect l="${s}" r="${s}" t="${l}" b="${l}"/><a:stretch/>`},crop:function(e,t){const o=t.x;const n=e.w-(t.x+t.w);const r=t.y;const a=e.h-(t.y+t.h);const i=Math.round(1e5*(o/e.w));const s=Math.round(1e5*(n/e.w));const l=Math.round(1e5*(r/e.h));const c=Math.round(1e5*(a/e.h));return`<a:srcRect l="${i}" r="${s}" t="${l}" b="${c}"/><a:stretch/>`}};function slideObjectToXml(e){var t;let o=e._name?'<p:cSld name="'+e._name+'">':"<p:cSld>";let n=1;if(e._bkgdImgRid){o+=`<p:bg><p:bgPr><a:blipFill dpi="0" rotWithShape="1"><a:blip r:embed="rId${e._bkgdImgRid}"><a:lum/></a:blip><a:srcRect/><a:stretch><a:fillRect/></a:stretch></a:blipFill><a:effectLst/></p:bgPr></p:bg>`}else if((t=e.background)===null||t===void 0?void 0:t.color){o+=`<p:bg><p:bgPr>${genXmlColorSelection(e.background)}</p:bgPr></p:bg>`}else if(!e.bkgd&&e._name&&e._name===y){o+='<p:bg><p:bgRef idx="1001"><a:schemeClr val="bg1"/></p:bgRef></p:bg>'}o+="<p:spTree>";o+='<p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>';o+='<p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/>';o+='<a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr>';e._slideObjects.forEach(((t,a)=>{var i,s,l,c,d,u,A,f;let h=0;let m=0;let g=getSmartParseNumber("75%","X",e._presLayout);let v=0;let y;let b="";let w=null;let x=null;let k=0;let C=0;let T=null;let P=null;const E=(i=t.options)===null||i===void 0?void 0:i.sizing;const _=(s=t.options)===null||s===void 0?void 0:s.rounding;if(e._slideLayout!==undefined&&e._slideLayout._slideObjects!==undefined&&t.options&&t.options.placeholder){y=e._slideLayout._slideObjects.filter((e=>e.options.placeholder===t.options.placeholder))[0]}t.options=t.options||{};if(typeof t.options.x!=="undefined")h=getSmartParseNumber(t.options.x,"X",e._presLayout);if(typeof t.options.y!=="undefined")m=getSmartParseNumber(t.options.y,"Y",e._presLayout);if(typeof t.options.w!=="undefined")g=getSmartParseNumber(t.options.w,"X",e._presLayout);if(typeof t.options.h!=="undefined")v=getSmartParseNumber(t.options.h,"Y",e._presLayout);let L=g;let I=v;if(y){if(y.options.x||y.options.x===0)h=getSmartParseNumber(y.options.x,"X",e._presLayout);if(y.options.y||y.options.y===0)m=getSmartParseNumber(y.options.y,"Y",e._presLayout);if(y.options.w||y.options.w===0)g=getSmartParseNumber(y.options.w,"X",e._presLayout);if(y.options.h||y.options.h===0)v=getSmartParseNumber(y.options.h,"Y",e._presLayout)}if(t.options.flipH)b+=' flipH="1"';if(t.options.flipV)b+=' flipV="1"';if(t.options.rotate)b+=` rot="${convertRotationDegrees(t.options.rotate)}"`;switch(t._type){case X.table:w=t.arrTabRows;x=t.options;k=0;C=0;w[0].forEach((e=>{T=e.options||null;k+=(T===null||T===void 0?void 0:T.colspan)?Number(T.colspan):1}));P=`<p:graphicFrame><p:nvGraphicFramePr><p:cNvPr id="${n*e._slideNum+1}" name="${t.options.objectName}"/>`;P+='<p:cNvGraphicFramePr><a:graphicFrameLocks noGrp="1"/></p:cNvGraphicFramePr>'+' <p:nvPr><p:extLst><p:ext uri="{D42A27DB-BD31-4B8C-83A1-F6EECF244321}"><p14:modId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1579011935"/></p:ext></p:extLst></p:nvPr>'+"</p:nvGraphicFramePr>";P+=`<p:xfrm><a:off x="${h||(h===0?0:r)}" y="${m||(m===0?0:r)}"/><a:ext cx="${g||(g===0?0:r)}" cy="${v||r}"/></p:xfrm>`;P+='<a:graphic><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table"><a:tbl><a:tblPr/>';if(Array.isArray(x.colW)){P+="<a:tblGrid>";for(let e=0;e<k;e++){let o=inch2Emu(x.colW[e]);if(o==null||isNaN(o)){o=(typeof t.options.w==="number"?t.options.w:1)/k}P+=`<a:gridCol w="${Math.round(o)}"/>`}P+="</a:tblGrid>"}else{C=x.colW?x.colW:r;if(t.options.w&&!x.colW)C=Math.round((typeof t.options.w==="number"?t.options.w:1)/k);P+="<a:tblGrid>";for(let e=0;e<k;e++){P+=`<a:gridCol w="${C}"/>`}P+="</a:tblGrid>"}w.forEach((e=>{var t,o;for(let n=0;n<e.length;){const r=e[n];const a=(t=r.options)===null||t===void 0?void 0:t.colspan;const i=(o=r.options)===null||o===void 0?void 0:o.rowspan;if(a&&a>1){const t=new Array(a-1).fill(undefined).map((()=>({_type:X.tablecell,options:{rowspan:i},_hmerge:true})));e.splice(n+1,0,...t);n+=a}else{n+=1}}}));w.forEach(((e,t)=>{const o=w[t+1];if(!o)return;e.forEach(((e,t)=>{var n,r;const a=e._rowContinue||((n=e.options)===null||n===void 0?void 0:n.rowspan);const i=(r=e.options)===null||r===void 0?void 0:r.colspan;const s=e._hmerge;if(a&&a>1){const e={_type:X.tablecell,options:{colspan:i},_rowContinue:a-1,_vmerge:true,_hmerge:s};o.splice(t,0,e)}}))}));w.forEach(((e,o)=>{let n=0;if(Array.isArray(x.rowH)&&x.rowH[o])n=inch2Emu(Number(x.rowH[o]));else if(x.rowH&&!isNaN(Number(x.rowH)))n=inch2Emu(Number(x.rowH));else if(t.options.cy||t.options.h){n=Math.round((t.options.h?inch2Emu(t.options.h):typeof t.options.cy==="number"?t.options.cy:1)/w.length)}P+=`<a:tr h="${n}">`;e.forEach((e=>{var t,o,n,r,a;const i=e;const s={rowSpan:((t=i.options)===null||t===void 0?void 0:t.rowspan)>1?i.options.rowspan:undefined,gridSpan:((o=i.options)===null||o===void 0?void 0:o.colspan)>1?i.options.colspan:undefined,vMerge:i._vmerge?1:undefined,hMerge:i._hmerge?1:undefined};let l=Object.keys(s).map((e=>[e,s[e]])).filter((([,e])=>!!e)).map((([e,t])=>`${String(e)}="${String(t)}"`)).join(" ");if(l)l=" "+l;if(i._hmerge||i._vmerge){P+=`<a:tc${l}><a:tcPr/></a:tc>`;return}const c=i.options||{};i.options=c;["align","bold","border","color","fill","fontFace","fontSize","margin","textDirection","underline","valign"].forEach((e=>{if(x[e]&&!c[e]&&c[e]!==0)c[e]=x[e]}));const d=c.valign?` anchor="${c.valign.replace(/^c$/i,"ctr").replace(/^m$/i,"ctr").replace("center","ctr").replace("middle","ctr").replace("top","t").replace("btm","b").replace("bottom","b")}"`:"";const u=c.textDirection&&c.textDirection!=="horz"?` vert="${c.textDirection}"`:"";let A=((r=(n=i._optImp)===null||n===void 0?void 0:n.fill)===null||r===void 0?void 0:r.color)?i._optImp.fill.color:((a=i._optImp)===null||a===void 0?void 0:a.fill)&&typeof i._optImp.fill==="string"?i._optImp.fill:"";A=A||c.fill?c.fill:"";const f=A?genXmlColorSelection(A):"";let h=c.margin===0||c.margin?c.margin:p;if(!Array.isArray(h)&&typeof h==="number")h=[h,h,h,h];let m="";if(h[0]>=1){m=` marL="${valToPts(h[3])}" marR="${valToPts(h[1])}" marT="${valToPts(h[0])}" marB="${valToPts(h[2])}"`}else{m=` marL="${inch2Emu(h[3])}" marR="${inch2Emu(h[1])}" marT="${inch2Emu(h[0])}" marB="${inch2Emu(h[2])}"`}P+=`<a:tc${l}>${genXmlTextBody(i)}<a:tcPr${m}${d}${u}>`;if(c.border&&Array.isArray(c.border)){[{idx:3,name:"lnL"},{idx:1,name:"lnR"},{idx:0,name:"lnT"},{idx:2,name:"lnB"}].forEach((e=>{if(c.border[e.idx].type!=="none"){P+=`<a:${e.name} w="${valToPts(c.border[e.idx].pt)}" cap="flat" cmpd="sng" algn="ctr">`;P+=`<a:solidFill>${createColorElement(c.border[e.idx].color)}</a:solidFill>`;P+=`<a:prstDash val="${c.border[e.idx].type==="dash"?"sysDash":"solid"}"/><a:round/><a:headEnd type="none" w="med" len="med"/><a:tailEnd type="none" w="med" len="med"/>`;P+=`</a:${e.name}>`}else{P+=`<a:${e.name} w="0" cap="flat" cmpd="sng" algn="ctr"><a:noFill/></a:${e.name}>`}}))}P+=f;P+=" </a:tcPr>";P+=" </a:tc>"}));P+="</a:tr>"}));P+=" </a:tbl>";P+=" </a:graphicData>";P+=" </a:graphic>";P+="</p:graphicFrame>";o+=P;n++;break;case X.text:case X.placeholder:if(!t.options.line&&v===0)v=r*.3;if(!t.options._bodyProp)t.options._bodyProp={};if(t.options.margin&&Array.isArray(t.options.margin)){t.options._bodyProp.lIns=valToPts(t.options.margin[0]||0);t.options._bodyProp.rIns=valToPts(t.options.margin[1]||0);t.options._bodyProp.bIns=valToPts(t.options.margin[2]||0);t.options._bodyProp.tIns=valToPts(t.options.margin[3]||0)}else if(typeof t.options.margin==="number"){t.options._bodyProp.lIns=valToPts(t.options.margin);t.options._bodyProp.rIns=valToPts(t.options.margin);t.options._bodyProp.bIns=valToPts(t.options.margin);t.options._bodyProp.tIns=valToPts(t.options.margin)}o+="<p:sp>";o+=`<p:nvSpPr><p:cNvPr id="${a+2}" name="${t.options.objectName}">`;if((l=t.options.hyperlink)===null||l===void 0?void 0:l.url){o+=`<a:hlinkClick r:id="rId${t.options.hyperlink._rId}" tooltip="${t.options.hyperlink.tooltip?encodeXmlEntities(t.options.hyperlink.tooltip):""}"/>`}if((c=t.options.hyperlink)===null||c===void 0?void 0:c.slide){o+=`<a:hlinkClick r:id="rId${t.options.hyperlink._rId}" tooltip="${t.options.hyperlink.tooltip?encodeXmlEntities(t.options.hyperlink.tooltip):""}" action="ppaction://hlinksldjump"/>`}o+="</p:cNvPr>";o+="<p:cNvSpPr"+(((d=t.options)===null||d===void 0?void 0:d.isTextBox)?' txBox="1"/>':"/>");o+=`<p:nvPr>${t._type==="placeholder"?genXmlPlaceholder(t):genXmlPlaceholder(y)}</p:nvPr>`;o+="</p:nvSpPr><p:spPr>";o+=`<a:xfrm${b}>`;o+=`<a:off x="${h}" y="${m}"/>`;o+=`<a:ext cx="${g}" cy="${v}"/></a:xfrm>`;if(t.shape==="custGeom"){o+="<a:custGeom><a:avLst />";o+="<a:gdLst>";o+="</a:gdLst>";o+="<a:ahLst />";o+="<a:cxnLst>";o+="</a:cxnLst>";o+='<a:rect l="l" t="t" r="r" b="b" />';o+="<a:pathLst>";o+=`<a:path w="${g}" h="${v}">`;(u=t.options.points)===null||u===void 0?void 0:u.forEach(((t,n)=>{if("curve"in t){switch(t.curve.type){case"arc":o+=`<a:arcTo hR="${getSmartParseNumber(t.curve.hR,"Y",e._presLayout)}" wR="${getSmartParseNumber(t.curve.wR,"X",e._presLayout)}" stAng="${convertRotationDegrees(t.curve.stAng)}" swAng="${convertRotationDegrees(t.curve.swAng)}" />`;break;case"cubic":o+=`<a:cubicBezTo>\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.curve.x1,"X",e._presLayout)}" y="${getSmartParseNumber(t.curve.y1,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.curve.x2,"X",e._presLayout)}" y="${getSmartParseNumber(t.curve.y2,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.x,"X",e._presLayout)}" y="${getSmartParseNumber(t.y,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t</a:cubicBezTo>`;break;case"quadratic":o+=`<a:quadBezTo>\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.curve.x1,"X",e._presLayout)}" y="${getSmartParseNumber(t.curve.y1,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.x,"X",e._presLayout)}" y="${getSmartParseNumber(t.y,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t</a:quadBezTo>`;break}}else if("close"in t){o+="<a:close />"}else if(t.moveTo||n===0){o+=`<a:moveTo><a:pt x="${getSmartParseNumber(t.x,"X",e._presLayout)}" y="${getSmartParseNumber(t.y,"Y",e._presLayout)}" /></a:moveTo>`}else{o+=`<a:lnTo><a:pt x="${getSmartParseNumber(t.x,"X",e._presLayout)}" y="${getSmartParseNumber(t.y,"Y",e._presLayout)}" /></a:lnTo>`}}));o+="</a:path>";o+="</a:pathLst>";o+="</a:custGeom>"}else{o+='<a:prstGeom prst="'+t.shape+'"><a:avLst>';if(t.options.rectRadius){o+=`<a:gd name="adj" fmla="val ${Math.round(t.options.rectRadius*r*1e5/Math.min(g,v))}"/>`}else if(t.options.angleRange){for(let e=0;e<2;e++){const n=t.options.angleRange[e];o+=`<a:gd name="adj${e+1}" fmla="val ${convertRotationDegrees(n)}" />`}if(t.options.arcThicknessRatio){o+=`<a:gd name="adj3" fmla="val ${Math.round(t.options.arcThicknessRatio*5e4)}" />`}}o+="</a:avLst></a:prstGeom>"}o+=t.options.fill?genXmlColorSelection(t.options.fill):"<a:noFill/>";if(t.options.line){o+=t.options.line.width?`<a:ln w="${valToPts(t.options.line.width)}">`:"<a:ln>";if(t.options.line.color)o+=genXmlColorSelection(t.options.line);if(t.options.line.dashType)o+=`<a:prstDash val="${t.options.line.dashType}"/>`;if(t.options.line.beginArrowType)o+=`<a:headEnd type="${t.options.line.beginArrowType}"/>`;if(t.options.line.endArrowType)o+=`<a:tailEnd type="${t.options.line.endArrowType}"/>`;o+="</a:ln>"}if(t.options.shadow&&t.options.shadow.type!=="none"){t.options.shadow.type=t.options.shadow.type||"outer";t.options.shadow.blur=valToPts(t.options.shadow.blur||8);t.options.shadow.offset=valToPts(t.options.shadow.offset||4);t.options.shadow.angle=Math.round((t.options.shadow.angle||270)*6e4);t.options.shadow.opacity=Math.round((t.options.shadow.opacity||.75)*1e5);t.options.shadow.color=t.options.shadow.color||S.color;o+="<a:effectLst>";o+=` <a:${t.options.shadow.type}Shdw ${t.options.shadow.type==="outer"?'sx="100000" sy="100000" kx="0" ky="0" algn="bl" rotWithShape="0"':""} blurRad="${t.options.shadow.blur}" dist="${t.options.shadow.offset}" dir="${t.options.shadow.angle}">`;o+=` <a:srgbClr val="${t.options.shadow.color}">`;o+=` <a:alpha val="${t.options.shadow.opacity}"/></a:srgbClr>`;o+=" </a:outerShdw>";o+="</a:effectLst>"}o+="</p:spPr>";o+=genXmlTextBody(t);o+="</p:sp>";break;case X.image:o+="<p:pic>";o+=" <p:nvPicPr>";o+=`<p:cNvPr id="${a+2}" name="${t.options.objectName}" descr="${encodeXmlEntities(t.options.altText||t.image)}">`;if((A=t.hyperlink)===null||A===void 0?void 0:A.url){o+=`<a:hlinkClick r:id="rId${t.hyperlink._rId}" tooltip="${t.hyperlink.tooltip?encodeXmlEntities(t.hyperlink.tooltip):""}"/>`}if((f=t.hyperlink)===null||f===void 0?void 0:f.slide){o+=`<a:hlinkClick r:id="rId${t.hyperlink._rId}" tooltip="${t.hyperlink.tooltip?encodeXmlEntities(t.hyperlink.tooltip):""}" action="ppaction://hlinksldjump"/>`}o+=" </p:cNvPr>";o+=' <p:cNvPicPr><a:picLocks noChangeAspect="1"/></p:cNvPicPr>';o+=" <p:nvPr>"+genXmlPlaceholder(y)+"</p:nvPr>";o+=" </p:nvPicPr>";o+="<p:blipFill>";if((e._relsMedia||[]).filter((e=>e.rId===t.imageRid))[0]&&(e._relsMedia||[]).filter((e=>e.rId===t.imageRid))[0].extn==="svg"){o+=`<a:blip r:embed="rId${t.imageRid-1}">`;o+=t.options.transparency?` <a:alphaModFix amt="${Math.round((100-t.options.transparency)*1e3)}"/>`:"";o+=" <a:extLst>";o+=' <a:ext uri="{96DAC541-7B7A-43D3-8B79-37D633B846F1}">';o+=` <asvg:svgBlip xmlns:asvg="http://schemas.microsoft.com/office/drawing/2016/SVG/main" r:embed="rId${t.imageRid}"/>`;o+=" </a:ext>";o+=" </a:extLst>";o+="</a:blip>"}else{o+=`<a:blip r:embed="rId${t.imageRid}">`;o+=t.options.transparency?`<a:alphaModFix amt="${Math.round((100-t.options.transparency)*1e3)}"/>`:"";o+="</a:blip>"}if(E===null||E===void 0?void 0:E.type){const t=E.w?getSmartParseNumber(E.w,"X",e._presLayout):g;const n=E.h?getSmartParseNumber(E.h,"Y",e._presLayout):v;const r=getSmartParseNumber(E.x||0,"X",e._presLayout);const a=getSmartParseNumber(E.y||0,"Y",e._presLayout);o+=K[E.type]({w:L,h:I},{w:t,h:n,x:r,y:a});L=t;I=n}else{o+=" <a:stretch><a:fillRect/></a:stretch>"}o+="</p:blipFill>";o+="<p:spPr>";o+=" <a:xfrm"+b+">";o+=` <a:off x="${h}" y="${m}"/>`;o+=` <a:ext cx="${L}" cy="${I}"/>`;o+=" </a:xfrm>";o+=` <a:prstGeom prst="${_?"ellipse":"rect"}"><a:avLst/></a:prstGeom>`;if(t.options.shadow&&t.options.shadow.type!=="none"){t.options.shadow.type=t.options.shadow.type||"outer";t.options.shadow.blur=valToPts(t.options.shadow.blur||8);t.options.shadow.offset=valToPts(t.options.shadow.offset||4);t.options.shadow.angle=Math.round((t.options.shadow.angle||270)*6e4);t.options.shadow.opacity=Math.round((t.options.shadow.opacity||.75)*1e5);t.options.shadow.color=t.options.shadow.color||S.color;o+="<a:effectLst>";o+=`<a:${t.options.shadow.type}Shdw ${t.options.shadow.type==="outer"?'sx="100000" sy="100000" kx="0" ky="0" algn="bl" rotWithShape="0"':""} blurRad="${t.options.shadow.blur}" dist="${t.options.shadow.offset}" dir="${t.options.shadow.angle}">`;o+=`<a:srgbClr val="${t.options.shadow.color}">`;o+=`<a:alpha val="${t.options.shadow.opacity}"/></a:srgbClr>`;o+=`</a:${t.options.shadow.type}Shdw>`;o+="</a:effectLst>"}o+="</p:spPr>";o+="</p:pic>";break;case X.media:if(t.mtype==="online"){o+="<p:pic>";o+=" <p:nvPicPr>";o+=`<p:cNvPr id="${t.mediaRid+2}" name="${t.options.objectName}"/>`;o+=" <p:cNvPicPr/>";o+=" <p:nvPr>";o+=` <a:videoFile r:link="rId${t.mediaRid}"/>`;o+=" </p:nvPr>";o+=" </p:nvPicPr>";o+=` <p:blipFill><a:blip r:embed="rId${t.mediaRid+1}"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`;o+=" <p:spPr>";o+=` <a:xfrm${b}><a:off x="${h}" y="${m}"/><a:ext cx="${g}" cy="${v}"/></a:xfrm>`;o+=' <a:prstGeom prst="rect"><a:avLst/></a:prstGeom>';o+=" </p:spPr>";o+="</p:pic>"}else{o+="<p:pic>";o+=" <p:nvPicPr>";o+=`<p:cNvPr id="${t.mediaRid+2}" name="${t.options.objectName}"><a:hlinkClick r:id="" action="ppaction://media"/></p:cNvPr>`;o+=' <p:cNvPicPr><a:picLocks noChangeAspect="1"/></p:cNvPicPr>';o+=" <p:nvPr>";o+=` <a:videoFile r:link="rId${t.mediaRid}"/>`;o+=" <p:extLst>";o+=' <p:ext uri="{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}">';o+=` <p14:media xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" r:embed="rId${t.mediaRid+1}"/>`;o+=" </p:ext>";o+=" </p:extLst>";o+=" </p:nvPr>";o+=" </p:nvPicPr>";o+=` <p:blipFill><a:blip r:embed="rId${t.mediaRid+2}"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`;o+=" <p:spPr>";o+=` <a:xfrm${b}><a:off x="${h}" y="${m}"/><a:ext cx="${g}" cy="${v}"/></a:xfrm>`;o+=' <a:prstGeom prst="rect"><a:avLst/></a:prstGeom>';o+=" </p:spPr>";o+="</p:pic>"}break;case X.chart:o+="<p:graphicFrame>";o+=" <p:nvGraphicFramePr>";o+=` <p:cNvPr id="${a+2}" name="${t.options.objectName}" descr="${encodeXmlEntities(t.options.altText||"")}"/>`;o+=" <p:cNvGraphicFramePr/>";o+=` <p:nvPr>${genXmlPlaceholder(y)}</p:nvPr>`;o+=" </p:nvGraphicFramePr>";o+=` <p:xfrm><a:off x="${h}" y="${m}"/><a:ext cx="${g}" cy="${v}"/></p:xfrm>`;o+=' <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">';o+=' <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">';o+=` <c:chart r:id="rId${t.chartRid}" xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"/>`;o+=" </a:graphicData>";o+=" </a:graphic>";o+="</p:graphicFrame>";break;default:o+="";break}}));if(e._slideNumberProps){if(!e._slideNumberProps.align)e._slideNumberProps.align="left";o+="<p:sp>";o+=" <p:nvSpPr>";o+=' <p:cNvPr id="25" name="Slide Number Placeholder 0"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr>';o+=' <p:nvPr><p:ph type="sldNum" sz="quarter" idx="4294967295"/></p:nvPr>';o+=" </p:nvSpPr>";o+=" <p:spPr>";o+="<a:xfrm>"+`<a:off x="${getSmartParseNumber(e._slideNumberProps.x,"X",e._presLayout)}" y="${getSmartParseNumber(e._slideNumberProps.y,"Y",e._presLayout)}"/>`+`<a:ext cx="${e._slideNumberProps.w?getSmartParseNumber(e._slideNumberProps.w,"X",e._presLayout):"800000"}" cy="${e._slideNumberProps.h?getSmartParseNumber(e._slideNumberProps.h,"Y",e._presLayout):"300000"}"/>`+"</a:xfrm>"+' <a:prstGeom prst="rect"><a:avLst/></a:prstGeom>'+' <a:extLst><a:ext uri="{C572A759-6A51-4108-AA02-DFA0A04FC94B}"><ma14:wrappingTextBoxFlag val="0" xmlns:ma14="http://schemas.microsoft.com/office/mac/drawingml/2011/main"/></a:ext></a:extLst>'+"</p:spPr>";o+="<p:txBody>";o+="<a:bodyPr";if(e._slideNumberProps.margin&&Array.isArray(e._slideNumberProps.margin)){o+=` lIns="${valToPts(e._slideNumberProps.margin[3]||0)}"`;o+=` tIns="${valToPts(e._slideNumberProps.margin[0]||0)}"`;o+=` rIns="${valToPts(e._slideNumberProps.margin[1]||0)}"`;o+=` bIns="${valToPts(e._slideNumberProps.margin[2]||0)}"`}else if(typeof e._slideNumberProps.margin==="number"){o+=` lIns="${valToPts(e._slideNumberProps.margin||0)}"`;o+=` tIns="${valToPts(e._slideNumberProps.margin||0)}"`;o+=` rIns="${valToPts(e._slideNumberProps.margin||0)}"`;o+=` bIns="${valToPts(e._slideNumberProps.margin||0)}"`}if(e._slideNumberProps.valign){o+=` anchor="${e._slideNumberProps.valign.replace("top","t").replace("middle","ctr").replace("bottom","b")}"`}o+="/>";o+=" <a:lstStyle><a:lvl1pPr>";if(e._slideNumberProps.fontFace||e._slideNumberProps.fontSize||e._slideNumberProps.color){o+=`<a:defRPr sz="${Math.round((e._slideNumberProps.fontSize||12)*100)}">`;if(e._slideNumberProps.color)o+=genXmlColorSelection(e._slideNumberProps.color);if(e._slideNumberProps.fontFace){o+=`<a:latin typeface="${e._slideNumberProps.fontFace}"/><a:ea typeface="${e._slideNumberProps.fontFace}"/><a:cs typeface="${e._slideNumberProps.fontFace}"/>`}o+="</a:defRPr>"}o+="</a:lvl1pPr></a:lstStyle>";o+="<a:p>";if(e._slideNumberProps.align.startsWith("l"))o+='<a:pPr algn="l"/>';else if(e._slideNumberProps.align.startsWith("c"))o+='<a:pPr algn="ctr"/>';else if(e._slideNumberProps.align.startsWith("r"))o+='<a:pPr algn="r"/>';else o+='<a:pPr algn="l"/>';o+=`<a:fld id="${R}" type="slidenum"><a:rPr b="${e._slideNumberProps.bold?1:0}" lang="en-US"/>`;o+=`<a:t>${e._slideNum}</a:t></a:fld><a:endParaRPr lang="en-US"/></a:p>`;o+="</p:txBody></p:sp>"}o+="</p:spTree>";o+="</p:cSld>";return o}function slideObjectRelationsToXml(e,t){let o=0;let n='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i+'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">';e._rels.forEach((e=>{o=Math.max(o,e.rId);if(e.type.toLowerCase().includes("hyperlink")){if(e.data==="slide"){n+=`<Relationship Id="rId${e.rId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="slide${e.Target}.xml"/>`}else{n+=`<Relationship Id="rId${e.rId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="${e.Target}" TargetMode="External"/>`}}else if(e.type.toLowerCase().includes("notesSlide")){n+=`<Relationship Id="rId${e.rId}" Target="${e.Target}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide"/>`}}));(e._relsChart||[]).forEach((e=>{o=Math.max(o,e.rId);n+=`<Relationship Id="rId${e.rId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart" Target="${e.Target}"/>`}));(e._relsMedia||[]).forEach((e=>{const t=e.rId.toString();o=Math.max(o,e.rId);if(e.type.toLowerCase().includes("image")){n+='<Relationship Id="rId'+t+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="'+e.Target+'"/>'}else if(e.type.toLowerCase().includes("audio")){if(n.includes(' Target="'+e.Target+'"')){n+='<Relationship Id="rId'+t+'" Type="http://schemas.microsoft.com/office/2007/relationships/media" Target="'+e.Target+'"/>'}else{n+='<Relationship Id="rId'+t+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/audio" Target="'+e.Target+'"/>'}}else if(e.type.toLowerCase().includes("video")){if(n.includes(' Target="'+e.Target+'"')){n+='<Relationship Id="rId'+t+'" Type="http://schemas.microsoft.com/office/2007/relationships/media" Target="'+e.Target+'"/>'}else{n+='<Relationship Id="rId'+t+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/video" Target="'+e.Target+'"/>'}}else if(e.type.toLowerCase().includes("online")){if(n.includes(' Target="'+e.Target+'"')){n+='<Relationship Id="rId'+t+'" Type="http://schemas.microsoft.com/office/2007/relationships/image" Target="'+e.Target+'"/>'}else{n+='<Relationship Id="rId'+t+'" Target="'+e.Target+'" TargetMode="External" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/video"/>'}}}));t.forEach(((e,t)=>{n+=`<Relationship Id="rId${o+t+1}" Type="${e.type}" Target="${e.target}"/>`}));n+="</Relationships>";return n}function genXmlParagraphProperties(e,t){var o,n;let r="";let a="";let i="";let s="";const l=t?"a:lvl1pPr":"a:pPr";let c=valToPts(d);let u=`<${l}${e.options.rtlMode?' rtl="1" ':""}`;{if(e.options.align){switch(e.options.align){case"left":u+=' algn="l"';break;case"right":u+=' algn="r"';break;case"center":u+=' algn="ctr"';break;case"justify":u+=' algn="just"';break;default:u+="";break}}if(e.options.lineSpacing){a=`<a:lnSpc><a:spcPts val="${Math.round(e.options.lineSpacing*100)}"/></a:lnSpc>`}else if(e.options.lineSpacingMultiple){a=`<a:lnSpc><a:spcPct val="${Math.round(e.options.lineSpacingMultiple*1e5)}"/></a:lnSpc>`}if(e.options.indentLevel&&!isNaN(Number(e.options.indentLevel))&&e.options.indentLevel>0){u+=` lvl="${e.options.indentLevel}"`}if(e.options.paraSpaceBefore&&!isNaN(Number(e.options.paraSpaceBefore))&&e.options.paraSpaceBefore>0){i+=`<a:spcBef><a:spcPts val="${Math.round(e.options.paraSpaceBefore*100)}"/></a:spcBef>`}if(e.options.paraSpaceAfter&&!isNaN(Number(e.options.paraSpaceAfter))&&e.options.paraSpaceAfter>0){i+=`<a:spcAft><a:spcPts val="${Math.round(e.options.paraSpaceAfter*100)}"/></a:spcAft>`}if(typeof e.options.bullet==="object"){if((n=(o=e===null||e===void 0?void 0:e.options)===null||o===void 0?void 0:o.bullet)===null||n===void 0?void 0:n.indent)c=valToPts(e.options.bullet.indent);if(e.options.bullet.type){if(e.options.bullet.type.toString().toLowerCase()==="number"){u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r=`<a:buSzPct val="100000"/><a:buFont typeface="+mj-lt"/><a:buAutoNum type="${e.options.bullet.style||"arabicPeriod"}" startAt="${e.options.bullet.numberStartAt||e.options.bullet.startAt||"1"}"/>`}}else if(e.options.bullet.characterCode){let t=`&#x${e.options.bullet.characterCode};`;if(!/^[0-9A-Fa-f]{4}$/.test(e.options.bullet.characterCode)){console.warn("Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!");t=Q.DEFAULT}u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r='<a:buSzPct val="100000"/><a:buChar char="'+t+'"/>'}else if(e.options.bullet.code){let t=`&#x${e.options.bullet.code};`;if(!/^[0-9A-Fa-f]{4}$/.test(e.options.bullet.code)){console.warn("Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!");t=Q.DEFAULT}u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r='<a:buSzPct val="100000"/><a:buChar char="'+t+'"/>'}else{u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r=`<a:buSzPct val="100000"/><a:buChar char="${Q.DEFAULT}"/>`}}else if(e.options.bullet){u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r=`<a:buSzPct val="100000"/><a:buChar char="${Q.DEFAULT}"/>`}else if(!e.options.bullet){u+=' indent="0" marL="0"';r="<a:buNone/>"}if(e.options.tabStops&&Array.isArray(e.options.tabStops)){const t=e.options.tabStops.map((e=>`<a:tab pos="${inch2Emu(e.position||1)}" algn="${e.alignment||"l"}"/>`)).join("");s=`<a:tabLst>${t}</a:tabLst>`}u+=">"+a+i+r+s;if(t)u+=genXmlTextRunProperties(e.options,true);u+="</"+l+">"}return u}function genXmlTextRunProperties(e,t){var o;let n="";const r=t?"a:defRPr":"a:rPr";n+="<"+r+' lang="'+(e.lang?e.lang:"en-US")+'"'+(e.lang?' altLang="en-US"':"");n+=e.fontSize?` sz="${Math.round(e.fontSize*100)}"`:"";n+=(e===null||e===void 0?void 0:e.bold)?` b="${e.bold?"1":"0"}"`:"";n+=(e===null||e===void 0?void 0:e.italic)?` i="${e.italic?"1":"0"}"`:"";n+=(e===null||e===void 0?void 0:e.strike)?` strike="${typeof e.strike==="string"?e.strike:"sngStrike"}"`:"";if(typeof e.underline==="object"&&((o=e.underline)===null||o===void 0?void 0:o.style)){n+=` u="${e.underline.style}"`}else if(typeof e.underline==="string"){n+=` u="${String(e.underline)}"`}else if(e.hyperlink){n+=' u="sng"'}if(e.baseline){n+=` baseline="${Math.round(e.baseline*50)}"`}else if(e.subscript){n+=' baseline="-40000"'}else if(e.superscript){n+=' baseline="30000"'}n+=e.charSpacing?` spc="${Math.round(e.charSpacing*100)}" kern="0"`:"";n+=' dirty="0">';if(e.color||e.fontFace||e.outline||typeof e.underline==="object"&&e.underline.color){if(e.outline&&typeof e.outline==="object"){n+=`<a:ln w="${valToPts(e.outline.size||.75)}">${genXmlColorSelection(e.outline.color||"FFFFFF")}</a:ln>`}if(e.color)n+=genXmlColorSelection({color:e.color,transparency:e.transparency});if(e.highlight)n+=`<a:highlight>${createColorElement(e.highlight)}</a:highlight>`;if(typeof e.underline==="object"&&e.underline.color)n+=`<a:uFill>${genXmlColorSelection(e.underline.color)}</a:uFill>`;if(e.glow)n+=`<a:effectLst>${createGlowElement(e.glow,k)}</a:effectLst>`;if(e.fontFace){n+=`<a:latin typeface="${e.fontFace}" pitchFamily="34" charset="0"/><a:ea typeface="${e.fontFace}" pitchFamily="34" charset="-122"/><a:cs typeface="${e.fontFace}" pitchFamily="34" charset="-120"/>`}}if(e.hyperlink){if(typeof e.hyperlink!=="object")throw new Error("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` ");else if(!e.hyperlink.url&&!e.hyperlink.slide)throw new Error("ERROR: 'hyperlink requires either `url` or `slide`'");else if(e.hyperlink.url){n+=`<a:hlinkClick r:id="rId${e.hyperlink._rId}" invalidUrl="" action="" tgtFrame="" tooltip="${e.hyperlink.tooltip?encodeXmlEntities(e.hyperlink.tooltip):""}" history="1" highlightClick="0" endSnd="0"${e.color?">":"/>"}`}else if(e.hyperlink.slide){n+=`<a:hlinkClick r:id="rId${e.hyperlink._rId}" action="ppaction://hlinksldjump" tooltip="${e.hyperlink.tooltip?encodeXmlEntities(e.hyperlink.tooltip):""}"${e.color?">":"/>"}`}if(e.color){n+=" <a:extLst>";n+=' <a:ext uri="{A12FA001-AC4F-418D-AE19-62706E023703}">';n+=' <ahyp:hlinkClr xmlns:ahyp="http://schemas.microsoft.com/office/drawing/2018/hyperlinkcolor" val="tx"/>';n+=" </a:ext>";n+=" </a:extLst>";n+="</a:hlinkClick>"}}n+=`</${r}>`;return n}function genXmlTextRun(e){return e.text?`<a:r>${genXmlTextRunProperties(e.options,false)}<a:t>${encodeXmlEntities(e.text)}</a:t></a:r>`:""}function genXmlBodyProperties(e){let t="<a:bodyPr";if(e&&e._type===X.text&&e.options._bodyProp){t+=e.options._bodyProp.wrap?' wrap="square"':' wrap="none"';if(e.options._bodyProp.lIns||e.options._bodyProp.lIns===0)t+=` lIns="${e.options._bodyProp.lIns}"`;if(e.options._bodyProp.tIns||e.options._bodyProp.tIns===0)t+=` tIns="${e.options._bodyProp.tIns}"`;if(e.options._bodyProp.rIns||e.options._bodyProp.rIns===0)t+=` rIns="${e.options._bodyProp.rIns}"`;if(e.options._bodyProp.bIns||e.options._bodyProp.bIns===0)t+=` bIns="${e.options._bodyProp.bIns}"`;t+=' rtlCol="0"';if(e.options._bodyProp.anchor)t+=' anchor="'+e.options._bodyProp.anchor+'"';if(e.options._bodyProp.vert)t+=' vert="'+e.options._bodyProp.vert+'"';t+=">";if(e.options.fit){if(e.options.fit==="none")t+="";else if(e.options.fit==="shrink")t+="<a:normAutofit/>";else if(e.options.fit==="resize")t+="<a:spAutoFit/>"}if(e.options.shrinkText)t+="<a:normAutofit/>";t+=e.options._bodyProp.autoFit?"<a:spAutoFit/>":"";t+="</a:bodyPr>"}else{t+=' wrap="square" rtlCol="0">';t+="</a:bodyPr>"}return e._type===X.tablecell?"<a:bodyPr/>":t}function genXmlTextBody(e){const t=e.options||{};let o=[];const n=[];if(t&&e._type!==X.tablecell&&(typeof e.text==="undefined"||e.text===null))return"";let r=e._type===X.tablecell?"<a:txBody>":"<p:txBody>";{r+=genXmlBodyProperties(e);if(t.h===0&&t.line&&t.align)r+='<a:lstStyle><a:lvl1pPr algn="l"/></a:lstStyle>';else if(e._type==="placeholder")r+=`<a:lstStyle>${genXmlParagraphProperties(e,true)}</a:lstStyle>`;else r+="<a:lstStyle/>"}if(typeof e.text==="string"||typeof e.text==="number"){o.push({text:e.text.toString(),options:t||{}})}else if(e.text&&!Array.isArray(e.text)&&typeof e.text==="object"&&Object.keys(e.text).includes("text")){o.push({text:e.text||"",options:e.options||{}})}else if(Array.isArray(e.text)){o=e.text.map((e=>({text:e.text,options:e.options})))}o.forEach(((e,o)=>{if(!e.text)e.text="";e.options=e.options||t||{};if(o===0&&e.options&&!e.options.bullet&&t.bullet)e.options.bullet=t.bullet;if(typeof e.text==="string"||typeof e.text==="number"){e.text=e.text.toString().replace(/\r*\n/g,i)}if(e.text.includes(i)&&e.text.match(/\n$/g)===null){e.text.split(i).forEach((t=>{e.options.breakLine=true;n.push({text:t,options:e.options})}))}else{n.push(e)}}));const a=[];let s=[];n.forEach(((e,o)=>{if(s.length>0&&(e.options.align||t.align)){if(e.options.align!==n[o-1].options.align){a.push(s);s=[]}}else if(s.length>0&&e.options.bullet&&s.length>0){a.push(s);s=[];e.options.breakLine=false}s.push(e);if(s.length>0&&e.options.breakLine){if(o+1<n.length){a.push(s);s=[]}}if(o+1===n.length)a.push(s)}));a.forEach((o=>{var n;let a=false;r+="<a:p>";let i=`<a:pPr ${((n=o[0].options)===null||n===void 0?void 0:n.rtlMode)?' rtl="1" ':""}`;o.forEach(((e,o)=>{e.options._lineIdx=o;if(o>0&&e.options.softBreakBefore){r+="<a:br/>"}e.options.align=e.options.align||t.align;e.options.lineSpacing=e.options.lineSpacing||t.lineSpacing;e.options.lineSpacingMultiple=e.options.lineSpacingMultiple||t.lineSpacingMultiple;e.options.indentLevel=e.options.indentLevel||t.indentLevel;e.options.paraSpaceBefore=e.options.paraSpaceBefore||t.paraSpaceBefore;e.options.paraSpaceAfter=e.options.paraSpaceAfter||t.paraSpaceAfter;i=genXmlParagraphProperties(e,false);r+=i.replace("<a:pPr></a:pPr>","");Object.entries(t).filter((([t])=>!(e.options.hyperlink&&t==="color"))).forEach((([t,o])=>{if(t!=="bullet"&&!e.options[t])e.options[t]=o}));r+=genXmlTextRun(e);if(!e.text&&t.fontSize||e.options.fontSize){a=true;t.fontSize=t.fontSize||e.options.fontSize}}));if(e._type===X.tablecell&&(t.fontSize||t.fontFace)){if(t.fontFace){r+=`<a:endParaRPr lang="${t.lang||"en-US"}"`+(t.fontSize?` sz="${Math.round(t.fontSize*100)}"`:"")+' dirty="0">';r+=`<a:latin typeface="${t.fontFace}" charset="0"/>`;r+=`<a:ea typeface="${t.fontFace}" charset="0"/>`;r+=`<a:cs typeface="${t.fontFace}" charset="0"/>`;r+="</a:endParaRPr>"}else{r+=`<a:endParaRPr lang="${t.lang||"en-US"}"`+(t.fontSize?` sz="${Math.round(t.fontSize*100)}"`:"")+' dirty="0"/>'}}else if(a){r+=`<a:endParaRPr lang="${t.lang||"en-US"}"`+(t.fontSize?` sz="${Math.round(t.fontSize*100)}"`:"")+' dirty="0"/>'}else{r+=`<a:endParaRPr lang="${t.lang||"en-US"}" dirty="0"/>`}r+="</a:p>"}));if(r.indexOf("<a:p>")===-1){r+="<a:p><a:endParaRPr/></a:p>"}r+=e._type===X.tablecell?"</a:txBody>":"</p:txBody>";return r}function genXmlPlaceholder(e){var t,o;if(!e)return"";const n=((t=e.options)===null||t===void 0?void 0:t._placeholderIdx)?e.options._placeholderIdx:"";const r=((o=e.options)===null||o===void 0?void 0:o._placeholderType)?e.options._placeholderType:"";const a=r&&H[r]?H[r].toString():"";return`<p:ph\n\t\t${n?' idx="'+n.toString()+'"':""}\n\t\t${a&&H[a]?` type="${a}"`:""}\n\t\t${e.text&&e.text.length>0?' hasCustomPrompt="1"':""}\n\t\t/>`}function makeXmlContTypes(e,t,o){let n='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i;n+='<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">';n+='<Default Extension="xml" ContentType="application/xml"/>';n+='<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>';n+='<Default Extension="jpeg" ContentType="image/jpeg"/>';n+='<Default Extension="jpg" ContentType="image/jpg"/>';n+='<Default Extension="svg" ContentType="image/svg+xml"/>';n+='<Default Extension="png" ContentType="image/png"/>';n+='<Default Extension="gif" ContentType="image/gif"/>';n+='<Default Extension="m4v" ContentType="video/mp4"/>';n+='<Default Extension="mp4" ContentType="video/mp4"/>';e.forEach((e=>{(e._relsMedia||[]).forEach((e=>{if(e.type!=="image"&&e.type!=="online"&&e.type!=="chart"&&e.extn!=="m4v"&&!n.includes(e.type)){n+='<Default Extension="'+e.extn+'" ContentType="'+e.type+'"/>'}}))}));n+='<Default Extension="vml" ContentType="application/vnd.openxmlformats-officedocument.vmlDrawing"/>';n+='<Default Extension="xlsx" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>';n+='<Override PartName="/ppt/presentation.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"/>';n+='<Override PartName="/ppt/notesMasters/notesMaster1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml"/>';e.forEach(((e,t)=>{n+=`<Override PartName="/ppt/slideMasters/slideMaster${t+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml"/>`;n+=`<Override PartName="/ppt/slides/slide${t+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml"/>`;e._relsChart.forEach((e=>{n+=`<Override PartName="${e.Target}" ContentType="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"/>`}))}));n+='<Override PartName="/ppt/presProps.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.presProps+xml"/>';n+='<Override PartName="/ppt/viewProps.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml"/>';n+='<Override PartName="/ppt/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>';n+='<Override PartName="/ppt/tableStyles.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml"/>';t.forEach(((e,t)=>{n+=`<Override PartName="/ppt/slideLayouts/slideLayout${t+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml"/>`;(e._relsChart||[]).forEach((e=>{n+=' <Override PartName="'+e.Target+'" ContentType="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"/>'}))}));e.forEach(((e,t)=>{n+=`<Override PartName="/ppt/notesSlides/notesSlide${t+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml"/>`}));o._relsChart.forEach((e=>{n+=' <Override PartName="'+e.Target+'" ContentType="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"/>'}));o._relsMedia.forEach((e=>{if(e.type!=="image"&&e.type!=="online"&&e.type!=="chart"&&e.extn!=="m4v"&&!n.includes(e.type)){n+=' <Default Extension="'+e.extn+'" ContentType="'+e.type+'"/>'}}));n+=' <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>';n+=' <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>';n+="</Types>";return n}function makeXmlRootRels(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n\t\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>\n\t\t<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>\n\t\t<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="ppt/presentation.xml"/>\n\t\t</Relationships>`}function makeXmlApp(e,t){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">\n\t<TotalTime>0</TotalTime>\n\t<Words>0</Words>\n\t<Application>Microsoft Office PowerPoint</Application>\n\t<PresentationFormat>On-screen Show (16:9)</PresentationFormat>\n\t<Paragraphs>0</Paragraphs>\n\t<Slides>${e.length}</Slides>\n\t<Notes>${e.length}</Notes>\n\t<HiddenSlides>0</HiddenSlides>\n\t<MMClips>0</MMClips>\n\t<ScaleCrop>false</ScaleCrop>\n\t<HeadingPairs>\n\t\t<vt:vector size="6" baseType="variant">\n\t\t\t<vt:variant><vt:lpstr>Fonts Used</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>2</vt:i4></vt:variant>\n\t\t\t<vt:variant><vt:lpstr>Theme</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>1</vt:i4></vt:variant>\n\t\t\t<vt:variant><vt:lpstr>Slide Titles</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>${e.length}</vt:i4></vt:variant>\n\t\t</vt:vector>\n\t</HeadingPairs>\n\t<TitlesOfParts>\n\t\t<vt:vector size="${e.length+1+2}" baseType="lpstr">\n\t\t\t<vt:lpstr>Arial</vt:lpstr>\n\t\t\t<vt:lpstr>Calibri</vt:lpstr>\n\t\t\t<vt:lpstr>Office Theme</vt:lpstr>\n\t\t\t${e.map(((e,t)=>`<vt:lpstr>Slide ${t+1}</vt:lpstr>`)).join("")}\n\t\t</vt:vector>\n\t</TitlesOfParts>\n\t<Company>${t}</Company>\n\t<LinksUpToDate>false</LinksUpToDate>\n\t<SharedDoc>false</SharedDoc>\n\t<HyperlinksChanged>false</HyperlinksChanged>\n\t<AppVersion>16.0000</AppVersion>\n\t</Properties>`}function makeXmlCore(e,t,o,n){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n\t<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n\t\t<dc:title>${encodeXmlEntities(e)}</dc:title>\n\t\t<dc:subject>${encodeXmlEntities(t)}</dc:subject>\n\t\t<dc:creator>${encodeXmlEntities(o)}</dc:creator>\n\t\t<cp:lastModifiedBy>${encodeXmlEntities(o)}</cp:lastModifiedBy>\n\t\t<cp:revision>${n}</cp:revision>\n\t\t<dcterms:created xsi:type="dcterms:W3CDTF">${(new Date).toISOString().replace(/\.\d\d\dZ/,"Z")}</dcterms:created>\n\t\t<dcterms:modified xsi:type="dcterms:W3CDTF">${(new Date).toISOString().replace(/\.\d\d\dZ/,"Z")}</dcterms:modified>\n\t</cp:coreProperties>`}function makeXmlPresentationRels(e){let t=1;let o='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i;o+='<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">';o+='<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" Target="slideMasters/slideMaster1.xml"/>';for(let n=1;n<=e.length;n++){o+=`<Relationship Id="rId${++t}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="slides/slide${n}.xml"/>`}t++;o+=`<Relationship Id="rId${t+0}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster" Target="notesMasters/notesMaster1.xml"/>`+`<Relationship Id="rId${t+1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps" Target="presProps.xml"/>`+`<Relationship Id="rId${t+2}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps" Target="viewProps.xml"/>`+`<Relationship Id="rId${t+3}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>`+`<Relationship Id="rId${t+4}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles" Target="tableStyles.xml"/>`+"</Relationships>";return o}function makeXmlSlide(e){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}`+'<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" '+'xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"'+`${(e===null||e===void 0?void 0:e.hidden)?' show="0"':""}>`+`${slideObjectToXml(e)}`+"<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sld>"}function getNotesFromSlide(e){let t="";e._slideObjects.forEach((e=>{if(e._type===X.notes)t+=(e===null||e===void 0?void 0:e.text)&&e.text[0]?e.text[0].text:""}));return t.replace(/\r*\n/g,i)}function makeXmlNotesMaster(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<p:notesMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:cSld><p:bg><p:bgRef idx="1001"><a:schemeClr val="bg1"/></p:bgRef></p:bg><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id="2" name="Header Placeholder 1"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="hdr" sz="quarter"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="2971800" cy="458788"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0"/><a:lstStyle><a:lvl1pPr algn="l"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="3" name="Date Placeholder 2"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="dt" idx="1"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="3884613" y="0"/><a:ext cx="2971800" cy="458788"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0"/><a:lstStyle><a:lvl1pPr algn="r"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id="{5282F153-3F37-0F45-9E97-73ACFA13230C}" type="datetimeFigureOut"><a:rPr lang="en-US"/><a:t>7/23/19</a:t></a:fld><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="4" name="Slide Image Placeholder 3"/><p:cNvSpPr><a:spLocks noGrp="1" noRot="1" noChangeAspect="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldImg" idx="2"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="685800" y="1143000"/><a:ext cx="5486400" cy="3086100"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln w="12700"><a:solidFill><a:prstClr val="black"/></a:solidFill></a:ln></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="ctr"/><a:lstStyle/><a:p><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="5" name="Notes Placeholder 4"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="body" sz="quarter" idx="3"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="685800" y="4400550"/><a:ext cx="5486400" cy="3600450"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0"/><a:lstStyle/><a:p><a:pPr lvl="0"/><a:r><a:rPr lang="en-US"/><a:t>Click to edit Master text styles</a:t></a:r></a:p><a:p><a:pPr lvl="1"/><a:r><a:rPr lang="en-US"/><a:t>Second level</a:t></a:r></a:p><a:p><a:pPr lvl="2"/><a:r><a:rPr lang="en-US"/><a:t>Third level</a:t></a:r></a:p><a:p><a:pPr lvl="3"/><a:r><a:rPr lang="en-US"/><a:t>Fourth level</a:t></a:r></a:p><a:p><a:pPr lvl="4"/><a:r><a:rPr lang="en-US"/><a:t>Fifth level</a:t></a:r></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="6" name="Footer Placeholder 5"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="ftr" sz="quarter" idx="4"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="0" y="8685213"/><a:ext cx="2971800" cy="458787"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="b"/><a:lstStyle><a:lvl1pPr algn="l"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="7" name="Slide Number Placeholder 6"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldNum" sz="quarter" idx="5"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="3884613" y="8685213"/><a:ext cx="2971800" cy="458787"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="b"/><a:lstStyle><a:lvl1pPr algn="r"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id="{CE5E9CC1-C706-0F49-92D6-E571CC5EEA8F}" type="slidenum"><a:rPr lang="en-US"/><a:t>‹#›</a:t></a:fld><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp></p:spTree><p:extLst><p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}"><p14:creationId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1024086991"/></p:ext></p:extLst></p:cSld><p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/><p:notesStyle><a:lvl1pPr marL="0" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl1pPr><a:lvl2pPr marL="457200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl2pPr><a:lvl3pPr marL="914400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl3pPr><a:lvl4pPr marL="1371600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl4pPr><a:lvl5pPr marL="1828800" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl5pPr><a:lvl6pPr marL="2286000" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl6pPr><a:lvl7pPr marL="2743200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl7pPr><a:lvl8pPr marL="3200400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl8pPr><a:lvl9pPr marL="3657600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl9pPr></p:notesStyle></p:notesMaster>`}function makeXmlNotesSlide(e){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<p:notes xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:cSld><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id="2" name="Slide Image Placeholder 1"/><p:cNvSpPr><a:spLocks noGrp="1" noRot="1" noChangeAspect="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldImg"/></p:nvPr></p:nvSpPr><p:spPr/></p:sp><p:sp><p:nvSpPr><p:cNvPr id="3" name="Notes Placeholder 2"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="body" idx="1"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:r><a:rPr lang="en-US" dirty="0"/><a:t>${encodeXmlEntities(getNotesFromSlide(e))}</a:t></a:r><a:endParaRPr lang="en-US" dirty="0"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="4" name="Slide Number Placeholder 3"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldNum" sz="quarter" idx="10"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:fld id="${R}" type="slidenum"><a:rPr lang="en-US"/><a:t>${e._slideNum}</a:t></a:fld><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp></p:spTree><p:extLst><p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}"><p14:creationId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1024086991"/></p:ext></p:extLst></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:notes>`}function makeXmlLayout(e){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n\t\t<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" preserve="1">\n\t\t${slideObjectToXml(e)}\n\t\t<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sldLayout>`}function makeXmlMaster(e,t){const o=t.map(((t,o)=>`<p:sldLayoutId id="${s+o}" r:id="rId${e._rels.length+o+1}"/>`));let n='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i;n+='<p:sldMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">';n+=slideObjectToXml(e);n+='<p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/>';n+="<p:sldLayoutIdLst>"+o.join("")+"</p:sldLayoutIdLst>";n+='<p:hf sldNum="0" hdr="0" ftr="0" dt="0"/>';n+="<p:txStyles>"+" <p:titleStyle>"+' <a:lvl1pPr algn="ctr" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="0"/></a:spcBef><a:buNone/><a:defRPr sz="4400" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mj-lt"/><a:ea typeface="+mj-ea"/><a:cs typeface="+mj-cs"/></a:defRPr></a:lvl1pPr>'+" </p:titleStyle>"+" <p:bodyStyle>"+' <a:lvl1pPr marL="342900" indent="-342900" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="3200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl1pPr>'+' <a:lvl2pPr marL="742950" indent="-285750" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="–"/><a:defRPr sz="2800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl2pPr>'+' <a:lvl3pPr marL="1143000" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2400" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl3pPr>'+' <a:lvl4pPr marL="1600200" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="–"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl4pPr>'+' <a:lvl5pPr marL="2057400" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="»"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl5pPr>'+' <a:lvl6pPr marL="2514600" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl6pPr>'+' <a:lvl7pPr marL="2971800" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl7pPr>'+' <a:lvl8pPr marL="3429000" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl8pPr>'+' <a:lvl9pPr marL="3886200" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl9pPr>'+" </p:bodyStyle>"+" <p:otherStyle>"+' <a:defPPr><a:defRPr lang="en-US"/></a:defPPr>'+' <a:lvl1pPr marL="0" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl1pPr>'+' <a:lvl2pPr marL="457200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl2pPr>'+' <a:lvl3pPr marL="914400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl3pPr>'+' <a:lvl4pPr marL="1371600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl4pPr>'+' <a:lvl5pPr marL="1828800" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl5pPr>'+' <a:lvl6pPr marL="2286000" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl6pPr>'+' <a:lvl7pPr marL="2743200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl7pPr>'+' <a:lvl8pPr marL="3200400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl8pPr>'+' <a:lvl9pPr marL="3657600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl9pPr>'+" </p:otherStyle>"+"</p:txStyles>";n+="</p:sldMaster>";return n}function makeXmlSlideLayoutRel(e,t){return slideObjectRelationsToXml(t[e-1],[{target:"../slideMasters/slideMaster1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"}])}function makeXmlSlideRel(e,t,o){return slideObjectRelationsToXml(e[o-1],[{target:`../slideLayouts/slideLayout${getLayoutIdxForSlide(e,t,o)}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"},{target:`../notesSlides/notesSlide${o}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide"}])}function makeXmlNotesSlideRel(e){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n\t\t<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n\t\t\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster" Target="../notesMasters/notesMaster1.xml"/>\n\t\t\t<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="../slides/slide${e}.xml"/>\n\t\t</Relationships>`}function makeXmlMasterRel(e,t){const o=t.map(((e,t)=>({target:`../slideLayouts/slideLayout${t+1}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"})));o.push({target:"../theme/theme1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"});return slideObjectRelationsToXml(e,o)}function makeXmlNotesMasterRel(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n\t\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="../theme/theme1.xml"/>\n\t\t</Relationships>`}function getLayoutIdxForSlide(e,t,o){for(let n=0;n<t.length;n++){if(t[n]._name===e[o-1]._slideLayout._name){return n+1}}return 1}function makeXmlTheme(e){var t,o,n,r;const a=((t=e.theme)===null||t===void 0?void 0:t.headFontFace)?`<a:latin typeface="${(o=e.theme)===null||o===void 0?void 0:o.headFontFace}"/>`:'<a:latin typeface="Calibri Light" panose="020F0302020204030204"/>';const i=((n=e.theme)===null||n===void 0?void 0:n.bodyFontFace)?`<a:latin typeface="${(r=e.theme)===null||r===void 0?void 0:r.bodyFontFace}"/>`:'<a:latin typeface="Calibri" panose="020F0502020204030204"/>';return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="44546A"/></a:dk2><a:lt2><a:srgbClr val="E7E6E6"/></a:lt2><a:accent1><a:srgbClr val="4472C4"/></a:accent1><a:accent2><a:srgbClr val="ED7D31"/></a:accent2><a:accent3><a:srgbClr val="A5A5A5"/></a:accent3><a:accent4><a:srgbClr val="FFC000"/></a:accent4><a:accent5><a:srgbClr val="5B9BD5"/></a:accent5><a:accent6><a:srgbClr val="70AD47"/></a:accent6><a:hlink><a:srgbClr val="0563C1"/></a:hlink><a:folHlink><a:srgbClr val="954F72"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont>${a}<a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="游ゴシック Light"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="等线 Light"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Angsana New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/><a:font script="Armn" typeface="Arial"/><a:font script="Bugi" typeface="Leelawadee UI"/><a:font script="Bopo" typeface="Microsoft JhengHei"/><a:font script="Java" typeface="Javanese Text"/><a:font script="Lisu" typeface="Segoe UI"/><a:font script="Mymr" typeface="Myanmar Text"/><a:font script="Nkoo" typeface="Ebrima"/><a:font script="Olck" typeface="Nirmala UI"/><a:font script="Osma" typeface="Ebrima"/><a:font script="Phag" typeface="Phagspa"/><a:font script="Syrn" typeface="Estrangelo Edessa"/><a:font script="Syrj" typeface="Estrangelo Edessa"/><a:font script="Syre" typeface="Estrangelo Edessa"/><a:font script="Sora" typeface="Nirmala UI"/><a:font script="Tale" typeface="Microsoft Tai Le"/><a:font script="Talu" typeface="Microsoft New Tai Lue"/><a:font script="Tfng" typeface="Ebrima"/></a:majorFont><a:minorFont>${i}<a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="游ゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="等线"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Cordia New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/><a:font script="Armn" typeface="Arial"/><a:font script="Bugi" typeface="Leelawadee UI"/><a:font script="Bopo" typeface="Microsoft JhengHei"/><a:font script="Java" typeface="Javanese Text"/><a:font script="Lisu" typeface="Segoe UI"/><a:font script="Mymr" typeface="Myanmar Text"/><a:font script="Nkoo" typeface="Ebrima"/><a:font script="Olck" typeface="Nirmala UI"/><a:font script="Osma" typeface="Ebrima"/><a:font script="Phag" typeface="Phagspa"/><a:font script="Syrn" typeface="Estrangelo Edessa"/><a:font script="Syrj" typeface="Estrangelo Edessa"/><a:font script="Syre" typeface="Estrangelo Edessa"/><a:font script="Sora" typeface="Nirmala UI"/><a:font script="Tale" typeface="Microsoft Tai Le"/><a:font script="Talu" typeface="Microsoft New Tai Lue"/><a:font script="Tfng" typeface="Ebrima"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:lumMod val="110000"/><a:satMod val="105000"/><a:tint val="67000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="103000"/><a:tint val="73000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="109000"/><a:tint val="81000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:satMod val="103000"/><a:lumMod val="102000"/><a:tint val="94000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:satMod val="110000"/><a:lumMod val="100000"/><a:shade val="100000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="99000"/><a:satMod val="120000"/><a:shade val="78000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="6350" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="12700" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="19050" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="57150" dist="19050" dir="5400000" algn="ctr" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="63000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:solidFill><a:schemeClr val="phClr"><a:tint val="95000"/><a:satMod val="170000"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="93000"/><a:satMod val="150000"/><a:shade val="98000"/><a:lumMod val="102000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:tint val="98000"/><a:satMod val="130000"/><a:shade val="90000"/><a:lumMod val="103000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="63000"/><a:satMod val="120000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri="{05A4C25C-085E-4340-85A3-A5531E510DB2}"><thm15:themeFamily xmlns:thm15="http://schemas.microsoft.com/office/thememl/2012/main" name="Office Theme" id="{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}" vid="{4A3C46E8-61CC-4603-A589-7422A47A8E4A}"/></a:ext></a:extLst></a:theme>`}function makeXmlPresentation(e){let t=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}`+'<p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" '+`xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ${e.rtlMode?'rtl="1"':""} saveSubsetFonts="1" autoCompressPictures="0">`;t+='<p:sldMasterIdLst><p:sldMasterId id="2147483648" r:id="rId1"/></p:sldMasterIdLst>';t+="<p:sldIdLst>";e.slides.forEach((e=>t+=`<p:sldId id="${e._slideId}" r:id="rId${e._rId}"/>`));t+="</p:sldIdLst>";t+=`<p:notesMasterIdLst><p:notesMasterId r:id="rId${e.slides.length+2}"/></p:notesMasterIdLst>`;t+=`<p:sldSz cx="${e.presLayout.width}" cy="${e.presLayout.height}"/>`;t+=`<p:notesSz cx="${e.presLayout.height}" cy="${e.presLayout.width}"/>`;t+="<p:defaultTextStyle>";for(let e=1;e<10;e++){t+=`<a:lvl${e}pPr marL="${(e-1)*457200}" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">`+'<a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/>'+`</a:defRPr></a:lvl${e}pPr>`}t+="</p:defaultTextStyle>";if(e.sections&&e.sections.length>0){t+='<p:extLst><p:ext uri="{521415D9-36F7-43E2-AB2F-B90AF26B5E84}">';t+='<p14:sectionLst xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main">';e.sections.forEach((e=>{t+=`<p14:section name="${encodeXmlEntities(e.title)}" id="{${getUuid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")}}"><p14:sldIdLst>`;e._slides.forEach((e=>t+=`<p14:sldId id="${e._slideId}"/>`));t+="</p14:sldIdLst></p14:section>"}));t+="</p14:sectionLst></p:ext>";t+='<p:ext uri="{EFAFB233-063F-42B5-8137-9DF3F51BA10A}"><p15:sldGuideLst xmlns:p15="http://schemas.microsoft.com/office/powerpoint/2012/main"/></p:ext>';t+="</p:extLst>"}t+="</p:presentation>";return t}function makeXmlPresProps(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<p:presentationPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"/>`}function makeXmlTableStyles(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<a:tblStyleLst xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" def="{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}"/>`}function makeXmlViewProps(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<p:viewPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:normalViewPr horzBarState="maximized"><p:restoredLeft sz="15611"/><p:restoredTop sz="94610"/></p:normalViewPr><p:slideViewPr><p:cSldViewPr snapToGrid="0" snapToObjects="1"><p:cViewPr varScale="1"><p:scale><a:sx n="136" d="100"/><a:sy n="136" d="100"/></p:scale><p:origin x="216" y="312"/></p:cViewPr><p:guideLst/></p:cSldViewPr></p:slideViewPr><p:notesTextViewPr><p:cViewPr><p:scale><a:sx n="1" d="1"/><a:sy n="1" d="1"/></p:scale><p:origin x="0" y="0"/></p:cViewPr></p:notesTextViewPr><p:gridSpacing cx="76200" cy="76200"/></p:viewPr>`}const Z="4.0.1";class PptxGenJS{set layout(e){const t=this.LAYOUTS[e];if(t){this._layout=e;this._presLayout=t}else{throw new Error("UNKNOWN-LAYOUT")}}get layout(){return this._layout}get version(){return this._version}set author(e){this._author=e}get author(){return this._author}set company(e){this._company=e}get company(){return this._company}set revision(e){this._revision=e}get revision(){return this._revision}set subject(e){this._subject=e}get subject(){return this._subject}set theme(e){this._theme=e}get theme(){return this._theme}set title(e){this._title=e}get title(){return this._title}set rtlMode(e){this._rtlMode=e}get rtlMode(){return this._rtlMode}get masterSlide(){return this._masterSlide}get slides(){return this._slides}get sections(){return this._sections}get slideLayouts(){return this._slideLayouts}get AlignH(){return this._alignH}get AlignV(){return this._alignV}get ChartType(){return this._chartType}get OutputType(){return this._outputType}get presLayout(){return this._presLayout}get SchemeColor(){return this._schemeColor}get ShapeType(){return this._shapeType}get charts(){return this._charts}get colors(){return this._colors}get shapes(){return this._shapes}constructor(){this._version=Z;this._alignH=z;this._alignV=j;this._chartType=M;this._outputType=F;this._schemeColor=$;this._shapeType=O;this._charts=W;this._colors=q;this._shapes=U;this.addNewSlide=e=>{const t=this.sections.length>0&&this.sections[this.sections.length-1]._slides.filter((e=>e._slideNum===this.slides[this.slides.length-1]._slideNum)).length>0;e.sectionTitle=t?this.sections[this.sections.length-1].title:null;return this.addSlide(e)};this.getSlide=e=>this.slides.filter((t=>t._slideNum===e))[0];this.setSlideNumber=e=>{this.masterSlide._slideNumberProps=e;this.slideLayouts.filter((e=>e._name===y))[0]._slideNumberProps=e};this.createChartMediaRels=(e,t,o)=>{e._relsChart.forEach((e=>o.push(createExcelWorksheet(e,t))));e._relsMedia.forEach((e=>{if(e.type!=="online"&&e.type!=="hyperlink"){let o=e.data&&typeof e.data==="string"?e.data:"";if(!o.includes(",")&&!o.includes(";"))o="image/png;base64,"+o;else if(!o.includes(","))o="image/png;base64,"+o;else if(!o.includes(";"))o="image/png;"+o;t.file(e.Target.replace("..","ppt"),o.split(",").pop(),{base64:true})}}))};this.writeFileToBrowser=(e,t)=>__awaiter(this,void 0,void 0,(function*(){const o=document.createElement("a");o.setAttribute("style","display:none;");o.dataset.interception="off";document.body.appendChild(o);if(window.URL.createObjectURL){const n=window.URL.createObjectURL(new Blob([t],{type:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}));o.href=n;o.download=e;o.click();setTimeout((()=>{window.URL.revokeObjectURL(n);document.body.removeChild(o)}),100);return yield Promise.resolve(e)}}));this.exportPresentation=e=>__awaiter(this,void 0,void 0,(function*(){const t=[];let o=[];const r=new n;this.slides.forEach((e=>{o=o.concat(encodeSlideMediaRels(e))}));this.slideLayouts.forEach((e=>{o=o.concat(encodeSlideMediaRels(e))}));o=o.concat(encodeSlideMediaRels(this.masterSlide));return yield Promise.all(o).then((()=>__awaiter(this,void 0,void 0,(function*(){this.slides.forEach((e=>{if(e._slideLayout)addPlaceholdersToSlideLayouts(e)}));r.folder("_rels");r.folder("docProps");r.folder("ppt").folder("_rels");r.folder("ppt/charts").folder("_rels");r.folder("ppt/embeddings");r.folder("ppt/media");r.folder("ppt/slideLayouts").folder("_rels");r.folder("ppt/slideMasters").folder("_rels");r.folder("ppt/slides").folder("_rels");r.folder("ppt/theme");r.folder("ppt/notesMasters").folder("_rels");r.folder("ppt/notesSlides").folder("_rels");r.file("[Content_Types].xml",makeXmlContTypes(this.slides,this.slideLayouts,this.masterSlide));r.file("_rels/.rels",makeXmlRootRels());r.file("docProps/app.xml",makeXmlApp(this.slides,this.company));r.file("docProps/core.xml",makeXmlCore(this.title,this.subject,this.author,this.revision));r.file("ppt/_rels/presentation.xml.rels",makeXmlPresentationRels(this.slides));r.file("ppt/theme/theme1.xml",makeXmlTheme(this));r.file("ppt/presentation.xml",makeXmlPresentation(this));r.file("ppt/presProps.xml",makeXmlPresProps());r.file("ppt/tableStyles.xml",makeXmlTableStyles());r.file("ppt/viewProps.xml",makeXmlViewProps());this.slideLayouts.forEach(((e,t)=>{r.file(`ppt/slideLayouts/slideLayout${t+1}.xml`,makeXmlLayout(e));r.file(`ppt/slideLayouts/_rels/slideLayout${t+1}.xml.rels`,makeXmlSlideLayoutRel(t+1,this.slideLayouts))}));this.slides.forEach(((e,t)=>{r.file(`ppt/slides/slide${t+1}.xml`,makeXmlSlide(e));r.file(`ppt/slides/_rels/slide${t+1}.xml.rels`,makeXmlSlideRel(this.slides,this.slideLayouts,t+1));r.file(`ppt/notesSlides/notesSlide${t+1}.xml`,makeXmlNotesSlide(e));r.file(`ppt/notesSlides/_rels/notesSlide${t+1}.xml.rels`,makeXmlNotesSlideRel(t+1))}));r.file("ppt/slideMasters/slideMaster1.xml",makeXmlMaster(this.masterSlide,this.slideLayouts));r.file("ppt/slideMasters/_rels/slideMaster1.xml.rels",makeXmlMasterRel(this.masterSlide,this.slideLayouts));r.file("ppt/notesMasters/notesMaster1.xml",makeXmlNotesMaster());r.file("ppt/notesMasters/_rels/notesMaster1.xml.rels",makeXmlNotesMasterRel());this.slideLayouts.forEach((e=>{this.createChartMediaRels(e,r,t)}));this.slides.forEach((e=>{this.createChartMediaRels(e,r,t)}));this.createChartMediaRels(this.masterSlide,r,t);return yield Promise.all(t).then((()=>__awaiter(this,void 0,void 0,(function*(){if(e.outputType==="STREAM"){return yield r.generateAsync({type:"nodebuffer",compression:e.compression?"DEFLATE":"STORE"})}else if(e.outputType){return yield r.generateAsync({type:e.outputType})}else{return yield r.generateAsync({type:"blob",compression:e.compression?"DEFLATE":"STORE"})}}))))}))))}));const e={name:"screen4x3",width:9144e3,height:6858e3};const t={name:"screen16x9",width:9144e3,height:5143500};const o={name:"screen16x10",width:9144e3,height:5715e3};const r={name:"custom",width:12192e3,height:6858e3};this.LAYOUTS={LAYOUT_4x3:e,LAYOUT_16x9:t,LAYOUT_16x10:o,LAYOUT_WIDE:r};this._author="PptxGenJS";this._company="PptxGenJS";this._revision="1";this._subject="PptxGenJS Presentation";this._title="PptxGenJS Presentation";this._presLayout={name:this.LAYOUTS[v].name,_sizeW:this.LAYOUTS[v].width,_sizeH:this.LAYOUTS[v].height,width:this.LAYOUTS[v].width,height:this.LAYOUTS[v].height};this._rtlMode=false;this._slideLayouts=[{_margin:x,_name:y,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3,_slideNumberProps:null,_slideObjects:[]}];this._slides=[];this._sections=[];this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream(e){return __awaiter(this,void 0,void 0,(function*(){return yield this.exportPresentation({compression:e===null||e===void 0?void 0:e.compression,outputType:"STREAM"})}))}write(e){return __awaiter(this,void 0,void 0,(function*(){const t=typeof e==="object"&&(e===null||e===void 0?void 0:e.outputType)?e.outputType:e?e:null;const o=typeof e==="object"&&(e===null||e===void 0?void 0:e.compression)?e.compression:false;return yield this.exportPresentation({compression:o,outputType:t})}))}writeFile(e){return __awaiter(this,void 0,void 0,(function*(){var t,n;const r=typeof process!=="undefined"&&!!((t=process.versions)===null||t===void 0?void 0:t.node)&&((n=process.release)===null||n===void 0?void 0:n.name)==="node";if(typeof e==="string"){console.warn("[WARNING] writeFile(string) is deprecated - pass { fileName } instead.");e={fileName:e}}const{fileName:a="Presentation.pptx",compression:i=false}=e;const s=a.toLowerCase().endsWith(".pptx")?a:`${a}.pptx`;const l=r?"nodebuffer":null;const c=yield this.exportPresentation({compression:i,outputType:l});if(r){const{promises:e}=yield Promise.resolve().then(o.t.bind(o,3024,23));const{writeFile:t}=e;yield t(s,c);return s}yield this.writeFileToBrowser(s,c);return s}))}addSection(e){if(!e)console.warn("addSection requires an argument");else if(!e.title)console.warn("addSection requires a title");const t={_type:"user",_slides:[],title:e.title};if(e.order)this.sections.splice(e.order,0,t);else this._sections.push(t)}addSlide(e){const t=typeof e==="string"?e:(e===null||e===void 0?void 0:e.masterName)?e.masterName:"";let o={_name:this.LAYOUTS[v].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};if(t){const e=this.slideLayouts.filter((e=>e._name===t))[0];if(e)o=e}const n=new Slide({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:o});this._slides.push(n);if(e===null||e===void 0?void 0:e.sectionTitle){const t=this.sections.filter((t=>t.title===e.sectionTitle))[0];if(!t)console.warn(`addSlide: unable to find section with title: "${e.sectionTitle}"`);else t._slides.push(n)}else if(this.sections&&this.sections.length>0&&!(e===null||e===void 0?void 0:e.sectionTitle)){const e=this._sections[this.sections.length-1];if(e._type==="default")e._slides.push(n);else{this._sections.push({title:`Default-${this.sections.filter((e=>e._type==="default")).length+1}`,_type:"default",_slides:[n]})}}return n}defineLayout(e){if(!e)console.warn("defineLayout requires `{name, width, height}`");else if(!e.name)console.warn("defineLayout requires `name`");else if(!e.width)console.warn("defineLayout requires `width`");else if(!e.height)console.warn("defineLayout requires `height`");else if(typeof e.height!=="number")console.warn("defineLayout `height` should be a number (inches)");else if(typeof e.width!=="number")console.warn("defineLayout `width` should be a number (inches)");this.LAYOUTS[e.name]={name:e.name,_sizeW:Math.round(Number(e.width)*r),_sizeH:Math.round(Number(e.height)*r),width:Math.round(Number(e.width)*r),height:Math.round(Number(e.height)*r)}}defineSlideMaster(e){const t=JSON.parse(JSON.stringify(e));if(!t.title)throw new Error("defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)");const o={_margin:t.margin||x,_name:t.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3+this.slideLayouts.length+1,_slideNumberProps:t.slideNumber||null,_slideObjects:[],background:t.background||null,bkgd:t.bkgd||null};createSlideMaster(t,o);this.slideLayouts.push(o);if(t.background||t.bkgd)addBackgroundDefinition(t.background,o);if(o._slideNumberProps&&!this.masterSlide._slideNumberProps)this.masterSlide._slideNumberProps=o._slideNumberProps}tableToSlides(e,t={}){genTableToSlides(this,e,t,(t===null||t===void 0?void 0:t.masterSlideName)?this.slideLayouts.filter((e=>e._name===t.masterSlideName))[0]:null)}}e.exports=PptxGenJS},6246:e=>{"use strict";if(typeof process==="undefined"||!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0){e.exports={nextTick:nextTick}}else{e.exports=process}function nextTick(e,t,o,n){if(typeof e!=="function"){throw new TypeError('"callback" argument must be a function')}var r=arguments.length;var a,i;switch(r){case 0:case 1:return process.nextTick(e);case 2:return process.nextTick((function afterTickOne(){e.call(null,t)}));case 3:return process.nextTick((function afterTickTwo(){e.call(null,t,o)}));case 4:return process.nextTick((function afterTickThree(){e.call(null,t,o,n)}));default:a=new Array(r-1);i=0;while(i<a.length){a[i++]=arguments[i]}return process.nextTick((function afterTick(){e.apply(null,a)}))}}},5950:function(){(function(e,t){"use strict";if(e.setImmediate){return}var o=1;var n={};var r=false;var a=e.document;var i;function setImmediate(e){if(typeof e!=="function"){e=new Function(""+e)}var t=new Array(arguments.length-1);for(var r=0;r<t.length;r++){t[r]=arguments[r+1]}var a={callback:e,args:t};n[o]=a;i(o);return o++}function clearImmediate(e){delete n[e]}function run(e){var o=e.callback;var n=e.args;switch(n.length){case 0:o();break;case 1:o(n[0]);break;case 2:o(n[0],n[1]);break;case 3:o(n[0],n[1],n[2]);break;default:o.apply(t,n);break}}function runIfPresent(e){if(r){setTimeout(runIfPresent,0,e)}else{var t=n[e];if(t){r=true;try{run(t)}finally{clearImmediate(e);r=false}}}}function installNextTickImplementation(){i=function(e){process.nextTick((function(){runIfPresent(e)}))}}function canUsePostMessage(){if(e.postMessage&&!e.importScripts){var t=true;var o=e.onmessage;e.onmessage=function(){t=false};e.postMessage("","*");e.onmessage=o;return t}}function installPostMessageImplementation(){var t="setImmediate$"+Math.random()+"$";var onGlobalMessage=function(o){if(o.source===e&&typeof o.data==="string"&&o.data.indexOf(t)===0){runIfPresent(+o.data.slice(t.length))}};if(e.addEventListener){e.addEventListener("message",onGlobalMessage,false)}else{e.attachEvent("onmessage",onGlobalMessage)}i=function(o){e.postMessage(t+o,"*")}}function installMessageChannelImplementation(){var e=new MessageChannel;e.port1.onmessage=function(e){var t=e.data;runIfPresent(t)};i=function(t){e.port2.postMessage(t)}}function installReadyStateChangeImplementation(){var e=a.documentElement;i=function(t){var o=a.createElement("script");o.onreadystatechange=function(){runIfPresent(t);o.onreadystatechange=null;e.removeChild(o);o=null};e.appendChild(o)}}function installSetTimeoutImplementation(){i=function(e){setTimeout(runIfPresent,0,e)}}var s=Object.getPrototypeOf&&Object.getPrototypeOf(e);s=s&&s.setTimeout?s:e;if({}.toString.call(e.process)==="[object process]"){installNextTickImplementation()}else if(canUsePostMessage()){installPostMessageImplementation()}else if(e.MessageChannel){installMessageChannelImplementation()}else if(a&&"onreadystatechange"in a.createElement("script")){installReadyStateChangeImplementation()}else{installSetTimeoutImplementation()}s.setImmediate=setImmediate;s.clearImmediate=clearImmediate})(typeof self==="undefined"?typeof global==="undefined"?this:global:self)},8430:(e,t,o)=>{e.exports=o(9023).deprecate},181:e=>{"use strict";e.exports=require("buffer")},5317:e=>{"use strict";e.exports=require("child_process")},6982:e=>{"use strict";e.exports=require("crypto")},4434:e=>{"use strict";e.exports=require("events")},9896:e=>{"use strict";e.exports=require("fs")},8611:e=>{"use strict";e.exports=require("http")},5692:e=>{"use strict";e.exports=require("https")},3024:e=>{"use strict";e.exports=require("node:fs")},4708:e=>{"use strict";e.exports=require("node:https")},857:e=>{"use strict";e.exports=require("os")},6928:e=>{"use strict";e.exports=require("path")},3785:e=>{"use strict";e.exports=require("readline")},2203:e=>{"use strict";e.exports=require("stream")},7016:e=>{"use strict";e.exports=require("url")},9023:e=>{"use strict";e.exports=require("util")},6257:(e,t,o)=>{"use strict";o.r(t);o.d(t,{apps:()=>P,default:()=>E,openApp:()=>openApp});const n=require("node:process");const r=require("node:buffer");const a=require("node:path");const i=require("node:url");const s=require("node:util");const l=require("node:child_process");const c=require("node:fs/promises");const d=require("node:os");var u=o(3024);let p;function hasDockerEnv(){try{u.statSync("/.dockerenv");return true}catch{return false}}function hasDockerCGroup(){try{return u.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return false}}function isDocker(){if(p===undefined){p=hasDockerEnv()||hasDockerCGroup()}return p}let A;const hasContainerEnv=()=>{try{u.statSync("/run/.containerenv");return true}catch{return false}};function isInsideContainer(){if(A===undefined){A=hasContainerEnv()||isDocker()}return A}const isWsl=()=>{if(n.platform!=="linux"){return false}if(d.release().toLowerCase().includes("microsoft")){if(isInsideContainer()){return false}return true}try{if(u.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")){return!isInsideContainer()}}catch{}if(u.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||u.existsSync("/run/WSL")){return!isInsideContainer()}return false};const f=n.env.__IS_WSL_TEST__?isWsl:isWsl();const h=(()=>{const e="/mnt/";let t;return async function(){if(t){return t}const o="/etc/wsl.conf";let n=false;try{await c.access(o,c.constants.F_OK);n=true}catch{}if(!n){return e}const r=await c.readFile(o,{encoding:"utf8"});const a=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(r);if(!a){return e}t=a.groups.mountPoint.trim();t=t.endsWith("/")?t:`${t}/`;return t}})();const powerShellPathFromWsl=async()=>{const e=await h();return`${e}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`};const powerShellPath=async()=>{if(f){return powerShellPathFromWsl()}return`${n.env.SYSTEMROOT||n.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`};function defineLazyProperty(e,t,o){const define=o=>Object.defineProperty(e,t,{value:o,enumerable:true,writable:true});Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){const e=o();define(e);return e},set(e){define(e)}});return e}const m=(0,s.promisify)(l.execFile);async function defaultBrowserId(){if(n.platform!=="darwin"){throw new Error("macOS only")}const{stdout:e}=await m("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]);const t=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e);const o=t?.groups.id??"com.apple.Safari";if(o==="com.apple.safari"){return"com.apple.Safari"}return o}const g=(0,s.promisify)(l.execFile);async function runAppleScript(e,{humanReadableOutput:t=true,signal:o}={}){if(n.platform!=="darwin"){throw new Error("macOS only")}const r=t?[]:["-ss"];const a={};if(o){a.signal=o}const{stdout:i}=await g("osascript",["-e",e,r],a);return i.trim()}function runAppleScriptSync(e,{humanReadableOutput:t=true}={}){if(process.platform!=="darwin"){throw new Error("macOS only")}const o=t?[]:["-ss"];const n=execFileSync("osascript",["-e",e,...o],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:500});return n.trim()}async function bundleName(e){return runAppleScript(`tell application "Finder" to set app_path to application file id "${e}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}const v=(0,s.promisify)(l.execFile);const y={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}};const b=new Map(Object.entries(y));class UnknownBrowserError extends Error{}async function defaultBrowser(e=v){const{stdout:t}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]);const o=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(t);if(!o){throw new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`)}const{id:n}=o.groups;const r=n.lastIndexOf(".");const a=n.lastIndexOf("-");const i=r===-1?undefined:n.slice(0,r);const s=a===-1?undefined:n.slice(0,a);return y[n]??y[i]??y[s]??{name:n,id:n}}const w=(0,s.promisify)(l.execFile);const titleize=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,(e=>e.toUpperCase()));async function default_browser_defaultBrowser(){if(n.platform==="darwin"){const e=await defaultBrowserId();const t=await bundleName(e);return{name:t,id:e}}if(n.platform==="linux"){const{stdout:e}=await w("xdg-mime",["query","default","x-scheme-handler/http"]);const t=e.trim();const o=titleize(t.replace(/.desktop$/,"").replace("-"," "));return{name:o,id:t}}if(n.platform==="win32"){return defaultBrowser()}throw new Error("Only macOS, Linux, and Windows are supported")}const x=(0,s.promisify)(l.execFile);const S=a.dirname((0,i.fileURLToPath)(require("url").pathToFileURL(__filename).href));const k=a.join(S,"xdg-open");const{platform:C,arch:T}=n;async function getWindowsDefaultBrowserFromWsl(){const e=await powerShellPath();const t=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`;const o=r.Buffer.from(t,"utf16le").toString("base64");const{stdout:n}=await x(e,["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",o],{encoding:"utf8"});const a=n.trim();const i={ChromeHTML:"com.google.chrome",BraveHTML:"com.brave.Browser",MSEdgeHTM:"com.microsoft.edge",FirefoxURL:"org.mozilla.firefox"};return i[a]?{id:i[a]}:{}}const pTryEach=async(e,t)=>{let o;for(const n of e){try{return await t(n)}catch(e){o=e}}throw o};const baseOpen=async e=>{e={wait:false,background:false,newInstance:false,allowNonzeroExitCode:false,...e};if(Array.isArray(e.app)){return pTryEach(e.app,(t=>baseOpen({...e,app:t})))}let{name:t,arguments:o=[]}=e.app??{};o=[...o];if(Array.isArray(t)){return pTryEach(t,(t=>baseOpen({...e,app:{name:t,arguments:o}})))}if(t==="browser"||t==="browserPrivate"){const n={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.Browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge"};const r={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"};const a=f?await getWindowsDefaultBrowserFromWsl():await default_browser_defaultBrowser();if(a.id in n){const i=n[a.id];if(t==="browserPrivate"){o.push(r[i])}return baseOpen({...e,app:{name:P[i],arguments:o}})}throw new Error(`${a.name} is not supported as a default browser`)}let a;const i=[];const s={};if(C==="darwin"){a="open";if(e.wait){i.push("--wait-apps")}if(e.background){i.push("--background")}if(e.newInstance){i.push("--new")}if(t){i.push("-a",t)}}else if(C==="win32"||f&&!isInsideContainer()&&!t){a=await powerShellPath();i.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand");if(!f){s.windowsVerbatimArguments=true}const n=["Start"];if(e.wait){n.push("-Wait")}if(t){n.push(`"\`"${t}\`""`);if(e.target){o.push(e.target)}}else if(e.target){n.push(`"${e.target}"`)}if(o.length>0){o=o.map((e=>`"\`"${e}\`""`));n.push("-ArgumentList",o.join(","))}e.target=r.Buffer.from(n.join(" "),"utf16le").toString("base64")}else{if(t){a=t}else{const e=!S||S==="/";let t=false;try{await c.access(k,c.constants.X_OK);t=true}catch{}const o=n.versions.electron??(C==="android"||e||!t);a=o?"xdg-open":k}if(o.length>0){i.push(...o)}if(!e.wait){s.stdio="ignore";s.detached=true}}if(C==="darwin"&&o.length>0){i.push("--args",...o)}if(e.target){i.push(e.target)}const d=l.spawn(a,i,s);if(e.wait){return new Promise(((t,o)=>{d.once("error",o);d.once("close",(n=>{if(!e.allowNonzeroExitCode&&n>0){o(new Error(`Exited with code ${n}`));return}t(d)}))}))}d.unref();return d};const open_open=(e,t)=>{if(typeof e!=="string"){throw new TypeError("Expected a `target`")}return baseOpen({...t,target:e})};const openApp=(e,t)=>{if(typeof e!=="string"&&!Array.isArray(e)){throw new TypeError("Expected a valid `name`")}const{arguments:o=[]}=t??{};if(o!==undefined&&o!==null&&!Array.isArray(o)){throw new TypeError("Expected `appArguments` as Array type")}return baseOpen({...t,app:{name:e,arguments:o}})};function detectArchBinary(e){if(typeof e==="string"||Array.isArray(e)){return e}const{[T]:t}=e;if(!t){throw new Error(`${T} is not supported`)}return t}function detectPlatformBinary({[C]:e},{wsl:t}){if(t&&f){return detectArchBinary(t)}if(!e){throw new Error(`${C} is not supported`)}return detectArchBinary(e)}const P={};defineLazyProperty(P,"chrome",(()=>detectPlatformBinary({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}})));defineLazyProperty(P,"brave",(()=>detectPlatformBinary({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}})));defineLazyProperty(P,"firefox",(()=>detectPlatformBinary({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"})));defineLazyProperty(P,"edge",(()=>detectPlatformBinary({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"})));defineLazyProperty(P,"browser",(()=>"browser"));defineLazyProperty(P,"browserPrivate",(()=>"browserPrivate"));const E=open_open},8330:e=>{"use strict";e.exports=JSON.parse('{"name":"voxflow","version":"1.10.21","description":"AI audio content creation CLI — stories, podcasts, narration, dubbing, transcription, translation, and video translation with TTS","bin":{"voxflow":"./dist/index.js"},"files":["dist/","README.md","LICENSE"],"engines":{"node":"^20.19.0 || >=22.12.0"},"dependencies":{"open":"^10.0.0","pptxgenjs":"^4.0.1"},"keywords":["tts","story","podcast","ai","audio","text-to-speech","voice","narration","dubbing","synthesize","voices","document","translate","subtitle","srt","transcribe","asr","video-translate","video","voxflow"],"scripts":{"build":"ncc build bin/voxflow.js -o dist --minify && rm -rf dist/cli && node scripts/check-no-asset-rewrite.js","prepublishOnly":"npm run build","lint":"eslint lib/ bin/ tests/","lint:fix":"eslint lib/ bin/ tests/ --fix","test":"node --test tests/*.test.js","test:watch":"node --test --watch tests/*.test.js","version":"node scripts/sync-plugin-versions.js && git add .claude-plugin/plugin.json .cursor-plugin/plugin.json .codex-plugin/plugin.json"},"author":"gonghaoran","license":"Apache-2.0","homepage":"https://voxflow.studio","repository":{"type":"git","url":"https://github.com/VoxFlowStudio/FlowStudio","directory":"cli"},"publishConfig":{"access":"public"},"devDependencies":{"@eslint/js":"^9.39.4","@vercel/ncc":"^0.38.4","eslint":"^9.39.4"}}')}};var t={};function __nccwpck_require__(o){var n=t[o];if(n!==undefined){return n.exports}var r=t[o]={exports:{}};var a=true;try{e[o].call(r.exports,r,r.exports,__nccwpck_require__);a=false}finally{if(a)delete t[o]}return r.exports}(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;var t;__nccwpck_require__.t=function(o,n){if(n&1)o=this(o);if(n&8)return o;if(typeof o==="object"&&o){if(n&4&&o.__esModule)return o;if(n&16&&typeof o.then==="function")return o}var r=Object.create(null);__nccwpck_require__.r(r);var a={};t=t||[null,e({}),e([]),e(e)];for(var i=n&2&&o;typeof i=="object"&&!~t.indexOf(i);i=e(i)){Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>o[e]))}a["default"]=()=>o;__nccwpck_require__.d(r,a);return r}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var o in t){if(__nccwpck_require__.o(t,o)&&!__nccwpck_require__.o(e,o)){Object.defineProperty(e,o,{enumerable:true,get:t[o]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();(()=>{__nccwpck_require__.r=e=>{if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(e,"__esModule",{value:true})}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var o={};if(process.env.CLAUDECODE){process.stderr.write('<claude-code-hint v="1" type="plugin" value="voxflow@claude-plugins-official" />\n')}const{run:n}=__nccwpck_require__(9226);const{logger:r}=__nccwpck_require__(5984);n().catch((e=>{process.stderr.write(`\nFatal error: ${e.message}\n`);r.debug({err:e},"fatal error");process.exit(1)}));module.exports=o})();
|
|
2
|
+
(()=>{var e={7171:e=>{const t={opening:{speed:1,volume:1},explain:{speed:.95,volume:1},question:{speed:1.05,volume:1.05},react:{speed:1,volume:.95},debate:{speed:1.1,volume:1.1},summary:{speed:.9,volume:1},summarize:{speed:.9,volume:1},transition:{speed:1.1,volume:.9},joke:{speed:1.05,volume:1.05},closing:{speed:.95,volume:.95}};function getIntentParams(e){if(!e||typeof e!=="string"){return{speed:1,volume:1}}return t[e]||{speed:1,volume:1}}e.exports={INTENT_TTS_PARAMS:t,getIntentParams:getIntentParams}},9226:(e,t,o)=>{const n=o(8330);const{logger:r,parseVerbosityFromArgv:a}=o(5984);const i={login:"handleLogin",logout:"handleLogout",status:"handleStatus",dashboard:"handleDashboard",clone:"handleClone"};const s=o(9229);function discoverCommands(){const e={};const t={};const o={};for(const[n,r]of Object.entries(s)){const a=r();if(!a||typeof a.meta!=="object")continue;for(const[r,i]of Object.entries(a.meta)){if(!i||typeof i!=="object")continue;e[r]=a;o[r]=i;void n;if(typeof i.alias==="string"){t[r]=i.alias}}}return{COMMAND_MAP:e,ALIASES:t,META:o}}let l=null;function getRegistry(){if(!l)l=discoverCommands();return l}function fastResolveCommand(e){if(!/^[a-z][a-z0-9-]*$/i.test(e))return null;const t=s[e];if(!t)return null;const o=t();if(!o||typeof o.meta!=="object")return null;const n=o.meta[e];if(!n||n.alias)return null;return o}async function run(e){const t=e||process.argv.slice(2);if(t.length===1&&(t[0]==="--version"||t[0]==="-v")){console.log(n.version);return}const{level:s,rest:l}=a(t);r.setLevel(s);const c=l[0];if(!c||c==="--help"||c==="-h"){printHelp();return}if(c==="--version"){console.log(n.version);return}if(l.includes("--help")||l.includes("-h")){printSubcommandHelp(c);return}if(i[c]){const e=o(7823);return e[i[c]](l.slice(1))}let d=fastResolveCommand(c);let u=null;if(!d){const{COMMAND_MAP:e,ALIASES:t}=getRegistry();const o=e[c];if(!o){console.error(`Unknown command: ${c}\nRun voxflow --help for usage.`);process.exit(1)}u=t[c]||null;d=u?e[u]:o}await d.handle(l.slice(1));try{const{promptFeedback:e}=o(5503);await e(u||c)}catch{}}function getAllMeta(){return{...getRegistry().META}}function printHelp(){const e=getAllMeta();const t=[`\nvoxflow v${n.version} — AI audio content creation CLI`,"","Usage:"," voxflow <command> [options]","","Commands:"];for(const[o,n]of Object.entries(e)){if(n.alias)continue;const e=(o+(n.usage?" "+n.usage:"")).padEnd(18);t.push(` ${e} ${n.description}`)}t.push("");for(const[o,n]of Object.entries(e)){if(n.alias||!n.options)continue;const e=n.aliasOf?`${o} options (alias: ${n.aliasOf}):`:`${o} options:`;t.push(e.charAt(0).toUpperCase()+e.slice(1));t.push(...n.options.map((e=>" "+e)));t.push("")}t.push("Common options:"," --help, -h Show help (use with a command for command-specific help)"," --version, -v Show version","","Advanced options:"," --api <url> Override API endpoint (for self-hosted servers)"," --token <jwt> Use explicit token (CI/CD, skip browser login)","","Examples:");for(const[,o]of Object.entries(e)){if(o.alias||!o.examples)continue;t.push(...o.examples.map((e=>" "+e)))}console.log(t.join("\n"))}function printSubcommandHelp(e){const t=getAllMeta();const o=t[e];if(!o){printHelp();return}const n=o.alias?t[o.alias]:o;if(!n||!n.options){printHelp();return}const r=o.alias||e;const a=[`\nvoxflow ${r} — ${n.description}`,"","Usage:",` voxflow ${r}${n.usage?" "+n.usage:""}`,"","Options:",...n.options.map((e=>" "+e))," --api <url> Override API endpoint"," --token <jwt> Use explicit token (skip browser login)"];if(n.examples&&n.examples.length>0){a.push("","Examples:",...n.examples.map((e=>" "+e)))}console.log(a.join("\n"))}e.exports={run:run}},9229:(e,t,o)=>{"use strict";e.exports={add:()=>o(9492),asr:()=>o(5357),"asr-jobs":()=>o(7654),"auth-cmds":()=>o(7823),dub:()=>o(220),explain:()=>o(6352),feedback:()=>o(1104),image:()=>o(6794),narrate:()=>o(4268),picstory:()=>o(1850),podcast:()=>o(8167),present:()=>o(8204),publish:()=>o(4460),skills:()=>o(89),slice:()=>o(8609),slides:()=>o(1089),story:()=>o(3362),summarize:()=>o(6046),synthesize:()=>o(5859),translate:()=>o(173),"video-translate":()=>o(6851),voices:()=>o(2972)}},9492:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const a=o(8611);const i=o(5692);const{URL:s}=o(7016);const l="https://raw.githubusercontent.com/VoxFlowStudio/skills/main";const c="voxflow";const d={"voxflow:flow":"flows","voxflow:voice-recipe":"recipes","voxflow:preset":"presets"};function fetchText(e){return new Promise(((t,o)=>{const n=new s(e);const r=n.protocol==="https:"?i:a;r.get(n,(n=>{if(n.statusCode===301||n.statusCode===302){if(n.headers.location){fetchText(n.headers.location).then(t,o);return}}if(n.statusCode!==200){o(new Error(`HTTP ${n.statusCode} fetching ${e}`));n.resume();return}const r=[];n.on("data",(e=>r.push(e)));n.on("end",(()=>t(Buffer.concat(r).toString("utf8"))))})).on("error",(e=>o(e)))}))}function resolveItemName(e,t){if(e.includes("/")){const[t,o]=e.split("/",2);return{author:t,name:o,key:`${t}/${o}`}}return{author:t,name:e,key:`${t}/${e}`}}function localTargetForFile(e,t){const o=`${e.author}/${e.name}/`;const n=t.startsWith(o)?t.slice(o.length):t;const a=d[e.type]||"voxflow-items";return r.join(a,e.name,n)}function findItem(e,t,o){return e.items.find((e=>(e.author||c)===t&&e.name===o))}function suggestNearby(e,t){const o=e.items.map((e=>`${e.author||c}/${e.name}`));return o.filter((e=>e.includes(t)||t.includes(e.split("/")[1]))).slice(0,5)}async function add(e){const{name:t,registry:o=l,defaultAuthor:a=c,targetRoot:i=process.cwd(),force:s=false,log:d=console.log}=e;if(!t){throw new Error(`add_missing_name: voxflow add <name> — see voxflow add --help`)}const{author:u,name:p,key:A}=resolveItemName(t,a);d(`◆ Fetching registry index: ${o}/registry.json`);let f;try{f=await fetchText(`${o}/registry.json`)}catch(e){throw new Error(`registry_unreachable: ${e.message}\n fix: check network or pass --registry <url>`)}let h;try{h=JSON.parse(f)}catch(e){throw new Error(`registry_invalid_json: ${o}/registry.json\n fix: check the registry repo is healthy`)}if(!h||!Array.isArray(h.items)){throw new Error(`registry_invalid_shape: missing items[] in registry.json`)}const m=findItem(h,u,p);if(!m){const e=suggestNearby(h,p);const t=e.length?`\n did you mean: ${e.join(", ")}`:`\n fix: voxflow add --list to see available items`;throw new Error(`item_not_found: ${A}${t}`)}if(!Array.isArray(m.files)||m.files.length===0){throw new Error(`item_empty_files: ${A} declares no files in registry`)}d(`◆ Resolving ${A} (${m.type}) v${m.version||"unversioned"}`);const g=[];const v=[];for(const e of m.files){const t=r.join(i,localTargetForFile(m,e));if(n.existsSync(t)&&!s){v.push(t);continue}const a=`${o}/${e}`;let l;try{l=await fetchText(a)}catch(e){throw new Error(`file_fetch_failed: ${a}\n ${e.message}`)}n.mkdirSync(r.dirname(t),{recursive:true});n.writeFileSync(t,l);g.push(t)}d(`✓ Added ${A} (${m.type})${m.version?" v"+m.version:""}`);for(const e of g){d(` ${r.relative(i,e)}`)}if(v.length){d(`\n Skipped (use --force to overwrite):`);for(const e of v){d(` ${r.relative(i,e)}`)}}if(m.tryWith){d(`\nTry it:\n ${m.tryWith}`)}return{item:m,written:g,skipped:v}}async function handle(e){const t={};const o=e.filter(((t,o)=>{if(t.startsWith("--"))return false;if(o>0&&e[o-1].startsWith("--")&&!e[o-1].includes("="))return false;return true}));t.name=o[0];for(let o=0;o<e.length;o++){if(e[o]==="--registry"&&e[o+1])t.registry=e[++o];else if(e[o]==="--default-author"&&e[o+1])t.defaultAuthor=e[++o];else if(e[o]==="--force")t.force=true;else if(e[o]==="--list")t.list=true}if(t.list){const e=(t.registry||l)+"/registry.json";const o=await fetchText(e);const n=JSON.parse(o);console.log(`Registry: ${n.name} v${n.version||"unversioned"}\n`);for(const e of n.items){const t=`${e.author||c}/${e.name}`;console.log(` ${t.padEnd(36)} ${e.type.padEnd(22)} ${e.description||""}`)}return}await add(t)}const u={add:{usage:"<name> [opts]",description:"Pull a flow / voice-recipe / preset from the registry into the current project",options:[`--registry <url> Override registry URL (default: ${l})`,`--default-author <name> Resolve unscoped names against this author (default: ${c})`,`--force Overwrite existing local files`,`--list List all items in the registry`],examples:["voxflow add dub-anime-jp-zh","voxflow add chico/my-custom-recipe","voxflow add --list","voxflow add foo --registry https://example.com/voxflow-registry/main"]}};e.exports={add:add,handle:handle,meta:u,_internal:{resolveItemName:resolveItemName,localTargetForFile:localTargetForFile,findItem:findItem,suggestNearby:suggestNearby}}},7654:(e,t,o)=>{const n=o(9896);const r=o(6928);const{API_BASE:a}=o(3282);const{getToken:i,getTokenInfo:s}=o(598);const{parseFlag:l,parseIntFlag:c,runWithRetry:d}=o(5537);const u=o(3077);const p=o(5013);const{formatSrt:A,formatPlainText:f,formatJson:h}=o(8217);const m={srt:".srt",txt:".txt",json:".json"};async function listJobs({apiBase:e,token:t,limit:o,jsonOut:n}){const r=await u.listJobs(e,t,{limit:o});if(n){process.stdout.write(`${JSON.stringify(r,null,2)}\n`);return{count:r.length}}if(r.length===0){console.log("No ASR jobs found.");return{count:0}}console.log(`\n=== ASR Jobs (${r.length}) ===\n`);console.log(" ID Status Duration Created Filename");console.log(" ──────────────────────────────────── ───────── ───────── ───────────────────── ────────");for(const e of r){const t=(e.id||"").padEnd(38);const o=String(e.status||"?").padEnd(9);const n=e.result_duration_sec?`${Math.round(e.result_duration_sec)}s`:e.source_duration_sec?`~${e.source_duration_sec}s`:"?";const r=(e.created_at||"").slice(0,19).replace("T"," ").padEnd(21);const a=e.source_filename||"";console.log(` ${t} ${o} ${n.padEnd(9)} ${r} ${a}`)}return{count:r.length}}async function showJob({apiBase:e,token:t,jobId:o,jsonOut:n}){const r=await u.getJob(e,t,o);if(n){process.stdout.write(`${JSON.stringify(r,null,2)}\n`);return r}console.log(`\n=== ASR Job ${r.id} ===`);console.log(`Status: ${r.status}${r.progress!=null?` (${r.progress}%)`:""}`);console.log(`Provider: ${r.provider}`);console.log(`Source: ${r.source_filename||"(unknown)"}${r.source_size?` (${formatSize(r.source_size)})`:""}`);console.log(`Language: ${r.result_language||r.language||"?"}`);console.log(`Duration: ${r.result_duration_sec?Math.round(r.result_duration_sec)+"s":r.source_duration_sec?"~"+r.source_duration_sec+"s":"?"}`);console.log(`Quota: ${r.quota_charged}`);console.log(`Created: ${r.created_at}`);if(r.completed_at)console.log(`Completed: ${r.completed_at}`);if(r.error_code)console.log(`Error: ${r.error_code} — ${r.error_message||""}`);if(r.status==="succeeded"&&r.result_json?.text){const e=r.result_json.text.slice(0,500);console.log(`\n--- Transcript (${r.result_segments_count||0} segments) ---`);console.log(e+(r.result_json.text.length>500?"...":""));console.log(`\nRun \`voxflow asr-jobs download ${r.id}\` to write the full transcript.`)}return r}async function cancelJob({apiBase:e,token:t,jobId:o}){const n=await u.cancelJob(e,t,o);if(n.status==="cancelled"){console.log(`Cancelled job ${n.id}. Quota refunded: ${n.quota_charged}.`)}else{console.log(`Job ${n.id} is already ${n.status} (no-op).`)}p.deleteJob(o);return n}async function downloadJob({apiBase:e,token:t,jobId:o,format:a,outputPath:i}){const s=await u.getJob(e,t,o);if(s.status!=="succeeded"){throw new Error(`Job is ${s.status}, no transcript available yet. Status:\n voxflow asr-jobs show ${o}`)}const l=s.result_json?.segments||[];const c=l.map(((e,t)=>({id:t+1,startMs:Math.round((e.start||0)*1e3),endMs:Math.round((e.end||0)*1e3),text:e.text||"",speakerId:e.speaker||null})));let d;switch(a){case"srt":d=A(c);break;case"txt":d=f(c,{includeSpeakers:true});break;case"json":d=h(c);break;default:throw new Error(`Unknown format: ${a}`)}const p=m[a]||".txt";const g="asr-"+o+p;const v=i?r.resolve(i):r.resolve(g);n.writeFileSync(v,d,"utf8");console.log(`Wrote ${c.length} segments to ${v}`);return{outputPath:v,captionCount:c.length}}function formatSize(e){if(!Number.isFinite(e))return"?";if(e<1024)return`${e} B`;if(e<1024*1024)return`${(e/1024).toFixed(1)} KB`;return`${(e/1024/1024).toFixed(1)} MB`}async function handle(e){const t=e[0];if(!t||t.startsWith("-")){printHelp();process.exit(t?0:1)}if(!["list","show","cancel","download"].includes(t)){console.error(`Error: unknown subcommand "${t}". Use one of: list | show | cancel | download`);process.exit(1)}const o=e.slice(1);const n=l(o,"--api")||a;const r=l(o,"--token");const u=o.includes("--json");const p=c(o,"--limit")||20;const A=l(o,"--format")||"srt";const f=l(o,"--output","-o");if(A&&!["srt","txt","json"].includes(A)){console.error(`Error: --format must be one of: srt, txt, json (got: "${A}")`);process.exit(1)}const h=o.filter((e=>!e.startsWith("-")));const m=pickJobId(o);const g=r||await i({api:n});const v=s();if(v&&!u)console.log(`[32mLogged in as ${v.email}[0m`);const y={apiBase:n,token:g,jobId:m,limit:p,jsonOut:u,format:A,outputPath:f};async function dispatch(e){if(t==="list"){return await listJobs({apiBase:e.apiBase,token:e.token,limit:e.limit,jsonOut:e.jsonOut})}if(!e.jobId){console.error(`Error: <jobId> is required for ${t}.\nUsage: voxflow asr-jobs ${t} <jobId>`);process.exit(1)}if(t==="show")return await showJob({apiBase:e.apiBase,token:e.token,jobId:e.jobId,jsonOut:e.jsonOut});if(t==="cancel")return await cancelJob({apiBase:e.apiBase,token:e.token,jobId:e.jobId});if(t==="download")return await downloadJob({apiBase:e.apiBase,token:e.token,jobId:e.jobId,format:e.format,outputPath:e.outputPath});return null}try{return await d(dispatch,y,n,r)}catch(e){console.error(`Error: ${e.message}`);process.exit(1)}return h}function pickJobId(e){const t=new Set(["--api","--token","--limit","--format","--output","-o"]);let o=false;for(const n of e){if(o){o=false;continue}if(t.has(n)){o=true;continue}if(n.startsWith("-"))continue;return n}return null}function printHelp(){console.log(`Usage: voxflow asr-jobs <subcommand> [options]\n\nSubcommands:\n list List recent ASR jobs (server-side)\n show <jobId> Show one job (with transcript preview)\n cancel <jobId> Cancel a running job (refunds quota)\n download <jobId> Write the transcript to a file\n\nOptions:\n --api <url> API base URL (default: ${a})\n --token <jwt> Bypass token cache for one-off calls\n --limit <n> (list) Number of jobs to fetch (default 20)\n --format srt|txt|json (download) Output format (default srt)\n --output, -o <path> (download) Output file path\n --json (list/show) Emit raw JSON to stdout\n\nExamples:\n voxflow asr-jobs list\n voxflow asr-jobs show 6f3c2798-87bf-4367-bb4c-08b872e12bef\n voxflow asr-jobs download 6f3c2798-… --format srt -o meeting.srt\n voxflow asr-jobs cancel 6f3c2798-…`)}const g={"asr-jobs":{usage:"<list|show|cancel|download> [opts]",description:"Browse, inspect, cancel, and download long-running Azure ASR jobs",options:[`list List recent jobs`,`show <jobId> Show one job (with preview)`,`cancel <jobId> Cancel a running job`,`download <jobId> Write the transcript locally`,`--limit <n> (list) default 20`,`--format srt|txt|json (download) default srt`,`--output, -o <path> (download) target file path`,`--json (list/show) raw JSON output`],examples:["voxflow asr-jobs list","voxflow asr-jobs show 6f3c2798-87bf-4367-bb4c-08b872e12bef","voxflow asr-jobs download 6f3c2798-… --format srt -o meeting.srt","voxflow asr-jobs cancel 6f3c2798-…"]}};e.exports={handle:handle,meta:g,listJobs:listJobs,showJob:showJob,cancelJob:cancelJob,downloadJob:downloadJob}},5357:(e,t,o)=>{"use strict";e.exports=o(8630)},9261:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const{getMediaInfo:a,extractAudioForAsr:i}=o(7656);const{uploadToR2:s}=o(8683);const l=o(3077);const c=o(5013);const{formatSrt:d,formatPlainText:u,formatJson:p}=o(8217);const{FORMAT_EXTENSIONS:A,formatDuration:f,formatSize:h}=o(4231);const m={"16k_zh":"zh-CN","16k_zh_en":"zh-CN","16k_zh_dialect":"zh-CN","8k_zh":"zh-CN","16k_en":"en-US","8k_en":"en-US","16k_ja":"ja-JP","16k_ko":"ko-KR"};function toBcp47(e){if(!e||e==="auto")return"auto";return m[e]||e}const g=8;const v=2.5;const y=/[。!?]/;const b=/[.!?。!?]/;const w=/[-ヿ㐀-䶿一-鿿-]/;function joinWords(e){let t="";for(let o=0;o<e.length;o++){const n=e[o];if(o===0){t=n;continue}const r=e[o-1];const a=!w.test(r.slice(-1))&&!w.test(n.slice(0,1));t+=(a?" ":"")+n}return t}function splitSegmentByWords(e){const t=e.words;if(!t||t.length===0){return[{start:e.start,end:e.end,text:e.text,speaker:e.speaker}]}const o=[];let n=[];let r=null;const flush=t=>{if(n.length===0)return;o.push({start:r,end:t,text:joinWords(n.map((e=>e.word))),speaker:e.speaker||null});n=[];r=null};for(let e=0;e<t.length;e++){const o=t[e];if(r===null)r=o.start;n.push(o);const a=o.end-r;const i=e===t.length-1;const s=y.test(o.word)||b.test(o.word);if(i||a>=g||s&&a>=v){flush(o.end)}}return o}function azureSegmentsToCaptions(e=[]){const t=[];for(const o of e){for(const e of splitSegmentByWords(o)){t.push(e)}}return t.map(((e,t)=>({id:t+1,startMs:Math.round(e.start*1e3),endMs:Math.round(e.end*1e3),text:e.text,speakerId:e.speaker||null})))}async function asrAzure({apiBase:e,token:t,input:o,lang:d,format:u,output:p,opts:A,tempFiles:m}){if(!o){throw new Error("Azure engine requires --input <file>. URL and microphone input "+"will be supported in a follow-up.")}let g=r.resolve(o);if(!n.existsSync(g))throw new Error(`Input file not found: ${g}`);console.log("\n=== VoxFlow ASR (Azure Batch) ===");console.log(`Input: ${r.basename(g)}`);const v=toBcp47(d);console.log(`Language: ${v}`);console.log(`Format: ${u}`);const y=await a(g);if(!y.hasAudio)throw new Error("Input file has no audio track.");const b=Math.max(1,Math.round(y.durationMs/1e3));const w=r.basename(g);let x=n.statSync(g).size;console.log(`Duration: ${f(y.durationMs)}`);console.log(`Size: ${h(x)}`);try{console.log(`\n[1/4] Extract audio (16kHz mono WAV)...`);const e=await i(g);m.push(e.wavPath);g=e.wavPath;x=n.statSync(g).size;console.log(` OK (${h(x)})`)}catch(e){console.log(` ffmpeg unavailable, uploading original (${e.message})`)}console.log(`\n[2/4] Upload to Cloudflare R2...`);let S=-1;const{key:k,mode:C}=await s({filePath:g,apiBase:e,token:t,onProgress:({uploaded:e,total:t,partNumber:o,partCount:n})=>{const r=Math.floor(e/t*100);if(r!==S){process.stdout.write(`\r ${r}% (${h(e)}/${h(t)}, part ${o}/${n}) `);S=r}}});process.stdout.write("\n");console.log(` OK (${C}, key=${k})`);console.log(`\n[3/4] Create transcription job...`);let T=await l.createJob({apiBase:e,token:t,sourceKey:k,sourceFilename:w,sourceSize:x,durationSec:b,language:v,options:{wordTimestamps:true,diarize:!!A.diarize,speakerCount:A.speakerNumber||undefined}});console.log(` OK (jobId=${T.id})`);c.saveJob(T.id,{createdAt:T.created_at,status:T.status,source:{path:o,filename:w,durationSec:b},language:v});try{c.pruneTerminal()}catch{}console.log(`\n[4/4] Wait for transcription (Ctrl+C is safe — job persists)`);const P=Date.now();let E=null;T=await l.waitForTerminal({apiBase:e,token:t,jobId:T.id,onProgress:e=>{c.saveJob(e.id,{createdAt:e.created_at,status:e.status,source:{path:o,filename:w,durationSec:b},language:v});if(e.status!==E||e.progress!==T.progress){const t=Math.round((Date.now()-P)/1e3);process.stdout.write(`\r ${e.status} ${e.progress||0}% (${t}s) `);E=e.status;T=e}}});process.stdout.write("\n");if(T.status!=="succeeded"){c.saveJob(T.id,{createdAt:T.created_at,status:T.status,source:{path:o,filename:w,durationSec:b},language:v});throw new Error(`Job ${T.status}: ${T.error_message||T.error_code||"unknown error"}`)}return finalizeAzureOutput({job:T,input:o,format:u,output:p,durationMs:y.durationMs})}async function asrAzureResume({apiBase:e,token:t,jobId:o,format:n,output:r}){console.log(`\n=== VoxFlow ASR — Resume Azure Job ===`);console.log(`Job ID: ${o}`);const a=Date.now();let i=null;const s=await l.waitForTerminal({apiBase:e,token:t,jobId:o,onProgress:e=>{if(e.status!==i){const t=Math.round((Date.now()-a)/1e3);process.stdout.write(`\r ${e.status} ${e.progress||0}% (${t}s) `);i=e.status}}});process.stdout.write("\n");if(s.status!=="succeeded"){throw new Error(`Job ${s.status}: ${s.error_message||s.error_code||"unknown error"}`)}c.saveJob(s.id,{createdAt:s.created_at,status:s.status,source:{filename:s.source_filename},language:s.language});return finalizeAzureOutput({job:s,format:n,output:r})}function finalizeAzureOutput({job:e,input:t,format:o,output:a,durationMs:i}){const s=azureSegmentsToCaptions(e.result_json?.segments||[]);let l;switch(o){case"srt":l=d(s);break;case"txt":l=u(s,{includeSpeakers:true});break;case"json":l=p(s);break;default:throw new Error(`Unknown format: ${o}`)}const c=A[o]||".txt";let h;if(a){h=r.resolve(a)}else if(t){const e=r.basename(t,r.extname(t));const o=e+c;h=r.resolve(r.dirname(t),o)}else{const t="asr-"+e.id+c;h=r.resolve(t)}n.writeFileSync(h,l,"utf8");const m=e.result_duration_sec?Math.round(e.result_duration_sec*1e3):i||0;console.log(`\n=== Done ===`);console.log(`Output: ${h}`);console.log(`Captions: ${s.length}`);console.log(`Duration: ${f(m)}`);console.log(`Engine: azure`);console.log(`Job ID: ${e.id}`);console.log(`Quota: ${e.quota_charged} charged`);if(s.length>0&&o!=="json"){console.log(`\n--- Preview ---`);for(const e of s.slice(0,3)){const t=f(e.startMs);const o=e.speakerId?`[${e.speakerId}] `:"";const n=e.text.length>60?`${e.text.slice(0,57)}...`:e.text;console.log(` ${t} ${o}${n}`)}if(s.length>3)console.log(` ... (${s.length-3} more)`)}return{outputPath:h,mode:"azure",duration:m/1e3,captionCount:s.length,jobId:e.id,quotaUsed:e.quota_charged||0}}e.exports={asrAzure:asrAzure,asrAzureResume:asrAzureResume,finalizeAzureOutput:finalizeAzureOutput,azureSegmentsToCaptions:azureSegmentsToCaptions,joinWords:joinWords,splitSegmentByWords:splitSegmentByWords}},3931:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const{API_BASE:a,ASR_DEFAULTS:i}=o(3282);const{getMediaInfo:s,extractAudioForAsr:l}=o(7656);const{uploadAsrAudio:c}=o(2040);const{downloadUrlToTempFile:d}=o(5764);const{recognize:u,detectMode:p,BASE64_MAX_BYTES:A,TASK_STATUS:f}=o(4142);const{formatSrt:h,formatPlainText:m,formatJson:g,buildCaptionsFromFlash:v,buildCaptionsFromSentence:y,buildCaptionsFromFile:b}=o(8217);const{FORMAT_EXTENSIONS:w,LANG_LABELS:x,formatDuration:S,formatSize:k}=o(4231);async function asrCloud(e,t){const{token:o,api:C=a,input:T,url:P,mic:E=false,mode:_=i.mode,lang:L=i.lang,format:I=i.format,output:B,speakers:D=false,speakerNumber:N=0}=e;const R=[T,P,E].filter(Boolean).length;if(R===0){throw new Error("No input specified. Provide one of:\n"+" --input <file> Local audio/video file\n"+" --url <url> Remote audio URL\n"+" --mic Record from microphone")}if(R>1){throw new Error("Specify only one input source: --input, --url, or --mic")}console.log("\n=== VoxFlow ASR ===");let F=T?r.resolve(T):null;let M=P;if(E){F=await handleMicInput();t.push(F)}if(M&&!F){console.log(`Input: ${M}`);console.log(`\nFetching remote URL...`);try{const e=await d(M,{onProgress:(e,t)=>{const o=(e/1024/1024).toFixed(1);if(t){const n=Math.round(e/t*100);process.stdout.write(`\r ${o} MB / ${(t/1024/1024).toFixed(1)} MB (${n}%) `)}else{process.stdout.write(`\r ${o} MB downloaded `)}}});process.stdout.write(`\n`);console.log(` OK (${(e.size/1024/1024).toFixed(1)} MB → ${e.filePath})`);F=e.filePath;t.push(F);M=null}catch(e){throw new Error(`Failed to fetch ${M}: ${e.message}`)}}try{if(F&&!n.existsSync(F)){throw new Error(`Input file not found: ${F}`)}let a=0;let i=0;let d=M||null;if(F){console.log(`Input: ${r.basename(F)}`);const e=await s(F);a=e.durationMs;i=n.statSync(F).size;const o=S(a);const c=k(i);console.log(`Duration: ${o}`);console.log(`Size: ${c}`);if(!e.hasAudio){throw new Error("Input file has no audio track.")}console.log(`\n[1/3] Extracting audio (16kHz mono WAV)...`);const d=await l(F);t.push(d.wavPath);a=d.durationMs;i=n.statSync(d.wavPath).size;F=d.wavPath;console.log(` OK (${k(i)}, ${S(a)})`)}else{console.log(`Input: ${P}`);console.log(`(Remote URL — duration will be detected by ASR API)`)}const R=!!d;const O=_==="auto"?p(a,R||!!F,i):_;console.log(`Mode: ${O}`);console.log(`Language: ${x[L]||L}`);console.log(`Format: ${I}`);if(F&&!d){const e=O==="flash"||O==="file"&&i>A||O==="sentence"&&i>A;if(e){console.log(`\n[2/3] Uploading to Supabase Storage...`);const e=await c(F,C,o);d=e.downloadUrl;console.log(` OK (${e.path})`)}else{console.log(`\n[2/3] Uploading... (skipped, using base64)`)}}else if(!F&&d){console.log(`\n[2/3] Uploading... (skipped, using remote URL)`)}console.log(`\n[3/3] ASR speech recognition (${O})...`);const $=Date.now();const z=await u({apiBase:C,token:o,mode:O,url:d,filePath:!d?F:undefined,durationMs:a,fileSize:i,lang:L,speakerDiarization:D,speakerNumber:N,wordInfo:I==="srt",onProgress:(e,t)=>{const o=e===f.WAITING?"Queued":e===f.PROCESSING?"Recognizing":"Unknown";process.stdout.write(`\r ${o}... (${Math.round(t/1e3)}s)`)}});const j=((Date.now()-$)/1e3).toFixed(1);console.log(`\n OK (${j}s)`);const U=z.audioTime||a/1e3||0;let W;switch(z.mode){case"flash":W=v(z.flashResult||[]);break;case"sentence":W=y(z.result,U,z.wordList);break;case"file":W=b(z.result,U);break;default:W=[{id:1,startMs:0,endMs:0,text:z.result||""}]}let q;switch(I){case"srt":q=h(W);break;case"txt":q=m(W,{includeSpeakers:D});break;case"json":q=g(W);break;default:throw new Error(`Unknown format: ${I}. Use: srt, txt, json`)}const G=w[I]||".txt";const X=e._initialCwd||process.cwd();let H;if(B){H=r.isAbsolute(B)?B:r.resolve(X,B)}else if(T){const e=r.isAbsolute(T)?T:r.resolve(X,T);const t=r.basename(e,r.extname(e));const o=t+G;H=r.join(r.dirname(e),o)}else if(E){const e="mic-"+Date.now()+G;H=r.join(X,e)}else{try{const e=new URL(P);const t=r.basename(e.pathname,r.extname(e.pathname))||"asr";const o=t+G;H=r.join(X,o)}catch{const e="asr-"+Date.now()+G;H=r.join(X,e)}}n.writeFileSync(H,q,"utf8");const Q=z.quota||{};const V=1;const Y=Q.remaining??"?";console.log(`\n=== Done ===`);console.log(`Output: ${H}`);console.log(`Captions: ${W.length}`);console.log(`Duration: ${S(a||(z.audioTime||0)*1e3)}`);console.log(`Mode: ${z.mode}`);console.log(`Quota: ${V} used, ${Y} remaining`);if(W.length>0&&I!=="json"){console.log(`\n--- Preview ---`);const e=W.slice(0,3);for(const t of e){const e=S(t.startMs);const o=t.speakerId?`[${t.speakerId}] `:"";const n=t.text.length>60?t.text.slice(0,57)+"...":t.text;console.log(` ${e} ${o}${n}`)}if(W.length>3){console.log(` ... (${W.length-3} more)`)}}return{outputPath:H,mode:z.mode,duration:a/1e3,captionCount:W.length,quotaUsed:V}}finally{for(const e of t){try{n.unlinkSync(e)}catch{}}}}async function resumePoll({apiBase:e,token:t,taskId:a,format:i,output:s}){console.log(`\n=== VoxFlow ASR — Resume Task ===`);console.log(`Task ID: ${a}`);const{pollTaskResult:l,TASK_STATUS:c}=o(4142);console.log(`Polling...`);const d=await l({apiBase:e,token:t,taskId:a,onProgress:(e,t)=>{const o=e===c.WAITING?"Queued":e===c.PROCESSING?"Recognizing":"?";process.stdout.write(`\r ${o}... (${Math.round(t/1e3)}s)`)}});console.log(`\n OK`);const u=b(d.result,d.audioTime);let p;switch(i){case"srt":p=h(u);break;case"txt":p=m(u);break;case"json":p=g(u);break;default:p=m(u)}const A=w[i]||".txt";const f=s?r.resolve(s):r.resolve(`task-${a}${A}`);n.writeFileSync(f,p,"utf8");console.log(`\n=== Done ===`);console.log(`Output: ${f}`);console.log(`Captions: ${u.length}`);console.log(`Duration: ${S((d.audioTime||0)*1e3)}`);return{outputPath:f,mode:"file",duration:d.audioTime,captionCount:u.length}}async function handleMicInput(){const{recordMic:e,checkRecAvailable:t}=o(132);const n=await t();if(!n.available){throw new Error(n.error)}console.log(`\nRecording from microphone...`);console.log(` Press Enter or Q to stop recording.`);console.log(` Max duration: 5 minutes.\n`);const{wavPath:r,durationMs:a,stopped:i}=await e({maxSeconds:300});console.log(`\n Recording ${i==="user"?"stopped":"finished"}: ${S(a)}`);return r}e.exports={asrCloud:asrCloud,resumePoll:resumePoll}},4231:(e,t,o)=>{"use strict";const n={"16k_zh":"Chinese (16kHz)","16k_en":"English (16kHz)","16k_zh_en":"Chinese-English (16kHz)","16k_ja":"Japanese (16kHz)","16k_ko":"Korean (16kHz)","16k_zh_dialect":"Chinese dialect (16kHz)","8k_zh":"Chinese (8kHz phone)","8k_en":"English (8kHz phone)"};const r={srt:".srt",txt:".txt",json:".json"};function formatDuration(e){if(!e||e<=0)return"0s";const t=Math.round(e/1e3);if(t<60)return`${t}s`;const o=Math.floor(t/60);const n=t%60;if(o<60)return`${o}m${n>0?n+"s":""}`;const r=Math.floor(o/60);const a=o%60;return`${r}h${a>0?a+"m":""}`}function formatSize(e){if(e<1024)return`${e} B`;if(e<1024*1024)return`${(e/1024).toFixed(1)} KB`;return`${(e/1024/1024).toFixed(1)} MB`}function resolveEngine(e){const{checkWhisperAvailable:t}=o(4178);if(e==="local"||e==="whisper"){const e=t();if(!e.available){throw new Error("Local whisper engine requires nodejs-whisper.\n"+"Install: npm install -g nodejs-whisper\n"+"Download a model: npx nodejs-whisper download\n"+"Or use: --engine cloud")}return"local"}if(e==="azure")return"azure";if(e==="cloud"||e==="tencent")return"cloud";if(e==="auto"){const{available:e}=t();return e?"local":"cloud"}return"cloud"}e.exports={LANG_LABELS:n,FORMAT_EXTENSIONS:r,formatDuration:formatDuration,formatSize:formatSize,resolveEngine:resolveEngine}},8630:(e,t,o)=>{"use strict";const n=o(9896);const{API_BASE:r,ASR_DEFAULTS:a}=o(3282);const{ApiError:i}=o(2768);const{resolveEngine:s}=o(4231);const{asrLocal:l}=o(1053);const{asrAzure:c,asrAzureResume:d,joinWords:u,splitSegmentByWords:p,azureSegmentsToCaptions:A}=o(9261);const{asrCloud:f,resumePoll:h}=o(3931);async function asr(e){let t=false;let r=[];const a=process.cwd();const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nASR cancelled.");for(const e of r){try{n.unlinkSync(e)}catch{}}process.exit(130)};process.on("SIGINT",sigintHandler);const{startBackgroundRefresh:i}=o(598);const s=i({api:e.api});try{return await _asr({...e,_initialCwd:a},r)}finally{s();process.removeListener("SIGINT",sigintHandler)}}async function _asr(e,t){const{token:o,api:n=r,mode:i=a.mode,lang:u=a.lang,format:p=a.format,output:A,taskId:m,jobId:g,engine:v="auto",model:y="base"}=e;if(g){return await d({apiBase:n,token:o,jobId:g,format:p,output:A})}if(m){return await h({apiBase:n,token:o,taskId:m,format:p,output:A,lang:u})}const b=s(v);if(b==="local"){return await l({input:e.input,format:p,output:A,model:y,lang:u})}if(b==="azure"){return await c({apiBase:n,token:o,input:e.input,lang:u,format:p,output:A,opts:e,tempFiles:t})}return await f(e,t)}async function handle(e){const{parseFlag:t,parseIntFlag:r,parseBoolFlag:a,runWithRetry:i}=o(5537);const{getToken:s,getTokenInfo:l}=o(598);const{API_BASE:c,ASR_DEFAULTS:d,getConfigDir:u}=o(3282);const{warnIfMissingFfmpeg:p}=o(9933);await p(u(),"asr");const A=t(e,"--api")||c;const f=t(e,"--token");const h=t(e,"--engine")||d.engine;const m=t(e,"--model")||d.model;if(h&&!["auto","local","cloud","whisper","tencent","azure"].includes(h)){console.error(`Error: --engine must be one of: auto, local, cloud, azure (got: "${h}")`);process.exit(1)}if(m&&!["tiny","base","small","medium","large"].includes(m)){console.error(`Error: --model must be one of: tiny, base, small, medium, large (got: "${m}")`);process.exit(1)}const g=t(e,"--input");const v=t(e,"--url");const y=a(e,"--mic");const b=t(e,"--mode")||d.mode;const w=t(e,"--lang")||t(e,"--language")||d.lang;const x=t(e,"--format")||d.format;const S=t(e,"--output","-o");const k=a(e,"--speakers");const C=r(e,"--speaker-number");const T=r(e,"--task-id");const P=t(e,"--job-id");const E=a(e,"--diarize")||k;if(b&&!["auto","sentence","flash","file"].includes(b)){console.error(`Error: --mode must be one of: auto, sentence, flash, file (got: "${b}")`);process.exit(1)}if(x&&!["srt","txt","json"].includes(x)){console.error(`Error: --format must be one of: srt, txt, json (got: "${x}")`);process.exit(1)}if(g){const e=o(6928);const t=e.resolve(g);if(!n.existsSync(t)){console.error(`Error: Input file not found: ${t}`);process.exit(1)}}const _=h==="local"||h==="whisper";let L;if(_){L=null}else if(f){L=f}else{L=await s({api:A});const e=l();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const I={token:L,api:A,input:g,url:v,mic:y,mode:b,lang:w,format:x,output:S,speakers:k,speakerNumber:C,taskId:T,jobId:P,diarize:E,engine:h,model:m};if(_){await asr(I)}else{await i(asr,I,A,f)}}const m={asr:{usage:"[opts]",description:"Transcribe audio/video to text (alias: transcribe)",aliasOf:"transcribe",options:[`--input <file> Local audio or video file to transcribe`,`--url <url> Remote audio URL — CLI fetches it locally then re-uploads (cloud only)`,`--mic Record from microphone (cloud only, requires sox)`,`--engine <type> auto (default) | local | cloud | azure`,`--model <name> Whisper model: tiny, base (default), small, medium, large`,`--mode <type> auto (default) | sentence | flash | file (cloud only)`,`--lang <model> Language. Tencent: 16k_zh (default), 16k_en, ... | Azure: ja-JP, en-US, zh-CN, ...`,`--format <fmt> Output format: srt (default), txt, json`,`--output <path> Output file path (default: <input>.<format>)`,`--speakers Enable speaker diarization (alias of --diarize)`,`--diarize Enable speaker diarization (azure)`,`--speaker-number <n> Expected number of speakers (with --speakers / --diarize)`,`--task-id <id> Resume polling an existing async task (Tencent — numeric)`,`--job-id <uuid> Resume polling an existing Azure job (UUID)`],examples:["voxflow asr --input recording.mp3","voxflow asr --input recording.mp3 --engine local --model small","voxflow asr --input video.mp4 --format srt --lang 16k_zh","voxflow asr --input meeting.mp4 --engine azure --lang ja-JP --diarize","voxflow asr --engine azure --job-id 6f3c2798-87bf-4367-bb4c-08b872e12bef","voxflow transcribe --input meeting.wav --speakers --speaker-number 3"]},transcribe:{alias:"asr",description:"Alias for asr"}};e.exports={asr:asr,handle:handle,meta:m,ApiError:i};e.exports._internals={joinWords:u,splitSegmentByWords:p,azureSegmentsToCaptions:A}},1053:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const{ASR_DEFAULTS:a}=o(3282);const{getMediaInfo:i,extractAudioForAsr:s}=o(7656);const{transcribeLocal:l}=o(4178);const{formatSrt:c,formatPlainText:d,formatJson:u}=o(8217);const{FORMAT_EXTENSIONS:p,formatDuration:A,formatSize:f}=o(4231);async function asrLocal(e){const{input:t,format:o=a.format,output:h,model:m="base",lang:g=a.lang}=e;console.log("\n=== VoxFlow ASR (Local Whisper) ===");if(!t){throw new Error("Local whisper engine requires --input <file>.\n"+"URL and microphone input are cloud-only features.\n"+"Use: voxflow asr --input <file> --engine local")}const v=r.resolve(t);if(!n.existsSync(v)){throw new Error(`Input file not found: ${v}`)}const y=await i(v);console.log(`Input: ${r.basename(v)}`);console.log(`Duration: ${A(y.durationMs)}`);console.log(`Engine: whisper (local)`);console.log(`Model: ${m}`);console.log(`\n[1/2] Extracting audio (16kHz mono WAV)...`);const b=await s(v);console.log(` OK (${f(n.statSync(b.wavPath).size)})`);console.log(`[2/2] Whisper local recognition...`);const w=Date.now();const x=await l(b.wavPath,{model:m,lang:g});const S=((Date.now()-w)/1e3).toFixed(1);console.log(` OK (${S}s, ${x.length} segments)`);try{n.unlinkSync(b.wavPath)}catch{}let k;switch(o){case"srt":k=c(x);break;case"txt":k=d(x);break;case"json":k=u(x);break;default:throw new Error(`Unknown format: ${o}. Use: srt, txt, json`)}const C=p[o]||".txt";let T;if(h){T=r.resolve(h)}else{const e=r.basename(t,r.extname(t))+C;T=r.resolve(r.dirname(t),e)}n.writeFileSync(T,k,"utf8");console.log(`\n=== Done ===`);console.log(`Output: ${T}`);console.log(`Captions: ${x.length}`);console.log(`Duration: ${A(y.durationMs)}`);console.log(`Engine: whisper (local, no quota used)`);if(x.length>0&&o!=="json"){console.log(`\n--- Preview ---`);const e=x.slice(0,3);for(const t of e){const e=A(t.startMs);const o=t.text.length>60?t.text.slice(0,57)+"...":t.text;console.log(` ${e} ${o}`)}if(x.length>3){console.log(` ... (${x.length-3} more)`)}}return{outputPath:T,mode:"local",duration:y.durationMs/1e3,captionCount:x.length,quotaUsed:0}}e.exports={asrLocal:asrLocal}},7823:(e,t,o)=>{const{getToken:n,clearToken:r,getTokenInfo:a,getFreshTokenInfo:i,terminalOtpLogin:s,buildPrintOnlyLoginUrl:l,acceptManualAuthPayload:c,readCachedToken:d}=o(598);const{API_BASE:u,DASHBOARD_URL:p}=o(3282);const{parseFlag:A,parseBoolFlag:f,runWithRetry:h}=o(5537);const{request:m}=o(2768);const g="https://www.voxflow.studio/app#voice-clone";async function readAllStdin(){const e=[];for await(const t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf8")}async function handleLogin(e){const t=A(e,"--api")||u;const o=f(e,"--otp");const r=f(e,"--print-url");const i=A(e,"--paste");if(r){const e=l(t);process.stdout.write(`${e}\n`);if(process.stderr.isTTY){process.stderr.write("\nNext step: open this URL in a browser, complete login,\n");process.stderr.write("then paste the auth payload back via:\n");process.stderr.write(" voxflow login --paste '<json-payload>'\n\n")}return}if(i!=null){let e=i;if(i==="-"){e=await readAllStdin();if(!e||!e.trim()){console.error("[31m✗ Login failed: stdin is empty. Pipe the JSON payload, e.g. echo '{...}' | voxflow login --paste -[0m");process.exit(1)}}const o=c(e,t);if(!o.ok){console.error(`[31m✗ Login failed: ${o.message}[0m`);process.exit(1)}console.log(`[32m✓ Logged in as ${o.info.email}[0m`);console.log(`Token expires: ${o.info.expiresAt}`);console.log(`API: ${o.info.api}`);return}if(o){await s(t)}else{console.log("Logging in...");const e=await n({api:t,force:true});void e}const d=a();if(d){console.log(`[32mLogged in as ${d.email}[0m`);console.log(`Token expires: ${d.expiresAt}`);console.log(`API: ${d.api}`)}}function handleLogout(){r();console.log("Logged out. Token cache cleared.")}async function fetchQuota(e){try{const t=d();if(!t)return null;const{status:o,data:n}=await m(`${e}/api/user/quota`,{method:"GET",headers:{Authorization:`Bearer ${t.access_token}`},timeoutMs:5e3});if(o!==200||n?.code!=="success")return null;return n.data||null}catch{return null}}function formatQuotaLines(e){const t=[];const o=e.subscription_tier||"free";const n=e.monthly||0;const r=e.used||0;const a=Math.max(0,n-r);const i=e.bonus||0;const s=e.remaining!=null?e.remaining:a+i;t.push(`Tier: ${o}`);t.push(`Quota: ${s.toLocaleString()} credits remaining`);t.push(` ${a.toLocaleString()} monthly + ${i.toLocaleString()} bonus (used ${r.toLocaleString()} this cycle)`);if(e.days_until_reset!=null){t.push(` monthly resets in ${e.days_until_reset} day${e.days_until_reset===1?"":"s"}`)}return t}async function handleStatus(e=[]){const t=f(e,"--json");const o=await i();const n=o?await fetchQuota(o.api||u):null;if(t){const e=o?{loggedIn:true,email:o.email,api:o.api,expiresAt:o.expiresAt,valid:o.valid,refreshHealth:o.refreshHealth,quota:n,dashboard:p}:{loggedIn:false,dashboard:p};console.log(JSON.stringify(e,null,2));return}if(!o){console.log("Not logged in. Run: voxflow login");return}console.log(`Email: ${o.email}`);console.log(`API: ${o.api}`);console.log(`Expires: ${o.expiresAt}`);console.log(`Valid: ${o.valid?"[32myes[0m":"[31mexpired[0m"}`);if(o.refreshHealth==="ok"){console.log(`Refresh: [32mhealthy[0m`)}else if(o.refreshHealth==="missing"){console.log(`Refresh: [33mmissing — next token expiry will require browser login[0m`)}else if(o.refreshHealth==="malformed"){console.log(`Refresh: [31mmalformed — run [36mvoxflow login[31m to recover cleanly[0m`)}if(n){for(const e of formatQuotaLines(n))console.log(e)}if(!o.valid){console.log("\nToken expired. Run: voxflow login")}console.log(`\nDashboard: ${p}`);console.log("Run [36mvoxflow dashboard[0m to open in browser.")}async function handleDashboard(){const e=p;console.log(`\nOpening dashboard: ${e}`);try{const t=(await Promise.resolve().then(o.bind(o,6257))).default;const n=await t(e);if(n&&typeof n.on==="function"){n.on("error",(()=>{console.log("[31mFailed to open browser. Visit manually:[0m");console.log(` ${e}`)}))}}catch{console.log("[31mFailed to open browser. Visit manually:[0m");console.log(` ${e}`)}}async function handleClone(e=[]){const t=o(9896);const r=o(6928);const i=A(e,"--input")||A(e,"-i");const s=A(e,"--name")||"";if(!i){const e=g;console.log("\nNo --input file provided. Opening web interface for recording...");console.log("Record or upload 30+ seconds of audio, then get a voice ID you can use anywhere.\n");console.log(`Opening: ${e}`);try{const t=(await Promise.resolve().then(o.bind(o,6257))).default;const n=await t(e);if(n&&typeof n.on==="function"){n.on("error",(()=>{console.log("[31mFailed to open browser. Visit manually:[0m");console.log(` ${e}`)}))}}catch{console.log("[31mFailed to open browser. Visit manually:[0m");console.log(` ${e}`)}console.log("\nOr provide a local audio file:");console.log(' voxflow clone --input my-voice.wav --name "My Voice"');return}const l=r.resolve(i);if(!t.existsSync(l)){console.error(`Error: File not found: ${l}`);process.exit(1)}const c=A(e,"--api")||u;const d=A(e,"--token");const{throwApiError:p,throwNetworkError:f}=o(2768);const{startSpinner:v}=o(5319);const y=d||await n({api:c});const b=a();if(b){console.log(`[32mLogged in as ${b.email}[0m`)}const w=t.readFileSync(l);const x=w.toString("base64");const S=(w.length/1024/1024).toFixed(1);if(w.length>10*1024*1024){console.error(`Error: File too large (${S}MB). Maximum is 10MB.`);process.exit(1)}const k=s||r.basename(l,r.extname(l));console.log(`\nCloning voice from: ${r.basename(l)} (${S}MB)`);console.log(`Voice name: ${k}`);async function doClone(e){const t=v("Cloning voice");let o,n;try{({status:o,data:n}=await m(`${c}/api/voice/clone`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`}},{audioData:x,voiceName:k}))}catch(e){t.stop("");f(e,c)}t.stop("");if(o===401){p(401,n,"voice clone")}if(o!==200||n?.code!=="success"){const e=n?.message||`Clone failed (HTTP ${o})`;console.error(`[31mError: ${e}[0m`);if(n?.code==="clone_limit_exceeded"){console.error("Tip: Delete unused clones at https://www.voxflow.studio/app#voice-clone")}process.exit(1)}const r=n.voiceId||n.data?.voiceId||n.data?.voice_id||"unknown";console.log(`\n[32mVoice cloned successfully![0m`);console.log(`Voice ID: [36m${r}[0m`);console.log(`\nUse it in any command:`);console.log(` voxflow say "你好" --voice ${r}`);console.log(` voxflow narrate --input doc.md --voice ${r}`);console.log(` voxflow podcast "topic" --voice ${r}`)}await h(doClone,{token:y},c,d)}const v={login:{usage:"[--otp] [--print-url] [--paste <json>]",description:"Login via browser (default), terminal OTP, or non-interactive paste (for AI agents)",options:["--otp Login via email + verification code in terminal (no browser)","--print-url Print the login URL and exit (no listener) — for AI agents that hand the URL to a human","--paste <json|-> Accept the auth payload from a flag (or `-` to read stdin) — pairs with --print-url"],examples:["voxflow login # browser flow (interactive)","voxflow login --otp # terminal OTP (no browser)","voxflow login --print-url # AI agent: print URL, hand to user",'voxflow login --paste \'{"access_token":"..."}\' # AI agent: feed back the JSON the user copied']},logout:{usage:"",description:"Clear cached token"},status:{usage:"[--json]",description:"Show login status and token info",options:["--json Output machine-readable JSON (for scripts/CI)"]},dashboard:{usage:"",description:"Open Web dashboard in browser"},clone:{usage:"[--input <file>] [--name <name>]",description:"Clone your voice from an audio file, or open web UI to record",options:["--input <file> Audio file (wav/mp3, 30s+) to clone from","--name <name> Voice name (default: filename)"]}};e.exports={handleLogin:handleLogin,handleLogout:handleLogout,handleStatus:handleStatus,handleDashboard:handleDashboard,handleClone:handleClone,meta:v,_test:{fetchQuota:fetchQuota,formatQuotaLines:formatQuotaLines,readAllStdin:readAllStdin}}},220:(e,t,o)=>{const n=o(9896);const r=o(6928);const{DUB_DEFAULTS:a}=o(3282);const{ApiError:i}=o(2768);const{buildWav:s}=o(7188);const{parseSrt:l}=o(8217);const{buildTimelineAudio:c,msToBytes:d,BYTES_PER_MS:u}=o(9167);const{synthesizeTTS:p}=o(1428);function parseVoicesMap(e){if(!n.existsSync(e)){throw new Error(`Voices map file not found: ${e}`)}let t;try{t=JSON.parse(n.readFileSync(e,"utf8"))}catch(e){throw new Error(`Invalid JSON in voices map: ${e.message}`)}if(typeof t!=="object"||t===null||Array.isArray(t)){throw new Error('Voices map must be a JSON object: { "SpeakerName": "voiceId", ... }')}for(const[e,o]of Object.entries(t)){if(typeof o!=="string"||o.trim().length===0){throw new Error(`Invalid voice ID for speaker "${e}": must be a non-empty string`)}}return t}async function synthesizeCaption(e,t,o,n,r,a,i,s){const l=await p({apiBase:e,token:t,text:o,voiceId:n,speed:r??1,format:a||"pcm",index:i,total:s});const c=l.audio.length/u;console.log(` OK (${(l.audio.length/1024).toFixed(0)} KB, ${(c/1e3).toFixed(1)}s)`);return{audio:l.audio,quota:l.quota,durationMs:c}}async function dub(e){let t=false;const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nDubbing cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _dub(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _dub(e){const t=e.srt;if(!t){throw new Error("No SRT file provided. Usage: voxflow dub --srt <file.srt>")}const i=r.resolve(t);if(!n.existsSync(i)){throw new Error(`SRT file not found: ${i}`)}const s=n.readFileSync(i,"utf8");const d=l(s);if(d.length===0){throw new Error("SRT file contains no valid captions")}const u=e.voice||a.voice;const p=e.speed??a.speed;const A=e.speedAuto||false;const f=a.toleranceMs;const h=e.api;const m=e.token;const g=e.patch;const v=[];let y=null;if(e.voicesMap){y=parseVoicesMap(r.resolve(e.voicesMap))}let b=e.output;const w=!!e.video;const x=w?".mp4":".wav";if(!b){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);b=r.resolve(`dub-${e}${x}`)}console.log("\n=== VoxFlow Dub ===");console.log(`SRT: ${t} (${d.length} captions)`);console.log(`Voice: ${u}${y?` + voices map (${Object.keys(y).length} speakers)`:""}`);console.log(`Speed: ${p}${A?" (auto-compensate)":""}`);if(w)console.log(`Video: ${e.video}`);if(e.bgm)console.log(`BGM: ${e.bgm} (ducking: ${e.ducking??a.ducking})`);if(g!=null)console.log(`Patch: caption #${g}`);console.log(`Output: ${b}`);if(g!=null){return _dubPatch(e,d,b,v,y)}console.log(`\n[1/2] Synthesizing TTS audio (${d.length} captions)...`);const S=[];let k=null;let C=0;for(let e=0;e<d.length;e++){const t=d[e];const o=t.endMs-t.startMs;let n=u;if(y&&t.speakerId&&y[t.speakerId]){n=y[t.speakerId]}let r=await synthesizeCaption(h,m,t.text,n,p,"pcm",e,d.length);C++;k=r.quota;if(A&&r.durationMs>o+f){const a=r.durationMs/o;if(a<=2){const i=Math.min(p*a,2);process.stdout.write(` ↳ Re-synth #${t.id} (${(r.durationMs/1e3).toFixed(1)}s > ${(o/1e3).toFixed(1)}s, speed: ${i.toFixed(2)})...`);r=await synthesizeCaption(h,m,t.text,n,i,"pcm",e,d.length);C++;k=r.quota}else{const i=`Caption #${t.id}: audio too long (${(r.durationMs/1e3).toFixed(1)}s for ${(o/1e3).toFixed(1)}s slot, alpha=${a.toFixed(1)}). Consider shortening text.`;v.push(i);console.log(` ⚠ OVERFLOW: ${i}`);const s=await synthesizeCaption(h,m,t.text,n,2,"pcm",e,d.length);C++;k=s.quota;r=s}}S.push({startMs:t.startMs,endMs:t.endMs,audioBuffer:r.audio})}console.log("\n[2/2] Building timeline audio...");const{wav:T,duration:P}=c(S);const E=r.extname(b).toLowerCase();const _=!w&&E!==".wav";const L=w?b.replace(/\.[^.]+$/,".tmp.wav"):_?b.slice(0,-E.length)+".tmp.wav":b;const I=r.dirname(L);n.mkdirSync(I,{recursive:true});n.writeFileSync(L,T);const B=b.replace(/\.[^.]+$/,".txt");const D=d.map((e=>{const t=e.speakerId?`|${e.speakerId}`:"";const o=y&&e.speakerId&&y[e.speakerId]?`|${y[e.speakerId]}`:"";return`[${e.id}${t}${o}] ${e.text}`})).join("\n\n");n.writeFileSync(B,D,"utf8");const N=w||e.bgm||_;if(N){const{checkFfmpeg:t,mergeAudioVideo:r,mixWithBgm:i,convertAudioFormat:s}=o(9933);const l=await t();if(!l.available){throw new Error("ffmpeg is required for BGM mixing / video merging / audio format conversion. Install it:\n"+" macOS: brew install ffmpeg\n"+" Ubuntu: sudo apt install ffmpeg\n"+" Windows: https://ffmpeg.org/download.html")}let c=L;if(e.bgm){const t=L.replace(".tmp.wav","-mixed.tmp.wav").replace(/(?<!\.tmp)\.wav$/,"-mixed.wav");console.log(` Mixing BGM (ducking: ${e.ducking??a.ducking})...`);await i(L,e.bgm,t,{ducking:e.ducking??a.ducking});c=t;if(!w){n.copyFileSync(c,L);try{n.unlinkSync(c)}catch{}c=L}}if(w){console.log(" Merging with video...");await r(e.video,c,b);try{if(L!==b)n.unlinkSync(L);if(e.bgm){const e=L.replace(".tmp.wav","-mixed.tmp.wav").replace(/(?<!\.tmp)\.wav$/,"-mixed.wav");if(n.existsSync(e))n.unlinkSync(e)}}catch{}}if(_&&!w){await s(L,b);try{n.unlinkSync(L)}catch{}}}console.log(`\n=== Done ===`);console.log(`Output: ${b} (${(n.statSync(b).size/1024).toFixed(1)} KB)`);console.log(`Duration: ${P.toFixed(1)}s`);console.log(`Transcript: ${B}`);console.log(`Captions: ${d.length}`);console.log(`Quota: ${C} used, ${k?.remaining??"?"} remaining`);if(v.length>0){console.log(`\nWarnings (${v.length}):`);for(const e of v){console.log(` ⚠ ${e}`)}}return{outputPath:b,textPath:B,duration:P,quotaUsed:C,segmentCount:d.length,warnings:v}}async function _dubPatch(e,t,o,r,i){const l=e.patch;const c=e.api;const p=e.token;const A=e.voice||a.voice;const f=e.speed??a.speed;const h=t.findIndex((e=>e.id===l));if(h===-1){throw new Error(`Caption #${l} not found in SRT. Available IDs: ${t.map((e=>e.id)).join(", ")}`)}const m=t[h];const g=o.replace(/\.[^.]+$/,".wav");if(!n.existsSync(g)){throw new Error(`Patch mode requires an existing output file. `+`Run a full dub first, then use --patch to update individual captions.`)}let v=A;if(i&&m.speakerId&&i[m.speakerId]){v=i[m.speakerId]}console.log(`\n[Patch] Re-synthesizing caption #${l}: "${m.text.slice(0,40)}..."`);const y=await synthesizeCaption(c,p,m.text,v,f,"pcm",0,1);const b=n.readFileSync(g);const w=b.subarray(44);const x=d(m.startMs);const S=d(m.endMs);w.fill(0,x,Math.min(S,w.length));const k=Math.min(y.audio.length,S-x,w.length-x);if(k>0){y.audio.copy(w,x,0,k)}const{wav:C}=s([w],0);n.writeFileSync(g,C);console.log(`\n=== Patch Done ===`);console.log(`Updated: caption #${l} in ${g}`);console.log(`Quota: 1 used, ${y.quota?.remaining??"?"} remaining`);return{outputPath:g,textPath:g.replace(/\.wav$/i,".txt"),duration:w.length/(u*1e3),quotaUsed:1,segmentCount:1,warnings:r}}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,validateSpeed:i,runWithRetry:s}=o(5537);const{getToken:l,getTokenInfo:c}=o(598);const{API_BASE:d,getConfigDir:u}=o(3282);const{warnIfMissingFfmpeg:p}=o(9933);await p(u(),"dub");const A=t(e,"--api")||d;const f=t(e,"--token");const h=t(e,"--srt");const m=t(e,"--video");const g=t(e,"--output","-o");const v=r(e,"--speed");const y=r(e,"--ducking");const b=n(e,"--patch");if(!h&&!a(e,"--help")){console.error("Error: --srt <file> is required. Usage: voxflow dub --srt <file.srt>");process.exit(1)}if(h){const e=o(9896);const t=o(6928);const n=t.resolve(h);if(!e.existsSync(n)){console.error(`Error: SRT file not found: ${n}`);process.exit(1)}}if(m){const e=o(9896);const t=o(6928);const n=t.resolve(m);if(!e.existsSync(n)){console.error(`Error: Video file not found: ${n}`);process.exit(1)}}const w=t(e,"--voices");if(w){const e=o(9896);const t=o(6928);const n=t.resolve(w);if(!e.existsSync(n)){console.error(`Error: Voices map file not found: ${n}`);process.exit(1)}}const x=t(e,"--bgm");if(x){const e=o(9896);const t=o(6928);const n=t.resolve(x);if(!e.existsSync(n)){console.error(`Error: BGM file not found: ${n}`);process.exit(1)}}i(e,v);if(g){const e=m?[".mp4",".mkv",".mov"]:[".wav",".mp3"];const t=e.some((e=>g.toLowerCase().endsWith(e)));if(!t){const t=e.join(", ");console.error(`Error: --output path must end with ${t}`);process.exit(1)}}if(y!==undefined){if(isNaN(y)||y<0||y>1){console.error(`Error: --ducking must be between 0 and 1.0 (got: "${t(e,"--ducking")}")`);process.exit(1)}}let S;if(f){S=f}else{S=await l({api:A});const e=c();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const k={token:S,api:A,srt:h,video:m,output:g,speed:v,patch:b,voice:t(e,"--voice"),voicesMap:w,speedAuto:a(e,"--speed-auto"),bgm:x,ducking:y};await s(dub,k,A,f)}const A={dub:{usage:"[opts]",description:"Dub video/audio from SRT subtitles (timeline-aligned TTS)",options:[`--srt <file> SRT subtitle file (required)`,`--video <file> Video file — merge dubbed audio into video`,`--voice <id> Default TTS voice ID (default: ${a.voice})`,`--voices <file> JSON speaker→voiceId map for multi-speaker dubbing`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--speed-auto Auto-adjust speed when audio overflows time slot`,`--bgm <file> Background music file to mix in`,`--ducking <n> BGM volume ducking 0-1.0 (default: ${a.ducking})`,`--patch <id> Re-synthesize a single caption by ID (patch mode)`,`--output <path> Output file path (default: ./dub-<timestamp>.wav)`],examples:["voxflow dub --srt subtitles.srt","voxflow dub --srt subtitles.srt --video input.mp4 --output dubbed.mp4","voxflow dub --srt subtitles.srt --voices speakers.json --speed-auto","voxflow dub --srt subtitles.srt --bgm music.mp3 --ducking 0.3","voxflow dub --srt subtitles.srt --patch 5 --output dub-existing.wav"]}};e.exports={dub:dub,handle:handle,meta:A,ApiError:i,_test:{parseVoicesMap:parseVoicesMap}}},6352:(e,t,o)=>{const n=o(9896);const r=o(6928);const{EXPLAIN_DEFAULTS:a}=o(3282);const{request:i,throwApiError:s,throwNetworkError:l}=o(2768);const{buildWav:c}=o(7188);const{BYTES_PER_MS:d}=o(9167);const{mergeAudioVideo:u}=o(9933);const{startSpinner:p}=o(5319);const A={title:"What is React?",language:"en",style:"modern",scenes:[{type:"title",title:"What is React?",subtitle:"A JavaScript library for building user interfaces",narration:"Welcome to this quick explainer on React, one of the most popular frontend libraries in the world."},{type:"bullets",heading:"Core Concepts",bullets:["Component-based architecture","Virtual DOM for efficient updates","Declarative UI with JSX","Unidirectional data flow"],narration:"React is built around several core concepts. First, everything is a component. Second, it uses a virtual DOM for efficient rendering. Third, you write declarative UI with JSX syntax. And fourth, data flows in one direction, from parent to child."},{type:"bullets",heading:"Why Use React?",bullets:["Massive ecosystem and community","Reusable component library","Excellent developer tools"],narration:"So why choose React? It has a massive ecosystem with thousands of libraries. You can build reusable component libraries. And the developer tools are some of the best in the industry."},{type:"summary",heading:"Key Takeaways",points:["React makes UI development predictable and efficient","Components are the building blocks of React apps","The virtual DOM optimizes rendering performance"],narration:"To summarize: React makes UI development predictable and efficient. Components are the fundamental building blocks. And the virtual DOM ensures your app stays fast, even as it grows. Thanks for watching!"}]};async function synthesizeScene(e,t,o,n,r,a,c){process.stdout.write(` TTS scene [${a+1}/${c}]...`);let u,p;try{({status:u,data:p}=await i(`${e}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}},{text:o,voiceId:n,speed:r,volume:1}))}catch(t){console.log(" FAIL");l(t,e)}if(u!==200||p.code!=="success"){console.log(" FAIL");s(u,p,`TTS scene ${a+1}`)}const A=Buffer.from(p.audio,"base64");const f=Math.round(A.length/d);console.log(` OK (${(A.length/1024).toFixed(0)} KB, ${(f/1e3).toFixed(1)}s)`);return{pcm:A,durationMs:f,quota:p.quota}}function buildNarrationWav(e,t){const o=c(e,t);return o.wav}async function generateScript(e,t,o,{language:n="en",sceneCount:r=5,style:a="modern"}={}){let s,l;try{({status:s,data:l}=await i(`${e}/api/llm/generate-explain-script`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{topic:o,language:n,sceneCount:r,style:a}))}catch(e){console.log(` ⚠ LLM request failed: ${e.message}`);console.log(" Falling back to demo script template.");return buildFallbackScript(o,a)}if(s!==200||l.code!=="success"||!l.script){const e=l?.message||`HTTP ${s}`;console.log(` ⚠ LLM generation failed: ${e}`);console.log(" Falling back to demo script template.");return buildFallbackScript(o,a)}console.log(` ✓ Script generated: "${l.script.title}" (${l.script.scenes.length} scenes)`);return l.script}function buildFallbackScript(e,t){const o={...A,title:e,style:t};o.scenes=[{...A.scenes[0],title:e,narration:`Welcome to this explainer on ${e}.`},...A.scenes.slice(1)];return o}function findRemotionDir(){let e=__dirname;for(let t=0;t<5;t++){const t=r.join(e,"remotion");if(n.existsSync(r.join(t,"package.json"))){return t}e=r.dirname(e)}return null}function isRemotionAvailable(){const e=findRemotionDir();if(!e)return false;return n.existsSync(r.join(e,"node_modules","remotion"))}async function renderVideo(e,t,a,i){const s=findRemotionDir();if(!s){throw new Error("Remotion directory not found. Ensure remotion/ exists at the repo root with dependencies installed.")}const l=n.mkdtempSync(r.join(o(857).tmpdir(),"voxflow-explain-"));const c=r.join(l,"props.json");const d={fps:30,script:e,scenes:t};n.writeFileSync(c,JSON.stringify(d,null,2));const u=r.join(s,"render.ts");const{execFile:p}=o(5317);const A=r.join(s,"node_modules",".bin","ts-node");return new Promise(((e,t)=>{const o=p(A,[u,"--props",c,"--output",a],{cwd:s,maxBuffer:50*1024*1024,timeout:6e5},((o,r,i)=>{try{n.unlinkSync(c);n.rmdirSync(l)}catch{}if(o){t(new Error(`Remotion render failed: ${o.message}\n${i}`));return}try{const t=r.trim().split("\n");const o=t[t.length-1];const n=JSON.parse(o);e(n)}catch{e({output:a})}}));if(o.stderr&&i){let e="";o.stderr.on("data",(t=>{e+=t.toString();const o=e.split("\n");e=o.pop()||"";for(const e of o){try{const t=JSON.parse(e);if(t.type==="progress"&&i){i(t.percent)}}catch{}}}))}}))}async function explain(e){const{token:t,api:o,topic:r="demo",voice:i=a.voice,style:s=a.style,language:l=a.language,speed:c=a.speed,scenes:d=a.sceneCount,audioOnly:f=false,cloud:h=false}=e;if(e.output&&e.output.endsWith(".mp3")){throw new Error("MP3 output is not supported for explain. Use .wav or .mp4")}const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{let m;const g=r==="demo"||r==="Demo";if(g){console.log("\n[1/4] Using demo script (hardcoded)...");m={...A,style:s}}else{console.log("\n[1/4] Generating script via LLM...");console.log(` Topic: "${r}" (${l}, ${d} scenes)`);m=await generateScript(o,t,r,{language:l,sceneCount:d,style:s})}console.log(` Script: ${m.scenes.length} scenes, style: ${m.style}`);console.log(`\n[2/4] Synthesizing narration (${m.scenes.length} scenes)...`);const v=[];const y=[];let b=null;let w=null;for(let e=0;e<m.scenes.length;e++){const n=m.scenes[e];const r=await synthesizeScene(o,t,n.narration,i,c,e,m.scenes.length);v.push(r.pcm);if(!b&&r.quota)b=r.quota;w=r.quota;y.push({scene:n,durationMs:r.durationMs,audioSrc:""})}const x=buildNarrationWav(v,a.silence);const S=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);let k;if(f||!isRemotionAvailable()){if(!f&&!isRemotionAvailable()){console.log("\n[3/4] Remotion not available. Falling back to audio-only output.");console.log(" To enable video rendering, install Remotion:");console.log(" cd remotion && npm install")}else{console.log("\n[3/4] Building audio-only output...")}k=e.output||`explain-${S}.wav`;n.writeFileSync(k,x)}else{if(h){console.log("\n[3/4] Cloud rendering coming in Phase 2. Using local render.")}k=e.output||`explain-${S}.mp4`;const t=p(h?" Rendering video...":"\n[3/4] Rendering video...");try{const e=k+".silent.mp4";await renderVideo(m,y,e,(e=>{t.update(` Rendering video... ${e}%`)}));t.stop("OK");console.log(" Merging narration audio...");const o=k+".narration.wav";n.writeFileSync(o,x);await u(e,o,k);try{n.unlinkSync(e)}catch{}try{n.unlinkSync(o)}catch{}console.log(" Audio merged OK")}catch(e){t.stop("FAIL");console.log(` Video render failed: ${e.message}`);console.log(" Falling back to audio-only...");k=k.replace(/\.mp4$/,".wav");n.writeFileSync(k,x)}}const C=k.replace(/\.(mp4|wav)$/,".json");n.writeFileSync(C,JSON.stringify(m,null,2));const T=y.reduce(((e,t)=>e+t.durationMs),0);const P=n.statSync(k);const E=(P.size/(1024*1024)).toFixed(1);const _=formatDuration(T);console.log("\n[4/4] Done!");console.log(`\n=== Output ===`);console.log(` File: ${k} (${E} MB, ${_})`);console.log(` Script: ${C}`);console.log(` Scenes: ${m.scenes.length}`);console.log(` Style: ${m.style}`);if(w){const e=b&&w?b.remaining-w.remaining:m.scenes.length*100;console.log(` Quota: ${e} used, ${w.remaining??"?"} remaining`)}return{outputPath:k,scriptPath:C,duration:T}}finally{process.removeListener("SIGINT",sigintHandler)}}function formatDuration(e){const t=Math.round(e/1e3);const o=Math.floor(t/60);const n=t%60;if(o===0)return`${n}s`;return`${o}m${n.toString().padStart(2,"0")}s`}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,validateSpeed:i,runWithRetry:s}=o(5537);const{getToken:l,getTokenInfo:c}=o(598);const{API_BASE:d}=o(3282);const u=t(e,"--api")||d;const p=t(e,"--token");const A=r(e,"--speed");const f=t(e,"--output","-o");const h=n(e,"--scenes");i(e,A);if(f){const e=[".wav",".mp3",".mp4"];const t=e.some((e=>f.toLowerCase().endsWith(e)));if(!t){console.error("Error: --output path must end with .wav, .mp3, or .mp4");process.exit(1)}}const m=t(e,"--style");if(m&&!["modern","playful","corporate","chalkboard"].includes(m)){console.error(`Error: --style must be one of: modern, playful, corporate, chalkboard (got: "${m}")`);process.exit(1)}if(h!==undefined){if(isNaN(h)||h<3||h>12){console.error(`Error: --scenes must be between 3 and 12 (got: "${t(e,"--scenes")}")`);process.exit(1)}}let g;if(p){g=p}else{g=await l({api:u});const e=c();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const v={token:g,api:u,topic:t(e,"--topic")||undefined,voice:t(e,"--voice")||undefined,style:m||undefined,language:t(e,"--language")||undefined,output:f,speed:A,scenes:h,audioOnly:a(e,"--audio-only"),cloud:a(e,"--cloud")};await s(explain,v,u,p)}const f={explain:{usage:"[opts]",description:"Generate an AI explainer video from a topic",options:[`--topic <text> Topic to explain (use "demo" for built-in demo)`,`--style <style> Visual style: modern (default), playful, corporate, chalkboard`,`--language <code> Script language: en (default), zh, ja, ko, etc.`,`--voice <id> TTS voice ID (default: ${a.voice})`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--scenes <n> Number of scenes, 3-12 (default: ${a.sceneCount})`,`--audio-only Skip video render, output WAV narration only`,`--cloud Render on cloud instead of local Remotion`,`--output <path> Output file path (default: ./explain-<timestamp>.mp4)`],examples:['voxflow explain --topic "What is React?"',"voxflow explain --topic demo --output demo.mp4",'voxflow explain --topic "区块链入门" --style chalkboard --voice v-male-Bk7vD3xP','voxflow explain --topic "Machine Learning" --audio-only']}};e.exports={explain:explain,handle:handle,meta:f}},1104:(e,t,o)=>{"use strict";const n=o(857);const{execFile:r}=o(5317);const a=o(3785);const i=o(8330);const s="VoxFlowStudio/FlowStudio";const l=`https://github.com/${s}`;const c={bug:{prefix:"[CLI Bug] ",labels:"type/bug,area/cli",template:"cli-bug.md"},feature:{prefix:"[CLI Feature] ",labels:"type/feat,area/cli",template:"cli-feature.md"},general:{prefix:"[CLI] ",labels:"area/cli",template:null}};function systemInfo(){return[`**CLI version:** ${i.version}`,`**OS:** ${process.platform} ${n.arch()} (${n.release()})`,`**Node:** ${process.version}`].join("\n")}function buildIssueUrl({type:e,title:t,body:o}){const n=c[e]||c.general;const r=new URLSearchParams;r.set("title",n.prefix+t);r.set("body",(o?o+"\n\n":"")+"---\n\n"+systemInfo());r.set("labels",n.labels);if(n.template)r.set("template",n.template);return`${l}/issues/new?${r.toString()}`}function ghSubmit({type:e,title:t,body:o}){return new Promise((n=>{const a=c[e]||c.general;const i=a.prefix+t;const l=(o?o+"\n\n":"")+"---\n\n"+systemInfo();const d=["issue","create","--repo",s,"--title",i,"--body",l,"--label",a.labels];r("gh",d,{timeout:15e3},((e,t)=>{if(e){n(null);return}n((t||"").trim()||null)}))}))}async function collectInfo(e){const t=a.createInterface({input:process.stdin,output:process.stderr});const ask=e=>new Promise((o=>t.question(e,(e=>o(e.trim())))));try{process.stderr.write("\n VoxFlow CLI Feedback\n\n");let t=e;if(!t){process.stderr.write(" Type:\n 1) Bug report\n 2) Feature request\n 3) General feedback\n\n");const e=await ask(" Choice [1/2/3]: ");t={1:"bug",2:"feature",3:"general"}[e]||"general"}const o=await ask("\n Title: ");if(!o){process.stderr.write(" Title is required.\n\n");return null}process.stderr.write("\n Description (empty line to finish):\n");const n=[];let r;do{r=await ask(" > ");if(r)n.push(r)}while(r!=="");return{type:t,title:o,body:n.join("\n")}}finally{t.close()}}async function submitOrFallback({type:e,title:t,body:n},r){const a=await ghSubmit({type:e,title:t,body:n});if(a){process.stderr.write(`\n ✓ Issue created: ${a}\n\n`);process.stdout.write(a+"\n");return}const i=buildIssueUrl({type:e,title:t,body:n});if(r){process.stdout.write(i+"\n")}else{process.stderr.write("\n Opening browser...\n\n");const e=(await Promise.resolve().then(o.bind(o,6257))).default;await e(i)}}async function handle(e){const{parseBoolFlag:t,parseFlag:n}=o(5537);let r=null;if(t(e,"--bug"))r="bug";else if(t(e,"--feature"))r="feature";else if(t(e,"--general"))r="general";const a=n(e,"--title");const i=n(e,"--body");const s=t(e,"--print-url");if(a){await submitOrFallback({type:r||"general",title:a,body:i||""},s);return}if(!process.stdin.isTTY){process.stderr.write("voxflow feedback requires an interactive terminal.\n"+'For non-interactive use: voxflow feedback --bug --title "..." --body "..."\n');process.exit(1)}const l=await collectInfo(r);if(!l)return;await submitOrFallback(l,s)}const d={feedback:{usage:'[--bug | --feature | --general] [--title "..."] [--body "..."] [--print-url]',description:"Submit a bug report or feature request to GitHub",options:["--bug Pre-fill as bug report","--feature Pre-fill as feature request","--general Pre-fill as general feedback","--title <text> Title (enables non-interactive / AI mode)","--body <text> Description body","--print-url Print URL instead of opening browser (fallback only)"],examples:["voxflow feedback","voxflow feedback --bug",'voxflow feedback --bug --title "asr crashes on wav files" --body "Steps: ..."']}};e.exports={buildIssueUrl:buildIssueUrl,systemInfo:systemInfo,ghSubmit:ghSubmit,handle:handle,meta:d}},6794:(e,t,o)=>{const n=o(9896);const r=o(6928);const{request:a,throwApiError:i,throwNetworkError:s,ApiError:l}=o(2768);const{startSpinner:c}=o(5319);const d=["768:768","768:1024","1024:768","1024:1024","720:1280","1280:720","768:1280","1280:768","1080:1920","1920:1080"];async function generateHunyuanImage(e){let t=false;const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nImage generation cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _generate(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _generate(e){const t=e.prompt;if(!t||t.trim().length===0){throw new Error('No prompt provided. Usage: voxflow image "your prompt here"')}if(t.length>1e3){throw new Error("Prompt too long (max 1000 characters)")}const o=e.resolution||"1024:1024";const l=e.api;const d=e.token;let u=e.output;if(!u){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);u=r.resolve(`hunyuan-${e}.png`)}console.log("\n=== VoxFlow Image (Hunyuan) ===");console.log(`Prompt: ${t.length>60?t.slice(0,57)+"...":t}`);console.log(`Resolution: ${o}`);console.log(`Output: ${u}`);const p=c("\n[1/1] Generating image (10-30s)...");let A,f;try{({status:A,data:f}=await a(`${l}/api/hunyuan/text-to-image`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${d}`},timeoutMs:18e4},{prompt:t.trim(),resolution:o,logoAdd:0,rspImgType:"base64"}))}catch(e){p.stop("FAIL");s(e,l)}if(A!==200||f.code!=="success"){p.stop("FAIL");i(A,f,"Image generation")}if(!f.image){p.stop("FAIL");throw new Error("API returned no image data")}const h=Buffer.from(f.image,"base64");p.stop("OK");const m=r.dirname(u);n.mkdirSync(m,{recursive:true});n.writeFileSync(u,h);console.log("\n=== Done ===");console.log(`Output: ${u} (${(h.length/1024).toFixed(1)} KB)`);if(f.imageUrl)console.log(`COS URL: ${f.imageUrl}`);console.log(`RequestId: ${f.requestId||"(none)"}`);if(f.quota){console.log(`Quota: ${f.quota.used??"?"}/${f.quota.daily??"?"}, remaining ${f.quota.remaining??"?"}`)}return{outputPath:u,imageUrl:f.imageUrl||null,requestId:f.requestId,quota:f.quota}}async function handle(e){const{parseFlag:t,runWithRetry:n}=o(5537);const{getToken:r,getTokenInfo:a}=o(598);const{API_BASE:i}=o(3282);const s=t(e,"--api")||i;const l=t(e,"--token");let c=t(e,"--prompt");if(!c){const t=new Set(["--prompt","--resolution","--output","-o","--token","--api"]);for(let o=0;o<e.length;o++){if(e[o].startsWith("-")){if(t.has(e[o]))o++;continue}c=e[o];break}}if(!c){console.error('Error: No prompt provided. Usage: voxflow image "your prompt here"');process.exit(1)}const u=t(e,"--resolution");if(u&&!d.includes(u)){console.error(`Error: --resolution must be one of: ${d.join(", ")} (got: "${u}")`);process.exit(1)}const p=t(e,"--output","-o");if(p&&!p.toLowerCase().endsWith(".png")){console.error("Error: --output path must end with .png");process.exit(1)}let A;if(l){A=l}else{A=await r({api:s});const e=a();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const f={token:A,api:s,prompt:c,resolution:u||undefined,output:p};await n(generateHunyuanImage,f,s,l)}const u={image:{usage:"<prompt>",description:"Generate an image from text via Hunyuan (text-to-image)",options:["<prompt> Image description (positional arg or --prompt)","--prompt <text> Image description (alternative to positional)","--resolution <W:H> Resolution, colon-separated (default: 1024:1024)"," Options: 768:768, 1024:1024, 1024:768, 768:1024,"," 1280:720, 720:1280, 1920:1080, 1080:1920","-o, --output <path> Output PNG path (default: ./hunyuan-<timestamp>.png)"],examples:['voxflow image "雨中, 竹林, 小路, 中国风"','voxflow image "A calm ocean at sunset" --resolution 1920:1080 -o sunset.png']}};e.exports={generateHunyuanImage:generateHunyuanImage,handle:handle,meta:u,ApiError:l}},4268:(e,t,o)=>{const n=o(9896);const r=o(6928);const{NARRATE_DEFAULTS:a}=o(3282);const{ApiError:i}=o(2768);const{parseParagraphs:s,buildWav:l,concatAudioBuffers:c,getFileExtension:d}=o(7188);const{synthesizeTTS:u}=o(1428);function parseScript(e){if(!n.existsSync(e)){throw new Error(`Script file not found: ${e}`)}let t;try{t=JSON.parse(n.readFileSync(e,"utf8"))}catch(e){throw new Error(`Invalid JSON in script file: ${e.message}`)}if(!t.segments||!Array.isArray(t.segments)||t.segments.length===0){throw new Error('Script must have a non-empty "segments" array')}for(let e=0;e<t.segments.length;e++){const o=t.segments[e];if(!o.text||typeof o.text!=="string"||o.text.trim().length===0){throw new Error(`Segment ${e+1} must have a non-empty "text" field`)}}return{segments:t.segments.map((e=>({text:e.text.trim(),voiceId:e.voiceId||undefined,speed:e.speed!=null?Number(e.speed):undefined,volume:e.volume!=null?Number(e.volume):undefined,pitch:e.pitch!=null?Number(e.pitch):undefined}))),silence:t.silence!=null?Number(t.silence):a.silence,output:t.output||undefined}}function stripMarkdown(e){return e.replace(/```[\s\S]*?```/g,"").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/^#{1,6}\s+/gm,"").replace(/\*{1,3}([^*]+)\*{1,3}/g,"$1").replace(/_{1,3}([^_]+)_{1,3}/g,"$1").replace(/^[-*_]{3,}\s*$/gm,"").replace(/^>\s?/gm,"").replace(/\n{3,}/g,"\n\n").trim()}async function readStdin(){const e=[];for await(const t of process.stdin){e.push(t)}return Buffer.concat(e).toString("utf8")}async function synthesizeSegment(e,t,o,n,r,a,i,s,l,c){const d=await u({apiBase:e,token:t,text:o,voiceId:n,speed:r??1,volume:a??1,pitch:i,format:s||"pcm",index:l,total:c});const p=s==="mp3"?"MP3":s==="wav"?"WAV":"PCM";console.log(` OK (${(d.audio.length/1024).toFixed(0)} KB ${p})`);return d}function scanSegmentRisks(e){const t=[];for(let o=0;o<e.length;o++){const n=(e[o].text||"").trim();const r=n.length>0&&n.length<30;const a=/^[A-Za-z0-9 .,_\-:;'"!?@#$%&*()/]+$/.test(n);const i=/[A-Za-z]{2,}/.test(n);if(r&&a){t.push({index:o+1,severity:"high",text:n,message:`pure-Latin short line (${n.length} chars) — Chinese TTS often returns tts_failed (Issue #2901). Try padding with Chinese context.`})}else if(n.length<25&&i){t.push({index:o+1,severity:"medium",text:n,message:`short line (${n.length} chars) with Latin word(s) — may fail; CLI will auto-retry with Chinese context wrap.`})}}return t}function shouldAutoWrap(e){const t=(e||"").trim();if(!t||t.length>60)return false;const o=/^[A-Za-z0-9 .,_\-:;'"!?@#$%&*()/]+$/.test(t);const n=(t.match(/[A-Za-z]/g)||[]).length;return o||n/t.length>.4&&t.length<30}function chineseContextWrap(e){return`如下:${e}。`}function isTtsProviderRejection(e){if(!(e instanceof i))return false;if(e.code==="tts_failed")return true;return/\[tts_failed\]/.test(e.message||"")}async function synthesizeWithRetry(e,t={wrap:0}){try{return await synthesizeSegment(e.apiBase,e.token,e.text,e.voiceId,e.speed,e.volume,e.pitch,e.format,e.index,e.total)}catch(o){if(isTtsProviderRejection(o)&&t.wrap===0&&shouldAutoWrap(e.text)){const t=chineseContextWrap(e.text);process.stdout.write(`\n ↻ retrying with Chinese context wrap: ${JSON.stringify(t)}\n TTS [${e.index+1}/${e.total}]...`);return await synthesizeWithRetry({...e,text:t},{wrap:1})}throw o}}async function narrate(e){let t=false;const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nNarration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _narrate(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _narrate(e){const t=e.voice||a.voice;const o=e.speed??a.speed;const u=e.format||"pcm";const p=e.api;const A=e.token;let f;let h;let m;let g;if(e.script){const t=parseScript(e.script);f=t.segments;h=e.silence??t.silence;m=e.output||t.output;g=`script: ${e.script} (${f.length} segments)`}else if(e.input){const t=r.resolve(e.input);if(!n.existsSync(t)){throw new Error(`Input file not found: ${t}`)}let o=n.readFileSync(t,"utf8");const i=r.extname(t).toLowerCase();if(i===".md"||i===".markdown"){o=stripMarkdown(o)}const l=s(o);if(l.length===0){throw new Error("No text content found in input file")}f=l.map((e=>({text:e})));h=e.silence??a.silence;m=e.output;g=`file: ${e.input} (${f.length} paragraphs)`}else if(e.text){const t=s(e.text);if(t.length===0){throw new Error("No text content provided")}f=t.map((e=>({text:e})));h=e.silence??a.silence;m=e.output;g=`text: ${e.text.length} chars (${f.length} paragraphs)`}else if(!process.stdin.isTTY){const t=await readStdin();if(!t||t.trim().length===0){throw new Error("No input provided via stdin")}const o=s(t);if(o.length===0){throw new Error("No text content found in stdin input")}f=o.map((e=>({text:e})));h=e.silence??a.silence;g=`stdin (${f.length} paragraphs)`}else{throw new Error("No input provided. Use one of:\n"+" --input <file.txt> Read a text or markdown file\n"+' --text "text" Provide inline text\n'+" --script <file.json> Use a script with per-segment control\n"+' echo "text" | voxflow narrate Pipe from stdin')}const v=d(u);if(!m){let t;if(e.input){const o=r.basename(e.input,r.extname(e.input));t=o+v}else{const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);t="narration-"+e+v}m=r.join(process.cwd(),t)}if(!m.endsWith(v)){m=m.replace(/\.(wav|mp3|pcm)$/i,"")+v}console.log("\n=== VoxFlow Narrate ===");console.log(`Input: ${g}`);console.log(`Voice: ${t}${e.script?" (may be overridden per segment)":""}`);console.log(`Format: ${u==="pcm"?"wav (pcm)":u}`);console.log(`Speed: ${o}`);if(u==="mp3"){console.log(`Output: ${m}`);console.log(` (MP3 mode: no silence inserted between segments)`)}else{console.log(`Silence: ${h}s`);console.log(`Output: ${m}`)}const y=scanSegmentRisks(f);if(y.length>0){console.log("");console.log(`⚠ ${y.length} segment(s) may trigger TTS edge cases:`);for(const e of y){const t=e.text.length>50?`${e.text.slice(0,50)}…`:e.text;console.log(` [${e.severity}] segment ${e.index}: ${JSON.stringify(t)}`);console.log(` → ${e.message}`)}console.log(" CLI will auto-retry with Chinese context wrap on tts_failed.")}console.log(`\n[1/2] Synthesizing TTS audio (${f.length} segments)...`);const b=[];const w=[];const x=[];let S=null;for(let e=0;e<f.length;e++){const n=f[e];try{const r=await synthesizeWithRetry({apiBase:p,token:A,text:n.text,voiceId:n.voiceId||t,speed:n.speed??o,volume:n.volume,pitch:n.pitch,format:u,index:e,total:f.length});b.push(r.audio);x.push(n);S=r.quota}catch(t){if(t instanceof i&&(t.code==="quota_exceeded"||t.code==="token_expired"||t.code==="network_error")){throw t}const o=n.text.length>60?`${n.text.slice(0,60)}…`:n.text;console.log(` ⚠ Segment ${e+1} skipped: ${t.message}`);console.log(` text: ${JSON.stringify(o)}`);w.push({index:e+1,text:n.text,message:t.message})}}if(b.length===0){const e=[`All ${f.length} segments failed TTS synthesis.`,"","Failed segments:",...w.map((e=>{const t=e.text.length>60?`${e.text.slice(0,60)}…`:e.text;return` [${e.index}] ${JSON.stringify(t)}\n ${e.message}`})),"","How to fix:"," • Short pure-English lines (brand names, English headings) often fail"," on Chinese TTS voices (Issue #2901). Pad with Chinese context, e.g.",' "VoxFlow" → "VoxFlow 工具介绍" or merge into adjacent paragraphs.'," • CLI already auto-retries with Chinese wrap; if that also failed, the"," provider may be down — try `voxflow voices` to check connectivity."," • Re-run with -vv to see full TTS request/response for each segment."];throw new Error(e.join("\n"))}console.log("\n[2/2] Merging audio...");const{audio:k,wav:C,duration:T}=u==="mp3"||u==="wav"?c(b,u,h):l(b,h);const P=k||C;const E=r.dirname(m);n.mkdirSync(E,{recursive:true});n.writeFileSync(m,P);const _=m.replace(/\.(wav|mp3)$/i,".txt");const L=x.map(((e,t)=>{const o=e.voiceId?`[${t+1}|${e.voiceId}]`:`[${t+1}]`;return`${o} ${e.text}`})).join("\n\n");n.writeFileSync(_,L,"utf8");const I=x.length;console.log(`\n=== Done ===`);console.log(`Output: ${m} (${(P.length/1024).toFixed(1)} KB, ${T.toFixed(1)}s)`);console.log(`Transcript: ${_}`);console.log(`Segments: ${x.length}/${f.length}${w.length?` (${w.length} skipped)`:""}`);console.log(`Quota: ${I} used, ${S?.remaining??"?"} remaining`);return{outputPath:m,textPath:_,duration:T,quotaUsed:I,segmentCount:x.length,skippedCount:w.length,format:u}}async function handle(e){const{parseFlag:t,parseFloatFlag:n,validateSpeed:r,validateSilence:a,validateOutput:i,validateFormat:s,runWithRetry:l}=o(5537);const{getToken:c,getTokenInfo:d}=o(598);const{API_BASE:u}=o(3282);const p=t(e,"--api")||u;const A=t(e,"--token");const f=t(e,"--input");const h=t(e,"--text");const m=t(e,"--script");const g=n(e,"--speed");const v=n(e,"--silence");const y=t(e,"--output","-o");const b=t(e,"--format");r(e,g);a(e,v);i(y,b);s(b);if(f){const e=o(9896);const t=o(6928);const n=t.resolve(f);if(!e.existsSync(n)){console.error(`Error: Input file not found: ${n}`);const e=!f.includes("/")&&!/\.[a-z0-9]{1,4}$/i.test(f)&&(/[^\x20-\x7e]/.test(f)||f.includes(" "));if(e){console.error("");console.error(" Hint: --input expects a FILE PATH. For inline text use:");console.error(` voxflow narrate --text ${JSON.stringify(f)}`);console.error(` voxflow say ${JSON.stringify(f)} # simpler for one-liners`)}process.exit(1)}}if(m){const e=o(9896);const t=o(6928);const n=t.resolve(m);if(!e.existsSync(n)){console.error(`Error: Script file not found: ${n}`);process.exit(1)}}let w;if(A){w=A}else{w=await c({api:p});const e=d();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const x={token:w,api:p,input:f,text:h,script:m,voice:t(e,"--voice"),output:y,speed:g,silence:v,format:b||undefined};await l(narrate,x,p,A)}const p={narrate:{usage:"[opts]",description:"Narrate a file, text, or script to audio",options:[`--input <file> Input .txt or .md file`,`--text <text> Inline text to narrate`,`--script <file> JSON script with per-segment voice/speed control`,`--voice <id> Default voice ID (default: ${a.voice})`,`--format <fmt> Output format: pcm, wav, mp3 (default: pcm → WAV)`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--silence <sec> Silence between segments, 0-5.0 (default: ${a.silence})`,`--output <path> Output file path (default: matches input basename, e.g. design.md → design.wav)`],examples:["voxflow narrate --input article.txt --voice v-female-R2s4N9qJ","voxflow narrate --script narration-script.json",'echo "Hello" | voxflow narrate --output hello.wav']}};e.exports={narrate:narrate,handle:handle,meta:p,ApiError:i,_test:{parseScript:parseScript,stripMarkdown:stripMarkdown,scanSegmentRisks:scanSegmentRisks,shouldAutoWrap:shouldAutoWrap,chineseContextWrap:chineseContextWrap,synthesizeWithRetry:synthesizeWithRetry,isTtsProviderRejection:isTtsProviderRejection}}},6652:e=>{const t={portrait:{w:1080,h:1920,label:"1080×1920 (9:16)"},landscape:{w:1920,h:1080,label:"1920×1080 (16:9)"},square:{w:1080,h:1080,label:"1080×1080 (1:1)"}};const o=Object.keys(t);const n=new Set(["sketchnote","neon_noir","minimal_3d","chalkboard"]);const r=new Set(["photo","manga_panel","vintage_newspaper"]);const a=[...n,...r];const isCardStyle=e=>n.has(e);function buildSystemPrompt(e){if(!isCardStyle(e)){return["You are a visual storytelling expert. Generate a picstory script as JSON.","Return ONLY valid JSON, no markdown fences, no explanation.","Format:","{",' "title": "story title",',' "scenes": ['," {",' "sceneDesc": "detailed visual scene description for AI image generation, no text in image",',' "narration": "2-3 sentence natural spoken narration (30-70 words)"'," }"," ]","}"].join("\n")}return["You are a visual sketchnote expert. Generate a picstory script for knowledge card videos.","Return ONLY valid JSON, no markdown fences, no explanation.","Format:","{",' "title": "video title (concise, punchy)",',' "scenes": ['," {",' "heading": "01 Section heading (8-20 chars, with 01/02/03 prefix)",',' "keyPoints": ["point A", "point B", "point C"],',' "subheadings": [',' { "label": "sublabel", "content": "short description" }'," ],",' "summary": "One-line insight or takeaway (20-40 chars)",',' "narration": "Natural spoken explanation of this card (30-70 words)"'," }"," ]","}","","Rules:",'- heading: include "01 ", "02 " prefix; short and punchy',"- keyPoints: 2-4 items, 5-20 chars each, concise actionable phrases","- subheadings: 0-3 items, optional deeper breakdown","- summary: memorable insight or quote for the card footer","- narration: natural speech, explains the card content","- Use the SAME language as the topic/input text"].join("\n")}function buildSketchnotePrompt(e,t){const o=t!=="landscape";const n=o?"vertical 9:16 portrait":"horizontal 16:9 landscape";const{heading:r,keyPoints:a=[],subheadings:i=[],summary:s}=e;const l=[];a.forEach(((e,t)=>l.push(` Point ${String(t+1).padStart(2,"0")}: ${e}`)));(i||[]).forEach((e=>l.push(` [${e.label}]: ${e.content}`)));if(s)l.push(` Footer insight: "${s}"`);return["Create a colorful hand-drawn educational sketchnote card in Japanese stationery / bullet-journal style.",`Orientation: ${n}, white or very light warm paper background.`,"","Card structure (top to bottom):",` TITLE BOX (top): Bold title text in a rounded colorful border: "${r}"`," CONTENT AREA (middle):",...l,"","Visual style requirements:"," - Colorful marker-pen borders: mix of coral red, sky blue, mint green, warm orange"," - Hand-drawn look with slight imperfections (not too perfect)"," - Cute small icons or simple illustrations next to each key point"," - Hand-drawn arrows or dividers between sections"," - Slightly decorated borders and doodle elements (stars, dots, small sketches)"," - Clear, legible text — render ALL text content exactly as provided"," - Warm, inviting feel — like a student's creative study notes","","IMPORTANT: Render all text faithfully in the same language as the content. No watermarks. No extra text."].join("\n")}function buildNeonNoirPrompt(e,t){const o=t==="landscape"?"horizontal 16:9 landscape":"vertical 9:16 portrait";const{heading:n,keyPoints:r=[],summary:a}=e;const i=r.map((e=>` ★ ${e}`));if(a)i.push(` ▸ ${a}`);return["Create a cyberpunk-style knowledge card with neon glow aesthetic, dark mode.",`Orientation: ${o}.`,"","Card content to render:",` HEADER: "${n}"`,...i,"","Visual style:"," - Very dark background (#0a0a0f), atmospheric depth"," - Neon glow text: header in bright cyan (#00f5ff) or hot magenta (#ff00aa)"," - Key points in electric purple or lime neon, with glowing bullet icons"," - Subtle neon grid lines or digital rain texture in background"," - Glowing neon-lit border frame with corner accent marks"," - Cinematic HUD display aesthetic, cyberpunk city atmosphere"," - Footer in dim amber/gold text","","IMPORTANT: Render all text faithfully. No watermarks."].join("\n")}function buildMinimal3dPrompt(e,t){const o=t==="landscape"?"horizontal 16:9 landscape":"vertical 9:16 portrait";const{heading:n,keyPoints:r=[],summary:a}=e;const i=r.map((e=>` • ${e}`));if(a)i.push(` ✦ ${a}`);return["Create a 小红书 / Instagram-style knowledge card with soft 3D clay aesthetic.",`Orientation: ${o}.`,"","Card content to render:",` TITLE: "${n}"`,...i,"","Visual style:"," - Soft pastel gradient background (lavender-to-peach, mint-to-sky, or cream-to-rose)"," - 3D clay-rendered decorative objects floating near edges (books, stars, diamonds, capsules)"," - Smooth surfaces with gentle soft-box studio lighting, subtle shadows"," - Clean rounded typography on white frosted card panel"," - Friendly, premium aesthetic popular on 小红书 knowledge cards"," - Harmonious pastel color scheme throughout","","IMPORTANT: Render all text faithfully. No watermarks."].join("\n")}function buildChalkboardPrompt(e,t){const o=t==="landscape"?"horizontal 16:9 landscape":"vertical 9:16 portrait";const{heading:n,keyPoints:r=[],subheadings:a=[],summary:i}=e;const s=r.map((e=>` → ${e}`));(a||[]).forEach((e=>s.push(` [${e.label}] ${e.content}`)));if(i)s.push(` ✎ ${i}`);return["Create a hand-drawn chalkboard educational card.",`Orientation: ${o}.`,"","Card content to render:",` TITLE (underlined): "${n}"`,...s,"","Visual style:"," - Dark forest green chalkboard texture background"," - White chalk handwritten text, slightly rough and organic"," - Simple chalk-drawn diagrams, arrows, and decorative underlines"," - Color chalk accents: yellow for titles, pink/blue for highlights"," - Academic feel — like a teacher's classroom blackboard"," - Hand-drawn boxes, circles, and connector arrows for structure","","IMPORTANT: Render all text faithfully in the same language as the content. No watermarks."].join("\n")}function buildPhotoPrompt(e,t){const o=t==="landscape"?"16:9 widescreen landscape":"9:16 vertical portrait";return[`Create a stunning, high-quality ${o} illustration:`,"",e.sceneDesc,"","Style: cinematic, dramatic lighting, vivid colors, professional quality.",`Technical: ${o} aspect ratio, sharp details, atmospheric depth.`,"No text, no watermarks, no logos."].join("\n")}function buildMangaPanelPrompt(e,t){const o=t==="landscape"?"16:9 landscape manga panel":"9:16 portrait manga panel";return[`Create a Japanese manga-style panel illustration, ${o}:`,"",e.sceneDesc,"","Visual style:"," - Clean manga ink linework with bold black outlines"," - Speed lines, dynamic composition, manga perspective"," - Screentone dot/line texture for depth and shadow"," - Mostly black and white, with one vivid accent color (red or blue)"," - Dramatic, expressive, high-energy framing"," - Professional manga quality, Shonen Jump style","No text overlays. No watermarks."].join("\n")}function buildVintageNewspaperPrompt(e,t){const o=t==="landscape"?"16:9 widescreen landscape":"9:16 portrait";return[`Create a vintage 1940s newspaper-style editorial illustration, ${o}:`,"",e.sceneDesc,"","Visual style:"," - Aged yellowed newsprint texture with paper grain"," - Halftone dot pattern overlay, classic editorial aesthetic"," - Black, white, and sepia tones with period-accurate details"," - Classic editorial illustration style, reportage journalism feel"," - Historical, atmospheric, early-20th-century newspaper graphic","No text overlays. No watermarks."].join("\n")}const i={sketchnote:buildSketchnotePrompt,neon_noir:buildNeonNoirPrompt,minimal_3d:buildMinimal3dPrompt,chalkboard:buildChalkboardPrompt,photo:buildPhotoPrompt,manga_panel:buildMangaPanelPrompt,vintage_newspaper:buildVintageNewspaperPrompt};function buildImagePrompt(e,t,o){const n=i[t]||buildSketchnotePrompt;return n(e,o)}e.exports={RATIO_CONFIG:t,VALID_RATIOS:o,VALID_STYLES:a,CARD_STYLES:n,SCENE_STYLES:r,isCardStyle:isCardStyle,buildSystemPrompt:buildSystemPrompt,buildImagePrompt:buildImagePrompt,buildSketchnotePrompt:buildSketchnotePrompt,buildPhotoPrompt:buildPhotoPrompt,_test:{buildSketchnotePrompt:buildSketchnotePrompt,buildPhotoPrompt:buildPhotoPrompt,buildNeonNoirPrompt:buildNeonNoirPrompt,buildMinimal3dPrompt:buildMinimal3dPrompt,buildChalkboardPrompt:buildChalkboardPrompt,buildMangaPanelPrompt:buildMangaPanelPrompt,buildVintageNewspaperPrompt:buildVintageNewspaperPrompt,buildSystemPrompt:buildSystemPrompt}}},1850:(e,t,o)=>{const n=o(9896);const r=o(857);const a=o(6928);const{PICSTORY_DEFAULTS:i}=o(3282);const{request:s,throwApiError:l,throwNetworkError:c}=o(2768);const{buildWav:d}=o(7188);const{BYTES_PER_MS:u}=o(9167);const{synthesizeTTS:p}=o(1428);const{generateImage:A}=o(967);const{runCommand:f,checkFfmpeg:h,concatVideos:m}=o(9933);const{startSpinner:g}=o(5319);const{RATIO_CONFIG:v,VALID_RATIOS:y,VALID_STYLES:b,buildSystemPrompt:w,buildImagePrompt:x,buildSketchnotePrompt:S,buildPhotoPrompt:k}=o(6652);const C={default:null,"gemini-flash":{provider:"openrouter",model:"google/gemini-3-flash-preview"},deepseek:{provider:"deepseek",model:"deepseek-chat"},hunyuan:{provider:"hunyuan",model:"hunyuan-lite"},moonshot:{provider:"moonshot",model:"moonshot-v1-8k"}};const T=Object.keys(C);async function generateScript(e,t,o,{language:n,sceneCount:r,style:a,scriptModel:i}){const d=w(a);const u=[`Topic: ${o}`,`Language: ${n}`,`Number of scenes: ${r}`,`Visual style: ${a}`,"",`Generate a compelling ${r}-scene picstory script about the topic above.`,"Each scene should cover a distinct aspect or step."].join("\n");const p=i&&i!=="default"?C[i]:null;const A={messages:[{role:"system",content:d},{role:"user",content:u}],temperature:.7,max_tokens:2e3};if(p){A.model=p.model;A.provider=p.provider}let f,h;try{({status:f,data:h}=await s(`${e}/api/llm/chat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},A))}catch(t){c(t,e)}if(f!==200||h.code!=="success")l(f,h,"LLM script");let m;try{const e=h.content.trim().replace(/^```json\s*/i,"").replace(/```\s*$/,"");m=JSON.parse(e)}catch(e){throw new Error(`LLM returned invalid JSON: ${e.message}\nContent: ${h.content.slice(0,200)}`)}if(!m.title||!Array.isArray(m.scenes)||m.scenes.length===0){throw new Error("LLM script missing required fields: title, scenes[]")}return{script:m,quota:h.quota}}const P=[{x:`'iw/2-(iw/zoom/2)'`,y:`'ih/2-(ih/zoom/2)'`},{x:`'0'`,y:`'0'`},{x:`'iw-iw/zoom'`,y:`'ih-ih/zoom'`},{x:`'iw-iw/zoom'`,y:`'0'`}];async function renderScene({imgPath:e,wavPath:t,outPath:o,durationMs:n,ratio:r,sceneIndex:i=0,fadeSeconds:s=.4}){const{w:l,h:c}=v[r]||v.portrait;const d=30;const u=n/1e3;const p=Math.max(2,Math.round(u*d));const A=(.25/Math.max(p-1,1)).toFixed(8);const h=`'min(1.0+${A}*on,1.25)'`;const{x:m,y:g}=P[i%P.length];const y=s>0&&u>s*2.5?s:0;const b=(u-y).toFixed(3);const w=[`scale=${l}:${c}:force_original_aspect_ratio=increase`,`crop=${l}:${c}`,`zoompan=z=${h}:x=${m}:y=${g}:d=${p}:s=${l}x${c}:fps=${d}`];if(y>0){w.push(`fade=t=in:st=0:d=${y}`,`fade=t=out:st=${b}:d=${y}`)}w.push("format=yuv420p");const x=y>0?[`afade=t=in:st=0:d=${y}`,`afade=t=out:st=${b}:d=${y}`]:[];const S=["-loop","1","-t",String(u+.1),"-i",a.resolve(e),"-i",a.resolve(t),"-vf",w.join(",")];if(x.length>0){S.push("-af",x.join(","))}S.push("-c:v","libx264","-preset","fast","-crf","22","-c:a","aac","-b:a","128k","-ar","24000","-ac","1","-shortest","-movflags","+faststart","-y",a.resolve(o));await f("ffmpeg",S)}async function mixBgmIntoVideo(e,t,o,n={}){const r=n.volume??.1;const i=n.fadeIn??2;await f("ffmpeg",["-i",a.resolve(e),"-stream_loop","-1","-i",a.resolve(t),"-filter_complex",`[1:a]volume=${r},afade=t=in:st=0:d=${i}[bgm];[0:a][bgm]amix=inputs=2:duration=first:dropout_transition=2[out]`,"-map","0:v","-map","[out]","-c:v","copy","-c:a","aac","-b:a","128k","-y",a.resolve(o)])}async function picstory(e){const{token:t,api:o,topic:s,text:l,voice:c=i.voice,speed:f=i.speed,style:v=i.style,ratio:y=i.ratio,language:b=i.language,sceneCount:w=i.sceneCount,quality:S=i.quality,fadeSeconds:k=i.fadeSeconds,bgm:C,bgmVolume:T=i.bgmVolume,imageOnly:P=false,scriptModel:E="default"}=e;const _=l||s;if(!_)throw new Error("No input provided. Use --topic or --text");const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);const L=n.mkdtempSync(a.join(r.tmpdir(),"voxflow-picstory-"));try{console.log("\n[1/4] Generating script via LLM...");const r=E&&E!=="default"?`, model: ${E}`:"";console.log(` Topic: "${_.slice(0,80)}" (${b}, ${w} scenes, ${v}${r})`);const i=g(" Thinking...");let s,l;try{({script:s,quota:l}=await generateScript(o,t,_,{language:b,sceneCount:w,style:v,scriptModel:E}));i.stop(`OK — "${s.title}" (${s.scenes.length} scenes)`)}catch(e){i.stop("FAIL");throw e}console.log(`\n[2/4] Synthesizing narration (${s.scenes.length} scenes)...`);const I=[];let B=l;for(let e=0;e<s.scenes.length;e++){const n=s.scenes[e].narration||"";if(!n.trim()){I.push({scene:s.scenes[e],pcm:Buffer.alloc(48*1e3),durationMs:1e3});continue}const r=await p({apiBase:o,token:t,text:n,voiceId:c,speed:f,index:e,total:s.scenes.length});const a=Math.round(r.audio.length/u);console.log(` OK (${(r.audio.length/1024).toFixed(0)} KB, ${(a/1e3).toFixed(1)}s)`);B=r.quota;I.push({scene:s.scenes[e],pcm:r.audio,durationMs:a})}console.log(`\n[3/4] Generating images (${s.scenes.length} scenes, parallel)...`);let D=B;const N=s.scenes.map(((e,n)=>{const r=x(e,v,y);return A({apiBase:o,token:t,prompt:r,ratio:y,quality:S,index:n,total:s.scenes.length}).then((e=>{D=e.quota;return e.imageDataUrl}))}));const R=await Promise.all(N);const F=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const M=e.output||resolveOutputPath(`picstory-${F}.mp4`,e.outputDir);if(P){console.log("\n[4/4] Saving images and audio...");const e=M.replace(/\.mp4$/i,"");for(let t=0;t<I.length;t++){const o=`${e}-scene-${t+1}.jpg`;const r=`${e}-scene-${t+1}.wav`;saveImageDataUrl(R[t],o);n.writeFileSync(r,d([I[t].pcm],0).wav);console.log(` Scene ${t+1}: ${o} + ${r}`)}const t=I.reduce(((e,t)=>e+t.durationMs),0);const o=`${e}-script.json`;n.writeFileSync(o,JSON.stringify(s,null,2));printSummary({outputPath:null,imageOnly:true,script:s,totalMs:t,sceneCount:I.length,style:v,ratio:y,lastQuota:D});return{outputPath:null,scriptPath:o,duration:t}}const O=await h();if(!O.available){throw new Error("ffmpeg not found. picstory requires ffmpeg for video rendering.\n"+" Install: brew install ffmpeg (macOS) / sudo apt install ffmpeg (Linux)")}console.log("\n[4/4] Rendering video...");const $=[];for(let e=0;e<I.length;e++){process.stdout.write(` Scene [${e+1}/${I.length}]...`);const t=a.join(L,`scene-${e}.jpg`);const o=a.join(L,`scene-${e}.wav`);const r=a.join(L,`scene-${e}.mp4`);saveImageDataUrl(R[e],t);n.writeFileSync(o,d([I[e].pcm],0).wav);try{await renderScene({imgPath:t,wavPath:o,outPath:r,durationMs:I[e].durationMs,ratio:y,sceneIndex:e,fadeSeconds:k});console.log(" OK");$.push(r)}catch(t){console.log(" FAIL");throw new Error(`Scene ${e+1} render failed: ${t.message}`)}}const z=C?a.join(L,"concat.mp4"):a.resolve(M);process.stdout.write(" Concatenating scenes...");try{await m($,z);console.log(" OK")}catch(e){console.log(" FAIL");throw new Error(`Concat failed: ${e.message}`)}if(C){process.stdout.write(" Mixing BGM...");try{await mixBgmIntoVideo(z,C,a.resolve(M),{volume:T});console.log(" OK")}catch(e){console.log(` WARN (BGM mix failed: ${e.message.slice(0,80)})`);n.copyFileSync(z,a.resolve(M))}}const j=M.replace(/\.mp4$/i,".json");n.writeFileSync(j,JSON.stringify(s,null,2));const U=I.reduce(((e,t)=>e+t.durationMs),0);printSummary({outputPath:M,imageOnly:false,script:s,totalMs:U,sceneCount:I.length,style:v,ratio:y,lastQuota:D,bgm:C});return{outputPath:M,scriptPath:j,duration:U}}finally{process.removeListener("SIGINT",sigintHandler);try{n.rmSync(L,{recursive:true,force:true})}catch{}}}function resolveOutputPath(e,t){if(!t)return e;n.mkdirSync(t,{recursive:true});return a.join(t,a.basename(e))}function saveImageDataUrl(e,t){const o=e.startsWith("data:")?e.slice(e.indexOf(",")+1):e;n.writeFileSync(t,Buffer.from(o,"base64"))}function printSummary({outputPath:e,imageOnly:t,script:o,totalMs:r,sceneCount:i,style:s,ratio:l,lastQuota:c,bgm:d}){const u=Math.round(r/1e3);const p=u>=60?`${Math.floor(u/60)}m${String(u%60).padStart(2,"0")}s`:`${u}s`;console.log("\n=== Output ===");if(e){console.log(` Video: ${e} (${(n.statSync(e).size/(1024*1024)).toFixed(1)} MB, ${p})`)}else if(t){console.log(` Mode: images + audio saved (no video render)`);console.log(` Duration: ~${p}`)}console.log(` Title: ${o.title}`);console.log(` Scenes: ${i}`);console.log(` Style: ${s} / ${l}`);if(d)console.log(` BGM: ${a.basename(d)}`);if(c)console.log(` Quota: ${c.remaining??"?"} remaining`)}async function handle(e){const{parseFlag:t,parseIntFlag:r,parseFloatFlag:i,parseBoolFlag:s,validateSpeed:l,runWithRetry:c}=o(5537);const{getToken:d,getTokenInfo:u}=o(598);const{API_BASE:p}=o(3282);const A=t(e,"--api")||p;const f=t(e,"--token");const h=i(e,"--speed");const m=t(e,"--output","-o");const g=r(e,"--scenes");l(e,h);if(m&&!/\.mp4$/i.test(m)){console.error("Error: --output path must end with .mp4");process.exit(1)}const v=t(e,"--style");if(v&&!b.includes(v)){console.error(`Error: --style must be one of: ${b.join(", ")} (got: "${v}")`);process.exit(1)}const w=t(e,"--ratio");if(w&&!y.includes(w)){console.error(`Error: --ratio must be one of: ${y.join(", ")} (got: "${w}")`);process.exit(1)}if(g!==undefined&&(isNaN(g)||g<2||g>10)){console.error(`Error: --scenes must be between 2 and 10 (got: "${t(e,"--scenes")}")`);process.exit(1)}const x=t(e,"--topic");const S=t(e,"--text");if(!x&&!S){console.error("Error: provide --topic <text> or --text <content>");process.exit(1)}let k;if(f){k=f}else{k=await d({api:A});const e=u();if(e)console.log(`[32mLogged in as ${e.email}[0m`)}const C=t(e,"--quality");const P=["fast","hd","ultra","fast-aiberm","hd-aiberm"];if(C&&!P.includes(C)){console.error(`Error: --quality must be one of: ${P.join(", ")}`);process.exit(1)}const E=t(e,"--script-model");if(E&&!T.includes(E)){console.error(`Error: --script-model must be one of: ${T.join(", ")} (got: "${E}")`);process.exit(1)}const _=t(e,"--output-dir","-d");const L=t(e,"--bgm");if(L){const e=a.resolve(L);if(!n.existsSync(e)){console.error(`Error: --bgm file not found: ${L}`);process.exit(1)}}const I=i(e,"--bgm-volume");if(I!==undefined&&(isNaN(I)||I<0||I>1)){console.error("Error: --bgm-volume must be between 0 and 1");process.exit(1)}const B=i(e,"--fade");const D={token:k,api:A,topic:x||undefined,text:S||undefined,voice:t(e,"--voice")||undefined,speed:h,output:m,outputDir:_||undefined,style:v||undefined,ratio:w||undefined,language:t(e,"--language")||undefined,sceneCount:g,quality:C||undefined,fadeSeconds:B!==undefined?B:undefined,bgm:L?a.resolve(L):undefined,bgmVolume:I!==undefined?I:undefined,imageOnly:s(e,"--image-only"),scriptModel:E||undefined};await c(picstory,D,A,f)}const E={picstory:{usage:"<--topic|--text> [opts]",description:"Generate a narrated visual story video (AI images + TTS + MP4)",options:[`--topic <text> Story topic`,`--text <content> Input text content to visualize`,`--style <name> Visual style: sketchnote (default), neon_noir, minimal_3d, chalkboard, photo, manga_panel, vintage_newspaper`,`--ratio <name> Aspect ratio: portrait (default, 9:16), landscape (16:9), square (1:1)`,`--language <code> Script language: zh (default), en, ja, etc.`,`--scenes <n> Number of scenes, 2-10 (default: ${i.sceneCount})`,`--quality <tier> Image quality: fast (default), hd, ultra (gpt-5.4-image-2, best quality, ~16× cost), hd-aiberm / fast-aiberm (Aiberm Gemini — strongest Chinese text rendering)`,`--voice <id> TTS voice ID`,`--speed <n> TTS speed 0.5-2.0 (default: ${i.speed})`,`--script-model <preset> LLM model for script generation: ${T.join(", ")} (default: server default)`,`--bgm <file> Background music file (.mp3/.wav) to mix under narration`,`--bgm-volume <n> BGM volume 0-1 (default: ${i.bgmVolume})`,`--fade <n> Scene fade-in/out duration in seconds (default: ${i.fadeSeconds}, set 0 to disable)`,`--image-only Save images+audio without rendering video`,`--output-dir <dir> Directory for all output files (auto-created if needed)`,`--output <path> Output file path (overrides --output-dir)`],examples:['voxflow picstory --topic "AI Agent 入门" --style sketchnote','voxflow picstory --topic "React hooks explained" --style photo --ratio landscape --language en','voxflow picstory --topic "量子计算原理" --style minimal_3d --scenes 6','voxflow picstory --topic "产品增长故事" --style neon_noir --bgm ~/music/lofi.mp3','voxflow picstory --topic "三体故事" --style manga_panel --ratio portrait','voxflow picstory --topic "2026 AI趋势" --output-dir ~/my-videos --fade 0.6']}};e.exports={picstory:picstory,handle:handle,meta:E,buildSketchnotePrompt:S,buildPhotoPrompt:k,buildImagePrompt:x,VALID_STYLES:b,VALID_RATIOS:y,RATIO_CONFIG:v,SCRIPT_MODEL_PRESETS:C,VALID_SCRIPT_MODELS:T,_test:{buildSketchnotePrompt:S,buildPhotoPrompt:k,buildImagePrompt:x,buildSystemPrompt:w,saveImageDataUrl:saveImageDataUrl,...o(6652)._test}}},8167:(e,t,o)=>{"use strict";e.exports=o(4928)},3272:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const a=/[-ヿ㐀-䶿一-鿿]/;function loadScript(e){const t=r.resolve(e);if(!n.existsSync(t)){throw new Error(`Script file not found: ${t}`)}let o;try{o=JSON.parse(n.readFileSync(t,"utf8"))}catch(e){throw new Error(`Invalid JSON in script file: ${e.message}`)}if(!Array.isArray(o.segments)||o.segments.length===0){throw new Error('Script must contain a non-empty "segments" array.\n'+'Expected: { "segments": [{ "speaker": "Host", "text": "Hello" }, ...] }')}for(let e=0;e<o.segments.length;e++){const t=o.segments[e];if(!t||typeof t.speaker!=="string"||!t.speaker.trim()){throw new Error(`Script segment [${e}] is missing a valid "speaker" field`)}if(!t||typeof t.text!=="string"||!t.text.trim()){throw new Error(`Script segment [${e}] is missing a valid "text" field`)}}return{segments:o.segments.map((e=>({speaker:e.speaker.trim(),text:e.text.trim()}))),voiceMapping:o.voiceMapping||{}}}function parseDialogueText(e,t={}){const o=e.split("\n").filter((e=>e.trim()));const n=[];const r=/^([^::]+)[::]\s*(.+)$/;const i=t.narratorLabel||(a.test(e)?"旁白":"Narrator");for(const e of o){const t=e.trim();if(!t)continue;const o=t.match(r);if(o){const e=o[1].trim();const t=o[2].trim();if(t){n.push({speaker:e,text:t})}}else if(t.length>0){n.push({speaker:i,text:t})}}return n}function parseStructuredScript(e){if(!e?.dialogue||!Array.isArray(e.dialogue))return[];return e.dialogue.map((t=>{const o=e.speakers?.[t.speaker];const n=o?.name||t.speaker;return{speaker:n,text:t.text,intent:t.intent||null}}))}e.exports={loadScript:loadScript,parseDialogueText:parseDialogueText,parseStructuredScript:parseStructuredScript}},2341:(e,t,o)=>{"use strict";const{PODCAST_DEFAULTS:n}=o(3282);const{request:r,throwApiError:a,throwNetworkError:i}=o(2768);const{startSpinner:s}=o(5319);const{parseDialogueText:l,parseStructuredScript:c}=o(3272);function resolveEngine(e){if(e==="legacy"){console.warn("[33m⚠ Warning: the legacy podcast engine is deprecated and will be removed in a future release.[0m");console.warn("[33m Use --engine ai-sdk (default) for better quality and more features.[0m\n");return"legacy"}if(e==="ai-sdk")return"ai-sdk";return"ai-sdk"}async function generateDialogueLegacy(e,t,o){const n=s("\n[1/3] Generating dialogue text (legacy)...");let c,d;try{({status:c,data:d}=await r(`${e}/api/llm/generate-dialogue`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{prompt:o.topic,style:o.style||o.template,length:o.length,dialogueMode:true,autoSpeakerNames:true,exchanges:o.exchanges}))}catch(t){n.stop("FAIL");i(t,e)}if(c!==200||d.code!=="success"){n.stop("FAIL");a(c,d,"Dialogue generation")}const u=d.text;const p=d.voiceMapping||{};const A=d.quota;n.stop("OK");const f=l(u);const h=[...new Set(f.map((e=>e.speaker)))];console.log(` ${u.length} 字, ${f.length} 段, ${h.length} 位说话者`);console.log(` 说话者: ${h.join(", ")}`);console.log(` 配额剩余: ${A?.remaining??"?"}`);return{text:u,segments:f,voiceMapping:p,speakers:h,quota:A,script:null}}async function generateDialogueAiSdk(e,t,o){const l=s("\n[1/3] Generating dialogue text (ai-sdk)...");const d={short:"1-3",medium:"3-5",long:"5-10"};let u,p;try{({status:u,data:p}=await r(`${e}/api/podcast/generate-script`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{topic:o.topic,speakerCount:o.speakers||n.speakers,colloquialLevel:o.colloquial||"medium",language:o.language||"zh-CN",duration:d[o.length]||"3-5",autoMatchVoices:true}))}catch(t){l.stop("FAIL");i(t,e)}if(u!==200||p.code!=="success"){l.stop("FAIL");a(u,p,"Podcast script generation")}const A=p.script;const f=p.voiceMapping||{};const h=p.quota;l.stop("OK");const m=c(A);const g=[...new Set(m.map((e=>e.speaker)))];const v=m.map((e=>`${e.speaker}: ${e.text}`)).join("\n");console.log(` ${v.length} chars, ${m.length} segments, ${g.length} speakers`);console.log(` Speakers: ${g.join(", ")}`);if(A?.quality_score?.overall){console.log(` Quality score: ${A.quality_score.overall}/10`)}console.log(` Quota remaining: ${h?.remaining??"?"}`);return{text:v,segments:m,voiceMapping:f,speakers:g,quota:h,script:A}}e.exports={resolveEngine:resolveEngine,generateDialogueLegacy:generateDialogueLegacy,generateDialogueAiSdk:generateDialogueAiSdk}},4928:(e,t,o)=>{"use strict";const n=o(9896);const r=o(6928);const{PODCAST_DEFAULTS:a}=o(3282);const{ApiError:i}=o(2768);const{buildWav:s}=o(7188);const{loadScript:l,parseStructuredScript:c}=o(3272);const{resolveEngine:d,generateDialogueLegacy:u,generateDialogueAiSdk:p}=o(2341);const{synthesizeAll:A}=o(62);async function podcast(e){const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _podcast(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _podcast(e){const t=e.style||e.template||a.template;const i=e.length||a.length;const c=e.exchanges||a.exchanges;const f=e.speed??a.speed;const h=e.silence??a.silence;const m=e.api;const g=e.token;const v=d(e.engine||"auto");const y=e.colloquial||"medium";const b=e.speakers||a.speakers;const w=e.language||"zh-CN";const x=e.format==="json";const S=e.noTts||false;const k=e.voice||null;const C=e.script||null;const T=e.topic||"Latest trends in technology";if(e.input){return _podcastFromFile(e)}let P=e.output;if(!P){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const t=S?".txt":".wav";P=r.resolve(`podcast-${e}${t}`)}console.log("\n=== VoxFlow Podcast Generator ===");console.log(`Topic: ${T}`);if(C){console.log(`Script: ${C}`)}else{console.log(`Engine: ${v}`);console.log(`Template: ${t}`);console.log(`Length: ${i}`);console.log(`Colloquial: ${y}`);console.log(`Speakers: ${b}`);console.log(`Language: ${w}`)}console.log(`Speed: ${f}`);if(k)console.log(`Voice: ${k}`);if(e.bgm)console.log(`BGM: ${e.bgm} (ducking: ${e.ducking??a.ducking})`);console.log(`API: ${m}`);if(!S)console.log(`Output: ${P}`);let E,_,L,I,B;if(C){console.log("\n[1/3] 加载脚本文件...");const e=l(C);_=e.segments;L=e.voiceMapping;I=[...new Set(_.map((e=>e.speaker)))];E=_.map((e=>`${e.speaker}:${e.text}`)).join("\n");B=null;console.log(` ${E.length} chars, ${_.length} segments, ${I.length} speakers`);console.log(` Speakers: ${I.join(", ")}`)}else if(v==="ai-sdk"){const e=await p(m,g,{topic:T,style:t,length:i,exchanges:c,colloquial:y,speakers:b,language:w});E=e.text;_=e.segments;L=e.voiceMapping;I=e.speakers;B=e.script}else{const e=await u(m,g,{topic:T,style:t,length:i,exchanges:c,template:t});E=e.text;_=e.segments;L=e.voiceMapping;I=e.speakers;B=e.script}if(_.length===0){throw new Error("No dialogue segments found in generated text")}if(x){const e=P.replace(/\.\w+$/,".podcast.json");const o={version:1,engine:v,topic:T,script:B||{dialogue:_.map((e=>({speaker:e.speaker,text:e.text})))},voiceMapping:L,meta:{colloquial:y,speakers:b,language:w,length:i,style:t}};const a=r.dirname(e);n.mkdirSync(a,{recursive:true});n.writeFileSync(e,JSON.stringify(o,null,2),"utf8");console.log(`\n JSON exported: ${e}`)}if(S){const e=P.endsWith(".txt")?P:P.replace(/\.\w+$/,".txt");const t=_.map(((e,t)=>`[${t+1}] ${e.speaker}:${e.text}`)).join("\n\n");const o=r.dirname(e);n.mkdirSync(o,{recursive:true});n.writeFileSync(e,t,"utf8");console.log(`\n=== Done (script only) ===`);console.log(`Script: ${e}`);return{outputPath:e,textPath:e,duration:0,quotaUsed:1}}console.log("\n Voice assignments:");for(const e of I){if(k){console.log(` ${e} → ${k} (override)`)}else{const t=L[e];if(t){console.log(` ${e} → ${t.voiceId}`)}else{console.log(` ${e} → (default)`)}}}const{pcmBuffers:D,quota:N}=await A(m,g,_,L,f,k);const R=e.bgm?"[3/4]":"[3/3]";console.log(`\n${R} 拼接音频...`);const{wav:F,duration:M}=s(D,h);const O=r.dirname(P);n.mkdirSync(O,{recursive:true});const $=r.extname(P).toLowerCase();const z=$!==".wav";const j=z?P.slice(0,-$.length)+".tmp.wav":P;n.writeFileSync(j,F);const U=P.slice(0,-$.length)+".txt";const W=_.map(((e,t)=>`[${t+1}] ${e.speaker}:${e.text}`)).join("\n\n");n.writeFileSync(U,W,"utf8");if(e.bgm){const{checkFfmpeg:t,mixWithBgm:r}=o(9933);const i=await t();if(!i.available){throw new Error("ffmpeg is required for BGM mixing. Install it:\n"+" macOS: brew install ffmpeg\n"+" Ubuntu: sudo apt install ffmpeg\n"+" Windows: https://ffmpeg.org/download.html")}console.log(`\n[4/4] 混合背景音乐 (ducking: ${e.ducking??a.ducking})...`);const s=j.replace(".tmp.wav","-mixed.tmp.wav").replace(/(?<!\.tmp)\.wav$/,"-mixed.wav");await r(j,e.bgm,s,{ducking:e.ducking??a.ducking});n.copyFileSync(s,j);try{n.unlinkSync(s)}catch{}}if(z){const{checkFfmpeg:e,convertAudioFormat:t}=o(9933);const r=await e();if(!r.available){n.renameSync(j,P);console.log(`\n Warning: ffmpeg not found, saved as WAV in ${P}`)}else{await t(j,P);try{n.unlinkSync(j)}catch{}}}const q=(C?0:2)+_.length;console.log(`\n=== Done ===`);console.log(`Output: ${P} (${(n.statSync(P).size/1024).toFixed(1)} KB, ${M.toFixed(1)}s)`);console.log(`Script: ${U}`);console.log(`Quota: ${q} used, ${N?.remaining??"?"} remaining`);return{outputPath:P,textPath:U,duration:M,quotaUsed:q}}async function _podcastFromFile(e){if(!e.token){throw new Error("Authentication required. Run `voxflow login` first.")}const t=r.resolve(e.input);if(!n.existsSync(t)){throw new Error(`Input file not found: ${t}`)}console.log(`\n=== Loading podcast from ${t} ===`);let i;try{i=JSON.parse(n.readFileSync(t,"utf8"))}catch(e){throw new Error(`Invalid JSON in input file ${t}: ${e.message}`)}const l=i.script;const d=i.voiceMapping||{};const u=c(l)||(l?.dialogue||[]).map((e=>({speaker:e.speaker,text:e.text})));if(u.length===0){throw new Error("No dialogue segments found in input file")}const p=e.speed??a.speed;const f=e.silence??a.silence;let h=e.output;if(!h){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);h=r.resolve(`podcast-${e}.wav`)}const m=[...new Set(u.map((e=>e.speaker)))];console.log(` ${u.length} segments, ${m.length} speakers`);const{pcmBuffers:g,quota:v}=await A(e.api,e.token,u,d,p);console.log("\n[3/3] Building audio...");const{wav:y,duration:b}=s(g,f);const w=r.dirname(h);n.mkdirSync(w,{recursive:true});const x=r.extname(h).toLowerCase();const S=x!==".wav";if(S){const e=h.slice(0,-x.length)+".tmp.wav";n.writeFileSync(e,y);const{checkFfmpeg:t,convertAudioFormat:r}=o(9933);const a=await t();if(!a.available){n.renameSync(e,h);console.log(`\n Warning: ffmpeg not found, saved as WAV in ${h}`)}else{await r(e,h);try{n.unlinkSync(e)}catch{}}}else{n.writeFileSync(h,y)}const k=h.slice(0,-x.length)+".txt";const C=u.map(((e,t)=>`[${t+1}] ${e.speaker}:${e.text}`)).join("\n\n");n.writeFileSync(k,C,"utf8");console.log(`\n=== Done ===`);console.log(`Output: ${h} (${(n.statSync(h).size/1024).toFixed(1)} KB, ${b.toFixed(1)}s)`);console.log(`Script: ${k}`);console.log(`Quota: ${u.length} TTS calls, ${v?.remaining??"?"} remaining`);return{outputPath:h,textPath:k,duration:b,quotaUsed:u.length}}async function handle(e){const{parseFlag:t,parseIntFlag:a,parseFloatFlag:i,parseBoolFlag:s,validateSpeed:l,validateSilence:c,runWithRetry:d}=o(5537);const{getToken:u,getTokenInfo:p}=o(598);const{API_BASE:A}=o(3282);const f=t(e,"--api")||A;const h=t(e,"--token");const m=s(e,"--no-tts");const g=t(e,"--input");const v=a(e,"--exchanges");const y=i(e,"--speed");const b=i(e,"--silence");const w=i(e,"--ducking");const x=t(e,"--output","-o");const S=a(e,"--speakers");if(v!==undefined){if(isNaN(v)||v<2||v>30){console.error(`Error: --exchanges must be an integer between 2 and 30 (got: "${t(e,"--exchanges")}")`);process.exit(1)}}l(e,y);c(e,b);if(x){const e=[".wav",".mp3",".txt",".json"];const t=e.some((e=>x.toLowerCase().endsWith(e)));if(!t){console.error(`Error: --output path must end with ${e.join(", ")}`);process.exit(1)}}const k=t(e,"--length");if(k&&!["short","medium","long"].includes(k)){console.error(`Error: --length must be one of: short, medium, long (got: "${k}")`);process.exit(1)}const C=t(e,"--engine");if(C&&!["auto","legacy","ai-sdk"].includes(C)){console.error(`Error: --engine must be one of: auto, legacy, ai-sdk (got: "${C}")`);process.exit(1)}const T=t(e,"--colloquial");if(T&&!["low","medium","high"].includes(T)){console.error(`Error: --colloquial must be one of: low, medium, high (got: "${T}")`);process.exit(1)}if(S!==undefined){if(isNaN(S)||S<1||S>3){console.error(`Error: --speakers must be 1, 2, or 3 (got: "${t(e,"--speakers")}")`);process.exit(1)}}const P=t(e,"--language","--lang");const E={zh:"zh-CN","en-US":"en","ja-JP":"ja"};const _=P?E[P]||P:null;if(_&&!["zh-CN","en","ja"].includes(_)){console.error(`Error: --language must be one of: zh-CN, en, ja (got: "${P}")`);process.exit(1)}const L=t(e,"--template");if(L&&!["interview","discussion","news","story","tutorial"].includes(L)){console.error(`Error: --template must be one of: interview, discussion, news, story, tutorial (got: "${L}")`);process.exit(1)}const I=t(e,"--format");if(I&&!["json"].includes(I)){console.error(`Error: --format must be: json (got: "${I}")`);process.exit(1)}if(g){const e=r.resolve(g);if(!n.existsSync(e)){console.error(`Error: Input file not found: ${e}`);process.exit(1)}}const B=t(e,"--script");if(B){const e=r.resolve(B);if(!n.existsSync(e)){console.error(`Error: Script file not found: ${e}`);process.exit(1)}}const D=t(e,"--bgm");if(D){const e=r.resolve(D);if(!n.existsSync(e)){console.error(`Error: BGM file not found: ${e}`);process.exit(1)}}if(w!==undefined){if(isNaN(w)||w<0||w>1){console.error(`Error: --ducking must be between 0 and 1.0 (got: "${t(e,"--ducking")}")`);process.exit(1)}}let N;if(h){N=h}else{N=await u({api:f});const e=p();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}let R=t(e,"--topic");if(!R){const t=new Set(["--topic","--engine","--template","--style","--colloquial","--speakers","--language","--lang","--length","--exchanges","--format","--input","--script","--voice","--bgm","--ducking","--output","-o","--speed","--silence","--api","--token"]);for(let o=0;o<e.length;o++){if(e[o].startsWith("-")){if(t.has(e[o]))o++;continue}R=e[o];break}}const F={token:N,api:f,topic:R,style:t(e,"--style")||L,template:L,length:k,exchanges:v,output:x,speed:y,silence:b,engine:C||undefined,colloquial:T||undefined,speakers:S||undefined,language:_||undefined,format:I||undefined,input:g||undefined,noTts:m,voice:t(e,"--voice"),script:B,bgm:D,ducking:w};await d(podcast,F,f,h)}const f={podcast:{usage:"[topic] [opts]",description:"Generate a multi-speaker podcast/dialogue",options:[`<topic> Podcast topic (positional arg or --topic)`,`--topic <text> Podcast topic (alternative to positional, default: tech trends)`,`--engine <type> auto | legacy | ai-sdk (default: auto → ai-sdk)`,`--template <name> interview | discussion | news | story | tutorial`,`--colloquial <lvl> low | medium | high (default: medium)`,`--speakers <n> Speaker count: 1, 2, or 3 (default: ${a.speakers})`,`--language <code> zh-CN | en | ja (alias: --lang; accepts zh, en-US, ja-JP)`,`--style <style> Legacy: dialogue style (maps to --template)`,`--length <len> short | medium | long (default: ${a.length})`,`--exchanges <n> Number of exchanges, 2-30 (legacy, default: ${a.exchanges})`,`--format json Output .podcast.json alongside audio`,`--input <file> Load .podcast.json and synthesize from it`,`--no-tts Generate script only, skip TTS synthesis`,`--script <file> Pre-written script JSON (skips LLM generation)`,`--voice <id> Override TTS voice for all speakers`,`--bgm <file> Background music file to mix in`,`--ducking <n> BGM volume ducking 0-1.0 (default: ${a.ducking})`,`--output <path> Output WAV path (default: ./podcast-<timestamp>.wav)`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--silence <sec> Silence between segments, 0-5.0 (default: ${a.silence})`],examples:['voxflow podcast "远程工作让人更累的三个原因"','voxflow podcast --topic "AI in healthcare"','voxflow podcast "climate change" --colloquial high --speakers 3','voxflow podcast "tech news" --template news --lang en','voxflow podcast --topic "AI" --format json --no-tts',"voxflow podcast --input podcast.podcast.json",'voxflow podcast --topic "debate" --engine legacy --length long --exchanges 20',"voxflow podcast --script dialogue.json --voice v-male-Bk7vD3xP",'voxflow podcast --topic "music history" --bgm background.mp3 --ducking 0.15']}};const{parseDialogueText:h}=o(3272);e.exports={podcast:podcast,handle:handle,meta:f,ApiError:i,_test:{parseDialogueText:h,parseStructuredScript:c,resolveEngine:d,loadScript:l}}},62:(e,t,o)=>{"use strict";const{getIntentParams:n}=o(6669);const{synthesizeTTS:r}=o(1428);async function synthesizeSegment(e,t,o,n,a,i,s,l,c){const d=await r({apiBase:e,token:t,text:o,voiceId:n,speed:a,volume:i,index:s,total:l,label:c});console.log(` OK (${(d.audio.length/1024).toFixed(0)} KB)`);return{pcm:d.audio,quota:d.quota}}async function synthesizeAll(e,t,o,r,a,i){console.log(`\n[2/3] 合成 TTS 音频 (${o.length} 段, 多角色)...`);const s=[];let l=null;for(let c=0;c<o.length;c++){const d=o[c];const u=r[d.speaker]||{};const p=i||u.voiceId||"v-female-R2s4N9qJ";const A=u.speed||a;const f=n(d.intent);const h=A*f.speed;const m=f.volume;const g=await synthesizeSegment(e,t,d.text,p,h,m,c,o.length,d.speaker);s.push(g.pcm);l=g.quota}return{pcmBuffers:s,quota:l}}e.exports={synthesizeSegment:synthesizeSegment,synthesizeAll:synthesizeAll}},8204:(e,t,o)=>{const n=o(9896);const r=o(6928);const{PRESENT_DEFAULTS:a}=o(3282);const{request:i,throwApiError:s,throwNetworkError:l}=o(2768);const{buildWav:c}=o(7188);const{BYTES_PER_MS:d}=o(9167);const{startSpinner:u}=o(5319);const p={noir:"Scheme1-CinematicNoir",neon:"Scheme2-NeonGlass",editorial:"Scheme3-EditorialLuxury",aurora:"Scheme4-GradientAurora",brutalist:"Scheme5-BoldBrutalist"};const A=Object.keys(p);const f=p;const h=A;const m=10;const g=1;function findVideoPresentDir(){let e=__dirname;for(let t=0;t<5;t++){const t=r.join(e,"remotion-cards");if(n.existsSync(r.join(t,"package.json"))){return t}e=r.dirname(e)}return null}function isRemotionReady(){const e=findVideoPresentDir();if(!e)return false;return n.existsSync(r.join(e,"node_modules","remotion"))}async function generateCards(e,t,o){let n,r;try{({status:n,data:r}=await i(`${e}/api/llm/generate-present-cards`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},o))}catch(t){l(t,e)}if(n!==200||r.code!=="success"){s(n,r,"Card generation")}return{cards:r.data.cards,quota:r.data.quota}}async function synthesizeNarration(e,t,o,n,r,a,c){process.stdout.write(` TTS card [${a+1}/${c}]...`);let u,p;try{({status:u,data:p}=await i(`${e}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}},{text:o,voiceId:n,speed:r,volume:1}))}catch(t){console.log(" FAIL");l(t,e)}if(u!==200||p.code!=="success"){console.log(" FAIL");s(u,p,`TTS card ${a+1}`)}const A=Buffer.from(p.audio,"base64");const f=Math.round(A.length/d);console.log(` OK (${(A.length/1024).toFixed(0)} KB, ${(f/1e3).toFixed(1)}s)`);return{pcm:A,durationMs:f,quota:p.quota}}function computeDurations(e,t){return e.map(((e,o)=>{if(t&&t[o]&&t[o].durationMs>0){return Math.max(5,Math.ceil(t[o].durationMs/1e3)+g)}return m}))}async function renderVideo(e,t,a){const i=findVideoPresentDir();if(!i){throw new Error("remotion-cards/ directory not found.\n"+" Install: cd remotion-cards && npm install")}if(!n.existsSync(r.join(i,"node_modules","remotion"))){throw new Error("Remotion not installed in remotion-cards/.\n"+" Run: cd remotion-cards && npm install")}const s=r.join(o(857).tmpdir(),`voxflow-present-${Date.now()}-${Math.random().toString(36).slice(2,8)}.json`);n.writeFileSync(s,JSON.stringify({cardsData:e}));const l=p[t]||"Scheme4-GradientAurora";const{execFileSync:c}=o(5317);const d=process.platform==="win32"?"npx.cmd":"npx";const u=["remotion","render",l,a,"--props",s,"--codec","h264","--image-format","jpeg"];try{c(d,u,{cwd:i,stdio:"pipe",timeout:6e5,maxBuffer:50*1024*1024})}finally{try{n.unlinkSync(s)}catch{}}}async function present(e){const{token:t,api:o,text:i,url:s,cards:l,style:d=a.style,voice:p=a.voice,speed:A=a.speed,noAudio:f=false,webSearch:h=false}=e;const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{const a=f?3:4;let m=1;let g;let v=null;if(l){console.log(`\n[${m}/${a}] Loading cards from ${l}...`);const e=n.readFileSync(l,"utf8");try{g=JSON.parse(e)}catch(e){throw new Error(`Invalid JSON in cards file ${l}: ${e.message}`)}if(!g.cards||!Array.isArray(g.cards)){throw new Error('Invalid cards.json: missing "cards" array')}console.log(` Loaded ${g.cards.length} cards`)}else{if(s){console.log(`\n[${m}/${a}] Generating cards from URL...`);console.log(` URL: ${s}`)}else if(i){console.log(`\n[${m}/${a}] Generating cards from text...`)}else{throw new Error("No input provided. Use --text, --url, or --cards")}if(h)console.log(" Web search: enabled");const e={};if(s)e.url=s;else e.content=i;if(h)e.webSearch=true;const n=u(" Generating via API...");try{const r=await generateCards(o,t,e);g=r.cards;v=r.quota;n.stop(`OK (${g.cards.length} cards)`)}catch(e){n.stop("FAIL");throw new Error(`Card generation failed: ${e.message}`)}}const y=g.cards.length;const b=g.cards.map((e=>e.type)).join(", ");console.log(` Cards: ${y} (${b})`);m++;let w=null;let x=v;let S=v;const k=findVideoPresentDir();const C=[];if(!f){const e=g.cards.filter((e=>e.narration));console.log(`\n[${m}/${a}] Synthesizing narration (${e.length} cards with narration)...`);w=[];for(let e=0;e<g.cards.length;e++){const a=g.cards[e];if(!a.narration){w.push({durationMs:0});C.push(null);continue}const i=await synthesizeNarration(o,t,a.narration,p,A,e,y);w.push({durationMs:i.durationMs});if(!x&&i.quota)x=i.quota;S=i.quota;const s=`card-narration-${e}.wav`;if(k){const e=r.join(k,"public");n.mkdirSync(e,{recursive:true});const t=c([i.pcm],0);n.writeFileSync(r.join(e,s),t.wav)}C.push(s)}m++}const T=computeDurations(g.cards,w);g.cards=g.cards.map(((e,t)=>({...e,durationSec:T[t],audioFile:C[t]||null})));console.log(`\n[${m}/${a}] Rendering video (style: ${d})...`);if(!isRemotionReady()){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const t=`present-${e}.json`;n.writeFileSync(t,JSON.stringify(g,null,2));console.log(" Remotion not available. Saved cards & audio for later rendering.");console.log(` Cards: ${t}`);if(C.some(Boolean)&&k){C.filter(Boolean).forEach((e=>{console.log(` Audio: ${r.join(k,"public",e)}`)}))}console.log("\n To install Remotion: cd remotion-cards && npm install");console.log(" Then re-run with: voxflow present --cards "+t);const o=T.reduce(((e,t)=>e+t*1e3),0);return{outputPath:null,cardsPath:t,duration:o}}const P=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const E=e.output||`present-${P}.mp4`;const _=u(" Rendering...");try{await renderVideo(g,d,E);_.stop("OK")}catch(e){_.stop("FAIL");try{n.unlinkSync(E)}catch{}throw new Error(`Video render failed: ${e.message}`)}finally{if(k){C.forEach((e=>{if(e)try{n.unlinkSync(r.join(k,"public",e))}catch{}}))}}m++;const L=E.replace(/\.mp4$/,".json");n.writeFileSync(L,JSON.stringify(g,null,2));const I=T.reduce(((e,t)=>e+t*1e3),0);const B=n.statSync(E);const D=(B.size/(1024*1024)).toFixed(1);console.log(`\n[${m}/${a}] Done!`);console.log("\n=== Output ===");console.log(` Video: ${E} (${D} MB, ${formatDuration(I)})`);console.log(` Cards: ${L}`);console.log(` Style: ${d}`);console.log(` Cards: ${y} (${b})`);if(S){const e=x&&S?x.remaining-S.remaining:y*100;console.log(` Quota: ${e} used, ${S.remaining??"?"} remaining`)}return{outputPath:E,cardsPath:L,duration:I}}finally{process.removeListener("SIGINT",sigintHandler)}}function formatDuration(e){const t=Math.round(e/1e3);const o=Math.floor(t/60);const n=t%60;if(o===0)return`${n}s`;return`${o}m${n.toString().padStart(2,"0")}s`}async function handle(e){const{parseFlag:t,parseFloatFlag:n,parseBoolFlag:r,validateSpeed:a,runWithRetry:i}=o(5537);const{getToken:s,getTokenInfo:l}=o(598);const{API_BASE:c}=o(3282);const d=t(e,"--api")||c;const u=t(e,"--token");const p=n(e,"--speed");const f=t(e,"--output","-o");a(e,p);if(f){const e=[".mp4",".wav"].some((e=>f.toLowerCase().endsWith(e)));if(!e){console.error("Error: --output path must end with .mp4 or .wav");process.exit(1)}}const h=t(e,"--style")||t(e,"--scheme");if(h&&!A.includes(h)){console.error(`Error: --style must be one of: ${A.join(", ")} (got: "${h}")`);process.exit(1)}const m=t(e,"--text");const g=t(e,"--url");const v=t(e,"--cards");if(!m&&!g&&!v){console.error("Error: provide one of --text, --url, or --cards");process.exit(1)}if(v&&!o(9896).existsSync(v)){console.error(`Error: cards file not found: ${v}`);process.exit(1)}let y;if(u){y=u}else{y=await s({api:d});const e=l();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const b={token:y,api:d,text:m,url:g,cards:v,style:h||undefined,voice:t(e,"--voice")||undefined,speed:p,output:f,noAudio:r(e,"--no-audio"),webSearch:r(e,"--web-search")};await i(present,b,d,u)}const v={present:{usage:"<--text|--url|--cards> [opts]",description:"Generate a short video from text or URL content",options:[`--text <text> Input text content`,`--url <url> URL to fetch and convert`,`--cards <path> Pre-generated cards.json (skip LLM)`,`--style <name> Visual style: noir, neon, editorial, aurora (default), brutalist`,`--voice <id> TTS voice ID (default: ${a.voice})`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--no-audio Skip TTS, render silent video only`,`--web-search Search the web for up-to-date info on the topic`,`--output <path> Output file path (default: ./present-<timestamp>.mp4)`],examples:['voxflow present --text "Claude Code 是一个 AI 编程工具" --style aurora',"voxflow present --url https://example.com/article --style noir",'voxflow present --text "2025 AI芯片格局" --web-search --style neon',"voxflow present --cards my-cards.json --no-audio",'voxflow present --text "React 入门指南" --voice v-male-Bk7vD3xP --output react.mp4']}};e.exports={present:present,handle:handle,meta:v,STYLES:p,VALID_STYLES:A,SCHEMES:f,VALID_SCHEMES:h,renderVideo:renderVideo,findVideoPresentDir:findVideoPresentDir,isRemotionReady:isRemotionReady,computeDurations:computeDurations,synthesizeNarration:synthesizeNarration,_test:{computeDurations:computeDurations,formatDuration:formatDuration,STYLES:p,VALID_STYLES:A,SCHEMES:f,VALID_SCHEMES:h}}},4460:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(6982);const{API_BASE:i}=o(3282);const{request:s}=o(2768);const{videoTranslate:l}=o(6851);const{dub:c}=o(220);const{mergeAudioVideo:d,getAudioDuration:u}=o(9933);function ensureDir(e){n.mkdirSync(e,{recursive:true})}function defaultOutputPath(e){const t=r.basename(e,r.extname(e));const o=t+"-published.mp4";return r.resolve(r.dirname(e),o)}function defaultPublishDir(){return r.resolve(process.cwd(),"published")}function toFileUrl(e){const t=e.split(r.sep).join("/");return t.startsWith("/")?`file://${t}`:`file:///${t}`}function copyToPublishDir(e,t,o){ensureDir(t);const a=(new Date).toISOString().replace(/[:.]/g,"-");const i=r.basename(e,r.extname(e));const s=`${i}-${o}-${a}.mp4`;const l=r.join(t,s);n.copyFileSync(e,l);return{target:"local",platform:o,status:"ready",publishedPath:l,publishUrl:toFileUrl(l)}}async function publishToWebhook(e,t){const o=new URL(e);if(o.protocol!=="https:"&&o.protocol!=="http:"){throw new Error("Webhook URL must use HTTP or HTTPS")}const n=o.hostname;if(n==="localhost"||n==="127.0.0.1"||n==="0.0.0.0"||n==="::1"||n.startsWith("10.")||n.startsWith("192.168.")||n.match(/^172\.(1[6-9]|2\d|3[01])\./)||n==="169.254.169.254"||n.startsWith("169.254.")||n.startsWith("fd")||n.startsWith("fc")||n.startsWith("fe80")||n.endsWith(".internal")||n.endsWith(".local")){throw new Error("Webhook URL must not target private networks")}const{status:r,data:a}=await s(e,{method:"POST",headers:{"Content-Type":"application/json"}},t);if(r>=400){throw new Error(`Webhook publish failed (${r}): ${a?.message||JSON.stringify(a)}`)}return{target:"webhook",status:a.status||"submitted",platform:a.platform||t.platform,publishUrl:a.publishUrl||a.url||null,platformJobId:a.jobId||null,raw:a}}async function publish(e){const sigintHandler=()=>{console.log("\n\nPublish cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _publish(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _publish(e){const{token:t,api:o=i,input:s,from:p,to:A,srt:f,video:h,audio:m,voice:g,voicesMap:v,speed:y,realign:b=false,batchSize:w,keepIntermediates:x=false,output:S,publishTarget:k="local",publishDir:C=defaultPublishDir(),publishWebhook:T,platform:P="generic",title:E}=e;const _=!!(s&&A);const L=!!(f&&h);const I=!!(h&&m);const B=[_,L,I].filter(Boolean).length;if(B!==1){throw new Error("Invalid publish input. Use exactly one mode:\n"+" 1) --input <video> --to <lang> (video-translate + publish)\n"+" 2) --srt <file> --video <video> (dub + publish)\n"+" 3) --video <video> --audio <audio> (merge existing + publish)")}if(!["local","webhook","none"].includes(k)){throw new Error(`--publish must be one of: local, webhook, none (got: ${k})`)}if(k==="webhook"&&!T){throw new Error("--publish webhook requires --publish-webhook <url>")}console.log("\n=== VoxFlow Publish ===");console.log(`Publish target: ${k}`);console.log(`Platform: ${P}`);let D;let N;let R={};if(_){if(!t){throw new Error('Publish mode "video-translate" requires authentication token')}console.log("Build mode: video-translate");const e=await l({token:t,api:o,input:s,from:p,to:A,voice:g,voicesMap:v,output:S?r.resolve(S):undefined,realign:b,batchSize:w,keepIntermediates:x,speed:y});D=e.outputPath;N="video-translate";R=e}else if(L){if(!t){throw new Error('Publish mode "srt-dub" requires authentication token')}console.log("Build mode: srt-dub");const e=await c({token:t,api:o,srt:f,video:h,voice:g,voicesMap:v,speed:y,output:S?r.resolve(S):undefined});D=e.outputPath;N="srt-dub";R=e}else{console.log("Build mode: merge-existing");D=S?r.resolve(S):defaultOutputPath(r.resolve(h));await d(h,m,D);N="merge-existing";R={outputPath:D,quotaUsed:0}}const F=r.resolve(D);const M=n.statSync(F);const O=await u(F);const $=`pub_${a.randomUUID()}`;const z={jobId:$,title:E||r.basename(F,r.extname(F)),buildMode:N,platform:P,createdAt:(new Date).toISOString(),artifact:{localPath:F,sizeBytes:M.size,durationSec:Number((O/1e3).toFixed(2))}};let j={target:"none",status:"skipped",platform:P,publishUrl:null};if(k==="local"){j=copyToPublishDir(F,r.resolve(C),P)}else if(k==="webhook"){const{localPath:e,...t}=z.artifact;j=await publishToWebhook(T,{...z,artifact:{...t,filePath:r.basename(z.artifact.localPath)}})}const U={...z,publish:j,quotaUsed:R.quotaUsed||0,buildResult:R};console.log("\n=== Publish Done ===");console.log(`Final video: ${F}`);console.log(`Duration: ${U.artifact.durationSec}s`);console.log(`Size: ${(U.artifact.sizeBytes/1024/1024).toFixed(2)} MB`);console.log(`Publish status: ${j.status}`);if(j.publishUrl){console.log(`Publish URL: ${j.publishUrl}`)}else if(j.publishedPath){console.log(`Published file: ${j.publishedPath}`)}return U}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,validateSpeed:i,assertFileExists:s,runWithRetry:l}=o(5537);const{getToken:c,getTokenInfo:d}=o(598);const{API_BASE:u,getConfigDir:p}=o(3282);const{warnIfMissingFfmpeg:A}=o(9933);await A(p(),"dub");const f=t(e,"--api")||u;const h=t(e,"--token");const m=t(e,"--input");const g=t(e,"--to");const v=t(e,"--video");const y=t(e,"--srt");const b=t(e,"--audio");const w=t(e,"--output","-o");const x=t(e,"--publish")||"local";const S=t(e,"--publish-webhook");if(m)s(m,"Input video");if(v)s(v,"Video");if(y)s(y,"SRT");if(b)s(b,"Audio");if(x&&!["local","webhook","none"].includes(x)){console.error(`Error: --publish must be one of: local, webhook, none (got: "${x}")`);process.exit(1)}if(x==="webhook"&&!S){console.error("Error: --publish webhook requires --publish-webhook <url>");process.exit(1)}if(w&&!w.toLowerCase().endsWith(".mp4")){console.error("Error: --output path must end with .mp4");process.exit(1)}const k=r(e,"--speed");i(e,k);const C=n(e,"--batch-size");if(C!==undefined&&(isNaN(C)||C<1||C>20)){console.error(`Error: --batch-size must be between 1 and 20 (got: "${t(e,"--batch-size")}")`);process.exit(1)}const T=!!(v&&b&&!y&&!m);let P=null;if(!T){if(h){P=h}else{P=await c({api:f});const e=d();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}}const E={token:P,api:f,input:m,from:t(e,"--from"),to:g,srt:y,video:v,audio:b,voice:t(e,"--voice"),voicesMap:t(e,"--voices"),output:w,speed:k,realign:a(e,"--realign"),keepIntermediates:a(e,"--keep-intermediates"),batchSize:C,publishTarget:x,publishDir:t(e,"--publish-dir"),publishWebhook:S,platform:t(e,"--platform")||undefined,title:t(e,"--title")||undefined};try{const t=T?await publish(E):await l(publish,E,f,h);if(a(e,"--json")){console.log(JSON.stringify(t,null,2))}}catch(e){const t=e.message||e.code||String(e);console.error(`\nFatal error: ${t}`);process.exit(1)}}const p={publish:{usage:"[opts]",description:"One-command build+merge+publish for Skill/Web orchestration",options:["--input <video> Mode A: video-translate then publish (requires --to)","--to <lang> Target language for Mode A","--from <lang> Source language for Mode A (default: auto)","--srt <file> Mode B: dub existing subtitles into video (requires --video)","--video <file> Video file for Mode B/Mode C","--audio <file> Mode C: merge existing audio into video","--voice <id> TTS voice for Mode A/B","--voices <file> Multi-speaker voice map for Mode A/B","--output <path> Final MP4 output path","--publish <target> local (default) | webhook | none","--publish-dir <dir> Local publish directory (for --publish local)","--publish-webhook <url> Webhook URL (for --publish webhook)","--platform <name> Platform metadata tag (default: generic)","--title <text> Title metadata","--json Print structured JSON result (recommended for skills)"],examples:["voxflow publish --input video.mp4 --to en --publish local","voxflow publish --srt captions.srt --video input.mp4 --publish local","voxflow publish --video input.mp4 --audio narration.mp3 --publish local","voxflow publish --input video.mp4 --to ja --publish webhook --publish-webhook https://publisher.example.com/hook --json"]}};e.exports={publish:publish,handle:handle,meta:p}},89:(e,t,o)=>{"use strict";const{execFile:n,execFileSync:r}=o(5317);const{promisify:a}=o(9023);const i=o(3785);const{getFreshTokenInfo:s}=o(598);const{detectAIAgent:l}=o(2093);const c=a(n);const d="VoxFlowStudio/skills";const u=["hub","podcast","transcribe","video","slice"];const p=Object.freeze(["npx",Object.freeze(["-y","skills","add",d,"--all","--yes","--global"])]);const A={claude:{name:"Claude Code",binary:"claude",install:p,docs:"https://docs.anthropic.com/claude/docs/claude-code"},cursor:{name:"Cursor",binary:"cursor",install:p,docs:"https://docs.cursor.com/"},codex:{name:"Codex CLI",binary:"codex",install:p,docs:"https://github.com/openai/codex"},gemini:{name:"Gemini CLI",binary:"gemini",install:p,docs:"https://github.com/google-gemini/gemini-cli"},workbuddy:{name:"WorkBuddy",binary:"workbuddy",install:p,docs:"https://voxflow.studio/docs/skills"},openclaw:{name:"OpenClaw",binary:"openclaw",install:p,docs:"https://voxflow.studio/docs/skills"},generic:{name:"Generic Skills-protocol agent",binary:null,install:p,docs:"https://voxflow.studio/docs/skills"}};const f=Object.keys(A).filter((e=>A[e].binary));function binaryExists(e,t=r){if(!e)return false;try{const o=process.platform==="win32"?"where":"which";t(o,[e],{stdio:"ignore",timeout:3e3});return true}catch{return false}}function detectAgents(e=r){return f.filter((t=>binaryExists(A[t].binary,e))).map((e=>({key:e,...A[e]})))}function dedupeByInstallCommand(e){const t=new Map;for(const o of e){const e=`${o.install[0]} ${o.install[1].join(" ")}`;if(!t.has(e))t.set(e,o)}return Array.from(t.values())}function chooseTargets(e,t){if(e.for){const t=A[e.for];if(!t){const t=Object.keys(A).join(", ");throw new Error(`Unknown agent "${e.for}". Supported: ${t}`)}return[{key:e.for,...t}]}if(t.length===0)return[{key:"generic",...A.generic}];return t}function parseArgs(e){const t={for:null,all:false,dryRun:false,yes:false};for(let o=0;o<e.length;o++){const n=e[o];if(n==="--for"){t.for=e[++o];if(t.for)t.for=t.for.toLowerCase()}else if(n==="--all")t.all=true;else if(n==="--dry-run")t.dryRun=true;else if(n==="-y"||n==="--yes")t.yes=true}return t}async function runInstall(e,{dryRun:t},o=c){const[n,r]=e.install;const a=`${n} ${r.join(" ")}`;if(t)return{ok:true,dryRun:true,command:a};try{const{stdout:e,stderr:t}=await o(n,r,{timeout:18e4});return{ok:true,stdout:e,stderr:t,command:a}}catch(e){return{ok:false,error:e,command:a}}}function ask(e,t=process.stdin,o=process.stderr){return new Promise((n=>{if(!t.isTTY){n("");return}const r=i.createInterface({input:t,output:o});r.question(e,(e=>{r.close();n(e.trim())}))}))}function out(e){process.stderr.write(e)}function printDetection(e,t=f){out(" Detecting AI agents on this machine...\n");for(const o of t){const t=e.some((e=>e.key===o));const n=t?"✓":"·";const r=t?"":" (not detected)";out(` ${n} ${A[o].name}${r}\n`)}out("\n")}function printList(){out("\n Supported AI agents and install methods:\n\n");for(const[e,t]of Object.entries(A)){const o=`${t.install[0]} ${t.install[1].join(" ")}`;const n=t.binary?"[auto-detect]":"[fallback]";out(` ${e.padEnd(11)} ${t.name.padEnd(35)} ${n}\n`);out(` → ${o}\n`)}out("\n Run `voxflow skills install` for auto-detection,\n");out(" or `voxflow skills install --for <agent>` to force one,\n");out(" or `voxflow skills install --all` to install for every detected agent.\n\n")}function printNextSteps(e,t){out("\n What you can do now:\n");out(" 1. Make sure CLI is logged in (only needed once):\n");out(" voxflow login\n");out(" 2. Open your AI agent and try saying:\n");out(' "把这段话合成语音"\n');out(' "生成一个 3 分钟 AI 播客"\n');out(' "把这个视频翻译成日语"\n');if(t){out("\n ⚠ Some installs failed. You can retry manually with:\n");for(const t of e){out(` ${t.install[0]} ${t.install[1].join(" ")}\n`)}}out("\n Docs: https://voxflow.studio/docs/skills\n\n")}async function preflightAuthAdvice(){let e;try{e=await s()}catch{e=null}if(e&&e.valid){out(` ✓ Logged in as ${e.email}\n\n`);return{loggedIn:true,info:e}}const t=l();out(" ⚠ Not logged in to VoxFlow.\n");out(" Skills will install successfully, but the first `voxflow say` /\n");out(" `voxflow narrate` call will prompt for login.\n");out("\n");if(t){out(` 👤 USER ACTION (you are running inside ${t}):\n`);out(" After this command, run `voxflow login` and finish the browser flow.\n");out(" Or skip browser entirely: `export VOXFLOW_TOKEN=<jwt>` then re-run.\n")}else{out(" Run `voxflow login` separately to set up auth ahead of time.\n")}out("\n");return{loggedIn:false}}async function handleInstall(e){const t=parseArgs(e);const o=detectAgents();out("\n VoxFlow Skill Installer\n\n");printDetection(o);let n;try{n=chooseTargets(t,o)}catch(e){out(` Error: ${e.message}\n\n`);printList();process.exit(1)}const r=dedupeByInstallCommand(n);out(" Will install for:\n");for(const e of n){out(` → ${e.name}\n`)}out(`\n Command: ${r[0].install[0]} ${r[0].install[1].join(" ")}\n`);if(r.length===1){out(" (One command covers all detected agents — `npx skills add` writes\n");out(" to each agent's standard location automatically.)\n")}out("\n");if(!t.dryRun){await preflightAuthAdvice()}if(!t.yes&&!t.dryRun&&process.stdin.isTTY){const e=(await ask(" Proceed? [Y/n] ")).toLowerCase();if(e&&e!=="y"&&e!=="yes"){out(" Cancelled.\n\n");return{ok:false,reason:"user-cancelled"}}out("\n")}const a=[];for(const e of r){out(` Installing...\n`);out(` $ ${e.install[0]} ${e.install[1].join(" ")}\n`);const o=await runInstall(e,t);a.push({target:e,result:o});if(o.dryRun)out(` (dry-run, nothing executed)\n`);else if(o.ok){out(` ✓ Installed: ${u.join(", ")}\n`);out(` → ~/.agents/skills/ (linked into every detected agent's skill dir)\n`)}else{out(` ✗ Failed: ${o.error.message.split("\n")[0]}\n`);if(o.error.stderr){const e=o.error.stderr.toString().trim().split("\n").slice(-3).join("\n ");if(e)out(` ${e}\n`)}}}const i=a.some((e=>!e.result.ok&&!e.result.dryRun));printNextSteps(n,i);if(i)process.exit(1);return{ok:!i,results:a}}function handleList(){printList();return{ok:true}}function handleDetect(){const e=detectAgents();out("\n");printDetection(e);const t=`${p[0]} ${p[1].join(" ")}`;if(e.length===0){out(" No AI agents auto-detected. You can still install via the universal\n");out(" Skills-protocol installer (it will write to whatever standard agent\n");out(" locations exist on this machine):\n\n");out(` ${t}\n\n`)}else{out(` Run \`voxflow skills install\` to install for the detected agents,\n`);out(` or run the underlying command directly:\n\n ${t}\n\n`)}return{ok:true,detected:e.map((e=>e.key))}}const h=["install","list","detect"];async function handle(e){const t=e[0];const o=e.slice(1);if(!t||t==="-h"||t==="--help"){printHelp();process.exit(t?0:1);return}if(!h.includes(t)){out(`Error: unknown subcommand "${t}". Use one of: ${h.join(" | ")}\n`);printHelp();process.exit(1);return}if(t==="install")return handleInstall(o);if(t==="list")return handleList();if(t==="detect")return handleDetect()}function printHelp(){out(`\nUsage: voxflow skills <subcommand> [options]\n\nSubcommands:\n install Install VoxFlow Skills into your AI agent\n list Show all supported agents and their install commands\n detect Show which agents are detected on this machine\n\nOptions for \`install\`:\n --for <agent> Target a specific agent (claude | cursor | codex | gemini |\n workbuddy | openclaw | generic)\n --all Install for every detected agent\n --dry-run Print commands without executing\n -y, --yes Skip confirmation prompt\n\nExamples:\n voxflow skills install # auto-detect best target\n voxflow skills install --for claude # force Claude Code\n voxflow skills install --all # install for every detected agent\n voxflow skills install --dry-run # preview without running\n voxflow skills detect # what's on this machine\n voxflow skills list # all supported agents\n\n`)}const m={skills:{usage:"<install | list | detect> [options]",description:"Install VoxFlow Skills into your AI agent (Claude Code, Cursor, Codex, Gemini, WorkBuddy, OpenClaw, etc.)",options:["install [--for <agent>] Install skills (auto-detect or force one)","install --all Install for every detected agent","install --dry-run Print commands without executing","install -y Skip confirmation prompt","list Show every supported agent + command","detect Show what is auto-detected on this machine"],examples:["voxflow skills install","voxflow skills install --for claude","voxflow skills install --all","voxflow skills detect","voxflow skills list"]}};e.exports={handle:handle,meta:m,AGENTS:A,AUTO_DETECTABLE:f,SKILL_LIST:u,UNIVERSAL_INSTALL:p,binaryExists:binaryExists,detectAgents:detectAgents,chooseTargets:chooseTargets,dedupeByInstallCommand:dedupeByInstallCommand,parseArgs:parseArgs,runInstall:runInstall,preflightAuthAdvice:preflightAuthAdvice}},8609:(e,t,o)=>{const n=o(9896);const r=o(6928);const{request:a,throwApiError:i,throwNetworkError:s,ApiError:l}=o(2768);const c=["paper-slide","editorial-mag","bold-poster","notion-card","brutalist","glass-dark"];const d="paper-slide";const u=80;async function slice(e){const t=e.article;if(typeof t!=="string"||t.trim().length<u){throw new Error(`Article must be a non-empty string of at least ${u} characters `+`(got ${t?t.trim().length:0}).`)}const o=e.theme||d;if(!c.includes(o)){throw new Error(`Unknown theme "${o}". Valid: ${c.join(", ")}`)}const l=e.api;const p=e.token;const A=e.json===true;if(!A){console.log("\n=== VoxFlow Slice ===");console.log(`Theme: ${o}`);console.log(`Article: ${t.trim().length} chars`)}let f,h;try{({status:f,data:h}=await a(`${l}/api/paper-slide/slice`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${p}`}},{article:t.trim(),theme:o}))}catch(e){s(e,l)}if(f!==200||!h||h.code!=="success"){i(f,h,"slice")}const m=h.data?.deck;const g=h.data?.usage||{};if(!m){throw new Error("Slice response missing `data.deck`")}const v=200;const y=typeof h.quota?.costDelta==="number"?h.quota.costDelta:v;const b=JSON.stringify({deck:m,usage:g,theme:o},null,2);let w=null;if(e.output){w=r.resolve(e.output);const t=r.dirname(w);n.mkdirSync(t,{recursive:true});n.writeFileSync(w,b+"\n","utf8");if(!A){console.log(`\nWrote ${w} (${(b.length/1024).toFixed(1)} KB)`)}}else if(A){process.stdout.write(b+"\n")}else{console.log("\n--- Deck JSON ---");console.log(b)}if(!A){const e=Array.isArray(m.cards)?m.cards.length:0;console.log("\n=== Done ===");console.log(`Cards: ${e}`);console.log(`Quota: ${y} used, ${h.quota?.remaining??"?"} remaining`);console.log(`\nNext: render the deck at https://voxflow.studio/apps/slice (paste the JSON or import).`)}return{deck:m,usage:g,quotaUsed:y,outputPath:w}}async function handle(e){const{parseFlag:t,runWithRetry:a}=o(5537);const{getToken:i,getTokenInfo:s}=o(598);const{API_BASE:l}=o(3282);const d=t(e,"--api")||l;const u=t(e,"--token");const p=t(e,"--text");const A=t(e,"--theme");const f=t(e,"--output","-o");const h=e.includes("--json");let m;if(p){m=p}else{const t=new Set(["--text","--theme","--output","-o","--token","--api"]);let o;for(let n=0;n<e.length;n++){if(e[n].startsWith("-")){if(t.has(e[n]))n++;continue}o=e[n];break}if(!o){console.error('Error: provide an article file or --text "..."');console.error("Usage: voxflow slice <file> [--theme <id>] [-o <out.json>]");process.exit(1)}try{m=n.readFileSync(r.resolve(o),"utf8")}catch(e){console.error(`Error: cannot read file "${o}": ${e.message}`);process.exit(1)}}if(A&&!c.includes(A)){console.error(`Error: --theme "${A}" not in: ${c.join(", ")}`);process.exit(1)}let g;if(u){g=u}else{g=await i({api:d});if(!h){const e=s();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}}const v={token:g,api:d,article:m,theme:A||undefined,output:f||undefined,json:h};await a(slice,v,d,u)}const p={slice:{usage:"<file> [--theme <id>] [--text <s>] [-o <file>] [--json]",description:"Slice an article into a 5–8 card deck JSON (Slice / paper-slide AI; 200 quota)",options:["<file> Article file (markdown / plain text, ≥ 80 chars)","--text <string> Pass article inline instead of reading a file",`--theme <id> One of: ${c.join(", ")} (default: ${d})`,"-o, --output <path> Write deck JSON to file (default: print to stdout/console)","--json Pure JSON mode — suppress all logs, emit only the deck JSON to stdout (for piping)"],examples:["voxflow slice article.md","voxflow slice article.md --theme editorial-mag -o deck.json",'voxflow slice --text "..." --theme bold-poster --json | jq .deck']}};e.exports={slice:slice,handle:handle,meta:p,VALID_THEMES:c,DEFAULT_THEME:d,MIN_ARTICLE_CHARS:u,ApiError:l}},1089:(e,t,o)=>{"use strict";e.exports=o(1082)},2395:e=>{"use strict";const t=["midnight","paper","ember","forest","ocean"];const o=["product","report","tutorial","pitch","free"];const n=["swift","balanced","pro","creative"];const r=["hero","title-bullets","two-column","three-cards","image-left","image-right","quote","timeline","stats","section"];const a={product:"This is a product launch presentation. Focus on value proposition, clear feature benefits, and persuasive metrics. End with a strong call to action.",report:"This is an annual/quarterly report. Use real-looking data, professional tone, clear metrics with year-over-year comparisons. Be factual and concise.",tutorial:"This is a step-by-step tutorial. Number each step clearly, use practical examples, and include actionable tips. Keep instructions concise and easy to follow.",pitch:"This is a startup investor pitch deck. Be compelling with real-looking metrics, clear market sizing (TAM/SAM/SOM), and a persuasive narrative arc. Show traction with specific numbers.",free:""};const i={product:[{layout:"hero",hint:"Product name and tagline"},{layout:"title-bullets",hint:"Pain points the product solves"},{layout:"two-column",hint:"Problem vs Solution comparison"},{layout:"three-cards",hint:"Key feature 1, 2, 3"},{layout:"three-cards",hint:"More features or benefits"},{layout:"stats",hint:"Performance metrics or user stats"},{layout:"quote",hint:"Customer testimonial or endorsement"},{layout:"hero",hint:"Call to action and next steps"}],report:[{layout:"hero",hint:"Report title, year, organization"},{layout:"title-bullets",hint:"Executive summary highlights"},{layout:"stats",hint:"Quarterly or annual key metrics"},{layout:"two-column",hint:"Achievements and highlights"},{layout:"title-bullets",hint:"Challenges and lessons learned"},{layout:"timeline",hint:"Key milestones or roadmap"},{layout:"hero",hint:"Outlook and closing statement"}],tutorial:[{layout:"hero",hint:"Tutorial title and what you will learn"},{layout:"title-bullets",hint:"Overview and prerequisites"},{layout:"two-column",hint:"Step 1 with details"},{layout:"two-column",hint:"Step 2 with details"},{layout:"two-column",hint:"Step 3 with details"},{layout:"two-column",hint:"Step 4 with details"},{layout:"three-cards",hint:"Pro tips and best practices"},{layout:"hero",hint:"Summary and next steps"}],pitch:[{layout:"hero",hint:"Company name, one-line pitch"},{layout:"title-bullets",hint:"The problem being solved"},{layout:"stats",hint:"Market size and opportunity"},{layout:"two-column",hint:"Solution and how it works"},{layout:"three-cards",hint:"Business model and revenue streams"},{layout:"stats",hint:"Traction and key metrics"},{layout:"three-cards",hint:"Team members and expertise"},{layout:"hero",hint:"The ask — funding, partnerships, next steps"}],free:[]};const s=`You are a professional presentation designer creating business-quality slide decks. Generate structured JSON.\n\nSTRICT RULES:\n1. Output ONLY valid JSON, no markdown fences, no extra text\n2. Each slide must have: id (number), layout (string), content (object), narration (string)\n3. narration: speaker script, 2-3 sentences, natural professional tone\n4. Layout choices: ${r.join(", ")}\n5. NEVER use emoji characters anywhere — not in titles, bullets, headings, or card icons. Use short text labels instead (e.g. "01", "A", "i", or leave icon field empty string "")\n6. Write concise, data-driven text. No vague filler. Every bullet should contain a specific fact, number, or insight.\n7. First slide: "hero". Last slide: "hero" or "section" for closing. Use varied layouts in between — avoid repeating the same layout consecutively.\n8. 8-10 slides total. Prefer stats, timeline, two-column, quote layouts for variety.\n9. For three-cards: set icon to "" (empty string). For stats: use real-looking numbers with units.\n\nCONTENT STRUCTURE per layout:\n- hero: { title, subtitle }\n- title-bullets: { title, bullets: string[] } (max 5 bullets)\n- two-column: { title, left: { heading, text }, right: { heading, text } }\n- three-cards: { title, cards: [{ icon: "", heading, text }] } (exactly 3 cards)\n- image-left / image-right: { title, imagePrompt, text }\n- quote: { quote, author, context }\n- timeline: { title, events: [{ year, text }] } (3-5 events)\n- stats: { title, stats: [{ value, label }] } (2-4 stats with realistic numbers)\n- section: { title, subtitle }\n\nOUTPUT FORMAT:\n{\n "meta": { "title": "..." },\n "slides": [ ... ]\n}`;const l=["swift","balanced","pro","creative"];e.exports={VALID_THEMES:t,VALID_TEMPLATES:o,VALID_MODELS:n,SLIDE_LAYOUTS:r,TEMPLATE_HINTS:a,TEMPLATE_STRUCTURES:i,SLIDES_SYSTEM_PROMPT:s,VALID_MODEL_ALIASES:l}},645:e=>{"use strict";function esc(e){if(!e)return"";return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}const t={hero(e){return`<div class="slide-page slide-hero">\n <h1>${esc(e.title)}</h1>\n ${e.subtitle?`<div class="slide-subtitle">${esc(e.subtitle)}</div>`:""}\n </div>`},"title-bullets"(e){const t=(e.bullets||[]).map((e=>`<li>${esc(e)}</li>`)).join("");return`<div class="slide-page slide-title-bullets">\n <h2>${esc(e.title)}</h2>\n <ul class="slide-bullets">${t}</ul>\n </div>`},"two-column"(e){return`<div class="slide-page slide-two-column">\n <h2>${esc(e.title)}</h2>\n <div class="slide-columns">\n <div class="slide-col">\n <h3>${esc(e.left?.heading)}</h3>\n <p>${esc(e.left?.text)}</p>\n </div>\n <div class="slide-col">\n <h3>${esc(e.right?.heading)}</h3>\n <p>${esc(e.right?.text)}</p>\n </div>\n </div>\n </div>`},"three-cards"(e){const t=(e.cards||[]).map((e=>`\n <div class="slide-card">\n ${e.icon?`<div class="slide-card-icon">${esc(e.icon)}</div>`:""}\n <h3>${esc(e.heading)}</h3>\n <p>${esc(e.text)}</p>\n </div>`)).join("");return`<div class="slide-page slide-three-cards">\n <h2>${esc(e.title)}</h2>\n <div class="slide-cards-grid">${t}</div>\n </div>`},"image-left"(e){return`<div class="slide-page slide-image-split left">\n <div class="slide-image-placeholder">IMG</div>\n <div class="slide-image-content">\n <h2>${esc(e.title)}</h2>\n <p>${esc(e.text)}</p>\n </div>\n </div>`},"image-right"(e){return`<div class="slide-page slide-image-split right">\n <div class="slide-image-content">\n <h2>${esc(e.title)}</h2>\n <p>${esc(e.text)}</p>\n </div>\n <div class="slide-image-placeholder">IMG</div>\n </div>`},quote(e){return`<div class="slide-page slide-quote">\n <blockquote>"${esc(e.quote)}"</blockquote>\n <div class="slide-quote-author">— ${esc(e.author)}</div>\n ${e.context?`<div class="slide-quote-context">${esc(e.context)}</div>`:""}\n </div>`},timeline(e){const t=(e.events||[]).map((e=>`\n <div class="slide-timeline-event">\n <div class="slide-timeline-year">${esc(e.year)}</div>\n <div class="slide-timeline-text">${esc(e.text)}</div>\n </div>`)).join("");return`<div class="slide-page slide-timeline">\n <h2>${esc(e.title)}</h2>\n <div class="slide-timeline-track">${t}</div>\n </div>`},stats(e){const t=e.stats||[];const o=Math.min(t.length,4);const n=t.map((e=>`\n <div class="slide-stat">\n <div class="slide-stat-value">${esc(e.value)}</div>\n <div class="slide-stat-label">${esc(e.label)}</div>\n </div>`)).join("");return`<div class="slide-page slide-stats">\n <h2>${esc(e.title)}</h2>\n <div class="slide-stats-grid" data-cols="${o}">${n}</div>\n </div>`},section(e){return`<div class="slide-page slide-section">\n <h2>${esc(e.title)}</h2>\n ${e.subtitle?`<div class="slide-subtitle">${esc(e.subtitle)}</div>`:""}\n </div>`}};function renderSlideHTML(e){const o=t[e.layout]||t["title-bullets"];return o(e.content)}const o=`\n/* Theme presets */\n.slides-style-midnight {\n --slide-bg:#18181b;--slide-bg-alt:#27272a;--slide-accent:#2dd4bf;\n --slide-accent-soft:rgba(45,212,191,0.15);--slide-text:#fafafa;\n --slide-text-secondary:#a1a1aa;--slide-text-muted:#71717a;\n --slide-border:#3f3f46;--slide-card-bg:#27272a;\n --slide-hero-from:#18181b;--slide-hero-via:#1c1c22;--slide-hero-to:#18181b;\n}\n.slides-style-paper {\n --slide-bg:#fafaf9;--slide-bg-alt:#f5f5f4;--slide-accent:#2563eb;\n --slide-accent-soft:rgba(37,99,235,0.1);--slide-text:#1c1917;\n --slide-text-secondary:#57534e;--slide-text-muted:#a8a29e;\n --slide-border:#d6d3d1;--slide-card-bg:#ffffff;\n --slide-hero-from:#f5f5f4;--slide-hero-via:#fafaf9;--slide-hero-to:#f5f5f4;\n}\n.slides-style-ember {\n --slide-bg:#1c1917;--slide-bg-alt:#292524;--slide-accent:#f59e0b;\n --slide-accent-soft:rgba(245,158,11,0.15);--slide-text:#fafaf9;\n --slide-text-secondary:#a8a29e;--slide-text-muted:#78716c;\n --slide-border:#44403c;--slide-card-bg:#292524;\n --slide-hero-from:#1c1917;--slide-hero-via:#231f1b;--slide-hero-to:#1c1917;\n}\n.slides-style-forest {\n --slide-bg:#14231a;--slide-bg-alt:#1a3024;--slide-accent:#4ade80;\n --slide-accent-soft:rgba(74,222,128,0.12);--slide-text:#f0fdf4;\n --slide-text-secondary:#86efac;--slide-text-muted:#4ade80;\n --slide-border:#2d5a3e;--slide-card-bg:#1a3024;\n --slide-hero-from:#14231a;--slide-hero-via:#182b20;--slide-hero-to:#14231a;\n}\n.slides-style-ocean {\n --slide-bg:#0c1929;--slide-bg-alt:#132240;--slide-accent:#38bdf8;\n --slide-accent-soft:rgba(56,189,248,0.12);--slide-text:#f0f9ff;\n --slide-text-secondary:#7dd3fc;--slide-text-muted:#38bdf8;\n --slide-border:#1e3a5f;--slide-card-bg:#132240;\n --slide-hero-from:#0c1929;--slide-hero-via:#0f2035;--slide-hero-to:#0c1929;\n}\n\n/* Slide container */\n.slides-viewport { width:100vw;height:100vh;position:relative;overflow:hidden; background:var(--slide-bg); }\n.slide-page { position:absolute;inset:0;display:none;color:var(--slide-text); }\n.slide-page.active { display:flex; }\n\n.slide-hero { flex-direction:column;align-items:center;justify-content:center;text-align:center;\n background:linear-gradient(135deg,var(--slide-hero-from),var(--slide-hero-via),var(--slide-hero-to));padding:10% 12%; }\n.slide-hero h1 { font-size:clamp(1.8rem,4vw,3.5rem);font-weight:700;line-height:1.2;margin-bottom:0.5em; }\n.slide-hero .slide-subtitle { font-size:clamp(1rem,1.8vw,1.5rem);color:var(--slide-accent); }\n\n.slide-title-bullets { flex-direction:column;justify-content:center;padding:8% 10%;background:var(--slide-bg); }\n.slide-title-bullets h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.5em; }\n.slide-bullets { list-style:none;padding:0;display:flex;flex-direction:column;gap:0.8em; }\n.slide-bullets li { display:flex;align-items:flex-start;gap:0.6em;font-size:clamp(0.9rem,1.4vw,1.25rem);color:var(--slide-text-secondary);line-height:1.5; }\n.slide-bullets li::before { content:'';flex-shrink:0;width:8px;height:8px;margin-top:0.5em;border-radius:50%;background:var(--slide-accent); }\n\n.slide-two-column { flex-direction:column;justify-content:center;padding:8%;background:var(--slide-bg); }\n.slide-two-column h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.2em; }\n.slide-columns { display:grid;grid-template-columns:1fr 1fr;gap:1.5em; }\n.slide-col { background:var(--slide-card-bg);border-radius:12px;padding:1.5em;border:1px solid var(--slide-border); }\n.slide-col h3 { font-size:clamp(0.9rem,1.3vw,1.15rem);font-weight:600;color:var(--slide-accent);margin-bottom:0.6em; }\n.slide-col p { font-size:clamp(0.8rem,1.1vw,1rem);color:var(--slide-text-secondary);line-height:1.6; }\n\n.slide-three-cards { flex-direction:column;align-items:center;justify-content:center;padding:6% 8%;background:var(--slide-bg); }\n.slide-three-cards h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.2em;text-align:center; }\n.slide-cards-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:1.2em;width:100%; }\n.slide-card { background:var(--slide-card-bg);border-radius:12px;padding:1.5em;text-align:center;border:1px solid var(--slide-border); }\n.slide-card-icon { font-size:2em;margin-bottom:0.5em; }\n.slide-card h3 { font-size:clamp(0.85rem,1.2vw,1.1rem);font-weight:600;margin-bottom:0.4em; }\n.slide-card p { font-size:clamp(0.75rem,1vw,0.9rem);color:var(--slide-text-muted);line-height:1.5; }\n\n.slide-image-split { background:var(--slide-bg); }\n.slide-image-split.left { flex-direction:row; }\n.slide-image-split.right { flex-direction:row-reverse; }\n.slide-image-placeholder { flex:1;display:flex;align-items:center;justify-content:center;background:var(--slide-bg-alt);font-size:3em;color:var(--slide-text-muted); }\n.slide-image-content { flex:1;display:flex;flex-direction:column;justify-content:center;padding:8%; }\n.slide-image-content h2 { font-size:clamp(1.2rem,2.2vw,2rem);font-weight:700;margin-bottom:0.8em; }\n.slide-image-content p { font-size:clamp(0.85rem,1.2vw,1.1rem);color:var(--slide-text-secondary);line-height:1.7; }\n\n.slide-quote { flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:10% 12%;background:var(--slide-bg); }\n.slide-quote blockquote { font-size:clamp(1.2rem,2.2vw,2rem);font-weight:300;font-style:italic;line-height:1.6;max-width:80%;margin-bottom:1em; }\n.slide-quote .slide-quote-author { font-size:clamp(0.85rem,1.2vw,1.1rem);color:var(--slide-accent); }\n.slide-quote .slide-quote-context { font-size:clamp(0.75rem,1vw,0.9rem);color:var(--slide-text-muted);margin-top:0.3em; }\n\n.slide-timeline { flex-direction:column;justify-content:center;padding:8% 10%;background:var(--slide-bg); }\n.slide-timeline h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.2em; }\n.slide-timeline-track { position:relative;padding-left:2em;border-left:2px solid var(--slide-accent);display:flex;flex-direction:column;gap:1.2em; }\n.slide-timeline-event { position:relative; }\n.slide-timeline-event::before { content:'';position:absolute;left:calc(-2em - 5px);top:0.35em;width:12px;height:12px;border-radius:50%;background:var(--slide-accent); }\n.slide-timeline-year { font-weight:700;color:var(--slide-accent);font-size:clamp(0.9rem,1.3vw,1.15rem); }\n.slide-timeline-text { color:var(--slide-text-secondary);margin-top:0.2em;font-size:clamp(0.8rem,1.1vw,1rem); }\n\n.slide-stats { flex-direction:column;align-items:center;justify-content:center;padding:8% 10%;background:var(--slide-bg); }\n.slide-stats h2 { font-size:clamp(1.4rem,2.8vw,2.5rem);font-weight:700;margin-bottom:1.5em;text-align:center; }\n.slide-stats-grid { display:grid;gap:2em;width:100%; }\n.slide-stats-grid[data-cols="2"] { grid-template-columns:1fr 1fr; }\n.slide-stats-grid[data-cols="3"] { grid-template-columns:1fr 1fr 1fr; }\n.slide-stats-grid[data-cols="4"] { grid-template-columns:1fr 1fr 1fr 1fr; }\n.slide-stat { text-align:center; }\n.slide-stat-value { font-size:clamp(1.8rem,3.5vw,3rem);font-weight:800;color:var(--slide-accent);margin-bottom:0.2em; }\n.slide-stat-label { font-size:clamp(0.8rem,1.1vw,1rem);color:var(--slide-text-muted); }\n\n.slide-section { flex-direction:column;align-items:center;justify-content:center;text-align:center;\n background:linear-gradient(135deg,var(--slide-bg-alt),var(--slide-bg));padding:10%; }\n.slide-section h2 { font-size:clamp(1.8rem,3.5vw,3rem);font-weight:700;margin-bottom:0.3em; }\n.slide-section .slide-subtitle { font-size:clamp(0.9rem,1.5vw,1.3rem);color:var(--slide-text-muted); }\n`;function buildExportHTML(e,t){const n=e.slides||[];const r=n.map(((e,t)=>{const o=e.audio?.durationMs||5e3;const n=e.audio?.dataUri||"";const r=renderSlideHTML(e);const a=r.match(/class="slide-page ([^"]*)">([\s\S]*)<\/div>$/);const i=a?a[1]:"";const s=a?a[2]:r;return`<section class="slide-page ${i}"\n data-slide-id="${e.id}" data-slide-index="${t}"\n data-duration-ms="${o}"\n data-narration="${esc(e.narration||"")}"\n ${n?`data-audio-url="${esc(n)}"`:""}\n >${s}</section>`})).join("\n");return`<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="UTF-8">\n<meta name="viewport" content="width=device-width, initial-scale=1.0">\n<title>${esc(e.meta?.title||"Presentation")}</title>\n<style>\n* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; overflow: hidden; }\n${o}\n.export-controls {\n position: fixed; bottom: 0; left: 0; right: 0;\n background: rgba(0,0,0,0.85); backdrop-filter: blur(8px);\n padding: 10px 24px; display: flex; align-items: center; gap: 14px;\n z-index: 100; border-top: 1px solid rgba(255,255,255,0.1);\n}\n.export-controls button {\n background: none; border: 1px solid rgba(255,255,255,0.25);\n color: #fff; padding: 6px 14px; border-radius: 6px; cursor: pointer; font-size: 13px;\n}\n.export-controls button:hover { background: rgba(255,255,255,0.1); }\n.export-progress { flex: 1; height: 3px; background: rgba(255,255,255,0.1); border-radius: 2px; overflow: hidden; cursor: pointer; }\n.export-progress-fill { height: 100%; background: var(--slide-accent); border-radius: 2px; width: 0%; transition: width 0.1s linear; }\n.export-counter { color: rgba(255,255,255,0.5); font-size: 13px; min-width: 50px; text-align: center; }\n.export-subtitle {\n position: fixed; bottom: 60px; left: 50%; transform: translateX(-50%);\n background: rgba(0,0,0,0.7); color: #fff; padding: 6px 20px; border-radius: 10px;\n font-size: 15px; max-width: 80vw; text-align: center; opacity: 0; transition: opacity 0.3s; z-index: 100;\n}\n.export-subtitle.visible { opacity: 1; }\n</style>\n</head>\n<body>\n<div class="slides-viewport slides-style-${t}">\n${r}\n<div class="export-subtitle" id="subtitle"></div>\n</div>\n<div class="export-controls">\n <button id="btn-prev">◀</button>\n <button id="btn-play">▶ Play</button>\n <button id="btn-next">▶</button>\n <div class="export-progress" id="progress"><div class="export-progress-fill" id="progress-fill"></div></div>\n <div class="export-counter" id="counter">1 / ${n.length}</div>\n</div>\n<script>\nconst pages=document.querySelectorAll('.slide-page'),total=pages.length;\nlet idx=0,playing=false,timer=null,audio=null,progTimer=null;\nfunction show(i){pages.forEach(p=>p.classList.remove('active'));pages[i].classList.add('active');idx=i;\ndocument.getElementById('counter').textContent=(i+1)+' / '+total;\nconst n=pages[i].dataset.narration,s=document.getElementById('subtitle');\nif(n){s.textContent=n;s.classList.add('visible')}else{s.classList.remove('visible')}}\nfunction prog(r){document.getElementById('progress-fill').style.width=(r*100)+'%'}\nfunction globalProg(si,sr){let t=0,b=0;pages.forEach((p,i)=>{const d=+p.dataset.durationMs||5000;t+=d;if(i<si)b+=d});\nreturn(b+(+pages[si].dataset.durationMs||5000)*sr)/t}\nasync function playSlide(i){show(i);const d=+pages[i].dataset.durationMs||5000,u=pages[i].dataset.audioUrl;\nif(u){audio=new Audio(u);audio.play().catch(()=>{})}\nconst st=Date.now();clearInterval(progTimer);progTimer=setInterval(()=>{prog(globalProg(i,Math.min((Date.now()-st)/d,1)))},50);\nreturn new Promise(r=>{timer=setTimeout(()=>{clearInterval(progTimer);r()},d)})}\nasync function playAll(){playing=true;document.getElementById('btn-play').textContent='\\u23F8 Pause';\nfor(let i=idx;i<total;i++){if(!playing)break;await playSlide(i)}stop()}\nfunction stop(){playing=false;clearTimeout(timer);clearInterval(progTimer);if(audio){audio.pause();audio=null}\ndocument.getElementById('btn-play').textContent='\\u25B6 Play'}\ndocument.getElementById('btn-play').onclick=()=>{if(playing)stop();else playAll()};\ndocument.getElementById('btn-prev').onclick=()=>{stop();show(Math.max(0,idx-1))};\ndocument.getElementById('btn-next').onclick=()=>{stop();show(Math.min(total-1,idx+1))};\ndocument.addEventListener('keydown',e=>{if(e.key==='ArrowRight'||e.key===' '){e.preventDefault();stop();show(Math.min(total-1,idx+1))}\nif(e.key==='ArrowLeft'){stop();show(Math.max(0,idx-1))}if(e.key==='Escape')stop()});\ndocument.getElementById('progress').onclick=e=>{const r=(e.clientX-e.target.getBoundingClientRect().left)/e.target.offsetWidth;\nstop();show(Math.min(total-1,Math.max(0,Math.floor(r*total))))};\nshow(0);\n<\/script>\n</body>\n</html>`}e.exports={buildExportHTML:buildExportHTML,renderSlideHTML:renderSlideHTML,esc:esc}},1082:(e,t,o)=>{"use strict";const n=o(9896);const{SLIDES_DEFAULTS:r}=o(3282);const{request:a,throwApiError:i,throwNetworkError:s}=o(2768);const{chatCompletion:l}=o(929);const{buildWav:c}=o(7188);const{BYTES_PER_MS:d}=o(9167);const{startSpinner:u}=o(5319);const{VALID_THEMES:p,VALID_TEMPLATES:A,VALID_MODELS:f,TEMPLATE_HINTS:h,TEMPLATE_STRUCTURES:m,SLIDES_SYSTEM_PROMPT:g,VALID_MODEL_ALIASES:v}=o(2395);const{buildExportHTML:y}=o(645);async function generateSlides(e,t,o,n,r){const a=h[n]||"";const i=m[n]||[];let s=o;if(a){s+=`\n\nTemplate hint: ${a}`}if(i.length>0){const e=i.map(((e,t)=>` Slide ${t+1}: layout="${e.layout}" — ${e.hint}`)).join("\n");s+=`\n\nSuggested structure:\n${e}`}const c=[{role:"system",content:g},{role:"user",content:s}];const d=v.includes(r)?r:"swift";const u=await l({apiBase:e,token:t,messages:c,temperature:.7,maxTokens:4e3,modelPreset:d});let p=u.content.trim();const A=p.match(/```(?:json)?\s*([\s\S]*?)```/);if(A)p=A[1].trim();const f=JSON.parse(p);if(!f.slides||!Array.isArray(f.slides)||f.slides.length<2){throw new Error("LLM returned invalid slide structure (need at least 2 slides)")}return{data:f,quota:u.quota}}async function synthesizeNarration(e,t,o,n,r,l,c){process.stdout.write(` TTS slide [${l+1}/${c}]...`);let u,p;try{({status:u,data:p}=await a(`${e}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{text:o,voiceId:n,speed:r,volume:1}))}catch(t){console.log(" FAIL");s(t,e)}if(u!==200||p.code!=="success"){console.log(" FAIL");i(u,p,`TTS slide ${l+1}`)}const A=Buffer.from(p.audio,"base64");const f=Math.round(A.length/d);console.log(` OK (${(A.length/1024).toFixed(0)} KB, ${(f/1e3).toFixed(1)}s)`);return{pcm:A,durationMs:f,quota:p.quota}}async function slides(e){const{token:t,api:o,text:a,voice:i=r.voice,speed:s=r.speed,theme:l=r.theme,template:d=r.template,model:p=r.model,noAudio:A=false}=e;const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(0)};process.on("SIGINT",sigintHandler);try{const r=A?2:3;let f=1;console.log(`\n[${f}/${r}] Generating slides from text...`);console.log(` Theme: ${l}, Template: ${d}, Model: ${p}`);const h=u(" Calling LLM...");let m;let g=null;try{const e=await generateSlides(o,t,a,d,p);m=e.data;g=e.quota;h.stop(`OK (${m.slides.length} slides)`)}catch(e){h.stop("FAIL");throw new Error(`Slide generation failed: ${e.message}`)}const v=m.slides.length;const b=m.slides.map((e=>e.layout)).join(", ");console.log(` Slides: ${v} (${b})`);f++;let w=g;let x=g;if(!A){const e=m.slides.filter((e=>e.narration));console.log(`\n[${f}/${r}] Synthesizing narration (${e.length} slides with narration)...`);for(let e=0;e<m.slides.length;e++){const n=m.slides[e];if(!n.narration){n.audio={durationMs:5e3};continue}const r=await synthesizeNarration(o,t,n.narration,i,s,e,v);if(!w&&r.quota)w=r.quota;x=r.quota;const{wav:a}=c([r.pcm],0);const l=`data:audio/wav;base64,${a.toString("base64")}`;n.audio={durationMs:r.durationMs,dataUri:l}}f++}else{for(const e of m.slides){e.audio={durationMs:5e3}}}const S=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);const k=e.output||`slides-${S}.html`;console.log(`\n[${f}/${r}] Writing HTML...`);const C=y(m,l);n.writeFileSync(k,C,"utf8");const T=n.statSync(k);const P=(T.size/1024).toFixed(0);console.log("\n=== Output ===");console.log(` File: ${k} (${P} KB)`);console.log(` Slides: ${v} (${b})`);console.log(` Theme: ${l}`);console.log(` Template: ${d}`);if(!A){const e=m.slides.reduce(((e,t)=>e+(t.audio?.durationMs||5e3)),0);console.log(` Duration: ${formatDuration(e)}`)}if(x){const e=w&&x?w.remaining-x.remaining:v*100;console.log(` Quota: ${e} used, ${x.remaining??"?"} remaining`)}console.log("\n Open in browser to view and present.");return{outputPath:k,slideCount:v}}finally{process.removeListener("SIGINT",sigintHandler)}}function formatDuration(e){const t=Math.round(e/1e3);const o=Math.floor(t/60);const n=t%60;if(o===0)return`${n}s`;return`${o}m${n.toString().padStart(2,"0")}s`}async function handle(e){const{parseFlag:t,parseFloatFlag:n,parseBoolFlag:r,validateSpeed:a,runWithRetry:i}=o(5537);const{getToken:s,getTokenInfo:l}=o(598);const{API_BASE:c}=o(3282);const d=t(e,"--api")||c;const u=t(e,"--token");const h=n(e,"--speed");const m=t(e,"--output","-o");a(e,h);if(m){if(!m.toLowerCase().endsWith(".html")){console.error("Error: --output path must end with .html");process.exit(1)}}const g=t(e,"--theme");if(g&&!p.includes(g)){console.error(`Error: --theme must be one of: ${p.join(", ")} (got: "${g}")`);process.exit(1)}const v=t(e,"--template");if(v&&!A.includes(v)){console.error(`Error: --template must be one of: ${A.join(", ")} (got: "${v}")`);process.exit(1)}const y=t(e,"--model");if(y&&!f.includes(y)){console.error(`Error: --model must be one of: ${f.join(", ")} (got: "${y}")`);process.exit(1)}let b=t(e,"--text");if(!b){const t=new Set(["--text","--voice","--speed","--theme","--template","--model","--output","-o","--token","--api"]);for(let o=0;o<e.length;o++){if(e[o].startsWith("-")){if(t.has(e[o]))o++;continue}b=e[o];break}}if(!b){console.error('Error: No text provided. Usage: voxflow slides "your topic" [options]');process.exit(1)}let w;if(u){w=u}else{w=await s({api:d});const e=l();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const x={token:w,api:d,text:b,theme:g||undefined,template:v||undefined,model:y||undefined,voice:t(e,"--voice")||undefined,speed:h,output:m,noAudio:r(e,"--no-audio")};await i(slides,x,d,u)}const b={slides:{usage:'"topic" [opts]',description:"Generate AI presentation slides as HTML",options:[`<text> Topic or text (positional arg or --text)`,`--text <text> Topic to generate slides about`,`--voice <id> TTS voice ID (default: ${r.voice})`,`--speed <n> TTS speed 0.5-2.0 (default: ${r.speed})`,`--theme <name> Theme: midnight, paper, ember, forest, ocean (default: ${r.theme})`,`--template <name> Template: product, report, tutorial, pitch, free (default: ${r.template})`,`--model <id> Model: swift, balanced, pro, creative (default: ${r.model})`,`--no-audio Skip TTS synthesis, generate slides only`,`--output <path> Output HTML file (default: ./slides-<timestamp>.html)`],examples:['voxflow slides "AI in Healthcare"','voxflow slides "Q4 Revenue Report" --template report --theme paper','voxflow slides "React Tutorial" --template tutorial --model balanced','voxflow slides "Startup Pitch" --template pitch --theme ocean --no-audio']}};e.exports={slides:slides,handle:handle,meta:b,VALID_THEMES:p,VALID_TEMPLATES:A,VALID_MODELS:f}},3362:(e,t,o)=>{const n=o(9896);const r=o(6928);const{STORY_DEFAULTS:a}=o(3282);const{request:i,throwApiError:s,throwNetworkError:l,ApiError:c}=o(2768);const{parseParagraphs:d,buildWav:u,createSilence:p}=o(7188);const{startSpinner:A}=o(5319);const{synthesizeTTS:f}=o(1428);async function generateStory(e,t,o){const n=A("\n[1/3] Generating story text...");let r,a;try{({status:r,data:a}=await i(`${e}/api/llm/chat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{messages:[{role:"user",content:o}],stream:false,temperature:.8}))}catch(t){n.stop("FAIL");l(t,e)}if(r!==200||a.code!=="success"){n.stop("FAIL");s(r,a,"LLM")}const c=a.content;const d=a.quota;n.stop("OK");console.log(` ${c.length} chars. Quota remaining: ${d?.remaining??"?"}`);return{story:c,quota:d}}async function synthesizeParagraph(e,t,o,n,r,a,i){const s=await f({apiBase:e,token:t,text:o,voiceId:n,speed:r,index:a,total:i});console.log(` OK (${(s.audio.length/1024).toFixed(0)} KB)`);return{pcm:s.audio,quota:s.quota}}async function synthesizeAll(e,t,o,n,r){console.log(`\n[2/3] Synthesizing TTS audio (${o.length} segments)...`);const a=[];let i=null;for(let s=0;s<o.length;s++){const l=await synthesizeParagraph(e,t,o[s],n,r,s,o.length);a.push(l.pcm);i=l.quota}return{pcmBuffers:a,quota:i}}async function story(e){const sigintHandler=()=>{console.log("\n\nGeneration cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _story(e)}finally{process.removeListener("SIGINT",sigintHandler)}}function buildStoryPrompt(e,t){if(e){return`${e}\n\n要求:\n1. 严格输出 ${t} 段(不多不少)\n2. 段落之间用且仅用一个空行分隔\n3. 不要添加段落编号、标题或前言,直接输出正文`}return`请写一个适合5岁儿童的短故事,要求:\n1. 严格输出 ${t} 段(不多不少),每段 2-3 句话\n2. 每段描述一个清晰的画面场景\n3. 语言简单易懂,充满童趣\n4. 段落之间用且仅用一个空行分隔\n5. 不要添加段落编号、标题或前言,直接输出故事内容`}function clampParagraphs(e,t){if(!Array.isArray(e))return[];if(e.length<=t||t<1)return e;const o=Array.from({length:t},(()=>[]));for(let n=0;n<e.length;n++){const r=Math.min(t-1,Math.floor(n*t/e.length));o[r].push(e[n])}return o.map((e=>e.join(" "))).filter((e=>e.trim().length>0))}async function _story(e){const t=e.voice||a.voice;const i=e.paragraphs||a.paragraphs;const s=e.speed??a.speed;const l=e.silence??a.silence;const c=e.api;const p=e.token;const A=buildStoryPrompt(e.topic,i);let f=e.output;if(!f){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);f=r.resolve(`story-${e}.wav`)}console.log("\n=== VoxFlow Story Generator ===");console.log(`Voice: ${t}`);console.log(`API: ${c}`);console.log(`Paragraphs: ${i}`);console.log(`Speed: ${s}`);console.log(`Output: ${f}`);const{story:h}=await generateStory(c,p,A);const m=d(h);if(m.length===0){throw new Error("No paragraphs found in generated story")}const g=clampParagraphs(m,i);if(m.length!==g.length){console.log(` ${m.length} paragraphs from LLM → merged to ${g.length} (--paragraphs ${i})`)}else{console.log(` ${g.length} paragraphs`)}const{pcmBuffers:v,quota:y}=await synthesizeAll(c,p,g,t,s);console.log("\n[3/3] Merging audio...");const{wav:b,duration:w}=u(v,l);const x=r.dirname(f);n.mkdirSync(x,{recursive:true});const S=r.extname(f).toLowerCase();const k=S!==".wav";if(k){const e=f.replace(/\.[^.]+$/,".tmp.wav");n.writeFileSync(e,b);const{checkFfmpeg:t,convertAudioFormat:r}=o(9933);const a=await t();if(!a.available){n.renameSync(e,f);console.log(`\n Warning: ffmpeg not found, saved as WAV in ${f}`)}else{await r(e,f);try{n.unlinkSync(e)}catch{}}}else{n.writeFileSync(f,b)}const C=f.slice(0,-r.extname(f).length)+".txt";const T=g.map(((e,t)=>`[${t+1}] ${e}`)).join("\n\n");n.writeFileSync(C,T,"utf8");const P=1+g.length;console.log(`\n=== Done ===`);console.log(`Output: ${f} (${(n.statSync(f).size/1024).toFixed(1)} KB, ${w.toFixed(1)}s)`);console.log(`Story: ${C}`);console.log(`Quota: ${P} used, ${y?.remaining??"?"} remaining`);return{outputPath:f,textPath:C,duration:w,quotaUsed:P}}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,validateSpeed:a,validateSilence:i,validateOutput:s,runWithRetry:l}=o(5537);const{getToken:c,getTokenInfo:d}=o(598);const{API_BASE:u}=o(3282);const p=t(e,"--api")||u;const A=t(e,"--token");const f=n(e,"--paragraphs");const h=r(e,"--speed");const m=r(e,"--silence");const g=t(e,"--output","-o");if(f!==undefined){if(isNaN(f)||f<1||f>20){console.error(`Error: --paragraphs must be an integer between 1 and 20 (got: "${t(e,"--paragraphs")}")`);process.exit(1)}}a(e,h);i(e,m);s(g);let v;if(A){v=A}else{v=await c({api:p});const e=d();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const y={token:v,api:p,topic:t(e,"--topic"),voice:t(e,"--voice"),output:g,paragraphs:f,speed:h,silence:m};await l(story,y,p,A)}const h={story:{usage:"[opts]",description:"Generate a story with TTS narration",options:[`--topic <text> Story topic (default: children's story)`,`--voice <id> TTS voice ID (default: ${a.voice})`,`--output <path> Output WAV path (default: ./story-<timestamp>.wav)`,`--paragraphs <n> Paragraph count, 1-20 (default: ${a.paragraphs})`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--silence <sec> Silence between paragraphs, 0-5.0 (default: ${a.silence})`],examples:['voxflow story --topic "三只小猪"','voxflow story --topic "space adventure" --voice v-male-Bk7vD3xP --paragraphs 10']},generate:{alias:"story",description:"Alias for story"}};e.exports={story:story,handle:handle,meta:h,ApiError:c,_test:{parseParagraphs:d,buildWav:u,createSilence:p,buildStoryPrompt:buildStoryPrompt,clampParagraphs:clampParagraphs}}},6046:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(857);const{asr:i}=o(5357);const{chatCompletion:s}=o(929);const{request:l,throwApiError:c,throwNetworkError:d}=o(2768);const{buildWav:u,createSilence:p}=o(7188);const{API_BASE:A,SUMMARIZE_DEFAULTS:f}=o(3282);const h=`You are a video content analyst. Given a transcript with timestamps, extract key points and structure them for a summary presentation.\n\nLANGUAGE RULE: Detect the language of the input content. All text fields (titles, bullets, narration) MUST be in the SAME language as the input.\n\nSTRICT RULES:\n1. Output ONLY valid JSON, no markdown fences, no extra text.\n2. Extract 4-8 key points from the transcript.\n3. Each point MUST reference a time range from the original video.\n4. narration: a professional summary of this point, 2-3 sentences, as if narrating a recap video.\n5. Remove filler words and repetitions. Every bullet should be specific.\n6. Do NOT invent facts not in the transcript.\n7. title: a short slide title for the point (max 15 chars).\n8. bullets: 1-3 concise bullet points (max 25 chars each).\n\nOUTPUT FORMAT:\n{\n "meta": { "title": "...", "language": "..." },\n "points": [\n {\n "id": 1,\n "title": "<point title>",\n "bullets": ["<bullet 1>", "<bullet 2>"],\n "startSec": 0,\n "endSec": 25,\n "narration": "<narrator summary of this point>"\n }\n ]\n}`;async function generatePptx(e,t){let r;try{r=o(8394)}catch{const o=t.replace(/\.pptx$/,".json");n.writeFileSync(o,JSON.stringify(e,null,2),"utf8");return{path:o,format:"json",fallback:true}}const a=new r;a.title=e.meta?.title||"Summary";a.author="VoxFlow Studio";a.layout="LAYOUT_WIDE";const i="6366F1";const s="0F172A";const l="F1F5F9";const c="94A3B8";for(const t of e.points){const e=a.addSlide();e.background={color:s};e.addText(t.title,{x:.8,y:.5,w:"85%",fontSize:32,bold:true,color:l,fontFace:"Arial"});e.addShape("rect",{x:.8,y:1.3,w:1.2,h:.04,fill:{color:i}});if(t.bullets?.length){const o=t.bullets.map((e=>({text:e,options:{bullet:{code:"2022"},fontSize:18,color:l,breakLine:true}})));e.addText(o,{x:.8,y:1.8,w:"85%",h:3,fontFace:"Arial",paraSpaceAfter:10,valign:"top"})}const o=`${formatTime(t.startSec)} - ${formatTime(t.endSec)}`;e.addText(o,{x:.8,y:4.8,w:3,fontSize:12,color:c,fontFace:"Arial"});if(t.narration)e.addNotes(t.narration)}const d=await a.write({outputType:"nodebuffer"});n.writeFileSync(t,d);return{path:t,format:"pptx",fallback:false}}function formatTime(e){const t=Math.floor(e/60);const o=Math.floor(e%60);return`${t}:${o.toString().padStart(2,"0")}`}async function composeVideo(e,t,i,s){const{generateTitleCard:l,concatVideos:c,normalizeVideo:d,runCommand:u}=o(9933);const p=n.mkdtempSync(r.join(a.tmpdir(),"voxflow-sumvideo-"));let A=1920,f=1080;try{const{stdout:t}=await u("ffprobe",["-v","quiet","-select_streams","v:0","-show_entries","stream=width,height","-of","csv=p=0",r.resolve(e)]);const[o,n]=t.trim().split(",").map(Number);if(o&&n){A=o;f=n}}catch{}const h=`${A}x${f}`;const m=Math.round(A*.35);const g=Math.round(A*.025);const v=[];try{process.stdout.write(" [1] Title card... ");const o=r.join(p,"title.mp4");await l(o,"",{duration:3,resolution:h,sourceVideo:e});const n=r.join(p,"title-norm.mp4");await d(o,n,{resolution:h});v.push(n);console.log("OK");for(let o=0;o<t.length;o++){const n=t[o];process.stdout.write(` [${o+2}] "${n.title}"... `);const a=Math.max(0,n.startSec);const s=Math.min(n.endSec,n.startSec+30);const l=r.join(p,`pip-${o}.mp4`);const c=Math.round(m*f/A/2)*2;const y=Math.round(m/2)*2;const b=f-c-g;const w=[`[0:v]scale=${A}:${f},boxblur=25:5,eq=brightness=-0.3:saturation=0.5[bg]`,`[0:v]scale=${y}:${c}[pip]`,`[bg][pip]overlay=${A-y-g}:${b}[out]`].join(";");if(i[o]){await u("ffmpeg",["-ss",String(a),"-to",String(s),"-i",r.resolve(e),"-i",r.resolve(i[o]),"-filter_complex",w,"-map","[out]","-map","1:a:0","-c:v","libx264","-preset","fast","-crf","23","-pix_fmt","yuv420p","-c:a","aac","-ar","24000","-ac","1","-shortest","-y",l],{timeout:3e5})}else{await u("ffmpeg",["-ss",String(a),"-to",String(s),"-i",r.resolve(e),"-filter_complex",w,"-map","[out]","-map","0:a:0","-c:v","libx264","-preset","fast","-crf","23","-pix_fmt","yuv420p","-c:a","aac","-ar","24000","-ac","1","-shortest","-y",l],{timeout:3e5})}const x=r.join(p,`norm-${o}.mp4`);await d(l,x,{resolution:h});v.push(x);console.log("OK")}process.stdout.write(" [last] Closing... ");const a=r.join(p,"closing.mp4");await l(a,"",{duration:2,resolution:h,sourceVideo:e});const y=r.join(p,"closing-norm.mp4");await d(a,y,{resolution:h});v.push(y);console.log("OK");process.stdout.write(" Concatenating... ");await c(v,r.resolve(s));console.log("OK")}finally{try{n.rmSync(p,{recursive:true,force:true})}catch{}}}async function synthesizeTts(e,t,o,n,r){let a,i;try{({status:a,data:i}=await l(`${e}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}},{text:o,voiceId:n,speed:r,format:"pcm",sampleRate:24e3}))}catch(t){d(t,e)}if(a!==200||i.code!=="success"){c(a,i,"TTS")}return Buffer.from(i.audio,"base64")}async function summarize(e){const sigintHandler=()=>{console.log("\n\nSummarize cancelled.");process.exit(0)};process.on("SIGINT",sigintHandler);try{return await _summarize(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _summarize(e){const{token:t,api:o=A,input:l,text:c,slideCount:d=f.slides,language:m=f.language,voice:g=f.voice,speed:v=f.speed,engine:y=f.engine,model:b,tts:w=false,video:x=false,output:S}=e;console.log("\n=== VoxFlow Summarize ===");let k;let C=0;const T=l?r.resolve(l):null;if(c){console.log(`Input: text (${c.length} chars)`);k=c}else if(l){console.log(`Input: ${r.basename(T)}`);process.stdout.write("[1] Transcribing audio... ");const e=n.mkdtempSync(r.join(a.tmpdir(),"voxflow-summarize-"));const s=r.join(e,"transcript.txt");const l=await i({token:t,api:o,input:T,format:"txt",output:s,engine:y,model:b,mode:"file"});k=n.readFileSync(s,"utf8");C+=l.quotaUsed;console.log(`${l.captionCount} segments (${l.mode})`);try{n.rmSync(e,{recursive:true,force:true})}catch{}}else{throw new Error("Either --input <file> or --text <text> is required.")}if(!k.trim()){throw new Error("Transcript is empty. No audible speech detected.")}process.stdout.write("[2] Extracting key points... ");const P=await s({apiBase:o,token:t,messages:[{role:"system",content:h},{role:"user",content:`Extract ${d} key points from this transcript. Language: ${m}.\n\nTRANSCRIPT:\n${k.slice(0,8e3)}\n\nOutput JSON only:`}],temperature:.3,maxTokens:4e3});C+=1;let E;try{E=JSON.parse(P.content.trim())}catch{const e=P.content.match(/```(?:json)?\s*([\s\S]*?)```/);if(e?.[1])E=JSON.parse(e[1].trim());else throw new Error("Failed to parse summary JSON from LLM")}const _=E.points||[];console.log(`${_.length} points`);process.stdout.write("[3] Generating PPTX... ");const L=l?r.basename(T,r.extname(T)):"summary";const I=l?r.dirname(T):process.cwd();const B=S?r.resolve(S):r.resolve(I,`${L}-summary.pptx`);const D=await generatePptx(E,B);console.log(`OK (${D.format})`);const N=[];if(x||w){console.log("[4] Synthesizing narrations...");const e=[];for(let i=0;i<_.length;i++){const s=_[i];if(!s.narration?.trim()){N.push(null);e.push(p(1,24e3));continue}process.stdout.write(` TTS [${i+1}/${_.length}]... `);const l=await synthesizeTts(o,t,s.narration,g,v);C+=1;if(x){const e=r.join(a.tmpdir(),`voxflow-sum-tts-${i}.wav`);const t=u([l],0);n.writeFileSync(e,t.wav||t);N.push(e)}e.push(l);e.push(p(.5,24e3));const c=(l.length/48).toFixed(0);console.log(`OK (${c}ms)`)}if(w){const t=B.replace(/\.(pptx|json)$/,"-narration.wav");const o=u(e,0);n.writeFileSync(t,o.wav||o);console.log(` Narration: ${t}`)}}let R=null;if(x&&T){console.log("[5] Composing video...");R=B.replace(/\.(pptx|json)$/,".mp4");try{await composeVideo(T,_,N,R,{title:E.meta?.title||"Summary"})}catch(e){console.log(` Video failed: ${e.message}`);R=null}N.forEach((e=>{if(e)try{n.unlinkSync(e)}catch{}}))}console.log("\n=== Done ===");console.log(`Slides: ${D.path} (${_.length} points)`);if(R)console.log(`Video: ${R}`);console.log(`Quota: ${C} used`);return{pptxPath:D.path,videoPath:R,slideCount:_.length,quotaUsed:C,summaryData:E}}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,runWithRetry:i}=o(5537);const{getToken:s}=o(598);const{API_BASE:l,SUMMARIZE_DEFAULTS:c}=o(3282);const d=o(9896);const u=o(6928);const p=t(e,"--api")||l;const A=t(e,"--token");const f=t(e,"--input");const h=t(e,"--text");const m=t(e,"--output","-o");const g=t(e,"--voice")||c.voice;const v=r(e,"--speed")??c.speed;const y=n(e,"--slides")??c.slides;const b=t(e,"--lang")||c.language;const w=t(e,"--engine")||c.engine;const x=t(e,"--model");const S=a(e,"--tts");const k=a(e,"--video");const C=t(e,"--scheme")||"aurora";if(!f&&!h){console.error("Error: --input <file> or --text <text> is required.\nExample: voxflow summarize --input lecture.mp4");process.exit(1)}if(f){const e=u.resolve(f);if(!d.existsSync(e)){console.error(`Error: File not found: ${e}`);process.exit(1)}}if(v!==undefined&&(isNaN(v)||v<.5||v>2)){console.error(`Error: --speed must be between 0.5 and 2.0`);process.exit(1)}const T=A||await s();if(!T){console.error("Not logged in. Run: voxflow login");process.exit(1)}const P={token:T,api:p,input:f,text:h,output:m,voice:g,speed:v,slideCount:y,language:b,engine:w,model:x,tts:S,video:k,scheme:C};await i(summarize,P,p,A)}const m={summarize:{usage:"<--input|--text> [opts]",description:"Summarize video/audio/text into presentation slides (PPTX)",options:[`--input <file> Input video/audio file → ASR + summarize`,`--text <text> Direct text input (skip ASR)`,`--slides <n> Number of slides, 4-12 (default: ${f.slides})`,`--lang <code> Output language: en, zh, ja, etc. (default: ${f.language})`,`--engine <engine> ASR engine: auto, local, cloud (default: ${f.engine})`,`--model <model> Whisper model for local ASR: tiny, base, small, medium, large`,`--tts Generate TTS narration audio for each slide`,`--video Also render an MP4 video (requires remotion-cards/ + Remotion)`,`--scheme <name> Video visual scheme: noir, neon, editorial, aurora (default), brutalist`,`--voice <id> TTS voice ID (default: ${f.voice})`,`--speed <n> TTS speed 0.5-2.0 (default: ${f.speed})`,`--output <path> Output PPTX path (default: <input>-summary.pptx)`],examples:["voxflow summarize --input lecture.mp4","voxflow summarize --input meeting.mp4 --lang zh --slides 10","voxflow summarize --input podcast.mp3 --engine local --tts","voxflow summarize --input lecture.mp4 --video --scheme aurora",'voxflow summarize --text "长篇文章内容..." --slides 6 --lang zh']}};e.exports={summarize:summarize,handle:handle,meta:m}},5859:(e,t,o)=>{const n=o(9896);const r=o(6928);const{SYNTHESIZE_DEFAULTS:a}=o(3282);const{request:i,throwApiError:s,throwNetworkError:l,ApiError:c}=o(2768);const{buildWav:d,getFileExtension:u}=o(7188);const{startSpinner:p}=o(5319);async function synthesize(e){let t=false;const sigintHandler=()=>{if(t)return;t=true;console.log("\n\nSynthesis cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _synthesize(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _synthesize(e){const t=e.text;if(!t||t.trim().length===0){throw new Error('No text provided. Usage: voxflow synthesize "your text here"')}const o=e.voice||a.voice;const c=e.speed??a.speed;const A=e.volume??a.volume;const f=e.pitch??a.pitch;const h=e.format||"pcm";const m=e.api;const g=e.token;const v=u(h);let y=e.output;if(!y){const e=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,19);y=r.resolve(`tts-${e}${v}`)}console.log("\n=== VoxFlow Synthesize ===");console.log(`Voice: ${o}`);console.log(`Format: ${h==="pcm"?"wav (pcm)":h}`);console.log(`Speed: ${c}`);if(A!==1)console.log(`Volume: ${A}`);if(f!==0)console.log(`Pitch: ${f}`);console.log(`Text: ${t.length>60?t.slice(0,57)+"...":t}`);console.log(`Output: ${y}`);const b=p("\n[1/1] Synthesizing TTS audio...");let w,x;try{({status:w,data:x}=await i(`${m}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`}},{text:t.trim(),voiceId:o,format:h,speed:c,volume:A,pitch:f}))}catch(e){b.stop("FAIL");l(e,m)}if(w!==200||x.code!=="success"){b.stop("FAIL");s(w,x,"TTS")}const S=Buffer.from(x.audio,"base64");b.stop("OK");let k,C;if(h==="mp3"){k=S;C=S.length/4e3;console.log(` ${(S.length/1024).toFixed(0)} KB MP3`)}else if(h==="wav"){k=S;const e=S.length>44?S.readUInt32LE(28):48e3;const t=S.length>44?S.readUInt32LE(40):S.length;C=t/e;console.log(` ${(S.length/1024).toFixed(0)} KB WAV`)}else{const e=d([S],0);k=e.wav;C=e.duration;console.log(` ${(S.length/1024).toFixed(0)} KB PCM → WAV`)}const T=r.dirname(y);n.mkdirSync(T,{recursive:true});n.writeFileSync(y,k);const P=100;const E=typeof x.quota?.used==="number"&&typeof x.quota?.costDelta==="number"?x.quota.costDelta:P;console.log(`\n=== Done ===`);console.log(`Output: ${y} (${(k.length/1024).toFixed(1)} KB, ${C.toFixed(1)}s)`);console.log(`Quota: ${E} used, ${x.quota?.remaining??"?"} remaining`);return{outputPath:y,duration:C,quotaUsed:E,format:h}}async function handle(e){const{parseFlag:t,parseFloatFlag:n,validateSpeed:r,validateOutput:a,validateFormat:i,runWithRetry:s}=o(5537);const{getToken:l,getTokenInfo:c}=o(598);const{API_BASE:d}=o(3282);const u=t(e,"--api")||d;const p=t(e,"--token");let A=t(e,"--text");if(!A){const t=new Set(["--text","--voice","--speed","--volume","--pitch","--output","-o","--token","--api","--format"]);for(let o=0;o<e.length;o++){if(e[o].startsWith("-")){if(t.has(e[o]))o++;continue}A=e[o];break}}if(!A){console.error('Error: No text provided. Usage: voxflow synthesize "your text here"');process.exit(1)}const f=n(e,"--speed");const h=n(e,"--volume");const m=n(e,"--pitch");const g=t(e,"--output","-o");const v=t(e,"--format");r(e,f);a(g,v);i(v);if(h!==undefined){if(isNaN(h)||h<.1||h>2){console.error(`Error: --volume must be between 0.1 and 2.0 (got: "${t(e,"--volume")}")`);process.exit(1)}}if(m!==undefined){if(isNaN(m)||m<-12||m>12){console.error(`Error: --pitch must be between -12 and 12 (got: "${t(e,"--pitch")}")`);process.exit(1)}}let y;if(p){y=p}else{y=await l({api:u});const e=c();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const b={token:y,api:u,text:A,voice:t(e,"--voice"),output:g,speed:f,volume:h,pitch:m,format:v||undefined};await s(synthesize,b,u,p)}const A={synthesize:{usage:"<text>",description:"Synthesize a single text snippet to audio (alias: say)",aliasOf:"say",options:[`<text> Text to synthesize (positional arg or --text)`,`--text <text> Text to synthesize (alternative to positional)`,`--voice <id> TTS voice ID (default: ${a.voice})`,`--format <fmt> Output format: pcm, wav, mp3 (default: pcm → WAV)`,`--speed <n> TTS speed 0.5-2.0 (default: ${a.speed})`,`--volume <n> TTS volume 0.1-2.0 (default: ${a.volume})`,`--pitch <n> TTS pitch -12 to 12 (default: ${a.pitch})`,`-o, --output <path> Output file path (default: ./tts-<timestamp>.wav)`],examples:['voxflow say "你好世界"','voxflow say "你好世界" --format mp3','voxflow synthesize "Welcome" --voice v-male-Bk7vD3xP --format mp3']},say:{alias:"synthesize",description:"Alias for synthesize"}};e.exports={synthesize:synthesize,handle:handle,meta:A,ApiError:c}},173:(e,t,o)=>{const n=o(9896);const r=o(6928);const{API_BASE:a,TRANSLATE_DEFAULTS:i}=o(3282);const{chatCompletion:s,detectLanguage:l}=o(929);const{parseSrt:c,formatSrt:d}=o(8217);const u={zh:"Chinese (Simplified)",en:"English",ja:"Japanese",ko:"Korean",fr:"French",de:"German",es:"Spanish",pt:"Portuguese",ru:"Russian",ar:"Arabic",th:"Thai",vi:"Vietnamese",it:"Italian",id:"Indonesian",ms:"Malay",yue:"Cantonese"};function batchCaptions(e,t=10){const o=[];for(let n=0;n<e.length;n+=t){o.push(e.slice(n,n+t))}return o}function buildTranslationPrompt(e,t,o){const n=[`You are a professional subtitle translator. Translate each numbered line from ${t} to ${o}.`,"","Rules:","- Return ONLY the translated lines, one per number","- Keep the exact same numbering (1., 2., 3., ...)","- Preserve [Speaker: xxx] tags unchanged — do NOT translate speaker names","- Keep translations concise and natural for subtitles","- Do not add explanations, notes, or extra text"].join("\n");const r=e.map(((e,t)=>{const o=e.speakerId?`[Speaker: ${e.speakerId}] `:"";return`${t+1}. ${o}${e.text}`})).join("\n");return{system:n,user:r}}function parseTranslationResponse(e,t){const o=e.trim().split("\n").filter((e=>e.trim()));const n=[];for(let e=0;e<t.length;e++){const r=new RegExp(`^${e+1}\\.\\s*(.+)$`);const a=o.find((e=>r.test(e.trim())));if(a){const o=a.trim().replace(r,"$1").trim();let i=o;const s=o.match(/^\[Speaker:\s*[^\]]+\]\s*/i);if(s){i=o.slice(s[0].length)}n.push({...t[e],text:i||t[e].text})}else{if(e<o.length){const r=o[e].replace(/^\d+\.\s*/,"").trim();let a=r;const i=r.match(/^\[Speaker:\s*[^\]]+\]\s*/i);if(i){a=r.slice(i[0].length)}n.push({...t[e],text:a||t[e].text})}else{n.push({...t[e]})}}}return n}function realignTimings(e,t){const o=.3;const n=100;const r=t.map(((t,r)=>{const a=e[r];if(!a)return t;const i=a.text.length;const s=t.text.length;if(i===0)return t;const l=s/i;if(l<1+o&&l>1-o){return t}const c=a.endMs-a.startMs;let d=Math.round(c*l);const u=r<e.length-1?e[r+1].startMs:Infinity;const p=u-t.startMs-n;if(d>p&&p>0){d=p}d=Math.max(d,500);return{...t,endMs:t.startMs+d}}));return r}async function translate(e){const sigintHandler=()=>{console.log("\n\nTranslation cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);try{return await _translate(e)}finally{process.removeListener("SIGINT",sigintHandler)}}async function _translate(e){const{token:t,api:o=a,srt:n,text:r,input:s,from:l,to:c,output:d,realign:u=false,batchSize:p=i.batchSize}=e;if(n)return _translateSrt({token:t,api:o,srt:n,from:l,to:c,output:d,realign:u,batchSize:p});if(r)return _translateText({token:t,api:o,text:r,from:l,to:c});if(s)return _translateFile({token:t,api:o,input:s,from:l,to:c,output:d});throw new Error("No input specified. Use --srt, --text, or --input")}async function _translateSrt({token:e,api:t,srt:o,from:a,to:l,output:p,realign:A,batchSize:f}){console.log("\n=== VoxFlow Translate (SRT) ===");const h=r.resolve(o);const m=n.readFileSync(h,"utf8");const g=c(m);if(g.length===0){throw new Error(`SRT file is empty or invalid: ${h}`)}console.log(`Input: ${r.basename(h)}`);console.log(`Captions: ${g.length}`);const v=a||await autoDetectLanguage(t,g);const y=u[v]||v;const b=u[l]||l;console.log(`From: ${y} (${v})`);console.log(`To: ${b} (${l})`);console.log(`Realign: ${A?"yes":"no"}`);const w=batchCaptions(g,f);console.log(`Batches: ${w.length} (batch size: ${f})`);console.log("");let x=[];let S=0;for(let o=0;o<w.length;o++){const n=w[o];process.stdout.write(` [${o+1}/${w.length}] Translating ${n.length} captions...`);const{system:r,user:a}=buildTranslationPrompt(n,y,b);const l=await s({apiBase:t,token:e,messages:[{role:"system",content:r},{role:"user",content:a}],temperature:i.temperature,maxTokens:i.maxTokens});const c=parseTranslationResponse(l.content,n);x=x.concat(c);S++;if(l.quota){console.log(` OK (remaining: ${l.quota.remaining})`)}else{console.log(" OK")}}if(A){console.log(" Re-aligning subtitle timing...");x=realignTimings(g,x)}x=x.map(((e,t)=>({...e,id:t+1})));const k=d(x);let C;if(p){C=r.resolve(p)}else{const e=r.basename(h,r.extname(h));const t=r.dirname(h);const o=e+"-"+l+".srt";C=r.resolve(t,o)}n.writeFileSync(C,k,"utf8");console.log(`\n=== Done ===`);console.log(`Output: ${C}`);console.log(`Captions: ${x.length}`);console.log(`Quota: ${S} used`);if(x.length>0){console.log(`\n--- Preview ---`);const e=x.slice(0,3);for(const t of e){const e=t.speakerId?`[${t.speakerId}] `:"";const o=t.text.length>60?t.text.slice(0,57)+"...":t.text;console.log(` ${t.id}. ${e}${o}`)}if(x.length>3){console.log(` ... (${x.length-3} more)`)}}return{outputPath:C,captionCount:x.length,quotaUsed:S,from:v,to:l}}async function _translateText({token:e,api:t,text:o,from:n,to:r}){console.log("\n=== VoxFlow Translate (Text) ===");const a=n||await autoDetectLanguage(t,[{text:o}]);const l=u[a]||a;const c=u[r]||r;console.log(`From: ${l} → To: ${c}`);const d=await s({apiBase:t,token:e,messages:[{role:"system",content:`You are a professional translator. Translate the following text from ${l} to ${c}. Return ONLY the translation, no explanations.`},{role:"user",content:o}],temperature:i.temperature,maxTokens:i.maxTokens});const p=d.content.trim();console.log(`\n${p}`);const A=d.quota?d.quota.remaining:"?";console.log(`\n(Quota: 1 used, ${A} remaining)`);return{text:p,quotaUsed:1,from:a,to:r}}async function _translateFile({token:e,api:t,input:o,from:a,to:l,output:c}){console.log("\n=== VoxFlow Translate (File) ===");const d=r.resolve(o);const p=n.readFileSync(d,"utf8");if(p.trim().length===0){throw new Error(`Input file is empty: ${d}`)}console.log(`Input: ${r.basename(d)}`);console.log(`Length: ${p.length} chars`);const A=a||await autoDetectLanguage(t,[{text:p}]);const f=u[A]||A;const h=u[l]||l;console.log(`From: ${f} → To: ${h}`);const m=await s({apiBase:t,token:e,messages:[{role:"system",content:`You are a professional translator. Translate the following document from ${f} to ${h}. Preserve the original formatting (paragraphs, line breaks, markdown). Return ONLY the translation.`},{role:"user",content:p}],temperature:i.temperature,maxTokens:Math.max(i.maxTokens,4e3)});const g=m.content.trim();let v;if(c){v=r.resolve(c)}else{const e=r.extname(d);const t=r.basename(d,e);const o=r.dirname(d);const n=t+"-"+l+e;v=r.resolve(o,n)}n.writeFileSync(v,g+"\n","utf8");const y=m.quota?m.quota.remaining:"?";console.log(`\n=== Done ===`);console.log(`Output: ${v}`);console.log(`Quota: 1 used, ${y} remaining`);return{outputPath:v,quotaUsed:1,from:A,to:l}}async function autoDetectLanguage(e,t){const o=t.slice(0,3).map((e=>e.text)).join(" ");const n=await l({apiBase:e,text:o});return n||"auto"}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseBoolFlag:r,runWithRetry:a}=o(5537);const{getToken:i,getTokenInfo:s}=o(598);const{API_BASE:l}=o(3282);const c=t(e,"--api")||l;const d=t(e,"--token");const u=t(e,"--srt");const p=t(e,"--text");const A=t(e,"--input");const f=t(e,"--from");const h=t(e,"--to");const m=t(e,"--output","-o");const g=r(e,"--realign");const v=n(e,"--batch-size");if(!h&&!r(e,"--help")){console.error("Error: --to <lang> is required. Example: voxflow translate --srt file.srt --to en");process.exit(1)}const y=["zh","en","ja","ko","fr","de","es","pt","ru","ar","th","vi","it","id","ms","yue"];if(h&&!y.includes(h)){console.error(`Error: --to must be one of: ${y.join(", ")} (got: "${h}")`);process.exit(1)}if(f&&!y.includes(f)&&f!=="auto"){console.error(`Error: --from must be one of: auto, ${y.join(", ")} (got: "${f}")`);process.exit(1)}const b=[u,p,A].filter(Boolean).length;if(b===0&&!r(e,"--help")){console.error("Error: Provide one of: --srt <file>, --text <text>, --input <file>");process.exit(1)}if(b>1){console.error("Error: Specify only one input: --srt, --text, or --input");process.exit(1)}if(u){const e=o(9896);const t=o(6928);const n=t.resolve(u);if(!e.existsSync(n)){console.error(`Error: SRT file not found: ${n}`);process.exit(1)}}if(A){const e=o(9896);const t=o(6928);const n=t.resolve(A);if(!e.existsSync(n)){console.error(`Error: Input file not found: ${n}`);process.exit(1)}}if(v!==undefined){if(isNaN(v)||v<1||v>20){console.error(`Error: --batch-size must be between 1 and 20 (got: "${t(e,"--batch-size")}")`);process.exit(1)}}let w;if(d){w=d}else{w=await i({api:c});const e=s();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const x={token:w,api:c,srt:u,text:p,input:A,from:f,to:h,output:m,realign:g,batchSize:v};await a(translate,x,c,d)}const p={translate:{usage:"[opts]",description:"Translate SRT subtitles, text, or files",options:[`--srt <file> SRT subtitle file to translate`,`--text <text> Inline text to translate`,`--input <file> Text file (.txt, .md) to translate`,`--from <lang> Source language code (default: auto-detect)`,`--to <lang> Target language code (required)`,`--output <path> Output file path (default: <input>-<lang>.<ext>)`,`--realign Adjust subtitle timing for target language length`,`--batch-size <n> Captions per LLM call, 1-20 (default: ${i.batchSize})`],examples:["voxflow translate --srt subtitles.srt --to en",'voxflow translate --text "你好世界" --to en',"voxflow translate --input article.txt --to en --output article-en.txt"]}};e.exports={translate:translate,handle:handle,meta:p,LANG_MAP:u,_test:{buildTranslationPrompt:buildTranslationPrompt,parseTranslationResponse:parseTranslationResponse,realignTimings:realignTimings,batchCaptions:batchCaptions}}},6851:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(857);const{checkFfmpeg:i,extractAudio:s}=o(9933);const{asr:l}=o(5357);const{translate:c}=o(173);const{dub:d}=o(220);const{detectLanguage:u}=o(929);const{parseSrt:p}=o(8217);const{API_BASE:A,VIDEO_TRANSLATE_DEFAULTS:f}=o(3282);const h={zh:"16k_zh",en:"16k_en",ja:"16k_ja",ko:"16k_ko","zh-en":"16k_zh_en"};function resolveAsrLang(e,t){if(t)return t;if(e&&h[e])return h[e];return"16k_zh"}async function videoTranslate(e){const sigintHandler=()=>{console.log("\n\nVideo translation cancelled.");process.exit(130)};process.on("SIGINT",sigintHandler);const{startBackgroundRefresh:t}=o(598);const n=t({api:e.api});try{return await _videoTranslate(e)}finally{n();process.removeListener("SIGINT",sigintHandler)}}async function _videoTranslate(e){const{token:t,api:h=A,input:m,from:g,to:v,voice:y,voicesMap:b,realign:w=false,output:x,keepIntermediates:S=false,batchSize:k=f.batchSize,speed:C=f.speed,asrMode:T,asrLang:P,engine:E="auto",model:_}=e;const L=r.resolve(m);const I=r.basename(L,r.extname(L));console.log("\n=== VoxFlow Video Translate ===");console.log(`Input: ${r.basename(L)}`);console.log(`Target: ${v}`);console.log("");const B=n.mkdtempSync(r.join(a.tmpdir(),"voxflow-vtranslate-"));let D=0;const N={};try{process.stdout.write("[1/5] Checking FFmpeg... ");const R=await i();if(!R.available){throw new Error("FFmpeg is required for video-translate. Install: https://ffmpeg.org/download.html")}console.log(`OK (${R.version})`);process.stdout.write("[2/5] Transcribing audio... ");const F=r.join(B,"extracted-audio.wav");await s(L,F);const M=r.join(B,"source.srt");const O=resolveAsrLang(g,P);const $={token:t,api:h,input:F,format:"srt",output:M,lang:O,engine:E,mode:T||"flash"};if(_)$.model=_;let z;try{z=await l($)}catch(ae){if(!T&&E!=="local"&&ae.message&&ae.message.includes("500")){console.log(`\n ⚠ Flash ASR failed, falling back to Azure...`);$.engine="azure";$.mode=undefined;const ie={"16k_zh":"zh-CN","16k_en":"en-US","16k_ja":"ja-JP","16k_ko":"ko-KR","16k_zh_en":"auto"};$.lang=ie[O]||"auto";z=await l($)}else{throw ae}}if(z.captionCount===0){throw new Error("ASR produced no captions. The video may have no audible speech.")}N.asr={mode:z.mode,duration:z.duration,captionCount:z.captionCount,quotaUsed:z.quotaUsed};D+=z.quotaUsed;console.log(`${z.captionCount} captions (${z.mode} mode)`);let j=g;if(!j){const se=n.readFileSync(M,"utf8");const le=p(se);const ce=le.slice(0,3).map((e=>e.text)).join(" ");j=await u({apiBase:h,text:ce})||"auto"}process.stdout.write(`[3/5] Translating (${j} → ${v})... `);const U=r.join(B,`translated-${v}.srt`);const W=await c({token:t,api:h,srt:M,from:j,to:v,output:U,realign:w,batchSize:k});N.translate={from:W.from,to:W.to,captionCount:W.captionCount,quotaUsed:W.quotaUsed};D+=W.quotaUsed;const q=n.readFileSync(U,"utf8");const G=p(q);const X=p(n.readFileSync(M,"utf8"));const{formatSrt:H}=o(8217);const{chatCompletion:Q}=o(929);const{TRANSLATE_DEFAULTS:V}=o(3282);function looksUntranslated(e,t,o){if(e===t)return true;const n=["en","fr","de","es","pt","it","vi"];if(n.includes(o)){const t=(e.match(/[一-鿿-ヿ가-]/g)||[]).length;const o=e.replace(/\s/g,"").length;if(o>0&&t/o>.5)return true}return false}let Y=0;for(let de=0;de<G.length&&de<X.length;de++){if(looksUntranslated(G[de].text,X[de].text,v)){const{LANG_MAP:ue}=o(173);const pe=ue[v]||v;const Ae=ue[j]||j;for(let fe=0;fe<2;fe++){try{if(fe>0)await new Promise((e=>setTimeout(e,2e3)));const he=await Q({apiBase:h,token:t,messages:[{role:"system",content:`Translate this subtitle from ${Ae} to ${pe}. Return ONLY the translation, nothing else.`},{role:"user",content:X[de].text}],temperature:V.temperature,maxTokens:V.maxTokens});const me=he.content.trim();if(me&&me!==X[de].text){G[de].text=me;Y++;break}D++}catch{D++}}}}if(Y>0){const ge=H(G);n.writeFileSync(U,ge,"utf8")}const J=G.filter(((e,t)=>t<X.length&&looksUntranslated(e.text,X[t].text,v))).length;if(Y>0){console.log(`${W.captionCount} captions translated (${Y} fixed on retry)`)}else{console.log(`${W.captionCount} captions translated`)}if(J>0){console.log(` ⚠ ${J} caption(s) could not be translated`)}process.stdout.write("[4/5] Dubbing and merging video... ");const K=I+"-"+v+".mp4";const Z=x?r.resolve(x):r.resolve(r.dirname(L),K);const ee=r.join(B,"dubbed-nosubs.mp4");const te=await d({token:t,api:h,srt:U,voice:y,voicesMap:b,speed:C,speedAuto:true,video:L,output:ee});N.dub={segmentCount:te.segmentCount,duration:te.duration,quotaUsed:te.quotaUsed,warnings:te.warnings};D+=te.quotaUsed;console.log(`${te.segmentCount} segments dubbed`);process.stdout.write("[5/5] Burning subtitles into video... ");const oe=r.join(B,"subs.srt");n.copyFileSync(U,oe);let ne=false;try{const{runCommand:ve}=o(9933);await ve("ffmpeg",["-i",ee,"-vf",`subtitles=${oe}:force_style='FontSize=18,PrimaryColour=&Hffffff,OutlineColour=&H000000,Outline=2,Shadow=1,Alignment=2,Bold=1'`,"-c:a","copy","-y",Z]);ne=true;console.log("OK")}catch(ye){console.log(`skip (${ye.message?.includes("subtitles")?"libass not available":"failed"})`);n.copyFileSync(ee,Z);const be=Z.replace(/\.[^.]+$/,`.${v}.srt`);n.copyFileSync(U,be);console.log(` → Subtitle file saved separately: ${be}`)}if(S){const we=r.resolve(r.dirname(Z),`${I}-${v}-intermediates`);n.mkdirSync(we,{recursive:true});const xe=[["extracted-audio.wav",F],["source.srt",M],[`translated-${v}.srt`,U]];for(const[Se,ke]of xe){if(n.existsSync(ke)){n.copyFileSync(ke,r.join(we,Se))}}console.log(`\nIntermediates saved: ${we}`)}const re=Z.replace(/\.[^.]+$/,`.srt`);n.copyFileSync(U,re);console.log("\n=== Done ===");console.log(`Output: ${Z}`);console.log(`Subtitle: ${re}`);console.log(`Language: ${j} → ${v}`);console.log(`Captions: ${W.captionCount}`);console.log(`Duration: ${te.duration.toFixed(1)}s`);console.log(`Quota: ${D} used`);if(N.dub.warnings&&N.dub.warnings.length>0){console.log(`\nWarnings:`);for(const Ce of N.dub.warnings){console.log(` - ${Ce}`)}}try{const Te=o(6257);await Te(Z)}catch{}return{outputPath:Z,srtOutputPath:re,from:j,to:v,captionCount:W.captionCount,quotaUsed:D,stages:N}}finally{if(!S){try{n.rmSync(B,{recursive:true,force:true})}catch{}}}}async function handle(e){const{parseFlag:t,parseIntFlag:n,parseFloatFlag:r,parseBoolFlag:a,validateSpeed:i,runWithRetry:s}=o(5537);const{getToken:l,getTokenInfo:c}=o(598);const{API_BASE:d}=o(3282);const u=t(e,"--api")||d;const p=t(e,"--token");const A=t(e,"--input");const f=t(e,"--from");const h=t(e,"--to");const m=t(e,"--voice");const g=t(e,"--voices");const v=t(e,"--output","-o");const y=a(e,"--realign");const b=a(e,"--keep-intermediates");const w=n(e,"--batch-size");const x=r(e,"--speed");const S=t(e,"--asr-mode");const k=t(e,"--asr-lang");const C=t(e,"--engine");const T=t(e,"--model");if(!A){console.error("Error: --input <video-file> is required. Example: voxflow video-translate --input video.mp4 --to en");process.exit(1)}if(!h){console.error("Error: --to <lang> is required. Example: voxflow video-translate --input video.mp4 --to en");process.exit(1)}const P=["zh","en","ja","ko","fr","de","es","pt","ru","ar","th","vi","it"];if(h&&!P.includes(h)){console.error(`Error: --to must be one of: ${P.join(", ")} (got: "${h}")`);process.exit(1)}if(f&&!P.includes(f)&&f!=="auto"){console.error(`Error: --from must be one of: auto, ${P.join(", ")} (got: "${f}")`);process.exit(1)}if(A){const e=o(9896);const t=o(6928);const n=t.resolve(A);if(!e.existsSync(n)){console.error(`Error: Video file not found: ${n}`);process.exit(1)}}i(e,x);if(w!==undefined&&(isNaN(w)||w<1||w>20)){console.error(`Error: --batch-size must be between 1 and 20 (got: "${t(e,"--batch-size")}")`);process.exit(1)}const E=["auto","sentence","flash","file"];if(S&&!E.includes(S)){console.error(`Error: --asr-mode must be one of: ${E.join(", ")} (got: "${S}")`);process.exit(1)}const _=["auto","local","cloud","whisper","tencent"];if(C&&!_.includes(C)){console.error(`Error: --engine must be one of: ${_.join(", ")} (got: "${C}")`);process.exit(1)}if(g){const e=o(9896);const t=o(6928);const n=t.resolve(g);if(!e.existsSync(n)){console.error(`Error: Voices map file not found: ${n}`);process.exit(1)}}let L;if(p){L=p}else{L=await l({api:u});const e=c();if(e){console.log(`[32mLogged in as ${e.email}[0m`)}}const I={token:L,api:u,input:A,from:f,to:h,voice:m,voicesMap:g,output:v,realign:y,keepIntermediates:b,batchSize:w,speed:x,asrMode:S,asrLang:k,engine:C,model:T};await s(videoTranslate,I,u,p)}const m={"video-translate":{usage:"[opts]",description:"Translate entire video: ASR → translate → dub → merge",options:[`--input <file> Input video file (required)`,`--to <lang> Target language code (required)`,`--from <lang> Source language code (default: auto-detect)`,`--voice <id> TTS voice ID for dubbed audio`,`--voices <file> JSON speaker→voiceId map for multi-speaker dubbing`,`--realign Adjust subtitle timing for target language length`,`--speed <n> TTS speed 0.5-2.0 (default: ${o(3282).VIDEO_TRANSLATE_DEFAULTS.speed})`,`--batch-size <n> Translation batch size, 1-20 (default: ${o(3282).VIDEO_TRANSLATE_DEFAULTS.batchSize})`,`--keep-intermediates Keep intermediate files (SRT, audio) for debugging`,`--output <path> Output MP4 path (default: <input>-<lang>.mp4)`,`--asr-mode <mode> Override ASR mode: auto, sentence, flash, file`,`--asr-lang <engine> Override ASR engine: 16k_zh, 16k_en, 16k_ja, 16k_ko, etc.`,`--engine <engine> ASR engine: auto, local, cloud (default: auto)`,`--model <model> Whisper model for local engine: tiny, base, small, medium, large`],examples:["voxflow video-translate --input video.mp4 --to en","voxflow video-translate --input video.mp4 --from zh --to en --realign","voxflow video-translate --input video.mp4 --to ja --voice v-male-Bk7vD3xP","voxflow video-translate --input video.mp4 --to en --engine local"]}};e.exports={videoTranslate:videoTranslate,handle:handle,meta:m}},2972:(e,t,o)=>{const{request:n,throwNetworkError:r}=o(2768);async function voices(e){const t=e.api;const o=e.extended?"true":"false";let a,i;try{({status:a,data:i}=await n(`${t}/api/tts/voices?includeExtended=${o}`,{method:"GET"}))}catch(e){r(e,t)}if(a!==200){throw new Error(`Failed to fetch voices (${a}): ${i?.message||"unknown error"}`)}let s=i.voices||i.data?.voices||[];if(e.gender){const t=normalizeGender(e.gender);if(!t){throw new Error(`--gender must be one of: male, m, female, f (got: "${e.gender}")`)}s=s.filter((e=>{const o=(e.gender||"").toLowerCase();return o===t}))}if(e.language){const t=e.language.toLowerCase();s=s.filter((e=>(e.language||"").toLowerCase()===t))}if(e.search){const t=e.search.toLowerCase();s=s.filter((e=>{const o=[e.name,e.nameEn,e.tone,e.style,e.description,e.scenarios].filter(Boolean).join(" ").toLowerCase();return o.includes(t)}))}if(s.length===0){console.log("No voices match your criteria.");return}if(e.json){console.log(JSON.stringify(s,null,2))}else{printTable(s)}console.log(`\nFound ${s.length} voice${s.length===1?"":"s"}.`)}function normalizeGender(e){const t=(e||"").toLowerCase().trim();if(t==="male"||t==="m")return"male";if(t==="female"||t==="f")return"female";return null}function printTable(e){const t=24;const o=14;const n=8;const r=22;const a=20;const i=["ID".padEnd(t),"Name".padEnd(o),"Gender".padEnd(n),"Tone".padEnd(r),"Style".padEnd(a)].join(" ");console.log(`\n${i}`);console.log("-".repeat(i.length));for(const i of e){const e=[truncate(i.id||"",t).padEnd(t),truncate(i.name||"",o).padEnd(o),truncate(i.gender||"",n).padEnd(n),truncate(i.tone||"",r).padEnd(r),truncate(i.style||"",a).padEnd(a)].join(" ");console.log(e)}}function truncate(e,t){if(e.length<=t)return e;return e.slice(0,t-1)+"…"}async function handle(e){const{parseFlag:t,parseBoolFlag:n}=o(5537);const{API_BASE:r}=o(3282);const a=t(e,"--api")||r;const i={api:a,search:t(e,"--search"),gender:t(e,"--gender"),language:t(e,"--language"),json:n(e,"--json"),extended:n(e,"--extended")};await voices(i)}const a={voices:{usage:"[opts]",description:"Browse and search available TTS voices",options:[`--search <query> Search by name, tone, style, description`,`--gender <m|f> Filter by gender: male/m or female/f`,`--language <code> Filter by language: zh, en, etc.`,`--extended Include extended voice library (380+ voices)`,`--json Output raw JSON instead of table`],examples:['voxflow voices --search "温柔" --gender female',"voxflow voices --extended --json"]}};e.exports={voices:voices,handle:handle,meta:a}},2093:e=>{"use strict";const t=process.env;function detectAIAgent(e=t){if(e.CLAUDECODE)return"Claude Code";if(e.CURSOR_AGENT||e.CURSOR_TRACE_ID)return"Cursor";if(e.CODEX_SANDBOX||e.CODEX_AGENT||e.OPENAI_CODEX)return"Codex";if(e.GEMINI_CLI||e.GEMINI_AGENT)return"Gemini CLI";if(e.WORKBUDDY||e.WORKBUDDY_AGENT)return"WorkBuddy";if(e.OPENCLAW||e.OPENCLAW_AGENT)return"OpenClaw";if(e.AI_AGENT)return e.AI_AGENT;return null}function isAIAgent(e=t){return detectAIAgent(e)!==null}function buildUserActionPanel({loginUrl:e,agentName:t,timeoutSec:o=600,userCode:n}){const r=Math.round(o/60);const a=t?`USER ACTION REQUIRED (you are running inside ${t})`:`USER ACTION REQUIRED`;const i=["","╔══════════════════════════════════════════════════════════════════╗",`║ 👤 ${a.padEnd(60)} ║`,"╠══════════════════════════════════════════════════════════════════╣","║ 1. Open this URL in your browser to authorize voxflow CLI: ║","║ ║",`║ ${e}`,"║ ║"];if(n){i.push(`║ Pairing code (verify it matches the page): ${n}`,"║ ║")}i.push(`║ 2. After login, this command will continue automatically (waiting ${String(r).padStart(2)} min). ║`,"║ ║","║ Skip this entirely: ║","║ export VOXFLOW_TOKEN=<your-jwt> # then re-run ║","║ ║","║ Already logged in but stuck? ║","║ rm ~/.config/voxflow/token.json # then re-run `voxflow login` ║","╚══════════════════════════════════════════════════════════════════╝","");return i.join("\n")}e.exports={detectAIAgent:detectAIAgent,isAIAgent:isAIAgent,buildUserActionPanel:buildUserActionPanel}},5537:(e,t,o)=>{const{getToken:n}=o(598);const{ApiError:r}=o(2768);function parseFlag(e,...t){for(const o of t){const t=e.indexOf(o);if(t!==-1&&t+1<e.length)return e[t+1]}return null}function parseIntFlag(e,...t){const o=parseFlag(e,...t);return o!=null?parseInt(o,10):undefined}function parseFloatFlag(e,...t){const o=parseFlag(e,...t);return o!=null?parseFloat(o):undefined}function parseBoolFlag(e,...t){return t.some((t=>e.includes(t)))}function validateSpeed(e,t){if(t!==undefined){if(isNaN(t)||t<.5||t>2){console.error(`Error: --speed must be between 0.5 and 2.0 (got: "${parseFlag(e,"--speed")}")`);process.exit(1)}}}function validateSilence(e,t){if(t!==undefined){if(isNaN(t)||t<0||t>5){console.error(`Error: --silence must be between 0 and 5.0 (got: "${parseFlag(e,"--silence")}")`);process.exit(1)}}}function validateOutput(e,t){if(e){const t=[".wav",".mp3"];const o=t.some((t=>e.toLowerCase().endsWith(t)));if(!o){console.error("Error: --output path must end with .wav or .mp3");process.exit(1)}}}function validateFormat(e){if(e&&!["pcm","wav","mp3"].includes(e)){console.error(`Error: --format must be one of: pcm, wav, mp3 (got: "${e}")`);process.exit(1)}}function assertFileExists(e,t){const n=o(6928).resolve(e);if(!o(9896).existsSync(n)){console.error(`Error: ${t} file not found: ${n}`);process.exit(1)}}async function runWithRetry(e,t,o,a){try{return await e(t)}catch(i){if(i instanceof r&&i.code==="token_expired"&&!a){console.log("\nToken expired, refreshing...");t.token=await n({api:o,refresh:true});return await e(t)}else{throw i}}}e.exports={parseFlag:parseFlag,parseIntFlag:parseIntFlag,parseFloatFlag:parseFloatFlag,parseBoolFlag:parseBoolFlag,validateSpeed:validateSpeed,validateSilence:validateSilence,validateOutput:validateOutput,validateFormat:validateFormat,assertFileExists:assertFileExists,runWithRetry:runWithRetry}},4142:(e,t,o)=>{const n=o(9896);const{request:r,throwApiError:a,throwNetworkError:i,ApiError:s}=o(2768);const l=6e4;const c=72e5;const d=5*1024*1024;const u=3e3;const p=3e5;const A={WAITING:0,PROCESSING:1,SUCCESS:2,FAILED:3};function detectMode(e,t,o){if(e<=l&&o<=d){return"sentence"}if(e<=c&&t){return"flash"}return"file"}function authHeaders(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function recognizeSentence(e){const{apiBase:t,token:o,url:l,filePath:c,lang:d="16k_zh",wordInfo:u=false}=e;const p={EngSerViceType:d,VoiceFormat:"wav",SubServiceType:2,WordInfo:u?1:0,ConvertNumMode:1};if(l){p.Url=l;p.SourceType=0}else if(c){const e=n.readFileSync(c);p.Data=e.toString("base64");p.DataLen=e.length;p.SourceType=1}else{throw new Error("Either url or filePath is required for sentence recognition")}try{const{status:e,data:n}=await r(`${t}/api/asr/sentence`,{method:"POST",headers:authHeaders(o)},p);if(e!==200||n.code!=="success"){a(e,n,"ASR sentence")}return{result:n.result,audioTime:n.audioTime,wordList:n.wordList||[],requestId:n.requestId,quota:n.quota}}catch(e){if(e instanceof s)throw e;i(e,t)}}async function recognizeFlash(e){const{apiBase:t,token:o,url:n,lang:l="16k_zh",speakerDiarization:c=false,speakerNumber:d=0}=e;if(!n){throw new Error("Flash recognition requires a URL (cannot use base64 data)")}const u={engine_type:l,voice_format:"wav",url:n,speaker_diarization:c?1:0,speaker_number:d,filter_dirty:0,filter_modal:0,filter_punc:0,convert_num_mode:1,word_info:1,first_channel_only:1};try{const{status:e,data:n}=await r(`${t}/api/asr/flash`,{method:"POST",headers:authHeaders(o)},u);if(e!==200||n.code!=="success"){a(e,n,"ASR flash")}return{flashResult:n.flash_result||[],audioDuration:n.audio_duration||0,requestId:n.request_id,quota:n.quota}}catch(e){if(e instanceof s)throw e;i(e,t)}}async function submitFileTask(e){const{apiBase:t,token:o,url:l,filePath:c,lang:u="16k_zh",speakerDiarization:p=false,speakerNumber:A=0}=e;const f={EngineModelType:u,ChannelNum:1,ResTextFormat:0,FilterDirty:0,FilterModal:0,FilterPunc:0,ConvertNumMode:1,SpeakerDiarization:p?1:0,SpeakerNumber:A};if(l){f.Url=l;f.SourceType=0}else if(c){const e=n.readFileSync(c);if(e.length>d){throw new Error(`File too large for base64 upload (${(e.length/1024/1024).toFixed(1)} MB). `+"Upload to COS first or use flash mode with a URL.")}f.Data=e.toString("base64");f.DataLen=e.length;f.SourceType=1}else{throw new Error("Either url or filePath is required for file recognition")}try{const{status:e,data:n}=await r(`${t}/api/asr/file`,{method:"POST",headers:authHeaders(o)},f);if(e!==200||n.code!=="success"){a(e,n,"ASR file submit")}return{taskId:n.taskId,requestId:n.requestId,quota:n.quota}}catch(e){if(e instanceof s)throw e;i(e,t)}}async function pollTaskResult(e){const{apiBase:t,token:o,taskId:n,pollIntervalMs:l=u,pollTimeoutMs:c=p,onProgress:d}=e;const f=Date.now();while(true){const e=Date.now()-f;if(e>c){throw new Error(`ASR task ${n} timed out after ${Math.round(e/1e3)}s. `+"The task may still complete — check later with: voxflow asr --task-id "+n)}try{const{status:i,data:s}=await r(`${t}/api/asr/result/${n}`,{method:"GET",headers:authHeaders(o)});if(i!==200||s.code!=="success"){a(i,s,"ASR poll")}const l=s.data;const c=l.Status;if(d)d(c,e);if(c===A.SUCCESS){return{result:l.Result,audioTime:l.AudioTime,status:c}}if(c===A.FAILED){throw new Error(`ASR task ${n} failed: ${l.Result||"Unknown error"}`)}}catch(o){if(o instanceof s)throw o;if(e+l<c){}else{i(o,t)}}await sleep(l)}}async function recognize(e){const{mode:t="auto",url:o,durationMs:n,fileSize:r=0}=e;const a=!!o;const i=t==="auto"?detectMode(n,a,r):t;switch(i){case"sentence":{const t=await recognizeSentence(e);return{mode:"sentence",result:t.result,audioTime:t.audioTime,wordList:t.wordList,quota:t.quota}}case"flash":{if(!o){throw new Error("Flash mode requires a URL. Upload the file to COS first, or use --mode auto.")}const t=await recognizeFlash(e);const n=(t.flashResult||[]).flatMap((e=>e.sentence_list?e.sentence_list.map((e=>e.text)):[e.text])).join("");return{mode:"flash",result:n,flashResult:t.flashResult,audioDuration:t.audioDuration,audioTime:(t.audioDuration||0)/1e3,quota:t.quota}}case"file":{const t=await submitFileTask(e);const o=await pollTaskResult({apiBase:e.apiBase,token:e.token,taskId:t.taskId,onProgress:e.onProgress});return{mode:"file",result:o.result,audioTime:o.audioTime,taskId:t.taskId,quota:t.quota}}default:throw new Error(`Unknown ASR mode: ${i}. Use: auto, sentence, flash, or file`)}}function sleep(e){return new Promise((t=>setTimeout(t,e)))}e.exports={recognize:recognize,recognizeSentence:recognizeSentence,recognizeFlash:recognizeFlash,submitFileTask:submitFileTask,pollTaskResult:pollTaskResult,detectMode:detectMode,SENTENCE_MAX_MS:l,FLASH_MAX_MS:c,BASE64_MAX_BYTES:d,TASK_STATUS:A}},3077:(e,t,o)=>{const{request:n,throwApiError:r,throwNetworkError:a}=o(2768);function authHeaders(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function call(e,t,o,i,s){let l;try{l=await n(`${e}${o}`,{method:t,headers:authHeaders(i)},s)}catch(t){a(t,e)}if(l.status<200||l.status>=300){r(l.status,l.data,`ASR jobs ${t} ${o}`)}return l.data?.data||l.data}async function createJob({apiBase:e,token:t,sourceKey:o,sourceFilename:n,sourceSize:r,durationSec:a,language:i="auto",options:s={}}){const l=await call(e,"POST","/api/asr/jobs",t,{sourceKey:o,sourceFilename:n,sourceSize:r,durationSec:a,language:i,options:s});return l.job}async function getJob(e,t,o){const n=await call(e,"GET",`/api/asr/jobs/${encodeURIComponent(o)}`,t);return n.job}async function listJobs(e,t,{limit:o=20,before:n}={}){const r=new URLSearchParams;if(o)r.set("limit",String(o));if(n)r.set("before",n);const a=r.toString();const i=await call(e,"GET",`/api/asr/jobs${a?`?${a}`:""}`,t);return i.jobs||[]}async function cancelJob(e,t,o){const n=await call(e,"DELETE",`/api/asr/jobs/${encodeURIComponent(o)}`,t);return n.job}const i=new Set(["succeeded","failed","cancelled"]);async function waitForTerminal({apiBase:e,token:t,jobId:o,onProgress:n,signal:r}){const a=[2e3,5e3,1e4,3e4];let s=0;while(true){if(r?.aborted){const e=new Error("Aborted");e.code="aborted";throw e}const l=await getJob(e,t,o);if(n)n(l);if(i.has(l.status))return l;const c=a[Math.min(s,a.length-1)];await new Promise((e=>setTimeout(e,c)));s++}}e.exports={createJob:createJob,getJob:getJob,listJobs:listJobs,cancelJob:cancelJob,waitForTerminal:waitForTerminal,TERMINAL_STATUSES:i,__internals:{call:call}}},5013:(e,t,o)=>{const n=o(9896);const r=o(6928);const{getConfigDir:a}=o(3282);function getJobsDir(){const e=r.join(a(),"jobs");n.mkdirSync(e,{recursive:true});return e}function jobFilePath(e){const t=String(e).replace(/[^A-Za-z0-9._-]/g,"_");return r.join(getJobsDir(),`asr-${t}.json`)}function saveJob(e,t){const o=jobFilePath(e);const r=JSON.stringify({jobId:e,...t,lastPolledAt:(new Date).toISOString()},null,2);const a=`${o}.tmp`;n.writeFileSync(a,r);n.renameSync(a,o);return o}function loadJob(e){const t=jobFilePath(e);if(!n.existsSync(t))return null;try{return JSON.parse(n.readFileSync(t,"utf8"))}catch{return null}}function listJobs(){const e=getJobsDir();const t=n.readdirSync(e).filter((e=>e.startsWith("asr-")&&e.endsWith(".json")));return t.map((t=>{try{return JSON.parse(n.readFileSync(r.join(e,t),"utf8"))}catch{return null}})).filter(Boolean).sort(((e,t)=>(t.createdAt||"").localeCompare(e.createdAt||"")))}function deleteJob(e){const t=jobFilePath(e);try{n.unlinkSync(t);return true}catch{return false}}function pruneTerminal(e=30){const t=Date.now()-e*24*60*60*1e3;let o=0;for(const e of listJobs()){if(!["succeeded","failed","cancelled"].includes(e.status))continue;const n=Date.parse(e.lastPolledAt||e.createdAt||0);if(Number.isFinite(n)&&n<t){deleteJob(e.jobId);o++}}return o}e.exports={saveJob:saveJob,loadJob:loadJob,listJobs:listJobs,deleteJob:deleteJob,pruneTerminal:pruneTerminal,getJobsDir:getJobsDir,__internals:{jobFilePath:jobFilePath}}},8683:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(8611);const i=o(5692);const{request:s,throwApiError:l,throwNetworkError:c,ApiError:d}=o(2768);const u={".wav":"audio/wav",".mp3":"audio/mpeg",".m4a":"audio/mp4",".aac":"audio/aac",".flac":"audio/flac",".ogg":"audio/ogg",".opus":"audio/opus",".amr":"audio/amr",".mp4":"video/mp4",".mov":"video/quicktime",".m4v":"video/x-m4v",".mkv":"video/x-matroska",".webm":"video/webm"};function guessContentType(e){return u[r.extname(e).toLowerCase()]||"application/octet-stream"}function putBytes(e,t,o){return new Promise(((n,r)=>{const s=new URL(e);const l=s.protocol==="https:"?i:a;const c=l.request(s,{method:"PUT",headers:{"Content-Length":t.length,"Content-Type":o}},(e=>{const t=[];e.on("data",(e=>t.push(e)));e.on("end",(()=>{if(e.statusCode>=200&&e.statusCode<300){n({status:e.statusCode,etag:e.headers.etag||null})}else{const o=Buffer.concat(t).toString("utf8").slice(0,500);r(new d(`R2 PUT failed (${e.statusCode}): ${o}`,"r2_put_failed",e.statusCode))}}))}));c.on("error",r);c.setTimeout(5*60*1e3,(()=>{c.destroy();r(new Error("R2 PUT timeout (5m)"))}));c.write(t);c.end()}))}async function postJson(e,t,o,n){let r;try{r=await s(`${e}${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`}},n)}catch(t){c(t,e)}if(r.status<200||r.status>=300){l(r.status,r.data,`R2 ${t}`)}return r.data?.data||r.data}async function uploadToR2({filePath:e,apiBase:t,token:o,onProgress:a}){const i=n.statSync(e);const s=i.size;const l=r.basename(e);const c=guessContentType(l);const d=await postJson(t,"/api/asr-upload-r2/init",o,{filename:l,fileSize:s,contentType:c});if(d.mode==="single"){const t=n.readFileSync(e);await putBytes(d.url,t,c);if(a)a({uploaded:s,total:s,partNumber:1,partCount:1});return{key:d.key,mode:"single",size:s}}const u=d.recommendedPartSize||16*1024*1024;const p=Math.ceil(s/u);const A=n.openSync(e,"r");const f=[];let h=0;try{for(let e=1;e<=p;e++){const r=(e-1)*u;const i=Math.min(u,s-r);const l=Buffer.alloc(i);n.readSync(A,l,0,i,r);const{url:m}=await postJson(t,"/api/asr-upload-r2/sign-part",o,{key:d.key,uploadId:d.uploadId,partNumber:e});const{etag:g}=await putBytes(m,l,c);if(!g)throw new Error(`R2 part ${e} returned no ETag`);f.push({PartNumber:e,ETag:g});h+=i;if(a)a({uploaded:h,total:s,partNumber:e,partCount:p})}}catch(e){try{await postJson(t,"/api/asr-upload-r2/abort",o,{key:d.key,uploadId:d.uploadId})}catch{}throw e}finally{try{n.closeSync(A)}catch{}}await postJson(t,"/api/asr-upload-r2/complete",o,{key:d.key,uploadId:d.uploadId,parts:f});return{key:d.key,mode:"multipart",size:s}}e.exports={uploadToR2:uploadToR2,guessContentType:guessContentType,__internals:{putBytes:putBytes,postJson:postJson}}},2040:(e,t,o)=>{const n=o(9896);const r=o(6928);const a=o(8611);const i=o(5692);const{request:s,throwApiError:l,throwNetworkError:c,ApiError:d}=o(2768);const u={".wav":"audio/wav",".mp3":"audio/mpeg",".ogg":"audio/ogg",".m4a":"audio/x-m4a",".mp4":"video/mp4",".webm":"video/webm",".mov":"video/quicktime",".avi":"video/x-msvideo",".mkv":"video/x-matroska",".flac":"audio/flac"};function getMimeType(e){const t=r.extname(e).toLowerCase();return u[t]||"application/octet-stream"}async function uploadAsrAudio(e,t,o){const a=r.resolve(e);if(!n.existsSync(a)){throw new Error(`File not found: ${a}`)}const i=n.statSync(a);const u=r.basename(a);const p=getMimeType(a);let A;try{const{status:e,data:n}=await s(`${t}/api/asr-upload/get-upload-url`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`}},{filename:u,fileSize:i.size});if(e!==200||n.code!=="success")l(e,n,"Get upload URL");A=n.data}catch(e){if(e instanceof d)throw e;c(e,t)}await putFile(A.signedUrl,a,p);let f;try{const{status:e,data:n}=await s(`${t}/api/asr-upload/get-download-url`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`}},{path:A.path});if(e!==200||n.code!=="success")l(e,n,"Get download URL");f=n.data.downloadUrl}catch(e){if(e instanceof d)throw e;c(e,t)}return{downloadUrl:f,path:A.path}}function putFile(e,t,o){return new Promise(((r,s)=>{const l=new URL(e);const c=l.protocol==="https:"?i:a;const d=n.statSync(t).size;const u=c.request({hostname:l.hostname,port:l.port||(l.protocol==="https:"?443:80),path:l.pathname+l.search,method:"PUT",headers:{"Content-Type":o,"Content-Length":d}},(e=>{const t=[];e.on("data",(e=>t.push(e)));e.on("end",(()=>{if(e.statusCode>=200&&e.statusCode<300){r()}else{const o=Buffer.concat(t).toString("utf8");s(new Error(`Upload failed (${e.statusCode}): ${o.slice(0,300)}`))}}))}));u.on("error",(e=>s(new Error(`Upload network error: ${e.message}`))));u.setTimeout(3e5,(()=>{u.destroy();s(new Error("Upload timeout (5 min)"))}));const p=n.createReadStream(t);p.pipe(u);p.on("error",(e=>{p.destroy();u.destroy();s(new Error(`Failed to read file for upload: ${e.message}`))}))}))}e.exports={uploadAsrAudio:uploadAsrAudio,getMimeType:getMimeType}},7656:(e,t,o)=>{const n=o(6928);const r=o(857);const a=o(9896);const{runCommand:i}=o(9933);async function getMediaInfo(e){const t=n.resolve(e);if(!a.existsSync(t)){throw new Error(`File not found: ${t}`)}try{const{stdout:e}=await i("ffprobe",["-v","error","-show_entries","format=duration","-show_entries","stream=codec_type,codec_name,sample_rate,channels","-of","json",t]);const o=JSON.parse(e);const n=o.streams||[];const r=o.format||{};const a=n.find((e=>e.codec_type==="audio"));const s=n.find((e=>e.codec_type==="video"));const l=parseFloat(r.duration);const c=isNaN(l)?0:Math.round(l*1e3);return{durationMs:c,hasVideo:!!s,hasAudio:!!a,audioCodec:a?a.codec_name:null,sampleRate:a?parseInt(a.sample_rate,10):null,channels:a?parseInt(a.channels,10):null}}catch(t){if(t.code==="ENOENT"){throw new Error("ffprobe not found. Please install ffmpeg:\n"+" macOS: brew install ffmpeg\n"+" Ubuntu: sudo apt install ffmpeg\n"+" Windows: https://ffmpeg.org/download.html")}throw new Error(`Failed to probe media file ${e}: ${t.message}`)}}async function extractAudioForAsr(e,t={}){const o=n.resolve(e);if(!a.existsSync(o)){throw new Error(`File not found: ${o}`)}const s=t.outputDir||r.tmpdir();const l=n.basename(o,n.extname(o));const c=n.join(s,`asr-${l}-${Date.now()}.wav`);try{await i("ffmpeg",["-i",o,"-vn","-acodec","pcm_s16le","-ar","16000","-ac","1","-y",c])}catch(t){if(t.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg:\n"+" macOS: brew install ffmpeg\n"+" Ubuntu: sudo apt install ffmpeg\n"+" Windows: https://ffmpeg.org/download.html")}throw new Error(`Failed to extract audio from ${e}: ${t.stderr||t.message}`)}const d=a.statSync(c);const u=Math.round((d.size-44)/32);return{wavPath:c,durationMs:u,needsCleanup:true}}async function needsConversion(e){try{const t=await getMediaInfo(e);if(t.hasVideo)return true;if(t.audioCodec!=="pcm_s16le")return true;if(t.sampleRate!==16e3)return true;if(t.channels!==1)return true;return false}catch{return true}}e.exports={getMediaInfo:getMediaInfo,extractAudioForAsr:extractAudioForAsr,needsConversion:needsConversion}},7188:e=>{function parseParagraphs(e){const t=e.split(/\n\s*\n/).map((e=>e.replace(/^\d+[.、)\]]\s*/,"").trim())).filter((e=>e.length>0));return t}function createSilence(e,t){const o=Math.floor(t*e);return Buffer.alloc(o*2,0)}function buildWav(e,t){const o=24e3;const n=16;const r=1;const a=n/8;const i=r*a;const s=o*i;const l=createSilence(t,o);let c=0;for(let t=0;t<e.length;t++){c+=e[t].length;if(t<e.length-1){c+=l.length}}const d=Buffer.alloc(44);d.write("RIFF",0);d.writeUInt32LE(36+c,4);d.write("WAVE",8);d.write("fmt ",12);d.writeUInt32LE(16,16);d.writeUInt16LE(1,20);d.writeUInt16LE(r,22);d.writeUInt32LE(o,24);d.writeUInt32LE(s,28);d.writeUInt16LE(i,32);d.writeUInt16LE(n,34);d.write("data",36);d.writeUInt32LE(c,40);const u=[d];for(let t=0;t<e.length;t++){u.push(e[t]);if(t<e.length-1){u.push(l)}}return{wav:Buffer.concat(u),duration:c/s}}function getFileExtension(e){switch(e){case"mp3":return".mp3";case"wav":return".wav";case"pcm":default:return".wav"}}function concatAudioBuffers(e,t,o){if(t==="mp3"){const t=Buffer.concat(e);const o=t.length/4e3;return{audio:t,duration:o}}if(t==="wav"){const t=e.map(extractPcmFromWav);const{wav:n,duration:r}=buildWav(t,o);return{audio:n,duration:r}}const{wav:n,duration:r}=buildWav(e,o);return{audio:n,duration:r}}function extractPcmFromWav(e){const t=Buffer.from("data");let o=12;while(o<e.length-8){if(e.subarray(o,o+4).equals(t)){const t=e.readUInt32LE(o+4);return e.subarray(o+8,o+8+t)}const n=e.readUInt32LE(o+4);o+=8+n}return e.subarray(44)}e.exports={parseParagraphs:parseParagraphs,createSilence:createSilence,buildWav:buildWav,concatAudioBuffers:concatAudioBuffers,getFileExtension:getFileExtension}},598:(e,t,o)=>{const n=o(9896);const r=o(6982);const a=o(3785);const{TOKEN_PATH:i,getConfigDir:s,LOGIN_PAGE:l,AUTH_TIMEOUT_MS:c,API_BASE:d,SUPABASE_URL:u,SUPABASE_ANON_KEY:p}=o(3282);const{detectAIAgent:A,buildUserActionPanel:f}=o(2093);const h=6e5;const m=600;const g=15e3;function isPlausibleRefreshToken(e){if(e==null||e==="")return true;if(typeof e!=="string")return false;if(e.length<6)return false;if(!/^[A-Za-z0-9._\-+/=]+$/.test(e))return false;return true}function classifyRefreshToken(e){if(e==null||e==="")return"missing";if(!isPlausibleRefreshToken(e))return"malformed";return"ok"}const v="token.json.lock";const y=3e4;const b=50;const w=5e3;function lockPath(){return i+".lock"}async function withRefreshLock(e){const t=Date.now();const o=lockPath();try{n.mkdirSync(s(),{recursive:true,mode:448})}catch{}while(true){try{n.mkdirSync(o);try{return await e()}finally{try{n.rmdirSync(o)}catch{}}}catch(r){if(r.code!=="EEXIST")throw r;try{const e=n.statSync(o);if(Date.now()-e.mtimeMs>y){try{n.rmdirSync(o)}catch{}continue}}catch{}if(Date.now()-t>w){return await e()}await new Promise((e=>setTimeout(e,b)))}}}void v;function readCachedToken(){try{const e=n.readFileSync(i,"utf8");const t=JSON.parse(e);if(!t.access_token)return null;const o=decodeJwtPayload(t.access_token);if(!o||!o.exp)return null;const r=Math.floor(Date.now()/1e3);if(o.exp-r<m)return null;return t}catch{return null}}function readRawCachedToken(){try{const e=n.readFileSync(i,"utf8");const t=JSON.parse(e);if(!t.access_token)return null;return t}catch{return null}}function writeCachedToken(e){const t=s();n.mkdirSync(t,{recursive:true,mode:448});let o=e;if(e&&e.refresh_token!=null&&e.refresh_token!==""){if(!isPlausibleRefreshToken(e.refresh_token)){try{process.stderr.write("[33m⚠ Dropped malformed refresh_token (length "+String(e.refresh_token).length+"). Run `voxflow login` to refresh credentials cleanly.[0m\n")}catch{}o={...e,refresh_token:""}}}const r=i+".tmp";const a=n.openSync(r,"w",384);try{n.writeSync(a,JSON.stringify(o,null,2))}finally{n.closeSync(a)}n.chmodSync(r,384);n.renameSync(r,i)}function clearToken(){try{n.unlinkSync(i)}catch{}}function decodeJwtPayload(e){try{const t=e.split(".");if(t.length!==3)return null;const o=t[1].replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(Buffer.from(o,"base64").toString("utf8"))}catch{return null}}function parseManualAuthInput(e){const t=String(e||"").trim();if(!t)return null;let o=null;if(t.startsWith("{")){try{o=JSON.parse(t)}catch{return null}}const n=o?o.access_token||o.accessToken||o.token||"":t;const r=o?o.refresh_token||o.refreshToken||"":"";if(!decodeJwtPayload(n))return null;const a=isPlausibleRefreshToken(r)?r:"";return{accessToken:n,refreshToken:a}}function readEnvToken(){const e=(process.env.VOXFLOW_TOKEN||process.env.VOXFLOW_JWT||"").trim();if(!e)return null;const t=decodeJwtPayload(e);if(!t)return null;if(!t.exp)return null;const o=Math.floor(Date.now()/1e3);if(t.exp-o<m)return null;return e}async function getToken({api:e,force:t,refresh:o}={}){if(!t&&!o){const e=readEnvToken();if(e)return e}if(!t&&!o){const t=readCachedToken();if(t){const o=!e||e===t.api;if(o)return t.access_token}}if(!t){const t=await refreshCachedToken(e);if(t)return t}return browserLogin(e||d)}async function refreshCachedToken(e){return withRefreshLock((async()=>{const t=readCachedToken();if(t)return t.access_token;const o=readRawCachedToken();if(!o?.refresh_token)return null;if(!isPlausibleRefreshToken(o.refresh_token))return null;return tryRefreshToken(o.refresh_token,e||o.api||d)}))}async function tryRefreshToken(e,t=d){try{const o=await supabasePost(`${u}/auth/v1/token?grant_type=refresh_token`,{refresh_token:e});if(o.status>=400||!o.data?.access_token)return null;const n=o.data.access_token;const r=decodeJwtPayload(n);writeCachedToken({access_token:n,refresh_token:o.data.refresh_token||e,expires_at:r?.exp||0,email:r?.email||"",api:t,cached_at:(new Date).toISOString()});return n}catch{return null}}function getTokenInfo(){const e=readCachedToken();if(!e)return null;const t=decodeJwtPayload(e.access_token);if(!t)return null;const o=Math.floor(Date.now()/1e3);return{email:t.email||e.email||"(unknown)",expiresAt:new Date(t.exp*1e3).toISOString(),remaining:t.exp-o,valid:t.exp-o>m,api:e.api||d,refreshHealth:classifyRefreshToken(e.refresh_token)}}async function getFreshTokenInfo({api:e}={}){const t=getTokenInfo();if(t)return t;const o=await refreshCachedToken(e);if(!o)return null;return getTokenInfo()}const x=300;function startBackgroundRefresh({api:e}={}){let t=false;let o=null;function schedule(){if(t)return;const n=readRawCachedToken();if(!n?.access_token)return;const r=decodeJwtPayload(n.access_token);if(!r?.exp)return;const a=Math.floor(Date.now()/1e3);const i=Math.max(30,r.exp-a-x);o=setTimeout((async()=>{if(t)return;try{await refreshCachedToken(e)}catch{}schedule()}),i*1e3);if(typeof o.unref==="function")o.unref()}schedule();return function stop(){t=true;if(o){clearTimeout(o);o=null}}}function postDeviceAuth(e,t,n){return new Promise(((r,a)=>{const i=new URL(t,e);const s=i.protocol==="https:"?o(5692):o(8611);const l=JSON.stringify(n||{});const c=s.request({hostname:i.hostname,port:i.port||(i.protocol==="https:"?443:80),path:i.pathname+i.search,method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(l),"X-Client-Source":"cli"}},(e=>{const t=[];e.on("data",(e=>t.push(e)));e.on("end",(()=>{const o=Buffer.concat(t).toString("utf8");try{r({status:e.statusCode,data:JSON.parse(o)})}catch{r({status:e.statusCode,data:{raw:o}})}}))}));c.on("error",a);c.setTimeout(3e4,(()=>{c.destroy(new Error("Device auth request timeout (30s)"))}));c.write(l);c.end()}))}const S=5;function browserLogin(e){return new Promise(((t,n)=>{(async()=>{let r,a,i,s,l;try{const{status:t,data:o}=await postDeviceAuth(e,"/api/device-auth/code",{});if(t!==200||o?.code!=="success"||!o?.data?.deviceCode){return n(new Error(`Failed to start device login (HTTP ${t}): ${o?.message||"unexpected response"}`))}({deviceCode:r,userCode:a,verifyUrl:i}=o.data);s=o.data.interval||S;l=o.data.expiresIn||300}catch(t){return n(new Error(`Cannot reach ${e}: ${t.message}`))}const d=process.stdin.isTTY;const u=A();const p=u!==null;const m=process.platform==="darwin"||process.platform==="win32"||!!(process.env.DISPLAY||process.env.WAYLAND_DISPLAY);const g=!process.env.CI&&(d||m);if(p){const e=Math.min(h,l*1e3);process.stderr.write(f({loginUrl:i,agentName:u,timeoutSec:Math.round(e/1e3),userCode:a}))}else{const e=d?console.log:e=>process.stderr.write(e+"\n");e("");e("[33m🔐 Confirm device authorization[0m");e("");e(` Pairing code: [1;36m${a}[0m`);e(` Verify at: [36m${i}[0m`);e("");e(` Code expires in ${Math.round(l/60)} min. Polling every ${s}s...`);e("")}if(g){try{const e=(await Promise.resolve().then(o.bind(o,6257))).default;const t=await e(i);if(t&&typeof t.on==="function"){t.on("error",(()=>{process.stderr.write("[31m Browser auto-open failed. Open the URL above manually.[0m\n")}))}}catch{process.stderr.write("[31m Browser auto-open failed. Open the URL above manually.[0m\n")}}const v=Math.min(p?h:c,l*1e3);const y=Date.now()+v;let b=s*1e3;while(Date.now()<y){await new Promise((e=>setTimeout(e,b)));let o;try{o=await postDeviceAuth(e,"/api/device-auth/token",{deviceCode:r})}catch(e){process.stderr.write(`[33m Poll error (${e.message}), retrying...[0m\n`);continue}const{status:a,data:i}=o;const s=i?.code;if(a===200&&s==="success"&&i?.data?.token){const o=i.data.token;const n=i.data.refreshToken||"";const r=decodeJwtPayload(o);writeCachedToken({access_token:o,refresh_token:n,expires_at:r?.exp||0,email:r?.email||"",api:e,cached_at:(new Date).toISOString()});if(d){console.log(`[32m✓ Authorized (${r?.email||"user"})[0m\n`)}return t(o)}if(a===202||s==="authorization_pending"){continue}if(s==="too_many_attempts"){b=Math.min(b*2,3e4);continue}if(s==="expired"||a===410){return n(new Error(`Pairing code expired before login. Run \`voxflow login\` again.`))}if(s==="invalid_device_code"||a===404){return n(new Error(`Pairing code invalidated by server. Run \`voxflow login\` again.`))}if(s==="already_consumed"||a===409){return n(new Error(`Token already issued for this code. Run \`voxflow login\` again.`))}process.stderr.write(`[33m Unexpected poll response (HTTP ${a}, code=${s}), retrying...[0m\n`)}return n(new Error(`Login timed out (${Math.round(v/1e3)}s). `+`Please retry: voxflow login `+`(or set VOXFLOW_TOKEN in env to skip browser login)`))})()}))}function terminalOtpLogin(e=d){return new Promise(((t,o)=>{const n=a.createInterface({input:process.stdin,output:process.stdout});function ask(e){return new Promise((t=>n.question(e,t)))}(async()=>{try{console.log("\n[33m🔐 Terminal login (no browser needed)[0m\n");const o=(await ask(" Email: ")).trim();if(!o||!o.includes("@")){throw new Error("Invalid email address.")}process.stdout.write(" Sending verification code... ");const r=await supabasePost(`${u}/auth/v1/otp`,{email:o,create_user:true});if(r.status>=400){const e=r.data?.error_description||r.data?.msg||r.data?.message||JSON.stringify(r.data);throw new Error(`OTP send failed (${r.status}): ${e}`)}console.log("✓ Code sent!");console.log(" [36mCheck your email for the 6-digit verification code.[0m\n");const a=(await ask(" Verification code: ")).trim();if(!a){throw new Error("No verification code entered.")}process.stdout.write(" Verifying... ");const i=await supabasePost(`${u}/auth/v1/verify`,{email:o,token:a,type:"email"});if(i.status>=400||!i.data?.access_token){const e=i.data?.error_description||i.data?.msg||i.data?.message||"Invalid or expired code";throw new Error(`Verification failed: ${e}`)}const s=i.data.access_token;const l=decodeJwtPayload(s);writeCachedToken({access_token:s,refresh_token:i.data.refresh_token||"",expires_at:l?.exp||0,email:l?.email||o,api:e,cached_at:(new Date).toISOString()});console.log("✓ Success!");console.log(`\n[32m✓ Logged in as ${l?.email||o}[0m\n`);n.close();t(s)}catch(e){n.close();o(e)}})()}))}function supabasePost(e,t){const n=o(5692);const r=JSON.stringify(t);const a=new URL(e);return new Promise(((e,t)=>{const o=n.request({hostname:a.hostname,port:443,path:a.pathname+a.search,method:"POST",headers:{"Content-Type":"application/json",apikey:p,"Content-Length":Buffer.byteLength(r)}},(t=>{let o="";t.on("data",(e=>o+=e));t.on("end",(()=>{try{e({status:t.statusCode,data:JSON.parse(o)})}catch{e({status:t.statusCode,data:o})}}))}));o.on("error",t);o.setTimeout(g,(()=>{o.destroy(new Error(`Supabase auth request timeout (${g/1e3}s)`))}));o.write(r);o.end()}))}function buildPrintOnlyLoginUrl(){return`${l}?callback_port=0`}function acceptManualAuthPayload(e,t=d){const o=parseManualAuthInput(e);if(!o){return{ok:false,reason:"invalid-payload",message:'Could not parse the auth payload — expected JSON {"access_token":"..."} or a raw JWT.'}}const n=decodeJwtPayload(o.accessToken);if(!n){return{ok:false,reason:"invalid-jwt",message:"access_token is not a valid JWT."}}const r=Math.floor(Date.now()/1e3);if(n.exp&&n.exp<r){return{ok:false,reason:"expired",message:"Token has already expired. Re-run the login URL and paste a fresh payload."}}writeCachedToken({access_token:o.accessToken,refresh_token:o.refreshToken||"",expires_at:n.exp||0,email:n.email||"",api:t,cached_at:(new Date).toISOString()});return{ok:true,info:{email:n.email||"(unknown)",expiresAt:new Date((n.exp||0)*1e3).toISOString(),api:t}}}e.exports={getToken:getToken,clearToken:clearToken,getTokenInfo:getTokenInfo,getFreshTokenInfo:getFreshTokenInfo,terminalOtpLogin:terminalOtpLogin,readCachedToken:readCachedToken,buildPrintOnlyLoginUrl:buildPrintOnlyLoginUrl,acceptManualAuthPayload:acceptManualAuthPayload,startBackgroundRefresh:startBackgroundRefresh,isPlausibleRefreshToken:isPlausibleRefreshToken,_test:{parseManualAuthInput:parseManualAuthInput,tryRefreshToken:tryRefreshToken,withRefreshLock:withRefreshLock,refreshCachedToken:refreshCachedToken,classifyRefreshToken:classifyRefreshToken,MIN_TOKEN_REMAINING_SEC:m}}},3282:(e,t,o)=>{const n=o(6928);const r=o(857);const a="https://api.voxflow.studio";const i="https://iwkonytsjysszmafqchh.supabase.co";const s="sb_publishable_TEh6H4K9OWXUNfWSeBKXlQ_hg7Zzm6b";const l="voxflow";function getConfigDir(){if(process.platform==="win32"){return n.join(process.env.APPDATA||n.join(r.homedir(),"AppData","Roaming"),l)}const e=process.env.XDG_CONFIG_HOME||n.join(r.homedir(),".config");return n.join(e,l)}const c=n.join(getConfigDir(),"token.json");const d="v-female-R2s4N9qJ";const u={voice:d,paragraphs:5,speed:1,silence:.8};const p={template:"interview",exchanges:8,length:"medium",style:"professional",speakers:2,silence:.5,speed:1,ducking:.2};const A={voice:d,speed:1,volume:1,pitch:0};const f={voice:d,speed:1,silence:.8};const h={voice:d,speed:1,toleranceMs:50,ducking:.2};const m={lang:"16k_zh",mode:"auto",format:"srt",pollIntervalMs:3e3,pollTimeoutMs:3e5,engine:"auto",model:"base"};const g={batchSize:5,temperature:.3,maxTokens:2e3};const v={batchSize:5,speed:1};const y={voice:d,speed:1,style:"modern",sceneCount:5,silence:.8,language:"en"};const b={voice:d,speed:1,theme:"midnight",template:"free",model:"swift"};const w={voice:d,speed:1,style:"sketchnote",ratio:"portrait",sceneCount:5,language:"zh",quality:"fast",silence:.5,fadeSeconds:.4,bgmVolume:.1};const x={voice:d,speed:1,style:"aurora"};const S={voice:d,speed:1,slides:8,language:"en",engine:"auto"};const k="https://voxflow.studio";const C=`${k}/cli-auth.html`;const T=`${k}/app`;const P=18e4;e.exports={API_BASE:a,WEB_BASE:k,DASHBOARD_URL:T,SUPABASE_URL:i,SUPABASE_ANON_KEY:s,TOKEN_PATH:c,getConfigDir:getConfigDir,DEFAULT_VOICE:d,DEFAULTS:u,STORY_DEFAULTS:u,PODCAST_DEFAULTS:p,SYNTHESIZE_DEFAULTS:A,NARRATE_DEFAULTS:f,DUB_DEFAULTS:h,ASR_DEFAULTS:m,TRANSLATE_DEFAULTS:g,VIDEO_TRANSLATE_DEFAULTS:v,EXPLAIN_DEFAULTS:y,SLIDES_DEFAULTS:b,PRESENT_DEFAULTS:x,PICSTORY_DEFAULTS:w,SUMMARIZE_DEFAULTS:S,LOGIN_PAGE:C,AUTH_TIMEOUT_MS:P}},5503:(e,t,o)=>{const n=o(3785);const{readCachedToken:r}=o(598);const{request:a}=o(2768);const{API_BASE:i}=o(3282);async function promptFeedback(e){if(!process.stdin.isTTY)return;const t=r();if(!t?.access_token)return;const s=n.createInterface({input:process.stdin,output:process.stderr});try{const n=await new Promise((e=>{const t=setTimeout((()=>{s.close();e(null)}),5e3);s.question("\n Was this helpful? [y/n] (skip: Enter) ",(o=>{clearTimeout(t);e(o.trim().toLowerCase())}))}));if(!n||n!=="y"&&n!=="n")return;const r=n==="y";const l=new URL("/api/feedback/submit",i);a(l.href,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t.access_token}`,"X-Client-Source":"cli"}},JSON.stringify({type:"thumbs",feature:e,sentiment:r,context:{cli_version:o(8330).version}})).catch((()=>{}))}finally{s.close()}}e.exports={promptFeedback:promptFeedback}},9933:(e,t,o)=>{const{execFile:n}=o(5317);const r=o(6928);const a=o(9896);function runCommand(e,t,o){return new Promise(((r,a)=>{n(e,t,{timeout:6e5,...o},((e,t,o)=>{if(e){e.stderr=o;e.stdout=t;a(e)}else{r({stdout:t,stderr:o})}}))}))}async function checkFfmpeg(){try{const{stdout:e}=await runCommand("ffmpeg",["-version"]);const t=e.match(/ffmpeg version (\S+)/);const o=t?t[1]:"unknown";let n=false;try{await runCommand("ffprobe",["-version"]);n=true}catch{}return{available:true,version:o,ffprobeAvailable:n}}catch{return{available:false}}}async function getAudioDuration(e){const t=r.resolve(e);try{const{stdout:e}=await runCommand("ffprobe",["-v","error","-show_entries","format=duration","-of","default=noprint_wrappers=1:nokey=1",t]);const o=parseFloat(e.trim());if(isNaN(o)){throw new Error(`Could not parse duration from ffprobe output: "${e.trim()}"`)}return Math.round(o*1e3)}catch(t){if(t.code==="ENOENT"){throw new Error("ffprobe not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to get duration of ${e}: ${t.message}`)}}async function extractAudio(e,t){const o=r.resolve(e);const n=r.resolve(t);try{await runCommand("ffmpeg",["-i",o,"-vn","-acodec","pcm_s16le","-ar","24000","-ac","1","-y",n]);return n}catch(t){if(t.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to extract audio from ${e}: ${t.stderr||t.message}`)}}async function mergeAudioVideo(e,t,o){const n=r.resolve(e);const a=r.resolve(t);const i=r.resolve(o);try{await runCommand("ffmpeg",["-i",n,"-i",a,"-c:v","copy","-map","0:v:0","-map","1:a:0","-shortest","-y",i]);return i}catch(e){if(e.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to merge audio/video: ${e.stderr||e.message}`)}}async function mixWithBgm(e,t,o,n={}){const a=n.ducking??.2;const i=r.resolve(e);const s=r.resolve(t);const l=r.resolve(o);try{await runCommand("ffmpeg",["-i",i,"-i",s,"-filter_complex",`[1:a]volume=${a}[bgm_low];`+`[0:a][bgm_low]amix=inputs=2:duration=first:dropout_transition=2[out]`,"-map","[out]","-acodec","pcm_s16le","-ar","24000","-ac","1","-y",l]);return l}catch(e){if(e.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to mix audio with BGM: ${e.stderr||e.message}`)}}async function warnIfMissingFfmpeg(e,t){const o=await checkFfmpeg();if(o.available)return o;const n=r.join(e,".ffmpeg-hint-shown");try{if(a.existsSync(n))return o}catch{}const i={dub:"video merging (--video), BGM mixing (--bgm), speed adjustment (--speed-auto)",asr:"audio format conversion, video audio extraction"};const s=i[t]||"audio/video processing";console.log("\n[33m"+`[hint] ffmpeg not found — needed for ${s}.\n`+" Install: brew install ffmpeg (macOS) / sudo apt install ffmpeg (Linux)\n"+" Without ffmpeg, some features will be unavailable.[0m\n");try{a.mkdirSync(e,{recursive:true});a.writeFileSync(n,(new Date).toISOString(),"utf8")}catch{}return o}async function cutVideo(e,t,o,n){await runCommand("ffmpeg",["-i",r.resolve(e),"-ss",String(o),"-to",String(n),"-c","copy","-y",r.resolve(t)])}async function overlayText(e,t){a.copyFileSync(r.resolve(e),r.resolve(t))}async function generateTitleCard(e,t,o={}){const n=o.duration||3;const i=o.resolution||"1920x1080";if(o.sourceVideo&&a.existsSync(r.resolve(o.sourceVideo))){const t=e+".frame.jpg";try{await runCommand("ffmpeg",["-i",r.resolve(o.sourceVideo),"-vframes","1","-q:v","2","-y",t]);await runCommand("ffmpeg",["-loop","1","-i",t,"-f","lavfi","-i","anullsrc=r=24000:cl=mono","-t",String(n),"-vf","eq=brightness=-0.4:saturation=0.6,boxblur=8:2","-c:v","libx264","-pix_fmt","yuv420p","-preset","fast","-c:a","aac","-shortest","-y",r.resolve(e)]);return}catch{}finally{try{a.unlinkSync(t)}catch{}}}const s=o.bgColor||"0x0F172A";await runCommand("ffmpeg",["-f","lavfi","-i",`color=c=${s}:s=${i}:d=${n}`,"-f","lavfi","-i","anullsrc=r=24000:cl=mono","-c:v","libx264","-pix_fmt","yuv420p","-c:a","aac","-shortest","-y",r.resolve(e)])}async function replaceAudio(e,t,o){await runCommand("ffmpeg",["-i",r.resolve(e),"-i",r.resolve(t),"-c:v","copy","-map","0:v:0","-map","1:a:0","-shortest","-y",r.resolve(o)])}async function concatVideos(e,t){const o=r.dirname(t);const n=r.join(o,`concat-list-${Date.now()}.txt`);const i=e.map((e=>`file '${r.resolve(e)}'`)).join("\n");a.writeFileSync(n,i,"utf8");try{await runCommand("ffmpeg",["-f","concat","-safe","0","-i",n,"-c","copy","-y",r.resolve(t)])}finally{try{a.unlinkSync(n)}catch{}}}async function normalizeVideo(e,t,o={}){const n=["-i",r.resolve(e),"-c:v","libx264","-preset","fast","-crf","23","-c:a","aac","-ar","24000","-ac","1","-pix_fmt","yuv420p"];if(o.resolution){n.push("-vf",`scale=${o.resolution.replace("x",":")}:force_original_aspect_ratio=decrease,pad=${o.resolution.replace("x",":")}:(ow-iw)/2:(oh-ih)/2`)}n.push("-y",r.resolve(t));await runCommand("ffmpeg",n,{timeout:6e5})}function detectCjkFont(){const e=["/System/Library/Fonts/PingFang.ttc","/System/Library/Fonts/STHeiti Light.ttc","/System/Library/Fonts/Hiragino Sans GB.ttc","/usr/share/fonts/truetype/noto/NotoSansCJK-Regular.ttc","/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc","/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc","C:\\Windows\\Fonts\\msyh.ttc","C:\\Windows\\Fonts\\simhei.ttf"];for(const t of e){if(a.existsSync(t))return t}return null}async function convertAudioFormat(e,t){const o=r.resolve(e);const n=r.resolve(t);if(o===n){throw new Error("convertAudioFormat: input and output paths must differ")}try{await runCommand("ffmpeg",["-i",o,"-y",n]);return n}catch(e){if(e.code==="ENOENT"){throw new Error("ffmpeg not found. Please install ffmpeg: https://ffmpeg.org/download.html")}throw new Error(`Failed to convert audio format: ${e.stderr||e.message}`)}}e.exports={runCommand:runCommand,checkFfmpeg:checkFfmpeg,getAudioDuration:getAudioDuration,extractAudio:extractAudio,mergeAudioVideo:mergeAudioVideo,mixWithBgm:mixWithBgm,warnIfMissingFfmpeg:warnIfMissingFfmpeg,convertAudioFormat:convertAudioFormat,cutVideo:cutVideo,overlayText:overlayText,generateTitleCard:generateTitleCard,replaceAudio:replaceAudio,concatVideos:concatVideos,normalizeVideo:normalizeVideo,detectCjkFont:detectCjkFont}},2768:(e,t,o)=>{const n=o(8611);const r=o(5692);const a=o(6982);const{logger:i}=o(5984);class ApiError extends Error{constructor(e,t,o){super(e);this.name="ApiError";this.code=t;this.status=o}}function throwApiError(e,t,o){if(e===401){throw new ApiError(`Token expired or invalid. Run: voxflow login`,"token_expired",401)}if(e===402||e===429||t&&t.code==="quota_exceeded"){throw new ApiError(`Monthly quota exceeded. Resets in ~30 days. Check: voxflow status`,"quota_exceeded",e)}if(e>=500){const o=t?.code;const n=t?.message||t?.error;let r;if(n||o){const e=o?`[${o}] `:"";r=`: ${e}${n||"no message from server"}`}else{r=". Please try again later."}throw new ApiError(`Server error (${e})${r}`,"server_error",e)}const n=t?.message||t?.code||JSON.stringify(t);throw new ApiError(`${o} failed (${e}): ${n}`,"api_error",e)}function throwNetworkError(e,t){const o=e.code||"";if(o==="ECONNREFUSED"||o==="ENOTFOUND"||o==="ETIMEDOUT"){throw new ApiError(`Cannot reach API server at ${t}. Check your internet connection or try --api <url>`,"network_error",0)}throw e}function request(e,t,o){return new Promise(((s,l)=>{const c=new URL(e);const d=c.protocol==="https:"?r:n;const u=Number(t.timeoutMs)>0?Number(t.timeoutMs):6e4;if(!t.headers){t.headers={}}t.headers["X-Client-Source"]="cli";if(!t.headers["X-Request-Id"]){t.headers["X-Request-Id"]=a.randomUUID()}const p=Date.now();const A=(t.method||"GET").toUpperCase();i.debug({method:A,host:c.host,path:c.pathname},"http request");const f=d.request(c,t,(e=>{const t=[];e.on("data",(e=>t.push(e)));e.on("end",(()=>{const o=Buffer.concat(t).toString("utf8");const n=Date.now()-p;i.debug({method:A,path:c.pathname,status:e.statusCode,durationMs:n,responseBytes:o.length},"http response");try{s({status:e.statusCode,data:JSON.parse(o)})}catch{l(new Error(`Non-JSON response (${e.statusCode}): ${o.slice(0,200)}`))}}))}));f.on("error",(e=>{i.debug({method:A,path:c.pathname,err:e},"http error");l(e)}));f.setTimeout(u,(()=>{f.destroy();const e=Math.round(u/1e3);l(new Error(`Request timeout (${e}s)`))}));if(o)f.write(JSON.stringify(o));f.end()}))}e.exports={request:request,ApiError:ApiError,throwApiError:throwApiError,throwNetworkError:throwNetworkError}},967:(e,t,o)=>{const{request:n,throwApiError:r,throwNetworkError:a}=o(2768);async function generateImage({apiBase:e,token:t,prompt:o,ratio:i="portrait",quality:s="fast",index:l,total:c}){if(l!==undefined&&c!==undefined){process.stdout.write(` Image [${l+1}/${c}]...`)}let d,u;try{({status:d,data:u}=await n(`${e}/api/image/generate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:18e4},{prompt:o,ratio:i,quality:s}))}catch(t){if(l!==undefined)console.log(" FAIL");a(t,e)}if(d!==200||u.code!=="success"){if(l!==undefined)console.log(" FAIL");r(d,u,`Image generation scene ${(l??0)+1}`)}if(l!==undefined){const e=Math.round(u.image.length*.75/1024);console.log(` OK (~${e} KB)`)}return{imageDataUrl:u.image,quota:u.quota}}e.exports={generateImage:generateImage}},6669:(e,t,o)=>{const{INTENT_TTS_PARAMS:n,getIntentParams:r}=o(7171);e.exports={INTENT_TTS_PARAMS:n,getIntentParams:r}},929:(e,t,o)=>{const{request:n,throwApiError:r,throwNetworkError:a}=o(2768);async function chatCompletion({apiBase:e,token:t,messages:o,temperature:i=.3,maxTokens:s=2e3,model:l,modelPreset:c,timeoutMs:d}){const u={messages:o,temperature:i,max_tokens:s};if(c)u.modelPreset=c;else if(l)u.model=l;let p,A;try{({status:p,data:A}=await n(`${e}/api/llm/chat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeoutMs:Number(d)>0?Number(d):18e4},u))}catch(t){a(t,e)}if(p!==200||A.code!=="success"){r(p,A,"LLM chat")}return{content:A.content,usage:A.usage,quota:A.quota}}async function detectLanguage({apiBase:e,text:t}){let o,r;try{({status:o,data:r}=await n(`${e}/api/lang-detect/detect`,{method:"POST",headers:{"Content-Type":"application/json"}},{text:t.slice(0,200)}))}catch{return"auto"}if(o===200&&r.code==="success"){return r.language}return"auto"}e.exports={chatCompletion:chatCompletion,detectLanguage:detectLanguage}},5984:e=>{const t=Object.freeze({silent:0,error:1,warn:2,info:3,debug:4,trace:5});const o=Object.freeze({error:"ERR",warn:"WRN",info:"INF",debug:"DBG",trace:"TRC"});const n=Object.freeze({reset:"[0m",dim:"[2m",red:"[31m",yellow:"[33m",cyan:"[36m",magenta:"[35m",grey:"[90m"});const r=Object.freeze({error:n.red,warn:n.yellow,info:n.cyan,debug:n.magenta,trace:n.grey});function parseVerbosityFromArgv(e){let o=0;let n=null;const r=[];for(const a of e){if(a==="-v"||a==="--verbose"){o+=1;continue}if(a==="-vv"){o+=2;continue}if(a==="-vvv"){o+=3;continue}if(a.startsWith("--verbose=")){const e=a.slice("--verbose=".length).toLowerCase();if(e in t)n=e;continue}r.push(a)}const a=process.env.DEBUG||"";const i=a.split(",").some((e=>e.trim()==="voxflow"||e.trim().startsWith("voxflow:")||e.trim()==="*"));if(n)return{level:n,rest:r};if(o>=3)return{level:"trace",rest:r};if(o===2)return{level:"debug",rest:r};if(o===1)return{level:"info",rest:r};if(i)return{level:"debug",rest:r};return{level:"warn",rest:r}}let a=t.warn;let i=Boolean(process.stderr.isTTY)&&process.env.NO_COLOR!=="1";let s=Boolean(process.stderr.isTTY);function setLevel(e){if(!(e in t))return;a=t[e]}function getLevel(){for(const[e,o]of Object.entries(t)){if(o===a)return e}return"warn"}function formatRecord(e,t,a){const l={time:(new Date).toISOString(),level:e,msg:a||"",...t||{}};if(l.err instanceof Error){l.errorMessage=l.err.message;l.errorStack=l.err.stack;delete l.err}if(!s){return JSON.stringify(l)}const c=o[e]||e.toUpperCase();const d=i?r[e]||"":"";const u=i?n.reset:"";const p=i?n.dim:"";const A=i?n.grey:"";const f=l.time.slice(11,19);const{time:h,level:m,msg:g,...v}=l;const y=Object.entries(v).map((([e,t])=>`${A}${e}=${u}${formatValue(t)}`)).join(" ");return`${p}${f}${u} ${d}${c}${u} ${l.msg}${y?" "+y:""}`}function formatValue(e){if(e===null||e===undefined)return String(e);if(typeof e==="string")return e.length>200?JSON.stringify(e.slice(0,200)+"…"):e;if(typeof e==="number"||typeof e==="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function emit(e,o,n){if(t[e]>a)return;let r,i;if(typeof o==="string"){i=o;r=null}else{r=o;i=n}const s=formatRecord(e,r,i);process.stderr.write(s+"\n")}function createLogger(e){const t=e||{};const merge=e=>e?{...t,...e}:t;return{error:(e,t)=>emit("error",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),warn:(e,t)=>emit("warn",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),info:(e,t)=>emit("info",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),debug:(e,t)=>emit("debug",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),trace:(e,t)=>emit("trace",typeof e==="string"?e:merge(e),typeof e==="string"?e:t),with:e=>createLogger({...t,...e}),setLevel:setLevel,getLevel:getLevel}}const l=createLogger({});e.exports={logger:l,parseVerbosityFromArgv:parseVerbosityFromArgv,LEVELS:t,_formatRecord:formatRecord}},132:(e,t,o)=>{const{spawn:n}=o(5317);const r=o(6928);const a=o(857);const i=o(9896);async function checkRecAvailable(){return new Promise((e=>{const t=n("rec",["--version"],{stdio:"pipe"});let o="";t.stdout.on("data",(e=>{o+=e}));t.stderr.on("data",(e=>{o+=e}));t.on("error",(()=>{e({available:false,error:"rec (sox) not found. Please install sox:\n"+" macOS: brew install sox\n"+" Ubuntu: sudo apt install sox\n"+" Windows: https://sourceforge.net/projects/sox/"})}));t.on("close",(t=>{e({available:t===0||o.length>0})}))}))}function recordMic(e={}){const{outputDir:t=a.tmpdir(),maxSeconds:o=300,silenceThreshold:s=0}=e;const l=r.join(t,`mic-${Date.now()}.wav`);return new Promise(((e,t)=>{const r=["-r","16000","-c","1","-b","16","-e","signed-integer",l,"trim","0",String(o)];if(s>0){r.push("silence","1","0.1","1%","1",String(s),"1%")}const a=n("rec",r,{stdio:["pipe","pipe","pipe"]});let c="";a.stderr.on("data",(e=>{c+=e.toString()}));a.on("error",(e=>{if(e.code==="ENOENT"){t(new Error("rec (sox) not found. Please install sox:\n"+" macOS: brew install sox\n"+" Ubuntu: sudo apt install sox\n"+" Windows: https://sourceforge.net/projects/sox/"))}else{t(new Error(`Microphone recording failed: ${e.message}`))}}));let d="timeout";a.on("close",(o=>{if(!i.existsSync(l)){return t(new Error(`Recording failed — no output file created.\n${c.slice(0,500)}`))}const n=i.statSync(l);if(n.size<100){i.unlinkSync(l);return t(new Error("Recording produced an empty file. Check that your microphone is connected and accessible."))}const r=Math.round((n.size-44)/32);e({wavPath:l,durationMs:r,stopped:d})}));const stopRecording=()=>{d="user";a.kill("SIGTERM")};if(process.stdin.isTTY){process.stdin.setRawMode(true);process.stdin.resume();const onKey=e=>{if(e[0]===13||e[0]===10||e[0]===113){d="user";process.stdin.setRawMode(false);process.stdin.removeListener("data",onKey);process.stdin.pause();a.kill("SIGTERM")}if(e[0]===3){d="user";process.stdin.setRawMode(false);process.stdin.removeListener("data",onKey);process.stdin.pause();a.kill("SIGTERM")}};process.stdin.on("data",onKey);a.on("close",(()=>{try{process.stdin.removeListener("data",onKey);if(process.stdin.isTTY){process.stdin.setRawMode(false)}process.stdin.pause()}catch{}}))}a._stopRecording=stopRecording}))}e.exports={recordMic:recordMic,checkRecAvailable:checkRecAvailable}},5319:e=>{function startSpinner(e){const t=["|","/","-","\\"];let o=0;let n=e;process.stdout.write(e+" "+t[0]);const r=setInterval((()=>{o=(o+1)%t.length;process.stdout.write("\b"+t[o])}),120);return{stop(e){clearInterval(r);process.stdout.write("\b"+e+"\n")},update(e){process.stdout.write("\r"+" ".repeat(n.length+4)+"\r");n=e;process.stdout.write(e+" "+t[o])}}}e.exports={startSpinner:startSpinner}},8217:e=>{function parseTimestamp(e){const t=e.trim().match(/^(\d{1,2}):(\d{2}):(\d{2})[,.](\d{3})$/);if(!t){throw new Error(`Invalid SRT timestamp: "${e}"`)}const[,o,n,r,a]=t;return parseInt(o,10)*36e5+parseInt(n,10)*6e4+parseInt(r,10)*1e3+parseInt(a,10)}function formatTimestamp(e){if(e<0)e=0;const t=Math.floor(e/36e5);e%=36e5;const o=Math.floor(e/6e4);e%=6e4;const n=Math.floor(e/1e3);const r=e%1e3;return String(t).padStart(2,"0")+":"+String(o).padStart(2,"0")+":"+String(n).padStart(2,"0")+","+String(r).padStart(3,"0")}function parseSrt(e){if(!e||e.trim().length===0){return[]}const t=[];const o=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");const n=o.split(/\n\s*\n/).filter((e=>e.trim().length>0));for(const e of n){const o=e.trim().split("\n");if(o.length<2)continue;let n=0;let r;const a=o[0].trim();if(/^\d+$/.test(a)){r=parseInt(a,10);n=1}else{r=t.length+1}if(n>=o.length)continue;const i=o[n].trim();const s=i.match(/^(\d{1,2}:\d{2}:\d{2}[,.]\d{3})\s*-->\s*(\d{1,2}:\d{2}:\d{2}[,.]\d{3})/);if(!s)continue;const l=parseTimestamp(s[1]);const c=parseTimestamp(s[2]);n++;const d=o.slice(n).filter((e=>e.trim().length>0));if(d.length===0)continue;const u=d.join("\n");let p;let A=u;const f=u.match(/^\[Speaker:\s*([^\]]+)\]\s*/i);if(f){p=f[1].trim();A=u.slice(f[0].length)}if(A.trim().length===0)continue;t.push({id:r,startMs:l,endMs:c,text:A.trim(),...p?{speakerId:p}:{}})}t.sort(((e,t)=>e.startMs-t.startMs));return t}function formatSrt(e){return e.map(((e,t)=>{const o=e.id||t+1;const n=formatTimestamp(e.startMs);const r=formatTimestamp(e.endMs);const a=e.speakerId?`[Speaker: ${e.speakerId}] `:"";return`${o}\n${n} --\x3e ${r}\n${a}${e.text}`})).join("\n\n")+"\n"}function buildCaptionsFromFlash(e){const t=[];let o=1;for(const n of e){const e=n.sentence_list||[];for(const n of e){const e={id:o++,startMs:n.start_time||0,endMs:n.end_time||0,text:(n.text||"").trim()};if(n.speaker_id!==undefined&&n.speaker_id!==null){e.speakerId=`Speaker${n.speaker_id}`}if(e.text.length>0){t.push(e)}}}return t}function buildCaptionsFromSentence(e,t,o){if(!e||e.trim().length===0)return[];if(o&&o.length>0){return buildCaptionsFromWordList(o,e)}return[{id:1,startMs:0,endMs:Math.round(t*1e3),text:e.trim()}]}function buildCaptionsFromWordList(e,t){if(!e||e.length===0){return t?[{id:1,startMs:0,endMs:0,text:t}]:[]}const o=500;const n=5e3;const r=15e3;const a=/[.!?。!?…]+$/;const getWord=e=>e.word||e.Word||"";const getStart=e=>e.startTime??e.StartTime??0;const getEnd=e=>e.endTime??e.EndTime??0;const i=e.slice(0,10).map(getWord).join("");const s=(i.match(/[\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]/g)||[]).length;const l=s<i.length*.3;const c=l?" ":"";const d=[];let u=[];let p=getStart(e[0]);let A=p;function flushCaption(){if(u.length===0)return;const e=u.join(c).trim();if(e.length>0){d.push({id:d.length+1,startMs:p,endMs:A,text:e})}u=[]}for(let t=0;t<e.length;t++){const i=e[t];const s=getStart(i);const l=getEnd(i);const c=s-A;const d=s-p;if(c>o&&u.length>0){flushCaption();p=s}else if(u.length>0&&d>n&&a.test(u[u.length-1])){flushCaption();p=s}else if(u.length>0&&d>r){flushCaption();p=s}u.push(getWord(i));A=l||A}flushCaption();return d}function buildCaptionsFromFile(e,t){if(!e||e.trim().length===0)return[];if(/^\d+\s*\n\d{2}:\d{2}:\d{2}[,.]\d{3}\s*-->/.test(e.trim())){return parseSrt(e)}return[{id:1,startMs:0,endMs:Math.round(t*1e3),text:e.trim()}]}function formatPlainText(e,t={}){return e.map((e=>{const o=t.includeSpeakers&&e.speakerId?`[${e.speakerId}] `:"";return`${o}${e.text}`})).join("\n")+"\n"}function formatJson(e){return JSON.stringify(e,null,2)+"\n"}e.exports={parseSrt:parseSrt,formatSrt:formatSrt,parseTimestamp:parseTimestamp,formatTimestamp:formatTimestamp,buildCaptionsFromFlash:buildCaptionsFromFlash,buildCaptionsFromSentence:buildCaptionsFromSentence,buildCaptionsFromWordList:buildCaptionsFromWordList,buildCaptionsFromFile:buildCaptionsFromFile,formatPlainText:formatPlainText,formatJson:formatJson}},9167:(e,t,o)=>{const{buildWav:n}=o(7188);const r=24e3;const a=2;const i=r*a/1e3;function msToBytes(e){const t=Math.round(e*i);return t-t%a}function buildTimelinePcm(e,t){if(!e||e.length===0){return{pcm:Buffer.alloc(0),durationMs:0}}const o=Math.max(...e.map((e=>e.endMs)));const n=t||o;const r=msToBytes(n);const a=Buffer.alloc(r,0);for(const t of e){const e=msToBytes(t.startMs);const o=msToBytes(t.endMs)-e;const n=Math.min(t.audioBuffer.length,o,r-e);if(n>0&&e<r){t.audioBuffer.copy(a,e,0,n)}}return{pcm:a,durationMs:n}}function buildTimelineAudio(e,t){const{pcm:o,durationMs:r}=buildTimelinePcm(e,t);if(o.length===0){return{wav:Buffer.alloc(0),duration:0}}const{wav:a}=n([o],0);return{wav:a,duration:r/1e3}}e.exports={buildTimelinePcm:buildTimelinePcm,buildTimelineAudio:buildTimelineAudio,msToBytes:msToBytes,SAMPLE_RATE:r,BYTES_PER_SAMPLE:a,BYTES_PER_MS:i}},1428:(e,t,o)=>{const{request:n,throwApiError:r,throwNetworkError:a}=o(2768);async function synthesizeTTS(e){const{apiBase:t,token:o,text:i,voiceId:s,speed:l=1,volume:c=1,pitch:d,format:u="pcm",index:p,total:A,label:f}=e;const h=f?` ${f}`:"";process.stdout.write(` TTS [${p+1}/${A}]${h}...`);const m={text:i,voiceId:s,speed:l,volume:c,format:u};if(d!=null&&d!==0)m.pitch=d;let g,v;try{({status:g,data:v}=await n(`${t}/api/tts/synthesize`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},timeoutMs:18e4},m))}catch(e){console.log(" FAIL");a(e,t)}if(g!==200||v.code!=="success"){console.log(" FAIL");r(g,v,`TTS segment ${p+1}`)}const y=Buffer.from(v.audio,"base64");return{audio:y,quota:v.quota}}e.exports={synthesizeTTS:synthesizeTTS}},5764:(e,t,o)=>{"use strict";const n=o(9896);const r=o(857);const a=o(6928);const i=o(8611);const s=o(5692);const l=500*1024*1024;function pickClient(e){if(e.protocol==="https:")return s;if(e.protocol==="http:")return i;return null}function suggestExt(e,t){const o=a.extname(e.pathname);if(o&&o.length<=5)return o;if(t){const e=t.split(";")[0].trim().toLowerCase();if(e==="audio/mpeg")return".mp3";if(e==="audio/wav"||e==="audio/x-wav")return".wav";if(e==="audio/ogg")return".ogg";if(e==="audio/mp4"||e==="audio/m4a")return".m4a";if(e==="audio/flac")return".flac";if(e==="video/mp4")return".mp4"}return".bin"}async function downloadUrlToTempFile(e,t={}){const o=t.maxBytes??l;const i=t.onProgress||(()=>{});return new Promise(((t,s)=>{const l=new Set;const start=(e,c)=>{let d;try{d=new URL(e)}catch{s(new Error(`Invalid URL: ${e}`));return}const u=pickClient(d);if(!u){s(new Error(`Unsupported URL scheme: ${d.protocol} (use http or https)`));return}if(l.has(e)){s(new Error(`Redirect loop detected at ${e}`));return}l.add(e);const p=u.get(e,{headers:{"User-Agent":"voxflow-cli"}},(l=>{if(l.statusCode>=300&&l.statusCode<400&&l.headers.location){if(c<=0){l.resume();s(new Error("Too many redirects (>5)"));return}const t=new URL(l.headers.location,e).toString();l.resume();start(t,c-1);return}if(l.statusCode!==200){l.resume();s(new Error(`Download failed: HTTP ${l.statusCode} for ${e}`));return}const u=l.headers["content-length"]?parseInt(l.headers["content-length"],10):null;if(u!=null&&u>o){l.resume();s(new Error(`Remote file too large (${u} bytes, max ${o})`));return}const p=suggestExt(d,l.headers["content-type"]);const A=a.join(r.tmpdir(),`voxflow-asr-${Date.now()}-${Math.random().toString(36).slice(2,8)}${p}`);const f=n.createWriteStream(A);let h=0;let m=false;l.on("data",(e=>{if(m)return;h+=e.length;if(h>o){m=true;f.destroy();l.destroy();try{n.unlinkSync(A)}catch{}s(new Error(`Remote file exceeded ${o} bytes during download`));return}i(h,u)}));l.pipe(f);f.on("finish",(()=>{if(m)return;f.close((()=>t({filePath:A,size:h})))}));f.on("error",(e=>{try{n.unlinkSync(A)}catch{}s(e)}))}));p.on("error",s);p.setTimeout(6e4,(()=>{p.destroy(new Error(`Download timed out after 60s: ${e}`))}))};start(e,5)}))}e.exports={downloadUrlToTempFile:downloadUrlToTempFile,MAX_DOWNLOAD_BYTES:l}},4178:(e,t,o)=>{const n=o(9896);const r=o(6928);const{execFileSync:a}=o(5317);const i={"16k_zh":"Chinese","16k_en":"English","16k_zh_en":"Chinese","16k_ja":"Japanese","16k_ko":"Korean","16k_zh_dialect":"Chinese","8k_zh":"Chinese","8k_en":"English",zh:"Chinese",en:"English",ja:"Japanese",ko:"Korean",auto:"auto"};function checkWhisperAvailable(){try{const e=resolveWhisperModule();if(e){return{available:true}}return{available:false,error:"nodejs-whisper is not installed.\n"+"Install it with: npm install -g nodejs-whisper\n"+"Then download a model: npx nodejs-whisper download"}}catch{return{available:false,error:"nodejs-whisper is not installed.\n"+"Install it with: npm install -g nodejs-whisper\n"+"Then download a model: npx nodejs-whisper download"}}}function resolveWhisperModule(){try{return require.resolve("nodejs-whisper")}catch{}try{const e=a("npm",["root","-g"],{encoding:"utf8"}).trim();const t=r.join(e,"nodejs-whisper");if(n.existsSync(t)){return t}}catch{}return null}function loadWhisperModule(){const e=resolveWhisperModule();if(!e){throw new Error("nodejs-whisper is not installed.\n"+"Install: npm install -g nodejs-whisper\n"+"Then: npx nodejs-whisper download")}const t=require(e);return t.nodewhisper||t.default||t}async function transcribeLocal(e,t={}){const{model:o="base",lang:r="16k_zh"}=t;if(!n.existsSync(e)){throw new Error(`WAV file not found: ${e}`)}const a=loadWhisperModule();const s=i[r]||i["auto"]||"auto";const l=o;await a(e,{modelName:l,autoDownloadModelName:l,removeWavFileAfterTranscription:false,whisperOptions:{outputInJson:true,outputInSrt:false,outputInVtt:false,outputInTxt:false,wordTimestamps:true,splitOnWord:true,language:s==="auto"?undefined:s}});const c=e+".json";if(!n.existsSync(c)){const t=e.replace(/\.wav$/i,"");const o=[t+".json",e+".json"];const r=o.find((e=>n.existsSync(e)));if(!r){throw new Error("Whisper completed but no JSON output found.\n"+`Expected: ${c}\n`+"Ensure nodejs-whisper is correctly installed.")}}const d=n.readFileSync(c,"utf8");const u=JSON.parse(d);const p=u.transcription||u.segments||[];const A=parseWhisperOutput(p);cleanupWhisperFiles(e);return A}function parseWhisperOutput(e){if(!e||!Array.isArray(e))return[];let t=0;const o=[];for(const n of e){const e=(n.text||"").trim();if(!e)continue;t++;let r=0;let a=0;if(n.timestamps){r=parseTimestamp(n.timestamps.from);a=parseTimestamp(n.timestamps.to)}else if(n.offsets){r=n.offsets.from||0;a=n.offsets.to||0}else if(typeof n.start==="number"){r=Math.round(n.start*1e3);a=Math.round(n.end*1e3)}o.push({id:t,startMs:r,endMs:a,text:e})}return o}function parseTimestamp(e){if(!e||typeof e!=="string")return 0;const t=e.match(/^(\d+):(\d+):(\d+)\.(\d+)$/);if(!t)return 0;const o=parseInt(t[1],10);const n=parseInt(t[2],10);const r=parseInt(t[3],10);const a=parseInt(t[4].padEnd(3,"0").slice(0,3),10);return(o*3600+n*60+r)*1e3+a}function cleanupWhisperFiles(e){const t=[".json",".srt",".vtt",".txt",".lrc",".wts"];for(const o of t){const t=e+o;try{if(n.existsSync(t)){n.unlinkSync(t)}}catch{}}}e.exports={checkWhisperAvailable:checkWhisperAvailable,transcribeLocal:transcribeLocal,parseWhisperOutput:parseWhisperOutput,parseTimestamp:parseTimestamp,LANG_MAP:i}},47:(e,t)=>{function isArray(e){if(Array.isArray){return Array.isArray(e)}return objectToString(e)==="[object Array]"}t.isArray=isArray;function isBoolean(e){return typeof e==="boolean"}t.isBoolean=isBoolean;function isNull(e){return e===null}t.isNull=isNull;function isNullOrUndefined(e){return e==null}t.isNullOrUndefined=isNullOrUndefined;function isNumber(e){return typeof e==="number"}t.isNumber=isNumber;function isString(e){return typeof e==="string"}t.isString=isString;function isSymbol(e){return typeof e==="symbol"}t.isSymbol=isSymbol;function isUndefined(e){return e===void 0}t.isUndefined=isUndefined;function isRegExp(e){return objectToString(e)==="[object RegExp]"}t.isRegExp=isRegExp;function isObject(e){return typeof e==="object"&&e!==null}t.isObject=isObject;function isDate(e){return objectToString(e)==="[object Date]"}t.isDate=isDate;function isError(e){return objectToString(e)==="[object Error]"||e instanceof Error}t.isError=isError;function isFunction(e){return typeof e==="function"}t.isFunction=isFunction;function isPrimitive(e){return e===null||typeof e==="boolean"||typeof e==="number"||typeof e==="string"||typeof e==="symbol"||typeof e==="undefined"}t.isPrimitive=isPrimitive;t.isBuffer=Buffer.isBuffer;function objectToString(e){return Object.prototype.toString.call(e)}},4603:e=>{"use strict";var t=global.MutationObserver||global.WebKitMutationObserver;var o;if(process.browser){if(t){var n=0;var r=new t(nextTick);var a=global.document.createTextNode("");r.observe(a,{characterData:true});o=function(){a.data=n=++n%2}}else if(!global.setImmediate&&typeof global.MessageChannel!=="undefined"){var i=new global.MessageChannel;i.port1.onmessage=nextTick;o=function(){i.port2.postMessage(0)}}else if("document"in global&&"onreadystatechange"in global.document.createElement("script")){o=function(){var e=global.document.createElement("script");e.onreadystatechange=function(){nextTick();e.onreadystatechange=null;e.parentNode.removeChild(e);e=null};global.document.documentElement.appendChild(e)}}else{o=function(){setTimeout(nextTick,0)}}}else{o=function(){process.nextTick(nextTick)}}var s;var l=[];function nextTick(){s=true;var e,t;var o=l.length;while(o){t=l;l=[];e=-1;while(++e<o){t[e]()}o=l.length}s=false}e.exports=immediate;function immediate(e){if(l.push(e)===1&&!s){o()}}},4244:(e,t,o)=>{try{var n=o(9023);if(typeof n.inherits!=="function")throw"";e.exports=n.inherits}catch(t){e.exports=o(1103)}},1103:e=>{if(typeof Object.create==="function"){e.exports=function inherits(e,t){if(t){e.super_=t;e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}})}}}else{e.exports=function inherits(e,t){if(t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype;e.prototype=new TempCtor;e.prototype.constructor=e}}}},8941:(e,t,o)=>{"use strict";var n=o(7441);var r=o(5375);var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";t.encode=function(e){var t=[];var o,r,i,s,l,c,d;var u=0,p=e.length,A=p;var f=n.getTypeOf(e)!=="string";while(u<e.length){A=p-u;if(!f){o=e.charCodeAt(u++);r=u<p?e.charCodeAt(u++):0;i=u<p?e.charCodeAt(u++):0}else{o=e[u++];r=u<p?e[u++]:0;i=u<p?e[u++]:0}s=o>>2;l=(o&3)<<4|r>>4;c=A>1?(r&15)<<2|i>>6:64;d=A>2?i&63:64;t.push(a.charAt(s)+a.charAt(l)+a.charAt(c)+a.charAt(d))}return t.join("")};t.decode=function(e){var t,o,n;var i,s,l,c;var d=0,u=0;var p="data:";if(e.substr(0,p.length)===p){throw new Error("Invalid base64 input, it looks like a data url.")}e=e.replace(/[^A-Za-z0-9+/=]/g,"");var A=e.length*3/4;if(e.charAt(e.length-1)===a.charAt(64)){A--}if(e.charAt(e.length-2)===a.charAt(64)){A--}if(A%1!==0){throw new Error("Invalid base64 input, bad content length.")}var f;if(r.uint8array){f=new Uint8Array(A|0)}else{f=new Array(A|0)}while(d<e.length){i=a.indexOf(e.charAt(d++));s=a.indexOf(e.charAt(d++));l=a.indexOf(e.charAt(d++));c=a.indexOf(e.charAt(d++));t=i<<2|s>>4;o=(s&15)<<4|l>>2;n=(l&3)<<6|c;f[u++]=t;if(l!==64){f[u++]=o}if(c!==64){f[u++]=n}}return f}},8368:(e,t,o)=>{"use strict";var n=o(8301);var r=o(7623);var a=o(8074);var i=o(3819);function CompressedObject(e,t,o,n,r){this.compressedSize=e;this.uncompressedSize=t;this.crc32=o;this.compression=n;this.compressedContent=r}CompressedObject.prototype={getContentWorker:function(){var e=new r(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new i("data_length"));var t=this;e.on("end",(function(){if(this.streamInfo["data_length"]!==t.uncompressedSize){throw new Error("Bug : uncompressed data size mismatch")}}));return e},getCompressedWorker:function(){return new r(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}};CompressedObject.createWorkerFrom=function(e,t,o){return e.pipe(new a).pipe(new i("uncompressedSize")).pipe(t.compressWorker(o)).pipe(new i("compressedSize")).withStreamInfo("compression",t)};e.exports=CompressedObject},5605:(e,t,o)=>{"use strict";var n=o(270);t.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}};t.DEFLATE=o(3646)},1243:(e,t,o)=>{"use strict";var n=o(7441);function makeTable(){var e,t=[];for(var o=0;o<256;o++){e=o;for(var n=0;n<8;n++){e=e&1?3988292384^e>>>1:e>>>1}t[o]=e}return t}var r=makeTable();function crc32(e,t,o,n){var a=r,i=n+o;e=e^-1;for(var s=n;s<i;s++){e=e>>>8^a[(e^t[s])&255]}return e^-1}function crc32str(e,t,o,n){var a=r,i=n+o;e=e^-1;for(var s=n;s<i;s++){e=e>>>8^a[(e^t.charCodeAt(s))&255]}return e^-1}e.exports=function crc32wrapper(e,t){if(typeof e==="undefined"||!e.length){return 0}var o=n.getTypeOf(e)!=="string";if(o){return crc32(t|0,e,e.length,0)}else{return crc32str(t|0,e,e.length,0)}}},4380:(e,t)=>{"use strict";t.base64=false;t.binary=false;t.dir=false;t.createFolders=true;t.date=null;t.compression=null;t.compressionOptions=null;t.comment=null;t.unixPermissions=null;t.dosPermissions=null},8301:(e,t,o)=>{"use strict";var n=null;if(typeof Promise!=="undefined"){n=Promise}else{n=o(8924)}e.exports={Promise:n}},3646:(e,t,o)=>{"use strict";var n=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Uint32Array!=="undefined";var r=o(7375);var a=o(7441);var i=o(270);var s=n?"uint8array":"array";t.magic="\b\0";function FlateWorker(e,t){i.call(this,"FlateWorker/"+e);this._pako=null;this._pakoAction=e;this._pakoOptions=t;this.meta={}}a.inherits(FlateWorker,i);FlateWorker.prototype.processChunk=function(e){this.meta=e.meta;if(this._pako===null){this._createPako()}this._pako.push(a.transformTo(s,e.data),false)};FlateWorker.prototype.flush=function(){i.prototype.flush.call(this);if(this._pako===null){this._createPako()}this._pako.push([],true)};FlateWorker.prototype.cleanUp=function(){i.prototype.cleanUp.call(this);this._pako=null};FlateWorker.prototype._createPako=function(){this._pako=new r[this._pakoAction]({raw:true,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}};t.compressWorker=function(e){return new FlateWorker("Deflate",e)};t.uncompressWorker=function(){return new FlateWorker("Inflate",{})}},8993:(e,t,o)=>{"use strict";var n=o(7441);var r=o(270);var a=o(885);var i=o(1243);var s=o(2486);var decToHex=function(e,t){var o="",n;for(n=0;n<t;n++){o+=String.fromCharCode(e&255);e=e>>>8}return o};var generateUnixExternalFileAttr=function(e,t){var o=e;if(!e){o=t?16893:33204}return(o&65535)<<16};var generateDosExternalFileAttr=function(e){return(e||0)&63};var generateZipParts=function(e,t,o,r,l,c){var d=e["file"],u=e["compression"],p=c!==a.utf8encode,A=n.transformTo("string",c(d.name)),f=n.transformTo("string",a.utf8encode(d.name)),h=d.comment,m=n.transformTo("string",c(h)),g=n.transformTo("string",a.utf8encode(h)),v=f.length!==d.name.length,y=g.length!==h.length,b,w,x="",S="",k="",C=d.dir,T=d.date;var P={crc32:0,compressedSize:0,uncompressedSize:0};if(!t||o){P.crc32=e["crc32"];P.compressedSize=e["compressedSize"];P.uncompressedSize=e["uncompressedSize"]}var E=0;if(t){E|=8}if(!p&&(v||y)){E|=2048}var _=0;var L=0;if(C){_|=16}if(l==="UNIX"){L=798;_|=generateUnixExternalFileAttr(d.unixPermissions,C)}else{L=20;_|=generateDosExternalFileAttr(d.dosPermissions,C)}b=T.getUTCHours();b=b<<6;b=b|T.getUTCMinutes();b=b<<5;b=b|T.getUTCSeconds()/2;w=T.getUTCFullYear()-1980;w=w<<4;w=w|T.getUTCMonth()+1;w=w<<5;w=w|T.getUTCDate();if(v){S=decToHex(1,1)+decToHex(i(A),4)+f;x+="up"+decToHex(S.length,2)+S}if(y){k=decToHex(1,1)+decToHex(i(m),4)+g;x+="uc"+decToHex(k.length,2)+k}var I="";I+="\n\0";I+=decToHex(E,2);I+=u.magic;I+=decToHex(b,2);I+=decToHex(w,2);I+=decToHex(P.crc32,4);I+=decToHex(P.compressedSize,4);I+=decToHex(P.uncompressedSize,4);I+=decToHex(A.length,2);I+=decToHex(x.length,2);var B=s.LOCAL_FILE_HEADER+I+A+x;var D=s.CENTRAL_FILE_HEADER+decToHex(L,2)+I+decToHex(m.length,2)+"\0\0"+"\0\0"+decToHex(_,4)+decToHex(r,4)+A+x+m;return{fileRecord:B,dirRecord:D}};var generateCentralDirectoryEnd=function(e,t,o,r,a){var i="";var l=n.transformTo("string",a(r));i=s.CENTRAL_DIRECTORY_END+"\0\0"+"\0\0"+decToHex(e,2)+decToHex(e,2)+decToHex(t,4)+decToHex(o,4)+decToHex(l.length,2)+l;return i};var generateDataDescriptors=function(e){var t="";t=s.DATA_DESCRIPTOR+decToHex(e["crc32"],4)+decToHex(e["compressedSize"],4)+decToHex(e["uncompressedSize"],4);return t};function ZipFileWorker(e,t,o,n){r.call(this,"ZipFileWorker");this.bytesWritten=0;this.zipComment=t;this.zipPlatform=o;this.encodeFileName=n;this.streamFiles=e;this.accumulate=false;this.contentBuffer=[];this.dirRecords=[];this.currentSourceOffset=0;this.entriesCount=0;this.currentFile=null;this._sources=[]}n.inherits(ZipFileWorker,r);ZipFileWorker.prototype.push=function(e){var t=e.meta.percent||0;var o=this.entriesCount;var n=this._sources.length;if(this.accumulate){this.contentBuffer.push(e)}else{this.bytesWritten+=e.data.length;r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:o?(t+100*(o-n-1))/o:100}})}};ZipFileWorker.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten;this.currentFile=e["file"].name;var t=this.streamFiles&&!e["file"].dir;if(t){var o=generateZipParts(e,t,false,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:o.fileRecord,meta:{percent:0}})}else{this.accumulate=true}};ZipFileWorker.prototype.closedSource=function(e){this.accumulate=false;var t=this.streamFiles&&!e["file"].dir;var o=generateZipParts(e,t,true,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.dirRecords.push(o.dirRecord);if(t){this.push({data:generateDataDescriptors(e),meta:{percent:100}})}else{this.push({data:o.fileRecord,meta:{percent:0}});while(this.contentBuffer.length){this.push(this.contentBuffer.shift())}}this.currentFile=null};ZipFileWorker.prototype.flush=function(){var e=this.bytesWritten;for(var t=0;t<this.dirRecords.length;t++){this.push({data:this.dirRecords[t],meta:{percent:100}})}var o=this.bytesWritten-e;var n=generateCentralDirectoryEnd(this.dirRecords.length,o,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})};ZipFileWorker.prototype.prepareNextSource=function(){this.previous=this._sources.shift();this.openedSource(this.previous.streamInfo);if(this.isPaused){this.previous.pause()}else{this.previous.resume()}};ZipFileWorker.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;e.on("data",(function(e){t.processChunk(e)}));e.on("end",(function(){t.closedSource(t.previous.streamInfo);if(t._sources.length){t.prepareNextSource()}else{t.end()}}));e.on("error",(function(e){t.error(e)}));return this};ZipFileWorker.prototype.resume=function(){if(!r.prototype.resume.call(this)){return false}if(!this.previous&&this._sources.length){this.prepareNextSource();return true}if(!this.previous&&!this._sources.length&&!this.generatedError){this.end();return true}};ZipFileWorker.prototype.error=function(e){var t=this._sources;if(!r.prototype.error.call(this,e)){return false}for(var o=0;o<t.length;o++){try{t[o].error(e)}catch(e){}}return true};ZipFileWorker.prototype.lock=function(){r.prototype.lock.call(this);var e=this._sources;for(var t=0;t<e.length;t++){e[t].lock()}};e.exports=ZipFileWorker},7718:(e,t,o)=>{"use strict";var n=o(5605);var r=o(8993);var getCompression=function(e,t){var o=e||t;var r=n[o];if(!r){throw new Error(o+" is not a valid compression method !")}return r};t.generateWorker=function(e,t,o){var n=new r(t.streamFiles,o,t.platform,t.encodeFileName);var a=0;try{e.forEach((function(e,o){a++;var r=getCompression(o.options.compression,t.compression);var i=o.options.compressionOptions||t.compressionOptions||{};var s=o.dir,l=o.date;o._compressWorker(r,i).withStreamInfo("file",{name:e,dir:s,date:l,comment:o.comment||"",unixPermissions:o.unixPermissions,dosPermissions:o.dosPermissions}).pipe(n)}));n.entriesCount=a}catch(e){n.error(e)}return n}},3016:(e,t,o)=>{"use strict";function JSZip(){if(!(this instanceof JSZip)){return new JSZip}if(arguments.length){throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.")}this.files=Object.create(null);this.comment=null;this.root="";this.clone=function(){var e=new JSZip;for(var t in this){if(typeof this[t]!=="function"){e[t]=this[t]}}return e}}JSZip.prototype=o(1642);JSZip.prototype.loadAsync=o(7858);JSZip.support=o(5375);JSZip.defaults=o(4380);JSZip.version="3.10.1";JSZip.loadAsync=function(e,t){return(new JSZip).loadAsync(e,t)};JSZip.external=o(8301);e.exports=JSZip},7858:(e,t,o)=>{"use strict";var n=o(7441);var r=o(8301);var a=o(885);var i=o(2747);var s=o(8074);var l=o(1764);function checkEntryCRC32(e){return new r.Promise((function(t,o){var n=e.decompressed.getContentWorker().pipe(new s);n.on("error",(function(e){o(e)})).on("end",(function(){if(n.streamInfo.crc32!==e.decompressed.crc32){o(new Error("Corrupted zip : CRC32 mismatch"))}else{t()}})).resume()}))}e.exports=function(e,t){var o=this;t=n.extend(t||{},{base64:false,checkCRC32:false,optimizedBinaryString:false,createFolders:false,decodeFileName:a.utf8decode});if(l.isNode&&l.isStream(e)){return r.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file."))}return n.prepareContent("the loaded zip file",e,true,t.optimizedBinaryString,t.base64).then((function(e){var o=new i(t);o.load(e);return o})).then((function checkCRC32(e){var o=[r.Promise.resolve(e)];var n=e.files;if(t.checkCRC32){for(var a=0;a<n.length;a++){o.push(checkEntryCRC32(n[a]))}}return r.Promise.all(o)})).then((function addFiles(e){var r=e.shift();var a=r.files;for(var i=0;i<a.length;i++){var s=a[i];var l=s.fileNameStr;var c=n.resolve(s.fileNameStr);o.file(c,s.decompressed,{binary:true,optimizedBinaryString:true,date:s.date,dir:s.dir,comment:s.fileCommentStr.length?s.fileCommentStr:null,unixPermissions:s.unixPermissions,dosPermissions:s.dosPermissions,createFolders:t.createFolders});if(!s.dir){o.file(c).unsafeOriginalName=l}}if(r.zipComment.length){o.comment=r.zipComment}return o}))}},9500:(e,t,o)=>{"use strict";var n=o(7441);var r=o(270);function NodejsStreamInputAdapter(e,t){r.call(this,"Nodejs stream input adapter for "+e);this._upstreamEnded=false;this._bindStream(t)}n.inherits(NodejsStreamInputAdapter,r);NodejsStreamInputAdapter.prototype._bindStream=function(e){var t=this;this._stream=e;e.pause();e.on("data",(function(e){t.push({data:e,meta:{percent:0}})})).on("error",(function(e){if(t.isPaused){this.generatedError=e}else{t.error(e)}})).on("end",(function(){if(t.isPaused){t._upstreamEnded=true}else{t.end()}}))};NodejsStreamInputAdapter.prototype.pause=function(){if(!r.prototype.pause.call(this)){return false}this._stream.pause();return true};NodejsStreamInputAdapter.prototype.resume=function(){if(!r.prototype.resume.call(this)){return false}if(this._upstreamEnded){this.end()}else{this._stream.resume()}return true};e.exports=NodejsStreamInputAdapter},8911:(e,t,o)=>{"use strict";var n=o(5783).Readable;var r=o(7441);r.inherits(NodejsStreamOutputAdapter,n);function NodejsStreamOutputAdapter(e,t,o){n.call(this,t);this._helper=e;var r=this;e.on("data",(function(e,t){if(!r.push(e)){r._helper.pause()}if(o){o(t)}})).on("error",(function(e){r.emit("error",e)})).on("end",(function(){r.push(null)}))}NodejsStreamOutputAdapter.prototype._read=function(){this._helper.resume()};e.exports=NodejsStreamOutputAdapter},1764:e=>{"use strict";e.exports={isNode:typeof Buffer!=="undefined",newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from){return Buffer.from(e,t)}else{if(typeof e==="number"){throw new Error('The "data" argument must not be a number')}return new Buffer(e,t)}},allocBuffer:function(e){if(Buffer.alloc){return Buffer.alloc(e)}else{var t=new Buffer(e);t.fill(0);return t}},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&typeof e.on==="function"&&typeof e.pause==="function"&&typeof e.resume==="function"}}},1642:(e,t,o)=>{"use strict";var n=o(885);var r=o(7441);var a=o(270);var i=o(7933);var s=o(4380);var l=o(8368);var c=o(7648);var d=o(7718);var u=o(1764);var p=o(9500);var fileAdd=function(e,t,o){var n=r.getTypeOf(t),i;var d=r.extend(o||{},s);d.date=d.date||new Date;if(d.compression!==null){d.compression=d.compression.toUpperCase()}if(typeof d.unixPermissions==="string"){d.unixPermissions=parseInt(d.unixPermissions,8)}if(d.unixPermissions&&d.unixPermissions&16384){d.dir=true}if(d.dosPermissions&&d.dosPermissions&16){d.dir=true}if(d.dir){e=forceTrailingSlash(e)}if(d.createFolders&&(i=parentFolder(e))){folderAdd.call(this,i,true)}var A=n==="string"&&d.binary===false&&d.base64===false;if(!o||typeof o.binary==="undefined"){d.binary=!A}var f=t instanceof l&&t.uncompressedSize===0;if(f||d.dir||!t||t.length===0){d.base64=false;d.binary=true;t="";d.compression="STORE";n="string"}var h=null;if(t instanceof l||t instanceof a){h=t}else if(u.isNode&&u.isStream(t)){h=new p(e,t)}else{h=r.prepareContent(e,t,d.binary,d.optimizedBinaryString,d.base64)}var m=new c(e,h,d);this.files[e]=m};var parentFolder=function(e){if(e.slice(-1)==="/"){e=e.substring(0,e.length-1)}var t=e.lastIndexOf("/");return t>0?e.substring(0,t):""};var forceTrailingSlash=function(e){if(e.slice(-1)!=="/"){e+="/"}return e};var folderAdd=function(e,t){t=typeof t!=="undefined"?t:s.createFolders;e=forceTrailingSlash(e);if(!this.files[e]){fileAdd.call(this,e,null,{dir:true,createFolders:t})}return this.files[e]};function isRegExp(e){return Object.prototype.toString.call(e)==="[object RegExp]"}var A={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(e){var t,o,n;for(t in this.files){n=this.files[t];o=t.slice(this.root.length,t.length);if(o&&t.slice(0,this.root.length)===this.root){e(o,n)}}},filter:function(e){var t=[];this.forEach((function(o,n){if(e(o,n)){t.push(n)}}));return t},file:function(e,t,o){if(arguments.length===1){if(isRegExp(e)){var n=e;return this.filter((function(e,t){return!t.dir&&n.test(e)}))}else{var r=this.files[this.root+e];if(r&&!r.dir){return r}else{return null}}}else{e=this.root+e;fileAdd.call(this,e,t,o)}return this},folder:function(e){if(!e){return this}if(isRegExp(e)){return this.filter((function(t,o){return o.dir&&e.test(t)}))}var t=this.root+e;var o=folderAdd.call(this,t);var n=this.clone();n.root=o.name;return n},remove:function(e){e=this.root+e;var t=this.files[e];if(!t){if(e.slice(-1)!=="/"){e+="/"}t=this.files[e]}if(t&&!t.dir){delete this.files[e]}else{var o=this.filter((function(t,o){return o.name.slice(0,e.length)===e}));for(var n=0;n<o.length;n++){delete this.files[o[n].name]}}return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(e){var t,o={};try{o=r.extend(e||{},{streamFiles:false,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:n.utf8encode});o.type=o.type.toLowerCase();o.compression=o.compression.toUpperCase();if(o.type==="binarystring"){o.type="string"}if(!o.type){throw new Error("No output type specified.")}r.checkSupport(o.type);if(o.platform==="darwin"||o.platform==="freebsd"||o.platform==="linux"||o.platform==="sunos"){o.platform="UNIX"}if(o.platform==="win32"){o.platform="DOS"}var s=o.comment||this.comment||"";t=d.generateWorker(this,o,s)}catch(e){t=new a("error");t.error(e)}return new i(t,o.type||"string",o.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){e=e||{};if(!e.type){e.type="nodebuffer"}return this.generateInternalStream(e).toNodejsStream(t)}};e.exports=A},1832:(e,t,o)=>{"use strict";var n=o(5723);var r=o(7441);function ArrayReader(e){n.call(this,e);for(var t=0;t<this.data.length;t++){e[t]=e[t]&255}}r.inherits(ArrayReader,n);ArrayReader.prototype.byteAt=function(e){return this.data[this.zero+e]};ArrayReader.prototype.lastIndexOfSignature=function(e){var t=e.charCodeAt(0),o=e.charCodeAt(1),n=e.charCodeAt(2),r=e.charCodeAt(3);for(var a=this.length-4;a>=0;--a){if(this.data[a]===t&&this.data[a+1]===o&&this.data[a+2]===n&&this.data[a+3]===r){return a-this.zero}}return-1};ArrayReader.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),o=e.charCodeAt(1),n=e.charCodeAt(2),r=e.charCodeAt(3),a=this.readData(4);return t===a[0]&&o===a[1]&&n===a[2]&&r===a[3]};ArrayReader.prototype.readData=function(e){this.checkOffset(e);if(e===0){return[]}var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);this.index+=e;return t};e.exports=ArrayReader},5723:(e,t,o)=>{"use strict";var n=o(7441);function DataReader(e){this.data=e;this.length=e.length;this.index=0;this.zero=0}DataReader.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0){throw new Error("End of data reached (data length = "+this.length+", asked index = "+e+"). Corrupted zip ?")}},setIndex:function(e){this.checkIndex(e);this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t=0,o;this.checkOffset(e);for(o=this.index+e-1;o>=this.index;o--){t=(t<<8)+this.byteAt(o)}this.index+=e;return t},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC((e>>25&127)+1980,(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(e&31)<<1))}};e.exports=DataReader},6853:(e,t,o)=>{"use strict";var n=o(7846);var r=o(7441);function NodeBufferReader(e){n.call(this,e)}r.inherits(NodeBufferReader,n);NodeBufferReader.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);this.index+=e;return t};e.exports=NodeBufferReader},9930:(e,t,o)=>{"use strict";var n=o(5723);var r=o(7441);function StringReader(e){n.call(this,e)}r.inherits(StringReader,n);StringReader.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)};StringReader.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero};StringReader.prototype.readAndCheckSignature=function(e){var t=this.readData(4);return e===t};StringReader.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);this.index+=e;return t};e.exports=StringReader},7846:(e,t,o)=>{"use strict";var n=o(1832);var r=o(7441);function Uint8ArrayReader(e){n.call(this,e)}r.inherits(Uint8ArrayReader,n);Uint8ArrayReader.prototype.readData=function(e){this.checkOffset(e);if(e===0){return new Uint8Array(0)}var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);this.index+=e;return t};e.exports=Uint8ArrayReader},3136:(e,t,o)=>{"use strict";var n=o(7441);var r=o(5375);var a=o(1832);var i=o(9930);var s=o(6853);var l=o(7846);e.exports=function(e){var t=n.getTypeOf(e);n.checkSupport(t);if(t==="string"&&!r.uint8array){return new i(e)}if(t==="nodebuffer"){return new s(e)}if(r.uint8array){return new l(n.transformTo("uint8array",e))}return new a(n.transformTo("array",e))}},2486:(e,t)=>{"use strict";t.LOCAL_FILE_HEADER="PK";t.CENTRAL_FILE_HEADER="PK";t.CENTRAL_DIRECTORY_END="PK";t.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK";t.ZIP64_CENTRAL_DIRECTORY_END="PK";t.DATA_DESCRIPTOR="PK\b"},6308:(e,t,o)=>{"use strict";var n=o(270);var r=o(7441);function ConvertWorker(e){n.call(this,"ConvertWorker to "+e);this.destType=e}r.inherits(ConvertWorker,n);ConvertWorker.prototype.processChunk=function(e){this.push({data:r.transformTo(this.destType,e.data),meta:e.meta})};e.exports=ConvertWorker},8074:(e,t,o)=>{"use strict";var n=o(270);var r=o(1243);var a=o(7441);function Crc32Probe(){n.call(this,"Crc32Probe");this.withStreamInfo("crc32",0)}a.inherits(Crc32Probe,n);Crc32Probe.prototype.processChunk=function(e){this.streamInfo.crc32=r(e.data,this.streamInfo.crc32||0);this.push(e)};e.exports=Crc32Probe},3819:(e,t,o)=>{"use strict";var n=o(7441);var r=o(270);function DataLengthProbe(e){r.call(this,"DataLengthProbe for "+e);this.propName=e;this.withStreamInfo(e,0)}n.inherits(DataLengthProbe,r);DataLengthProbe.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}r.prototype.processChunk.call(this,e)};e.exports=DataLengthProbe},7623:(e,t,o)=>{"use strict";var n=o(7441);var r=o(270);var a=16*1024;function DataWorker(e){r.call(this,"DataWorker");var t=this;this.dataIsReady=false;this.index=0;this.max=0;this.data=null;this.type="";this._tickScheduled=false;e.then((function(e){t.dataIsReady=true;t.data=e;t.max=e&&e.length||0;t.type=n.getTypeOf(e);if(!t.isPaused){t._tickAndRepeat()}}),(function(e){t.error(e)}))}n.inherits(DataWorker,r);DataWorker.prototype.cleanUp=function(){r.prototype.cleanUp.call(this);this.data=null};DataWorker.prototype.resume=function(){if(!r.prototype.resume.call(this)){return false}if(!this._tickScheduled&&this.dataIsReady){this._tickScheduled=true;n.delay(this._tickAndRepeat,[],this)}return true};DataWorker.prototype._tickAndRepeat=function(){this._tickScheduled=false;if(this.isPaused||this.isFinished){return}this._tick();if(!this.isFinished){n.delay(this._tickAndRepeat,[],this);this._tickScheduled=true}};DataWorker.prototype._tick=function(){if(this.isPaused||this.isFinished){return false}var e=a;var t=null,o=Math.min(this.max,this.index+e);if(this.index>=this.max){return this.end()}else{switch(this.type){case"string":t=this.data.substring(this.index,o);break;case"uint8array":t=this.data.subarray(this.index,o);break;case"array":case"nodebuffer":t=this.data.slice(this.index,o);break}this.index=o;return this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})}};e.exports=DataWorker},270:e=>{"use strict";function GenericWorker(e){this.name=e||"default";this.streamInfo={};this.generatedError=null;this.extraStreamInfo={};this.isPaused=true;this.isFinished=false;this.isLocked=false;this._listeners={data:[],end:[],error:[]};this.previous=null}GenericWorker.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished){return false}this.flush();try{this.emit("end");this.cleanUp();this.isFinished=true}catch(e){this.emit("error",e)}return true},error:function(e){if(this.isFinished){return false}if(this.isPaused){this.generatedError=e}else{this.isFinished=true;this.emit("error",e);if(this.previous){this.previous.error(e)}this.cleanUp()}return true},on:function(e,t){this._listeners[e].push(t);return this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null;this._listeners=[]},emit:function(e,t){if(this._listeners[e]){for(var o=0;o<this._listeners[e].length;o++){this._listeners[e][o].call(this,t)}}},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked){throw new Error("The stream '"+this+"' has already been used.")}this.streamInfo=e.streamInfo;this.mergeStreamInfo();this.previous=e;var t=this;e.on("data",(function(e){t.processChunk(e)}));e.on("end",(function(){t.end()}));e.on("error",(function(e){t.error(e)}));return this},pause:function(){if(this.isPaused||this.isFinished){return false}this.isPaused=true;if(this.previous){this.previous.pause()}return true},resume:function(){if(!this.isPaused||this.isFinished){return false}this.isPaused=false;var e=false;if(this.generatedError){this.error(this.generatedError);e=true}if(this.previous){this.previous.resume()}return!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){this.extraStreamInfo[e]=t;this.mergeStreamInfo();return this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo){if(!Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)){continue}this.streamInfo[e]=this.extraStreamInfo[e]}},lock:function(){if(this.isLocked){throw new Error("The stream '"+this+"' has already been used.")}this.isLocked=true;if(this.previous){this.previous.lock()}},toString:function(){var e="Worker "+this.name;if(this.previous){return this.previous+" -> "+e}else{return e}}};e.exports=GenericWorker},7933:(e,t,o)=>{"use strict";var n=o(7441);var r=o(6308);var a=o(270);var i=o(8941);var s=o(5375);var l=o(8301);var c=null;if(s.nodestream){try{c=o(8911)}catch(e){}}function transformZipOutput(e,t,o){switch(e){case"blob":return n.newBlob(n.transformTo("arraybuffer",t),o);case"base64":return i.encode(t);default:return n.transformTo(e,t)}}function concat(e,t){var o,n=0,r=null,a=0;for(o=0;o<t.length;o++){a+=t[o].length}switch(e){case"string":return t.join("");case"array":return Array.prototype.concat.apply([],t);case"uint8array":r=new Uint8Array(a);for(o=0;o<t.length;o++){r.set(t[o],n);n+=t[o].length}return r;case"nodebuffer":return Buffer.concat(t);default:throw new Error("concat : unsupported type '"+e+"'")}}function accumulate(e,t){return new l.Promise((function(o,n){var r=[];var a=e._internalType,i=e._outputType,s=e._mimeType;e.on("data",(function(e,o){r.push(e);if(t){t(o)}})).on("error",(function(e){r=[];n(e)})).on("end",(function(){try{var e=transformZipOutput(i,concat(a,r),s);o(e)}catch(e){n(e)}r=[]})).resume()}))}function StreamHelper(e,t,o){var i=t;switch(t){case"blob":case"arraybuffer":i="uint8array";break;case"base64":i="string";break}try{this._internalType=i;this._outputType=t;this._mimeType=o;n.checkSupport(i);this._worker=e.pipe(new r(i));e.lock()}catch(e){this._worker=new a("error");this._worker.error(e)}}StreamHelper.prototype={accumulate:function(e){return accumulate(this,e)},on:function(e,t){var o=this;if(e==="data"){this._worker.on(e,(function(e){t.call(o,e.data,e.meta)}))}else{this._worker.on(e,(function(){n.delay(t,arguments,o)}))}return this},resume:function(){n.delay(this._worker.resume,[],this._worker);return this},pause:function(){this._worker.pause();return this},toNodejsStream:function(e){n.checkSupport("nodestream");if(this._outputType!=="nodebuffer"){throw new Error(this._outputType+" is not supported by this method")}return new c(this,{objectMode:this._outputType!=="nodebuffer"},e)}};e.exports=StreamHelper},5375:(e,t,o)=>{"use strict";t.base64=true;t.array=true;t.string=true;t.arraybuffer=typeof ArrayBuffer!=="undefined"&&typeof Uint8Array!=="undefined";t.nodebuffer=typeof Buffer!=="undefined";t.uint8array=typeof Uint8Array!=="undefined";if(typeof ArrayBuffer==="undefined"){t.blob=false}else{var n=new ArrayBuffer(0);try{t.blob=new Blob([n],{type:"application/zip"}).size===0}catch(e){try{var r=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder;var a=new r;a.append(n);t.blob=a.getBlob("application/zip").size===0}catch(e){t.blob=false}}}try{t.nodestream=!!o(5783).Readable}catch(e){t.nodestream=false}},885:(e,t,o)=>{"use strict";var n=o(7441);var r=o(5375);var a=o(1764);var i=o(270);var s=new Array(256);for(var l=0;l<256;l++){s[l]=l>=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1}s[254]=s[254]=1;var string2buf=function(e){var t,o,n,a,i,s=e.length,l=0;for(a=0;a<s;a++){o=e.charCodeAt(a);if((o&64512)===55296&&a+1<s){n=e.charCodeAt(a+1);if((n&64512)===56320){o=65536+(o-55296<<10)+(n-56320);a++}}l+=o<128?1:o<2048?2:o<65536?3:4}if(r.uint8array){t=new Uint8Array(l)}else{t=new Array(l)}for(i=0,a=0;i<l;a++){o=e.charCodeAt(a);if((o&64512)===55296&&a+1<s){n=e.charCodeAt(a+1);if((n&64512)===56320){o=65536+(o-55296<<10)+(n-56320);a++}}if(o<128){t[i++]=o}else if(o<2048){t[i++]=192|o>>>6;t[i++]=128|o&63}else if(o<65536){t[i++]=224|o>>>12;t[i++]=128|o>>>6&63;t[i++]=128|o&63}else{t[i++]=240|o>>>18;t[i++]=128|o>>>12&63;t[i++]=128|o>>>6&63;t[i++]=128|o&63}}return t};var utf8border=function(e,t){var o;t=t||e.length;if(t>e.length){t=e.length}o=t-1;while(o>=0&&(e[o]&192)===128){o--}if(o<0){return t}if(o===0){return t}return o+s[e[o]]>t?o:t};var buf2string=function(e){var t,o,r,a;var i=e.length;var l=new Array(i*2);for(o=0,t=0;t<i;){r=e[t++];if(r<128){l[o++]=r;continue}a=s[r];if(a>4){l[o++]=65533;t+=a-1;continue}r&=a===2?31:a===3?15:7;while(a>1&&t<i){r=r<<6|e[t++]&63;a--}if(a>1){l[o++]=65533;continue}if(r<65536){l[o++]=r}else{r-=65536;l[o++]=55296|r>>10&1023;l[o++]=56320|r&1023}}if(l.length!==o){if(l.subarray){l=l.subarray(0,o)}else{l.length=o}}return n.applyFromCharCode(l)};t.utf8encode=function utf8encode(e){if(r.nodebuffer){return a.newBufferFrom(e,"utf-8")}return string2buf(e)};t.utf8decode=function utf8decode(e){if(r.nodebuffer){return n.transformTo("nodebuffer",e).toString("utf-8")}e=n.transformTo(r.uint8array?"uint8array":"array",e);return buf2string(e)};function Utf8DecodeWorker(){i.call(this,"utf-8 decode");this.leftOver=null}n.inherits(Utf8DecodeWorker,i);Utf8DecodeWorker.prototype.processChunk=function(e){var o=n.transformTo(r.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(r.uint8array){var a=o;o=new Uint8Array(a.length+this.leftOver.length);o.set(this.leftOver,0);o.set(a,this.leftOver.length)}else{o=this.leftOver.concat(o)}this.leftOver=null}var i=utf8border(o);var s=o;if(i!==o.length){if(r.uint8array){s=o.subarray(0,i);this.leftOver=o.subarray(i,o.length)}else{s=o.slice(0,i);this.leftOver=o.slice(i,o.length)}}this.push({data:t.utf8decode(s),meta:e.meta})};Utf8DecodeWorker.prototype.flush=function(){if(this.leftOver&&this.leftOver.length){this.push({data:t.utf8decode(this.leftOver),meta:{}});this.leftOver=null}};t.Utf8DecodeWorker=Utf8DecodeWorker;function Utf8EncodeWorker(){i.call(this,"utf-8 encode")}n.inherits(Utf8EncodeWorker,i);Utf8EncodeWorker.prototype.processChunk=function(e){this.push({data:t.utf8encode(e.data),meta:e.meta})};t.Utf8EncodeWorker=Utf8EncodeWorker},7441:(e,t,o)=>{"use strict";var n=o(5375);var r=o(8941);var a=o(1764);var i=o(8301);o(5950);function string2binary(e){var t=null;if(n.uint8array){t=new Uint8Array(e.length)}else{t=new Array(e.length)}return stringToArrayLike(e,t)}t.newBlob=function(e,o){t.checkSupport("blob");try{return new Blob([e],{type:o})}catch(t){try{var n=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder;var r=new n;r.append(e);return r.getBlob(o)}catch(e){throw new Error("Bug : can't construct the Blob.")}}};function identity(e){return e}function stringToArrayLike(e,t){for(var o=0;o<e.length;++o){t[o]=e.charCodeAt(o)&255}return t}var s={stringifyByChunk:function(e,t,o){var n=[],r=0,a=e.length;if(a<=o){return String.fromCharCode.apply(null,e)}while(r<a){if(t==="array"||t==="nodebuffer"){n.push(String.fromCharCode.apply(null,e.slice(r,Math.min(r+o,a))))}else{n.push(String.fromCharCode.apply(null,e.subarray(r,Math.min(r+o,a))))}r+=o}return n.join("")},stringifyByChar:function(e){var t="";for(var o=0;o<e.length;o++){t+=String.fromCharCode(e[o])}return t},applyCanBeUsed:{uint8array:function(){try{return n.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch(e){return false}}(),nodebuffer:function(){try{return n.nodebuffer&&String.fromCharCode.apply(null,a.allocBuffer(1)).length===1}catch(e){return false}}()}};function arrayLikeToString(e){var o=65536,n=t.getTypeOf(e),r=true;if(n==="uint8array"){r=s.applyCanBeUsed.uint8array}else if(n==="nodebuffer"){r=s.applyCanBeUsed.nodebuffer}if(r){while(o>1){try{return s.stringifyByChunk(e,n,o)}catch(e){o=Math.floor(o/2)}}}return s.stringifyByChar(e)}t.applyFromCharCode=arrayLikeToString;function arrayLikeToArrayLike(e,t){for(var o=0;o<e.length;o++){t[o]=e[o]}return t}var l={};l["string"]={string:identity,array:function(e){return stringToArrayLike(e,new Array(e.length))},arraybuffer:function(e){return l["string"]["uint8array"](e).buffer},uint8array:function(e){return stringToArrayLike(e,new Uint8Array(e.length))},nodebuffer:function(e){return stringToArrayLike(e,a.allocBuffer(e.length))}};l["array"]={string:arrayLikeToString,array:identity,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return a.newBufferFrom(e)}};l["arraybuffer"]={string:function(e){return arrayLikeToString(new Uint8Array(e))},array:function(e){return arrayLikeToArrayLike(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:identity,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return a.newBufferFrom(new Uint8Array(e))}};l["uint8array"]={string:arrayLikeToString,array:function(e){return arrayLikeToArrayLike(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:identity,nodebuffer:function(e){return a.newBufferFrom(e)}};l["nodebuffer"]={string:arrayLikeToString,array:function(e){return arrayLikeToArrayLike(e,new Array(e.length))},arraybuffer:function(e){return l["nodebuffer"]["uint8array"](e).buffer},uint8array:function(e){return arrayLikeToArrayLike(e,new Uint8Array(e.length))},nodebuffer:identity};t.transformTo=function(e,o){if(!o){o=""}if(!e){return o}t.checkSupport(e);var n=t.getTypeOf(o);var r=l[n][e](o);return r};t.resolve=function(e){var t=e.split("/");var o=[];for(var n=0;n<t.length;n++){var r=t[n];if(r==="."||r===""&&n!==0&&n!==t.length-1){continue}else if(r===".."){o.pop()}else{o.push(r)}}return o.join("/")};t.getTypeOf=function(e){if(typeof e==="string"){return"string"}if(Object.prototype.toString.call(e)==="[object Array]"){return"array"}if(n.nodebuffer&&a.isBuffer(e)){return"nodebuffer"}if(n.uint8array&&e instanceof Uint8Array){return"uint8array"}if(n.arraybuffer&&e instanceof ArrayBuffer){return"arraybuffer"}};t.checkSupport=function(e){var t=n[e.toLowerCase()];if(!t){throw new Error(e+" is not supported by this platform")}};t.MAX_VALUE_16BITS=65535;t.MAX_VALUE_32BITS=-1;t.pretty=function(e){var t="",o,n;for(n=0;n<(e||"").length;n++){o=e.charCodeAt(n);t+="\\x"+(o<16?"0":"")+o.toString(16).toUpperCase()}return t};t.delay=function(e,t,o){setImmediate((function(){e.apply(o||null,t||[])}))};t.inherits=function(e,t){var Obj=function(){};Obj.prototype=t.prototype;e.prototype=new Obj};t.extend=function(){var e={},t,o;for(t=0;t<arguments.length;t++){for(o in arguments[t]){if(Object.prototype.hasOwnProperty.call(arguments[t],o)&&typeof e[o]==="undefined"){e[o]=arguments[t][o]}}}return e};t.prepareContent=function(e,o,a,s,l){var c=i.Promise.resolve(o).then((function(e){var t=n.blob&&(e instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(e))!==-1);if(t&&typeof FileReader!=="undefined"){return new i.Promise((function(t,o){var n=new FileReader;n.onload=function(e){t(e.target.result)};n.onerror=function(e){o(e.target.error)};n.readAsArrayBuffer(e)}))}else{return e}}));return c.then((function(o){var n=t.getTypeOf(o);if(!n){return i.Promise.reject(new Error("Can't read the data of '"+e+"'. Is it "+"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))}if(n==="arraybuffer"){o=t.transformTo("uint8array",o)}else if(n==="string"){if(l){o=r.decode(o)}else if(a){if(s!==true){o=string2binary(o)}}}return o}))}},2747:(e,t,o)=>{"use strict";var n=o(3136);var r=o(7441);var a=o(2486);var i=o(2695);var s=o(5375);function ZipEntries(e){this.files=[];this.loadOptions=e}ZipEntries.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature "+"("+r.pretty(t)+", expected "+r.pretty(e)+")")}},isSignature:function(e,t){var o=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4);var r=n===t;this.reader.setIndex(o);return r},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2);this.diskWithCentralDirStart=this.reader.readInt(2);this.centralDirRecordsOnThisDisk=this.reader.readInt(2);this.centralDirRecords=this.reader.readInt(2);this.centralDirSize=this.reader.readInt(4);this.centralDirOffset=this.reader.readInt(4);this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength);var t=s.uint8array?"uint8array":"array";var o=r.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(o)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8);this.reader.skip(4);this.diskNumber=this.reader.readInt(4);this.diskWithCentralDirStart=this.reader.readInt(4);this.centralDirRecordsOnThisDisk=this.reader.readInt(8);this.centralDirRecords=this.reader.readInt(8);this.centralDirSize=this.reader.readInt(8);this.centralDirOffset=this.reader.readInt(8);this.zip64ExtensibleData={};var e=this.zip64EndOfCentralSize-44,t=0,o,n,r;while(t<e){o=this.reader.readInt(2);n=this.reader.readInt(4);r=this.reader.readData(n);this.zip64ExtensibleData[o]={id:o,length:n,value:r}}},readBlockZip64EndOfCentralLocator:function(){this.diskWithZip64CentralDirStart=this.reader.readInt(4);this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8);this.disksCount=this.reader.readInt(4);if(this.disksCount>1){throw new Error("Multi-volumes zip are not supported")}},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++){t=this.files[e];this.reader.setIndex(t.localHeaderOffset);this.checkSignature(a.LOCAL_FILE_HEADER);t.readLocalPart(this.reader);t.handleUTF8();t.processAttributes()}},readCentralDir:function(){var e;this.reader.setIndex(this.centralDirOffset);while(this.reader.readAndCheckSignature(a.CENTRAL_FILE_HEADER)){e=new i({zip64:this.zip64},this.loadOptions);e.readCentralPart(this.reader);this.files.push(e)}if(this.centralDirRecords!==this.files.length){if(this.centralDirRecords!==0&&this.files.length===0){throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)}else{}}},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(a.CENTRAL_DIRECTORY_END);if(e<0){var t=!this.isSignature(0,a.LOCAL_FILE_HEADER);if(t){throw new Error("Can't find end of central directory : is this a zip file ? "+"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html")}else{throw new Error("Corrupted zip: can't find end of central directory")}}this.reader.setIndex(e);var o=e;this.checkSignature(a.CENTRAL_DIRECTORY_END);this.readBlockEndOfCentral();if(this.diskNumber===r.MAX_VALUE_16BITS||this.diskWithCentralDirStart===r.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===r.MAX_VALUE_16BITS||this.centralDirRecords===r.MAX_VALUE_16BITS||this.centralDirSize===r.MAX_VALUE_32BITS||this.centralDirOffset===r.MAX_VALUE_32BITS){this.zip64=true;e=this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR);if(e<0){throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator")}this.reader.setIndex(e);this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR);this.readBlockZip64EndOfCentralLocator();if(!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,a.ZIP64_CENTRAL_DIRECTORY_END)){this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_END);if(this.relativeOffsetEndOfZip64CentralDir<0){throw new Error("Corrupted zip: can't find the ZIP64 end of central directory")}}this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_END);this.readBlockZip64EndOfCentral()}var n=this.centralDirOffset+this.centralDirSize;if(this.zip64){n+=20;n+=12+this.zip64EndOfCentralSize}var i=o-n;if(i>0){if(this.isSignature(o,a.CENTRAL_FILE_HEADER)){}else{this.reader.zero=i}}else if(i<0){throw new Error("Corrupted zip: missing "+Math.abs(i)+" bytes.")}},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e);this.readEndOfCentral();this.readCentralDir();this.readLocalFiles()}};e.exports=ZipEntries},2695:(e,t,o)=>{"use strict";var n=o(3136);var r=o(7441);var a=o(8368);var i=o(1243);var s=o(885);var l=o(5605);var c=o(5375);var d=0;var u=3;var findCompression=function(e){for(var t in l){if(!Object.prototype.hasOwnProperty.call(l,t)){continue}if(l[t].magic===e){return l[t]}}return null};function ZipEntry(e,t){this.options=e;this.loadOptions=t}ZipEntry.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(e){var t,o;e.skip(22);this.fileNameLength=e.readInt(2);o=e.readInt(2);this.fileName=e.readData(this.fileNameLength);e.skip(o);if(this.compressedSize===-1||this.uncompressedSize===-1){throw new Error("Bug or corrupted zip : didn't get enough information from the central directory "+"(compressedSize === -1 || uncompressedSize === -1)")}t=findCompression(this.compressionMethod);if(t===null){throw new Error("Corrupted zip : compression "+r.pretty(this.compressionMethod)+" unknown (inner file : "+r.transformTo("string",this.fileName)+")")}this.decompressed=new a(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2);e.skip(2);this.bitFlag=e.readInt(2);this.compressionMethod=e.readString(2);this.date=e.readDate();this.crc32=e.readInt(4);this.compressedSize=e.readInt(4);this.uncompressedSize=e.readInt(4);var t=e.readInt(2);this.extraFieldsLength=e.readInt(2);this.fileCommentLength=e.readInt(2);this.diskNumberStart=e.readInt(2);this.internalFileAttributes=e.readInt(2);this.externalFileAttributes=e.readInt(4);this.localHeaderOffset=e.readInt(4);if(this.isEncrypted()){throw new Error("Encrypted zip are not supported")}e.skip(t);this.readExtraFields(e);this.parseZIP64ExtraField(e);this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null;this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=this.externalFileAttributes&16?true:false;if(e===d){this.dosPermissions=this.externalFileAttributes&63}if(e===u){this.unixPermissions=this.externalFileAttributes>>16&65535}if(!this.dir&&this.fileNameStr.slice(-1)==="/"){this.dir=true}},parseZIP64ExtraField:function(){if(!this.extraFields[1]){return}var e=n(this.extraFields[1].value);if(this.uncompressedSize===r.MAX_VALUE_32BITS){this.uncompressedSize=e.readInt(8)}if(this.compressedSize===r.MAX_VALUE_32BITS){this.compressedSize=e.readInt(8)}if(this.localHeaderOffset===r.MAX_VALUE_32BITS){this.localHeaderOffset=e.readInt(8)}if(this.diskNumberStart===r.MAX_VALUE_32BITS){this.diskNumberStart=e.readInt(4)}},readExtraFields:function(e){var t=e.index+this.extraFieldsLength,o,n,r;if(!this.extraFields){this.extraFields={}}while(e.index+4<t){o=e.readInt(2);n=e.readInt(2);r=e.readData(n);this.extraFields[o]={id:o,length:n,value:r}}e.setIndex(t)},handleUTF8:function(){var e=c.uint8array?"uint8array":"array";if(this.useUTF8()){this.fileNameStr=s.utf8decode(this.fileName);this.fileCommentStr=s.utf8decode(this.fileComment)}else{var t=this.findExtraFieldUnicodePath();if(t!==null){this.fileNameStr=t}else{var o=r.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(o)}var n=this.findExtraFieldUnicodeComment();if(n!==null){this.fileCommentStr=n}else{var a=r.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(a)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);if(t.readInt(1)!==1){return null}if(i(this.fileName)!==t.readInt(4)){return null}return s.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);if(t.readInt(1)!==1){return null}if(i(this.fileComment)!==t.readInt(4)){return null}return s.utf8decode(t.readData(e.length-5))}return null}};e.exports=ZipEntry},7648:(e,t,o)=>{"use strict";var n=o(7933);var r=o(7623);var a=o(885);var i=o(8368);var s=o(270);var ZipObject=function(e,t,o){this.name=e;this.dir=o.dir;this.date=o.date;this.comment=o.comment;this.unixPermissions=o.unixPermissions;this.dosPermissions=o.dosPermissions;this._data=t;this._dataBinary=o.binary;this.options={compression:o.compression,compressionOptions:o.compressionOptions}};ZipObject.prototype={internalStream:function(e){var t=null,o="string";try{if(!e){throw new Error("No output type specified.")}o=e.toLowerCase();var r=o==="string"||o==="text";if(o==="binarystring"||o==="text"){o="string"}t=this._decompressWorker();var i=!this._dataBinary;if(i&&!r){t=t.pipe(new a.Utf8EncodeWorker)}if(!i&&r){t=t.pipe(new a.Utf8DecodeWorker)}}catch(e){t=new s("error");t.error(e)}return new n(t,o,"")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||"nodebuffer").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof i&&this._data.compression.magic===e.magic){return this._data.getCompressedWorker()}else{var o=this._decompressWorker();if(!this._dataBinary){o=o.pipe(new a.Utf8EncodeWorker)}return i.createWorkerFrom(o,e,t)}},_decompressWorker:function(){if(this._data instanceof i){return this._data.getContentWorker()}else if(this._data instanceof s){return this._data}else{return new r(this._data)}}};var l=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"];var removedFn=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")};for(var c=0;c<l.length;c++){ZipObject.prototype[l[c]]=removedFn}e.exports=ZipObject},7029:e=>{var t={}.toString;e.exports=Array.isArray||function(e){return t.call(e)=="[object Array]"}},7499:(e,t,o)=>{"use strict";var n=o(6246);var r=Object.keys||function(e){var t=[];for(var o in e){t.push(o)}return t};e.exports=Duplex;var a=Object.create(o(47));a.inherits=o(4244);var i=o(953);var s=o(3305);a.inherits(Duplex,i);{var l=r(s.prototype);for(var c=0;c<l.length;c++){var d=l[c];if(!Duplex.prototype[d])Duplex.prototype[d]=s.prototype[d]}}function Duplex(e){if(!(this instanceof Duplex))return new Duplex(e);i.call(this,e);s.call(this,e);if(e&&e.readable===false)this.readable=false;if(e&&e.writable===false)this.writable=false;this.allowHalfOpen=true;if(e&&e.allowHalfOpen===false)this.allowHalfOpen=false;this.once("end",onend)}Object.defineProperty(Duplex.prototype,"writableHighWaterMark",{enumerable:false,get:function(){return this._writableState.highWaterMark}});function onend(){if(this.allowHalfOpen||this._writableState.ended)return;n.nextTick(onEndNT,this)}function onEndNT(e){e.end()}Object.defineProperty(Duplex.prototype,"destroyed",{get:function(){if(this._readableState===undefined||this._writableState===undefined){return false}return this._readableState.destroyed&&this._writableState.destroyed},set:function(e){if(this._readableState===undefined||this._writableState===undefined){return}this._readableState.destroyed=e;this._writableState.destroyed=e}});Duplex.prototype._destroy=function(e,t){this.push(null);this.end();n.nextTick(t,e)}},8567:(e,t,o)=>{"use strict";e.exports=PassThrough;var n=o(2557);var r=Object.create(o(47));r.inherits=o(4244);r.inherits(PassThrough,n);function PassThrough(e){if(!(this instanceof PassThrough))return new PassThrough(e);n.call(this,e)}PassThrough.prototype._transform=function(e,t,o){o(null,e)}},953:(e,t,o)=>{"use strict";var n=o(6246);e.exports=Readable;var r=o(7029);var a;Readable.ReadableState=ReadableState;var i=o(4434).EventEmitter;var EElistenerCount=function(e,t){return e.listeners(t).length};var s=o(4503);var l=o(1742).Buffer;var c=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(e){return l.from(e)}function _isUint8Array(e){return l.isBuffer(e)||e instanceof c}var d=Object.create(o(47));d.inherits=o(4244);var u=o(9023);var p=void 0;if(u&&u.debuglog){p=u.debuglog("stream")}else{p=function(){}}var A=o(4673);var f=o(9269);var h;d.inherits(Readable,s);var m=["error","close","destroy","pause","resume"];function prependListener(e,t,o){if(typeof e.prependListener==="function")return e.prependListener(t,o);if(!e._events||!e._events[t])e.on(t,o);else if(r(e._events[t]))e._events[t].unshift(o);else e._events[t]=[o,e._events[t]]}function ReadableState(e,t){a=a||o(7499);e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode;if(n)this.objectMode=this.objectMode||!!e.readableObjectMode;var r=e.highWaterMark;var i=e.readableHighWaterMark;var s=this.objectMode?16:16*1024;if(r||r===0)this.highWaterMark=r;else if(n&&(i||i===0))this.highWaterMark=i;else this.highWaterMark=s;this.highWaterMark=Math.floor(this.highWaterMark);this.buffer=new A;this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.resumeScheduled=false;this.destroyed=false;this.defaultEncoding=e.defaultEncoding||"utf8";this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(e.encoding){if(!h)h=o(6374).I;this.decoder=new h(e.encoding);this.encoding=e.encoding}}function Readable(e){a=a||o(7499);if(!(this instanceof Readable))return new Readable(e);this._readableState=new ReadableState(e,this);this.readable=true;if(e){if(typeof e.read==="function")this._read=e.read;if(typeof e.destroy==="function")this._destroy=e.destroy}s.call(this)}Object.defineProperty(Readable.prototype,"destroyed",{get:function(){if(this._readableState===undefined){return false}return this._readableState.destroyed},set:function(e){if(!this._readableState){return}this._readableState.destroyed=e}});Readable.prototype.destroy=f.destroy;Readable.prototype._undestroy=f.undestroy;Readable.prototype._destroy=function(e,t){this.push(null);t(e)};Readable.prototype.push=function(e,t){var o=this._readableState;var n;if(!o.objectMode){if(typeof e==="string"){t=t||o.defaultEncoding;if(t!==o.encoding){e=l.from(e,t);t=""}n=true}}else{n=true}return readableAddChunk(this,e,t,false,n)};Readable.prototype.unshift=function(e){return readableAddChunk(this,e,null,true,false)};function readableAddChunk(e,t,o,n,r){var a=e._readableState;if(t===null){a.reading=false;onEofChunk(e,a)}else{var i;if(!r)i=chunkInvalid(a,t);if(i){e.emit("error",i)}else if(a.objectMode||t&&t.length>0){if(typeof t!=="string"&&!a.objectMode&&Object.getPrototypeOf(t)!==l.prototype){t=_uint8ArrayToBuffer(t)}if(n){if(a.endEmitted)e.emit("error",new Error("stream.unshift() after end event"));else addChunk(e,a,t,true)}else if(a.ended){e.emit("error",new Error("stream.push() after EOF"))}else{a.reading=false;if(a.decoder&&!o){t=a.decoder.write(t);if(a.objectMode||t.length!==0)addChunk(e,a,t,false);else maybeReadMore(e,a)}else{addChunk(e,a,t,false)}}}else if(!n){a.reading=false}}return needMoreData(a)}function addChunk(e,t,o,n){if(t.flowing&&t.length===0&&!t.sync){e.emit("data",o);e.read(0)}else{t.length+=t.objectMode?1:o.length;if(n)t.buffer.unshift(o);else t.buffer.push(o);if(t.needReadable)emitReadable(e)}maybeReadMore(e,t)}function chunkInvalid(e,t){var o;if(!_isUint8Array(t)&&typeof t!=="string"&&t!==undefined&&!e.objectMode){o=new TypeError("Invalid non-string/buffer chunk")}return o}function needMoreData(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||e.length===0)}Readable.prototype.isPaused=function(){return this._readableState.flowing===false};Readable.prototype.setEncoding=function(e){if(!h)h=o(6374).I;this._readableState.decoder=new h(e);this._readableState.encoding=e;return this};var g=8388608;function computeNewHighWaterMark(e){if(e>=g){e=g}else{e--;e|=e>>>1;e|=e>>>2;e|=e>>>4;e|=e>>>8;e|=e>>>16;e++}return e}function howMuchToRead(e,t){if(e<=0||t.length===0&&t.ended)return 0;if(t.objectMode)return 1;if(e!==e){if(t.flowing&&t.length)return t.buffer.head.data.length;else return t.length}if(e>t.highWaterMark)t.highWaterMark=computeNewHighWaterMark(e);if(e<=t.length)return e;if(!t.ended){t.needReadable=true;return 0}return t.length}Readable.prototype.read=function(e){p("read",e);e=parseInt(e,10);var t=this._readableState;var o=e;if(e!==0)t.emittedReadable=false;if(e===0&&t.needReadable&&(t.length>=t.highWaterMark||t.ended)){p("read: emitReadable",t.length,t.ended);if(t.length===0&&t.ended)endReadable(this);else emitReadable(this);return null}e=howMuchToRead(e,t);if(e===0&&t.ended){if(t.length===0)endReadable(this);return null}var n=t.needReadable;p("need readable",n);if(t.length===0||t.length-e<t.highWaterMark){n=true;p("length less than watermark",n)}if(t.ended||t.reading){n=false;p("reading or ended",n)}else if(n){p("do read");t.reading=true;t.sync=true;if(t.length===0)t.needReadable=true;this._read(t.highWaterMark);t.sync=false;if(!t.reading)e=howMuchToRead(o,t)}var r;if(e>0)r=fromList(e,t);else r=null;if(r===null){t.needReadable=true;e=0}else{t.length-=e}if(t.length===0){if(!t.ended)t.needReadable=true;if(o!==e&&t.ended)endReadable(this)}if(r!==null)this.emit("data",r);return r};function onEofChunk(e,t){if(t.ended)return;if(t.decoder){var o=t.decoder.end();if(o&&o.length){t.buffer.push(o);t.length+=t.objectMode?1:o.length}}t.ended=true;emitReadable(e)}function emitReadable(e){var t=e._readableState;t.needReadable=false;if(!t.emittedReadable){p("emitReadable",t.flowing);t.emittedReadable=true;if(t.sync)n.nextTick(emitReadable_,e);else emitReadable_(e)}}function emitReadable_(e){p("emit readable");e.emit("readable");flow(e)}function maybeReadMore(e,t){if(!t.readingMore){t.readingMore=true;n.nextTick(maybeReadMore_,e,t)}}function maybeReadMore_(e,t){var o=t.length;while(!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark){p("maybeReadMore read 0");e.read(0);if(o===t.length)break;else o=t.length}t.readingMore=false}Readable.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))};Readable.prototype.pipe=function(e,t){var o=this;var r=this._readableState;switch(r.pipesCount){case 0:r.pipes=e;break;case 1:r.pipes=[r.pipes,e];break;default:r.pipes.push(e);break}r.pipesCount+=1;p("pipe count=%d opts=%j",r.pipesCount,t);var a=(!t||t.end!==false)&&e!==process.stdout&&e!==process.stderr;var i=a?onend:unpipe;if(r.endEmitted)n.nextTick(i);else o.once("end",i);e.on("unpipe",onunpipe);function onunpipe(e,t){p("onunpipe");if(e===o){if(t&&t.hasUnpiped===false){t.hasUnpiped=true;cleanup()}}}function onend(){p("onend");e.end()}var s=pipeOnDrain(o);e.on("drain",s);var l=false;function cleanup(){p("cleanup");e.removeListener("close",onclose);e.removeListener("finish",onfinish);e.removeListener("drain",s);e.removeListener("error",onerror);e.removeListener("unpipe",onunpipe);o.removeListener("end",onend);o.removeListener("end",unpipe);o.removeListener("data",ondata);l=true;if(r.awaitDrain&&(!e._writableState||e._writableState.needDrain))s()}var c=false;o.on("data",ondata);function ondata(t){p("ondata");c=false;var n=e.write(t);if(false===n&&!c){if((r.pipesCount===1&&r.pipes===e||r.pipesCount>1&&indexOf(r.pipes,e)!==-1)&&!l){p("false write response, pause",r.awaitDrain);r.awaitDrain++;c=true}o.pause()}}function onerror(t){p("onerror",t);unpipe();e.removeListener("error",onerror);if(EElistenerCount(e,"error")===0)e.emit("error",t)}prependListener(e,"error",onerror);function onclose(){e.removeListener("finish",onfinish);unpipe()}e.once("close",onclose);function onfinish(){p("onfinish");e.removeListener("close",onclose);unpipe()}e.once("finish",onfinish);function unpipe(){p("unpipe");o.unpipe(e)}e.emit("pipe",o);if(!r.flowing){p("pipe resume");o.resume()}return e};function pipeOnDrain(e){return function(){var t=e._readableState;p("pipeOnDrain",t.awaitDrain);if(t.awaitDrain)t.awaitDrain--;if(t.awaitDrain===0&&EElistenerCount(e,"data")){t.flowing=true;flow(e)}}}Readable.prototype.unpipe=function(e){var t=this._readableState;var o={hasUnpiped:false};if(t.pipesCount===0)return this;if(t.pipesCount===1){if(e&&e!==t.pipes)return this;if(!e)e=t.pipes;t.pipes=null;t.pipesCount=0;t.flowing=false;if(e)e.emit("unpipe",this,o);return this}if(!e){var n=t.pipes;var r=t.pipesCount;t.pipes=null;t.pipesCount=0;t.flowing=false;for(var a=0;a<r;a++){n[a].emit("unpipe",this,{hasUnpiped:false})}return this}var i=indexOf(t.pipes,e);if(i===-1)return this;t.pipes.splice(i,1);t.pipesCount-=1;if(t.pipesCount===1)t.pipes=t.pipes[0];e.emit("unpipe",this,o);return this};Readable.prototype.on=function(e,t){var o=s.prototype.on.call(this,e,t);if(e==="data"){if(this._readableState.flowing!==false)this.resume()}else if(e==="readable"){var r=this._readableState;if(!r.endEmitted&&!r.readableListening){r.readableListening=r.needReadable=true;r.emittedReadable=false;if(!r.reading){n.nextTick(nReadingNextTick,this)}else if(r.length){emitReadable(this)}}}return o};Readable.prototype.addListener=Readable.prototype.on;function nReadingNextTick(e){p("readable nexttick read 0");e.read(0)}Readable.prototype.resume=function(){var e=this._readableState;if(!e.flowing){p("resume");e.flowing=true;resume(this,e)}return this};function resume(e,t){if(!t.resumeScheduled){t.resumeScheduled=true;n.nextTick(resume_,e,t)}}function resume_(e,t){if(!t.reading){p("resume read 0");e.read(0)}t.resumeScheduled=false;t.awaitDrain=0;e.emit("resume");flow(e);if(t.flowing&&!t.reading)e.read(0)}Readable.prototype.pause=function(){p("call pause flowing=%j",this._readableState.flowing);if(false!==this._readableState.flowing){p("pause");this._readableState.flowing=false;this.emit("pause")}return this};function flow(e){var t=e._readableState;p("flow",t.flowing);while(t.flowing&&e.read()!==null){}}Readable.prototype.wrap=function(e){var t=this;var o=this._readableState;var n=false;e.on("end",(function(){p("wrapped end");if(o.decoder&&!o.ended){var e=o.decoder.end();if(e&&e.length)t.push(e)}t.push(null)}));e.on("data",(function(r){p("wrapped data");if(o.decoder)r=o.decoder.write(r);if(o.objectMode&&(r===null||r===undefined))return;else if(!o.objectMode&&(!r||!r.length))return;var a=t.push(r);if(!a){n=true;e.pause()}}));for(var r in e){if(this[r]===undefined&&typeof e[r]==="function"){this[r]=function(t){return function(){return e[t].apply(e,arguments)}}(r)}}for(var a=0;a<m.length;a++){e.on(m[a],this.emit.bind(this,m[a]))}this._read=function(t){p("wrapped _read",t);if(n){n=false;e.resume()}};return this};Object.defineProperty(Readable.prototype,"readableHighWaterMark",{enumerable:false,get:function(){return this._readableState.highWaterMark}});Readable._fromList=fromList;function fromList(e,t){if(t.length===0)return null;var o;if(t.objectMode)o=t.buffer.shift();else if(!e||e>=t.length){if(t.decoder)o=t.buffer.join("");else if(t.buffer.length===1)o=t.buffer.head.data;else o=t.buffer.concat(t.length);t.buffer.clear()}else{o=fromListPartial(e,t.buffer,t.decoder)}return o}function fromListPartial(e,t,o){var n;if(e<t.head.data.length){n=t.head.data.slice(0,e);t.head.data=t.head.data.slice(e)}else if(e===t.head.data.length){n=t.shift()}else{n=o?copyFromBufferString(e,t):copyFromBuffer(e,t)}return n}function copyFromBufferString(e,t){var o=t.head;var n=1;var r=o.data;e-=r.length;while(o=o.next){var a=o.data;var i=e>a.length?a.length:e;if(i===a.length)r+=a;else r+=a.slice(0,e);e-=i;if(e===0){if(i===a.length){++n;if(o.next)t.head=o.next;else t.head=t.tail=null}else{t.head=o;o.data=a.slice(i)}break}++n}t.length-=n;return r}function copyFromBuffer(e,t){var o=l.allocUnsafe(e);var n=t.head;var r=1;n.data.copy(o);e-=n.data.length;while(n=n.next){var a=n.data;var i=e>a.length?a.length:e;a.copy(o,o.length-e,0,i);e-=i;if(e===0){if(i===a.length){++r;if(n.next)t.head=n.next;else t.head=t.tail=null}else{t.head=n;n.data=a.slice(i)}break}++r}t.length-=r;return o}function endReadable(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');if(!t.endEmitted){t.ended=true;n.nextTick(endReadableNT,t,e)}}function endReadableNT(e,t){if(!e.endEmitted&&e.length===0){e.endEmitted=true;t.readable=false;t.emit("end")}}function indexOf(e,t){for(var o=0,n=e.length;o<n;o++){if(e[o]===t)return o}return-1}},2557:(e,t,o)=>{"use strict";e.exports=Transform;var n=o(7499);var r=Object.create(o(47));r.inherits=o(4244);r.inherits(Transform,n);function afterTransform(e,t){var o=this._transformState;o.transforming=false;var n=o.writecb;if(!n){return this.emit("error",new Error("write callback called multiple times"))}o.writechunk=null;o.writecb=null;if(t!=null)this.push(t);n(e);var r=this._readableState;r.reading=false;if(r.needReadable||r.length<r.highWaterMark){this._read(r.highWaterMark)}}function Transform(e){if(!(this instanceof Transform))return new Transform(e);n.call(this,e);this._transformState={afterTransform:afterTransform.bind(this),needTransform:false,transforming:false,writecb:null,writechunk:null,writeencoding:null};this._readableState.needReadable=true;this._readableState.sync=false;if(e){if(typeof e.transform==="function")this._transform=e.transform;if(typeof e.flush==="function")this._flush=e.flush}this.on("prefinish",prefinish)}function prefinish(){var e=this;if(typeof this._flush==="function"){this._flush((function(t,o){done(e,t,o)}))}else{done(this,null,null)}}Transform.prototype.push=function(e,t){this._transformState.needTransform=false;return n.prototype.push.call(this,e,t)};Transform.prototype._transform=function(e,t,o){throw new Error("_transform() is not implemented")};Transform.prototype._write=function(e,t,o){var n=this._transformState;n.writecb=o;n.writechunk=e;n.writeencoding=t;if(!n.transforming){var r=this._readableState;if(n.needTransform||r.needReadable||r.length<r.highWaterMark)this._read(r.highWaterMark)}};Transform.prototype._read=function(e){var t=this._transformState;if(t.writechunk!==null&&t.writecb&&!t.transforming){t.transforming=true;this._transform(t.writechunk,t.writeencoding,t.afterTransform)}else{t.needTransform=true}};Transform.prototype._destroy=function(e,t){var o=this;n.prototype._destroy.call(this,e,(function(e){t(e);o.emit("close")}))};function done(e,t,o){if(t)return e.emit("error",t);if(o!=null)e.push(o);if(e._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(e._transformState.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}},3305:(e,t,o)=>{"use strict";var n=o(6246);e.exports=Writable;function WriteReq(e,t,o){this.chunk=e;this.encoding=t;this.callback=o;this.next=null}function CorkedRequest(e){var t=this;this.next=null;this.entry=null;this.finish=function(){onCorkedFinish(t,e)}}var r=!process.browser&&["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:n.nextTick;var a;Writable.WritableState=WritableState;var i=Object.create(o(47));i.inherits=o(4244);var s={deprecate:o(8430)};var l=o(4503);var c=o(1742).Buffer;var d=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(e){return c.from(e)}function _isUint8Array(e){return c.isBuffer(e)||e instanceof d}var u=o(9269);i.inherits(Writable,l);function nop(){}function WritableState(e,t){a=a||o(7499);e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode;if(n)this.objectMode=this.objectMode||!!e.writableObjectMode;var r=e.highWaterMark;var i=e.writableHighWaterMark;var s=this.objectMode?16:16*1024;if(r||r===0)this.highWaterMark=r;else if(n&&(i||i===0))this.highWaterMark=i;else this.highWaterMark=s;this.highWaterMark=Math.floor(this.highWaterMark);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;var l=e.decodeStrings===false;this.decodeStrings=!l;this.defaultEncoding=e.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(e){onwrite(t,e)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function getBuffer(){var e=this.bufferedRequest;var t=[];while(e){t.push(e);e=e.next}return t};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.","DEP0003")})}catch(e){}})();var p;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function"){p=Function.prototype[Symbol.hasInstance];Object.defineProperty(Writable,Symbol.hasInstance,{value:function(e){if(p.call(this,e))return true;if(this!==Writable)return false;return e&&e._writableState instanceof WritableState}})}else{p=function(e){return e instanceof this}}function Writable(e){a=a||o(7499);if(!p.call(Writable,this)&&!(this instanceof a)){return new Writable(e)}this._writableState=new WritableState(e,this);this.writable=true;if(e){if(typeof e.write==="function")this._write=e.write;if(typeof e.writev==="function")this._writev=e.writev;if(typeof e.destroy==="function")this._destroy=e.destroy;if(typeof e.final==="function")this._final=e.final}l.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function writeAfterEnd(e,t){var o=new Error("write after end");e.emit("error",o);n.nextTick(t,o)}function validChunk(e,t,o,r){var a=true;var i=false;if(o===null){i=new TypeError("May not write null values to stream")}else if(typeof o!=="string"&&o!==undefined&&!t.objectMode){i=new TypeError("Invalid non-string/buffer chunk")}if(i){e.emit("error",i);n.nextTick(r,i);a=false}return a}Writable.prototype.write=function(e,t,o){var n=this._writableState;var r=false;var a=!n.objectMode&&_isUint8Array(e);if(a&&!c.isBuffer(e)){e=_uint8ArrayToBuffer(e)}if(typeof t==="function"){o=t;t=null}if(a)t="buffer";else if(!t)t=n.defaultEncoding;if(typeof o!=="function")o=nop;if(n.ended)writeAfterEnd(this,o);else if(a||validChunk(this,n,e,o)){n.pendingcb++;r=writeOrBuffer(this,n,a,e,t,o)}return r};Writable.prototype.cork=function(){var e=this._writableState;e.corked++};Writable.prototype.uncork=function(){var e=this._writableState;if(e.corked){e.corked--;if(!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest)clearBuffer(this,e)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if(typeof e==="string")e=e.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);this._writableState.defaultEncoding=e;return this};function decodeChunk(e,t,o){if(!e.objectMode&&e.decodeStrings!==false&&typeof t==="string"){t=c.from(t,o)}return t}Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:false,get:function(){return this._writableState.highWaterMark}});function writeOrBuffer(e,t,o,n,r,a){if(!o){var i=decodeChunk(t,n,r);if(n!==i){o=true;r="buffer";n=i}}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length<t.highWaterMark;if(!l)t.needDrain=true;if(t.writing||t.corked){var c=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:r,isBuf:o,callback:a,next:null};if(c){c.next=t.lastBufferedRequest}else{t.bufferedRequest=t.lastBufferedRequest}t.bufferedRequestCount+=1}else{doWrite(e,t,false,s,n,r,a)}return l}function doWrite(e,t,o,n,r,a,i){t.writelen=n;t.writecb=i;t.writing=true;t.sync=true;if(o)e._writev(r,t.onwrite);else e._write(r,a,t.onwrite);t.sync=false}function onwriteError(e,t,o,r,a){--t.pendingcb;if(o){n.nextTick(a,r);n.nextTick(finishMaybe,e,t);e._writableState.errorEmitted=true;e.emit("error",r)}else{a(r);e._writableState.errorEmitted=true;e.emit("error",r);finishMaybe(e,t)}}function onwriteStateUpdate(e){e.writing=false;e.writecb=null;e.length-=e.writelen;e.writelen=0}function onwrite(e,t){var o=e._writableState;var n=o.sync;var a=o.writecb;onwriteStateUpdate(o);if(t)onwriteError(e,o,n,t,a);else{var i=needFinish(o);if(!i&&!o.corked&&!o.bufferProcessing&&o.bufferedRequest){clearBuffer(e,o)}if(n){r(afterWrite,e,o,i,a)}else{afterWrite(e,o,i,a)}}}function afterWrite(e,t,o,n){if(!o)onwriteDrain(e,t);t.pendingcb--;n();finishMaybe(e,t)}function onwriteDrain(e,t){if(t.length===0&&t.needDrain){t.needDrain=false;e.emit("drain")}}function clearBuffer(e,t){t.bufferProcessing=true;var o=t.bufferedRequest;if(e._writev&&o&&o.next){var n=t.bufferedRequestCount;var r=new Array(n);var a=t.corkedRequestsFree;a.entry=o;var i=0;var s=true;while(o){r[i]=o;if(!o.isBuf)s=false;o=o.next;i+=1}r.allBuffers=s;doWrite(e,t,true,t.length,r,"",a.finish);t.pendingcb++;t.lastBufferedRequest=null;if(a.next){t.corkedRequestsFree=a.next;a.next=null}else{t.corkedRequestsFree=new CorkedRequest(t)}t.bufferedRequestCount=0}else{while(o){var l=o.chunk;var c=o.encoding;var d=o.callback;var u=t.objectMode?1:l.length;doWrite(e,t,false,u,l,c,d);o=o.next;t.bufferedRequestCount--;if(t.writing){break}}if(o===null)t.lastBufferedRequest=null}t.bufferedRequest=o;t.bufferProcessing=false}Writable.prototype._write=function(e,t,o){o(new Error("_write() is not implemented"))};Writable.prototype._writev=null;Writable.prototype.end=function(e,t,o){var n=this._writableState;if(typeof e==="function"){o=e;e=null;t=null}else if(typeof t==="function"){o=t;t=null}if(e!==null&&e!==undefined)this.write(e,t);if(n.corked){n.corked=1;this.uncork()}if(!n.ending)endWritable(this,n,o)};function needFinish(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function callFinal(e,t){e._final((function(o){t.pendingcb--;if(o){e.emit("error",o)}t.prefinished=true;e.emit("prefinish");finishMaybe(e,t)}))}function prefinish(e,t){if(!t.prefinished&&!t.finalCalled){if(typeof e._final==="function"){t.pendingcb++;t.finalCalled=true;n.nextTick(callFinal,e,t)}else{t.prefinished=true;e.emit("prefinish")}}}function finishMaybe(e,t){var o=needFinish(t);if(o){prefinish(e,t);if(t.pendingcb===0){t.finished=true;e.emit("finish")}}return o}function endWritable(e,t,o){t.ending=true;finishMaybe(e,t);if(o){if(t.finished)n.nextTick(o);else e.once("finish",o)}t.ended=true;e.writable=false}function onCorkedFinish(e,t,o){var n=e.entry;e.entry=null;while(n){var r=n.callback;t.pendingcb--;r(o);n=n.next}t.corkedRequestsFree.next=e}Object.defineProperty(Writable.prototype,"destroyed",{get:function(){if(this._writableState===undefined){return false}return this._writableState.destroyed},set:function(e){if(!this._writableState){return}this._writableState.destroyed=e}});Writable.prototype.destroy=u.destroy;Writable.prototype._undestroy=u.undestroy;Writable.prototype._destroy=function(e,t){this.end();t(e)}},4673:(e,t,o)=>{"use strict";function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var n=o(1742).Buffer;var r=o(9023);function copyBuffer(e,t,o){e.copy(t,o)}e.exports=function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0}BufferList.prototype.push=function push(e){var t={data:e,next:null};if(this.length>0)this.tail.next=t;else this.head=t;this.tail=t;++this.length};BufferList.prototype.unshift=function unshift(e){var t={data:e,next:this.head};if(this.length===0)this.tail=t;this.head=t;++this.length};BufferList.prototype.shift=function shift(){if(this.length===0)return;var e=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return e};BufferList.prototype.clear=function clear(){this.head=this.tail=null;this.length=0};BufferList.prototype.join=function join(e){if(this.length===0)return"";var t=this.head;var o=""+t.data;while(t=t.next){o+=e+t.data}return o};BufferList.prototype.concat=function concat(e){if(this.length===0)return n.alloc(0);var t=n.allocUnsafe(e>>>0);var o=this.head;var r=0;while(o){copyBuffer(o.data,t,r);r+=o.data.length;o=o.next}return t};return BufferList}();if(r&&r.inspect&&r.inspect.custom){e.exports.prototype[r.inspect.custom]=function(){var e=r.inspect({length:this.length});return this.constructor.name+" "+e}}},9269:(e,t,o)=>{"use strict";var n=o(6246);function destroy(e,t){var o=this;var r=this._readableState&&this._readableState.destroyed;var a=this._writableState&&this._writableState.destroyed;if(r||a){if(t){t(e)}else if(e){if(!this._writableState){n.nextTick(emitErrorNT,this,e)}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;n.nextTick(emitErrorNT,this,e)}}return this}if(this._readableState){this._readableState.destroyed=true}if(this._writableState){this._writableState.destroyed=true}this._destroy(e||null,(function(e){if(!t&&e){if(!o._writableState){n.nextTick(emitErrorNT,o,e)}else if(!o._writableState.errorEmitted){o._writableState.errorEmitted=true;n.nextTick(emitErrorNT,o,e)}}else if(t){t(e)}}));return this}function undestroy(){if(this._readableState){this._readableState.destroyed=false;this._readableState.reading=false;this._readableState.ended=false;this._readableState.endEmitted=false}if(this._writableState){this._writableState.destroyed=false;this._writableState.ended=false;this._writableState.ending=false;this._writableState.finalCalled=false;this._writableState.prefinished=false;this._writableState.finished=false;this._writableState.errorEmitted=false}}function emitErrorNT(e,t){e.emit("error",t)}e.exports={destroy:destroy,undestroy:undestroy}},4503:(e,t,o)=>{e.exports=o(2203)},5783:(e,t,o)=>{var n=o(2203);if(process.env.READABLE_STREAM==="disable"&&n){e.exports=n;t=e.exports=n.Readable;t.Readable=n.Readable;t.Writable=n.Writable;t.Duplex=n.Duplex;t.Transform=n.Transform;t.PassThrough=n.PassThrough;t.Stream=n}else{t=e.exports=o(953);t.Stream=n||t;t.Readable=t;t.Writable=o(3305);t.Duplex=o(7499);t.Transform=o(2557);t.PassThrough=o(8567)}},1742:(e,t,o)=>{var n=o(181);var r=n.Buffer;function copyProps(e,t){for(var o in e){t[o]=e[o]}}if(r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow){e.exports=n}else{copyProps(n,t);t.Buffer=SafeBuffer}function SafeBuffer(e,t,o){return r(e,t,o)}copyProps(r,SafeBuffer);SafeBuffer.from=function(e,t,o){if(typeof e==="number"){throw new TypeError("Argument must not be a number")}return r(e,t,o)};SafeBuffer.alloc=function(e,t,o){if(typeof e!=="number"){throw new TypeError("Argument must be a number")}var n=r(e);if(t!==undefined){if(typeof o==="string"){n.fill(t,o)}else{n.fill(t)}}else{n.fill(0)}return n};SafeBuffer.allocUnsafe=function(e){if(typeof e!=="number"){throw new TypeError("Argument must be a number")}return r(e)};SafeBuffer.allocUnsafeSlow=function(e){if(typeof e!=="number"){throw new TypeError("Argument must be a number")}return n.SlowBuffer(e)}},6374:(e,t,o)=>{"use strict";var n=o(1742).Buffer;var r=n.isEncoding||function(e){e=""+e;switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return true;default:return false}};function _normalizeEncoding(e){if(!e)return"utf8";var t;while(true){switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase();t=true}}}function normalizeEncoding(e){var t=_normalizeEncoding(e);if(typeof t!=="string"&&(n.isEncoding===r||!r(e)))throw new Error("Unknown encoding: "+e);return t||e}t.I=StringDecoder;function StringDecoder(e){this.encoding=normalizeEncoding(e);var t;switch(this.encoding){case"utf16le":this.text=utf16Text;this.end=utf16End;t=4;break;case"utf8":this.fillLast=utf8FillLast;t=4;break;case"base64":this.text=base64Text;this.end=base64End;t=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=n.allocUnsafe(t)}StringDecoder.prototype.write=function(e){if(e.length===0)return"";var t;var o;if(this.lastNeed){t=this.fillLast(e);if(t===undefined)return"";o=this.lastNeed;this.lastNeed=0}else{o=0}if(o<e.length)return t?t+this.text(e,o):this.text(e,o);return t||""};StringDecoder.prototype.end=utf8End;StringDecoder.prototype.text=utf8Text;StringDecoder.prototype.fillLast=function(e){if(this.lastNeed<=e.length){e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length);this.lastNeed-=e.length};function utf8CheckByte(e){if(e<=127)return 0;else if(e>>5===6)return 2;else if(e>>4===14)return 3;else if(e>>3===30)return 4;return e>>6===2?-1:-2}function utf8CheckIncomplete(e,t,o){var n=t.length-1;if(n<o)return 0;var r=utf8CheckByte(t[n]);if(r>=0){if(r>0)e.lastNeed=r-1;return r}if(--n<o||r===-2)return 0;r=utf8CheckByte(t[n]);if(r>=0){if(r>0)e.lastNeed=r-2;return r}if(--n<o||r===-2)return 0;r=utf8CheckByte(t[n]);if(r>=0){if(r>0){if(r===2)r=0;else e.lastNeed=r-3}return r}return 0}function utf8CheckExtraBytes(e,t,o){if((t[0]&192)!==128){e.lastNeed=0;return"�"}if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128){e.lastNeed=1;return"�"}if(e.lastNeed>2&&t.length>2){if((t[2]&192)!==128){e.lastNeed=2;return"�"}}}}function utf8FillLast(e){var t=this.lastTotal-this.lastNeed;var o=utf8CheckExtraBytes(this,e,t);if(o!==undefined)return o;if(this.lastNeed<=e.length){e.copy(this.lastChar,t,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,t,0,e.length);this.lastNeed-=e.length}function utf8Text(e,t){var o=utf8CheckIncomplete(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=o;var n=e.length-(o-this.lastNeed);e.copy(this.lastChar,0,n);return e.toString("utf8",t,n)}function utf8End(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed)return t+"�";return t}function utf16Text(e,t){if((e.length-t)%2===0){var o=e.toString("utf16le",t);if(o){var n=o.charCodeAt(o.length-1);if(n>=55296&&n<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1];return o.slice(0,-1)}}return o}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=e[e.length-1];return e.toString("utf16le",t,e.length-1)}function utf16End(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var o=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,o)}return t}function base64Text(e,t){var o=(e.length-t)%3;if(o===0)return e.toString("base64",t);this.lastNeed=3-o;this.lastTotal=3;if(o===1){this.lastChar[0]=e[e.length-1]}else{this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1]}return e.toString("base64",t,e.length-o)}function base64End(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed)return t+this.lastChar.toString("base64",0,3-this.lastNeed);return t}function simpleWrite(e){return e.toString(this.encoding)}function simpleEnd(e){return e&&e.length?this.write(e):""}},8924:(e,t,o)=>{"use strict";var n=o(4603);function INTERNAL(){}var r={};var a=["REJECTED"];var i=["FULFILLED"];var s=["PENDING"];if(!process.browser){var l=["UNHANDLED"]}e.exports=Promise;function Promise(e){if(typeof e!=="function"){throw new TypeError("resolver must be a function")}this.state=s;this.queue=[];this.outcome=void 0;if(!process.browser){this.handled=l}if(e!==INTERNAL){safelyResolveThenable(this,e)}}Promise.prototype.finally=function(e){if(typeof e!=="function"){return this}var t=this.constructor;return this.then(resolve,reject);function resolve(o){function yes(){return o}return t.resolve(e()).then(yes)}function reject(o){function no(){throw o}return t.resolve(e()).then(no)}};Promise.prototype.catch=function(e){return this.then(null,e)};Promise.prototype.then=function(e,t){if(typeof e!=="function"&&this.state===i||typeof t!=="function"&&this.state===a){return this}var o=new this.constructor(INTERNAL);if(!process.browser){if(this.handled===l){this.handled=null}}if(this.state!==s){var n=this.state===i?e:t;unwrap(o,n,this.outcome)}else{this.queue.push(new QueueItem(o,e,t))}return o};function QueueItem(e,t,o){this.promise=e;if(typeof t==="function"){this.onFulfilled=t;this.callFulfilled=this.otherCallFulfilled}if(typeof o==="function"){this.onRejected=o;this.callRejected=this.otherCallRejected}}QueueItem.prototype.callFulfilled=function(e){r.resolve(this.promise,e)};QueueItem.prototype.otherCallFulfilled=function(e){unwrap(this.promise,this.onFulfilled,e)};QueueItem.prototype.callRejected=function(e){r.reject(this.promise,e)};QueueItem.prototype.otherCallRejected=function(e){unwrap(this.promise,this.onRejected,e)};function unwrap(e,t,o){n((function(){var n;try{n=t(o)}catch(t){return r.reject(e,t)}if(n===e){r.reject(e,new TypeError("Cannot resolve promise with itself"))}else{r.resolve(e,n)}}))}r.resolve=function(e,t){var o=tryCatch(getThen,t);if(o.status==="error"){return r.reject(e,o.value)}var n=o.value;if(n){safelyResolveThenable(e,n)}else{e.state=i;e.outcome=t;var a=-1;var s=e.queue.length;while(++a<s){e.queue[a].callFulfilled(t)}}return e};r.reject=function(e,t){e.state=a;e.outcome=t;if(!process.browser){if(e.handled===l){n((function(){if(e.handled===l){process.emit("unhandledRejection",t,e)}}))}}var o=-1;var r=e.queue.length;while(++o<r){e.queue[o].callRejected(t)}return e};function getThen(e){var t=e&&e.then;if(e&&(typeof e==="object"||typeof e==="function")&&typeof t==="function"){return function appyThen(){t.apply(e,arguments)}}}function safelyResolveThenable(e,t){var o=false;function onError(t){if(o){return}o=true;r.reject(e,t)}function onSuccess(t){if(o){return}o=true;r.resolve(e,t)}function tryToUnwrap(){t(onSuccess,onError)}var n=tryCatch(tryToUnwrap);if(n.status==="error"){onError(n.value)}}function tryCatch(e,t){var o={};try{o.value=e(t);o.status="success"}catch(e){o.status="error";o.value=e}return o}Promise.resolve=resolve;function resolve(e){if(e instanceof this){return e}return r.resolve(new this(INTERNAL),e)}Promise.reject=reject;function reject(e){var t=new this(INTERNAL);return r.reject(t,e)}Promise.all=all;function all(e){var t=this;if(Object.prototype.toString.call(e)!=="[object Array]"){return this.reject(new TypeError("must be an array"))}var o=e.length;var n=false;if(!o){return this.resolve([])}var a=new Array(o);var i=0;var s=-1;var l=new this(INTERNAL);while(++s<o){allResolver(e[s],s)}return l;function allResolver(e,s){t.resolve(e).then(resolveFromAll,(function(e){if(!n){n=true;r.reject(l,e)}}));function resolveFromAll(e){a[s]=e;if(++i===o&&!n){n=true;r.resolve(l,a)}}}}Promise.race=race;function race(e){var t=this;if(Object.prototype.toString.call(e)!=="[object Array]"){return this.reject(new TypeError("must be an array"))}var o=e.length;var n=false;if(!o){return this.resolve([])}var a=-1;var i=new this(INTERNAL);while(++a<o){resolver(e[a])}return i;function resolver(e){t.resolve(e).then((function(e){if(!n){n=true;r.resolve(i,e)}}),(function(e){if(!n){n=true;r.reject(i,e)}}))}}},7375:(e,t,o)=>{"use strict";var n=o(7424).assign;var r=o(860);var a=o(2368);var i=o(1952);var s={};n(s,r,a,i);e.exports=s},860:(e,t,o)=>{"use strict";var n=o(4622);var r=o(7424);var a=o(8447);var i=o(8737);var s=o(2239);var l=Object.prototype.toString;var c=0;var d=4;var u=0;var p=1;var A=2;var f=-1;var h=0;var m=8;function Deflate(e){if(!(this instanceof Deflate))return new Deflate(e);this.options=r.assign({level:f,method:m,chunkSize:16384,windowBits:15,memLevel:8,strategy:h,to:""},e||{});var t=this.options;if(t.raw&&t.windowBits>0){t.windowBits=-t.windowBits}else if(t.gzip&&t.windowBits>0&&t.windowBits<16){t.windowBits+=16}this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new s;this.strm.avail_out=0;var o=n.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(o!==u){throw new Error(i[o])}if(t.header){n.deflateSetHeader(this.strm,t.header)}if(t.dictionary){var c;if(typeof t.dictionary==="string"){c=a.string2buf(t.dictionary)}else if(l.call(t.dictionary)==="[object ArrayBuffer]"){c=new Uint8Array(t.dictionary)}else{c=t.dictionary}o=n.deflateSetDictionary(this.strm,c);if(o!==u){throw new Error(i[o])}this._dict_set=true}}Deflate.prototype.push=function(e,t){var o=this.strm;var i=this.options.chunkSize;var s,f;if(this.ended){return false}f=t===~~t?t:t===true?d:c;if(typeof e==="string"){o.input=a.string2buf(e)}else if(l.call(e)==="[object ArrayBuffer]"){o.input=new Uint8Array(e)}else{o.input=e}o.next_in=0;o.avail_in=o.input.length;do{if(o.avail_out===0){o.output=new r.Buf8(i);o.next_out=0;o.avail_out=i}s=n.deflate(o,f);if(s!==p&&s!==u){this.onEnd(s);this.ended=true;return false}if(o.avail_out===0||o.avail_in===0&&(f===d||f===A)){if(this.options.to==="string"){this.onData(a.buf2binstring(r.shrinkBuf(o.output,o.next_out)))}else{this.onData(r.shrinkBuf(o.output,o.next_out))}}}while((o.avail_in>0||o.avail_out===0)&&s!==p);if(f===d){s=n.deflateEnd(this.strm);this.onEnd(s);this.ended=true;return s===u}if(f===A){this.onEnd(u);o.avail_out=0;return true}return true};Deflate.prototype.onData=function(e){this.chunks.push(e)};Deflate.prototype.onEnd=function(e){if(e===u){if(this.options.to==="string"){this.result=this.chunks.join("")}else{this.result=r.flattenChunks(this.chunks)}}this.chunks=[];this.err=e;this.msg=this.strm.msg};function deflate(e,t){var o=new Deflate(t);o.push(e,true);if(o.err){throw o.msg||i[o.err]}return o.result}function deflateRaw(e,t){t=t||{};t.raw=true;return deflate(e,t)}function gzip(e,t){t=t||{};t.gzip=true;return deflate(e,t)}t.Deflate=Deflate;t.deflate=deflate;t.deflateRaw=deflateRaw;t.gzip=gzip},2368:(e,t,o)=>{"use strict";var n=o(5518);var r=o(7424);var a=o(8447);var i=o(1952);var s=o(8737);var l=o(2239);var c=o(1321);var d=Object.prototype.toString;function Inflate(e){if(!(this instanceof Inflate))return new Inflate(e);this.options=r.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;if(t.raw&&t.windowBits>=0&&t.windowBits<16){t.windowBits=-t.windowBits;if(t.windowBits===0){t.windowBits=-15}}if(t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)){t.windowBits+=32}if(t.windowBits>15&&t.windowBits<48){if((t.windowBits&15)===0){t.windowBits|=15}}this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new l;this.strm.avail_out=0;var o=n.inflateInit2(this.strm,t.windowBits);if(o!==i.Z_OK){throw new Error(s[o])}this.header=new c;n.inflateGetHeader(this.strm,this.header);if(t.dictionary){if(typeof t.dictionary==="string"){t.dictionary=a.string2buf(t.dictionary)}else if(d.call(t.dictionary)==="[object ArrayBuffer]"){t.dictionary=new Uint8Array(t.dictionary)}if(t.raw){o=n.inflateSetDictionary(this.strm,t.dictionary);if(o!==i.Z_OK){throw new Error(s[o])}}}}Inflate.prototype.push=function(e,t){var o=this.strm;var s=this.options.chunkSize;var l=this.options.dictionary;var c,u;var p,A,f;var h=false;if(this.ended){return false}u=t===~~t?t:t===true?i.Z_FINISH:i.Z_NO_FLUSH;if(typeof e==="string"){o.input=a.binstring2buf(e)}else if(d.call(e)==="[object ArrayBuffer]"){o.input=new Uint8Array(e)}else{o.input=e}o.next_in=0;o.avail_in=o.input.length;do{if(o.avail_out===0){o.output=new r.Buf8(s);o.next_out=0;o.avail_out=s}c=n.inflate(o,i.Z_NO_FLUSH);if(c===i.Z_NEED_DICT&&l){c=n.inflateSetDictionary(this.strm,l)}if(c===i.Z_BUF_ERROR&&h===true){c=i.Z_OK;h=false}if(c!==i.Z_STREAM_END&&c!==i.Z_OK){this.onEnd(c);this.ended=true;return false}if(o.next_out){if(o.avail_out===0||c===i.Z_STREAM_END||o.avail_in===0&&(u===i.Z_FINISH||u===i.Z_SYNC_FLUSH)){if(this.options.to==="string"){p=a.utf8border(o.output,o.next_out);A=o.next_out-p;f=a.buf2string(o.output,p);o.next_out=A;o.avail_out=s-A;if(A){r.arraySet(o.output,o.output,p,A,0)}this.onData(f)}else{this.onData(r.shrinkBuf(o.output,o.next_out))}}}if(o.avail_in===0&&o.avail_out===0){h=true}}while((o.avail_in>0||o.avail_out===0)&&c!==i.Z_STREAM_END);if(c===i.Z_STREAM_END){u=i.Z_FINISH}if(u===i.Z_FINISH){c=n.inflateEnd(this.strm);this.onEnd(c);this.ended=true;return c===i.Z_OK}if(u===i.Z_SYNC_FLUSH){this.onEnd(i.Z_OK);o.avail_out=0;return true}return true};Inflate.prototype.onData=function(e){this.chunks.push(e)};Inflate.prototype.onEnd=function(e){if(e===i.Z_OK){if(this.options.to==="string"){this.result=this.chunks.join("")}else{this.result=r.flattenChunks(this.chunks)}}this.chunks=[];this.err=e;this.msg=this.strm.msg};function inflate(e,t){var o=new Inflate(t);o.push(e,true);if(o.err){throw o.msg||s[o.err]}return o.result}function inflateRaw(e,t){t=t||{};t.raw=true;return inflate(e,t)}t.Inflate=Inflate;t.inflate=inflate;t.inflateRaw=inflateRaw;t.ungzip=inflate},7424:(e,t)=>{"use strict";var o=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Int32Array!=="undefined";function _has(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);while(t.length){var o=t.shift();if(!o){continue}if(typeof o!=="object"){throw new TypeError(o+"must be non-object")}for(var n in o){if(_has(o,n)){e[n]=o[n]}}}return e};t.shrinkBuf=function(e,t){if(e.length===t){return e}if(e.subarray){return e.subarray(0,t)}e.length=t;return e};var n={arraySet:function(e,t,o,n,r){if(t.subarray&&e.subarray){e.set(t.subarray(o,o+n),r);return}for(var a=0;a<n;a++){e[r+a]=t[o+a]}},flattenChunks:function(e){var t,o,n,r,a,i;n=0;for(t=0,o=e.length;t<o;t++){n+=e[t].length}i=new Uint8Array(n);r=0;for(t=0,o=e.length;t<o;t++){a=e[t];i.set(a,r);r+=a.length}return i}};var r={arraySet:function(e,t,o,n,r){for(var a=0;a<n;a++){e[r+a]=t[o+a]}},flattenChunks:function(e){return[].concat.apply([],e)}};t.setTyped=function(e){if(e){t.Buf8=Uint8Array;t.Buf16=Uint16Array;t.Buf32=Int32Array;t.assign(t,n)}else{t.Buf8=Array;t.Buf16=Array;t.Buf32=Array;t.assign(t,r)}};t.setTyped(o)},8447:(e,t,o)=>{"use strict";var n=o(7424);var r=true;var a=true;try{String.fromCharCode.apply(null,[0])}catch(e){r=false}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){a=false}var i=new n.Buf8(256);for(var s=0;s<256;s++){i[s]=s>=252?6:s>=248?5:s>=240?4:s>=224?3:s>=192?2:1}i[254]=i[254]=1;t.string2buf=function(e){var t,o,r,a,i,s=e.length,l=0;for(a=0;a<s;a++){o=e.charCodeAt(a);if((o&64512)===55296&&a+1<s){r=e.charCodeAt(a+1);if((r&64512)===56320){o=65536+(o-55296<<10)+(r-56320);a++}}l+=o<128?1:o<2048?2:o<65536?3:4}t=new n.Buf8(l);for(i=0,a=0;i<l;a++){o=e.charCodeAt(a);if((o&64512)===55296&&a+1<s){r=e.charCodeAt(a+1);if((r&64512)===56320){o=65536+(o-55296<<10)+(r-56320);a++}}if(o<128){t[i++]=o}else if(o<2048){t[i++]=192|o>>>6;t[i++]=128|o&63}else if(o<65536){t[i++]=224|o>>>12;t[i++]=128|o>>>6&63;t[i++]=128|o&63}else{t[i++]=240|o>>>18;t[i++]=128|o>>>12&63;t[i++]=128|o>>>6&63;t[i++]=128|o&63}}return t};function buf2binstring(e,t){if(t<65534){if(e.subarray&&a||!e.subarray&&r){return String.fromCharCode.apply(null,n.shrinkBuf(e,t))}}var o="";for(var i=0;i<t;i++){o+=String.fromCharCode(e[i])}return o}t.buf2binstring=function(e){return buf2binstring(e,e.length)};t.binstring2buf=function(e){var t=new n.Buf8(e.length);for(var o=0,r=t.length;o<r;o++){t[o]=e.charCodeAt(o)}return t};t.buf2string=function(e,t){var o,n,r,a;var s=t||e.length;var l=new Array(s*2);for(n=0,o=0;o<s;){r=e[o++];if(r<128){l[n++]=r;continue}a=i[r];if(a>4){l[n++]=65533;o+=a-1;continue}r&=a===2?31:a===3?15:7;while(a>1&&o<s){r=r<<6|e[o++]&63;a--}if(a>1){l[n++]=65533;continue}if(r<65536){l[n++]=r}else{r-=65536;l[n++]=55296|r>>10&1023;l[n++]=56320|r&1023}}return buf2binstring(l,n)};t.utf8border=function(e,t){var o;t=t||e.length;if(t>e.length){t=e.length}o=t-1;while(o>=0&&(e[o]&192)===128){o--}if(o<0){return t}if(o===0){return t}return o+i[e[o]]>t?o:t}},9624:e=>{"use strict";function adler32(e,t,o,n){var r=e&65535|0,a=e>>>16&65535|0,i=0;while(o!==0){i=o>2e3?2e3:o;o-=i;do{r=r+t[n++]|0;a=a+r|0}while(--i);r%=65521;a%=65521}return r|a<<16|0}e.exports=adler32},1952:e=>{"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},6250:e=>{"use strict";function makeTable(){var e,t=[];for(var o=0;o<256;o++){e=o;for(var n=0;n<8;n++){e=e&1?3988292384^e>>>1:e>>>1}t[o]=e}return t}var t=makeTable();function crc32(e,o,n,r){var a=t,i=r+n;e^=-1;for(var s=r;s<i;s++){e=e>>>8^a[(e^o[s])&255]}return e^-1}e.exports=crc32},4622:(e,t,o)=>{"use strict";var n=o(7424);var r=o(9372);var a=o(9624);var i=o(6250);var s=o(8737);var l=0;var c=1;var d=3;var u=4;var p=5;var A=0;var f=1;var h=-2;var m=-3;var g=-5;var v=-1;var y=1;var b=2;var w=3;var x=4;var S=0;var k=2;var C=8;var T=9;var P=15;var E=8;var _=29;var L=256;var I=L+1+_;var B=30;var D=19;var N=2*I+1;var R=15;var F=3;var M=258;var O=M+F+1;var $=32;var z=42;var j=69;var U=73;var W=91;var q=103;var G=113;var X=666;var H=1;var Q=2;var V=3;var Y=4;var J=3;function err(e,t){e.msg=s[t];return t}function rank(e){return(e<<1)-(e>4?9:0)}function zero(e){var t=e.length;while(--t>=0){e[t]=0}}function flush_pending(e){var t=e.state;var o=t.pending;if(o>e.avail_out){o=e.avail_out}if(o===0){return}n.arraySet(e.output,t.pending_buf,t.pending_out,o,e.next_out);e.next_out+=o;t.pending_out+=o;e.total_out+=o;e.avail_out-=o;t.pending-=o;if(t.pending===0){t.pending_out=0}}function flush_block_only(e,t){r._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t);e.block_start=e.strstart;flush_pending(e.strm)}function put_byte(e,t){e.pending_buf[e.pending++]=t}function putShortMSB(e,t){e.pending_buf[e.pending++]=t>>>8&255;e.pending_buf[e.pending++]=t&255}function read_buf(e,t,o,r){var s=e.avail_in;if(s>r){s=r}if(s===0){return 0}e.avail_in-=s;n.arraySet(t,e.input,e.next_in,s,o);if(e.state.wrap===1){e.adler=a(e.adler,t,s,o)}else if(e.state.wrap===2){e.adler=i(e.adler,t,s,o)}e.next_in+=s;e.total_in+=s;return s}function longest_match(e,t){var o=e.max_chain_length;var n=e.strstart;var r;var a;var i=e.prev_length;var s=e.nice_match;var l=e.strstart>e.w_size-O?e.strstart-(e.w_size-O):0;var c=e.window;var d=e.w_mask;var u=e.prev;var p=e.strstart+M;var A=c[n+i-1];var f=c[n+i];if(e.prev_length>=e.good_match){o>>=2}if(s>e.lookahead){s=e.lookahead}do{r=t;if(c[r+i]!==f||c[r+i-1]!==A||c[r]!==c[n]||c[++r]!==c[n+1]){continue}n+=2;r++;do{}while(c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&c[++n]===c[++r]&&n<p);a=M-(p-n);n=p-M;if(a>i){e.match_start=t;i=a;if(a>=s){break}A=c[n+i-1];f=c[n+i]}}while((t=u[t&d])>l&&--o!==0);if(i<=e.lookahead){return i}return e.lookahead}function fill_window(e){var t=e.w_size;var o,r,a,i,s;do{i=e.window_size-e.lookahead-e.strstart;if(e.strstart>=t+(t-O)){n.arraySet(e.window,e.window,t,t,0);e.match_start-=t;e.strstart-=t;e.block_start-=t;r=e.hash_size;o=r;do{a=e.head[--o];e.head[o]=a>=t?a-t:0}while(--r);r=t;o=r;do{a=e.prev[--o];e.prev[o]=a>=t?a-t:0}while(--r);i+=t}if(e.strm.avail_in===0){break}r=read_buf(e.strm,e.window,e.strstart+e.lookahead,i);e.lookahead+=r;if(e.lookahead+e.insert>=F){s=e.strstart-e.insert;e.ins_h=e.window[s];e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;while(e.insert){e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+F-1])&e.hash_mask;e.prev[s&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=s;s++;e.insert--;if(e.lookahead+e.insert<F){break}}}}while(e.lookahead<O&&e.strm.avail_in!==0)}function deflate_stored(e,t){var o=65535;if(o>e.pending_buf_size-5){o=e.pending_buf_size-5}for(;;){if(e.lookahead<=1){fill_window(e);if(e.lookahead===0&&t===l){return H}if(e.lookahead===0){break}}e.strstart+=e.lookahead;e.lookahead=0;var n=e.block_start+o;if(e.strstart===0||e.strstart>=n){e.lookahead=e.strstart-n;e.strstart=n;flush_block_only(e,false);if(e.strm.avail_out===0){return H}}if(e.strstart-e.block_start>=e.w_size-O){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}e.insert=0;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.strstart>e.block_start){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return H}function deflate_fast(e,t){var o;var n;for(;;){if(e.lookahead<O){fill_window(e);if(e.lookahead<O&&t===l){return H}if(e.lookahead===0){break}}o=0;if(e.lookahead>=F){e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+F-1])&e.hash_mask;o=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=e.strstart}if(o!==0&&e.strstart-o<=e.w_size-O){e.match_length=longest_match(e,o)}if(e.match_length>=F){n=r._tr_tally(e,e.strstart-e.match_start,e.match_length-F);e.lookahead-=e.match_length;if(e.match_length<=e.max_lazy_match&&e.lookahead>=F){e.match_length--;do{e.strstart++;e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+F-1])&e.hash_mask;o=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=e.strstart}while(--e.match_length!==0);e.strstart++}else{e.strstart+=e.match_length;e.match_length=0;e.ins_h=e.window[e.strstart];e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask}}else{n=r._tr_tally(e,0,e.window[e.strstart]);e.lookahead--;e.strstart++}if(n){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}e.insert=e.strstart<F-1?e.strstart:F-1;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.last_lit){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return Q}function deflate_slow(e,t){var o;var n;var a;for(;;){if(e.lookahead<O){fill_window(e);if(e.lookahead<O&&t===l){return H}if(e.lookahead===0){break}}o=0;if(e.lookahead>=F){e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+F-1])&e.hash_mask;o=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=e.strstart}e.prev_length=e.match_length;e.prev_match=e.match_start;e.match_length=F-1;if(o!==0&&e.prev_length<e.max_lazy_match&&e.strstart-o<=e.w_size-O){e.match_length=longest_match(e,o);if(e.match_length<=5&&(e.strategy===y||e.match_length===F&&e.strstart-e.match_start>4096)){e.match_length=F-1}}if(e.prev_length>=F&&e.match_length<=e.prev_length){a=e.strstart+e.lookahead-F;n=r._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F);e.lookahead-=e.prev_length-1;e.prev_length-=2;do{if(++e.strstart<=a){e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+F-1])&e.hash_mask;o=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h];e.head[e.ins_h]=e.strstart}}while(--e.prev_length!==0);e.match_available=0;e.match_length=F-1;e.strstart++;if(n){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}else if(e.match_available){n=r._tr_tally(e,0,e.window[e.strstart-1]);if(n){flush_block_only(e,false)}e.strstart++;e.lookahead--;if(e.strm.avail_out===0){return H}}else{e.match_available=1;e.strstart++;e.lookahead--}}if(e.match_available){n=r._tr_tally(e,0,e.window[e.strstart-1]);e.match_available=0}e.insert=e.strstart<F-1?e.strstart:F-1;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.last_lit){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return Q}function deflate_rle(e,t){var o;var n;var a,i;var s=e.window;for(;;){if(e.lookahead<=M){fill_window(e);if(e.lookahead<=M&&t===l){return H}if(e.lookahead===0){break}}e.match_length=0;if(e.lookahead>=F&&e.strstart>0){a=e.strstart-1;n=s[a];if(n===s[++a]&&n===s[++a]&&n===s[++a]){i=e.strstart+M;do{}while(n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&a<i);e.match_length=M-(i-a);if(e.match_length>e.lookahead){e.match_length=e.lookahead}}}if(e.match_length>=F){o=r._tr_tally(e,1,e.match_length-F);e.lookahead-=e.match_length;e.strstart+=e.match_length;e.match_length=0}else{o=r._tr_tally(e,0,e.window[e.strstart]);e.lookahead--;e.strstart++}if(o){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}e.insert=0;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.last_lit){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return Q}function deflate_huff(e,t){var o;for(;;){if(e.lookahead===0){fill_window(e);if(e.lookahead===0){if(t===l){return H}break}}e.match_length=0;o=r._tr_tally(e,0,e.window[e.strstart]);e.lookahead--;e.strstart++;if(o){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}}e.insert=0;if(t===u){flush_block_only(e,true);if(e.strm.avail_out===0){return V}return Y}if(e.last_lit){flush_block_only(e,false);if(e.strm.avail_out===0){return H}}return Q}function Config(e,t,o,n,r){this.good_length=e;this.max_lazy=t;this.nice_length=o;this.max_chain=n;this.func=r}var K;K=[new Config(0,0,0,0,deflate_stored),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)];function lm_init(e){e.window_size=2*e.w_size;zero(e.head);e.max_lazy_match=K[e.level].max_lazy;e.good_match=K[e.level].good_length;e.nice_match=K[e.level].nice_length;e.max_chain_length=K[e.level].max_chain;e.strstart=0;e.block_start=0;e.lookahead=0;e.insert=0;e.match_length=e.prev_length=F-1;e.match_available=0;e.ins_h=0}function DeflateState(){this.strm=null;this.status=0;this.pending_buf=null;this.pending_buf_size=0;this.pending_out=0;this.pending=0;this.wrap=0;this.gzhead=null;this.gzindex=0;this.method=C;this.last_flush=-1;this.w_size=0;this.w_bits=0;this.w_mask=0;this.window=null;this.window_size=0;this.prev=null;this.head=null;this.ins_h=0;this.hash_size=0;this.hash_bits=0;this.hash_mask=0;this.hash_shift=0;this.block_start=0;this.match_length=0;this.prev_match=0;this.match_available=0;this.strstart=0;this.match_start=0;this.lookahead=0;this.prev_length=0;this.max_chain_length=0;this.max_lazy_match=0;this.level=0;this.strategy=0;this.good_match=0;this.nice_match=0;this.dyn_ltree=new n.Buf16(N*2);this.dyn_dtree=new n.Buf16((2*B+1)*2);this.bl_tree=new n.Buf16((2*D+1)*2);zero(this.dyn_ltree);zero(this.dyn_dtree);zero(this.bl_tree);this.l_desc=null;this.d_desc=null;this.bl_desc=null;this.bl_count=new n.Buf16(R+1);this.heap=new n.Buf16(2*I+1);zero(this.heap);this.heap_len=0;this.heap_max=0;this.depth=new n.Buf16(2*I+1);zero(this.depth);this.l_buf=0;this.lit_bufsize=0;this.last_lit=0;this.d_buf=0;this.opt_len=0;this.static_len=0;this.matches=0;this.insert=0;this.bi_buf=0;this.bi_valid=0}function deflateResetKeep(e){var t;if(!e||!e.state){return err(e,h)}e.total_in=e.total_out=0;e.data_type=k;t=e.state;t.pending=0;t.pending_out=0;if(t.wrap<0){t.wrap=-t.wrap}t.status=t.wrap?z:G;e.adler=t.wrap===2?0:1;t.last_flush=l;r._tr_init(t);return A}function deflateReset(e){var t=deflateResetKeep(e);if(t===A){lm_init(e.state)}return t}function deflateSetHeader(e,t){if(!e||!e.state){return h}if(e.state.wrap!==2){return h}e.state.gzhead=t;return A}function deflateInit2(e,t,o,r,a,i){if(!e){return h}var s=1;if(t===v){t=6}if(r<0){s=0;r=-r}else if(r>15){s=2;r-=16}if(a<1||a>T||o!==C||r<8||r>15||t<0||t>9||i<0||i>x){return err(e,h)}if(r===8){r=9}var l=new DeflateState;e.state=l;l.strm=e;l.wrap=s;l.gzhead=null;l.w_bits=r;l.w_size=1<<l.w_bits;l.w_mask=l.w_size-1;l.hash_bits=a+7;l.hash_size=1<<l.hash_bits;l.hash_mask=l.hash_size-1;l.hash_shift=~~((l.hash_bits+F-1)/F);l.window=new n.Buf8(l.w_size*2);l.head=new n.Buf16(l.hash_size);l.prev=new n.Buf16(l.w_size);l.lit_bufsize=1<<a+6;l.pending_buf_size=l.lit_bufsize*4;l.pending_buf=new n.Buf8(l.pending_buf_size);l.d_buf=1*l.lit_bufsize;l.l_buf=(1+2)*l.lit_bufsize;l.level=t;l.strategy=i;l.method=o;return deflateReset(e)}function deflateInit(e,t){return deflateInit2(e,t,C,P,E,S)}function deflate(e,t){var o,n;var a,s;if(!e||!e.state||t>p||t<0){return e?err(e,h):h}n=e.state;if(!e.output||!e.input&&e.avail_in!==0||n.status===X&&t!==u){return err(e,e.avail_out===0?g:h)}n.strm=e;o=n.last_flush;n.last_flush=t;if(n.status===z){if(n.wrap===2){e.adler=0;put_byte(n,31);put_byte(n,139);put_byte(n,8);if(!n.gzhead){put_byte(n,0);put_byte(n,0);put_byte(n,0);put_byte(n,0);put_byte(n,0);put_byte(n,n.level===9?2:n.strategy>=b||n.level<2?4:0);put_byte(n,J);n.status=G}else{put_byte(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(!n.gzhead.extra?0:4)+(!n.gzhead.name?0:8)+(!n.gzhead.comment?0:16));put_byte(n,n.gzhead.time&255);put_byte(n,n.gzhead.time>>8&255);put_byte(n,n.gzhead.time>>16&255);put_byte(n,n.gzhead.time>>24&255);put_byte(n,n.level===9?2:n.strategy>=b||n.level<2?4:0);put_byte(n,n.gzhead.os&255);if(n.gzhead.extra&&n.gzhead.extra.length){put_byte(n,n.gzhead.extra.length&255);put_byte(n,n.gzhead.extra.length>>8&255)}if(n.gzhead.hcrc){e.adler=i(e.adler,n.pending_buf,n.pending,0)}n.gzindex=0;n.status=j}}else{var m=C+(n.w_bits-8<<4)<<8;var v=-1;if(n.strategy>=b||n.level<2){v=0}else if(n.level<6){v=1}else if(n.level===6){v=2}else{v=3}m|=v<<6;if(n.strstart!==0){m|=$}m+=31-m%31;n.status=G;putShortMSB(n,m);if(n.strstart!==0){putShortMSB(n,e.adler>>>16);putShortMSB(n,e.adler&65535)}e.adler=1}}if(n.status===j){if(n.gzhead.extra){a=n.pending;while(n.gzindex<(n.gzhead.extra.length&65535)){if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}flush_pending(e);a=n.pending;if(n.pending===n.pending_buf_size){break}}put_byte(n,n.gzhead.extra[n.gzindex]&255);n.gzindex++}if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}if(n.gzindex===n.gzhead.extra.length){n.gzindex=0;n.status=U}}else{n.status=U}}if(n.status===U){if(n.gzhead.name){a=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}flush_pending(e);a=n.pending;if(n.pending===n.pending_buf_size){s=1;break}}if(n.gzindex<n.gzhead.name.length){s=n.gzhead.name.charCodeAt(n.gzindex++)&255}else{s=0}put_byte(n,s)}while(s!==0);if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}if(s===0){n.gzindex=0;n.status=W}}else{n.status=W}}if(n.status===W){if(n.gzhead.comment){a=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}flush_pending(e);a=n.pending;if(n.pending===n.pending_buf_size){s=1;break}}if(n.gzindex<n.gzhead.comment.length){s=n.gzhead.comment.charCodeAt(n.gzindex++)&255}else{s=0}put_byte(n,s)}while(s!==0);if(n.gzhead.hcrc&&n.pending>a){e.adler=i(e.adler,n.pending_buf,n.pending-a,a)}if(s===0){n.status=q}}else{n.status=q}}if(n.status===q){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size){flush_pending(e)}if(n.pending+2<=n.pending_buf_size){put_byte(n,e.adler&255);put_byte(n,e.adler>>8&255);e.adler=0;n.status=G}}else{n.status=G}}if(n.pending!==0){flush_pending(e);if(e.avail_out===0){n.last_flush=-1;return A}}else if(e.avail_in===0&&rank(t)<=rank(o)&&t!==u){return err(e,g)}if(n.status===X&&e.avail_in!==0){return err(e,g)}if(e.avail_in!==0||n.lookahead!==0||t!==l&&n.status!==X){var y=n.strategy===b?deflate_huff(n,t):n.strategy===w?deflate_rle(n,t):K[n.level].func(n,t);if(y===V||y===Y){n.status=X}if(y===H||y===V){if(e.avail_out===0){n.last_flush=-1}return A}if(y===Q){if(t===c){r._tr_align(n)}else if(t!==p){r._tr_stored_block(n,0,0,false);if(t===d){zero(n.head);if(n.lookahead===0){n.strstart=0;n.block_start=0;n.insert=0}}}flush_pending(e);if(e.avail_out===0){n.last_flush=-1;return A}}}if(t!==u){return A}if(n.wrap<=0){return f}if(n.wrap===2){put_byte(n,e.adler&255);put_byte(n,e.adler>>8&255);put_byte(n,e.adler>>16&255);put_byte(n,e.adler>>24&255);put_byte(n,e.total_in&255);put_byte(n,e.total_in>>8&255);put_byte(n,e.total_in>>16&255);put_byte(n,e.total_in>>24&255)}else{putShortMSB(n,e.adler>>>16);putShortMSB(n,e.adler&65535)}flush_pending(e);if(n.wrap>0){n.wrap=-n.wrap}return n.pending!==0?A:f}function deflateEnd(e){var t;if(!e||!e.state){return h}t=e.state.status;if(t!==z&&t!==j&&t!==U&&t!==W&&t!==q&&t!==G&&t!==X){return err(e,h)}e.state=null;return t===G?err(e,m):A}function deflateSetDictionary(e,t){var o=t.length;var r;var i,s;var l;var c;var d;var u;var p;if(!e||!e.state){return h}r=e.state;l=r.wrap;if(l===2||l===1&&r.status!==z||r.lookahead){return h}if(l===1){e.adler=a(e.adler,t,o,0)}r.wrap=0;if(o>=r.w_size){if(l===0){zero(r.head);r.strstart=0;r.block_start=0;r.insert=0}p=new n.Buf8(r.w_size);n.arraySet(p,t,o-r.w_size,r.w_size,0);t=p;o=r.w_size}c=e.avail_in;d=e.next_in;u=e.input;e.avail_in=o;e.next_in=0;e.input=t;fill_window(r);while(r.lookahead>=F){i=r.strstart;s=r.lookahead-(F-1);do{r.ins_h=(r.ins_h<<r.hash_shift^r.window[i+F-1])&r.hash_mask;r.prev[i&r.w_mask]=r.head[r.ins_h];r.head[r.ins_h]=i;i++}while(--s);r.strstart=i;r.lookahead=F-1;fill_window(r)}r.strstart+=r.lookahead;r.block_start=r.strstart;r.insert=r.lookahead;r.lookahead=0;r.match_length=r.prev_length=F-1;r.match_available=0;e.next_in=d;e.input=u;e.avail_in=c;r.wrap=l;return A}t.deflateInit=deflateInit;t.deflateInit2=deflateInit2;t.deflateReset=deflateReset;t.deflateResetKeep=deflateResetKeep;t.deflateSetHeader=deflateSetHeader;t.deflate=deflate;t.deflateEnd=deflateEnd;t.deflateSetDictionary=deflateSetDictionary;t.deflateInfo="pako deflate (from Nodeca project)"},1321:e=>{"use strict";function GZheader(){this.text=0;this.time=0;this.xflags=0;this.os=0;this.extra=null;this.extra_len=0;this.name="";this.comment="";this.hcrc=0;this.done=false}e.exports=GZheader},5296:e=>{"use strict";var t=30;var o=12;e.exports=function inflate_fast(e,n){var r;var a;var i;var s;var l;var c;var d;var u;var p;var A;var f;var h;var m;var g;var v;var y;var b;var w;var x;var S;var k;var C;var T;var P,E;r=e.state;a=e.next_in;P=e.input;i=a+(e.avail_in-5);s=e.next_out;E=e.output;l=s-(n-e.avail_out);c=s+(e.avail_out-257);d=r.dmax;u=r.wsize;p=r.whave;A=r.wnext;f=r.window;h=r.hold;m=r.bits;g=r.lencode;v=r.distcode;y=(1<<r.lenbits)-1;b=(1<<r.distbits)-1;e:do{if(m<15){h+=P[a++]<<m;m+=8;h+=P[a++]<<m;m+=8}w=g[h&y];t:for(;;){x=w>>>24;h>>>=x;m-=x;x=w>>>16&255;if(x===0){E[s++]=w&65535}else if(x&16){S=w&65535;x&=15;if(x){if(m<x){h+=P[a++]<<m;m+=8}S+=h&(1<<x)-1;h>>>=x;m-=x}if(m<15){h+=P[a++]<<m;m+=8;h+=P[a++]<<m;m+=8}w=v[h&b];o:for(;;){x=w>>>24;h>>>=x;m-=x;x=w>>>16&255;if(x&16){k=w&65535;x&=15;if(m<x){h+=P[a++]<<m;m+=8;if(m<x){h+=P[a++]<<m;m+=8}}k+=h&(1<<x)-1;if(k>d){e.msg="invalid distance too far back";r.mode=t;break e}h>>>=x;m-=x;x=s-l;if(k>x){x=k-x;if(x>p){if(r.sane){e.msg="invalid distance too far back";r.mode=t;break e}}C=0;T=f;if(A===0){C+=u-x;if(x<S){S-=x;do{E[s++]=f[C++]}while(--x);C=s-k;T=E}}else if(A<x){C+=u+A-x;x-=A;if(x<S){S-=x;do{E[s++]=f[C++]}while(--x);C=0;if(A<S){x=A;S-=x;do{E[s++]=f[C++]}while(--x);C=s-k;T=E}}}else{C+=A-x;if(x<S){S-=x;do{E[s++]=f[C++]}while(--x);C=s-k;T=E}}while(S>2){E[s++]=T[C++];E[s++]=T[C++];E[s++]=T[C++];S-=3}if(S){E[s++]=T[C++];if(S>1){E[s++]=T[C++]}}}else{C=s-k;do{E[s++]=E[C++];E[s++]=E[C++];E[s++]=E[C++];S-=3}while(S>2);if(S){E[s++]=E[C++];if(S>1){E[s++]=E[C++]}}}}else if((x&64)===0){w=v[(w&65535)+(h&(1<<x)-1)];continue o}else{e.msg="invalid distance code";r.mode=t;break e}break}}else if((x&64)===0){w=g[(w&65535)+(h&(1<<x)-1)];continue t}else if(x&32){r.mode=o;break e}else{e.msg="invalid literal/length code";r.mode=t;break e}break}}while(a<i&&s<c);S=m>>3;a-=S;m-=S<<3;h&=(1<<m)-1;e.next_in=a;e.next_out=s;e.avail_in=a<i?5+(i-a):5-(a-i);e.avail_out=s<c?257+(c-s):257-(s-c);r.hold=h;r.bits=m;return}},5518:(e,t,o)=>{"use strict";var n=o(7424);var r=o(9624);var a=o(6250);var i=o(5296);var s=o(457);var l=0;var c=1;var d=2;var u=4;var p=5;var A=6;var f=0;var h=1;var m=2;var g=-2;var v=-3;var y=-4;var b=-5;var w=8;var x=1;var S=2;var k=3;var C=4;var T=5;var P=6;var E=7;var _=8;var L=9;var I=10;var B=11;var D=12;var N=13;var R=14;var F=15;var M=16;var O=17;var $=18;var z=19;var j=20;var U=21;var W=22;var q=23;var G=24;var X=25;var H=26;var Q=27;var V=28;var Y=29;var J=30;var K=31;var Z=32;var ee=852;var te=592;var oe=15;var ne=oe;function zswap32(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function InflateState(){this.mode=0;this.last=false;this.wrap=0;this.havedict=false;this.flags=0;this.dmax=0;this.check=0;this.total=0;this.head=null;this.wbits=0;this.wsize=0;this.whave=0;this.wnext=0;this.window=null;this.hold=0;this.bits=0;this.length=0;this.offset=0;this.extra=0;this.lencode=null;this.distcode=null;this.lenbits=0;this.distbits=0;this.ncode=0;this.nlen=0;this.ndist=0;this.have=0;this.next=null;this.lens=new n.Buf16(320);this.work=new n.Buf16(288);this.lendyn=null;this.distdyn=null;this.sane=0;this.back=0;this.was=0}function inflateResetKeep(e){var t;if(!e||!e.state){return g}t=e.state;e.total_in=e.total_out=t.total=0;e.msg="";if(t.wrap){e.adler=t.wrap&1}t.mode=x;t.last=0;t.havedict=0;t.dmax=32768;t.head=null;t.hold=0;t.bits=0;t.lencode=t.lendyn=new n.Buf32(ee);t.distcode=t.distdyn=new n.Buf32(te);t.sane=1;t.back=-1;return f}function inflateReset(e){var t;if(!e||!e.state){return g}t=e.state;t.wsize=0;t.whave=0;t.wnext=0;return inflateResetKeep(e)}function inflateReset2(e,t){var o;var n;if(!e||!e.state){return g}n=e.state;if(t<0){o=0;t=-t}else{o=(t>>4)+1;if(t<48){t&=15}}if(t&&(t<8||t>15)){return g}if(n.window!==null&&n.wbits!==t){n.window=null}n.wrap=o;n.wbits=t;return inflateReset(e)}function inflateInit2(e,t){var o;var n;if(!e){return g}n=new InflateState;e.state=n;n.window=null;o=inflateReset2(e,t);if(o!==f){e.state=null}return o}function inflateInit(e){return inflateInit2(e,ne)}var re=true;var ae,ie;function fixedtables(e){if(re){var t;ae=new n.Buf32(512);ie=new n.Buf32(32);t=0;while(t<144){e.lens[t++]=8}while(t<256){e.lens[t++]=9}while(t<280){e.lens[t++]=7}while(t<288){e.lens[t++]=8}s(c,e.lens,0,288,ae,0,e.work,{bits:9});t=0;while(t<32){e.lens[t++]=5}s(d,e.lens,0,32,ie,0,e.work,{bits:5});re=false}e.lencode=ae;e.lenbits=9;e.distcode=ie;e.distbits=5}function updatewindow(e,t,o,r){var a;var i=e.state;if(i.window===null){i.wsize=1<<i.wbits;i.wnext=0;i.whave=0;i.window=new n.Buf8(i.wsize)}if(r>=i.wsize){n.arraySet(i.window,t,o-i.wsize,i.wsize,0);i.wnext=0;i.whave=i.wsize}else{a=i.wsize-i.wnext;if(a>r){a=r}n.arraySet(i.window,t,o-r,a,i.wnext);r-=a;if(r){n.arraySet(i.window,t,o-r,r,0);i.wnext=r;i.whave=i.wsize}else{i.wnext+=a;if(i.wnext===i.wsize){i.wnext=0}if(i.whave<i.wsize){i.whave+=a}}}return 0}function inflate(e,t){var o;var ee,te;var oe;var ne;var re,ae;var ie;var se;var le,ce;var de;var ue;var pe;var Ae=0;var fe,he,me;var ge,ve,ye;var be;var we;var xe=new n.Buf8(4);var Se;var ke;var Ce=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0){return g}o=e.state;if(o.mode===D){o.mode=N}ne=e.next_out;te=e.output;ae=e.avail_out;oe=e.next_in;ee=e.input;re=e.avail_in;ie=o.hold;se=o.bits;le=re;ce=ae;we=f;e:for(;;){switch(o.mode){case x:if(o.wrap===0){o.mode=N;break}while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(o.wrap&2&&ie===35615){o.check=0;xe[0]=ie&255;xe[1]=ie>>>8&255;o.check=a(o.check,xe,2,0);ie=0;se=0;o.mode=S;break}o.flags=0;if(o.head){o.head.done=false}if(!(o.wrap&1)||(((ie&255)<<8)+(ie>>8))%31){e.msg="incorrect header check";o.mode=J;break}if((ie&15)!==w){e.msg="unknown compression method";o.mode=J;break}ie>>>=4;se-=4;be=(ie&15)+8;if(o.wbits===0){o.wbits=be}else if(be>o.wbits){e.msg="invalid window size";o.mode=J;break}o.dmax=1<<be;e.adler=o.check=1;o.mode=ie&512?I:D;ie=0;se=0;break;case S:while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.flags=ie;if((o.flags&255)!==w){e.msg="unknown compression method";o.mode=J;break}if(o.flags&57344){e.msg="unknown header flags set";o.mode=J;break}if(o.head){o.head.text=ie>>8&1}if(o.flags&512){xe[0]=ie&255;xe[1]=ie>>>8&255;o.check=a(o.check,xe,2,0)}ie=0;se=0;o.mode=k;case k:while(se<32){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(o.head){o.head.time=ie}if(o.flags&512){xe[0]=ie&255;xe[1]=ie>>>8&255;xe[2]=ie>>>16&255;xe[3]=ie>>>24&255;o.check=a(o.check,xe,4,0)}ie=0;se=0;o.mode=C;case C:while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(o.head){o.head.xflags=ie&255;o.head.os=ie>>8}if(o.flags&512){xe[0]=ie&255;xe[1]=ie>>>8&255;o.check=a(o.check,xe,2,0)}ie=0;se=0;o.mode=T;case T:if(o.flags&1024){while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.length=ie;if(o.head){o.head.extra_len=ie}if(o.flags&512){xe[0]=ie&255;xe[1]=ie>>>8&255;o.check=a(o.check,xe,2,0)}ie=0;se=0}else if(o.head){o.head.extra=null}o.mode=P;case P:if(o.flags&1024){de=o.length;if(de>re){de=re}if(de){if(o.head){be=o.head.extra_len-o.length;if(!o.head.extra){o.head.extra=new Array(o.head.extra_len)}n.arraySet(o.head.extra,ee,oe,de,be)}if(o.flags&512){o.check=a(o.check,ee,de,oe)}re-=de;oe+=de;o.length-=de}if(o.length){break e}}o.length=0;o.mode=E;case E:if(o.flags&2048){if(re===0){break e}de=0;do{be=ee[oe+de++];if(o.head&&be&&o.length<65536){o.head.name+=String.fromCharCode(be)}}while(be&&de<re);if(o.flags&512){o.check=a(o.check,ee,de,oe)}re-=de;oe+=de;if(be){break e}}else if(o.head){o.head.name=null}o.length=0;o.mode=_;case _:if(o.flags&4096){if(re===0){break e}de=0;do{be=ee[oe+de++];if(o.head&&be&&o.length<65536){o.head.comment+=String.fromCharCode(be)}}while(be&&de<re);if(o.flags&512){o.check=a(o.check,ee,de,oe)}re-=de;oe+=de;if(be){break e}}else if(o.head){o.head.comment=null}o.mode=L;case L:if(o.flags&512){while(se<16){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(ie!==(o.check&65535)){e.msg="header crc mismatch";o.mode=J;break}ie=0;se=0}if(o.head){o.head.hcrc=o.flags>>9&1;o.head.done=true}e.adler=o.check=0;o.mode=D;break;case I:while(se<32){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}e.adler=o.check=zswap32(ie);ie=0;se=0;o.mode=B;case B:if(o.havedict===0){e.next_out=ne;e.avail_out=ae;e.next_in=oe;e.avail_in=re;o.hold=ie;o.bits=se;return m}e.adler=o.check=1;o.mode=D;case D:if(t===p||t===A){break e}case N:if(o.last){ie>>>=se&7;se-=se&7;o.mode=Q;break}while(se<3){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.last=ie&1;ie>>>=1;se-=1;switch(ie&3){case 0:o.mode=R;break;case 1:fixedtables(o);o.mode=j;if(t===A){ie>>>=2;se-=2;break e}break;case 2:o.mode=O;break;case 3:e.msg="invalid block type";o.mode=J}ie>>>=2;se-=2;break;case R:ie>>>=se&7;se-=se&7;while(se<32){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if((ie&65535)!==(ie>>>16^65535)){e.msg="invalid stored block lengths";o.mode=J;break}o.length=ie&65535;ie=0;se=0;o.mode=F;if(t===A){break e}case F:o.mode=M;case M:de=o.length;if(de){if(de>re){de=re}if(de>ae){de=ae}if(de===0){break e}n.arraySet(te,ee,oe,de,ne);re-=de;oe+=de;ae-=de;ne+=de;o.length-=de;break}o.mode=D;break;case O:while(se<14){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.nlen=(ie&31)+257;ie>>>=5;se-=5;o.ndist=(ie&31)+1;ie>>>=5;se-=5;o.ncode=(ie&15)+4;ie>>>=4;se-=4;if(o.nlen>286||o.ndist>30){e.msg="too many length or distance symbols";o.mode=J;break}o.have=0;o.mode=$;case $:while(o.have<o.ncode){while(se<3){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.lens[Ce[o.have++]]=ie&7;ie>>>=3;se-=3}while(o.have<19){o.lens[Ce[o.have++]]=0}o.lencode=o.lendyn;o.lenbits=7;Se={bits:o.lenbits};we=s(l,o.lens,0,19,o.lencode,0,o.work,Se);o.lenbits=Se.bits;if(we){e.msg="invalid code lengths set";o.mode=J;break}o.have=0;o.mode=z;case z:while(o.have<o.nlen+o.ndist){for(;;){Ae=o.lencode[ie&(1<<o.lenbits)-1];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(me<16){ie>>>=fe;se-=fe;o.lens[o.have++]=me}else{if(me===16){ke=fe+2;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=fe;se-=fe;if(o.have===0){e.msg="invalid bit length repeat";o.mode=J;break}be=o.lens[o.have-1];de=3+(ie&3);ie>>>=2;se-=2}else if(me===17){ke=fe+3;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=fe;se-=fe;be=0;de=3+(ie&7);ie>>>=3;se-=3}else{ke=fe+7;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=fe;se-=fe;be=0;de=11+(ie&127);ie>>>=7;se-=7}if(o.have+de>o.nlen+o.ndist){e.msg="invalid bit length repeat";o.mode=J;break}while(de--){o.lens[o.have++]=be}}}if(o.mode===J){break}if(o.lens[256]===0){e.msg="invalid code -- missing end-of-block";o.mode=J;break}o.lenbits=9;Se={bits:o.lenbits};we=s(c,o.lens,0,o.nlen,o.lencode,0,o.work,Se);o.lenbits=Se.bits;if(we){e.msg="invalid literal/lengths set";o.mode=J;break}o.distbits=6;o.distcode=o.distdyn;Se={bits:o.distbits};we=s(d,o.lens,o.nlen,o.ndist,o.distcode,0,o.work,Se);o.distbits=Se.bits;if(we){e.msg="invalid distances set";o.mode=J;break}o.mode=j;if(t===A){break e}case j:o.mode=U;case U:if(re>=6&&ae>=258){e.next_out=ne;e.avail_out=ae;e.next_in=oe;e.avail_in=re;o.hold=ie;o.bits=se;i(e,ce);ne=e.next_out;te=e.output;ae=e.avail_out;oe=e.next_in;ee=e.input;re=e.avail_in;ie=o.hold;se=o.bits;if(o.mode===D){o.back=-1}break}o.back=0;for(;;){Ae=o.lencode[ie&(1<<o.lenbits)-1];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(he&&(he&240)===0){ge=fe;ve=he;ye=me;for(;;){Ae=o.lencode[ye+((ie&(1<<ge+ve)-1)>>ge)];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(ge+fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=ge;se-=ge;o.back+=ge}ie>>>=fe;se-=fe;o.back+=fe;o.length=me;if(he===0){o.mode=H;break}if(he&32){o.back=-1;o.mode=D;break}if(he&64){e.msg="invalid literal/length code";o.mode=J;break}o.extra=he&15;o.mode=W;case W:if(o.extra){ke=o.extra;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.length+=ie&(1<<o.extra)-1;ie>>>=o.extra;se-=o.extra;o.back+=o.extra}o.was=o.length;o.mode=q;case q:for(;;){Ae=o.distcode[ie&(1<<o.distbits)-1];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if((he&240)===0){ge=fe;ve=he;ye=me;for(;;){Ae=o.distcode[ye+((ie&(1<<ge+ve)-1)>>ge)];fe=Ae>>>24;he=Ae>>>16&255;me=Ae&65535;if(ge+fe<=se){break}if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}ie>>>=ge;se-=ge;o.back+=ge}ie>>>=fe;se-=fe;o.back+=fe;if(he&64){e.msg="invalid distance code";o.mode=J;break}o.offset=me;o.extra=he&15;o.mode=G;case G:if(o.extra){ke=o.extra;while(se<ke){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}o.offset+=ie&(1<<o.extra)-1;ie>>>=o.extra;se-=o.extra;o.back+=o.extra}if(o.offset>o.dmax){e.msg="invalid distance too far back";o.mode=J;break}o.mode=X;case X:if(ae===0){break e}de=ce-ae;if(o.offset>de){de=o.offset-de;if(de>o.whave){if(o.sane){e.msg="invalid distance too far back";o.mode=J;break}}if(de>o.wnext){de-=o.wnext;ue=o.wsize-de}else{ue=o.wnext-de}if(de>o.length){de=o.length}pe=o.window}else{pe=te;ue=ne-o.offset;de=o.length}if(de>ae){de=ae}ae-=de;o.length-=de;do{te[ne++]=pe[ue++]}while(--de);if(o.length===0){o.mode=U}break;case H:if(ae===0){break e}te[ne++]=o.length;ae--;o.mode=U;break;case Q:if(o.wrap){while(se<32){if(re===0){break e}re--;ie|=ee[oe++]<<se;se+=8}ce-=ae;e.total_out+=ce;o.total+=ce;if(ce){e.adler=o.check=o.flags?a(o.check,te,ce,ne-ce):r(o.check,te,ce,ne-ce)}ce=ae;if((o.flags?ie:zswap32(ie))!==o.check){e.msg="incorrect data check";o.mode=J;break}ie=0;se=0}o.mode=V;case V:if(o.wrap&&o.flags){while(se<32){if(re===0){break e}re--;ie+=ee[oe++]<<se;se+=8}if(ie!==(o.total&4294967295)){e.msg="incorrect length check";o.mode=J;break}ie=0;se=0}o.mode=Y;case Y:we=h;break e;case J:we=v;break e;case K:return y;case Z:default:return g}}e.next_out=ne;e.avail_out=ae;e.next_in=oe;e.avail_in=re;o.hold=ie;o.bits=se;if(o.wsize||ce!==e.avail_out&&o.mode<J&&(o.mode<Q||t!==u)){if(updatewindow(e,e.output,e.next_out,ce-e.avail_out)){o.mode=K;return y}}le-=e.avail_in;ce-=e.avail_out;e.total_in+=le;e.total_out+=ce;o.total+=ce;if(o.wrap&&ce){e.adler=o.check=o.flags?a(o.check,te,ce,e.next_out-ce):r(o.check,te,ce,e.next_out-ce)}e.data_type=o.bits+(o.last?64:0)+(o.mode===D?128:0)+(o.mode===j||o.mode===F?256:0);if((le===0&&ce===0||t===u)&&we===f){we=b}return we}function inflateEnd(e){if(!e||!e.state){return g}var t=e.state;if(t.window){t.window=null}e.state=null;return f}function inflateGetHeader(e,t){var o;if(!e||!e.state){return g}o=e.state;if((o.wrap&2)===0){return g}o.head=t;t.done=false;return f}function inflateSetDictionary(e,t){var o=t.length;var n;var a;var i;if(!e||!e.state){return g}n=e.state;if(n.wrap!==0&&n.mode!==B){return g}if(n.mode===B){a=1;a=r(a,t,o,0);if(a!==n.check){return v}}i=updatewindow(e,t,o,o);if(i){n.mode=K;return y}n.havedict=1;return f}t.inflateReset=inflateReset;t.inflateReset2=inflateReset2;t.inflateResetKeep=inflateResetKeep;t.inflateInit=inflateInit;t.inflateInit2=inflateInit2;t.inflate=inflate;t.inflateEnd=inflateEnd;t.inflateGetHeader=inflateGetHeader;t.inflateSetDictionary=inflateSetDictionary;t.inflateInfo="pako inflate (from Nodeca project)"},457:(e,t,o)=>{"use strict";var n=o(7424);var r=15;var a=852;var i=592;var s=0;var l=1;var c=2;var d=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0];var u=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78];var p=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0];var A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function inflate_table(e,t,o,f,h,m,g,v){var y=v.bits;var b=0;var w=0;var x=0,S=0;var k=0;var C=0;var T=0;var P=0;var E=0;var _=0;var L;var I;var B;var D;var N;var R=null;var F=0;var M;var O=new n.Buf16(r+1);var $=new n.Buf16(r+1);var z=null;var j=0;var U,W,q;for(b=0;b<=r;b++){O[b]=0}for(w=0;w<f;w++){O[t[o+w]]++}k=y;for(S=r;S>=1;S--){if(O[S]!==0){break}}if(k>S){k=S}if(S===0){h[m++]=1<<24|64<<16|0;h[m++]=1<<24|64<<16|0;v.bits=1;return 0}for(x=1;x<S;x++){if(O[x]!==0){break}}if(k<x){k=x}P=1;for(b=1;b<=r;b++){P<<=1;P-=O[b];if(P<0){return-1}}if(P>0&&(e===s||S!==1)){return-1}$[1]=0;for(b=1;b<r;b++){$[b+1]=$[b]+O[b]}for(w=0;w<f;w++){if(t[o+w]!==0){g[$[t[o+w]]++]=w}}if(e===s){R=z=g;M=19}else if(e===l){R=d;F-=257;z=u;j-=257;M=256}else{R=p;z=A;M=-1}_=0;w=0;b=x;N=m;C=k;T=0;B=-1;E=1<<k;D=E-1;if(e===l&&E>a||e===c&&E>i){return 1}for(;;){U=b-T;if(g[w]<M){W=0;q=g[w]}else if(g[w]>M){W=z[j+g[w]];q=R[F+g[w]]}else{W=32+64;q=0}L=1<<b-T;I=1<<C;x=I;do{I-=L;h[N+(_>>T)+I]=U<<24|W<<16|q|0}while(I!==0);L=1<<b-1;while(_&L){L>>=1}if(L!==0){_&=L-1;_+=L}else{_=0}w++;if(--O[b]===0){if(b===S){break}b=t[o+g[w]]}if(b>k&&(_&D)!==B){if(T===0){T=k}N+=x;C=b-T;P=1<<C;while(C+T<S){P-=O[C+T];if(P<=0){break}C++;P<<=1}E+=1<<C;if(e===l&&E>a||e===c&&E>i){return 1}B=_&D;h[B]=k<<24|C<<16|N-m|0}}if(_!==0){h[N+_]=b-T<<24|64<<16|0}v.bits=k;return 0}},8737:e=>{"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},9372:(e,t,o)=>{"use strict";var n=o(7424);var r=4;var a=0;var i=1;var s=2;function zero(e){var t=e.length;while(--t>=0){e[t]=0}}var l=0;var c=1;var d=2;var u=3;var p=258;var A=29;var f=256;var h=f+1+A;var m=30;var g=19;var v=2*h+1;var y=15;var b=16;var w=7;var x=256;var S=16;var k=17;var C=18;var T=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];var P=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];var E=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];var _=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];var L=512;var I=new Array((h+2)*2);zero(I);var B=new Array(m*2);zero(B);var D=new Array(L);zero(D);var N=new Array(p-u+1);zero(N);var R=new Array(A);zero(R);var F=new Array(m);zero(F);function StaticTreeDesc(e,t,o,n,r){this.static_tree=e;this.extra_bits=t;this.extra_base=o;this.elems=n;this.max_length=r;this.has_stree=e&&e.length}var M;var O;var $;function TreeDesc(e,t){this.dyn_tree=e;this.max_code=0;this.stat_desc=t}function d_code(e){return e<256?D[e]:D[256+(e>>>7)]}function put_short(e,t){e.pending_buf[e.pending++]=t&255;e.pending_buf[e.pending++]=t>>>8&255}function send_bits(e,t,o){if(e.bi_valid>b-o){e.bi_buf|=t<<e.bi_valid&65535;put_short(e,e.bi_buf);e.bi_buf=t>>b-e.bi_valid;e.bi_valid+=o-b}else{e.bi_buf|=t<<e.bi_valid&65535;e.bi_valid+=o}}function send_code(e,t,o){send_bits(e,o[t*2],o[t*2+1])}function bi_reverse(e,t){var o=0;do{o|=e&1;e>>>=1;o<<=1}while(--t>0);return o>>>1}function bi_flush(e){if(e.bi_valid===16){put_short(e,e.bi_buf);e.bi_buf=0;e.bi_valid=0}else if(e.bi_valid>=8){e.pending_buf[e.pending++]=e.bi_buf&255;e.bi_buf>>=8;e.bi_valid-=8}}function gen_bitlen(e,t){var o=t.dyn_tree;var n=t.max_code;var r=t.stat_desc.static_tree;var a=t.stat_desc.has_stree;var i=t.stat_desc.extra_bits;var s=t.stat_desc.extra_base;var l=t.stat_desc.max_length;var c;var d,u;var p;var A;var f;var h=0;for(p=0;p<=y;p++){e.bl_count[p]=0}o[e.heap[e.heap_max]*2+1]=0;for(c=e.heap_max+1;c<v;c++){d=e.heap[c];p=o[o[d*2+1]*2+1]+1;if(p>l){p=l;h++}o[d*2+1]=p;if(d>n){continue}e.bl_count[p]++;A=0;if(d>=s){A=i[d-s]}f=o[d*2];e.opt_len+=f*(p+A);if(a){e.static_len+=f*(r[d*2+1]+A)}}if(h===0){return}do{p=l-1;while(e.bl_count[p]===0){p--}e.bl_count[p]--;e.bl_count[p+1]+=2;e.bl_count[l]--;h-=2}while(h>0);for(p=l;p!==0;p--){d=e.bl_count[p];while(d!==0){u=e.heap[--c];if(u>n){continue}if(o[u*2+1]!==p){e.opt_len+=(p-o[u*2+1])*o[u*2];o[u*2+1]=p}d--}}}function gen_codes(e,t,o){var n=new Array(y+1);var r=0;var a;var i;for(a=1;a<=y;a++){n[a]=r=r+o[a-1]<<1}for(i=0;i<=t;i++){var s=e[i*2+1];if(s===0){continue}e[i*2]=bi_reverse(n[s]++,s)}}function tr_static_init(){var e;var t;var o;var n;var r;var a=new Array(y+1);o=0;for(n=0;n<A-1;n++){R[n]=o;for(e=0;e<1<<T[n];e++){N[o++]=n}}N[o-1]=n;r=0;for(n=0;n<16;n++){F[n]=r;for(e=0;e<1<<P[n];e++){D[r++]=n}}r>>=7;for(;n<m;n++){F[n]=r<<7;for(e=0;e<1<<P[n]-7;e++){D[256+r++]=n}}for(t=0;t<=y;t++){a[t]=0}e=0;while(e<=143){I[e*2+1]=8;e++;a[8]++}while(e<=255){I[e*2+1]=9;e++;a[9]++}while(e<=279){I[e*2+1]=7;e++;a[7]++}while(e<=287){I[e*2+1]=8;e++;a[8]++}gen_codes(I,h+1,a);for(e=0;e<m;e++){B[e*2+1]=5;B[e*2]=bi_reverse(e,5)}M=new StaticTreeDesc(I,T,f+1,h,y);O=new StaticTreeDesc(B,P,0,m,y);$=new StaticTreeDesc(new Array(0),E,0,g,w)}function init_block(e){var t;for(t=0;t<h;t++){e.dyn_ltree[t*2]=0}for(t=0;t<m;t++){e.dyn_dtree[t*2]=0}for(t=0;t<g;t++){e.bl_tree[t*2]=0}e.dyn_ltree[x*2]=1;e.opt_len=e.static_len=0;e.last_lit=e.matches=0}function bi_windup(e){if(e.bi_valid>8){put_short(e,e.bi_buf)}else if(e.bi_valid>0){e.pending_buf[e.pending++]=e.bi_buf}e.bi_buf=0;e.bi_valid=0}function copy_block(e,t,o,r){bi_windup(e);if(r){put_short(e,o);put_short(e,~o)}n.arraySet(e.pending_buf,e.window,t,o,e.pending);e.pending+=o}function smaller(e,t,o,n){var r=t*2;var a=o*2;return e[r]<e[a]||e[r]===e[a]&&n[t]<=n[o]}function pqdownheap(e,t,o){var n=e.heap[o];var r=o<<1;while(r<=e.heap_len){if(r<e.heap_len&&smaller(t,e.heap[r+1],e.heap[r],e.depth)){r++}if(smaller(t,n,e.heap[r],e.depth)){break}e.heap[o]=e.heap[r];o=r;r<<=1}e.heap[o]=n}function compress_block(e,t,o){var n;var r;var a=0;var i;var s;if(e.last_lit!==0){do{n=e.pending_buf[e.d_buf+a*2]<<8|e.pending_buf[e.d_buf+a*2+1];r=e.pending_buf[e.l_buf+a];a++;if(n===0){send_code(e,r,t)}else{i=N[r];send_code(e,i+f+1,t);s=T[i];if(s!==0){r-=R[i];send_bits(e,r,s)}n--;i=d_code(n);send_code(e,i,o);s=P[i];if(s!==0){n-=F[i];send_bits(e,n,s)}}}while(a<e.last_lit)}send_code(e,x,t)}function build_tree(e,t){var o=t.dyn_tree;var n=t.stat_desc.static_tree;var r=t.stat_desc.has_stree;var a=t.stat_desc.elems;var i,s;var l=-1;var c;e.heap_len=0;e.heap_max=v;for(i=0;i<a;i++){if(o[i*2]!==0){e.heap[++e.heap_len]=l=i;e.depth[i]=0}else{o[i*2+1]=0}}while(e.heap_len<2){c=e.heap[++e.heap_len]=l<2?++l:0;o[c*2]=1;e.depth[c]=0;e.opt_len--;if(r){e.static_len-=n[c*2+1]}}t.max_code=l;for(i=e.heap_len>>1;i>=1;i--){pqdownheap(e,o,i)}c=a;do{i=e.heap[1];e.heap[1]=e.heap[e.heap_len--];pqdownheap(e,o,1);s=e.heap[1];e.heap[--e.heap_max]=i;e.heap[--e.heap_max]=s;o[c*2]=o[i*2]+o[s*2];e.depth[c]=(e.depth[i]>=e.depth[s]?e.depth[i]:e.depth[s])+1;o[i*2+1]=o[s*2+1]=c;e.heap[1]=c++;pqdownheap(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1];gen_bitlen(e,t);gen_codes(o,l,e.bl_count)}function scan_tree(e,t,o){var n;var r=-1;var a;var i=t[0*2+1];var s=0;var l=7;var c=4;if(i===0){l=138;c=3}t[(o+1)*2+1]=65535;for(n=0;n<=o;n++){a=i;i=t[(n+1)*2+1];if(++s<l&&a===i){continue}else if(s<c){e.bl_tree[a*2]+=s}else if(a!==0){if(a!==r){e.bl_tree[a*2]++}e.bl_tree[S*2]++}else if(s<=10){e.bl_tree[k*2]++}else{e.bl_tree[C*2]++}s=0;r=a;if(i===0){l=138;c=3}else if(a===i){l=6;c=3}else{l=7;c=4}}}function send_tree(e,t,o){var n;var r=-1;var a;var i=t[0*2+1];var s=0;var l=7;var c=4;if(i===0){l=138;c=3}for(n=0;n<=o;n++){a=i;i=t[(n+1)*2+1];if(++s<l&&a===i){continue}else if(s<c){do{send_code(e,a,e.bl_tree)}while(--s!==0)}else if(a!==0){if(a!==r){send_code(e,a,e.bl_tree);s--}send_code(e,S,e.bl_tree);send_bits(e,s-3,2)}else if(s<=10){send_code(e,k,e.bl_tree);send_bits(e,s-3,3)}else{send_code(e,C,e.bl_tree);send_bits(e,s-11,7)}s=0;r=a;if(i===0){l=138;c=3}else if(a===i){l=6;c=3}else{l=7;c=4}}}function build_bl_tree(e){var t;scan_tree(e,e.dyn_ltree,e.l_desc.max_code);scan_tree(e,e.dyn_dtree,e.d_desc.max_code);build_tree(e,e.bl_desc);for(t=g-1;t>=3;t--){if(e.bl_tree[_[t]*2+1]!==0){break}}e.opt_len+=3*(t+1)+5+5+4;return t}function send_all_trees(e,t,o,n){var r;send_bits(e,t-257,5);send_bits(e,o-1,5);send_bits(e,n-4,4);for(r=0;r<n;r++){send_bits(e,e.bl_tree[_[r]*2+1],3)}send_tree(e,e.dyn_ltree,t-1);send_tree(e,e.dyn_dtree,o-1)}function detect_data_type(e){var t=4093624447;var o;for(o=0;o<=31;o++,t>>>=1){if(t&1&&e.dyn_ltree[o*2]!==0){return a}}if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0){return i}for(o=32;o<f;o++){if(e.dyn_ltree[o*2]!==0){return i}}return a}var z=false;function _tr_init(e){if(!z){tr_static_init();z=true}e.l_desc=new TreeDesc(e.dyn_ltree,M);e.d_desc=new TreeDesc(e.dyn_dtree,O);e.bl_desc=new TreeDesc(e.bl_tree,$);e.bi_buf=0;e.bi_valid=0;init_block(e)}function _tr_stored_block(e,t,o,n){send_bits(e,(l<<1)+(n?1:0),3);copy_block(e,t,o,true)}function _tr_align(e){send_bits(e,c<<1,3);send_code(e,x,I);bi_flush(e)}function _tr_flush_block(e,t,o,n){var a,i;var l=0;if(e.level>0){if(e.strm.data_type===s){e.strm.data_type=detect_data_type(e)}build_tree(e,e.l_desc);build_tree(e,e.d_desc);l=build_bl_tree(e);a=e.opt_len+3+7>>>3;i=e.static_len+3+7>>>3;if(i<=a){a=i}}else{a=i=o+5}if(o+4<=a&&t!==-1){_tr_stored_block(e,t,o,n)}else if(e.strategy===r||i===a){send_bits(e,(c<<1)+(n?1:0),3);compress_block(e,I,B)}else{send_bits(e,(d<<1)+(n?1:0),3);send_all_trees(e,e.l_desc.max_code+1,e.d_desc.max_code+1,l+1);compress_block(e,e.dyn_ltree,e.dyn_dtree)}init_block(e);if(n){bi_windup(e)}}function _tr_tally(e,t,o){e.pending_buf[e.d_buf+e.last_lit*2]=t>>>8&255;e.pending_buf[e.d_buf+e.last_lit*2+1]=t&255;e.pending_buf[e.l_buf+e.last_lit]=o&255;e.last_lit++;if(t===0){e.dyn_ltree[o*2]++}else{e.matches++;t--;e.dyn_ltree[(N[o]+f+1)*2]++;e.dyn_dtree[d_code(t)*2]++}return e.last_lit===e.lit_bufsize-1}t._tr_init=_tr_init;t._tr_stored_block=_tr_stored_block;t._tr_flush_block=_tr_flush_block;t._tr_tally=_tr_tally;t._tr_align=_tr_align},2239:e=>{"use strict";function ZStream(){this.input=null;this.next_in=0;this.avail_in=0;this.total_in=0;this.output=null;this.next_out=0;this.avail_out=0;this.total_out=0;this.msg="";this.state=null;this.data_type=2;this.adler=0}e.exports=ZStream},8394:(e,t,o)=>{"use strict";var n=o(3016);function __awaiter(e,t,o,n){function adopt(e){return e instanceof o?e:new o((function(t){t(e)}))}return new(o||(o=Promise))((function(o,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){r(e)}}function step(e){e.done?o(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))}typeof SuppressedError==="function"?SuppressedError:function(e,t,o){var n=new Error(o);return n.name="SuppressedError",n.error=e,n.suppressed=t,n};const r=914400;const a=12700;const i="\r\n";const s=2147483649;const l=/^[0-9a-fA-F]{6}$/;const c=1.67;const d=27;const u={type:"solid",color:"666666",pt:1};const p=[.05,.1,.05,.1];const A={color:"363636",pt:1};const f={color:"888888",style:"solid",size:1,cap:"flat"};const h="000000";const m=12;const g=18;const v="LAYOUT_16x9";const y="DEFAULT";const b="333333";const w={type:"outer",blur:3,offset:23e3/12700,angle:90,color:"000000",opacity:.35,rotateWithShape:true};const x=[.5,.5,.5,.5];const S={color:"000000"};const k={size:8,color:"FFFFFF",opacity:.75};const C="2094734552";const T="2094734553";const P="2094734554";const E="2094734555";const _="2094734556";const L="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");const I=["C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360","C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360"];const B=["5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7","5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7"];var D;(function(e){e["left"]="left";e["center"]="center";e["right"]="right";e["justify"]="justify"})(D||(D={}));var N;(function(e){e["b"]="b";e["ctr"]="ctr";e["t"]="t"})(N||(N={}));const R="{F7021451-1387-4CA6-816F-3879F97B5CBC}";var F;(function(e){e["arraybuffer"]="arraybuffer";e["base64"]="base64";e["binarystring"]="binarystring";e["blob"]="blob";e["nodebuffer"]="nodebuffer";e["uint8array"]="uint8array"})(F||(F={}));var M;(function(e){e["area"]="area";e["bar"]="bar";e["bar3d"]="bar3D";e["bubble"]="bubble";e["bubble3d"]="bubble3D";e["doughnut"]="doughnut";e["line"]="line";e["pie"]="pie";e["radar"]="radar";e["scatter"]="scatter"})(M||(M={}));var O;(function(e){e["accentBorderCallout1"]="accentBorderCallout1";e["accentBorderCallout2"]="accentBorderCallout2";e["accentBorderCallout3"]="accentBorderCallout3";e["accentCallout1"]="accentCallout1";e["accentCallout2"]="accentCallout2";e["accentCallout3"]="accentCallout3";e["actionButtonBackPrevious"]="actionButtonBackPrevious";e["actionButtonBeginning"]="actionButtonBeginning";e["actionButtonBlank"]="actionButtonBlank";e["actionButtonDocument"]="actionButtonDocument";e["actionButtonEnd"]="actionButtonEnd";e["actionButtonForwardNext"]="actionButtonForwardNext";e["actionButtonHelp"]="actionButtonHelp";e["actionButtonHome"]="actionButtonHome";e["actionButtonInformation"]="actionButtonInformation";e["actionButtonMovie"]="actionButtonMovie";e["actionButtonReturn"]="actionButtonReturn";e["actionButtonSound"]="actionButtonSound";e["arc"]="arc";e["bentArrow"]="bentArrow";e["bentUpArrow"]="bentUpArrow";e["bevel"]="bevel";e["blockArc"]="blockArc";e["borderCallout1"]="borderCallout1";e["borderCallout2"]="borderCallout2";e["borderCallout3"]="borderCallout3";e["bracePair"]="bracePair";e["bracketPair"]="bracketPair";e["callout1"]="callout1";e["callout2"]="callout2";e["callout3"]="callout3";e["can"]="can";e["chartPlus"]="chartPlus";e["chartStar"]="chartStar";e["chartX"]="chartX";e["chevron"]="chevron";e["chord"]="chord";e["circularArrow"]="circularArrow";e["cloud"]="cloud";e["cloudCallout"]="cloudCallout";e["corner"]="corner";e["cornerTabs"]="cornerTabs";e["cube"]="cube";e["curvedDownArrow"]="curvedDownArrow";e["curvedLeftArrow"]="curvedLeftArrow";e["curvedRightArrow"]="curvedRightArrow";e["curvedUpArrow"]="curvedUpArrow";e["custGeom"]="custGeom";e["decagon"]="decagon";e["diagStripe"]="diagStripe";e["diamond"]="diamond";e["dodecagon"]="dodecagon";e["donut"]="donut";e["doubleWave"]="doubleWave";e["downArrow"]="downArrow";e["downArrowCallout"]="downArrowCallout";e["ellipse"]="ellipse";e["ellipseRibbon"]="ellipseRibbon";e["ellipseRibbon2"]="ellipseRibbon2";e["flowChartAlternateProcess"]="flowChartAlternateProcess";e["flowChartCollate"]="flowChartCollate";e["flowChartConnector"]="flowChartConnector";e["flowChartDecision"]="flowChartDecision";e["flowChartDelay"]="flowChartDelay";e["flowChartDisplay"]="flowChartDisplay";e["flowChartDocument"]="flowChartDocument";e["flowChartExtract"]="flowChartExtract";e["flowChartInputOutput"]="flowChartInputOutput";e["flowChartInternalStorage"]="flowChartInternalStorage";e["flowChartMagneticDisk"]="flowChartMagneticDisk";e["flowChartMagneticDrum"]="flowChartMagneticDrum";e["flowChartMagneticTape"]="flowChartMagneticTape";e["flowChartManualInput"]="flowChartManualInput";e["flowChartManualOperation"]="flowChartManualOperation";e["flowChartMerge"]="flowChartMerge";e["flowChartMultidocument"]="flowChartMultidocument";e["flowChartOfflineStorage"]="flowChartOfflineStorage";e["flowChartOffpageConnector"]="flowChartOffpageConnector";e["flowChartOnlineStorage"]="flowChartOnlineStorage";e["flowChartOr"]="flowChartOr";e["flowChartPredefinedProcess"]="flowChartPredefinedProcess";e["flowChartPreparation"]="flowChartPreparation";e["flowChartProcess"]="flowChartProcess";e["flowChartPunchedCard"]="flowChartPunchedCard";e["flowChartPunchedTape"]="flowChartPunchedTape";e["flowChartSort"]="flowChartSort";e["flowChartSummingJunction"]="flowChartSummingJunction";e["flowChartTerminator"]="flowChartTerminator";e["folderCorner"]="folderCorner";e["frame"]="frame";e["funnel"]="funnel";e["gear6"]="gear6";e["gear9"]="gear9";e["halfFrame"]="halfFrame";e["heart"]="heart";e["heptagon"]="heptagon";e["hexagon"]="hexagon";e["homePlate"]="homePlate";e["horizontalScroll"]="horizontalScroll";e["irregularSeal1"]="irregularSeal1";e["irregularSeal2"]="irregularSeal2";e["leftArrow"]="leftArrow";e["leftArrowCallout"]="leftArrowCallout";e["leftBrace"]="leftBrace";e["leftBracket"]="leftBracket";e["leftCircularArrow"]="leftCircularArrow";e["leftRightArrow"]="leftRightArrow";e["leftRightArrowCallout"]="leftRightArrowCallout";e["leftRightCircularArrow"]="leftRightCircularArrow";e["leftRightRibbon"]="leftRightRibbon";e["leftRightUpArrow"]="leftRightUpArrow";e["leftUpArrow"]="leftUpArrow";e["lightningBolt"]="lightningBolt";e["line"]="line";e["lineInv"]="lineInv";e["mathDivide"]="mathDivide";e["mathEqual"]="mathEqual";e["mathMinus"]="mathMinus";e["mathMultiply"]="mathMultiply";e["mathNotEqual"]="mathNotEqual";e["mathPlus"]="mathPlus";e["moon"]="moon";e["noSmoking"]="noSmoking";e["nonIsoscelesTrapezoid"]="nonIsoscelesTrapezoid";e["notchedRightArrow"]="notchedRightArrow";e["octagon"]="octagon";e["parallelogram"]="parallelogram";e["pentagon"]="pentagon";e["pie"]="pie";e["pieWedge"]="pieWedge";e["plaque"]="plaque";e["plaqueTabs"]="plaqueTabs";e["plus"]="plus";e["quadArrow"]="quadArrow";e["quadArrowCallout"]="quadArrowCallout";e["rect"]="rect";e["ribbon"]="ribbon";e["ribbon2"]="ribbon2";e["rightArrow"]="rightArrow";e["rightArrowCallout"]="rightArrowCallout";e["rightBrace"]="rightBrace";e["rightBracket"]="rightBracket";e["round1Rect"]="round1Rect";e["round2DiagRect"]="round2DiagRect";e["round2SameRect"]="round2SameRect";e["roundRect"]="roundRect";e["rtTriangle"]="rtTriangle";e["smileyFace"]="smileyFace";e["snip1Rect"]="snip1Rect";e["snip2DiagRect"]="snip2DiagRect";e["snip2SameRect"]="snip2SameRect";e["snipRoundRect"]="snipRoundRect";e["squareTabs"]="squareTabs";e["star10"]="star10";e["star12"]="star12";e["star16"]="star16";e["star24"]="star24";e["star32"]="star32";e["star4"]="star4";e["star5"]="star5";e["star6"]="star6";e["star7"]="star7";e["star8"]="star8";e["stripedRightArrow"]="stripedRightArrow";e["sun"]="sun";e["swooshArrow"]="swooshArrow";e["teardrop"]="teardrop";e["trapezoid"]="trapezoid";e["triangle"]="triangle";e["upArrow"]="upArrow";e["upArrowCallout"]="upArrowCallout";e["upDownArrow"]="upDownArrow";e["upDownArrowCallout"]="upDownArrowCallout";e["uturnArrow"]="uturnArrow";e["verticalScroll"]="verticalScroll";e["wave"]="wave";e["wedgeEllipseCallout"]="wedgeEllipseCallout";e["wedgeRectCallout"]="wedgeRectCallout";e["wedgeRoundRectCallout"]="wedgeRoundRectCallout"})(O||(O={}));var $;(function(e){e["text1"]="tx1";e["text2"]="tx2";e["background1"]="bg1";e["background2"]="bg2";e["accent1"]="accent1";e["accent2"]="accent2";e["accent3"]="accent3";e["accent4"]="accent4";e["accent5"]="accent5";e["accent6"]="accent6"})($||($={}));var z;(function(e){e["left"]="left";e["center"]="center";e["right"]="right";e["justify"]="justify"})(z||(z={}));var j;(function(e){e["top"]="top";e["middle"]="middle";e["bottom"]="bottom"})(j||(j={}));var U;(function(e){e["ACTION_BUTTON_BACK_OR_PREVIOUS"]="actionButtonBackPrevious";e["ACTION_BUTTON_BEGINNING"]="actionButtonBeginning";e["ACTION_BUTTON_CUSTOM"]="actionButtonBlank";e["ACTION_BUTTON_DOCUMENT"]="actionButtonDocument";e["ACTION_BUTTON_END"]="actionButtonEnd";e["ACTION_BUTTON_FORWARD_OR_NEXT"]="actionButtonForwardNext";e["ACTION_BUTTON_HELP"]="actionButtonHelp";e["ACTION_BUTTON_HOME"]="actionButtonHome";e["ACTION_BUTTON_INFORMATION"]="actionButtonInformation";e["ACTION_BUTTON_MOVIE"]="actionButtonMovie";e["ACTION_BUTTON_RETURN"]="actionButtonReturn";e["ACTION_BUTTON_SOUND"]="actionButtonSound";e["ARC"]="arc";e["BALLOON"]="wedgeRoundRectCallout";e["BENT_ARROW"]="bentArrow";e["BENT_UP_ARROW"]="bentUpArrow";e["BEVEL"]="bevel";e["BLOCK_ARC"]="blockArc";e["CAN"]="can";e["CHART_PLUS"]="chartPlus";e["CHART_STAR"]="chartStar";e["CHART_X"]="chartX";e["CHEVRON"]="chevron";e["CHORD"]="chord";e["CIRCULAR_ARROW"]="circularArrow";e["CLOUD"]="cloud";e["CLOUD_CALLOUT"]="cloudCallout";e["CORNER"]="corner";e["CORNER_TABS"]="cornerTabs";e["CROSS"]="plus";e["CUBE"]="cube";e["CURVED_DOWN_ARROW"]="curvedDownArrow";e["CURVED_DOWN_RIBBON"]="ellipseRibbon";e["CURVED_LEFT_ARROW"]="curvedLeftArrow";e["CURVED_RIGHT_ARROW"]="curvedRightArrow";e["CURVED_UP_ARROW"]="curvedUpArrow";e["CURVED_UP_RIBBON"]="ellipseRibbon2";e["CUSTOM_GEOMETRY"]="custGeom";e["DECAGON"]="decagon";e["DIAGONAL_STRIPE"]="diagStripe";e["DIAMOND"]="diamond";e["DODECAGON"]="dodecagon";e["DONUT"]="donut";e["DOUBLE_BRACE"]="bracePair";e["DOUBLE_BRACKET"]="bracketPair";e["DOUBLE_WAVE"]="doubleWave";e["DOWN_ARROW"]="downArrow";e["DOWN_ARROW_CALLOUT"]="downArrowCallout";e["DOWN_RIBBON"]="ribbon";e["EXPLOSION1"]="irregularSeal1";e["EXPLOSION2"]="irregularSeal2";e["FLOWCHART_ALTERNATE_PROCESS"]="flowChartAlternateProcess";e["FLOWCHART_CARD"]="flowChartPunchedCard";e["FLOWCHART_COLLATE"]="flowChartCollate";e["FLOWCHART_CONNECTOR"]="flowChartConnector";e["FLOWCHART_DATA"]="flowChartInputOutput";e["FLOWCHART_DECISION"]="flowChartDecision";e["FLOWCHART_DELAY"]="flowChartDelay";e["FLOWCHART_DIRECT_ACCESS_STORAGE"]="flowChartMagneticDrum";e["FLOWCHART_DISPLAY"]="flowChartDisplay";e["FLOWCHART_DOCUMENT"]="flowChartDocument";e["FLOWCHART_EXTRACT"]="flowChartExtract";e["FLOWCHART_INTERNAL_STORAGE"]="flowChartInternalStorage";e["FLOWCHART_MAGNETIC_DISK"]="flowChartMagneticDisk";e["FLOWCHART_MANUAL_INPUT"]="flowChartManualInput";e["FLOWCHART_MANUAL_OPERATION"]="flowChartManualOperation";e["FLOWCHART_MERGE"]="flowChartMerge";e["FLOWCHART_MULTIDOCUMENT"]="flowChartMultidocument";e["FLOWCHART_OFFLINE_STORAGE"]="flowChartOfflineStorage";e["FLOWCHART_OFFPAGE_CONNECTOR"]="flowChartOffpageConnector";e["FLOWCHART_OR"]="flowChartOr";e["FLOWCHART_PREDEFINED_PROCESS"]="flowChartPredefinedProcess";e["FLOWCHART_PREPARATION"]="flowChartPreparation";e["FLOWCHART_PROCESS"]="flowChartProcess";e["FLOWCHART_PUNCHED_TAPE"]="flowChartPunchedTape";e["FLOWCHART_SEQUENTIAL_ACCESS_STORAGE"]="flowChartMagneticTape";e["FLOWCHART_SORT"]="flowChartSort";e["FLOWCHART_STORED_DATA"]="flowChartOnlineStorage";e["FLOWCHART_SUMMING_JUNCTION"]="flowChartSummingJunction";e["FLOWCHART_TERMINATOR"]="flowChartTerminator";e["FOLDED_CORNER"]="folderCorner";e["FRAME"]="frame";e["FUNNEL"]="funnel";e["GEAR_6"]="gear6";e["GEAR_9"]="gear9";e["HALF_FRAME"]="halfFrame";e["HEART"]="heart";e["HEPTAGON"]="heptagon";e["HEXAGON"]="hexagon";e["HORIZONTAL_SCROLL"]="horizontalScroll";e["ISOSCELES_TRIANGLE"]="triangle";e["LEFT_ARROW"]="leftArrow";e["LEFT_ARROW_CALLOUT"]="leftArrowCallout";e["LEFT_BRACE"]="leftBrace";e["LEFT_BRACKET"]="leftBracket";e["LEFT_CIRCULAR_ARROW"]="leftCircularArrow";e["LEFT_RIGHT_ARROW"]="leftRightArrow";e["LEFT_RIGHT_ARROW_CALLOUT"]="leftRightArrowCallout";e["LEFT_RIGHT_CIRCULAR_ARROW"]="leftRightCircularArrow";e["LEFT_RIGHT_RIBBON"]="leftRightRibbon";e["LEFT_RIGHT_UP_ARROW"]="leftRightUpArrow";e["LEFT_UP_ARROW"]="leftUpArrow";e["LIGHTNING_BOLT"]="lightningBolt";e["LINE_CALLOUT_1"]="borderCallout1";e["LINE_CALLOUT_1_ACCENT_BAR"]="accentCallout1";e["LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR"]="accentBorderCallout1";e["LINE_CALLOUT_1_NO_BORDER"]="callout1";e["LINE_CALLOUT_2"]="borderCallout2";e["LINE_CALLOUT_2_ACCENT_BAR"]="accentCallout2";e["LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR"]="accentBorderCallout2";e["LINE_CALLOUT_2_NO_BORDER"]="callout2";e["LINE_CALLOUT_3"]="borderCallout3";e["LINE_CALLOUT_3_ACCENT_BAR"]="accentCallout3";e["LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR"]="accentBorderCallout3";e["LINE_CALLOUT_3_NO_BORDER"]="callout3";e["LINE_CALLOUT_4"]="borderCallout4";e["LINE_CALLOUT_4_ACCENT_BAR"]="accentCallout3=4";e["LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR"]="accentBorderCallout4";e["LINE_CALLOUT_4_NO_BORDER"]="callout4";e["LINE"]="line";e["LINE_INVERSE"]="lineInv";e["MATH_DIVIDE"]="mathDivide";e["MATH_EQUAL"]="mathEqual";e["MATH_MINUS"]="mathMinus";e["MATH_MULTIPLY"]="mathMultiply";e["MATH_NOT_EQUAL"]="mathNotEqual";e["MATH_PLUS"]="mathPlus";e["MOON"]="moon";e["NON_ISOSCELES_TRAPEZOID"]="nonIsoscelesTrapezoid";e["NOTCHED_RIGHT_ARROW"]="notchedRightArrow";e["NO_SYMBOL"]="noSmoking";e["OCTAGON"]="octagon";e["OVAL"]="ellipse";e["OVAL_CALLOUT"]="wedgeEllipseCallout";e["PARALLELOGRAM"]="parallelogram";e["PENTAGON"]="homePlate";e["PIE"]="pie";e["PIE_WEDGE"]="pieWedge";e["PLAQUE"]="plaque";e["PLAQUE_TABS"]="plaqueTabs";e["QUAD_ARROW"]="quadArrow";e["QUAD_ARROW_CALLOUT"]="quadArrowCallout";e["RECTANGLE"]="rect";e["RECTANGULAR_CALLOUT"]="wedgeRectCallout";e["REGULAR_PENTAGON"]="pentagon";e["RIGHT_ARROW"]="rightArrow";e["RIGHT_ARROW_CALLOUT"]="rightArrowCallout";e["RIGHT_BRACE"]="rightBrace";e["RIGHT_BRACKET"]="rightBracket";e["RIGHT_TRIANGLE"]="rtTriangle";e["ROUNDED_RECTANGLE"]="roundRect";e["ROUNDED_RECTANGULAR_CALLOUT"]="wedgeRoundRectCallout";e["ROUND_1_RECTANGLE"]="round1Rect";e["ROUND_2_DIAG_RECTANGLE"]="round2DiagRect";e["ROUND_2_SAME_RECTANGLE"]="round2SameRect";e["SMILEY_FACE"]="smileyFace";e["SNIP_1_RECTANGLE"]="snip1Rect";e["SNIP_2_DIAG_RECTANGLE"]="snip2DiagRect";e["SNIP_2_SAME_RECTANGLE"]="snip2SameRect";e["SNIP_ROUND_RECTANGLE"]="snipRoundRect";e["SQUARE_TABS"]="squareTabs";e["STAR_10_POINT"]="star10";e["STAR_12_POINT"]="star12";e["STAR_16_POINT"]="star16";e["STAR_24_POINT"]="star24";e["STAR_32_POINT"]="star32";e["STAR_4_POINT"]="star4";e["STAR_5_POINT"]="star5";e["STAR_6_POINT"]="star6";e["STAR_7_POINT"]="star7";e["STAR_8_POINT"]="star8";e["STRIPED_RIGHT_ARROW"]="stripedRightArrow";e["SUN"]="sun";e["SWOOSH_ARROW"]="swooshArrow";e["TEAR"]="teardrop";e["TRAPEZOID"]="trapezoid";e["UP_ARROW"]="upArrow";e["UP_ARROW_CALLOUT"]="upArrowCallout";e["UP_DOWN_ARROW"]="upDownArrow";e["UP_DOWN_ARROW_CALLOUT"]="upDownArrowCallout";e["UP_RIBBON"]="ribbon2";e["U_TURN_ARROW"]="uturnArrow";e["VERTICAL_SCROLL"]="verticalScroll";e["WAVE"]="wave"})(U||(U={}));var W;(function(e){e["AREA"]="area";e["BAR"]="bar";e["BAR3D"]="bar3D";e["BUBBLE"]="bubble";e["BUBBLE3D"]="bubble3D";e["DOUGHNUT"]="doughnut";e["LINE"]="line";e["PIE"]="pie";e["RADAR"]="radar";e["SCATTER"]="scatter"})(W||(W={}));var q;(function(e){e["TEXT1"]="tx1";e["TEXT2"]="tx2";e["BACKGROUND1"]="bg1";e["BACKGROUND2"]="bg2";e["ACCENT1"]="accent1";e["ACCENT2"]="accent2";e["ACCENT3"]="accent3";e["ACCENT4"]="accent4";e["ACCENT5"]="accent5";e["ACCENT6"]="accent6"})(q||(q={}));var G;(function(e){e["chart"]="chart";e["image"]="image";e["line"]="line";e["rect"]="rect";e["text"]="text";e["placeholder"]="placeholder"})(G||(G={}));var X;(function(e){e["chart"]="chart";e["hyperlink"]="hyperlink";e["image"]="image";e["media"]="media";e["online"]="online";e["placeholder"]="placeholder";e["table"]="table";e["tablecell"]="tablecell";e["text"]="text";e["notes"]="notes"})(X||(X={}));var H;(function(e){e["title"]="title";e["body"]="body";e["image"]="pic";e["chart"]="chart";e["table"]="tbl";e["media"]="media"})(H||(H={}));var Q;(function(e){e["DEFAULT"]="•";e["CHECK"]="✓";e["STAR"]="★";e["TRIANGLE"]="▶"})(Q||(Q={}));const V="data:image/png;base64,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";const Y="data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibjeqq+vj6lTpwoNdqK2bdvG6NGj47zzzovhw4crggGaoBdeeCHq6+sTMWsmkyk844wzDpUaAAB+wgAAsIP079//C0mZdc6cObFhwwahwS7QqVOnOPnkk+Pf/u3fYu+9945MJmMpAE3Ehg0bYvbs2YmZd8CAAR4DDQCAAhgAYEf43ve+16mysnKPpMybpMcbQlp17tw5xowZE7/61a8UwQBNyPPPP5+YWSsrKwd/73vf6yQ1AID8pgAGANgBTj755CMiIhHtzcqVK+P1118XGjQRXbt2jTFjxsQ555wTgwcPthCAXez111+PlStXJmXczMknn3y41AAA8psCGABgB+jXr19iHv88ZcqUyOVyQoMmpnfv3nHaaafFOeecE/3797cQgF0kl8vFlClTknQd6jHQAAB5TgEMALCdnX766d0qKip2S8Ks9fX1MW3aNKFBE9anT58466yz4pxzzonddtvNQgB2gWnTpkV9fX0iZq2oqNjt9NNP7yY1AID8pQAGANjORo8efURSZp03b15s3LhRaJAAffr0ibPPPjvOPPPM6Nmzp4UA7EQbN26MefPmuR4FACARFMAAANtZr169EvPetSQ9zhD4bwMGDIhf/vKXceaZZ0b37t0tBGAnmTp1apKuRw+TGABA/lIAAwBsR2eccUb38vLyvkmYdf369fHaa68JDRJqwIAB8S//8i9x2mmnRbdunvQJsKPNnz8/Pvzww0TMWl5e3u9HP/pRF6kBAOQnBTAAwHZ03HHHHZSUWWfMmBGNjY1CgwTLZDIxePDg+Nd//dcYM2ZMdOjQwVIAdpDGxsaYMWNGYub9xje+cYjUAADykwIYAGA76tOnz8FJmDOXyyXqMYbAlmUymdh7773jwgsvjDFjxkT79u0tBWAHeOGFF5J0XXqIxAAA8pMCGABgOznppJPat2zZcvckzLpkyZJYuXKl0CBl/loEX3DBBXHyySdH27ZtLQVgO1qxYkW8/fbbiZi1srJy0PHHH+8PAgCAPKQABgDYTr773e8eGBGZJMyapMcXAluvsLAwhg8fHhdeeGGMHj06KisrLQVgO5k+fXpSRi34/ve/f6DEAADyjwIYAGA72X333Q9Nwpz19fUxc+ZMgUEeKCoqihEjRsQll1wSo0ePjpYtW1oKwGc0c+bMqK+vT8SsAwcOPFRiAAD5RwEMALAdHHTQQRUtW7bcKwmzLly4MKqrq4UGeeSvRfDFF18cJ5xwQrRo0cJSALZRVVVVvP7664mYtVWrVkOHDx9eLjUAgPyiAAYA2A7OPvvsz2cymaIkzOrxz5C/iouL47DDDouxY8fGqFGjoqyszFIAtkFSnqaSyWSy55577uclBgCQXxTAAADbwe67735AEuasra2NOXPmCAzyXHFxcYwcOTIuvfRSRTDANpg9e3bU1dUlYtY99tjjAIkBAOQXBTAAwGfUqlWrwnbt2u2fhFnnzZsXtbW1QgMiIqKkpCRGjhwZY8eOjaOPPjpKSkosBeBT2LRpU8ybNy8Rs7Zv337/iooKPwMEAMgjLv4AAD6jCy+8cPeioqKKJMz64osvCgz4P5o3bx5HHXVUXHLJJTFy5MjIZrOWAvAJZs2alYg5i4qKWlx88cWDJAYAkD8UwAAAn9GBBx6YiMfqVVdXJ+ZOFWDXKC8vj1GjRsWll16qCAb4BPPmzYuamppEzHrQQQd5DDQAQB5RAAMAfEZdu3YdnoQ5582bF/X19QIDPlFFRUWMGjUqLr744jj88MOjqKjIUgD+QV1dXbz66quJmLVLly77SwwAIH8ogAEAPoNTTjmlY3l5+W5JmPXll18WGLBVWrVqFccff3xcdNFFMWLEiCgo8C0kwN966aWXEjFnRUXFbieddFJ7iQEA5AffvQMAfAYnnnji55MwZ21tbcyfP19gwDZp06ZNjB49OsaOHasIBvgb8+fPj9ra2iSMmvnud7/7eYkBAOQH37UDAHwGn/vc5/ZLwpwLFy6Muro6gQGfyV+L4PPOOy+GDx+uCAby3ubNm2PhwoWJmLVfv37DJQYAkB98tw4AsI1atWpV2Lp1672TMKvHPwPbU6dOneLkk0+Oc889NwYNGmQhQF6bPXt2IuZs06bN3hUVFX4WCACQB1z0AQBso/PPP39gYWFheVOfs76+PubMmSMwYLvr2bNn/OQnP4nzzjsv9t5778hkMpYC5J3Zs2dHfX19k5+zqKio4vzzzx8oMQCA9FMAAwBso/3333/fJMz5+uuvR01NjcCAHaZLly4xZsyYOOecc2Lw4MEWAuSV6urqeOONNxIx64EHHriPxAAA0k8BDACwjbp27ZqIxz/PnTtXWMBO0bt37zjttNPinHPOif79+1sIkDeScr3VvXv3vaUFAJB+CmAAgG0wZMiQ0srKyj2a+py5XM7jn4Gdrk+fPnHWWWfFOeecE7vttpuFAKk3e/bsyOVyTX7Oli1b7jlo0KBSiQEApJsCGABgG5x55pl7ZjKZbFOfc9myZbFu3TqBAbtEnz594uyzz44zzzwzevbsaSFAaq1bty6WL1/e5OfMZDLZs846a4jEAADSrcgKAAC23tChQ4clYc558+YJC9jlBgwYEAMGDIgFCxbE+PHjY+nSpZYCpM68efOiS5cuTX7OffbZZ5+ImC4xAID0cgcwAMA26Nix4z5JmHP+/PnCApqMAQMGxC9/+cs47bTTolu3bhYCpEpSrrs6deq0j7QAANJNAQwAsJWOOOKIlhUVFf2a+pxVVVWxaNEigQFNSiaTicGDB8e//uu/xpgxY6JDhw6WAqTCW2+9FVVVVU1+zoqKis8deuihLSQGAJBeCmAAgK108sknD46ITFOfc/78+dHY2CgwoEnKZDKx9957x4UXXhhjxoyJ9u3bWwqQaI2NjbFgwYJE/Cv4u9/97h4SAwBILwUwAMBW2n333fdMwpze/wskwV+L4AsuuCBOPvnkaNu2raUAiZWU66/BgwfvKS0AgPQqsgIAgK3Trl27wU19xlwul5Q7UAAiIqKwsDCGDx8e++yzT0ybNi0mTJgQ69evtxggURYsWBC5XC4ymab9sJgOHToMlhYAQHq5AxgAYCsMGjSotGXLlgOa+pzvvfdebNy4UWBA4hQVFcWIESPikksuidGjR0fLli0tBUiMDz/8MJYtW9bk52zZsuXA/v37l0gMACCdFMAAAFvhxz/+8aBMJtPkn6Li7l8g6f5aBI8dOzZOOOGEaNGihaUAibBw4cImP2Mmk8n+5Cc/GSAtAIB0UgADAGyFvffee88kzJmEHzwCfBrNmjWLww47LMaOHRujRo2KsrIySwGatKT8Il5SrmsBANh63gEMALAVunbtOqSpz1hfXx9vvvmmsIBUKS4ujpEjR8bBBx8czz77bDz++ONRXV1tMUCT8+abb0Z9fX0UFTXtH7t16dJlT2kBAKSTO4ABAD6lioqKgoqKikFNfc4lS5bE5s2bBQakUklJSYwcOTLGjh0bRx99dJSUeIUl0LTU1tbG0qVLm/ycLVu2HFRaWupngwAAKeQiDwDgUzr77LP7FhYWNvlnj7722mvCAlKvefPmcdRRR8Ull1wSI0eOjGbNmlkK4HpsKxQWFpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee2kNaAADp4A5gAIAt2Hvvvfs29RlXrlwZtbW1wgLYSf5aBO+5554xa9asmDBhQqxevdpigI9UW1sb77//fnTu3LlJzzls2LC+EbFIYgAAyecOYACALejRo0eTL4DfeecdQQHsAoWFhTF8+PC48MILY/To0VFZWWkpQGKv15Jw3QsAwKejAAYA2ILWrVs3+ff/vvvuu4IC2IUKCwtjxIgRcckll8To0aOjZcuWlgIk7notCde9AAB8Oh4BDQCwBc2bN+/Z1GdUAAM0kW+wi4pixIgRsd9++8WUKVPiscceiw0bNlgMEO+9914SrnsVwAAAKeEOYACAj9G/f/+SkpKSjk19TgUwQNPSrFmzOOyww2Ls2LExatSoKCsrsxTIc0m4XistLe3Ut2/fYmkBACSfAhgA4GOccMIJ3Zr69dK6deuiqqpKWABNUHFxcYwcOTJ+/etfK4Ihz1VVVcX69eub+pgF3/zmN7tLCwAg+RTAAAAfY8iQIT2b+oxJeJwgQL77axE8duzYOProo6OkpMRSIA8l4botCde/AAB8MgUwAMDH6N69e8+mPqPHPwMkR/PmzeOoo46KSy65JEaOHBnNmjWzFMgjSbhuS8L1LwAAn0wBDADwMVq1atWjqc+4bNkyQQEkTHl5eYwaNSr+/d//PUaOHBnZbNZSIA8k4botCde/AAB8MgUwAMDHqKio6NXUZ1y+fLmgAJL750yMGjUqLr744jj88MOjqKjIUiDFknDd1rJly16SAgBIPgUwAMBHyGazmbKysq5NecbGxsZYtWqVsAASrlWrVnH88cfHxRdfHCNGjIiCAt+qQxqtWrUqGhsbm/SMJSUlXbPZbEZaAADJ5rtKAICPcNxxx7UrKCgobsozrl69Ourr64UFkBKtW7eO0aNHx9ixYxXBkEJ1dXXxwQcfNOkZCwoKio877rh20gIASDbfTQIAfITPf/7zXZr6jO+//76gAFKoTZs2MXr06Dj//PNj+PDhimBIkRUrVrgOBgBgh/NdJP+PvTuPr7I888d/nSwEkhD2HUQEUVRAoIiouCtq64Jabd1arVorbqO2tlXbaavTOu38Rqffdmpbu9rWpYogsqgFRXCttAIKArJDgAAJBLKQ5JzfH8WO4+DOcp6T9/v18jWvTv657ut6hNvnk/t+AICd2G+//bL+xVcSXiAC8PF17do1Lr300rj99ttj2LBhkUq5lRWSLgn7tyTsgwEAeH8FWgAA8H917txZAAxAVujevXtceeWVsXr16njiiSdi9uzZkclkNAYSKAn7tyTsgwEAeH8CYACAnWjXrp0roAHIKj169Igrr7wyli5dGpMmTYo5c+ZoCiRMEvZvSdgHAwDw/gTAAAA7UVxc3D3baxQAAzRPffr0ibFjx8aSJUti/PjxsWDBAk2BhEjC/i0J+2AAAN6fbwADAOxESUlJz2yur7q6Ourq6gwKoBnbb7/94l/+5V/ia1/7WhxwwAEaAglQV1cX1dXV9sEAAOxWAmAAgHc5/PDDSwsKCtpmc40VFRUGBUBERPTt2zduvPHGuOGGG2LffffVEMhy2b6PKygoaDt8+PASkwIASC4BMADAu5x44oldsr3GDRs2GBQA/8uAAQPiG9/4Rtxwww3Ru3dvDQH7uE+yH+5qUgAAyeUbwAAA79KvX7+sD4DXr19vUADs1IABA+LAAw+MuXPnxoQJE2LlypWaAlkkCTe5HHDAAV0i4i3TAgBIJgEwAMC7dO/evXO21+gEMADvJ5VKxaBBg2LgwIExe/bsGD9+fKxbt05jwD4uZ/bDAAC8NwEwAMC7tG/fvlO21ygABuDDSKVSMWzYsBg6dGjMnj07HnvsMbdIwF6WhBPASdgPAwDw3gTAAADv0rp166w/8ZCEF4cAZI+3g+BDDz00XnnllZg4caK/S8A+LtH7YQAA3psAGADgXUpKSrL6xENjY2Ns3rzZoAD4yPLz8+Pwww+P4cOHx/PPPx8TJ06MqqoqjYE9aPPmzdHY2BgFBdn7Wi7b98MAALw/ATAAwLu0bNmySzbXV1lZGZlMxqAA+Njy8/Nj1KhRMXLkyHjhhRcEwbAHZTKZqKqqio4dO9oPAwCwWwiAAQDepaioKKuvvKusrDQkAHaJgoKCGDVqVIwYMSJmzpwZkydPji1btmgM7IH9XDYHwNm+HwYA4P3laQEAwP8YPnx4SX5+fkk21ygABmBXa9GiRRx//PFxxx13xNlnnx0lJSWaAs14P5efn18yfPhwfxAAACSUABgA4B2OOOKIDtleo+//ArC7FBUVxejRo+P73/9+nH322VFcXKwpsBsk4cr1JOyLAQDYOQEwAMA79O3bt1221+gEMAC729tB8B133BGnn356tGrVSlOgme3n9ttvv7YmBQCQTAJgAIB36NSpkwAYAHYoKSmJz3zmM3HnnXfG6NGjo0WLFpoCzWQ/l4R9MQAAOycABgB4hw4dOrTN9hqTcGUgALmlpKQkzj777PjOd74To0aNivz8fE2BHN/PJWFfDADAzgmAAQDeoaysrG221ygABmBvad++fVx00UVx5513xgknnBCFhYWaAjm6nysrK3MCGAAgoQTAAADvUFJS0j6b68tkMlFdXW1QAOxV7dq1i/POOy+++93vxqhRoyIvz+sF+CiSsJ8rLS0VAAMAJJT/QgMAeIfi4uK22VxfXV1dNDY2GhQAWeHtE8F33HGHIBg+gsbGxqirq7MvBgBgt/BfZgAA79CqVausPung9C8A2ahDhw5x0UUXxbe//e04/PDDBcGQA/u6oqIiJ4ABABLKf5EBALxDQUGBABgAPqauXbvGpZdeGt/61rdi2LBhkUqlNAUSuq9r0aJFW1MCAEimAi0AAPgfhYWFZdlc39atWw0JgKzXrVu3uPLKK2P16tXxxBNPxOzZsyOTyWgMJGhfl+37YgAA3psAGADgnZujgoLW2VyfE8AAJEmPHj3iyiuvjKVLl8akSZNizpw5mgIJ2ddl+74YAID35gpoAIAdWrdunZefn98ym2sUAAOQRH369ImxY8fGLbfcEgMGDNAQSMC+Lj8/v1WrVq28OwQASCCbOACAHQYNGlQSEVn9scJt27YZFACJtd9++8UNN9wQX/va1+KAAw7QEJq1BOzr8gYPHlxsUgAAySMABgDY4YADDijJ9hpramoMCoDE69u3b9x4441xww03xL777qshNEu1tbVZX2P//v1LTQoAIHl8AxgAYIeePXtm/QuuJLwoBIAPa8CAATFgwICYP39+jBs3LpYvX64pNBtJ2Nf16NGjxKQAAJJHAAwAsEOnTp0EwACwFwwYMCAOPPDAmDt3bkyYMCFWrlypKeS8JOzrunbtKgAGAEggATAAwA5lZWVZ/4Krrq7OoADISalUKgYNGhQDBw6M2bNnx4QJE2Lt2rUaQ85KQgDcpk0bV0ADACSQABgAYIeysjIngAFgL0ulUjFs2LAYOnRozJ49O8aPHx/r1q3TGHKOABgAgN1FAAwAsENJSUlxttfoBDAAzcXbQfCQIUPi5ZdfjokTJ0ZFRYXGkDOSEAAnYX8MAMD/JQAGANihqKioKNtrrKmpMSgAmpW8vLw4/PDDY/jw4fH888/HE088EZWVlRpD4iUhAG7RokWRSQEAJI8AGABgh8LCwhbZXF86nY7t27cbFADNUn5+fowaNSpGjhwZL7zwQkycODGqqqo0hsTavn17ZDKZSKVSWVtjixYtWpgUAEDyCIABAHbI9gC4oaHBkABo9goKCmLUqFExYsSImDlzZkyePDm2bNmiMSROJpOJhoaGyOaMtbCw0AlgAIAk/neTFgAA7NgYFRRk9QuuxsZGQwKAHVq0aBHHH398HHnkkfHMM8/E1KlTY9u2bRpDomR7AJzt+2MAAN5jH6cFAAA7NkZZ/oLL9c8A8H8VFRXF6NGj49hjj41nnnkmpkyZEjU1NRpDImT7DS8FBQWugAYASCABMADA2xujLH/B5QpoAHhvbwfBRx11VEyfPj2efvrpqK2t1RiymgAYAIDdIU8LAAD+QQAMAMlXUlISn/nMZ+LOO++M0aNHZ/X1uiAABgBgdxAAAwDskO1XQAuAAeDDKykpibPPPjv+7d/+LUaPHh2FhYWagv3dR5Sfn9/SlAAAkkcADADw9sYoL88JYADIMa1bt46zzz47vve978UJJ5wgCMb+7iPIz8/3LwwAQAIJgAEAdkilUlm9N2psbDQkAPiY2rVrF+edd15897vfjRNOOCEKCgo0Bfu7D94f55sSAEDyCIABAHbI9gA4nU4bEgB8Qu3bt/9nEDxq1KjIy/NqBPu799kfp0wJACB5/FcOAMAOXnABQPPRoUOHuOiii+J73/ueIJi9JpPJZHuJ/sUAAEggmzgAgP+R1QFwAl4QAkDidOzYMS666KL41re+FYcffnj4fTDs796xOc7yG3IAANg5mzgAgITsjQTAALD7dOvWLS699NL41re+FcOGDRMEs0dk+xXQeXl5/kUAAEigAi0AAPiHbH/BJQAGgN2ve/fuceWVV8ayZcviiSeeiDlz5mgKzXl/5/AIAEACCYABAHbIZDJOAAMAERGx7777xtixY2PJkiUxYcKEmD9/vqZgfwwAQCIIgAEA/ocr7gCA/2W//faLG264Id56660YP358vPnmm5rCLpPtV0Cn3IUOAJBIAmAAgB2y/QVXtr8gBIBc1rdv37jxxhvjrbfeinHjxsWiRYs0hU/MFdAAANjEAQDsXln9Bs4BDADY+/r27Rs333xz3HDDDdG7d28NIdf3d75BAgCQQE4AAwDskO0nMATAAJA9BgwYEAMGDIj58+fHI488EitXrtQUcnF/5woaAIAEcgIYAGCHVCqVzvL6DAkAssyAAQPi1ltvjbFjx0bPnj01hJza32UScEc1AAD/lxPAAAD/QwAMAHysv6MHDRoUBx98cDz//PMxadKk2LRpk8aQ+P1dtv+CJAAAO+cEMADADul0dr/fEgADQHarr6+PioqK2LZtm2aQE/u7dDrtBDAAQAI5AQwA8D+cAAYAPrK6urp4+umnY9q0acJfcm1/5wQwAEACCYABAP6HEw4AwIfW0NAQ06ZNiyeffDK2bt2qIXxkCfgGsAAYACCBBMAAADtkMpmsDoDz8ny9AwCywdvB71NPPRXV1dUaQs7u7wTAAADJJAAGANgh219wCYABYO9qbGyMGTNmxJNPPhmVlZUawieWn5+f9VtkUwIASB4BMADADplMpiGb6yssLDQkANgL0ul0zJo1KyZPnhwbN27UEHaZgoLsfjXX1NTUaEoAAAncZ2oBAMA/NDY2bs/m+gTAALBnpdPpePnll2Py5Mmxdu1aDWGXa9GiRbb/O1BvSgAAySMABgDYoampSQAMAEQmk4nZs2fH448/HuXl5RpCs93fNTY2CoABABJIAAwAsENDQ0NWv+ASAAPA7vV28PvEE0/E6tWrNYTdLtuvgM72G3IAAHiPfaYWAAD8gyugAaD5mjNnTkyaNCmWLl2qGewx2X4FtAAYACCZBMAAADs0NTU5AQwAzcyCBQtiwoQJ8dZbb2kG9nfv0tDQIAAGAEggATAAwA7Z/oJLAAwAu87ChQtj/PjxsXjxYs1gr8n2K6Cz/RckAQB4j32mFgAA/EO2B8AFBQWRl5cX6XTasADgY1q+fHmMGzcu5s+frxnsVXl5eVkfAG/fvt0JYACABBIAAwDs0NDQkPUnHFq1ahXbtm0zLAD4iFauXBmPPPKI4Jes2tclYH8sAAYASCABMADADrW1tXXZXqMAGAA+mnXr1sX48eNj9uzZkclkNISs2tdlu7q6ulqTAgBIHgEwAMAOW7du3ZrtNSbhRSEAZIP169fHY489JvjFvu4TqK6u3mpSAADJIwAGANihqqpKAAwACbdhw4Z4/PHH45VXXommpiYNwb7uE6isrHT1DABAAgmAAQB22LRpU9a/4GrZsqVBAcBOVFVVxcSJE+OFF16IxsZGDSHrJSEA3rRpkxPAAAAJJAAGANhh3bp1WR8AOwEMAP/bli1bYsKECYJfEicJ+7ry8nIBMABAAgmAAQB2WLZsmSugASAhqqurY/LkyTFz5syor6/XEBInCfu6pUuXCoABABJIAAwAsMP8+fOz/gRwcXGxQQHQrNXU1MSUKVPimWeeEfySaEnY173++uu+AQwAkEACYACAHRYsWFCXyWQaUqlUYbbW2Lp1a4MCoFmqq6uLp59+OqZNmxbbtsmkSL5s39el0+mGpUuXbjcpAIDkEQADALxDU1PTtoKCgrbZWp8AGIDmZvv27TF9+vR48sknY+tWt9GSO7J9X9fU1ORfOACAhBIAAwC8Q0NDw9ZsDoBLS0sNCYDm8ndyTJs2LZ566qmorq7WEHJOtu/rGhsb/YsHAJBQAmAAgHeor6+vbNWqVc9src8JYAByXWNjY8yYMSOefPLJqKys1BByVrbv6+rr66tMCQAgmQTAAADv0NDQkNVvmgXAAOSqdDods2bNismTJ8fGjRs1hJyX7fu6bN8XAwDw3gTAAADvUFdXV5XN9ZWWlkYqlYpMJmNYAOSETCYTr732Wjz++OOxatUqDaFZSKVSUVJSktU11tbWVpkUAEAyCYABAN5h27Ztm7K5vvz8/GjVqlXU1NQYFgCJlslkYvbs2fH4449HeXm5htCstGrVKvLz87O6xq1btzoBDACQUAJgAIB3qK6u3pztNZaVlQmAAUist4PfiRMnxpo1azSEZqmsrCzra9y2bVuVSQEAJJMAGADgHaqqqjZle43t2rWLtWvXGhYAiTNnzpyYNGlSLF26VDNo1tq1a5f1NW7atMkJYACALNbQWBgFjQ0REZFKRSavMJre/pkAGADgHSoqKqqyvcYkvDAEgHdasGBBTJgwId566y3NgITs5zZs2CAABgDIYoUFDf9MejMRqab0/+S+AmAAgHdYtWpV1r/oatu2rUEBkAgLFy6M8ePHx+LFizUD3iEJAfDq1aurTAoAIJkEwAAA77BgwYKsD4CdAAYg2y1fvjzGjRsX8+fP1wzYiST8Ql8S9sUAAOycABgA4B2eeOKJjZlMpimVSuVna41OAAOQrVauXBmPPPKI4Bc+QLb/Ql8mk2l64oknNpoUAEAyCYABAN6huro6vX379g1FRUVdsrVGJ4AByDZr166NCRMmxOzZsyOTyWgIJHw/t3379g3V1dVpkwIASCYBMADAu9TV1a0XAAPAB1u/fn089thjgl/Isf1cXV3delMCAEguATAAwLvU1dVVtGnTJmvrKykpiRYtWsT27dsNC4C9oqKiIiZOnBivvPJKNDU1aQh8BEVFRVFcXJz1+2GTAgBILgEwAMC7bN26dV2XLll7ADhSqVR07Ngx1qxZY1gA7FFVVVUxceLEeP755wW/8DF17NgxUqlU1u+HTQoAILkEwAAA71JVVZX1Jx46deokAAZgj9m8eXM8/vjj8cILL0RjY6OGwCfcx9kPAwCwOwmAAQDeZf369Vn/zbMkvDgEIPm2bNkSU6ZMiZkzZ0Z9fb2GwC7QsWNH+2EAAHYrATAAwLusXr066088JOHFIQDJVVNTE1OmTIlnnnlG8Au7WBJ+kW/VqlUCYACABBMAAwC8y9///ves/+aZABiA3aG2tjYmT54czz77bNTV1WkINNN93KuvvioABgBIMAEwAMC7PPzww+t//OMfN6RSqcJsrbFz584GBcAus3379pg+fXpMnTo1tm3bpiGwG2X7CeB0Ot3w8MMPC4ABABJMAAwA8C7V1dXpurq68latWu2TrTV26NAh8vLyIp1OGxgAH1tDQ0NMmzYtnnrqqaiurtYQ2M3y8vKiQ4cOWV1jfX39mtraWptMAIAEEwADAOxEbW3tmmwOgAsKCqJdu3axceNGwwLgI2tsbIwZM2bEk08+GZWVlRoCe0j79u2joCC7X8fV1NSUmxQAQLIJgAEAdmLz5s2r2rdvn9U1duvWTQAMwEeSTqdj1qxZMXnyZH+HwF7av2W7LVu2rDQpAIBkEwADAOzEpk2bVvfp0yera+zWrVvMmzfPsAD4QG8Hv1OmTIkNGzZoCOzF/Vu227BhwxqTAgBINgEwAMBOrFixYvWwYcOyusYkvEAEYO/KZDLx0ksvxZQpU6K83K2usLd17do162tctWrVKpMCAEg2ATAAwE7Mnz9/9ZgxY7K6xiS8QARg78hkMjF79uyYOHFirFnjMB9kiyT8At+8efP8oQEAkHACYACAnRg3btyab37zm5mISGVrjU4AA7Azc+bMiSeeeCKWLVumGZBlEvALfJlx48atNikAgGQTAAMA7MTrr79e29DQsKmwsLBDttZYXFwcZWVlsWXLFgMDIBYsWBDjx4+PJUuWaAZkobKysiguLs7qGhsaGjYuWLCgzrQAAJJNAAwA8B62bt26vF27dh2yucauXbsKgAGauYULF8b48eNj8eLFmgFZLAm3t2zbtm25SQEAJJ8AGADgPVRVVS1t167d0GyusWfPnrFw4ULDAmiGli1bFo899ljMnz9fMyABevbsmfU1VlZWLjUpAIDkEwADALyHdevWLevTp09W15iEF4kA7ForVqyIRx99VPALCZOEfdvatWuXmRQAQPIJgAEA3sPChQuXHX744VldY69evQwKoJlYtWpVjB8/PubOnRuZTEZDIGGSsG9buHDhMpMCAEg+ATAAwHuYNm3a0ksuuSSra+zevXvk5+dHU1OTgQHkqHXr1sX48eNj9uzZgl9IqIKCgkR8A/jpp59eZloAADmw/9QCAICde+ihhzbcd999W/Pz80uzdjNXUBBdunSJNWvWGBhAjqmoqIiJEyfGyy+/HOl0WkMgwbp27RoFBdn9Gq6xsbH6kUce2WBaAADJJwAGAHgf27ZtW15WVnZwNtfYq1cvATBADqmqqoqJEyfG888/74YHyBFJ+P7vtm3blpsUAEBuEAADALyPLVu2LMv2ALhnz57x0ksvGRZAwm3evDkef/zxeOGFF6KxsVFDIIck4fu/W7ZsWWpSAAC5QQAMAPA+1q9fvyzbT2z06NHDoAASbMuWLTFlypSYOXNm1NfXawjkoCTs19avX7/MpAAAcoMAGADgfSxYsGDh0KFDs7rGfffdN1KpVGQyGQMDSJCampqYMmVKPPPMM4JfyGGpVCr23XffrK9z/vz5C00LACA3CIABAN7Ho48++uYFF1yQ1TWWlJRE586dY926dQYGkAC1tbUxefLkePbZZ6Ourk5DIMd17do1WrVqlfV1/vnPf15kWgAAuUEADADwPiZNmlRVX1+/oaioqGM217nvvvsKgAGy3Pbt22P69OkxderU2LZtm4ZAM9GnT5+sr7G+vr7iySefrDItAIDcIAAGAPgAW7duXZTtAXCfPn3ipZdeMiyALNTQ0BDTpk2Lp556KqqrqzUEmpkkXP+8detWp38BAHKIABgA4ANUVFQs7NChw8hsrjEJLxYBmpvGxsaYMWNGPPnkk1FZWakh0EwlYZ9WUVHh+78AADlEAAwA8AGWLl266MADD8zqGnv16hUFBQXR2NhoYAB7WTqdjlmzZsWkSZNi06ZNGgLNWGFhYfTs2TMR+13TAgDIHQJgAIAPMHPmzEWnnnpqdm/qCgqiZ8+esWzZMgMD2EveDn4nT54cGzdu1BAg9tlnn8jPz0/CfnexaQEA5I48LQAAeH+//OUvV6bT6bpsr7NPnz6GBbAXZDKZePHFF+O73/1u3H///cJf4J+ScP1zOp2u++Uvf7nStAAAcocTwAAAH6C6ujpdXV29uE2bNodkc539+vWL6dOnGxjAHpLJZGL27NkxceLEWLNmjYYAO92fJWCvu7i6ujptWgAAuUMADADwIWzYsGFetgfA/fv3NyiAPeTVV1+NSZMmxapVqzQD2KlUKpWI/dmGDRvmmhYAQG4RAAMAfAiLFy9+o2/fvlldY1lZWXTu3DnWr19vYAC7yYIFC2L8+PGxZMkSzQDeV5cuXaK0tDQJ+9z5pgUAkFsEwAAAH8JTTz31+ujRo7O+zv33318ADLAbLFy4MMaPHx+LFy/WDOBD78uSYMqUKa+bFgBAbsnTAgCAD/aLX/xiTWNjY1W215mUF40ASbFs2bK4++674z/+4z+Ev8BHkoTv/zY0NFTee++9q00LACC3OAEMAPAhNDQ0ZDZv3jy/Q4cOI7O5TgEwwK6xYsWKePTRR2P+fDejArm7L9uyZYs/5AAAcpAAGADgQ1q3bl3WB8AdO3aMNm3axObNmw0M4GNYtWpVjB8/PubOnRuZTEZDgI+lbdu20aFDh0Tsb00LACD3CIABAD6kefPmzTvooIOyvs4DDzwwXnrpJQMD+AjWrVsX48ePj9mzZwt+gV2yH0uCuXPnzjMtAIDcIwAGAPiQ/vznP88/77zzsr7OAw44QAAM8CFVVFTEuHHjBL/ALt+PJcHDDz/sBDAAQA4SAAMAfEgTJ06srK2tXdGqVat9srnOgw8+2LAAPkBVVVVMnDgxnn/++WhqatIQYJdKwq0xNTU1yydNmlRlWgAAuUcADADwEWzYsOHvvXr1yuoAuG3bttG1a9dYu3atgQG8y+bNm+Pxxx+PF154IRobGzUE2OW6desWbdu2TcS+1rQAAHKTABgA4CNYuHDha7169Toj2+scMGCAABjgHbZs2RJTpkyJ5557LrZv364hwG6TlO//Lly48O+mBQCQmwTAAAAfwcSJE/9+wgknZH2dBx54YEyfPt3AgGavpqYmpkyZEs8880zU19drCLDbDRgwIBF1jh8//u+mBQCQmwTAAAAfwb333rv6Bz/4wfqioqLO2VznAQccEHl5eZFOpw0NaJZqa2tj8uTJ8eyzz0ZdXZ2GAHtEXl5e9O/fP+vrrK+vX3ffffeVmxgAQG4SAAMAfESVlZVzu3btmtXHgFu1ahX77LNPLFu2zMCAZqWuri6efvrpmDZtWmzbtk1DgD1qn332iVatWmV9nZs2bZpjWgAAuUsADADwES1dunR2tgfAERGDBg0SAAPNRkNDQ0ybNi2eeuqpqK6u1hBgr+2/kuCtt976m2kBAOQuATAAwEc0ffr0v48cOTLr6xw4cGBMmDDBwICc1tDQEM8991w8+eSTUVlZqSHAXt9/JcG0adP+bloAALlLAAwA8BH9x3/8x9JbbrmlOj8/v3U219mrV68oKyuLLVu2GBqQc9LpdMyaNSsmTZoUmzZt0hBgrysrK4tevXplfZ2NjY1b7rnnnmUmBgCQuwTAAAAfUW1tbXrDhg1/7dKly3HZXGcqlYqBAwfGrFmzDA3IGW8Hv5MnT46NGzdqCJA1Bg4cGKlUKuvr3Lhx4yu1tbVpEwMAyF0CYACAj+Gtt956JdsD4IgQAAM5I51Ox8svvxxTpkyJ8vJyDQGyct+VBIsWLXrFtAAAcpsAGADgYxg/fvwrRxxxRNbXedBBB0VBQUE0NjYaGpBImUwmZs+eHRMnTow1a9ZoCJCVCgoK4qCDDkpErY888ogAGAAgx+VpAQDAR/fjH/94ZX19/fpsr7OoqCj69etnYEAivfrqq3HHHXfEz3/+c+EvkNX69esXRUVFWV9nXV1d+b333rvaxAAAcpsTwAAAH9OGDRte6dGjx6ezvc5BgwbFggULDAxIjCVLlsSECRNi/vz5mgEkwuDBgxNR5/r1653+BQBoBgTAAAAf07x5815OQgA8bNiwePjhhyOTyRgakNXefPPNmDBhQixevFgzgMRIpVIxdOjQRNQ6d+7cl0wMACD3CYABAD6m++677+XRo0dnIiKVzXW2bds2evfuHcuWLTM0ICstW7YsHnvsMSd+gUTq06dPtG3bNgmlpu+9996/mhgAQO4TAAMAfEwTJ06s3Lp165LS0tK+2V7rkCFDBMBA1lmxYkU8+uijgl8g0YYMGZKIOqurqxc+/fTTm00MACD3CYABAD6B8vLyl/fff/+sD4AHDx4c48aNMzAgK6xcuTImTJgQc+fOdT09kHhJ+f7vmjVrfP8XAKCZEAADAHwCM2fOfG7//ff/fLbX2a1bt+jWrVuUl5cbGrDXrFu3LsaPHx+zZ88W/AI5oWfPntGlS5dE1DpjxoznTAwAoHkQAAMAfAK33Xbba5dcckl1fn5+62yvdciQIQJgYK9Yv359PPbYY4JfIOck5frnxsbGzbfddts8EwMAaB4EwAAAn0BlZWXThg0b/tqlS5fjsr3WQw89NCZNmmRowJ78MzKeeOKJeP7556OpqUlDgJxz6KGHJqLOioqKV6qrq9MmBgDQPAiAAQA+oXnz5s1MQgDcu3dv10ADe0RVVVVMnDgxXnjhhWhsbNQQICd17949evbsmZT9quufAQCakTwtAAD4ZP77v/97VkQk4kTFpz71KQMDdpstW7bEQw89FLfffns899xzwl8gpw0fPjwRdWYymfTdd9/9gokBADQfTgADAHxCkyZNqtqyZcuCsrKyg7K91uHDh8fjjz9uaMAuVVNTE1OmTIlnnnkm6uvrNQTIealUKg477LBE1Lply5bXp0+fvsXUAACaDwEwAMAusHz58lkDBw7M+gC4S5cu0atXr1i5cqWhAZ9YbW1tTJ48OZ599tmoq6vTEKDZ6N27d3Ts2DEx+1QTAwBoXgTAAAC7wLPPPvvCwIEDr0hCrcOGDRMAA59IXV1dPP300zFt2rTYtm2bhgDNzrBhwxJT61/+8pcXTQwAoHnxDWAAgF3g1ltvnV9fX782CbUefvjhkUqlDA34yBoaGmLq1Klx6623xuOPPy78BZqlJF3/XFdXt/rWW29dYGoAAM2LE8AAALtAQ0NDZs2aNc/16dPns9lea7t27aJPnz6xZMkSgwM+7J9xMW3atHjqqaeiurpaQ4Bmbb/99ou2bdsmotbVq1fPNDEAgOZHAAwAsIs8++yz05IQAEdEHHHEEQJg4AOl0+mYNWtWTJo0KTZt2qQhABFx5JFHJqbW6dOnTzMxAIDmxxXQAAC7yC233PJaQ0NDZRJqHT58eLRo0cLQgJ1Kp9Px3HPPxW233Rb333+/8Bdgh6KiovjUpz6ViFobGho23HLLLXNNDQCg+XECGABgF6murk6Xl5c/t88++5yR7bW2bNkyDj300Hj55ZcNDvindDodL7/8ckyZMiXKy8s1BOBdhgwZEkVFRYmodc2aNc/V1tamTQ0AoPkRAAMA7EIvvvjiM0kIgCMiRo4cKQAGIiIik8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd/H7jG9+IqVOnRn19vaYA7GYtWrSIo48+OjH1btmy5Y177rlnhckBABDhCmgAgN3u9ddfn3T44YcPSEKtxcXFcdhhh8XMmTMNDvayurq6ePrpp2PatGmxbds2DQHYgw477LAoKSlJTL3z5s17wtQAAHibE8AAALvZ9773vanpdLohKfWecMIJkUqlDA72koaGhpg6dWrceuut8fjjjwt/AfawVCoVJ5xwQmLqTafT27/73e8+ZXIAALzNCWAAgN1s+vTpWyoqKmZ26dIlER/Y7d69e/Tv3z/efPNNw4M9qKGhIaZNmxZPPfVUVFdXawjAXnLAAQdE9+7dE1NvRUXFczNmzPAXBwAA/+QEMADAHjBr1qxEXcuXpFMvkHTpdDqee+65uP322+PRRx8V/gLsZccff3yi6p0xY8YkUwMA4J2cAAYA2AO++tWvvnT66adXFRYWtk1CvQMHDoyOHTvGhg0bDA92k3Q6HbNmzYrJkyfHxo0bNQQgC3Ts2DEGDhyYmHobGhoqb7755pdMDgCAd3ICGABgDygvL29YsWLF1MRsEvPy4sQTTzQ42A3S6XS8+OKL8Z3vfCfuv/9+4S9AFjnppJMiLy85r8tWrFgxpaKiotHkAAB4JwEwAMAe8qtf/erRiMgkpd6jjjoqysrKDA52kUwmE6+++mp873vfi1//+texdu1aTQHIImVlZXHUUUcl6q+W//7v//6zyQEA8G4CYACAPeQ///M/l1dWVv4tKfUWFhbGMcccY3CwC7wd/P785z+PNWvWaAhAFjruuOOioCA5X0urqqqa/dOf/nS1yQEA8G4CYACAPeill14al6R6jzvuuCgqKjI4+JjmzJkTd911V/z85z+P1au9owfIVkVFRYn7xbcXXnhhnMkBALAzBVoAALDnjB079pkFCxZUFhYWtktCvSUlJXHEEUfE9OnTDQ8+gjfffDPGjx8fb731lmYAJMCRRx4ZJSUliam3oaFh0zXXXPOsyQEAsDMCYACAPai8vLxh6dKlE/v3739xUmo+8cQT49lnn410Om2A8AEWLVoUjz32WCxevFgzABIiLy8vTjzxxETVvGTJkifKy8sbTA8AgJ3ucbUAAGDP+u1vfzsxIjJJqbdjx44xdOhQg4P3sXz58rj77rvjRz/6kfAXIGGGDRsWHTp0SFLJmd/85jePmxwAAO9FAAwAsIf953/+5/JNmza9kqSaTz/99EilUoYH77Jy5cr4yU9+Et///vdj/vz5GgKQMHl5eXHGGWckquZNmza9fM8996wwPQAA3osroAEA9oKXXnpp/KmnnnpYUurt2rVrDBkyJGbPnm14EBHr1q2L8ePHx+zZsyOTyWgIQEINHTo0OnfunKiaX3jhhQkmBwDA+xEAAwDsBZdffvkzS5YsWVdUVNQlKTWfccYZ8be//U3YRbO2fv36eOyxxwS/ADkglUrF6aefnqia6+rq1lx22WXTTQ8AgPcjAAYA2AsqKyub5s+f/8ihhx56dVJq7tatm1PANFsbNmyIxx9/PF555ZVoamrSEIAc8KlPfSq6du2aqJrfeOONcdXV1WnTAwDg/fgGMADAXvL1r399XDqdrktSzb4FTHNTVVUV999/f3z729+OF198UfgLkCNSqVR8+tOfTlTN6XS69pvf/OZjpgcAwAdxAhgAYC+ZMWNG9Zo1a/7Ss2fPxLx97N69ewwcODDmzJljgOS0LVu2xIQJE+KFF16IxsZGDQHIMYceemh069YtUTWvXr36qRkzZlSbHgAAH8QJYACAvejXv/71HyMiUR8SPeuss5wCJmdt27YtHn300bjtttviueeeE/4C5KC8vLwYM2ZM0srO/OpXv/qT6QEA8KH2vFoAALD3fP/733+rqqoqUR/V7dGjR3zqU58yPHJKfX19TJ06Nb71rW/F1KlTo76+XlMActSIESOiS5cuiap506ZNf73rrruWmh4AAB+GABgAYC975plnHkpazWeccUbk5dlKkjvmzZsXjz76aGzdulUzAHJYQUFBnH766Ymre9q0aQ+aHgAAH5a3dgAAe9nYsWNn1tfXr01SzZ07d47DDjvM8ACARBk5cmR06NAhUTXX1dWtHjt27POmBwDAhyUABgDYyyorK5tee+21Pyat7jPPPDMKCgoMEABIhBYtWiTy9O/s2bP/UF1dnTZBAAA+LAEwAEAWuOqqqyY0NjZWJanm9u3bx9FHH214AEAiHHfccdGmTZtE1dzQ0LDxiiuumGh6AAB8FAJgAIAssGDBgrqFCxc+lrS6R48eHYWFhQYIAGS1li1bxsknn5y4uhcuXDhu6dKl200QAICPQgAMAJAlvv71r/8pnU7XJqnmtm3bximnnGJ4AEBWO+2006K0tDRRNTc1NdV+7Wtfe8j0AAD4qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=";function getSmartParseNumber(e,t,o){if(typeof e==="string"&&!isNaN(Number(e)))e=Number(e);if(typeof e==="number"&&e<100)return inch2Emu(e);if(typeof e==="number"&&e>=100)return e;if(typeof e==="string"&&e.includes("%")){if(t&&t==="X")return Math.round(parseFloat(e)/100*o.width);if(t&&t==="Y")return Math.round(parseFloat(e)/100*o.height);return Math.round(parseFloat(e)/100*o.width)}return 0}function getUuid(e){return e.replace(/[xy]/g,(function(e){const t=Math.random()*16|0;const o=e==="x"?t:t&3|8;return o.toString(16)}))}function encodeXmlEntities(e){if(typeof e==="undefined"||e==null)return"";return e.toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function inch2Emu(e){if(typeof e==="number"&&e>100)return e;if(typeof e==="string")e=Number(e.replace(/in*/gi,""));return Math.round(r*e)}function valToPts(e){const t=Number(e)||0;return isNaN(t)?0:Math.round(t*a)}function convertRotationDegrees(e){e=e||0;return Math.round((e>360?e-360:e)*6e4)}function componentToHex(e){const t=e.toString(16);return t.length===1?"0"+t:t}function rgbToHex(e,t,o){return(componentToHex(e)+componentToHex(t)+componentToHex(o)).toUpperCase()}function createColorElement(e,t){let o=(e||"").replace("#","");if(!l.test(o)&&o!==$.background1&&o!==$.background2&&o!==$.text1&&o!==$.text2&&o!==$.accent1&&o!==$.accent2&&o!==$.accent3&&o!==$.accent4&&o!==$.accent5&&o!==$.accent6){console.warn(`"${o}" is not a valid scheme color or hex RGB! "${h}" used instead. Only provide 6-digit RGB or 'pptx.SchemeColor' values!`);o=h}const n=l.test(o)?"srgbClr":"schemeClr";const r='val="'+(l.test(o)?o.toUpperCase():o)+'"';return t?`<a:${n} ${r}>${t}</a:${n}>`:`<a:${n} ${r}/>`}function createGlowElement(e,t){let o="";const n=Object.assign(Object.assign({},t),e);const r=Math.round(n.size*a);const i=n.color;const s=Math.round(n.opacity*1e5);o+=`<a:glow rad="${r}">`;o+=createColorElement(i,`<a:alpha val="${s}"/>`);o+="</a:glow>";return o}function genXmlColorSelection(e){let t="solid";let o="";let n="";let r="";if(e){if(typeof e==="string")o=e;else{if(e.type)t=e.type;if(e.color)o=e.color;if(e.alpha)n+=`<a:alpha val="${Math.round((100-e.alpha)*1e3)}"/>`;if(e.transparency)n+=`<a:alpha val="${Math.round((100-e.transparency)*1e3)}"/>`}switch(t){case"solid":r+=`<a:solidFill>${createColorElement(o,n)}</a:solidFill>`;break;default:r+="";break}}return r}function getNewRelId(e){return e._rels.length+e._relsChart.length+e._relsMedia.length+1}function correctShadowOptions(e){if(!e||typeof e!=="object"){return}if(e.type!=="outer"&&e.type!=="inner"&&e.type!=="none"){console.warn("Warning: shadow.type options are `outer`, `inner` or `none`.");e.type="outer"}if(e.angle){if(isNaN(Number(e.angle))||e.angle<0||e.angle>359){console.warn("Warning: shadow.angle can only be 0-359");e.angle=270}e.angle=Math.round(Number(e.angle))}if(e.opacity){if(isNaN(Number(e.opacity))||e.opacity<0||e.opacity>1){console.warn("Warning: shadow.opacity can only be 0-1");e.opacity=.75}e.opacity=Number(e.opacity)}if(e.color){if(e.color.startsWith("#")){console.warn('Warning: shadow.color should not include hash (#) character, , e.g. "FF0000"');e.color=e.color.replace("#","")}}return e}function parseTextToLines(e,t,o){var n,i;const s=2.3+(((n=e.options)===null||n===void 0?void 0:n.autoPageCharWeight)?e.options.autoPageCharWeight:0);const l=Math.floor(t/a*r)/((((i=e.options)===null||i===void 0?void 0:i.fontSize)?e.options.fontSize:m)/s);const c=[];let d=[];const u=[];const p=[];if(e.text&&e.text.toString().trim().length===0){d.push({_type:X.tablecell,text:" "})}else if(typeof e.text==="number"||typeof e.text==="string"){d.push({_type:X.tablecell,text:(e.text||"").toString().trim()})}else if(Array.isArray(e.text)){d=e.text}let A=[];d.forEach((e=>{var t;if(typeof e.text==="string"){if(e.text.split("\n").length>1){e.text.split("\n").forEach((t=>{A.push({_type:X.tablecell,text:t,options:Object.assign(Object.assign({},e.options),{breakLine:true})})}))}else{A.push({_type:X.tablecell,text:e.text.trim(),options:e.options})}if((t=e.options)===null||t===void 0?void 0:t.breakLine){u.push(A);A=[]}}if(A.length>0){u.push(A);A=[]}}));u.forEach((e=>{e.forEach((e=>{const t=[];const o=String(e.text);const n=o.split(" ");n.forEach(((o,r)=>{const a=Object.assign({},e.options);if(a===null||a===void 0?void 0:a.breakLine)a.breakLine=r+1===n.length;t.push({_type:X.tablecell,text:o+(r+1<n.length?" ":""),options:a})}));p.push(t)}))}));p.forEach((e=>{let t=[];let o="";e.forEach((e=>{if(o.length+e.text.length>l){c.push(t);t=[];o=""}t.push(e);o+=e.text.toString()}));if(t.length>0)c.push(t)}));return c}function getSlidesForTableRows(e=[],t={},o,n){let a=x;let i=r*1;let s=r*1;let l=0;let d=0;const u=[];const p=getSmartParseNumber(t.x,"X",o);const A=getSmartParseNumber(t.y,"Y",o);const f=getSmartParseNumber(t.w,"X",o);const h=getSmartParseNumber(t.h,"Y",o);let g=f;function calcSlideTabH(){let e=0;if(u.length===0)e=A||inch2Emu(a[0]);if(u.length>0)e=inch2Emu(t.autoPageSlideStartY||t.newSlideStartY||a[0]);s=(h||o.height)-e-inch2Emu(a[2]);if(u.length>1){if(typeof t.autoPageSlideStartY==="number"){s=(h||o.height)-inch2Emu(t.autoPageSlideStartY+a[2])}else if(typeof t.newSlideStartY==="number"){s=(h||o.height)-inch2Emu(t.newSlideStartY+a[2])}else if(A){s=(h||o.height)-inch2Emu((A/r<a[0]?A/r:a[0])+a[2]);if(s<h)s=h}}}if(t.verbose){console.log("[[VERBOSE MODE]]");console.log("|-- TABLE PROPS --------------------------------------------------------|");console.log(`| presLayout.width ................................ = ${(o.width/r).toFixed(1)}`);console.log(`| presLayout.height ............................... = ${(o.height/r).toFixed(1)}`);console.log(`| tableProps.x .................................... = ${typeof t.x==="number"?(t.x/r).toFixed(1):t.x}`);console.log(`| tableProps.y .................................... = ${typeof t.y==="number"?(t.y/r).toFixed(1):t.y}`);console.log(`| tableProps.w .................................... = ${typeof t.w==="number"?(t.w/r).toFixed(1):t.w}`);console.log(`| tableProps.h .................................... = ${typeof t.h==="number"?(t.h/r).toFixed(1):t.h}`);console.log(`| tableProps.slideMargin .......................... = ${t.slideMargin?String(t.slideMargin):""}`);console.log(`| tableProps.margin ............................... = ${String(t.margin)}`);console.log(`| tableProps.colW ................................. = ${String(t.colW)}`);console.log(`| tableProps.autoPageSlideStartY .................. = ${t.autoPageSlideStartY}`);console.log(`| tableProps.autoPageCharWeight ................... = ${t.autoPageCharWeight}`);console.log("|-- CALCULATIONS -------------------------------------------------------|");console.log(`| tablePropX ...................................... = ${p/r}`);console.log(`| tablePropY ...................................... = ${A/r}`);console.log(`| tablePropW ...................................... = ${f/r}`);console.log(`| tablePropH ...................................... = ${h/r}`);console.log(`| tableCalcW ...................................... = ${g/r}`)}{if(!t.slideMargin&&t.slideMargin!==0)t.slideMargin=x[0];if(n&&typeof n._margin!=="undefined"){if(Array.isArray(n._margin))a=n._margin;else if(!isNaN(Number(n._margin))){a=[Number(n._margin),Number(n._margin),Number(n._margin),Number(n._margin)]}}else if(t.slideMargin||t.slideMargin===0){if(Array.isArray(t.slideMargin))a=t.slideMargin;else if(!isNaN(t.slideMargin))a=[t.slideMargin,t.slideMargin,t.slideMargin,t.slideMargin]}if(t.verbose)console.log(`| arrInchMargins .................................. = [${a.join(", ")}]`)}{const o=e[0]||[];o.forEach((e=>{if(!e)e={_type:X.tablecell};const t=e.options||null;d+=Number((t===null||t===void 0?void 0:t.colspan)?t.colspan:1)}));if(t.verbose)console.log(`| numCols ......................................... = ${d}`)}if(!f&&t.colW){g=Array.isArray(t.colW)?t.colW.reduce(((e,t)=>e+t))*r:t.colW*d||0;if(t.verbose)console.log(`| tableCalcW ...................................... = ${g/r}`)}{i=g||inch2Emu((p?p/r:a[1])+a[3]);if(t.verbose)console.log(`| emuSlideTabW .................................... = ${(i/r).toFixed(1)}`)}if(!t.colW||!Array.isArray(t.colW)){if(t.colW&&!isNaN(Number(t.colW))){const o=[];const n=e[0]||[];n.forEach((()=>o.push(t.colW)));t.colW=[];o.forEach((e=>{if(Array.isArray(t.colW))t.colW.push(e)}))}else{t.colW=[];for(let e=0;e<d;e++){t.colW.push(i/r/d)}}}let v={rows:[]};e.forEach(((e,o)=>{const n=[];let a=0;let i=0;let d=[];e.forEach((e=>{var o,n,r,s;d.push({_type:X.tablecell,text:[],options:e.options});if(e.options.margin&&e.options.margin[0]>=1){if(((o=e.options)===null||o===void 0?void 0:o.margin)&&e.options.margin[0]&&valToPts(e.options.margin[0])>a)a=valToPts(e.options.margin[0]);else if((t===null||t===void 0?void 0:t.margin)&&t.margin[0]&&valToPts(t.margin[0])>a)a=valToPts(t.margin[0]);if(((n=e.options)===null||n===void 0?void 0:n.margin)&&e.options.margin[2]&&valToPts(e.options.margin[2])>i)i=valToPts(e.options.margin[2]);else if((t===null||t===void 0?void 0:t.margin)&&t.margin[2]&&valToPts(t.margin[2])>i)i=valToPts(t.margin[2])}else{if(((r=e.options)===null||r===void 0?void 0:r.margin)&&e.options.margin[0]&&inch2Emu(e.options.margin[0])>a)a=inch2Emu(e.options.margin[0]);else if((t===null||t===void 0?void 0:t.margin)&&t.margin[0]&&inch2Emu(t.margin[0])>a)a=inch2Emu(t.margin[0]);if(((s=e.options)===null||s===void 0?void 0:s.margin)&&e.options.margin[2]&&inch2Emu(e.options.margin[2])>i)i=inch2Emu(e.options.margin[2]);else if((t===null||t===void 0?void 0:t.margin)&&t.margin[2]&&inch2Emu(t.margin[2])>i)i=inch2Emu(t.margin[2])}}));calcSlideTabH();l+=a+i;if(t.verbose&&o===0)console.log(`| SLIDE [${u.length}]: emuSlideTabH ...... = ${(s/r).toFixed(1)} `);e.forEach(((e,o)=>{var r;const a={_type:X.tablecell,_lines:null,_lineHeight:inch2Emu((((r=e.options)===null||r===void 0?void 0:r.fontSize)?e.options.fontSize:t.fontSize?t.fontSize:m)*(c+(t.autoPageLineWeight?t.autoPageLineWeight:0))/100),text:[],options:e.options};if(a.options.rowspan)a._lineHeight=0;a.options.autoPageCharWeight=t.autoPageCharWeight?t.autoPageCharWeight:null;let i=t.colW[o];if(e.options.colspan&&Array.isArray(t.colW)){i=t.colW.filter(((t,n)=>n>=o&&n<n+e.options.colspan)).reduce(((e,t)=>e+t))}a._lines=parseTextToLines(e,i);n.push(a)}));if(t.verbose)console.log(`\n| SLIDE [${u.length}]: ROW [${o}]: START...`);let p=0;let A=0;let f=false;while(!f){const o=n[p];let c=d[p];n.forEach((e=>{if(e._lineHeight>=A)A=e._lineHeight}));if(l+A>s){if(t.verbose){console.log("\n|-----------------------------------------------------------------------|");console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(l/r).toFixed(2)} + ${(o._lineHeight/r).toFixed(2)} > ${s/r}`);console.log("|-----------------------------------------------------------------------|\n\n")}if(d.length>0&&d.map((e=>e.text.length)).reduce(((e,t)=>e+t))>0)v.rows.push(d);u.push(v);const n=[];v={rows:n};d=[];e.forEach((e=>d.push({_type:X.tablecell,text:[],options:e.options})));calcSlideTabH();l+=a+i;if(t.verbose)console.log(`| SLIDE [${u.length}]: emuSlideTabH ...... = ${(s/r).toFixed(1)} `);l=0;if((t.addHeaderToEach||t.autoPageRepeatHeader)&&t._arrObjTabHeadRows){t._arrObjTabHeadRows.forEach((e=>{const t=[];let o=0;e.forEach((e=>{t.push(e);if(e._lineHeight>o)o=e._lineHeight}));v.rows.push(t);l+=o}))}c=d[p]}const h=o._lines.shift();if(Array.isArray(c.text)){if(h)c.text=c.text.concat(h);else if(c.text.length===0)c.text=c.text.concat({_type:X.tablecell,text:""})}if(p===n.length-1)l+=A;p=p<n.length-1?p+1:0;const m=n.map((e=>e._lines.length)).reduce(((e,t)=>e+t));if(m===0)f=true}if(d.length>0)v.rows.push(d);if(t.verbose){console.log(`- SLIDE [${u.length}]: ROW [${o}]: ...COMPLETE ...... emuTabCurrH = ${(l/r).toFixed(2)} ( emuSlideTabH = ${(s/r).toFixed(2)} )`)}}));u.push(v);if(t.verbose){console.log("\n|================================================|");console.log(`| FINAL: tableRowSlides.length = ${u.length}`);u.forEach((e=>console.log(e)));console.log("|================================================|\n\n")}return u}function genTableToSlides(e,t,o={},n){const a=o||{};a.slideMargin=a.slideMargin||a.slideMargin===0?a.slideMargin:.5;let i=a.w||e.presLayout.width;const s=[];const l=[];const c=[];const d=[];const u=[];let p=[.5,.5,.5,.5];let A=0;if(!document.getElementById(t))throw new Error('tableToSlides: Table ID "'+t+'" does not exist!');if(n===null||n===void 0?void 0:n._margin){if(Array.isArray(n._margin))p=n._margin;else if(!isNaN(n._margin))p=[n._margin,n._margin,n._margin,n._margin];a.slideMargin=p}else if(a===null||a===void 0?void 0:a.slideMargin){if(Array.isArray(a.slideMargin))p=a.slideMargin;else if(!isNaN(a.slideMargin))p=[a.slideMargin,a.slideMargin,a.slideMargin,a.slideMargin]}i=(a.w?inch2Emu(a.w):e.presLayout.width)-inch2Emu(p[1]+p[3]);if(a.verbose){console.log("[[VERBOSE MODE]]");console.log("|-- `tableToSlides` ----------------------------------------------------|");console.log(`| tableProps.h .................................... = ${a.h}`);console.log(`| tableProps.w .................................... = ${a.w}`);console.log(`| pptx.presLayout.width ........................... = ${(e.presLayout.width/r).toFixed(1)}`);console.log(`| pptx.presLayout.height .......................... = ${(e.presLayout.height/r).toFixed(1)}`);console.log(`| emuSlideTabW .................................... = ${(i/r).toFixed(1)}`)}let f=document.querySelectorAll(`#${t} tr:first-child th`);if(f.length===0)f=document.querySelectorAll(`#${t} tr:first-child td`);f.forEach((e=>{const t=e;if(t.getAttribute("colspan")){for(let e=0;e<Number(t.getAttribute("colspan"));e++){u.push(Math.round(t.offsetWidth/Number(t.getAttribute("colspan"))))}}else{u.push(t.offsetWidth)}}));u.forEach((e=>{A+=e}));u.forEach(((e,o)=>{const n=Number((Number(i)*(e/A*100)/100/r).toFixed(2));let a=0;const s=document.querySelector(`#${t} thead tr:first-child th:nth-child(${o+1})`);if(s)a=Number(s.getAttribute("data-pptx-min-width"));const l=document.querySelector(`#${t} thead tr:first-child th:nth-child(${o+1})`);if(l)a=Number(l.getAttribute("data-pptx-width"));d.push(a>n?a:n)}));if(a.verbose){console.log(`| arrColW ......................................... = [${d.join(", ")}]`)}const h=["thead","tbody","tfoot"];h.forEach((e=>{document.querySelectorAll(`#${t} ${e} tr`).forEach((t=>{const o=t;const n=[];Array.from(o.cells).forEach((e=>{const t=window.getComputedStyle(e).getPropertyValue("color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");let o=window.getComputedStyle(e).getPropertyValue("background-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");if(window.getComputedStyle(e).getPropertyValue("background-color")==="rgba(0, 0, 0, 0)"||window.getComputedStyle(e).getPropertyValue("transparent")){o=["255","255","255"]}const r={align:null,bold:!!(window.getComputedStyle(e).getPropertyValue("font-weight")==="bold"||Number(window.getComputedStyle(e).getPropertyValue("font-weight"))>=500),border:null,color:rgbToHex(Number(t[0]),Number(t[1]),Number(t[2])),fill:{color:rgbToHex(Number(o[0]),Number(o[1]),Number(o[2]))},fontFace:(window.getComputedStyle(e).getPropertyValue("font-family")||"").split(",")[0].replace(/"/g,"").replace("inherit","").replace("initial","")||null,fontSize:Number(window.getComputedStyle(e).getPropertyValue("font-size").replace(/[a-z]/gi,"")),margin:null,colspan:Number(e.getAttribute("colspan"))||null,rowspan:Number(e.getAttribute("rowspan"))||null,valign:null};if(["left","center","right","start","end"].includes(window.getComputedStyle(e).getPropertyValue("text-align"))){const t=window.getComputedStyle(e).getPropertyValue("text-align").replace("start","left").replace("end","right");r.align=t==="center"?"center":t==="left"?"left":t==="right"?"right":null}if(["top","middle","bottom"].includes(window.getComputedStyle(e).getPropertyValue("vertical-align"))){const t=window.getComputedStyle(e).getPropertyValue("vertical-align");r.valign=t==="top"?"top":t==="middle"?"middle":t==="bottom"?"bottom":null}if(window.getComputedStyle(e).getPropertyValue("padding-left")){r.margin=[0,0,0,0];const t=["padding-top","padding-right","padding-bottom","padding-left"];t.forEach(((t,o)=>{r.margin[o]=Math.round(Number(window.getComputedStyle(e).getPropertyValue(t).replace(/\D/gi,"")))}))}if(window.getComputedStyle(e).getPropertyValue("border-top-width")||window.getComputedStyle(e).getPropertyValue("border-right-width")||window.getComputedStyle(e).getPropertyValue("border-bottom-width")||window.getComputedStyle(e).getPropertyValue("border-left-width")){r.border=[null,null,null,null];const t=["top","right","bottom","left"];t.forEach(((t,o)=>{const n=Math.round(Number(window.getComputedStyle(e).getPropertyValue("border-"+t+"-width").replace("px","")));let a=[];a=window.getComputedStyle(e).getPropertyValue("border-"+t+"-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");const i=rgbToHex(Number(a[0]),Number(a[1]),Number(a[2]));r.border[o]={pt:n,color:i}}))}n.push({_type:X.tablecell,text:e.innerText,options:r})}));switch(e){case"thead":s.push(n);break;case"tbody":l.push(n);break;case"tfoot":c.push(n);break;default:console.log(`table parsing: unexpected table part: ${e}`);break}}))}));a._arrObjTabHeadRows=s||null;a.colW=d;getSlidesForTableRows([...s,...l,...c],a,e.presLayout,n).forEach(((t,o)=>{const n=e.addSlide({masterName:a.masterSlideName||null});if(o===0)a.y=a.y||p[0];if(o>0)a.y=a.autoPageSlideStartY||a.newSlideStartY||p[0];if(a.verbose)console.log(`| opts.autoPageSlideStartY: ${a.autoPageSlideStartY} / arrInchMargins[0]: ${p[0]} => opts.y = ${a.y}`);n.addTable(t.rows,{x:a.x||p[3],y:a.y,w:Number(i)/r,colW:d,autoPage:false});if(a.addImage){a.addImage.options=a.addImage.options||{};if(!a.addImage.image||!a.addImage.image.path&&!a.addImage.image.data){console.warn("Warning: tableToSlides.addImage requires either `path` or `data`")}else{n.addImage({path:a.addImage.image.path,data:a.addImage.image.data,x:a.addImage.options.x,y:a.addImage.options.y,w:a.addImage.options.w,h:a.addImage.options.h})}}if(a.addShape)n.addShape(a.addShape.shapeName,a.addShape.options||{});if(a.addTable)n.addTable(a.addTable.rows,a.addTable.options||{});if(a.addText)n.addText(a.addText.text,a.addText.options||{})}))}let J=0;function createSlideMaster(e,t){if(e.bkgd)t.bkgd=e.bkgd;if(e.objects&&Array.isArray(e.objects)&&e.objects.length>0){e.objects.forEach(((e,o)=>{const n=Object.keys(e)[0];const r=t;if(G[n]&&n==="chart")addChartDefinition(r,e[n].type,e[n].data,e[n].opts);else if(G[n]&&n==="image")addImageDefinition(r,e[n]);else if(G[n]&&n==="line")addShapeDefinition(r,U.LINE,e[n]);else if(G[n]&&n==="rect")addShapeDefinition(r,U.RECTANGLE,e[n]);else if(G[n]&&n==="text")addTextDefinition(r,[{text:e[n].text}],e[n].options,false);else if(G[n]&&n==="placeholder"){e[n].options.placeholder=e[n].options.name;delete e[n].options.name;e[n].options._placeholderType=e[n].options.type;delete e[n].options.type;e[n].options._placeholderIdx=100+o;addTextDefinition(r,[{text:e[n].text}],e[n].options,true)}}))}if(e.slideNumber&&typeof e.slideNumber==="object")t._slideNumberProps=e.slideNumber}function addChartDefinition(e,t,o,n){var r;function correctGridLineOptions(e){if(!e||e.style==="none")return;if(e.size!==undefined&&(isNaN(Number(e.size))||e.size<=0)){console.warn("Warning: chart.gridLine.size must be greater than 0.");delete e.size}if(e.style&&!["solid","dash","dot"].includes(e.style)){console.warn("Warning: chart.gridLine.style options: `solid`, `dash`, `dot`.");delete e.style}if(e.cap&&!["flat","square","round"].includes(e.cap)){console.warn("Warning: chart.gridLine.cap options: `flat`, `square`, `round`.");delete e.cap}}const a=++J;const i={_type:null,text:null,options:null,chartRid:null};let s=null;let l=[];if(Array.isArray(t)){t.forEach((e=>{l=l.concat(e.data)}));s=o||n}else{l=o;s=n}l.forEach(((e,t)=>{e._dataIndex=t;if(e.labels!==undefined&&!Array.isArray(e.labels[0])){e.labels=[e.labels]}}));const c=s&&typeof s==="object"?s:{};c._type=t;c.x=typeof c.x!=="undefined"&&c.x!=null&&!isNaN(Number(c.x))?c.x:1;c.y=typeof c.y!=="undefined"&&c.y!=null&&!isNaN(Number(c.y))?c.y:1;c.w=c.w||"50%";c.h=c.h||"50%";c.objectName=c.objectName?encodeXmlEntities(c.objectName):`Chart ${e._slideObjects.filter((e=>e._type===X.chart)).length}`;if(!["bar","col"].includes(c.barDir||""))c.barDir="col";if(c._type===W.AREA){if(!["stacked","standard","percentStacked"].includes(c.barGrouping||""))c.barGrouping="standard"}if(c._type===W.BAR){if(!["clustered","stacked","percentStacked"].includes(c.barGrouping||""))c.barGrouping="clustered"}if(c._type===W.BAR3D){if(!["clustered","stacked","standard","percentStacked"].includes(c.barGrouping||""))c.barGrouping="standard"}if((r=c.barGrouping)===null||r===void 0?void 0:r.includes("tacked")){if(!c.barGapWidthPct)c.barGapWidthPct=50}if(c.dataLabelPosition){if(c._type===W.AREA||c._type===W.BAR3D||c._type===W.DOUGHNUT||c._type===W.RADAR){delete c.dataLabelPosition}if(c._type===W.PIE){if(!["bestFit","ctr","inEnd","outEnd"].includes(c.dataLabelPosition))delete c.dataLabelPosition}if(c._type===W.BUBBLE||c._type===W.BUBBLE3D||c._type===W.LINE||c._type===W.SCATTER){if(!["b","ctr","l","r","t"].includes(c.dataLabelPosition))delete c.dataLabelPosition}if(c._type===W.BAR){if(!["stacked","percentStacked"].includes(c.barGrouping||"")){if(!["ctr","inBase","inEnd"].includes(c.dataLabelPosition))delete c.dataLabelPosition}if(!["clustered"].includes(c.barGrouping||"")){if(!["ctr","inBase","inEnd","outEnd"].includes(c.dataLabelPosition))delete c.dataLabelPosition}}}c.dataLabelBkgrdColors=c.dataLabelBkgrdColors||!c.dataLabelBkgrdColors?c.dataLabelBkgrdColors:false;if(!["b","l","r","t","tr"].includes(c.legendPos||""))c.legendPos="r";if(!["cone","coneToMax","box","cylinder","pyramid","pyramidToMax"].includes(c.bar3DShape||""))c.bar3DShape="box";if(!["circle","dash","diamond","dot","none","square","triangle"].includes(c.lineDataSymbol||""))c.lineDataSymbol="circle";if(!["gap","span"].includes(c.displayBlanksAs||""))c.displayBlanksAs="span";if(!["standard","marker","filled"].includes(c.radarStyle||""))c.radarStyle="standard";c.lineDataSymbolSize=c.lineDataSymbolSize&&!isNaN(c.lineDataSymbolSize)?c.lineDataSymbolSize:6;c.lineDataSymbolLineSize=c.lineDataSymbolLineSize&&!isNaN(c.lineDataSymbolLineSize)?valToPts(c.lineDataSymbolLineSize):valToPts(.75);if(c.layout){["x","y","w","h"].forEach((e=>{const t=c.layout[e];if(isNaN(Number(t))||t<0||t>1){console.warn("Warning: chart.layout."+e+" can only be 0-1");delete c.layout[e]}}))}c.catGridLine=c.catGridLine||(c._type===W.SCATTER?{color:"D9D9D9",size:1}:{style:"none"});c.valGridLine=c.valGridLine||(c._type===W.SCATTER?{color:"D9D9D9",size:1}:{});c.serGridLine=c.serGridLine||(c._type===W.SCATTER?{color:"D9D9D9",size:1}:{style:"none"});correctGridLineOptions(c.catGridLine);correctGridLineOptions(c.valGridLine);correctGridLineOptions(c.serGridLine);correctShadowOptions(c.shadow);c.showDataTable=c.showDataTable||!c.showDataTable?c.showDataTable:false;c.showDataTableHorzBorder=c.showDataTableHorzBorder||!c.showDataTableHorzBorder?c.showDataTableHorzBorder:true;c.showDataTableVertBorder=c.showDataTableVertBorder||!c.showDataTableVertBorder?c.showDataTableVertBorder:true;c.showDataTableOutline=c.showDataTableOutline||!c.showDataTableOutline?c.showDataTableOutline:true;c.showDataTableKeys=c.showDataTableKeys||!c.showDataTableKeys?c.showDataTableKeys:true;c.showLabel=c.showLabel||!c.showLabel?c.showLabel:false;c.showLegend=c.showLegend||!c.showLegend?c.showLegend:false;c.showPercent=c.showPercent||!c.showPercent?c.showPercent:true;c.showTitle=c.showTitle||!c.showTitle?c.showTitle:false;c.showValue=c.showValue||!c.showValue?c.showValue:false;c.showLeaderLines=c.showLeaderLines||!c.showLeaderLines?c.showLeaderLines:false;c.catAxisLineShow=typeof c.catAxisLineShow!=="undefined"?c.catAxisLineShow:true;c.valAxisLineShow=typeof c.valAxisLineShow!=="undefined"?c.valAxisLineShow:true;c.serAxisLineShow=typeof c.serAxisLineShow!=="undefined"?c.serAxisLineShow:true;c.v3DRotX=!isNaN(c.v3DRotX)&&c.v3DRotX>=-90&&c.v3DRotX<=90?c.v3DRotX:30;c.v3DRotY=!isNaN(c.v3DRotY)&&c.v3DRotY>=0&&c.v3DRotY<=360?c.v3DRotY:30;c.v3DRAngAx=c.v3DRAngAx||!c.v3DRAngAx?c.v3DRAngAx:true;c.v3DPerspective=!isNaN(c.v3DPerspective)&&c.v3DPerspective>=0&&c.v3DPerspective<=240?c.v3DPerspective:30;c.barGapWidthPct=!isNaN(c.barGapWidthPct)&&c.barGapWidthPct>=0&&c.barGapWidthPct<=1e3?c.barGapWidthPct:150;c.barGapDepthPct=!isNaN(c.barGapDepthPct)&&c.barGapDepthPct>=0&&c.barGapDepthPct<=1e3?c.barGapDepthPct:150;c.chartColors=Array.isArray(c.chartColors)?c.chartColors:c._type===W.PIE||c._type===W.DOUGHNUT?B:I;c.chartColorsOpacity=c.chartColorsOpacity&&!isNaN(c.chartColorsOpacity)?c.chartColorsOpacity:null;c.border=c.border&&typeof c.border==="object"?c.border:null;if(c.border&&(!c.border.pt||isNaN(c.border.pt)))c.border.pt=A.pt;if(c.border&&(!c.border.color||typeof c.border.color!=="string"))c.border.color=A.color;c.plotArea=c.plotArea||{};c.plotArea.border=c.plotArea.border&&typeof c.plotArea.border==="object"?c.plotArea.border:null;if(c.plotArea.border&&(!c.plotArea.border.pt||isNaN(c.plotArea.border.pt)))c.plotArea.border.pt=A.pt;if(c.plotArea.border&&(!c.plotArea.border.color||typeof c.plotArea.border.color!=="string")){c.plotArea.border.color=A.color}if(c.border)c.plotArea.border=c.border;c.plotArea.fill=c.plotArea.fill||{color:null,transparency:null};if(c.fill)c.plotArea.fill.color=c.fill;c.chartArea=c.chartArea||{};c.chartArea.border=c.chartArea.border&&typeof c.chartArea.border==="object"?c.chartArea.border:null;if(c.chartArea.border){c.chartArea.border={color:c.chartArea.border.color||A.color,pt:c.chartArea.border.pt||A.pt}}c.chartArea.roundedCorners=typeof c.chartArea.roundedCorners==="boolean"?c.chartArea.roundedCorners:true;c.dataBorder=c.dataBorder&&typeof c.dataBorder==="object"?c.dataBorder:null;if(c.dataBorder&&(!c.dataBorder.pt||isNaN(c.dataBorder.pt)))c.dataBorder.pt=.75;if(c.dataBorder&&c.dataBorder.color){const e=typeof c.dataBorder.color==="string"&&c.dataBorder.color.length===6&&/^[0-9A-Fa-f]{6}$/.test(c.dataBorder.color);const t=Object.values(q).includes(c.dataBorder.color);if(!e&&!t){c.dataBorder.color="F9F9F9"}}if(!c.dataLabelFormatCode&&c._type===W.SCATTER)c.dataLabelFormatCode="General";if(!c.dataLabelFormatCode&&(c._type===W.PIE||c._type===W.DOUGHNUT)){c.dataLabelFormatCode=c.showPercent?"0%":"General"}c.dataLabelFormatCode=c.dataLabelFormatCode&&typeof c.dataLabelFormatCode==="string"?c.dataLabelFormatCode:"#,##0";if(!c.dataLabelFormatScatter&&c._type===W.SCATTER)c.dataLabelFormatScatter="custom";c.lineSize=typeof c.lineSize==="number"?c.lineSize:2;c.valAxisMajorUnit=typeof c.valAxisMajorUnit==="number"?c.valAxisMajorUnit:null;if(c._type===W.AREA||c._type===W.BAR||c._type===W.BAR3D||c._type===W.LINE){c.catAxisMultiLevelLabels=!!c.catAxisMultiLevelLabels}else{delete c.catAxisMultiLevelLabels}i._type="chart";i.options=c;i.chartRid=getNewRelId(e);e._relsChart.push({rId:getNewRelId(e),data:l,opts:c,type:c._type,globalId:a,fileName:`chart${a}.xml`,Target:`/ppt/charts/chart${a}.xml`});e._slideObjects.push(i);return i}function addImageDefinition(e,t){const o={_type:null,text:null,options:null,image:null,imageRid:null,hyperlink:null};const n=t.x||0;const r=t.y||0;const a=t.w||0;const i=t.h||0;const s=t.sizing||null;const l=t.hyperlink||"";const c=t.data||"";const d=t.path||"";let u=getNewRelId(e);const p=t.objectName?encodeXmlEntities(t.objectName):`Image ${e._slideObjects.filter((e=>e._type===X.image)).length}`;if(!d&&!c){console.error("ERROR: addImage() requires either 'data' or 'path' parameter!");return null}else if(d&&typeof d!=="string"){console.error(`ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent ${String(d)}`);return null}else if(c&&typeof c!=="string"){console.error(`ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent ${String(c)}`);return null}else if(c&&typeof c==="string"&&!c.toLowerCase().includes("base64,")){console.error("ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')");return null}let A=(d.substring(d.lastIndexOf("/")+1).split("?")[0].split(".").pop().split("#")[0]||"png").toLowerCase();if(c&&/image\/(\w+);/.exec(c)&&/image\/(\w+);/.exec(c).length>0){A=/image\/(\w+);/.exec(c)[1]}else if(c===null||c===void 0?void 0:c.toLowerCase().includes("image/svg+xml")){A="svg"}o._type=X.image;o.image=d||"preencoded.png";o.options={x:n||0,y:r||0,w:a||1,h:i||1,altText:t.altText||"",rounding:typeof t.rounding==="boolean"?t.rounding:false,sizing:s,placeholder:t.placeholder,rotate:t.rotate||0,flipV:t.flipV||false,flipH:t.flipH||false,transparency:t.transparency||0,objectName:p,shadow:correctShadowOptions(t.shadow)};if(A==="svg"){e._relsMedia.push({path:d||c+"png",type:"image/png",extn:"png",data:c||"",rId:u,Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.png`,isSvgPng:true,svgSize:{w:getSmartParseNumber(o.options.w,"X",e._presLayout),h:getSmartParseNumber(o.options.h,"Y",e._presLayout)}});o.imageRid=u;e._relsMedia.push({path:d||c,type:"image/svg+xml",extn:A,data:c||"",rId:u+1,Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.${A}`});o.imageRid=u+1}else{const t=e._relsMedia.filter((e=>e.path&&e.path===d&&e.type==="image/"+A&&!e.isDuplicate))[0];e._relsMedia.push({path:d||"preencoded."+A,type:"image/"+A,extn:A,data:c||"",rId:u,isDuplicate:!!(t===null||t===void 0?void 0:t.Target),Target:(t===null||t===void 0?void 0:t.Target)?t.Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.${A}`});o.imageRid=u}if(typeof l==="object"){if(!l.url&&!l.slide)throw new Error("ERROR: `hyperlink` option requires either: `url` or `slide`");else{u++;e._rels.push({type:X.hyperlink,data:l.slide?"slide":"dummy",rId:u,Target:l.url||l.slide.toString()});l._rId=u;o.hyperlink=l}}e._slideObjects.push(o)}function addMediaDefinition(e,t){const o=t.x||0;const n=t.y||0;const r=t.w||2;const a=t.h||2;const i=t.data||"";const s=t.link||"";const l=t.path||"";const c=t.type||"audio";let d="";const u=t.cover||Y;const p=t.objectName?encodeXmlEntities(t.objectName):`Media ${e._slideObjects.filter((e=>e._type===X.media)).length}`;const A={_type:X.media};if(!l&&!i&&c!=="online"){throw new Error("addMedia() error: either `data` or `path` are required!")}else if(i&&!i.toLowerCase().includes("base64,")){throw new Error("addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')")}else if(!u.toLowerCase().includes("base64,")){throw new Error("addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')")}if(c==="online"&&!s){throw new Error("addMedia() error: online videos require `link` value")}d=t.extn||(i?i.split(";")[0].split("/")[1]:l.split(".").pop())||"mp3";A.mtype=c;A.media=l||"preencoded.mov";A.options={};A.options.x=o;A.options.y=n;A.options.w=r;A.options.h=a;A.options.objectName=p;if(c==="online"){const t=getNewRelId(e);e._relsMedia.push({path:l||"preencoded"+d,data:"dummy",type:"online",extn:d,rId:t,Target:s});A.mediaRid=t;e._relsMedia.push({path:"preencoded.png",data:u,type:"image/png",extn:"png",rId:getNewRelId(e),Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.png`})}else{const t=e._relsMedia.filter((e=>e.path&&e.path===l&&e.type===c+"/"+d&&!e.isDuplicate))[0];const o=getNewRelId(e);e._relsMedia.push({path:l||"preencoded"+d,type:c+"/"+d,extn:d,data:i||"",rId:o,isDuplicate:!!(t===null||t===void 0?void 0:t.Target),Target:(t===null||t===void 0?void 0:t.Target)?t.Target:`../media/media-${e._slideNum}-${e._relsMedia.length+1}.${d}`});A.mediaRid=o;e._relsMedia.push({path:l||"preencoded"+d,type:c+"/"+d,extn:d,data:i||"",rId:getNewRelId(e),isDuplicate:!!(t===null||t===void 0?void 0:t.Target),Target:(t===null||t===void 0?void 0:t.Target)?t.Target:`../media/media-${e._slideNum}-${e._relsMedia.length+0}.${d}`});e._relsMedia.push({path:"preencoded.png",type:"image/png",extn:"png",data:u,rId:getNewRelId(e),Target:`../media/image-${e._slideNum}-${e._relsMedia.length+1}.png`})}e._slideObjects.push(A)}function addNotesDefinition(e,t){e._slideObjects.push({_type:X.notes,text:[{text:t}]})}function addShapeDefinition(e,t,o){const n=typeof o==="object"?o:{};n.line=n.line||{type:"none"};const r={_type:X.text,shape:t||U.RECTANGLE,options:n,text:null};if(!t)throw new Error("Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`");const a={type:n.line.type||"solid",color:n.line.color||b,transparency:n.line.transparency||0,width:n.line.width||1,dashType:n.line.dashType||"solid",beginArrowType:n.line.beginArrowType||null,endArrowType:n.line.endArrowType||null};if(typeof n.line==="object"&&n.line.type!=="none")n.line=a;n.x=n.x||(n.x===0?0:1);n.y=n.y||(n.y===0?0:1);n.w=n.w||(n.w===0?0:1);n.h=n.h||(n.h===0?0:1);n.objectName=n.objectName?encodeXmlEntities(n.objectName):`Shape ${e._slideObjects.filter((e=>e._type===X.text)).length}`;if(typeof n.line==="string"){const e=a;e.color=String(n.line);n.line=e}if(typeof n.lineSize==="number")n.line.width=n.lineSize;if(typeof n.lineDash==="string")n.line.dashType=n.lineDash;if(typeof n.lineHead==="string")n.line.beginArrowType=n.lineHead;if(typeof n.lineTail==="string")n.line.endArrowType=n.lineTail;createHyperlinkRels(e,r);e._slideObjects.push(r)}function addTableDefinition(e,t,o,n,a,i,s){const l=[e];const c=o&&typeof o==="object"?o:{};c.objectName=c.objectName?encodeXmlEntities(c.objectName):`Table ${e._slideObjects.filter((e=>e._type===X.table)).length}`;{if(t===null||t.length===0||!Array.isArray(t)){throw new Error("addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)")}if(!t[0]||!Array.isArray(t[0])){throw new Error("addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)")}}const d=[];t.forEach((e=>{const t=[];if(Array.isArray(e)){e.forEach((e=>{const o={_type:X.tablecell,text:"",options:typeof e==="object"&&e.options?e.options:{}};if(typeof e==="string"||typeof e==="number")o.text=e.toString();else if(e.text){if(typeof e.text==="string"||typeof e.text==="number")o.text=e.text.toString();else if(e.text)o.text=e.text;if(e.options&&typeof e.options==="object")o.options=e.options}o.options.border=o.options.border||c.border||[{type:"none"},{type:"none"},{type:"none"},{type:"none"}];const n=o.options.border;if(!Array.isArray(n)&&typeof n==="object")o.options.border=[n,n,n,n];if(!o.options.border[0])o.options.border[0]={type:"none"};if(!o.options.border[1])o.options.border[1]={type:"none"};if(!o.options.border[2])o.options.border[2]={type:"none"};if(!o.options.border[3])o.options.border[3]={type:"none"};const r=[0,1,2,3];r.forEach((e=>{o.options.border[e]={type:o.options.border[e].type||u.type,color:o.options.border[e].color||u.color,pt:typeof o.options.border[e].pt==="number"?o.options.border[e].pt:u.pt}}));t.push(o)}))}else{console.log("addTable: tableRows has a bad row. A row should be an array of cells. You provided:");console.log(e)}d.push(t)}));c.x=getSmartParseNumber(c.x||(c.x===0?0:r/2),"X",a);c.y=getSmartParseNumber(c.y||(c.y===0?0:r/2),"Y",a);if(c.h)c.h=getSmartParseNumber(c.h,"Y",a);c.fontSize=c.fontSize||m;c.margin=c.margin===0||c.margin?c.margin:p;if(typeof c.margin==="number")c.margin=[Number(c.margin),Number(c.margin),Number(c.margin),Number(c.margin)];if(JSON.stringify({arrRows:d}).indexOf("hyperlink")===-1){if(!c.color)c.color=c.color||h}if(typeof c.border==="string"){console.warn("addTable `border` option must be an object. Ex: `{border: {type:'none'}}`");c.border=null}else if(Array.isArray(c.border)){[0,1,2,3].forEach((e=>{c.border[e]=c.border[e]?{type:c.border[e].type||u.type,color:c.border[e].color||u.color,pt:c.border[e].pt||u.pt}:{type:"none"}}))}c.autoPage=typeof c.autoPage==="boolean"?c.autoPage:false;c.autoPageRepeatHeader=typeof c.autoPageRepeatHeader==="boolean"?c.autoPageRepeatHeader:false;c.autoPageHeaderRows=typeof c.autoPageHeaderRows!=="undefined"&&!isNaN(Number(c.autoPageHeaderRows))?Number(c.autoPageHeaderRows):1;c.autoPageLineWeight=typeof c.autoPageLineWeight!=="undefined"&&!isNaN(Number(c.autoPageLineWeight))?Number(c.autoPageLineWeight):0;if(c.autoPageLineWeight){if(c.autoPageLineWeight>1)c.autoPageLineWeight=1;else if(c.autoPageLineWeight<-1)c.autoPageLineWeight=-1}let A=x;if(n&&typeof n._margin!=="undefined"){if(Array.isArray(n._margin))A=n._margin;else if(!isNaN(Number(n._margin))){A=[Number(n._margin),Number(n._margin),Number(n._margin),Number(n._margin)]}}if(c.colW){const e=d[0].reduce(((e,t)=>{var o;if(((o=t===null||t===void 0?void 0:t.options)===null||o===void 0?void 0:o.colspan)&&typeof t.options.colspan==="number"){e+=t.options.colspan}else{e+=1}return e}),0);if(typeof c.colW==="string"||typeof c.colW==="number"){c.w=Math.floor(Number(c.colW)*e);c.colW=null}else if(c.colW&&Array.isArray(c.colW)&&c.colW.length===1&&e>1){c.w=Math.floor(Number(c.colW)*e);c.colW=null}else if(c.colW&&Array.isArray(c.colW)&&c.colW.length!==e){console.warn("addTable: mismatch: (colW.length != data.length) Therefore, defaulting to evenly distributed col widths.");c.colW=null}}else if(c.w){c.w=getSmartParseNumber(c.w,"X",a)}else{c.w=Math.floor(a._sizeW/r-A[1]-A[3])}if(c.x&&c.x<20)c.x=inch2Emu(c.x);if(c.y&&c.y<20)c.y=inch2Emu(c.y);if(c.w&&typeof c.w==="number"&&c.w<20)c.w=inch2Emu(c.w);if(c.h&&typeof c.h==="number"&&c.h<20)c.h=inch2Emu(c.h);d.forEach((e=>{e.forEach(((t,o)=>{if(typeof t==="number"||typeof t==="string"){e[o]={_type:X.tablecell,text:String(e[o]),options:c}}else if(typeof t==="object"){if(typeof t.text==="number")e[o].text=e[o].text.toString();else if(typeof t.text==="undefined"||t.text===null)e[o].text="";e[o].options=t.options||{};e[o]._type=X.tablecell}}))}));const f=[];if(c&&!c.autoPage){createHyperlinkRels(e,d);e._slideObjects.push({_type:X.table,arrTabRows:d,options:Object.assign({},c)})}else{if(c.autoPageRepeatHeader)c._arrObjTabHeadRows=d.filter(((e,t)=>t<c.autoPageHeaderRows));getSlidesForTableRows(d,c,a,n).forEach(((t,o)=>{if(!s(e._slideNum+o))l.push(i({masterName:(n===null||n===void 0?void 0:n._name)||null}));if(o>0)c.y=inch2Emu(c.autoPageSlideStartY||c.newSlideStartY||A[0]);{const n=s(e._slideNum+o);c.autoPage=false;createHyperlinkRels(n,t.rows);n.addTable(t.rows,Object.assign({},c));if(o>0)f.push(n)}}))}return f}function addTextDefinition(e,t,o,n){const r={_type:n?X.placeholder:X.text,shape:(o===null||o===void 0?void 0:o.shape)||U.RECTANGLE,text:!t||t.length===0?[{text:"",options:null}]:t,options:o||{}};function cleanOpts(t){{if(!t.placeholder){t.color=t.color||r.options.color||e.color||h}if(t.placeholder||n){t.bullet=t.bullet||false}if(t.placeholder&&e._slideLayout&&e._slideLayout._slideObjects){const o=e._slideLayout._slideObjects.filter((e=>e._type==="placeholder"&&e.options&&e.options.placeholder&&e.options.placeholder===t.placeholder))[0];if(o===null||o===void 0?void 0:o.options)t=Object.assign(Object.assign({},t),o.options)}t.objectName=t.objectName?encodeXmlEntities(t.objectName):`Text ${e._slideObjects.filter((e=>e._type===X.text)).length}`;if(t.shape===U.LINE){const e={type:t.line.type||"solid",color:t.line.color||b,transparency:t.line.transparency||0,width:t.line.width||1,dashType:t.line.dashType||"solid",beginArrowType:t.line.beginArrowType||null,endArrowType:t.line.endArrowType||null};if(typeof t.line==="object")t.line=e;if(typeof t.line==="string"){const o=e;if(typeof t.line==="string")o.color=t.line;t.line=o}if(typeof t.lineSize==="number")t.line.width=t.lineSize;if(typeof t.lineDash==="string")t.line.dashType=t.lineDash;if(typeof t.lineHead==="string")t.line.beginArrowType=t.lineHead;if(typeof t.lineTail==="string")t.line.endArrowType=t.lineTail}t.line=t.line||{};t.lineSpacing=t.lineSpacing&&!isNaN(t.lineSpacing)?t.lineSpacing:null;t.lineSpacingMultiple=t.lineSpacingMultiple&&!isNaN(t.lineSpacingMultiple)?t.lineSpacingMultiple:null;t._bodyProp=t._bodyProp||{};t._bodyProp.autoFit=t.autoFit||false;t._bodyProp.anchor=!t.placeholder?N.ctr:null;t._bodyProp.vert=t.vert||null;t._bodyProp.wrap=typeof t.wrap==="boolean"?t.wrap:true;if(t.inset&&!isNaN(Number(t.inset))||t.inset===0){t._bodyProp.lIns=inch2Emu(t.inset);t._bodyProp.rIns=inch2Emu(t.inset);t._bodyProp.tIns=inch2Emu(t.inset);t._bodyProp.bIns=inch2Emu(t.inset)}if(typeof t.underline==="boolean"&&t.underline===true)t.underline={style:"sng"}}{if((t.align||"").toLowerCase().indexOf("c")===0)t._bodyProp.align=D.center;else if((t.align||"").toLowerCase().indexOf("l")===0)t._bodyProp.align=D.left;else if((t.align||"").toLowerCase().indexOf("r")===0)t._bodyProp.align=D.right;else if((t.align||"").toLowerCase().indexOf("j")===0)t._bodyProp.align=D.justify;if((t.valign||"").toLowerCase().indexOf("b")===0)t._bodyProp.anchor=N.b;else if((t.valign||"").toLowerCase().indexOf("m")===0)t._bodyProp.anchor=N.ctr;else if((t.valign||"").toLowerCase().indexOf("t")===0)t._bodyProp.anchor=N.t}correctShadowOptions(t.shadow);return t}r.options=cleanOpts(r.options);r.text.forEach((e=>e.options=cleanOpts(e.options||{})));createHyperlinkRels(e,r.text||"");e._slideObjects.push(r)}function addPlaceholdersToSlideLayouts(e){(e._slideLayout._slideObjects||[]).forEach((t=>{if(t._type===X.placeholder){if(e._slideObjects.filter((e=>e.options&&e.options.placeholder===t.options.placeholder)).length===0){addTextDefinition(e,[{text:""}],t.options,false)}}}))}function addBackgroundDefinition(e,t){var o;if(t.bkgd){if(!t.background)t.background={};if(typeof t.bkgd==="string")t.background.color=t.bkgd;else{if(t.bkgd.data)t.background.data=t.bkgd.data;if(t.bkgd.path)t.background.path=t.bkgd.path;if(t.bkgd.src)t.background.path=t.bkgd.src}}if((o=t.background)===null||o===void 0?void 0:o.fill)t.background.color=t.background.fill;if(e&&(e.path||e.data)){e.path=e.path||"preencoded.png";let o=(e.path.split(".").pop()||"png").split("?")[0];if(o==="jpg")o="jpeg";t._relsMedia=t._relsMedia||[];const n=t._relsMedia.length+1;t._relsMedia.push({path:e.path,type:X.image,extn:o,data:e.data||null,rId:n,Target:`../media/${(t._name||"").replace(/\s+/gi,"-")}-image-${t._relsMedia.length+1}.${o}`});t._bkgdImgRid=n}}function createHyperlinkRels(e,t,o){let n=[];if(typeof t==="string"||typeof t==="number")return;else if(Array.isArray(t))n=t;else if(typeof t==="object")n=[t];n.forEach(((t,n)=>{if(o&&o[n]&&o[n].hyperlink)t.options=Object.assign(Object.assign({},t.options),o[n]);if(Array.isArray(t)){const o=[];t.forEach((e=>{if(e.options&&!e.text.options){o.push(e.options)}}));createHyperlinkRels(e,t,o)}else if(Array.isArray(t.text)){createHyperlinkRels(e,t.text,o&&o[n]?[o[n]]:undefined)}else if(t&&typeof t==="object"&&t.options&&t.options.hyperlink&&!t.options.hyperlink._rId){if(typeof t.options.hyperlink!=="object"){console.log("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` ")}else if(!t.options.hyperlink.url&&!t.options.hyperlink.slide){console.log("ERROR: 'hyperlink requires either: `url` or `slide`'")}else{const o=getNewRelId(e);e._rels.push({type:X.hyperlink,data:t.options.hyperlink.slide?"slide":"dummy",rId:o,Target:encodeXmlEntities(t.options.hyperlink.url)||t.options.hyperlink.slide.toString()});t.options.hyperlink._rId=o}}else if(t&&typeof t==="object"&&t.options&&t.options.hyperlink&&t.options.hyperlink._rId){if(e._rels.filter((e=>e.rId===t.options.hyperlink._rId)).length===0){e._rels.push({type:X.hyperlink,data:t.options.hyperlink.slide?"slide":"dummy",rId:t.options.hyperlink._rId,Target:encodeXmlEntities(t.options.hyperlink.url)||t.options.hyperlink.slide.toString()})}}}))}class Slide{constructor(e){var t;this.addSlide=e.addSlide;this.getSlide=e.getSlide;this._name=`Slide ${e.slideNumber}`;this._presLayout=e.presLayout;this._rId=e.slideRId;this._rels=[];this._relsChart=[];this._relsMedia=[];this._setSlideNum=e.setSlideNum;this._slideId=e.slideId;this._slideLayout=e.slideLayout||null;this._slideNum=e.slideNumber;this._slideObjects=[];this._slideNumberProps=((t=this._slideLayout)===null||t===void 0?void 0:t._slideNumberProps)?this._slideLayout._slideNumberProps:null}set bkgd(e){this._bkgd=e;if(!this._background||!this._background.color){if(!this._background)this._background={};if(typeof e==="string")this._background.color=e}}get bkgd(){return this._bkgd}set background(e){this._background=e;if(e)addBackgroundDefinition(e,this)}get background(){return this._background}set color(e){this._color=e}get color(){return this._color}set hidden(e){this._hidden=e}get hidden(){return this._hidden}set slideNumber(e){this._slideNumberProps=e;this._setSlideNum(e)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart(e,t,o){const n=o||{};n._type=e;addChartDefinition(this,e,t,o);return this}addImage(e){addImageDefinition(this,e);return this}addMedia(e){addMediaDefinition(this,e);return this}addNotes(e){addNotesDefinition(this,e);return this}addShape(e,t){addShapeDefinition(this,e,t);return this}addTable(e,t){this._newAutoPagedSlides=addTableDefinition(this,e,t,this._slideLayout,this._presLayout,this.addSlide,this.getSlide);return this}addText(e,t){const o=typeof e==="string"||typeof e==="number"?[{text:e,options:t}]:e;addTextDefinition(this,o,t,false);return this}}function createExcelWorksheet(e,t){return __awaiter(this,void 0,void 0,(function*(){const o=e.data;return yield new Promise(((r,a)=>{var i,s;const l=new n;const c=(o.length-1)*2+1;const d=((s=(i=o[0])===null||i===void 0?void 0:i.labels)===null||s===void 0?void 0:s.length)>1;l.folder("_rels");l.folder("docProps");l.folder("xl/_rels");l.folder("xl/tables");l.folder("xl/theme");l.folder("xl/worksheets");l.folder("xl/worksheets/_rels");{l.file("[Content_Types].xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'+' <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>'+' <Default Extension="xml" ContentType="application/xml"/>'+' <Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>'+' <Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>'+' <Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>'+' <Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>'+' <Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>'+' <Override PartName="/xl/tables/table1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"/>'+' <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>'+' <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>'+"</Types>\n");l.file("_rels/.rels",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>'+'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>'+'<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>'+"</Relationships>\n");l.file("docProps/app.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">'+"<Application>Microsoft Macintosh Excel</Application>"+"<DocSecurity>0</DocSecurity>"+"<ScaleCrop>false</ScaleCrop>"+'<HeadingPairs><vt:vector size="2" baseType="variant"><vt:variant><vt:lpstr>Worksheets</vt:lpstr></vt:variant><vt:variant><vt:i4>1</vt:i4></vt:variant></vt:vector></HeadingPairs>'+'<TitlesOfParts><vt:vector size="1" baseType="lpstr"><vt:lpstr>Sheet1</vt:lpstr></vt:vector></TitlesOfParts>'+"<Company></Company><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>16.0300</AppVersion>"+"</Properties>\n");l.file("docProps/core.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'+"<dc:creator>PptxGenJS</dc:creator>"+"<cp:lastModifiedBy>PptxGenJS</cp:lastModifiedBy>"+'<dcterms:created xsi:type="dcterms:W3CDTF">'+(new Date).toISOString()+"</dcterms:created>"+'<dcterms:modified xsi:type="dcterms:W3CDTF">'+(new Date).toISOString()+"</dcterms:modified>"+"</cp:coreProperties>");l.file("xl/_rels/workbook.xml.rels",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+'<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>'+'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>'+'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>'+'<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>'+"</Relationships>");l.file("xl/styles.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><numFmts count="1"><numFmt numFmtId="0" formatCode="General"/></numFmts><fonts count="4"><font><sz val="9"/><color indexed="8"/><name val="Geneva"/></font><font><sz val="9"/><color indexed="8"/><name val="Geneva"/></font><font><sz val="10"/><color indexed="8"/><name val="Geneva"/></font><font><sz val="18"/><color indexed="8"/>'+'<name val="Arial"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><dxfs count="0"/><tableStyles count="0"/><colors><indexedColors><rgbColor rgb="ff000000"/><rgbColor rgb="ffffffff"/><rgbColor rgb="ffff0000"/><rgbColor rgb="ff00ff00"/><rgbColor rgb="ff0000ff"/>'+'<rgbColor rgb="ffffff00"/><rgbColor rgb="ffff00ff"/><rgbColor rgb="ff00ffff"/><rgbColor rgb="ff000000"/><rgbColor rgb="ffffffff"/><rgbColor rgb="ff878787"/><rgbColor rgb="fff9f9f9"/></indexedColors></colors></styleSheet>\n');l.file("xl/theme/theme1.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="44546A"/></a:dk2><a:lt2><a:srgbClr val="E7E6E6"/></a:lt2><a:accent1><a:srgbClr val="4472C4"/></a:accent1><a:accent2><a:srgbClr val="ED7D31"/></a:accent2><a:accent3><a:srgbClr val="A5A5A5"/></a:accent3><a:accent4><a:srgbClr val="FFC000"/></a:accent4><a:accent5><a:srgbClr val="5B9BD5"/></a:accent5><a:accent6><a:srgbClr val="70AD47"/></a:accent6><a:hlink><a:srgbClr val="0563C1"/></a:hlink><a:folHlink><a:srgbClr val="954F72"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Calibri Light" panose="020F0302020204030204"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="Yu Gothic Light"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="DengXian Light"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:majorFont><a:minorFont><a:latin typeface="Calibri" panose="020F0502020204030204"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="Yu Gothic"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="DengXian"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:lumMod val="110000"/><a:satMod val="105000"/><a:tint val="67000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="103000"/><a:tint val="73000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="109000"/><a:tint val="81000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:satMod val="103000"/><a:lumMod val="102000"/><a:tint val="94000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:satMod val="110000"/><a:lumMod val="100000"/><a:shade val="100000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="99000"/><a:satMod val="120000"/><a:shade val="78000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="6350" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="12700" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="19050" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="57150" dist="19050" dir="5400000" algn="ctr" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="63000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:solidFill><a:schemeClr val="phClr"><a:tint val="95000"/><a:satMod val="170000"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="93000"/><a:satMod val="150000"/><a:shade val="98000"/><a:lumMod val="102000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:tint val="98000"/><a:satMod val="130000"/><a:shade val="90000"/><a:lumMod val="103000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="63000"/><a:satMod val="120000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri="{05A4C25C-085E-4340-85A3-A5531E510DB2}"><thm15:themeFamily xmlns:thm15="http://schemas.microsoft.com/office/thememl/2012/main" name="Office Theme" id="{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}" vid="{4A3C46E8-61CC-4603-A589-7422A47A8E4A}"/></a:ext></a:extLst></a:theme>');l.file("xl/workbook.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+'<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x15" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main">'+'<fileVersion appName="xl" lastEdited="7" lowestEdited="6" rupBuild="10507"/>'+"<workbookPr/>"+'<bookViews><workbookView xWindow="0" yWindow="500" windowWidth="20960" windowHeight="15960"/></bookViews>'+'<sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets>'+'<calcPr calcId="0" concurrentCalc="0"/>'+"</workbook>\n");l.file("xl/worksheets/_rels/sheet1.xml.rels",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/table" Target="../tables/table1.xml"/>'+"</Relationships>\n")}{let t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){t+=`<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="${c}" uniqueCount="${c}">`}else if(e.opts._type===W.SCATTER){t+=`<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="${o.length}" uniqueCount="${o.length}">`}else if(d){let e=o.length;o[0].labels.forEach((t=>e+=t.filter((e=>e&&e!=="")).length));t+=`<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="${e}" uniqueCount="${e}">`;t+="<si><t/></si>"}else{const e=o.length+o[0].labels.length*o[0].labels[0].length+o[0].labels.length;const n=o.length+o[0].labels.length*o[0].labels[0].length+1;t+=`<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="${e}" uniqueCount="${n}">`;t+='<si><t xml:space="preserve"></t></si>'}if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){o.forEach(((e,o)=>{if(o===0)t+="<si><t>X-Axis</t></si>";else{t+=`<si><t>${encodeXmlEntities(e.name||`Y-Axis${o}`)}</t></si>`;t+=`<si><t>${encodeXmlEntities(`Size${o}`)}</t></si>`}}))}else{o.forEach((e=>{t+=`<si><t>${encodeXmlEntities((e.name||" ").replace("X-Axis","X-Values"))}</t></si>`}))}if(e.opts._type!==W.BUBBLE&&e.opts._type!==W.BUBBLE3D&&e.opts._type!==W.SCATTER){o[0].labels.slice().reverse().forEach((e=>{e.filter((e=>e&&e!=="")).forEach((e=>{t+=`<si><t>${encodeXmlEntities(e)}</t></si>`}))}))}t+="</sst>\n";l.file("xl/sharedStrings.xml",t)}{let t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){t+=`<table xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" id="1" name="Table1" displayName="Table1" ref="A1:${getExcelColName(c)}${c}" totalsRowShown="0">`;t+=`<tableColumns count="${c}">`;let e=1;o.forEach(((o,n)=>{if(n===0){t+=`<tableColumn id="${n+1}" name="X-Values"/>`}else{t+=`<tableColumn id="${n+e}" name="${o.name}"/>`;e++;t+=`<tableColumn id="${n+e}" name="Size${n}"/>`}}))}else if(e.opts._type===W.SCATTER){t+=`<table xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" id="1" name="Table1" displayName="Table1" ref="A1:${getExcelColName(o.length)}${o[0].values.length+1}" totalsRowShown="0">`;t+=`<tableColumns count="${o.length}">`;o.forEach(((e,o)=>{t+=`<tableColumn id="${o+1}" name="${o===0?"X-Values":"Y-Value "}${o}"/>`}))}else{t+=`<table xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" id="1" name="Table1" displayName="Table1" ref="A1:${getExcelColName(o.length+o[0].labels.length)}${o[0].labels[0].length+1}'" totalsRowShown="0">`;t+=`<tableColumns count="${o.length+o[0].labels.length}">`;o[0].labels.forEach(((e,o)=>{t+=`<tableColumn id="${o+1}" name="Column${o+1}"/>`}));o.forEach(((e,n)=>{t+=`<tableColumn id="${n+o[0].labels.length+1}" name="${encodeXmlEntities(e.name)}"/>`}))}t+="</tableColumns>";t+='<tableStyleInfo showFirstColumn="0" showLastColumn="0" showRowStripes="1" showColumnStripes="0"/>';t+="</table>";l.file("xl/tables/table1.xml",t)}{let t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';t+='<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">';if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){t+=`<dimension ref="A1:${getExcelColName(c)}${o[0].values.length+1}"/>`}else if(e.opts._type===W.SCATTER){t+=`<dimension ref="A1:${getExcelColName(o.length)}${o[0].values.length+1}"/>`}else{t+=`<dimension ref="A1:${getExcelColName(o.length+1)}${o[0].values.length+1}"/>`}t+='<sheetViews><sheetView tabSelected="1" workbookViewId="0"><selection activeCell="B1" sqref="B1"/></sheetView></sheetViews>';t+='<sheetFormatPr baseColWidth="10" defaultRowHeight="16"/>';if(e.opts._type===W.BUBBLE||e.opts._type===W.BUBBLE3D){t+="<sheetData>";t+=`<row r="1" spans="1:${c}">`;t+='<c r="A1" t="s"><v>0</v></c>';for(let e=1;e<c;e++){t+=`<c r="${getExcelColName(e+1)}1" t="s"><v>${e}</v></c>`}t+="</row>";o[0].values.forEach(((e,n)=>{t+=`<row r="${n+2}" spans="1:${c}">`;t+=`<c r="A${n+2}"><v>${e}</v></c>`;let r=2;for(let e=1;e<o.length;e++){t+=`<c r="${getExcelColName(r)}${n+2}"><v>${o[e].values[n]||""}</v></c>`;r++;t+=`<c r="${getExcelColName(r)}${n+2}"><v>${o[e].sizes[n]||""}</v></c>`;r++}t+="</row>"}))}else if(e.opts._type===W.SCATTER){t+="<sheetData>";t+=`<row r="1" spans="1:${o.length}">`;for(let e=0;e<o.length;e++){t+=`<c r="${getExcelColName(e+1)}1" t="s"><v>${e}</v></c>`}t+="</row>";o[0].values.forEach(((e,n)=>{t+=`<row r="${n+2}" spans="1:${o.length}">`;t+=`<c r="A${n+2}"><v>${e}</v></c>`;for(let e=1;e<o.length;e++){t+=`<c r="${getExcelColName(e+1)}${n+2}"><v>${o[e].values[n]||o[e].values[n]===0?o[e].values[n]:""}</v></c>`}t+="</row>"}))}else{t+="<sheetData>";if(!d){t+=`<row r="1" spans="1:${o.length+o[0].labels.length}">`;o[0].labels.forEach(((e,o)=>{t+=`<c r="${getExcelColName(o+1)}1" t="s"><v>0</v></c>`}));for(let e=0;e<o.length;e++){t+=`<c r="${getExcelColName(e+1+o[0].labels.length)}1" t="s"><v>${e+1}</v></c>`}t+="</row>";o[0].labels[0].forEach(((e,n)=>{t+=`<row r="${n+2}" spans="1:${o.length+o[0].labels.length}">`;for(let e=o[0].labels.length-1;e>=0;e--){t+=`<c r="${getExcelColName(o[0].labels.length-e)}${n+2}" t="s">`;t+=`<v>${o.length+n+1}</v>`;t+="</c>"}for(let e=0;e<o.length;e++){t+=`<c r="${getExcelColName(o[0].labels.length+e+1)}${n+2}"><v>${o[e].values[n]||""}</v></c>`}t+="</row>"}))}else{t+=`<row r="1" spans="1:${o.length+o[0].labels.length}">`;for(let e=0;e<o[0].labels.length;e++){t+=`<c r="${getExcelColName(e+1)}1" t="s"><v>0</v></c>`}for(let e=o[0].labels.length-1;e<o.length+o[0].labels.length-1;e++){t+=`<c r="${getExcelColName(e+o[0].labels.length)}1" t="s"><v>${e}</v></c>`}t+="</row>";const e=o.length;const n=o[0].labels[0].length;const r=o[0].labels.length;for(let a=0;a<n;a++){t+=`<row r="${a+2}" spans="1:${e+r}">`;let n=e;const i=o[0].labels.slice().reverse();i.forEach(((e,o)=>{const r=e[a];if(r){const e=o===0?1:i[o-1].filter((e=>e&&e!=="")).length;n+=e;t+=`<c r="${getExcelColName(a+1+o)}${a+2}" t="s"><v>${n}</v></c>`}}));for(let n=0;n<e;n++){t+=`<c r="${getExcelColName(r+n+1)}${a+2}"><v>${o[n].values[a]||0}</v></c>`}t+="</row>"}}}t+="</sheetData>";t+='<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>';t+="</worksheet>\n";l.file("xl/worksheets/sheet1.xml",t)}l.generateAsync({type:"base64"}).then((o=>{t.file(`ppt/embeddings/Microsoft_Excel_Worksheet${e.globalId}.xlsx`,o,{base64:true});t.file("ppt/charts/_rels/"+e.fileName+".rels",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'+`<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/package" Target="../embeddings/Microsoft_Excel_Worksheet${e.globalId}.xlsx"/>`+"</Relationships>");t.file(`ppt/charts/${e.fileName}`,makeXmlCharts(e));r("")})).catch((e=>{a(e)}))}))}))}function makeXmlCharts(e){var t,o,n,r;let a='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';let i=false;{a+='<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">';a+='<c:date1904 val="0"/>';a+=`<c:roundedCorners val="${e.opts.chartArea.roundedCorners?"1":"0"}"/>`;a+="<c:chart>";if(e.opts.showTitle){a+=genXmlTitle({title:e.opts.title||"Chart Title",color:e.opts.titleColor,fontFace:e.opts.titleFontFace,fontSize:e.opts.titleFontSize||g,titleAlign:e.opts.titleAlign,titleBold:e.opts.titleBold,titlePos:e.opts.titlePos,titleRotate:e.opts.titleRotate},e.opts.x,e.opts.y);a+='<c:autoTitleDeleted val="0"/>'}else{a+='<c:autoTitleDeleted val="1"/>'}if(e.opts._type===W.BAR3D){a+=`<c:view3D><c:rotX val="${e.opts.v3DRotX}"/><c:rotY val="${e.opts.v3DRotY}"/><c:rAngAx val="${!e.opts.v3DRAngAx?0:1}"/><c:perspective val="${e.opts.v3DPerspective}"/></c:view3D>`}a+="<c:plotArea>";if(e.opts.layout){a+="<c:layout>";a+=" <c:manualLayout>";a+=' <c:layoutTarget val="inner" />';a+=' <c:xMode val="edge" />';a+=' <c:yMode val="edge" />';a+=' <c:x val="'+(e.opts.layout.x||0)+'" />';a+=' <c:y val="'+(e.opts.layout.y||0)+'" />';a+=' <c:w val="'+(e.opts.layout.w||1)+'" />';a+=' <c:h val="'+(e.opts.layout.h||1)+'" />';a+=" </c:manualLayout>";a+="</c:layout>"}else{a+="<c:layout/>"}}if(Array.isArray(e.opts._type)){e.opts._type.forEach((t=>{const o=Object.assign(Object.assign({},e.opts),t.options);const n=o.secondaryValAxis?T:C;const r=o.secondaryCatAxis?E:P;i=i||o.secondaryValAxis;a+=makeChartType(t.type,t.data,o,n,r)}))}else{a+=makeChartType(e.opts._type,e.data,e.opts,C,P)}if(e.opts._type!==W.PIE&&e.opts._type!==W.DOUGHNUT){if(e.opts.valAxes&&e.opts.valAxes.length>1&&!i){throw new Error("Secondary axis must be used by one of the multiple charts")}if(e.opts.catAxes){if(!e.opts.valAxes||e.opts.valAxes.length!==e.opts.catAxes.length){throw new Error("There must be the same number of value and category axes.")}a+=makeCatAxis(Object.assign(Object.assign({},e.opts),e.opts.catAxes[0]),P,C)}else{a+=makeCatAxis(e.opts,P,C)}if(e.opts.valAxes){a+=makeValAxis(Object.assign(Object.assign({},e.opts),e.opts.valAxes[0]),C);if(e.opts.valAxes[1]){a+=makeValAxis(Object.assign(Object.assign({},e.opts),e.opts.valAxes[1]),T)}}else{a+=makeValAxis(e.opts,C);if(e.opts._type===W.BAR3D){a+=makeSerAxis(e.opts,_,C)}}if(((t=e.opts)===null||t===void 0?void 0:t.catAxes)&&((o=e.opts)===null||o===void 0?void 0:o.catAxes[1])){a+=makeCatAxis(Object.assign(Object.assign({},e.opts),e.opts.catAxes[1]),E,T)}}{if(e.opts.showDataTable){a+="<c:dTable>";a+=` <c:showHorzBorder val="${!e.opts.showDataTableHorzBorder?0:1}"/>`;a+=` <c:showVertBorder val="${!e.opts.showDataTableVertBorder?0:1}"/>`;a+=` <c:showOutline val="${!e.opts.showDataTableOutline?0:1}"/>`;a+=` <c:showKeys val="${!e.opts.showDataTableKeys?0:1}"/>`;a+=" <c:spPr>";a+=" <a:noFill/>";a+=' <a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="tx1"><a:lumMod val="15000"/><a:lumOff val="85000"/></a:schemeClr></a:solidFill><a:round/></a:ln>';a+=" <a:effectLst/>";a+=" </c:spPr>";a+=" <c:txPr>";a+=' <a:bodyPr rot="0" spcFirstLastPara="1" vertOverflow="ellipsis" vert="horz" wrap="square" anchor="ctr" anchorCtr="1"/>';a+=" <a:lstStyle/>";a+=" <a:p>";a+=' <a:pPr rtl="0">';a+=` <a:defRPr sz="${Math.round((e.opts.dataTableFontSize||m)*100)}" b="0" i="0" u="none" strike="noStrike" kern="1200" baseline="0">`;a+=' <a:solidFill><a:schemeClr val="tx1"><a:lumMod val="65000"/><a:lumOff val="35000"/></a:schemeClr></a:solidFill>';a+=' <a:latin typeface="+mn-lt"/>';a+=' <a:ea typeface="+mn-ea"/>';a+=' <a:cs typeface="+mn-cs"/>';a+=" </a:defRPr>";a+=" </a:pPr>";a+=' <a:endParaRPr lang="en-US"/>';a+=" </a:p>";a+=" </c:txPr>";a+="</c:dTable>"}a+=" <c:spPr>";a+=((n=e.opts.plotArea.fill)===null||n===void 0?void 0:n.color)?genXmlColorSelection(e.opts.plotArea.fill):"<a:noFill/>";a+=e.opts.plotArea.border?`<a:ln w="${valToPts(e.opts.plotArea.border.pt)}" cap="flat">${genXmlColorSelection(e.opts.plotArea.border.color)}</a:ln>`:"<a:ln><a:noFill/></a:ln>";a+=" <a:effectLst/>";a+=" </c:spPr>";a+="</c:plotArea>";if(e.opts.showLegend){a+="<c:legend>";a+='<c:legendPos val="'+e.opts.legendPos+'"/>';a+='<c:overlay val="0"/>';if(e.opts.legendFontFace||e.opts.legendFontSize||e.opts.legendColor){a+="<c:txPr>";a+=" <a:bodyPr/>";a+=" <a:lstStyle/>";a+=" <a:p>";a+=" <a:pPr>";a+=e.opts.legendFontSize?`<a:defRPr sz="${Math.round(Number(e.opts.legendFontSize)*100)}">`:"<a:defRPr>";if(e.opts.legendColor)a+=genXmlColorSelection(e.opts.legendColor);if(e.opts.legendFontFace)a+='<a:latin typeface="'+e.opts.legendFontFace+'"/>';if(e.opts.legendFontFace)a+='<a:cs typeface="'+e.opts.legendFontFace+'"/>';a+=" </a:defRPr>";a+=" </a:pPr>";a+=' <a:endParaRPr lang="en-US"/>';a+=" </a:p>";a+="</c:txPr>"}a+="</c:legend>"}}a+=' <c:plotVisOnly val="1"/>';a+=' <c:dispBlanksAs val="'+e.opts.displayBlanksAs+'"/>';if(e.opts._type===W.SCATTER)a+='<c:showDLblsOverMax val="1"/>';a+="</c:chart>";a+="<c:spPr>";a+=((r=e.opts.chartArea.fill)===null||r===void 0?void 0:r.color)?genXmlColorSelection(e.opts.chartArea.fill):"<a:noFill/>";a+=e.opts.chartArea.border?`<a:ln w="${valToPts(e.opts.chartArea.border.pt)}" cap="flat">${genXmlColorSelection(e.opts.chartArea.border.color)}</a:ln>`:"<a:ln><a:noFill/></a:ln>";a+=" <a:effectLst/>";a+="</c:spPr>";a+='<c:externalData r:id="rId1"><c:autoUpdate val="0"/></c:externalData>';a+="</c:chartSpace>";return a}function makeChartType(e,t,o,n,r,a){let i=-1;let s=1;let l=null;let c="";switch(e){case W.AREA:case W.BAR:case W.BAR3D:case W.LINE:case W.RADAR:c+=`<c:${e}Chart>`;if(e===W.AREA&&o.barGrouping==="stacked"){c+='<c:grouping val="'+o.barGrouping+'"/>'}if(e===W.BAR||e===W.BAR3D){c+='<c:barDir val="'+o.barDir+'"/>';c+='<c:grouping val="'+(o.barGrouping||"clustered")+'"/>'}if(e===W.RADAR){c+='<c:radarStyle val="'+o.radarStyle+'"/>'}c+='<c:varyColors val="0"/>';t.forEach((n=>{var r;i++;c+="<c:ser>";c+=` <c:idx val="${n._dataIndex}"/><c:order val="${n._dataIndex}"/>`;c+=" <c:tx>";c+=" <c:strRef>";c+=" <c:f>Sheet1!$"+getExcelColName(n._dataIndex+n.labels.length+1)+"$1</c:f>";c+=' <c:strCache><c:ptCount val="1"/><c:pt idx="0"><c:v>'+encodeXmlEntities(n.name)+"</c:v></c:pt></c:strCache>";c+=" </c:strRef>";c+=" </c:tx>";const a=o.chartColors?o.chartColors[i%o.chartColors.length]:null;c+=" <c:spPr>";if(a==="transparent"){c+="<a:noFill/>"}else if(o.chartColorsOpacity){c+="<a:solidFill>"+createColorElement(a,`<a:alpha val="${Math.round(o.chartColorsOpacity*1e3)}"/>`)+"</a:solidFill>"}else{c+="<a:solidFill>"+createColorElement(a)+"</a:solidFill>"}if(e===W.LINE||e===W.RADAR){if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else{c+=`<a:ln w="${valToPts(o.lineSize)}" cap="${createLineCap(o.lineCap)}"><a:solidFill>${createColorElement(a)}</a:solidFill>`;c+='<a:prstDash val="'+(o.lineDash||"solid")+'"/><a:round/></a:ln>'}}else if(o.dataBorder){c+=`<a:ln w="${valToPts(o.dataBorder.pt)}" cap="${createLineCap(o.lineCap)}"><a:solidFill>${createColorElement(o.dataBorder.color)}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`}c+=createShadowElement(o.shadow,w);c+=" </c:spPr>";c+=' <c:invertIfNegative val="0"/>';if(e!==W.RADAR){c+="<c:dLbls>";c+=`<c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;if(o.dataLabelBkgrdColors)c+=`<c:spPr><a:solidFill>${createColorElement(a)}</a:solidFill></c:spPr>`;c+="<c:txPr><a:bodyPr/><a:lstStyle/><a:p><a:pPr>";c+=`<a:defRPr b="${o.dataLabelFontBold?1:0}" i="${o.dataLabelFontItalic?1:0}" strike="noStrike" sz="${Math.round((o.dataLabelFontSize||m)*100)}" u="none">`;c+=`<a:solidFill>${createColorElement(o.dataLabelColor||h)}</a:solidFill>`;c+=`<a:latin typeface="${o.dataLabelFontFace||"Arial"}"/>`;c+="</a:defRPr></a:pPr></a:p></c:txPr>";if(o.dataLabelPosition)c+=`<c:dLblPos val="${o.dataLabelPosition}"/>`;c+='<c:showLegendKey val="0"/>';c+=`<c:showVal val="${o.showValue?"1":"0"}"/>`;c+=`<c:showCatName val="0"/><c:showSerName val="${o.showSerName?"1":"0"}"/><c:showPercent val="0"/><c:showBubbleSize val="0"/>`;c+=`<c:showLeaderLines val="${o.showLeaderLines?"1":"0"}"/>`;c+="</c:dLbls>"}if(e===W.LINE||e===W.RADAR){c+="<c:marker>";c+=' <c:symbol val="'+o.lineDataSymbol+'"/>';if(o.lineDataSymbolSize)c+=`<c:size val="${o.lineDataSymbolSize}"/>`;c+=" <c:spPr>";c+=` <a:solidFill>${createColorElement(o.chartColors[n._dataIndex+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):n._dataIndex])}</a:solidFill>`;c+=` <a:ln w="${o.lineDataSymbolLineSize}" cap="flat"><a:solidFill>${createColorElement(o.lineDataSymbolLineColor||a)}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`;c+=" <a:effectLst/>";c+=" </c:spPr>";c+="</c:marker>"}if((e===W.BAR||e===W.BAR3D)&&t.length===1&&(o.chartColors&&o.chartColors!==I&&o.chartColors.length>1||((r=o.invertedColors)===null||r===void 0?void 0:r.length))){n.values.forEach(((t,n)=>{const r=t<0?o.invertedColors||o.chartColors||I:o.chartColors||[];c+=" <c:dPt>";c+=` <c:idx val="${n}"/>`;c+=' <c:invertIfNegative val="0"/>';c+=' <c:bubble3D val="0"/>';c+=" <c:spPr>";if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else if(e===W.BAR){c+="<a:solidFill>";c+=' <a:srgbClr val="'+r[n%r.length]+'"/>';c+="</a:solidFill>"}else{c+="<a:ln>";c+=" <a:solidFill>";c+=' <a:srgbClr val="'+r[n%r.length]+'"/>';c+=" </a:solidFill>";c+="</a:ln>"}c+=createShadowElement(o.shadow,w);c+=" </c:spPr>";c+=" </c:dPt>"}))}{c+="<c:cat>";if(o.catLabelFormatCode){c+=" <c:numRef>";c+=` <c:f>Sheet1!$A$2:$A$${n.labels[0].length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>"+(o.catLabelFormatCode||"General")+"</c:formatCode>";c+=` <c:ptCount val="${n.labels[0].length}"/>`;n.labels[0].forEach(((e,t)=>c+=`<c:pt idx="${t}"><c:v>${encodeXmlEntities(e)}</c:v></c:pt>`));c+=" </c:numCache>";c+=" </c:numRef>"}else{c+=" <c:multiLvlStrRef>";c+=` <c:f>Sheet1!$A$2:$${getExcelColName(n.labels.length)}$${n.labels[0].length+1}</c:f>`;c+=" <c:multiLvlStrCache>";c+=` <c:ptCount val="${n.labels[0].length}"/>`;n.labels.forEach((e=>{c+="<c:lvl>";e.forEach(((e,t)=>c+=`<c:pt idx="${t}"><c:v>${encodeXmlEntities(e)}</c:v></c:pt>`));c+="</c:lvl>"}));c+=" </c:multiLvlStrCache>";c+=" </c:multiLvlStrRef>"}c+="</c:cat>"}{c+="<c:val>";c+=" <c:numRef>";c+=`<c:f>Sheet1!$${getExcelColName(n._dataIndex+n.labels.length+1)}$2:$${getExcelColName(n._dataIndex+n.labels.length+1)}$${n.labels[0].length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>"+(o.valLabelFormatCode||o.dataTableFormatCode||"General")+"</c:formatCode>";c+=` <c:ptCount val="${n.labels[0].length}"/>`;n.values.forEach(((e,t)=>c+=`<c:pt idx="${t}"><c:v>${e||e===0?e:""}</c:v></c:pt>`));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:val>"}if(e===W.LINE)c+='<c:smooth val="'+(o.lineSmooth?"1":"0")+'"/>';c+="</c:ser>"}));{c+=" <c:dLbls>";c+=` <c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+=" <c:txPr>";c+=" <a:bodyPr/>";c+=" <a:lstStyle/>";c+=" <a:p><a:pPr>";c+=` <a:defRPr b="${o.dataLabelFontBold?1:0}" i="${o.dataLabelFontItalic?1:0}" strike="noStrike" sz="${Math.round((o.dataLabelFontSize||m)*100)}" u="none">`;c+=" <a:solidFill>"+createColorElement(o.dataLabelColor||h)+"</a:solidFill>";c+=' <a:latin typeface="'+(o.dataLabelFontFace||"Arial")+'"/>';c+=" </a:defRPr>";c+=" </a:pPr></a:p>";c+=" </c:txPr>";if(o.dataLabelPosition)c+=' <c:dLblPos val="'+o.dataLabelPosition+'"/>';c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="'+(o.showValue?"1":"0")+'"/>';c+=' <c:showCatName val="0"/>';c+=' <c:showSerName val="'+(o.showSerName?"1":"0")+'"/>';c+=' <c:showPercent val="0"/>';c+=' <c:showBubbleSize val="0"/>';c+=` <c:showLeaderLines val="${o.showLeaderLines?"1":"0"}"/>`;c+=" </c:dLbls>"}if(e===W.BAR){c+=` <c:gapWidth val="${o.barGapWidthPct}"/>`;c+=` <c:overlap val="${(o.barGrouping||"").includes("tacked")?100:o.barOverlapPct?o.barOverlapPct:0}"/>`}else if(e===W.BAR3D){c+=` <c:gapWidth val="${o.barGapWidthPct}"/>`;c+=` <c:gapDepth val="${o.barGapDepthPct}"/>`;c+=' <c:shape val="'+o.bar3DShape+'"/>'}else if(e===W.LINE){c+=' <c:marker val="1"/>'}c+=`<c:axId val="${r}"/><c:axId val="${n}"/><c:axId val="${_}"/>`;c+=`</c:${e}Chart>`;break;case W.SCATTER:c+="<c:"+e+"Chart>";c+='<c:scatterStyle val="lineMarker"/>';c+='<c:varyColors val="0"/>';i=-1;t.filter(((e,t)=>t>0)).forEach(((e,n)=>{i++;c+="<c:ser>";c+=` <c:idx val="${n}"/>`;c+=` <c:order val="${n}"/>`;c+=" <c:tx>";c+=" <c:strRef>";c+=` <c:f>Sheet1!$${getExcelColName(n+2)}$1</c:f>`;c+=' <c:strCache><c:ptCount val="1"/><c:pt idx="0"><c:v>'+encodeXmlEntities(e.name)+"</c:v></c:pt></c:strCache>";c+=" </c:strRef>";c+=" </c:tx>";c+=" <c:spPr>";{const e=o.chartColors[i%o.chartColors.length];if(e==="transparent"){c+="<a:noFill/>"}else if(o.chartColorsOpacity){c+="<a:solidFill>"+createColorElement(e,'<a:alpha val="'+Math.round(o.chartColorsOpacity*1e3).toString()+'"/>')+"</a:solidFill>"}else{c+="<a:solidFill>"+createColorElement(e)+"</a:solidFill>"}if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else{c+=`<a:ln w="${valToPts(o.lineSize)}" cap="${createLineCap(o.lineCap)}"><a:solidFill>${createColorElement(e)}</a:solidFill>`;c+=`<a:prstDash val="${o.lineDash||"solid"}"/><a:round/></a:ln>`}c+=createShadowElement(o.shadow,w)}c+=" </c:spPr>";{c+="<c:marker>";c+=' <c:symbol val="'+o.lineDataSymbol+'"/>';if(o.lineDataSymbolSize){c+=`<c:size val="${o.lineDataSymbolSize}"/>`}c+="<c:spPr>";c+=`<a:solidFill>${createColorElement(o.chartColors[n+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):n])}</a:solidFill>`;c+=`<a:ln w="${o.lineDataSymbolLineSize}" cap="flat"><a:solidFill>${createColorElement(o.lineDataSymbolLineColor||o.chartColors[i%o.chartColors.length])}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`;c+="<a:effectLst/>";c+="</c:spPr>";c+="</c:marker>"}if(o.showLabel){const t=getUuid("-xxxx-xxxx-xxxx-xxxxxxxxxxxx");if(e.labels[0]&&(o.dataLabelFormatScatter==="custom"||o.dataLabelFormatScatter==="customXY")){c+="<c:dLbls>";e.labels[0].forEach(((n,r)=>{if(o.dataLabelFormatScatter==="custom"||o.dataLabelFormatScatter==="customXY"){c+=" <c:dLbl>";c+=` <c:idx val="${r}"/>`;c+=" <c:tx>";c+=" <c:rich>";c+=" <a:bodyPr>";c+=" <a:spAutoFit/>";c+=" </a:bodyPr>";c+=" <a:lstStyle/>";c+=" <a:p>";c+=" <a:pPr>";c+=" <a:defRPr/>";c+=" </a:pPr>";c+=" <a:r>";c+=' <a:rPr lang="'+(o.lang||"en-US")+'" dirty="0"/>';c+=" <a:t>"+encodeXmlEntities(n)+"</a:t>";c+=" </a:r>";if(o.dataLabelFormatScatter==="customXY"&&!/^ *$/.test(n)){c+=" <a:r>";c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0" dirty="0"/>';c+=" <a:t> (</a:t>";c+=" </a:r>";c+=' <a:fld id="{'+getUuid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")+'}" type="XVALUE">';c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0"/>';c+=" <a:pPr>";c+=" <a:defRPr/>";c+=" </a:pPr>";c+=" <a:t>["+encodeXmlEntities(e.name)+"</a:t>";c+=" </a:fld>";c+=" <a:r>";c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0" dirty="0"/>';c+=" <a:t>, </a:t>";c+=" </a:r>";c+=' <a:fld id="{'+getUuid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")+'}" type="YVALUE">';c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0"/>';c+=" <a:pPr>";c+=" <a:defRPr/>";c+=" </a:pPr>";c+=" <a:t>["+encodeXmlEntities(e.name)+"]</a:t>";c+=" </a:fld>";c+=" <a:r>";c+=' <a:rPr lang="'+(o.lang||"en-US")+'" baseline="0" dirty="0"/>';c+=" <a:t>)</a:t>";c+=" </a:r>";c+=' <a:endParaRPr lang="'+(o.lang||"en-US")+'" dirty="0"/>'}c+=" </a:p>";c+=" </c:rich>";c+=" </c:tx>";c+=" <c:spPr>";c+=" <a:noFill/>";c+=" <a:ln>";c+=" <a:noFill/>";c+=" </a:ln>";c+=" <a:effectLst/>";c+=" </c:spPr>";if(o.dataLabelPosition)c+=' <c:dLblPos val="'+o.dataLabelPosition+'"/>';c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="0"/>';c+=' <c:showCatName val="0"/>';c+=' <c:showSerName val="0"/>';c+=' <c:showPercent val="0"/>';c+=' <c:showBubbleSize val="0"/>';c+=' <c:showLeaderLines val="1"/>';c+=" <c:extLst>";c+=' <c:ext uri="{CE6537A1-D6FC-4f65-9D91-7224C49458BB}" xmlns:c15="http://schemas.microsoft.com/office/drawing/2012/chart"/>';c+=' <c:ext uri="{C3380CC4-5D6E-409C-BE32-E72D297353CC}" xmlns:c16="http://schemas.microsoft.com/office/drawing/2014/chart">';c+=` <c16:uniqueId val="{${"00000000".substring(0,8-(r+1).toString().length).toString()}${r+1}${t}}"/>`;c+=" </c:ext>";c+=" </c:extLst>";c+="</c:dLbl>"}}));c+="</c:dLbls>"}if(o.dataLabelFormatScatter==="XY"){c+="<c:dLbls>";c+=" <c:spPr>";c+=" <a:noFill/>";c+=" <a:ln>";c+=" <a:noFill/>";c+=" </a:ln>";c+=" <a:effectLst/>";c+=" </c:spPr>";c+=" <c:txPr>";c+=" <a:bodyPr>";c+=" <a:spAutoFit/>";c+=" </a:bodyPr>";c+=" <a:lstStyle/>";c+=" <a:p>";c+=" <a:pPr>";c+=" <a:defRPr/>";c+=" </a:pPr>";c+=' <a:endParaRPr lang="en-US"/>';c+=" </a:p>";c+=" </c:txPr>";if(o.dataLabelPosition)c+=' <c:dLblPos val="'+o.dataLabelPosition+'"/>';c+=' <c:showLegendKey val="0"/>';c+=` <c:showVal val="${o.showLabel?"1":"0"}"/>`;c+=` <c:showCatName val="${o.showLabel?"1":"0"}"/>`;c+=` <c:showSerName val="${o.showSerName?"1":"0"}"/>`;c+=' <c:showPercent val="0"/>';c+=' <c:showBubbleSize val="0"/>';c+=" <c:extLst>";c+=' <c:ext uri="{CE6537A1-D6FC-4f65-9D91-7224C49458BB}" xmlns:c15="http://schemas.microsoft.com/office/drawing/2012/chart">';c+=' <c15:showLeaderLines val="1"/>';c+=" </c:ext>";c+=" </c:extLst>";c+="</c:dLbls>"}}if(t.length===1&&o.chartColors!==I){e.values.forEach(((e,t)=>{const n=e<0?o.invertedColors||o.chartColors||I:o.chartColors||[];c+=" <c:dPt>";c+=` <c:idx val="${t}"/>`;c+=' <c:invertIfNegative val="0"/>';c+=' <c:bubble3D val="0"/>';c+=" <c:spPr>";if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else{c+="<a:solidFill>";c+=' <a:srgbClr val="'+n[t%n.length]+'"/>';c+="</a:solidFill>"}c+=createShadowElement(o.shadow,w);c+=" </c:spPr>";c+=" </c:dPt>"}))}{c+="<c:xVal>";c+=" <c:numRef>";c+=` <c:f>Sheet1!$A$2:$A$${t[0].values.length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${t[0].values.length}"/>`;t[0].values.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${e||e===0?e:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:xVal>";c+="<c:yVal>";c+=" <c:numRef>";c+=` <c:f>Sheet1!$${getExcelColName(n+2)}$2:$${getExcelColName(n+2)}$${t[0].values.length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${t[0].values.length}"/>`;t[0].values.forEach(((t,o)=>{c+=`<c:pt idx="${o}"><c:v>${e.values[o]||e.values[o]===0?e.values[o]:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:yVal>"}c+='<c:smooth val="'+(o.lineSmooth?"1":"0")+'"/>';c+="</c:ser>"}));{c+=" <c:dLbls>";c+=` <c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+=" <c:txPr>";c+=" <a:bodyPr/>";c+=" <a:lstStyle/>";c+=" <a:p><a:pPr>";c+=` <a:defRPr b="${o.dataLabelFontBold?"1":"0"}" i="${o.dataLabelFontItalic?"1":"0"}" strike="noStrike" sz="${Math.round((o.dataLabelFontSize||m)*100)}" u="none">`;c+=" <a:solidFill>"+createColorElement(o.dataLabelColor||h)+"</a:solidFill>";c+=' <a:latin typeface="'+(o.dataLabelFontFace||"Arial")+'"/>';c+=" </a:defRPr>";c+=" </a:pPr></a:p>";c+=" </c:txPr>";if(o.dataLabelPosition)c+=' <c:dLblPos val="'+o.dataLabelPosition+'"/>';c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="'+(o.showValue?"1":"0")+'"/>';c+=' <c:showCatName val="0"/>';c+=' <c:showSerName val="'+(o.showSerName?"1":"0")+'"/>';c+=' <c:showPercent val="0"/>';c+=' <c:showBubbleSize val="0"/>';c+=" </c:dLbls>"}c+=`<c:axId val="${r}"/><c:axId val="${n}"/>`;c+="</c:"+e+"Chart>";break;case W.BUBBLE:case W.BUBBLE3D:c+="<c:bubbleChart>";c+='<c:varyColors val="0"/>';i=-1;t.filter(((e,t)=>t>0)).forEach(((n,r)=>{i++;c+="<c:ser>";c+=` <c:idx val="${r}"/>`;c+=` <c:order val="${r}"/>`;c+=" <c:tx>";c+=" <c:strRef>";c+=" <c:f>Sheet1!$"+getExcelColName(s+1)+"$1</c:f>";c+=' <c:strCache><c:ptCount val="1"/><c:pt idx="0"><c:v>'+encodeXmlEntities(n.name)+"</c:v></c:pt></c:strCache>";c+=" </c:strRef>";c+=" </c:tx>";{c+="<c:spPr>";const e=o.chartColors[i%o.chartColors.length];if(e==="transparent"){c+="<a:noFill/>"}else if(o.chartColorsOpacity){c+=`<a:solidFill>${createColorElement(e,'<a:alpha val="'+Math.round(o.chartColorsOpacity*1e3).toString()+'"/>')}</a:solidFill>`}else{c+="<a:solidFill>"+createColorElement(e)+"</a:solidFill>"}if(o.lineSize===0){c+="<a:ln><a:noFill/></a:ln>"}else if(o.dataBorder){c+=`<a:ln w="${valToPts(o.dataBorder.pt)}" cap="flat"><a:solidFill>${createColorElement(o.dataBorder.color)}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`}else{c+=`<a:ln w="${valToPts(o.lineSize)}" cap="flat"><a:solidFill>${createColorElement(e)}</a:solidFill>`;c+=`<a:prstDash val="${o.lineDash||"solid"}"/><a:round/></a:ln>`}c+=createShadowElement(o.shadow,w);c+="</c:spPr>"}{c+="<c:xVal>";c+=" <c:numRef>";c+=` <c:f>Sheet1!$A$2:$A$${t[0].values.length+1}</c:f>`;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${t[0].values.length}"/>`;t[0].values.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${e||e===0?e:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:xVal>";c+="<c:yVal>";c+=" <c:numRef>";c+=`<c:f>Sheet1!$${getExcelColName(s+1)}$2:$${getExcelColName(s+1)}$${t[0].values.length+1}</c:f>`;s++;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${t[0].values.length}"/>`;t[0].values.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${n.values[t]||n.values[t]===0?n.values[t]:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+="</c:yVal>"}c+=" <c:bubbleSize>";c+=" <c:numRef>";c+=`<c:f>Sheet1!$${getExcelColName(s+1)}$2:$${getExcelColName(s+1)}$${n.sizes.length+1}</c:f>`;s++;c+=" <c:numCache>";c+=" <c:formatCode>General</c:formatCode>";c+=` <c:ptCount val="${n.sizes.length}"/>`;n.sizes.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${e||""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+=" </c:bubbleSize>";c+=' <c:bubble3D val="'+(e===W.BUBBLE3D?"1":"0")+'"/>';c+="</c:ser>"}));{c+="<c:dLbls>";c+=`<c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+="<c:txPr><a:bodyPr/><a:lstStyle/><a:p><a:pPr>";c+=`<a:defRPr b="${o.dataLabelFontBold?1:0}" i="${o.dataLabelFontItalic?1:0}" strike="noStrike" sz="${Math.round(Math.round(o.dataLabelFontSize||m)*100)}" u="none">`;c+=`<a:solidFill>${createColorElement(o.dataLabelColor||h)}</a:solidFill>`;c+=`<a:latin typeface="${o.dataLabelFontFace||"Arial"}"/>`;c+="</a:defRPr></a:pPr></a:p></c:txPr>";if(o.dataLabelPosition)c+=`<c:dLblPos val="${o.dataLabelPosition}"/>`;c+='<c:showLegendKey val="0"/>';c+=`<c:showVal val="${o.showValue?"1":"0"}"/>`;c+=`<c:showCatName val="0"/><c:showSerName val="${o.showSerName?"1":"0"}"/><c:showPercent val="0"/><c:showBubbleSize val="0"/>`;c+="<c:extLst>";c+=' <c:ext uri="{CE6537A1-D6FC-4f65-9D91-7224C49458BB}" xmlns:c15="http://schemas.microsoft.com/office/drawing/2012/chart">';c+=' <c15:showLeaderLines val="'+(o.showLeaderLines?"1":"0")+'"/>';c+=" </c:ext>";c+="</c:extLst>";c+="</c:dLbls>"}c+=`<c:axId val="${r}"/><c:axId val="${n}"/>`;c+="</c:bubbleChart>";break;case W.DOUGHNUT:case W.PIE:l=t[0];c+="<c:"+e+"Chart>";c+=' <c:varyColors val="1"/>';c+="<c:ser>";c+=' <c:idx val="0"/>';c+=' <c:order val="0"/>';c+=" <c:tx>";c+=" <c:strRef>";c+=" <c:f>Sheet1!$B$1</c:f>";c+=" <c:strCache>";c+=' <c:ptCount val="1"/>';c+=' <c:pt idx="0"><c:v>'+encodeXmlEntities(l.name)+"</c:v></c:pt>";c+=" </c:strCache>";c+=" </c:strRef>";c+=" </c:tx>";c+=" <c:spPr>";c+=' <a:solidFill><a:schemeClr val="accent1"/></a:solidFill>';c+=' <a:ln w="9525" cap="flat"><a:solidFill><a:srgbClr val="F9F9F9"/></a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>';if(o.dataNoEffects){c+="<a:effectLst/>"}else{c+=createShadowElement(o.shadow,w)}c+=" </c:spPr>";l.labels[0].forEach(((e,t)=>{c+="<c:dPt>";c+=` <c:idx val="${t}"/>`;c+=' <c:bubble3D val="0"/>';c+=" <c:spPr>";c+=`<a:solidFill>${createColorElement(o.chartColors[t+1>o.chartColors.length?Math.floor(Math.random()*o.chartColors.length):t])}</a:solidFill>`;if(o.dataBorder){c+=`<a:ln w="${valToPts(o.dataBorder.pt)}" cap="flat"><a:solidFill>${createColorElement(o.dataBorder.color)}</a:solidFill><a:prstDash val="solid"/><a:round/></a:ln>`}c+=createShadowElement(o.shadow,w);c+=" </c:spPr>";c+="</c:dPt>"}));c+="<c:dLbls>";l.labels[0].forEach(((t,n)=>{c+="<c:dLbl>";c+=` <c:idx val="${n}"/>`;c+=` <c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+=" <c:spPr/><c:txPr>";c+=" <a:bodyPr/><a:lstStyle/>";c+=" <a:p><a:pPr>";c+=` <a:defRPr sz="${Math.round((o.dataLabelFontSize||m)*100)}" b="${o.dataLabelFontBold?1:0}" i="${o.dataLabelFontItalic?1:0}" u="none" strike="noStrike">`;c+=" <a:solidFill>"+createColorElement(o.dataLabelColor||h)+"</a:solidFill>";c+=` <a:latin typeface="${o.dataLabelFontFace||"Arial"}"/>`;c+=" </a:defRPr>";c+=" </a:pPr></a:p>";c+=" </c:txPr>";if(e===W.PIE&&o.dataLabelPosition)c+=`<c:dLblPos val="${o.dataLabelPosition}"/>`;c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="'+(o.showValue?"1":"0")+'"/>';c+=' <c:showCatName val="'+(o.showLabel?"1":"0")+'"/>';c+=' <c:showSerName val="'+(o.showSerName?"1":"0")+'"/>';c+=' <c:showPercent val="'+(o.showPercent?"1":"0")+'"/>';c+=' <c:showBubbleSize val="0"/>';c+=" </c:dLbl>"}));c+=` <c:numFmt formatCode="${encodeXmlEntities(o.dataLabelFormatCode)||"General"}" sourceLinked="0"/>`;c+=" <c:txPr>";c+=" <a:bodyPr/>";c+=" <a:lstStyle/>";c+=" <a:p>";c+=" <a:pPr>";c+=` <a:defRPr sz="1800" b="${o.dataLabelFontBold?"1":"0"}" i="${o.dataLabelFontItalic?"1":"0"}" u="none" strike="noStrike">`;c+=' <a:solidFill><a:srgbClr val="000000"/></a:solidFill><a:latin typeface="Arial"/>';c+=" </a:defRPr>";c+=" </a:pPr>";c+=" </a:p>";c+=" </c:txPr>";c+=e===W.PIE?'<c:dLblPos val="ctr"/>':"";c+=' <c:showLegendKey val="0"/>';c+=' <c:showVal val="0"/>';c+=' <c:showCatName val="1"/>';c+=' <c:showSerName val="0"/>';c+=' <c:showPercent val="1"/>';c+=' <c:showBubbleSize val="0"/>';c+=` <c:showLeaderLines val="${o.showLeaderLines?"1":"0"}"/>`;c+="</c:dLbls>";c+="<c:cat>";c+=" <c:strRef>";c+=` <c:f>Sheet1!$A$2:$A$${l.labels[0].length+1}</c:f>`;c+=" <c:strCache>";c+=` <c:ptCount val="${l.labels[0].length}"/>`;l.labels[0].forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${encodeXmlEntities(e)}</c:v></c:pt>`}));c+=" </c:strCache>";c+=" </c:strRef>";c+="</c:cat>";c+=" <c:val>";c+=" <c:numRef>";c+=` <c:f>Sheet1!$B$2:$B$${l.labels[0].length+1}</c:f>`;c+=" <c:numCache>";c+=` <c:ptCount val="${l.labels[0].length}"/>`;l.values.forEach(((e,t)=>{c+=`<c:pt idx="${t}"><c:v>${e||e===0?e:""}</c:v></c:pt>`}));c+=" </c:numCache>";c+=" </c:numRef>";c+=" </c:val>";c+=" </c:ser>";c+=` <c:firstSliceAng val="${o.firstSliceAng?Math.round(o.firstSliceAng):0}"/>`;if(e===W.DOUGHNUT)c+=`<c:holeSize val="${typeof o.holeSize==="number"?o.holeSize:"50"}"/>`;c+="</c:"+e+"Chart>";break;default:c+="";break}return c}function makeCatAxis(e,t,o){let n="";if(e._type===W.SCATTER||e._type===W.BUBBLE||e._type===W.BUBBLE3D){n+="<c:valAx>"}else{n+="<c:"+(e.catLabelFormatCode?"dateAx":"catAx")+">"}n+=' <c:axId val="'+t+'"/>';n+=" <c:scaling>";n+='<c:orientation val="'+(e.catAxisOrientation||(e.barDir==="col"?"minMax":"minMax"))+'"/>';if(e.catAxisMaxVal||e.catAxisMaxVal===0)n+=`<c:max val="${e.catAxisMaxVal}"/>`;if(e.catAxisMinVal||e.catAxisMinVal===0)n+=`<c:min val="${e.catAxisMinVal}"/>`;n+="</c:scaling>";n+=' <c:delete val="'+(e.catAxisHidden?"1":"0")+'"/>';n+=' <c:axPos val="'+(e.barDir==="col"?"b":"l")+'"/>';n+=e.catGridLine.style!=="none"?createGridLineElement(e.catGridLine):"";if(e.showCatAxisTitle){n+=genXmlTitle({color:e.catAxisTitleColor,fontFace:e.catAxisTitleFontFace,fontSize:e.catAxisTitleFontSize,titleRotate:e.catAxisTitleRotate,title:e.catAxisTitle||"Axis Title"})}if(e._type===W.SCATTER||e._type===W.BUBBLE||e._type===W.BUBBLE3D){n+=' <c:numFmt formatCode="'+(e.valAxisLabelFormatCode?encodeXmlEntities(e.valAxisLabelFormatCode):"General")+'" sourceLinked="1"/>'}else{n+=' <c:numFmt formatCode="'+(encodeXmlEntities(e.catLabelFormatCode)||"General")+'" sourceLinked="1"/>'}if(e._type===W.SCATTER){n+=' <c:majorTickMark val="none"/>';n+=' <c:minorTickMark val="none"/>';n+=' <c:tickLblPos val="nextTo"/>'}else{n+=' <c:majorTickMark val="'+(e.catAxisMajorTickMark||"out")+'"/>';n+=' <c:minorTickMark val="'+(e.catAxisMinorTickMark||"none")+'"/>';n+=' <c:tickLblPos val="'+(e.catAxisLabelPos||(e.barDir==="col"?"low":"nextTo"))+'"/>'}n+=" <c:spPr>";n+=` <a:ln w="${e.catAxisLineSize?valToPts(e.catAxisLineSize):a}" cap="flat">`;n+=!e.catAxisLineShow?"<a:noFill/>":"<a:solidFill>"+createColorElement(e.catAxisLineColor||f.color)+"</a:solidFill>";n+=' <a:prstDash val="'+(e.catAxisLineStyle||"solid")+'"/>';n+=" <a:round/>";n+=" </a:ln>";n+=" </c:spPr>";n+=" <c:txPr>";if(e.catAxisLabelRotate){n+=`<a:bodyPr rot="${convertRotationDegrees(e.catAxisLabelRotate)}"/>`}else{n+="<a:bodyPr/>"}n+=" <a:lstStyle/>";n+=" <a:p>";n+=" <a:pPr>";n+=` <a:defRPr sz="${Math.round((e.catAxisLabelFontSize||m)*100)}" b="${e.catAxisLabelFontBold?1:0}" i="${e.catAxisLabelFontItalic?1:0}" u="none" strike="noStrike">`;n+=" <a:solidFill>"+createColorElement(e.catAxisLabelColor||h)+"</a:solidFill>";n+=' <a:latin typeface="'+(e.catAxisLabelFontFace||"Arial")+'"/>';n+=" </a:defRPr>";n+=" </a:pPr>";n+=' <a:endParaRPr lang="'+(e.lang||"en-US")+'"/>';n+=" </a:p>";n+=" </c:txPr>";n+=' <c:crossAx val="'+o+'"/>';n+=` <c:${typeof e.valAxisCrossesAt==="number"?"crossesAt":"crosses"} val="${e.valAxisCrossesAt||"autoZero"}"/>`;n+=' <c:auto val="1"/>';n+=' <c:lblAlgn val="ctr"/>';n+=` <c:noMultiLvlLbl val="${e.catAxisMultiLevelLabels?0:1}"/>`;if(e.catAxisLabelFrequency)n+=' <c:tickLblSkip val="'+e.catAxisLabelFrequency+'"/>';if(e.catLabelFormatCode||e._type===W.SCATTER||e._type===W.BUBBLE||e._type===W.BUBBLE3D){if(e.catLabelFormatCode){["catAxisBaseTimeUnit","catAxisMajorTimeUnit","catAxisMinorTimeUnit"].forEach((t=>{if(e[t]&&(typeof e[t]!=="string"||!["days","months","years"].includes(e[t].toLowerCase()))){console.warn(`"${t}" must be one of: 'days','months','years' !`);e[t]=null}}));if(e.catAxisBaseTimeUnit)n+='<c:baseTimeUnit val="'+e.catAxisBaseTimeUnit.toLowerCase()+'"/>';if(e.catAxisMajorTimeUnit)n+='<c:majorTimeUnit val="'+e.catAxisMajorTimeUnit.toLowerCase()+'"/>';if(e.catAxisMinorTimeUnit)n+='<c:minorTimeUnit val="'+e.catAxisMinorTimeUnit.toLowerCase()+'"/>'}if(e.catAxisMajorUnit)n+=`<c:majorUnit val="${e.catAxisMajorUnit}"/>`;if(e.catAxisMinorUnit)n+=`<c:minorUnit val="${e.catAxisMinorUnit}"/>`}if(e._type===W.SCATTER||e._type===W.BUBBLE||e._type===W.BUBBLE3D){n+="</c:valAx>"}else{n+="</c:"+(e.catLabelFormatCode?"dateAx":"catAx")+">"}return n}function makeValAxis(e,t){let o=t===C?e.barDir==="col"?"l":"b":e.barDir!=="col"?"r":"t";if(t===T)o="r";const n=t===C?P:E;let r="";r+="<c:valAx>";r+=' <c:axId val="'+t+'"/>';r+=" <c:scaling>";if(e.valAxisLogScaleBase)r+=`<c:logBase val="${e.valAxisLogScaleBase}"/>`;r+='<c:orientation val="'+(e.valAxisOrientation||(e.barDir==="col"?"minMax":"minMax"))+'"/>';if(e.valAxisMaxVal||e.valAxisMaxVal===0)r+=`<c:max val="${e.valAxisMaxVal}"/>`;if(e.valAxisMinVal||e.valAxisMinVal===0)r+=`<c:min val="${e.valAxisMinVal}"/>`;r+=" </c:scaling>";r+=` <c:delete val="${e.valAxisHidden?1:0}"/>`;r+=' <c:axPos val="'+o+'"/>';if(e.valGridLine.style!=="none")r+=createGridLineElement(e.valGridLine);if(e.showValAxisTitle){r+=genXmlTitle({color:e.valAxisTitleColor,fontFace:e.valAxisTitleFontFace,fontSize:e.valAxisTitleFontSize,titleRotate:e.valAxisTitleRotate,title:e.valAxisTitle||"Axis Title"})}r+=`<c:numFmt formatCode="${e.valAxisLabelFormatCode?encodeXmlEntities(e.valAxisLabelFormatCode):"General"}" sourceLinked="0"/>`;if(e._type===W.SCATTER){r+=' <c:majorTickMark val="none"/>';r+=' <c:minorTickMark val="none"/>';r+=' <c:tickLblPos val="nextTo"/>'}else{r+=' <c:majorTickMark val="'+(e.valAxisMajorTickMark||"out")+'"/>';r+=' <c:minorTickMark val="'+(e.valAxisMinorTickMark||"none")+'"/>';r+=' <c:tickLblPos val="'+(e.valAxisLabelPos||(e.barDir==="col"?"nextTo":"low"))+'"/>'}r+=" <c:spPr>";r+=` <a:ln w="${e.valAxisLineSize?valToPts(e.valAxisLineSize):a}" cap="flat">`;r+=!e.valAxisLineShow?"<a:noFill/>":"<a:solidFill>"+createColorElement(e.valAxisLineColor||f.color)+"</a:solidFill>";r+=' <a:prstDash val="'+(e.valAxisLineStyle||"solid")+'"/>';r+=" <a:round/>";r+=" </a:ln>";r+=" </c:spPr>";r+=" <c:txPr>";r+=` <a:bodyPr${e.valAxisLabelRotate?' rot="'+convertRotationDegrees(e.valAxisLabelRotate).toString()+'"':""}/>`;r+=" <a:lstStyle/>";r+=" <a:p>";r+=" <a:pPr>";r+=` <a:defRPr sz="${Math.round((e.valAxisLabelFontSize||m)*100)}" b="${e.valAxisLabelFontBold?1:0}" i="${e.valAxisLabelFontItalic?1:0}" u="none" strike="noStrike">`;r+=" <a:solidFill>"+createColorElement(e.valAxisLabelColor||h)+"</a:solidFill>";r+=' <a:latin typeface="'+(e.valAxisLabelFontFace||"Arial")+'"/>';r+=" </a:defRPr>";r+=" </a:pPr>";r+=' <a:endParaRPr lang="'+(e.lang||"en-US")+'"/>';r+=" </a:p>";r+=" </c:txPr>";r+=' <c:crossAx val="'+n+'"/>';if(typeof e.catAxisCrossesAt==="number"){r+=` <c:crossesAt val="${e.catAxisCrossesAt}"/>`}else if(typeof e.catAxisCrossesAt==="string"){r+=' <c:crosses val="'+e.catAxisCrossesAt+'"/>'}else{const e=o==="r"||o==="t";const t=e?"max":"autoZero";r+=' <c:crosses val="'+t+'"/>'}r+=' <c:crossBetween val="'+(e._type===W.SCATTER||!!(Array.isArray(e._type)&&e._type.filter((e=>e.type===W.AREA)).length>0)?"midCat":"between")+'"/>';if(e.valAxisMajorUnit)r+=` <c:majorUnit val="${e.valAxisMajorUnit}"/>`;if(e.valAxisDisplayUnit){r+=`<c:dispUnits><c:builtInUnit val="${e.valAxisDisplayUnit}"/>${e.valAxisDisplayUnitLabel?"<c:dispUnitsLbl/>":""}</c:dispUnits>`}r+="</c:valAx>";return r}function makeSerAxis(e,t,o){let n="";n+="<c:serAx>";n+=' <c:axId val="'+t+'"/>';n+=' <c:scaling><c:orientation val="'+(e.serAxisOrientation||(e.barDir==="col"?"minMax":"minMax"))+'"/></c:scaling>';n+=' <c:delete val="'+(e.serAxisHidden?"1":"0")+'"/>';n+=' <c:axPos val="'+(e.barDir==="col"?"b":"l")+'"/>';n+=e.serGridLine.style!=="none"?createGridLineElement(e.serGridLine):"";if(e.showSerAxisTitle){n+=genXmlTitle({color:e.serAxisTitleColor,fontFace:e.serAxisTitleFontFace,fontSize:e.serAxisTitleFontSize,titleRotate:e.serAxisTitleRotate,title:e.serAxisTitle||"Axis Title"})}n+=` <c:numFmt formatCode="${encodeXmlEntities(e.serLabelFormatCode)||"General"}" sourceLinked="0"/>`;n+=' <c:majorTickMark val="out"/>';n+=' <c:minorTickMark val="none"/>';n+=` <c:tickLblPos val="${e.serAxisLabelPos||e.barDir==="col"?"low":"nextTo"}"/>`;n+=" <c:spPr>";n+=' <a:ln w="12700" cap="flat">';n+=!e.serAxisLineShow?"<a:noFill/>":`<a:solidFill>${createColorElement(e.serAxisLineColor||f.color)}</a:solidFill>`;n+=' <a:prstDash val="solid"/>';n+=" <a:round/>";n+=" </a:ln>";n+=" </c:spPr>";n+=" <c:txPr>";n+=" <a:bodyPr/>";n+=" <a:lstStyle/>";n+=" <a:p>";n+=" <a:pPr>";n+=` <a:defRPr sz="${Math.round((e.serAxisLabelFontSize||m)*100)}" b="${e.serAxisLabelFontBold?"1":"0"}" i="${e.serAxisLabelFontItalic?"1":"0"}" u="none" strike="noStrike">`;n+=` <a:solidFill>${createColorElement(e.serAxisLabelColor||h)}</a:solidFill>`;n+=` <a:latin typeface="${e.serAxisLabelFontFace||"Arial"}"/>`;n+=" </a:defRPr>";n+=" </a:pPr>";n+=' <a:endParaRPr lang="'+(e.lang||"en-US")+'"/>';n+=" </a:p>";n+=" </c:txPr>";n+=' <c:crossAx val="'+o+'"/>';n+=' <c:crosses val="autoZero"/>';if(e.serAxisLabelFrequency)n+=' <c:tickLblSkip val="'+e.serAxisLabelFrequency+'"/>';if(e.serLabelFormatCode){["serAxisBaseTimeUnit","serAxisMajorTimeUnit","serAxisMinorTimeUnit"].forEach((t=>{if(e[t]&&(typeof e[t]!=="string"||!["days","months","years"].includes(t.toLowerCase()))){console.warn(`"${t}" must be one of: 'days','months','years' !`);e[t]=null}}));if(e.serAxisBaseTimeUnit)n+=` <c:baseTimeUnit val="${e.serAxisBaseTimeUnit.toLowerCase()}"/>`;if(e.serAxisMajorTimeUnit)n+=` <c:majorTimeUnit val="${e.serAxisMajorTimeUnit.toLowerCase()}"/>`;if(e.serAxisMinorTimeUnit)n+=` <c:minorTimeUnit val="${e.serAxisMinorTimeUnit.toLowerCase()}"/>`;if(e.serAxisMajorUnit)n+=` <c:majorUnit val="${e.serAxisMajorUnit}"/>`;if(e.serAxisMinorUnit)n+=` <c:minorUnit val="${e.serAxisMinorUnit}"/>`}n+="</c:serAx>";return n}function genXmlTitle(e,t,o){const n=e.titleAlign==="left"||e.titleAlign==="right"?`<a:pPr algn="${e.titleAlign.substring(0,1)}">`:"<a:pPr>";const r=e.titleRotate?`<a:bodyPr rot="${convertRotationDegrees(e.titleRotate)}"/>`:"<a:bodyPr/>";const a=e.fontSize?`sz="${Math.round(e.fontSize*100)}"`:"";const i=e.titleBold?1:0;let s="<c:layout/>";if(e.titlePos&&typeof e.titlePos.x==="number"&&typeof e.titlePos.y==="number"){const n=e.titlePos.x+t;const r=e.titlePos.y+o;let a=n===0?0:n*(n/5)/10;if(a>=1)a=a/10;if(a>=.1)a=a/10;let i=r===0?0:r*(r/5)/10;if(i>=1)i=i/10;if(i>=.1)i=i/10;s=`<c:layout><c:manualLayout><c:xMode val="edge"/><c:yMode val="edge"/><c:x val="${a}"/><c:y val="${i}"/></c:manualLayout></c:layout>`}return`<c:title>\n <c:tx>\n <c:rich>\n ${r}\n <a:lstStyle/>\n <a:p>\n ${n}\n <a:defRPr ${a} b="${i}" i="0" u="none" strike="noStrike">\n <a:solidFill>${createColorElement(e.color||h)}</a:solidFill>\n <a:latin typeface="${e.fontFace||"Arial"}"/>\n </a:defRPr>\n </a:pPr>\n <a:r>\n <a:rPr ${a} b="${i}" i="0" u="none" strike="noStrike">\n <a:solidFill>${createColorElement(e.color||h)}</a:solidFill>\n <a:latin typeface="${e.fontFace||"Arial"}"/>\n </a:rPr>\n <a:t>${encodeXmlEntities(e.title)||""}</a:t>\n </a:r>\n </a:p>\n </c:rich>\n </c:tx>\n ${s}\n <c:overlay val="0"/>\n </c:title>`}function getExcelColName(e){let t="";const o=e-1;if(o<=25){t=L[o]}else{t=`${L[Math.floor(o/L.length-1)]}${L[o%L.length]}`}return t}function createShadowElement(e,t){if(!e){return"<a:effectLst/>"}else if(typeof e!=="object"){console.warn("`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`");return"<a:effectLst/>"}let o="<a:effectLst>";const n=Object.assign(Object.assign({},t),e);const r=n.type||"outer";const a=valToPts(n.blur);const i=valToPts(n.offset);const s=Math.round(n.angle*6e4);const l=n.color;const c=Math.round(n.opacity*1e5);const d=n.rotateWithShape?1:0;o+=`<a:${r}Shdw sx="100000" sy="100000" kx="0" ky="0" algn="bl" blurRad="${a}" rotWithShape="${d}" dist="${i}" dir="${s}">`;o+=`<a:srgbClr val="${l}">`;o+=`<a:alpha val="${c}"/></a:srgbClr>`;o+=`</a:${r}Shdw>`;o+="</a:effectLst>";return o}function createGridLineElement(e){let t="<c:majorGridlines>";t+=" <c:spPr>";t+=` <a:ln w="${valToPts(e.size||f.size)}" cap="${createLineCap(e.cap||f.cap)}">`;t+=' <a:solidFill><a:srgbClr val="'+(e.color||f.color)+'"/></a:solidFill>';t+=' <a:prstDash val="'+(e.style||f.style)+'"/><a:round/>';t+=" </a:ln>";t+=" </c:spPr>";t+="</c:majorGridlines>";return t}function createLineCap(e){if(!e||e==="flat"){return"flat"}else if(e==="square"){return"sq"}else if(e==="round"){return"rnd"}else{const t=e;throw new Error(`Invalid chart line cap: ${t}`)}}function encodeSlideMediaRels(e){var t,n;const r=typeof process!=="undefined"&&!!((t=process.versions)===null||t===void 0?void 0:t.node)&&((n=process.release)===null||n===void 0?void 0:n.name)==="node";let a;let i;const s=r?()=>__awaiter(this,void 0,void 0,(function*(){({default:a}=yield Promise.resolve().then(o.t.bind(o,3024,23)));({default:i}=yield Promise.resolve().then(o.t.bind(o,4708,23)))})):()=>__awaiter(this,void 0,void 0,(function*(){}));if(r)s();const l=[];const c=e._relsMedia.filter((e=>e.type!=="online"&&!e.data&&(!e.path||e.path&&!e.path.includes("preencoded"))));const d=[];c.forEach((e=>{if(!d.includes(e.path)){e.isDuplicate=false;d.push(e.path)}else{e.isDuplicate=true}}));c.filter((e=>!e.isDuplicate)).forEach((e=>{l.push((()=>__awaiter(this,void 0,void 0,(function*(){if(!i)yield s();if(r&&a&&e.path.indexOf("http")!==0){try{const t=a.readFileSync(e.path);e.data=Buffer.from(t).toString("base64");c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));return"done"}catch(t){e.data=V;c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));throw new Error(`ERROR: Unable to read media: "${e.path}"\n${String(t)}`)}}if(r&&i&&e.path.startsWith("http")){return yield new Promise(((t,o)=>{i.get(e.path,(n=>{let r="";n.setEncoding("binary");n.on("data",(e=>r+=e));n.on("end",(()=>{e.data=Buffer.from(r,"binary").toString("base64");c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));t("done")}));n.on("error",(()=>{e.data=V;c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));o(new Error(`ERROR! Unable to load image (https.get): ${e.path}`))}))}))}))}return yield new Promise(((t,o)=>{const n=new XMLHttpRequest;n.onload=()=>{const r=new FileReader;r.onloadend=()=>{e.data=r.result;c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));if(!e.isSvgPng){t("done")}else{createSvgPngPreview(e).then((()=>t("done"))).catch(o)}};r.readAsDataURL(n.response)};n.onerror=()=>{e.data=V;c.filter((t=>t.isDuplicate&&t.path===e.path)).forEach((t=>t.data=e.data));o(new Error(`ERROR! Unable to load image (xhr.onerror): ${e.path}`))};n.open("GET",e.path);n.responseType="blob";n.send()}))})))())}));e._relsMedia.filter((e=>e.isSvgPng&&e.data)).forEach((e=>{(()=>__awaiter(this,void 0,void 0,(function*(){if(r&&!a)yield s();if(r&&a){e.data=V;l.push(Promise.resolve("done"))}else{l.push(createSvgPngPreview(e))}})))()}));return l}function createSvgPngPreview(e){return __awaiter(this,void 0,void 0,(function*(){return yield new Promise(((t,o)=>{const n=new Image;n.onload=()=>{if(n.width+n.height===0){n.onerror("h/w=0")}let o=document.createElement("CANVAS");const r=o.getContext("2d");o.width=n.width;o.height=n.height;r.drawImage(n,0,0);try{e.data=o.toDataURL(e.type);t("done")}catch(e){n.onerror(e.toString())}o=null};n.onerror=()=>{e.data=V;o(new Error(`ERROR! Unable to load image (image.onerror): ${e.path}`))};n.src=typeof e.data==="string"?e.data:V}))}))}const K={cover:function(e,t){const o=e.h/e.w;const n=t.h/t.w;const r=n>o;const a=r?t.h/o:t.w;const i=r?t.h:t.w*o;const s=Math.round(1e5*.5*(1-t.w/a));const l=Math.round(1e5*.5*(1-t.h/i));return`<a:srcRect l="${s}" r="${s}" t="${l}" b="${l}"/><a:stretch/>`},contain:function(e,t){const o=e.h/e.w;const n=t.h/t.w;const r=n>o;const a=r?t.w:t.h/o;const i=r?t.w*o:t.h;const s=Math.round(1e5*.5*(1-t.w/a));const l=Math.round(1e5*.5*(1-t.h/i));return`<a:srcRect l="${s}" r="${s}" t="${l}" b="${l}"/><a:stretch/>`},crop:function(e,t){const o=t.x;const n=e.w-(t.x+t.w);const r=t.y;const a=e.h-(t.y+t.h);const i=Math.round(1e5*(o/e.w));const s=Math.round(1e5*(n/e.w));const l=Math.round(1e5*(r/e.h));const c=Math.round(1e5*(a/e.h));return`<a:srcRect l="${i}" r="${s}" t="${l}" b="${c}"/><a:stretch/>`}};function slideObjectToXml(e){var t;let o=e._name?'<p:cSld name="'+e._name+'">':"<p:cSld>";let n=1;if(e._bkgdImgRid){o+=`<p:bg><p:bgPr><a:blipFill dpi="0" rotWithShape="1"><a:blip r:embed="rId${e._bkgdImgRid}"><a:lum/></a:blip><a:srcRect/><a:stretch><a:fillRect/></a:stretch></a:blipFill><a:effectLst/></p:bgPr></p:bg>`}else if((t=e.background)===null||t===void 0?void 0:t.color){o+=`<p:bg><p:bgPr>${genXmlColorSelection(e.background)}</p:bgPr></p:bg>`}else if(!e.bkgd&&e._name&&e._name===y){o+='<p:bg><p:bgRef idx="1001"><a:schemeClr val="bg1"/></p:bgRef></p:bg>'}o+="<p:spTree>";o+='<p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>';o+='<p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/>';o+='<a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr>';e._slideObjects.forEach(((t,a)=>{var i,s,l,c,d,u,A,f;let h=0;let m=0;let g=getSmartParseNumber("75%","X",e._presLayout);let v=0;let y;let b="";let w=null;let x=null;let k=0;let C=0;let T=null;let P=null;const E=(i=t.options)===null||i===void 0?void 0:i.sizing;const _=(s=t.options)===null||s===void 0?void 0:s.rounding;if(e._slideLayout!==undefined&&e._slideLayout._slideObjects!==undefined&&t.options&&t.options.placeholder){y=e._slideLayout._slideObjects.filter((e=>e.options.placeholder===t.options.placeholder))[0]}t.options=t.options||{};if(typeof t.options.x!=="undefined")h=getSmartParseNumber(t.options.x,"X",e._presLayout);if(typeof t.options.y!=="undefined")m=getSmartParseNumber(t.options.y,"Y",e._presLayout);if(typeof t.options.w!=="undefined")g=getSmartParseNumber(t.options.w,"X",e._presLayout);if(typeof t.options.h!=="undefined")v=getSmartParseNumber(t.options.h,"Y",e._presLayout);let L=g;let I=v;if(y){if(y.options.x||y.options.x===0)h=getSmartParseNumber(y.options.x,"X",e._presLayout);if(y.options.y||y.options.y===0)m=getSmartParseNumber(y.options.y,"Y",e._presLayout);if(y.options.w||y.options.w===0)g=getSmartParseNumber(y.options.w,"X",e._presLayout);if(y.options.h||y.options.h===0)v=getSmartParseNumber(y.options.h,"Y",e._presLayout)}if(t.options.flipH)b+=' flipH="1"';if(t.options.flipV)b+=' flipV="1"';if(t.options.rotate)b+=` rot="${convertRotationDegrees(t.options.rotate)}"`;switch(t._type){case X.table:w=t.arrTabRows;x=t.options;k=0;C=0;w[0].forEach((e=>{T=e.options||null;k+=(T===null||T===void 0?void 0:T.colspan)?Number(T.colspan):1}));P=`<p:graphicFrame><p:nvGraphicFramePr><p:cNvPr id="${n*e._slideNum+1}" name="${t.options.objectName}"/>`;P+='<p:cNvGraphicFramePr><a:graphicFrameLocks noGrp="1"/></p:cNvGraphicFramePr>'+' <p:nvPr><p:extLst><p:ext uri="{D42A27DB-BD31-4B8C-83A1-F6EECF244321}"><p14:modId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1579011935"/></p:ext></p:extLst></p:nvPr>'+"</p:nvGraphicFramePr>";P+=`<p:xfrm><a:off x="${h||(h===0?0:r)}" y="${m||(m===0?0:r)}"/><a:ext cx="${g||(g===0?0:r)}" cy="${v||r}"/></p:xfrm>`;P+='<a:graphic><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table"><a:tbl><a:tblPr/>';if(Array.isArray(x.colW)){P+="<a:tblGrid>";for(let e=0;e<k;e++){let o=inch2Emu(x.colW[e]);if(o==null||isNaN(o)){o=(typeof t.options.w==="number"?t.options.w:1)/k}P+=`<a:gridCol w="${Math.round(o)}"/>`}P+="</a:tblGrid>"}else{C=x.colW?x.colW:r;if(t.options.w&&!x.colW)C=Math.round((typeof t.options.w==="number"?t.options.w:1)/k);P+="<a:tblGrid>";for(let e=0;e<k;e++){P+=`<a:gridCol w="${C}"/>`}P+="</a:tblGrid>"}w.forEach((e=>{var t,o;for(let n=0;n<e.length;){const r=e[n];const a=(t=r.options)===null||t===void 0?void 0:t.colspan;const i=(o=r.options)===null||o===void 0?void 0:o.rowspan;if(a&&a>1){const t=new Array(a-1).fill(undefined).map((()=>({_type:X.tablecell,options:{rowspan:i},_hmerge:true})));e.splice(n+1,0,...t);n+=a}else{n+=1}}}));w.forEach(((e,t)=>{const o=w[t+1];if(!o)return;e.forEach(((e,t)=>{var n,r;const a=e._rowContinue||((n=e.options)===null||n===void 0?void 0:n.rowspan);const i=(r=e.options)===null||r===void 0?void 0:r.colspan;const s=e._hmerge;if(a&&a>1){const e={_type:X.tablecell,options:{colspan:i},_rowContinue:a-1,_vmerge:true,_hmerge:s};o.splice(t,0,e)}}))}));w.forEach(((e,o)=>{let n=0;if(Array.isArray(x.rowH)&&x.rowH[o])n=inch2Emu(Number(x.rowH[o]));else if(x.rowH&&!isNaN(Number(x.rowH)))n=inch2Emu(Number(x.rowH));else if(t.options.cy||t.options.h){n=Math.round((t.options.h?inch2Emu(t.options.h):typeof t.options.cy==="number"?t.options.cy:1)/w.length)}P+=`<a:tr h="${n}">`;e.forEach((e=>{var t,o,n,r,a;const i=e;const s={rowSpan:((t=i.options)===null||t===void 0?void 0:t.rowspan)>1?i.options.rowspan:undefined,gridSpan:((o=i.options)===null||o===void 0?void 0:o.colspan)>1?i.options.colspan:undefined,vMerge:i._vmerge?1:undefined,hMerge:i._hmerge?1:undefined};let l=Object.keys(s).map((e=>[e,s[e]])).filter((([,e])=>!!e)).map((([e,t])=>`${String(e)}="${String(t)}"`)).join(" ");if(l)l=" "+l;if(i._hmerge||i._vmerge){P+=`<a:tc${l}><a:tcPr/></a:tc>`;return}const c=i.options||{};i.options=c;["align","bold","border","color","fill","fontFace","fontSize","margin","textDirection","underline","valign"].forEach((e=>{if(x[e]&&!c[e]&&c[e]!==0)c[e]=x[e]}));const d=c.valign?` anchor="${c.valign.replace(/^c$/i,"ctr").replace(/^m$/i,"ctr").replace("center","ctr").replace("middle","ctr").replace("top","t").replace("btm","b").replace("bottom","b")}"`:"";const u=c.textDirection&&c.textDirection!=="horz"?` vert="${c.textDirection}"`:"";let A=((r=(n=i._optImp)===null||n===void 0?void 0:n.fill)===null||r===void 0?void 0:r.color)?i._optImp.fill.color:((a=i._optImp)===null||a===void 0?void 0:a.fill)&&typeof i._optImp.fill==="string"?i._optImp.fill:"";A=A||c.fill?c.fill:"";const f=A?genXmlColorSelection(A):"";let h=c.margin===0||c.margin?c.margin:p;if(!Array.isArray(h)&&typeof h==="number")h=[h,h,h,h];let m="";if(h[0]>=1){m=` marL="${valToPts(h[3])}" marR="${valToPts(h[1])}" marT="${valToPts(h[0])}" marB="${valToPts(h[2])}"`}else{m=` marL="${inch2Emu(h[3])}" marR="${inch2Emu(h[1])}" marT="${inch2Emu(h[0])}" marB="${inch2Emu(h[2])}"`}P+=`<a:tc${l}>${genXmlTextBody(i)}<a:tcPr${m}${d}${u}>`;if(c.border&&Array.isArray(c.border)){[{idx:3,name:"lnL"},{idx:1,name:"lnR"},{idx:0,name:"lnT"},{idx:2,name:"lnB"}].forEach((e=>{if(c.border[e.idx].type!=="none"){P+=`<a:${e.name} w="${valToPts(c.border[e.idx].pt)}" cap="flat" cmpd="sng" algn="ctr">`;P+=`<a:solidFill>${createColorElement(c.border[e.idx].color)}</a:solidFill>`;P+=`<a:prstDash val="${c.border[e.idx].type==="dash"?"sysDash":"solid"}"/><a:round/><a:headEnd type="none" w="med" len="med"/><a:tailEnd type="none" w="med" len="med"/>`;P+=`</a:${e.name}>`}else{P+=`<a:${e.name} w="0" cap="flat" cmpd="sng" algn="ctr"><a:noFill/></a:${e.name}>`}}))}P+=f;P+=" </a:tcPr>";P+=" </a:tc>"}));P+="</a:tr>"}));P+=" </a:tbl>";P+=" </a:graphicData>";P+=" </a:graphic>";P+="</p:graphicFrame>";o+=P;n++;break;case X.text:case X.placeholder:if(!t.options.line&&v===0)v=r*.3;if(!t.options._bodyProp)t.options._bodyProp={};if(t.options.margin&&Array.isArray(t.options.margin)){t.options._bodyProp.lIns=valToPts(t.options.margin[0]||0);t.options._bodyProp.rIns=valToPts(t.options.margin[1]||0);t.options._bodyProp.bIns=valToPts(t.options.margin[2]||0);t.options._bodyProp.tIns=valToPts(t.options.margin[3]||0)}else if(typeof t.options.margin==="number"){t.options._bodyProp.lIns=valToPts(t.options.margin);t.options._bodyProp.rIns=valToPts(t.options.margin);t.options._bodyProp.bIns=valToPts(t.options.margin);t.options._bodyProp.tIns=valToPts(t.options.margin)}o+="<p:sp>";o+=`<p:nvSpPr><p:cNvPr id="${a+2}" name="${t.options.objectName}">`;if((l=t.options.hyperlink)===null||l===void 0?void 0:l.url){o+=`<a:hlinkClick r:id="rId${t.options.hyperlink._rId}" tooltip="${t.options.hyperlink.tooltip?encodeXmlEntities(t.options.hyperlink.tooltip):""}"/>`}if((c=t.options.hyperlink)===null||c===void 0?void 0:c.slide){o+=`<a:hlinkClick r:id="rId${t.options.hyperlink._rId}" tooltip="${t.options.hyperlink.tooltip?encodeXmlEntities(t.options.hyperlink.tooltip):""}" action="ppaction://hlinksldjump"/>`}o+="</p:cNvPr>";o+="<p:cNvSpPr"+(((d=t.options)===null||d===void 0?void 0:d.isTextBox)?' txBox="1"/>':"/>");o+=`<p:nvPr>${t._type==="placeholder"?genXmlPlaceholder(t):genXmlPlaceholder(y)}</p:nvPr>`;o+="</p:nvSpPr><p:spPr>";o+=`<a:xfrm${b}>`;o+=`<a:off x="${h}" y="${m}"/>`;o+=`<a:ext cx="${g}" cy="${v}"/></a:xfrm>`;if(t.shape==="custGeom"){o+="<a:custGeom><a:avLst />";o+="<a:gdLst>";o+="</a:gdLst>";o+="<a:ahLst />";o+="<a:cxnLst>";o+="</a:cxnLst>";o+='<a:rect l="l" t="t" r="r" b="b" />';o+="<a:pathLst>";o+=`<a:path w="${g}" h="${v}">`;(u=t.options.points)===null||u===void 0?void 0:u.forEach(((t,n)=>{if("curve"in t){switch(t.curve.type){case"arc":o+=`<a:arcTo hR="${getSmartParseNumber(t.curve.hR,"Y",e._presLayout)}" wR="${getSmartParseNumber(t.curve.wR,"X",e._presLayout)}" stAng="${convertRotationDegrees(t.curve.stAng)}" swAng="${convertRotationDegrees(t.curve.swAng)}" />`;break;case"cubic":o+=`<a:cubicBezTo>\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.curve.x1,"X",e._presLayout)}" y="${getSmartParseNumber(t.curve.y1,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.curve.x2,"X",e._presLayout)}" y="${getSmartParseNumber(t.curve.y2,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.x,"X",e._presLayout)}" y="${getSmartParseNumber(t.y,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t</a:cubicBezTo>`;break;case"quadratic":o+=`<a:quadBezTo>\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.curve.x1,"X",e._presLayout)}" y="${getSmartParseNumber(t.curve.y1,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t<a:pt x="${getSmartParseNumber(t.x,"X",e._presLayout)}" y="${getSmartParseNumber(t.y,"Y",e._presLayout)}" />\n\t\t\t\t\t\t\t\t\t</a:quadBezTo>`;break}}else if("close"in t){o+="<a:close />"}else if(t.moveTo||n===0){o+=`<a:moveTo><a:pt x="${getSmartParseNumber(t.x,"X",e._presLayout)}" y="${getSmartParseNumber(t.y,"Y",e._presLayout)}" /></a:moveTo>`}else{o+=`<a:lnTo><a:pt x="${getSmartParseNumber(t.x,"X",e._presLayout)}" y="${getSmartParseNumber(t.y,"Y",e._presLayout)}" /></a:lnTo>`}}));o+="</a:path>";o+="</a:pathLst>";o+="</a:custGeom>"}else{o+='<a:prstGeom prst="'+t.shape+'"><a:avLst>';if(t.options.rectRadius){o+=`<a:gd name="adj" fmla="val ${Math.round(t.options.rectRadius*r*1e5/Math.min(g,v))}"/>`}else if(t.options.angleRange){for(let e=0;e<2;e++){const n=t.options.angleRange[e];o+=`<a:gd name="adj${e+1}" fmla="val ${convertRotationDegrees(n)}" />`}if(t.options.arcThicknessRatio){o+=`<a:gd name="adj3" fmla="val ${Math.round(t.options.arcThicknessRatio*5e4)}" />`}}o+="</a:avLst></a:prstGeom>"}o+=t.options.fill?genXmlColorSelection(t.options.fill):"<a:noFill/>";if(t.options.line){o+=t.options.line.width?`<a:ln w="${valToPts(t.options.line.width)}">`:"<a:ln>";if(t.options.line.color)o+=genXmlColorSelection(t.options.line);if(t.options.line.dashType)o+=`<a:prstDash val="${t.options.line.dashType}"/>`;if(t.options.line.beginArrowType)o+=`<a:headEnd type="${t.options.line.beginArrowType}"/>`;if(t.options.line.endArrowType)o+=`<a:tailEnd type="${t.options.line.endArrowType}"/>`;o+="</a:ln>"}if(t.options.shadow&&t.options.shadow.type!=="none"){t.options.shadow.type=t.options.shadow.type||"outer";t.options.shadow.blur=valToPts(t.options.shadow.blur||8);t.options.shadow.offset=valToPts(t.options.shadow.offset||4);t.options.shadow.angle=Math.round((t.options.shadow.angle||270)*6e4);t.options.shadow.opacity=Math.round((t.options.shadow.opacity||.75)*1e5);t.options.shadow.color=t.options.shadow.color||S.color;o+="<a:effectLst>";o+=` <a:${t.options.shadow.type}Shdw ${t.options.shadow.type==="outer"?'sx="100000" sy="100000" kx="0" ky="0" algn="bl" rotWithShape="0"':""} blurRad="${t.options.shadow.blur}" dist="${t.options.shadow.offset}" dir="${t.options.shadow.angle}">`;o+=` <a:srgbClr val="${t.options.shadow.color}">`;o+=` <a:alpha val="${t.options.shadow.opacity}"/></a:srgbClr>`;o+=" </a:outerShdw>";o+="</a:effectLst>"}o+="</p:spPr>";o+=genXmlTextBody(t);o+="</p:sp>";break;case X.image:o+="<p:pic>";o+=" <p:nvPicPr>";o+=`<p:cNvPr id="${a+2}" name="${t.options.objectName}" descr="${encodeXmlEntities(t.options.altText||t.image)}">`;if((A=t.hyperlink)===null||A===void 0?void 0:A.url){o+=`<a:hlinkClick r:id="rId${t.hyperlink._rId}" tooltip="${t.hyperlink.tooltip?encodeXmlEntities(t.hyperlink.tooltip):""}"/>`}if((f=t.hyperlink)===null||f===void 0?void 0:f.slide){o+=`<a:hlinkClick r:id="rId${t.hyperlink._rId}" tooltip="${t.hyperlink.tooltip?encodeXmlEntities(t.hyperlink.tooltip):""}" action="ppaction://hlinksldjump"/>`}o+=" </p:cNvPr>";o+=' <p:cNvPicPr><a:picLocks noChangeAspect="1"/></p:cNvPicPr>';o+=" <p:nvPr>"+genXmlPlaceholder(y)+"</p:nvPr>";o+=" </p:nvPicPr>";o+="<p:blipFill>";if((e._relsMedia||[]).filter((e=>e.rId===t.imageRid))[0]&&(e._relsMedia||[]).filter((e=>e.rId===t.imageRid))[0].extn==="svg"){o+=`<a:blip r:embed="rId${t.imageRid-1}">`;o+=t.options.transparency?` <a:alphaModFix amt="${Math.round((100-t.options.transparency)*1e3)}"/>`:"";o+=" <a:extLst>";o+=' <a:ext uri="{96DAC541-7B7A-43D3-8B79-37D633B846F1}">';o+=` <asvg:svgBlip xmlns:asvg="http://schemas.microsoft.com/office/drawing/2016/SVG/main" r:embed="rId${t.imageRid}"/>`;o+=" </a:ext>";o+=" </a:extLst>";o+="</a:blip>"}else{o+=`<a:blip r:embed="rId${t.imageRid}">`;o+=t.options.transparency?`<a:alphaModFix amt="${Math.round((100-t.options.transparency)*1e3)}"/>`:"";o+="</a:blip>"}if(E===null||E===void 0?void 0:E.type){const t=E.w?getSmartParseNumber(E.w,"X",e._presLayout):g;const n=E.h?getSmartParseNumber(E.h,"Y",e._presLayout):v;const r=getSmartParseNumber(E.x||0,"X",e._presLayout);const a=getSmartParseNumber(E.y||0,"Y",e._presLayout);o+=K[E.type]({w:L,h:I},{w:t,h:n,x:r,y:a});L=t;I=n}else{o+=" <a:stretch><a:fillRect/></a:stretch>"}o+="</p:blipFill>";o+="<p:spPr>";o+=" <a:xfrm"+b+">";o+=` <a:off x="${h}" y="${m}"/>`;o+=` <a:ext cx="${L}" cy="${I}"/>`;o+=" </a:xfrm>";o+=` <a:prstGeom prst="${_?"ellipse":"rect"}"><a:avLst/></a:prstGeom>`;if(t.options.shadow&&t.options.shadow.type!=="none"){t.options.shadow.type=t.options.shadow.type||"outer";t.options.shadow.blur=valToPts(t.options.shadow.blur||8);t.options.shadow.offset=valToPts(t.options.shadow.offset||4);t.options.shadow.angle=Math.round((t.options.shadow.angle||270)*6e4);t.options.shadow.opacity=Math.round((t.options.shadow.opacity||.75)*1e5);t.options.shadow.color=t.options.shadow.color||S.color;o+="<a:effectLst>";o+=`<a:${t.options.shadow.type}Shdw ${t.options.shadow.type==="outer"?'sx="100000" sy="100000" kx="0" ky="0" algn="bl" rotWithShape="0"':""} blurRad="${t.options.shadow.blur}" dist="${t.options.shadow.offset}" dir="${t.options.shadow.angle}">`;o+=`<a:srgbClr val="${t.options.shadow.color}">`;o+=`<a:alpha val="${t.options.shadow.opacity}"/></a:srgbClr>`;o+=`</a:${t.options.shadow.type}Shdw>`;o+="</a:effectLst>"}o+="</p:spPr>";o+="</p:pic>";break;case X.media:if(t.mtype==="online"){o+="<p:pic>";o+=" <p:nvPicPr>";o+=`<p:cNvPr id="${t.mediaRid+2}" name="${t.options.objectName}"/>`;o+=" <p:cNvPicPr/>";o+=" <p:nvPr>";o+=` <a:videoFile r:link="rId${t.mediaRid}"/>`;o+=" </p:nvPr>";o+=" </p:nvPicPr>";o+=` <p:blipFill><a:blip r:embed="rId${t.mediaRid+1}"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`;o+=" <p:spPr>";o+=` <a:xfrm${b}><a:off x="${h}" y="${m}"/><a:ext cx="${g}" cy="${v}"/></a:xfrm>`;o+=' <a:prstGeom prst="rect"><a:avLst/></a:prstGeom>';o+=" </p:spPr>";o+="</p:pic>"}else{o+="<p:pic>";o+=" <p:nvPicPr>";o+=`<p:cNvPr id="${t.mediaRid+2}" name="${t.options.objectName}"><a:hlinkClick r:id="" action="ppaction://media"/></p:cNvPr>`;o+=' <p:cNvPicPr><a:picLocks noChangeAspect="1"/></p:cNvPicPr>';o+=" <p:nvPr>";o+=` <a:videoFile r:link="rId${t.mediaRid}"/>`;o+=" <p:extLst>";o+=' <p:ext uri="{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}">';o+=` <p14:media xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" r:embed="rId${t.mediaRid+1}"/>`;o+=" </p:ext>";o+=" </p:extLst>";o+=" </p:nvPr>";o+=" </p:nvPicPr>";o+=` <p:blipFill><a:blip r:embed="rId${t.mediaRid+2}"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`;o+=" <p:spPr>";o+=` <a:xfrm${b}><a:off x="${h}" y="${m}"/><a:ext cx="${g}" cy="${v}"/></a:xfrm>`;o+=' <a:prstGeom prst="rect"><a:avLst/></a:prstGeom>';o+=" </p:spPr>";o+="</p:pic>"}break;case X.chart:o+="<p:graphicFrame>";o+=" <p:nvGraphicFramePr>";o+=` <p:cNvPr id="${a+2}" name="${t.options.objectName}" descr="${encodeXmlEntities(t.options.altText||"")}"/>`;o+=" <p:cNvGraphicFramePr/>";o+=` <p:nvPr>${genXmlPlaceholder(y)}</p:nvPr>`;o+=" </p:nvGraphicFramePr>";o+=` <p:xfrm><a:off x="${h}" y="${m}"/><a:ext cx="${g}" cy="${v}"/></p:xfrm>`;o+=' <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">';o+=' <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">';o+=` <c:chart r:id="rId${t.chartRid}" xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"/>`;o+=" </a:graphicData>";o+=" </a:graphic>";o+="</p:graphicFrame>";break;default:o+="";break}}));if(e._slideNumberProps){if(!e._slideNumberProps.align)e._slideNumberProps.align="left";o+="<p:sp>";o+=" <p:nvSpPr>";o+=' <p:cNvPr id="25" name="Slide Number Placeholder 0"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr>';o+=' <p:nvPr><p:ph type="sldNum" sz="quarter" idx="4294967295"/></p:nvPr>';o+=" </p:nvSpPr>";o+=" <p:spPr>";o+="<a:xfrm>"+`<a:off x="${getSmartParseNumber(e._slideNumberProps.x,"X",e._presLayout)}" y="${getSmartParseNumber(e._slideNumberProps.y,"Y",e._presLayout)}"/>`+`<a:ext cx="${e._slideNumberProps.w?getSmartParseNumber(e._slideNumberProps.w,"X",e._presLayout):"800000"}" cy="${e._slideNumberProps.h?getSmartParseNumber(e._slideNumberProps.h,"Y",e._presLayout):"300000"}"/>`+"</a:xfrm>"+' <a:prstGeom prst="rect"><a:avLst/></a:prstGeom>'+' <a:extLst><a:ext uri="{C572A759-6A51-4108-AA02-DFA0A04FC94B}"><ma14:wrappingTextBoxFlag val="0" xmlns:ma14="http://schemas.microsoft.com/office/mac/drawingml/2011/main"/></a:ext></a:extLst>'+"</p:spPr>";o+="<p:txBody>";o+="<a:bodyPr";if(e._slideNumberProps.margin&&Array.isArray(e._slideNumberProps.margin)){o+=` lIns="${valToPts(e._slideNumberProps.margin[3]||0)}"`;o+=` tIns="${valToPts(e._slideNumberProps.margin[0]||0)}"`;o+=` rIns="${valToPts(e._slideNumberProps.margin[1]||0)}"`;o+=` bIns="${valToPts(e._slideNumberProps.margin[2]||0)}"`}else if(typeof e._slideNumberProps.margin==="number"){o+=` lIns="${valToPts(e._slideNumberProps.margin||0)}"`;o+=` tIns="${valToPts(e._slideNumberProps.margin||0)}"`;o+=` rIns="${valToPts(e._slideNumberProps.margin||0)}"`;o+=` bIns="${valToPts(e._slideNumberProps.margin||0)}"`}if(e._slideNumberProps.valign){o+=` anchor="${e._slideNumberProps.valign.replace("top","t").replace("middle","ctr").replace("bottom","b")}"`}o+="/>";o+=" <a:lstStyle><a:lvl1pPr>";if(e._slideNumberProps.fontFace||e._slideNumberProps.fontSize||e._slideNumberProps.color){o+=`<a:defRPr sz="${Math.round((e._slideNumberProps.fontSize||12)*100)}">`;if(e._slideNumberProps.color)o+=genXmlColorSelection(e._slideNumberProps.color);if(e._slideNumberProps.fontFace){o+=`<a:latin typeface="${e._slideNumberProps.fontFace}"/><a:ea typeface="${e._slideNumberProps.fontFace}"/><a:cs typeface="${e._slideNumberProps.fontFace}"/>`}o+="</a:defRPr>"}o+="</a:lvl1pPr></a:lstStyle>";o+="<a:p>";if(e._slideNumberProps.align.startsWith("l"))o+='<a:pPr algn="l"/>';else if(e._slideNumberProps.align.startsWith("c"))o+='<a:pPr algn="ctr"/>';else if(e._slideNumberProps.align.startsWith("r"))o+='<a:pPr algn="r"/>';else o+='<a:pPr algn="l"/>';o+=`<a:fld id="${R}" type="slidenum"><a:rPr b="${e._slideNumberProps.bold?1:0}" lang="en-US"/>`;o+=`<a:t>${e._slideNum}</a:t></a:fld><a:endParaRPr lang="en-US"/></a:p>`;o+="</p:txBody></p:sp>"}o+="</p:spTree>";o+="</p:cSld>";return o}function slideObjectRelationsToXml(e,t){let o=0;let n='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i+'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">';e._rels.forEach((e=>{o=Math.max(o,e.rId);if(e.type.toLowerCase().includes("hyperlink")){if(e.data==="slide"){n+=`<Relationship Id="rId${e.rId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="slide${e.Target}.xml"/>`}else{n+=`<Relationship Id="rId${e.rId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="${e.Target}" TargetMode="External"/>`}}else if(e.type.toLowerCase().includes("notesSlide")){n+=`<Relationship Id="rId${e.rId}" Target="${e.Target}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide"/>`}}));(e._relsChart||[]).forEach((e=>{o=Math.max(o,e.rId);n+=`<Relationship Id="rId${e.rId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart" Target="${e.Target}"/>`}));(e._relsMedia||[]).forEach((e=>{const t=e.rId.toString();o=Math.max(o,e.rId);if(e.type.toLowerCase().includes("image")){n+='<Relationship Id="rId'+t+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="'+e.Target+'"/>'}else if(e.type.toLowerCase().includes("audio")){if(n.includes(' Target="'+e.Target+'"')){n+='<Relationship Id="rId'+t+'" Type="http://schemas.microsoft.com/office/2007/relationships/media" Target="'+e.Target+'"/>'}else{n+='<Relationship Id="rId'+t+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/audio" Target="'+e.Target+'"/>'}}else if(e.type.toLowerCase().includes("video")){if(n.includes(' Target="'+e.Target+'"')){n+='<Relationship Id="rId'+t+'" Type="http://schemas.microsoft.com/office/2007/relationships/media" Target="'+e.Target+'"/>'}else{n+='<Relationship Id="rId'+t+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/video" Target="'+e.Target+'"/>'}}else if(e.type.toLowerCase().includes("online")){if(n.includes(' Target="'+e.Target+'"')){n+='<Relationship Id="rId'+t+'" Type="http://schemas.microsoft.com/office/2007/relationships/image" Target="'+e.Target+'"/>'}else{n+='<Relationship Id="rId'+t+'" Target="'+e.Target+'" TargetMode="External" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/video"/>'}}}));t.forEach(((e,t)=>{n+=`<Relationship Id="rId${o+t+1}" Type="${e.type}" Target="${e.target}"/>`}));n+="</Relationships>";return n}function genXmlParagraphProperties(e,t){var o,n;let r="";let a="";let i="";let s="";const l=t?"a:lvl1pPr":"a:pPr";let c=valToPts(d);let u=`<${l}${e.options.rtlMode?' rtl="1" ':""}`;{if(e.options.align){switch(e.options.align){case"left":u+=' algn="l"';break;case"right":u+=' algn="r"';break;case"center":u+=' algn="ctr"';break;case"justify":u+=' algn="just"';break;default:u+="";break}}if(e.options.lineSpacing){a=`<a:lnSpc><a:spcPts val="${Math.round(e.options.lineSpacing*100)}"/></a:lnSpc>`}else if(e.options.lineSpacingMultiple){a=`<a:lnSpc><a:spcPct val="${Math.round(e.options.lineSpacingMultiple*1e5)}"/></a:lnSpc>`}if(e.options.indentLevel&&!isNaN(Number(e.options.indentLevel))&&e.options.indentLevel>0){u+=` lvl="${e.options.indentLevel}"`}if(e.options.paraSpaceBefore&&!isNaN(Number(e.options.paraSpaceBefore))&&e.options.paraSpaceBefore>0){i+=`<a:spcBef><a:spcPts val="${Math.round(e.options.paraSpaceBefore*100)}"/></a:spcBef>`}if(e.options.paraSpaceAfter&&!isNaN(Number(e.options.paraSpaceAfter))&&e.options.paraSpaceAfter>0){i+=`<a:spcAft><a:spcPts val="${Math.round(e.options.paraSpaceAfter*100)}"/></a:spcAft>`}if(typeof e.options.bullet==="object"){if((n=(o=e===null||e===void 0?void 0:e.options)===null||o===void 0?void 0:o.bullet)===null||n===void 0?void 0:n.indent)c=valToPts(e.options.bullet.indent);if(e.options.bullet.type){if(e.options.bullet.type.toString().toLowerCase()==="number"){u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r=`<a:buSzPct val="100000"/><a:buFont typeface="+mj-lt"/><a:buAutoNum type="${e.options.bullet.style||"arabicPeriod"}" startAt="${e.options.bullet.numberStartAt||e.options.bullet.startAt||"1"}"/>`}}else if(e.options.bullet.characterCode){let t=`&#x${e.options.bullet.characterCode};`;if(!/^[0-9A-Fa-f]{4}$/.test(e.options.bullet.characterCode)){console.warn("Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!");t=Q.DEFAULT}u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r='<a:buSzPct val="100000"/><a:buChar char="'+t+'"/>'}else if(e.options.bullet.code){let t=`&#x${e.options.bullet.code};`;if(!/^[0-9A-Fa-f]{4}$/.test(e.options.bullet.code)){console.warn("Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!");t=Q.DEFAULT}u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r='<a:buSzPct val="100000"/><a:buChar char="'+t+'"/>'}else{u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r=`<a:buSzPct val="100000"/><a:buChar char="${Q.DEFAULT}"/>`}}else if(e.options.bullet){u+=` marL="${e.options.indentLevel&&e.options.indentLevel>0?c+c*e.options.indentLevel:c}" indent="-${c}"`;r=`<a:buSzPct val="100000"/><a:buChar char="${Q.DEFAULT}"/>`}else if(!e.options.bullet){u+=' indent="0" marL="0"';r="<a:buNone/>"}if(e.options.tabStops&&Array.isArray(e.options.tabStops)){const t=e.options.tabStops.map((e=>`<a:tab pos="${inch2Emu(e.position||1)}" algn="${e.alignment||"l"}"/>`)).join("");s=`<a:tabLst>${t}</a:tabLst>`}u+=">"+a+i+r+s;if(t)u+=genXmlTextRunProperties(e.options,true);u+="</"+l+">"}return u}function genXmlTextRunProperties(e,t){var o;let n="";const r=t?"a:defRPr":"a:rPr";n+="<"+r+' lang="'+(e.lang?e.lang:"en-US")+'"'+(e.lang?' altLang="en-US"':"");n+=e.fontSize?` sz="${Math.round(e.fontSize*100)}"`:"";n+=(e===null||e===void 0?void 0:e.bold)?` b="${e.bold?"1":"0"}"`:"";n+=(e===null||e===void 0?void 0:e.italic)?` i="${e.italic?"1":"0"}"`:"";n+=(e===null||e===void 0?void 0:e.strike)?` strike="${typeof e.strike==="string"?e.strike:"sngStrike"}"`:"";if(typeof e.underline==="object"&&((o=e.underline)===null||o===void 0?void 0:o.style)){n+=` u="${e.underline.style}"`}else if(typeof e.underline==="string"){n+=` u="${String(e.underline)}"`}else if(e.hyperlink){n+=' u="sng"'}if(e.baseline){n+=` baseline="${Math.round(e.baseline*50)}"`}else if(e.subscript){n+=' baseline="-40000"'}else if(e.superscript){n+=' baseline="30000"'}n+=e.charSpacing?` spc="${Math.round(e.charSpacing*100)}" kern="0"`:"";n+=' dirty="0">';if(e.color||e.fontFace||e.outline||typeof e.underline==="object"&&e.underline.color){if(e.outline&&typeof e.outline==="object"){n+=`<a:ln w="${valToPts(e.outline.size||.75)}">${genXmlColorSelection(e.outline.color||"FFFFFF")}</a:ln>`}if(e.color)n+=genXmlColorSelection({color:e.color,transparency:e.transparency});if(e.highlight)n+=`<a:highlight>${createColorElement(e.highlight)}</a:highlight>`;if(typeof e.underline==="object"&&e.underline.color)n+=`<a:uFill>${genXmlColorSelection(e.underline.color)}</a:uFill>`;if(e.glow)n+=`<a:effectLst>${createGlowElement(e.glow,k)}</a:effectLst>`;if(e.fontFace){n+=`<a:latin typeface="${e.fontFace}" pitchFamily="34" charset="0"/><a:ea typeface="${e.fontFace}" pitchFamily="34" charset="-122"/><a:cs typeface="${e.fontFace}" pitchFamily="34" charset="-120"/>`}}if(e.hyperlink){if(typeof e.hyperlink!=="object")throw new Error("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` ");else if(!e.hyperlink.url&&!e.hyperlink.slide)throw new Error("ERROR: 'hyperlink requires either `url` or `slide`'");else if(e.hyperlink.url){n+=`<a:hlinkClick r:id="rId${e.hyperlink._rId}" invalidUrl="" action="" tgtFrame="" tooltip="${e.hyperlink.tooltip?encodeXmlEntities(e.hyperlink.tooltip):""}" history="1" highlightClick="0" endSnd="0"${e.color?">":"/>"}`}else if(e.hyperlink.slide){n+=`<a:hlinkClick r:id="rId${e.hyperlink._rId}" action="ppaction://hlinksldjump" tooltip="${e.hyperlink.tooltip?encodeXmlEntities(e.hyperlink.tooltip):""}"${e.color?">":"/>"}`}if(e.color){n+=" <a:extLst>";n+=' <a:ext uri="{A12FA001-AC4F-418D-AE19-62706E023703}">';n+=' <ahyp:hlinkClr xmlns:ahyp="http://schemas.microsoft.com/office/drawing/2018/hyperlinkcolor" val="tx"/>';n+=" </a:ext>";n+=" </a:extLst>";n+="</a:hlinkClick>"}}n+=`</${r}>`;return n}function genXmlTextRun(e){return e.text?`<a:r>${genXmlTextRunProperties(e.options,false)}<a:t>${encodeXmlEntities(e.text)}</a:t></a:r>`:""}function genXmlBodyProperties(e){let t="<a:bodyPr";if(e&&e._type===X.text&&e.options._bodyProp){t+=e.options._bodyProp.wrap?' wrap="square"':' wrap="none"';if(e.options._bodyProp.lIns||e.options._bodyProp.lIns===0)t+=` lIns="${e.options._bodyProp.lIns}"`;if(e.options._bodyProp.tIns||e.options._bodyProp.tIns===0)t+=` tIns="${e.options._bodyProp.tIns}"`;if(e.options._bodyProp.rIns||e.options._bodyProp.rIns===0)t+=` rIns="${e.options._bodyProp.rIns}"`;if(e.options._bodyProp.bIns||e.options._bodyProp.bIns===0)t+=` bIns="${e.options._bodyProp.bIns}"`;t+=' rtlCol="0"';if(e.options._bodyProp.anchor)t+=' anchor="'+e.options._bodyProp.anchor+'"';if(e.options._bodyProp.vert)t+=' vert="'+e.options._bodyProp.vert+'"';t+=">";if(e.options.fit){if(e.options.fit==="none")t+="";else if(e.options.fit==="shrink")t+="<a:normAutofit/>";else if(e.options.fit==="resize")t+="<a:spAutoFit/>"}if(e.options.shrinkText)t+="<a:normAutofit/>";t+=e.options._bodyProp.autoFit?"<a:spAutoFit/>":"";t+="</a:bodyPr>"}else{t+=' wrap="square" rtlCol="0">';t+="</a:bodyPr>"}return e._type===X.tablecell?"<a:bodyPr/>":t}function genXmlTextBody(e){const t=e.options||{};let o=[];const n=[];if(t&&e._type!==X.tablecell&&(typeof e.text==="undefined"||e.text===null))return"";let r=e._type===X.tablecell?"<a:txBody>":"<p:txBody>";{r+=genXmlBodyProperties(e);if(t.h===0&&t.line&&t.align)r+='<a:lstStyle><a:lvl1pPr algn="l"/></a:lstStyle>';else if(e._type==="placeholder")r+=`<a:lstStyle>${genXmlParagraphProperties(e,true)}</a:lstStyle>`;else r+="<a:lstStyle/>"}if(typeof e.text==="string"||typeof e.text==="number"){o.push({text:e.text.toString(),options:t||{}})}else if(e.text&&!Array.isArray(e.text)&&typeof e.text==="object"&&Object.keys(e.text).includes("text")){o.push({text:e.text||"",options:e.options||{}})}else if(Array.isArray(e.text)){o=e.text.map((e=>({text:e.text,options:e.options})))}o.forEach(((e,o)=>{if(!e.text)e.text="";e.options=e.options||t||{};if(o===0&&e.options&&!e.options.bullet&&t.bullet)e.options.bullet=t.bullet;if(typeof e.text==="string"||typeof e.text==="number"){e.text=e.text.toString().replace(/\r*\n/g,i)}if(e.text.includes(i)&&e.text.match(/\n$/g)===null){e.text.split(i).forEach((t=>{e.options.breakLine=true;n.push({text:t,options:e.options})}))}else{n.push(e)}}));const a=[];let s=[];n.forEach(((e,o)=>{if(s.length>0&&(e.options.align||t.align)){if(e.options.align!==n[o-1].options.align){a.push(s);s=[]}}else if(s.length>0&&e.options.bullet&&s.length>0){a.push(s);s=[];e.options.breakLine=false}s.push(e);if(s.length>0&&e.options.breakLine){if(o+1<n.length){a.push(s);s=[]}}if(o+1===n.length)a.push(s)}));a.forEach((o=>{var n;let a=false;r+="<a:p>";let i=`<a:pPr ${((n=o[0].options)===null||n===void 0?void 0:n.rtlMode)?' rtl="1" ':""}`;o.forEach(((e,o)=>{e.options._lineIdx=o;if(o>0&&e.options.softBreakBefore){r+="<a:br/>"}e.options.align=e.options.align||t.align;e.options.lineSpacing=e.options.lineSpacing||t.lineSpacing;e.options.lineSpacingMultiple=e.options.lineSpacingMultiple||t.lineSpacingMultiple;e.options.indentLevel=e.options.indentLevel||t.indentLevel;e.options.paraSpaceBefore=e.options.paraSpaceBefore||t.paraSpaceBefore;e.options.paraSpaceAfter=e.options.paraSpaceAfter||t.paraSpaceAfter;i=genXmlParagraphProperties(e,false);r+=i.replace("<a:pPr></a:pPr>","");Object.entries(t).filter((([t])=>!(e.options.hyperlink&&t==="color"))).forEach((([t,o])=>{if(t!=="bullet"&&!e.options[t])e.options[t]=o}));r+=genXmlTextRun(e);if(!e.text&&t.fontSize||e.options.fontSize){a=true;t.fontSize=t.fontSize||e.options.fontSize}}));if(e._type===X.tablecell&&(t.fontSize||t.fontFace)){if(t.fontFace){r+=`<a:endParaRPr lang="${t.lang||"en-US"}"`+(t.fontSize?` sz="${Math.round(t.fontSize*100)}"`:"")+' dirty="0">';r+=`<a:latin typeface="${t.fontFace}" charset="0"/>`;r+=`<a:ea typeface="${t.fontFace}" charset="0"/>`;r+=`<a:cs typeface="${t.fontFace}" charset="0"/>`;r+="</a:endParaRPr>"}else{r+=`<a:endParaRPr lang="${t.lang||"en-US"}"`+(t.fontSize?` sz="${Math.round(t.fontSize*100)}"`:"")+' dirty="0"/>'}}else if(a){r+=`<a:endParaRPr lang="${t.lang||"en-US"}"`+(t.fontSize?` sz="${Math.round(t.fontSize*100)}"`:"")+' dirty="0"/>'}else{r+=`<a:endParaRPr lang="${t.lang||"en-US"}" dirty="0"/>`}r+="</a:p>"}));if(r.indexOf("<a:p>")===-1){r+="<a:p><a:endParaRPr/></a:p>"}r+=e._type===X.tablecell?"</a:txBody>":"</p:txBody>";return r}function genXmlPlaceholder(e){var t,o;if(!e)return"";const n=((t=e.options)===null||t===void 0?void 0:t._placeholderIdx)?e.options._placeholderIdx:"";const r=((o=e.options)===null||o===void 0?void 0:o._placeholderType)?e.options._placeholderType:"";const a=r&&H[r]?H[r].toString():"";return`<p:ph\n\t\t${n?' idx="'+n.toString()+'"':""}\n\t\t${a&&H[a]?` type="${a}"`:""}\n\t\t${e.text&&e.text.length>0?' hasCustomPrompt="1"':""}\n\t\t/>`}function makeXmlContTypes(e,t,o){let n='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i;n+='<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">';n+='<Default Extension="xml" ContentType="application/xml"/>';n+='<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>';n+='<Default Extension="jpeg" ContentType="image/jpeg"/>';n+='<Default Extension="jpg" ContentType="image/jpg"/>';n+='<Default Extension="svg" ContentType="image/svg+xml"/>';n+='<Default Extension="png" ContentType="image/png"/>';n+='<Default Extension="gif" ContentType="image/gif"/>';n+='<Default Extension="m4v" ContentType="video/mp4"/>';n+='<Default Extension="mp4" ContentType="video/mp4"/>';e.forEach((e=>{(e._relsMedia||[]).forEach((e=>{if(e.type!=="image"&&e.type!=="online"&&e.type!=="chart"&&e.extn!=="m4v"&&!n.includes(e.type)){n+='<Default Extension="'+e.extn+'" ContentType="'+e.type+'"/>'}}))}));n+='<Default Extension="vml" ContentType="application/vnd.openxmlformats-officedocument.vmlDrawing"/>';n+='<Default Extension="xlsx" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>';n+='<Override PartName="/ppt/presentation.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"/>';n+='<Override PartName="/ppt/notesMasters/notesMaster1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml"/>';e.forEach(((e,t)=>{n+=`<Override PartName="/ppt/slideMasters/slideMaster${t+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml"/>`;n+=`<Override PartName="/ppt/slides/slide${t+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml"/>`;e._relsChart.forEach((e=>{n+=`<Override PartName="${e.Target}" ContentType="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"/>`}))}));n+='<Override PartName="/ppt/presProps.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.presProps+xml"/>';n+='<Override PartName="/ppt/viewProps.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml"/>';n+='<Override PartName="/ppt/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>';n+='<Override PartName="/ppt/tableStyles.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml"/>';t.forEach(((e,t)=>{n+=`<Override PartName="/ppt/slideLayouts/slideLayout${t+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml"/>`;(e._relsChart||[]).forEach((e=>{n+=' <Override PartName="'+e.Target+'" ContentType="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"/>'}))}));e.forEach(((e,t)=>{n+=`<Override PartName="/ppt/notesSlides/notesSlide${t+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml"/>`}));o._relsChart.forEach((e=>{n+=' <Override PartName="'+e.Target+'" ContentType="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"/>'}));o._relsMedia.forEach((e=>{if(e.type!=="image"&&e.type!=="online"&&e.type!=="chart"&&e.extn!=="m4v"&&!n.includes(e.type)){n+=' <Default Extension="'+e.extn+'" ContentType="'+e.type+'"/>'}}));n+=' <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>';n+=' <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>';n+="</Types>";return n}function makeXmlRootRels(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n\t\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>\n\t\t<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>\n\t\t<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="ppt/presentation.xml"/>\n\t\t</Relationships>`}function makeXmlApp(e,t){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">\n\t<TotalTime>0</TotalTime>\n\t<Words>0</Words>\n\t<Application>Microsoft Office PowerPoint</Application>\n\t<PresentationFormat>On-screen Show (16:9)</PresentationFormat>\n\t<Paragraphs>0</Paragraphs>\n\t<Slides>${e.length}</Slides>\n\t<Notes>${e.length}</Notes>\n\t<HiddenSlides>0</HiddenSlides>\n\t<MMClips>0</MMClips>\n\t<ScaleCrop>false</ScaleCrop>\n\t<HeadingPairs>\n\t\t<vt:vector size="6" baseType="variant">\n\t\t\t<vt:variant><vt:lpstr>Fonts Used</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>2</vt:i4></vt:variant>\n\t\t\t<vt:variant><vt:lpstr>Theme</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>1</vt:i4></vt:variant>\n\t\t\t<vt:variant><vt:lpstr>Slide Titles</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>${e.length}</vt:i4></vt:variant>\n\t\t</vt:vector>\n\t</HeadingPairs>\n\t<TitlesOfParts>\n\t\t<vt:vector size="${e.length+1+2}" baseType="lpstr">\n\t\t\t<vt:lpstr>Arial</vt:lpstr>\n\t\t\t<vt:lpstr>Calibri</vt:lpstr>\n\t\t\t<vt:lpstr>Office Theme</vt:lpstr>\n\t\t\t${e.map(((e,t)=>`<vt:lpstr>Slide ${t+1}</vt:lpstr>`)).join("")}\n\t\t</vt:vector>\n\t</TitlesOfParts>\n\t<Company>${t}</Company>\n\t<LinksUpToDate>false</LinksUpToDate>\n\t<SharedDoc>false</SharedDoc>\n\t<HyperlinksChanged>false</HyperlinksChanged>\n\t<AppVersion>16.0000</AppVersion>\n\t</Properties>`}function makeXmlCore(e,t,o,n){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n\t<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n\t\t<dc:title>${encodeXmlEntities(e)}</dc:title>\n\t\t<dc:subject>${encodeXmlEntities(t)}</dc:subject>\n\t\t<dc:creator>${encodeXmlEntities(o)}</dc:creator>\n\t\t<cp:lastModifiedBy>${encodeXmlEntities(o)}</cp:lastModifiedBy>\n\t\t<cp:revision>${n}</cp:revision>\n\t\t<dcterms:created xsi:type="dcterms:W3CDTF">${(new Date).toISOString().replace(/\.\d\d\dZ/,"Z")}</dcterms:created>\n\t\t<dcterms:modified xsi:type="dcterms:W3CDTF">${(new Date).toISOString().replace(/\.\d\d\dZ/,"Z")}</dcterms:modified>\n\t</cp:coreProperties>`}function makeXmlPresentationRels(e){let t=1;let o='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i;o+='<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">';o+='<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" Target="slideMasters/slideMaster1.xml"/>';for(let n=1;n<=e.length;n++){o+=`<Relationship Id="rId${++t}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="slides/slide${n}.xml"/>`}t++;o+=`<Relationship Id="rId${t+0}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster" Target="notesMasters/notesMaster1.xml"/>`+`<Relationship Id="rId${t+1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps" Target="presProps.xml"/>`+`<Relationship Id="rId${t+2}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps" Target="viewProps.xml"/>`+`<Relationship Id="rId${t+3}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>`+`<Relationship Id="rId${t+4}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles" Target="tableStyles.xml"/>`+"</Relationships>";return o}function makeXmlSlide(e){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}`+'<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" '+'xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"'+`${(e===null||e===void 0?void 0:e.hidden)?' show="0"':""}>`+`${slideObjectToXml(e)}`+"<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sld>"}function getNotesFromSlide(e){let t="";e._slideObjects.forEach((e=>{if(e._type===X.notes)t+=(e===null||e===void 0?void 0:e.text)&&e.text[0]?e.text[0].text:""}));return t.replace(/\r*\n/g,i)}function makeXmlNotesMaster(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<p:notesMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:cSld><p:bg><p:bgRef idx="1001"><a:schemeClr val="bg1"/></p:bgRef></p:bg><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id="2" name="Header Placeholder 1"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="hdr" sz="quarter"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="2971800" cy="458788"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0"/><a:lstStyle><a:lvl1pPr algn="l"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="3" name="Date Placeholder 2"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="dt" idx="1"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="3884613" y="0"/><a:ext cx="2971800" cy="458788"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0"/><a:lstStyle><a:lvl1pPr algn="r"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id="{5282F153-3F37-0F45-9E97-73ACFA13230C}" type="datetimeFigureOut"><a:rPr lang="en-US"/><a:t>7/23/19</a:t></a:fld><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="4" name="Slide Image Placeholder 3"/><p:cNvSpPr><a:spLocks noGrp="1" noRot="1" noChangeAspect="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldImg" idx="2"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="685800" y="1143000"/><a:ext cx="5486400" cy="3086100"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln w="12700"><a:solidFill><a:prstClr val="black"/></a:solidFill></a:ln></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="ctr"/><a:lstStyle/><a:p><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="5" name="Notes Placeholder 4"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="body" sz="quarter" idx="3"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="685800" y="4400550"/><a:ext cx="5486400" cy="3600450"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0"/><a:lstStyle/><a:p><a:pPr lvl="0"/><a:r><a:rPr lang="en-US"/><a:t>Click to edit Master text styles</a:t></a:r></a:p><a:p><a:pPr lvl="1"/><a:r><a:rPr lang="en-US"/><a:t>Second level</a:t></a:r></a:p><a:p><a:pPr lvl="2"/><a:r><a:rPr lang="en-US"/><a:t>Third level</a:t></a:r></a:p><a:p><a:pPr lvl="3"/><a:r><a:rPr lang="en-US"/><a:t>Fourth level</a:t></a:r></a:p><a:p><a:pPr lvl="4"/><a:r><a:rPr lang="en-US"/><a:t>Fifth level</a:t></a:r></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="6" name="Footer Placeholder 5"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="ftr" sz="quarter" idx="4"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="0" y="8685213"/><a:ext cx="2971800" cy="458787"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="b"/><a:lstStyle><a:lvl1pPr algn="l"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="7" name="Slide Number Placeholder 6"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldNum" sz="quarter" idx="5"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="3884613" y="8685213"/><a:ext cx="2971800" cy="458787"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="b"/><a:lstStyle><a:lvl1pPr algn="r"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id="{CE5E9CC1-C706-0F49-92D6-E571CC5EEA8F}" type="slidenum"><a:rPr lang="en-US"/><a:t>‹#›</a:t></a:fld><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp></p:spTree><p:extLst><p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}"><p14:creationId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1024086991"/></p:ext></p:extLst></p:cSld><p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/><p:notesStyle><a:lvl1pPr marL="0" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl1pPr><a:lvl2pPr marL="457200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl2pPr><a:lvl3pPr marL="914400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl3pPr><a:lvl4pPr marL="1371600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl4pPr><a:lvl5pPr marL="1828800" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl5pPr><a:lvl6pPr marL="2286000" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl6pPr><a:lvl7pPr marL="2743200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl7pPr><a:lvl8pPr marL="3200400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl8pPr><a:lvl9pPr marL="3657600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl9pPr></p:notesStyle></p:notesMaster>`}function makeXmlNotesSlide(e){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<p:notes xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:cSld><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id="2" name="Slide Image Placeholder 1"/><p:cNvSpPr><a:spLocks noGrp="1" noRot="1" noChangeAspect="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldImg"/></p:nvPr></p:nvSpPr><p:spPr/></p:sp><p:sp><p:nvSpPr><p:cNvPr id="3" name="Notes Placeholder 2"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="body" idx="1"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:r><a:rPr lang="en-US" dirty="0"/><a:t>${encodeXmlEntities(getNotesFromSlide(e))}</a:t></a:r><a:endParaRPr lang="en-US" dirty="0"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="4" name="Slide Number Placeholder 3"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldNum" sz="quarter" idx="10"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:fld id="${R}" type="slidenum"><a:rPr lang="en-US"/><a:t>${e._slideNum}</a:t></a:fld><a:endParaRPr lang="en-US"/></a:p></p:txBody></p:sp></p:spTree><p:extLst><p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}"><p14:creationId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1024086991"/></p:ext></p:extLst></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:notes>`}function makeXmlLayout(e){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n\t\t<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" preserve="1">\n\t\t${slideObjectToXml(e)}\n\t\t<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sldLayout>`}function makeXmlMaster(e,t){const o=t.map(((t,o)=>`<p:sldLayoutId id="${s+o}" r:id="rId${e._rels.length+o+1}"/>`));let n='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i;n+='<p:sldMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">';n+=slideObjectToXml(e);n+='<p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/>';n+="<p:sldLayoutIdLst>"+o.join("")+"</p:sldLayoutIdLst>";n+='<p:hf sldNum="0" hdr="0" ftr="0" dt="0"/>';n+="<p:txStyles>"+" <p:titleStyle>"+' <a:lvl1pPr algn="ctr" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="0"/></a:spcBef><a:buNone/><a:defRPr sz="4400" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mj-lt"/><a:ea typeface="+mj-ea"/><a:cs typeface="+mj-cs"/></a:defRPr></a:lvl1pPr>'+" </p:titleStyle>"+" <p:bodyStyle>"+' <a:lvl1pPr marL="342900" indent="-342900" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="3200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl1pPr>'+' <a:lvl2pPr marL="742950" indent="-285750" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="–"/><a:defRPr sz="2800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl2pPr>'+' <a:lvl3pPr marL="1143000" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2400" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl3pPr>'+' <a:lvl4pPr marL="1600200" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="–"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl4pPr>'+' <a:lvl5pPr marL="2057400" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="»"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl5pPr>'+' <a:lvl6pPr marL="2514600" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl6pPr>'+' <a:lvl7pPr marL="2971800" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl7pPr>'+' <a:lvl8pPr marL="3429000" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl8pPr>'+' <a:lvl9pPr marL="3886200" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:spcBef><a:spcPct val="20000"/></a:spcBef><a:buFont typeface="Arial" pitchFamily="34" charset="0"/><a:buChar char="•"/><a:defRPr sz="2000" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl9pPr>'+" </p:bodyStyle>"+" <p:otherStyle>"+' <a:defPPr><a:defRPr lang="en-US"/></a:defPPr>'+' <a:lvl1pPr marL="0" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl1pPr>'+' <a:lvl2pPr marL="457200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl2pPr>'+' <a:lvl3pPr marL="914400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl3pPr>'+' <a:lvl4pPr marL="1371600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl4pPr>'+' <a:lvl5pPr marL="1828800" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl5pPr>'+' <a:lvl6pPr marL="2286000" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl6pPr>'+' <a:lvl7pPr marL="2743200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl7pPr>'+' <a:lvl8pPr marL="3200400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl8pPr>'+' <a:lvl9pPr marL="3657600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl9pPr>'+" </p:otherStyle>"+"</p:txStyles>";n+="</p:sldMaster>";return n}function makeXmlSlideLayoutRel(e,t){return slideObjectRelationsToXml(t[e-1],[{target:"../slideMasters/slideMaster1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"}])}function makeXmlSlideRel(e,t,o){return slideObjectRelationsToXml(e[o-1],[{target:`../slideLayouts/slideLayout${getLayoutIdxForSlide(e,t,o)}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"},{target:`../notesSlides/notesSlide${o}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide"}])}function makeXmlNotesSlideRel(e){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n\t\t<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n\t\t\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster" Target="../notesMasters/notesMaster1.xml"/>\n\t\t\t<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="../slides/slide${e}.xml"/>\n\t\t</Relationships>`}function makeXmlMasterRel(e,t){const o=t.map(((e,t)=>({target:`../slideLayouts/slideLayout${t+1}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"})));o.push({target:"../theme/theme1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"});return slideObjectRelationsToXml(e,o)}function makeXmlNotesMasterRel(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n\t\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="../theme/theme1.xml"/>\n\t\t</Relationships>`}function getLayoutIdxForSlide(e,t,o){for(let n=0;n<t.length;n++){if(t[n]._name===e[o-1]._slideLayout._name){return n+1}}return 1}function makeXmlTheme(e){var t,o,n,r;const a=((t=e.theme)===null||t===void 0?void 0:t.headFontFace)?`<a:latin typeface="${(o=e.theme)===null||o===void 0?void 0:o.headFontFace}"/>`:'<a:latin typeface="Calibri Light" panose="020F0302020204030204"/>';const i=((n=e.theme)===null||n===void 0?void 0:n.bodyFontFace)?`<a:latin typeface="${(r=e.theme)===null||r===void 0?void 0:r.bodyFontFace}"/>`:'<a:latin typeface="Calibri" panose="020F0502020204030204"/>';return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="44546A"/></a:dk2><a:lt2><a:srgbClr val="E7E6E6"/></a:lt2><a:accent1><a:srgbClr val="4472C4"/></a:accent1><a:accent2><a:srgbClr val="ED7D31"/></a:accent2><a:accent3><a:srgbClr val="A5A5A5"/></a:accent3><a:accent4><a:srgbClr val="FFC000"/></a:accent4><a:accent5><a:srgbClr val="5B9BD5"/></a:accent5><a:accent6><a:srgbClr val="70AD47"/></a:accent6><a:hlink><a:srgbClr val="0563C1"/></a:hlink><a:folHlink><a:srgbClr val="954F72"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont>${a}<a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="游ゴシック Light"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="等线 Light"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Angsana New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/><a:font script="Armn" typeface="Arial"/><a:font script="Bugi" typeface="Leelawadee UI"/><a:font script="Bopo" typeface="Microsoft JhengHei"/><a:font script="Java" typeface="Javanese Text"/><a:font script="Lisu" typeface="Segoe UI"/><a:font script="Mymr" typeface="Myanmar Text"/><a:font script="Nkoo" typeface="Ebrima"/><a:font script="Olck" typeface="Nirmala UI"/><a:font script="Osma" typeface="Ebrima"/><a:font script="Phag" typeface="Phagspa"/><a:font script="Syrn" typeface="Estrangelo Edessa"/><a:font script="Syrj" typeface="Estrangelo Edessa"/><a:font script="Syre" typeface="Estrangelo Edessa"/><a:font script="Sora" typeface="Nirmala UI"/><a:font script="Tale" typeface="Microsoft Tai Le"/><a:font script="Talu" typeface="Microsoft New Tai Lue"/><a:font script="Tfng" typeface="Ebrima"/></a:majorFont><a:minorFont>${i}<a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="游ゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="等线"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Cordia New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/><a:font script="Armn" typeface="Arial"/><a:font script="Bugi" typeface="Leelawadee UI"/><a:font script="Bopo" typeface="Microsoft JhengHei"/><a:font script="Java" typeface="Javanese Text"/><a:font script="Lisu" typeface="Segoe UI"/><a:font script="Mymr" typeface="Myanmar Text"/><a:font script="Nkoo" typeface="Ebrima"/><a:font script="Olck" typeface="Nirmala UI"/><a:font script="Osma" typeface="Ebrima"/><a:font script="Phag" typeface="Phagspa"/><a:font script="Syrn" typeface="Estrangelo Edessa"/><a:font script="Syrj" typeface="Estrangelo Edessa"/><a:font script="Syre" typeface="Estrangelo Edessa"/><a:font script="Sora" typeface="Nirmala UI"/><a:font script="Tale" typeface="Microsoft Tai Le"/><a:font script="Talu" typeface="Microsoft New Tai Lue"/><a:font script="Tfng" typeface="Ebrima"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:lumMod val="110000"/><a:satMod val="105000"/><a:tint val="67000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="103000"/><a:tint val="73000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="105000"/><a:satMod val="109000"/><a:tint val="81000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:satMod val="103000"/><a:lumMod val="102000"/><a:tint val="94000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:satMod val="110000"/><a:lumMod val="100000"/><a:shade val="100000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:lumMod val="99000"/><a:satMod val="120000"/><a:shade val="78000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="6350" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="12700" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln><a:ln w="19050" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/><a:miter lim="800000"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="57150" dist="19050" dir="5400000" algn="ctr" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="63000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:solidFill><a:schemeClr val="phClr"><a:tint val="95000"/><a:satMod val="170000"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="93000"/><a:satMod val="150000"/><a:shade val="98000"/><a:lumMod val="102000"/></a:schemeClr></a:gs><a:gs pos="50000"><a:schemeClr val="phClr"><a:tint val="98000"/><a:satMod val="130000"/><a:shade val="90000"/><a:lumMod val="103000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="63000"/><a:satMod val="120000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="5400000" scaled="0"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri="{05A4C25C-085E-4340-85A3-A5531E510DB2}"><thm15:themeFamily xmlns:thm15="http://schemas.microsoft.com/office/thememl/2012/main" name="Office Theme" id="{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}" vid="{4A3C46E8-61CC-4603-A589-7422A47A8E4A}"/></a:ext></a:extLst></a:theme>`}function makeXmlPresentation(e){let t=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}`+'<p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" '+`xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ${e.rtlMode?'rtl="1"':""} saveSubsetFonts="1" autoCompressPictures="0">`;t+='<p:sldMasterIdLst><p:sldMasterId id="2147483648" r:id="rId1"/></p:sldMasterIdLst>';t+="<p:sldIdLst>";e.slides.forEach((e=>t+=`<p:sldId id="${e._slideId}" r:id="rId${e._rId}"/>`));t+="</p:sldIdLst>";t+=`<p:notesMasterIdLst><p:notesMasterId r:id="rId${e.slides.length+2}"/></p:notesMasterIdLst>`;t+=`<p:sldSz cx="${e.presLayout.width}" cy="${e.presLayout.height}"/>`;t+=`<p:notesSz cx="${e.presLayout.height}" cy="${e.presLayout.width}"/>`;t+="<p:defaultTextStyle>";for(let e=1;e<10;e++){t+=`<a:lvl${e}pPr marL="${(e-1)*457200}" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">`+'<a:defRPr sz="1800" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/>'+`</a:defRPr></a:lvl${e}pPr>`}t+="</p:defaultTextStyle>";if(e.sections&&e.sections.length>0){t+='<p:extLst><p:ext uri="{521415D9-36F7-43E2-AB2F-B90AF26B5E84}">';t+='<p14:sectionLst xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main">';e.sections.forEach((e=>{t+=`<p14:section name="${encodeXmlEntities(e.title)}" id="{${getUuid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")}}"><p14:sldIdLst>`;e._slides.forEach((e=>t+=`<p14:sldId id="${e._slideId}"/>`));t+="</p14:sldIdLst></p14:section>"}));t+="</p14:sectionLst></p:ext>";t+='<p:ext uri="{EFAFB233-063F-42B5-8137-9DF3F51BA10A}"><p15:sldGuideLst xmlns:p15="http://schemas.microsoft.com/office/powerpoint/2012/main"/></p:ext>';t+="</p:extLst>"}t+="</p:presentation>";return t}function makeXmlPresProps(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<p:presentationPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"/>`}function makeXmlTableStyles(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<a:tblStyleLst xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" def="{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}"/>`}function makeXmlViewProps(){return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>${i}<p:viewPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:normalViewPr horzBarState="maximized"><p:restoredLeft sz="15611"/><p:restoredTop sz="94610"/></p:normalViewPr><p:slideViewPr><p:cSldViewPr snapToGrid="0" snapToObjects="1"><p:cViewPr varScale="1"><p:scale><a:sx n="136" d="100"/><a:sy n="136" d="100"/></p:scale><p:origin x="216" y="312"/></p:cViewPr><p:guideLst/></p:cSldViewPr></p:slideViewPr><p:notesTextViewPr><p:cViewPr><p:scale><a:sx n="1" d="1"/><a:sy n="1" d="1"/></p:scale><p:origin x="0" y="0"/></p:cViewPr></p:notesTextViewPr><p:gridSpacing cx="76200" cy="76200"/></p:viewPr>`}const Z="4.0.1";class PptxGenJS{set layout(e){const t=this.LAYOUTS[e];if(t){this._layout=e;this._presLayout=t}else{throw new Error("UNKNOWN-LAYOUT")}}get layout(){return this._layout}get version(){return this._version}set author(e){this._author=e}get author(){return this._author}set company(e){this._company=e}get company(){return this._company}set revision(e){this._revision=e}get revision(){return this._revision}set subject(e){this._subject=e}get subject(){return this._subject}set theme(e){this._theme=e}get theme(){return this._theme}set title(e){this._title=e}get title(){return this._title}set rtlMode(e){this._rtlMode=e}get rtlMode(){return this._rtlMode}get masterSlide(){return this._masterSlide}get slides(){return this._slides}get sections(){return this._sections}get slideLayouts(){return this._slideLayouts}get AlignH(){return this._alignH}get AlignV(){return this._alignV}get ChartType(){return this._chartType}get OutputType(){return this._outputType}get presLayout(){return this._presLayout}get SchemeColor(){return this._schemeColor}get ShapeType(){return this._shapeType}get charts(){return this._charts}get colors(){return this._colors}get shapes(){return this._shapes}constructor(){this._version=Z;this._alignH=z;this._alignV=j;this._chartType=M;this._outputType=F;this._schemeColor=$;this._shapeType=O;this._charts=W;this._colors=q;this._shapes=U;this.addNewSlide=e=>{const t=this.sections.length>0&&this.sections[this.sections.length-1]._slides.filter((e=>e._slideNum===this.slides[this.slides.length-1]._slideNum)).length>0;e.sectionTitle=t?this.sections[this.sections.length-1].title:null;return this.addSlide(e)};this.getSlide=e=>this.slides.filter((t=>t._slideNum===e))[0];this.setSlideNumber=e=>{this.masterSlide._slideNumberProps=e;this.slideLayouts.filter((e=>e._name===y))[0]._slideNumberProps=e};this.createChartMediaRels=(e,t,o)=>{e._relsChart.forEach((e=>o.push(createExcelWorksheet(e,t))));e._relsMedia.forEach((e=>{if(e.type!=="online"&&e.type!=="hyperlink"){let o=e.data&&typeof e.data==="string"?e.data:"";if(!o.includes(",")&&!o.includes(";"))o="image/png;base64,"+o;else if(!o.includes(","))o="image/png;base64,"+o;else if(!o.includes(";"))o="image/png;"+o;t.file(e.Target.replace("..","ppt"),o.split(",").pop(),{base64:true})}}))};this.writeFileToBrowser=(e,t)=>__awaiter(this,void 0,void 0,(function*(){const o=document.createElement("a");o.setAttribute("style","display:none;");o.dataset.interception="off";document.body.appendChild(o);if(window.URL.createObjectURL){const n=window.URL.createObjectURL(new Blob([t],{type:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}));o.href=n;o.download=e;o.click();setTimeout((()=>{window.URL.revokeObjectURL(n);document.body.removeChild(o)}),100);return yield Promise.resolve(e)}}));this.exportPresentation=e=>__awaiter(this,void 0,void 0,(function*(){const t=[];let o=[];const r=new n;this.slides.forEach((e=>{o=o.concat(encodeSlideMediaRels(e))}));this.slideLayouts.forEach((e=>{o=o.concat(encodeSlideMediaRels(e))}));o=o.concat(encodeSlideMediaRels(this.masterSlide));return yield Promise.all(o).then((()=>__awaiter(this,void 0,void 0,(function*(){this.slides.forEach((e=>{if(e._slideLayout)addPlaceholdersToSlideLayouts(e)}));r.folder("_rels");r.folder("docProps");r.folder("ppt").folder("_rels");r.folder("ppt/charts").folder("_rels");r.folder("ppt/embeddings");r.folder("ppt/media");r.folder("ppt/slideLayouts").folder("_rels");r.folder("ppt/slideMasters").folder("_rels");r.folder("ppt/slides").folder("_rels");r.folder("ppt/theme");r.folder("ppt/notesMasters").folder("_rels");r.folder("ppt/notesSlides").folder("_rels");r.file("[Content_Types].xml",makeXmlContTypes(this.slides,this.slideLayouts,this.masterSlide));r.file("_rels/.rels",makeXmlRootRels());r.file("docProps/app.xml",makeXmlApp(this.slides,this.company));r.file("docProps/core.xml",makeXmlCore(this.title,this.subject,this.author,this.revision));r.file("ppt/_rels/presentation.xml.rels",makeXmlPresentationRels(this.slides));r.file("ppt/theme/theme1.xml",makeXmlTheme(this));r.file("ppt/presentation.xml",makeXmlPresentation(this));r.file("ppt/presProps.xml",makeXmlPresProps());r.file("ppt/tableStyles.xml",makeXmlTableStyles());r.file("ppt/viewProps.xml",makeXmlViewProps());this.slideLayouts.forEach(((e,t)=>{r.file(`ppt/slideLayouts/slideLayout${t+1}.xml`,makeXmlLayout(e));r.file(`ppt/slideLayouts/_rels/slideLayout${t+1}.xml.rels`,makeXmlSlideLayoutRel(t+1,this.slideLayouts))}));this.slides.forEach(((e,t)=>{r.file(`ppt/slides/slide${t+1}.xml`,makeXmlSlide(e));r.file(`ppt/slides/_rels/slide${t+1}.xml.rels`,makeXmlSlideRel(this.slides,this.slideLayouts,t+1));r.file(`ppt/notesSlides/notesSlide${t+1}.xml`,makeXmlNotesSlide(e));r.file(`ppt/notesSlides/_rels/notesSlide${t+1}.xml.rels`,makeXmlNotesSlideRel(t+1))}));r.file("ppt/slideMasters/slideMaster1.xml",makeXmlMaster(this.masterSlide,this.slideLayouts));r.file("ppt/slideMasters/_rels/slideMaster1.xml.rels",makeXmlMasterRel(this.masterSlide,this.slideLayouts));r.file("ppt/notesMasters/notesMaster1.xml",makeXmlNotesMaster());r.file("ppt/notesMasters/_rels/notesMaster1.xml.rels",makeXmlNotesMasterRel());this.slideLayouts.forEach((e=>{this.createChartMediaRels(e,r,t)}));this.slides.forEach((e=>{this.createChartMediaRels(e,r,t)}));this.createChartMediaRels(this.masterSlide,r,t);return yield Promise.all(t).then((()=>__awaiter(this,void 0,void 0,(function*(){if(e.outputType==="STREAM"){return yield r.generateAsync({type:"nodebuffer",compression:e.compression?"DEFLATE":"STORE"})}else if(e.outputType){return yield r.generateAsync({type:e.outputType})}else{return yield r.generateAsync({type:"blob",compression:e.compression?"DEFLATE":"STORE"})}}))))}))))}));const e={name:"screen4x3",width:9144e3,height:6858e3};const t={name:"screen16x9",width:9144e3,height:5143500};const o={name:"screen16x10",width:9144e3,height:5715e3};const r={name:"custom",width:12192e3,height:6858e3};this.LAYOUTS={LAYOUT_4x3:e,LAYOUT_16x9:t,LAYOUT_16x10:o,LAYOUT_WIDE:r};this._author="PptxGenJS";this._company="PptxGenJS";this._revision="1";this._subject="PptxGenJS Presentation";this._title="PptxGenJS Presentation";this._presLayout={name:this.LAYOUTS[v].name,_sizeW:this.LAYOUTS[v].width,_sizeH:this.LAYOUTS[v].height,width:this.LAYOUTS[v].width,height:this.LAYOUTS[v].height};this._rtlMode=false;this._slideLayouts=[{_margin:x,_name:y,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3,_slideNumberProps:null,_slideObjects:[]}];this._slides=[];this._sections=[];this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream(e){return __awaiter(this,void 0,void 0,(function*(){return yield this.exportPresentation({compression:e===null||e===void 0?void 0:e.compression,outputType:"STREAM"})}))}write(e){return __awaiter(this,void 0,void 0,(function*(){const t=typeof e==="object"&&(e===null||e===void 0?void 0:e.outputType)?e.outputType:e?e:null;const o=typeof e==="object"&&(e===null||e===void 0?void 0:e.compression)?e.compression:false;return yield this.exportPresentation({compression:o,outputType:t})}))}writeFile(e){return __awaiter(this,void 0,void 0,(function*(){var t,n;const r=typeof process!=="undefined"&&!!((t=process.versions)===null||t===void 0?void 0:t.node)&&((n=process.release)===null||n===void 0?void 0:n.name)==="node";if(typeof e==="string"){console.warn("[WARNING] writeFile(string) is deprecated - pass { fileName } instead.");e={fileName:e}}const{fileName:a="Presentation.pptx",compression:i=false}=e;const s=a.toLowerCase().endsWith(".pptx")?a:`${a}.pptx`;const l=r?"nodebuffer":null;const c=yield this.exportPresentation({compression:i,outputType:l});if(r){const{promises:e}=yield Promise.resolve().then(o.t.bind(o,3024,23));const{writeFile:t}=e;yield t(s,c);return s}yield this.writeFileToBrowser(s,c);return s}))}addSection(e){if(!e)console.warn("addSection requires an argument");else if(!e.title)console.warn("addSection requires a title");const t={_type:"user",_slides:[],title:e.title};if(e.order)this.sections.splice(e.order,0,t);else this._sections.push(t)}addSlide(e){const t=typeof e==="string"?e:(e===null||e===void 0?void 0:e.masterName)?e.masterName:"";let o={_name:this.LAYOUTS[v].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};if(t){const e=this.slideLayouts.filter((e=>e._name===t))[0];if(e)o=e}const n=new Slide({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:o});this._slides.push(n);if(e===null||e===void 0?void 0:e.sectionTitle){const t=this.sections.filter((t=>t.title===e.sectionTitle))[0];if(!t)console.warn(`addSlide: unable to find section with title: "${e.sectionTitle}"`);else t._slides.push(n)}else if(this.sections&&this.sections.length>0&&!(e===null||e===void 0?void 0:e.sectionTitle)){const e=this._sections[this.sections.length-1];if(e._type==="default")e._slides.push(n);else{this._sections.push({title:`Default-${this.sections.filter((e=>e._type==="default")).length+1}`,_type:"default",_slides:[n]})}}return n}defineLayout(e){if(!e)console.warn("defineLayout requires `{name, width, height}`");else if(!e.name)console.warn("defineLayout requires `name`");else if(!e.width)console.warn("defineLayout requires `width`");else if(!e.height)console.warn("defineLayout requires `height`");else if(typeof e.height!=="number")console.warn("defineLayout `height` should be a number (inches)");else if(typeof e.width!=="number")console.warn("defineLayout `width` should be a number (inches)");this.LAYOUTS[e.name]={name:e.name,_sizeW:Math.round(Number(e.width)*r),_sizeH:Math.round(Number(e.height)*r),width:Math.round(Number(e.width)*r),height:Math.round(Number(e.height)*r)}}defineSlideMaster(e){const t=JSON.parse(JSON.stringify(e));if(!t.title)throw new Error("defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)");const o={_margin:t.margin||x,_name:t.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1e3+this.slideLayouts.length+1,_slideNumberProps:t.slideNumber||null,_slideObjects:[],background:t.background||null,bkgd:t.bkgd||null};createSlideMaster(t,o);this.slideLayouts.push(o);if(t.background||t.bkgd)addBackgroundDefinition(t.background,o);if(o._slideNumberProps&&!this.masterSlide._slideNumberProps)this.masterSlide._slideNumberProps=o._slideNumberProps}tableToSlides(e,t={}){genTableToSlides(this,e,t,(t===null||t===void 0?void 0:t.masterSlideName)?this.slideLayouts.filter((e=>e._name===t.masterSlideName))[0]:null)}}e.exports=PptxGenJS},6246:e=>{"use strict";if(typeof process==="undefined"||!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0){e.exports={nextTick:nextTick}}else{e.exports=process}function nextTick(e,t,o,n){if(typeof e!=="function"){throw new TypeError('"callback" argument must be a function')}var r=arguments.length;var a,i;switch(r){case 0:case 1:return process.nextTick(e);case 2:return process.nextTick((function afterTickOne(){e.call(null,t)}));case 3:return process.nextTick((function afterTickTwo(){e.call(null,t,o)}));case 4:return process.nextTick((function afterTickThree(){e.call(null,t,o,n)}));default:a=new Array(r-1);i=0;while(i<a.length){a[i++]=arguments[i]}return process.nextTick((function afterTick(){e.apply(null,a)}))}}},5950:function(){(function(e,t){"use strict";if(e.setImmediate){return}var o=1;var n={};var r=false;var a=e.document;var i;function setImmediate(e){if(typeof e!=="function"){e=new Function(""+e)}var t=new Array(arguments.length-1);for(var r=0;r<t.length;r++){t[r]=arguments[r+1]}var a={callback:e,args:t};n[o]=a;i(o);return o++}function clearImmediate(e){delete n[e]}function run(e){var o=e.callback;var n=e.args;switch(n.length){case 0:o();break;case 1:o(n[0]);break;case 2:o(n[0],n[1]);break;case 3:o(n[0],n[1],n[2]);break;default:o.apply(t,n);break}}function runIfPresent(e){if(r){setTimeout(runIfPresent,0,e)}else{var t=n[e];if(t){r=true;try{run(t)}finally{clearImmediate(e);r=false}}}}function installNextTickImplementation(){i=function(e){process.nextTick((function(){runIfPresent(e)}))}}function canUsePostMessage(){if(e.postMessage&&!e.importScripts){var t=true;var o=e.onmessage;e.onmessage=function(){t=false};e.postMessage("","*");e.onmessage=o;return t}}function installPostMessageImplementation(){var t="setImmediate$"+Math.random()+"$";var onGlobalMessage=function(o){if(o.source===e&&typeof o.data==="string"&&o.data.indexOf(t)===0){runIfPresent(+o.data.slice(t.length))}};if(e.addEventListener){e.addEventListener("message",onGlobalMessage,false)}else{e.attachEvent("onmessage",onGlobalMessage)}i=function(o){e.postMessage(t+o,"*")}}function installMessageChannelImplementation(){var e=new MessageChannel;e.port1.onmessage=function(e){var t=e.data;runIfPresent(t)};i=function(t){e.port2.postMessage(t)}}function installReadyStateChangeImplementation(){var e=a.documentElement;i=function(t){var o=a.createElement("script");o.onreadystatechange=function(){runIfPresent(t);o.onreadystatechange=null;e.removeChild(o);o=null};e.appendChild(o)}}function installSetTimeoutImplementation(){i=function(e){setTimeout(runIfPresent,0,e)}}var s=Object.getPrototypeOf&&Object.getPrototypeOf(e);s=s&&s.setTimeout?s:e;if({}.toString.call(e.process)==="[object process]"){installNextTickImplementation()}else if(canUsePostMessage()){installPostMessageImplementation()}else if(e.MessageChannel){installMessageChannelImplementation()}else if(a&&"onreadystatechange"in a.createElement("script")){installReadyStateChangeImplementation()}else{installSetTimeoutImplementation()}s.setImmediate=setImmediate;s.clearImmediate=clearImmediate})(typeof self==="undefined"?typeof global==="undefined"?this:global:self)},8430:(e,t,o)=>{e.exports=o(9023).deprecate},181:e=>{"use strict";e.exports=require("buffer")},5317:e=>{"use strict";e.exports=require("child_process")},6982:e=>{"use strict";e.exports=require("crypto")},4434:e=>{"use strict";e.exports=require("events")},9896:e=>{"use strict";e.exports=require("fs")},8611:e=>{"use strict";e.exports=require("http")},5692:e=>{"use strict";e.exports=require("https")},3024:e=>{"use strict";e.exports=require("node:fs")},4708:e=>{"use strict";e.exports=require("node:https")},857:e=>{"use strict";e.exports=require("os")},6928:e=>{"use strict";e.exports=require("path")},3785:e=>{"use strict";e.exports=require("readline")},2203:e=>{"use strict";e.exports=require("stream")},7016:e=>{"use strict";e.exports=require("url")},9023:e=>{"use strict";e.exports=require("util")},6257:(e,t,o)=>{"use strict";o.r(t);o.d(t,{apps:()=>P,default:()=>E,openApp:()=>openApp});const n=require("node:process");const r=require("node:buffer");const a=require("node:path");const i=require("node:url");const s=require("node:util");const l=require("node:child_process");const c=require("node:fs/promises");const d=require("node:os");var u=o(3024);let p;function hasDockerEnv(){try{u.statSync("/.dockerenv");return true}catch{return false}}function hasDockerCGroup(){try{return u.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return false}}function isDocker(){if(p===undefined){p=hasDockerEnv()||hasDockerCGroup()}return p}let A;const hasContainerEnv=()=>{try{u.statSync("/run/.containerenv");return true}catch{return false}};function isInsideContainer(){if(A===undefined){A=hasContainerEnv()||isDocker()}return A}const isWsl=()=>{if(n.platform!=="linux"){return false}if(d.release().toLowerCase().includes("microsoft")){if(isInsideContainer()){return false}return true}try{if(u.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")){return!isInsideContainer()}}catch{}if(u.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||u.existsSync("/run/WSL")){return!isInsideContainer()}return false};const f=n.env.__IS_WSL_TEST__?isWsl:isWsl();const h=(()=>{const e="/mnt/";let t;return async function(){if(t){return t}const o="/etc/wsl.conf";let n=false;try{await c.access(o,c.constants.F_OK);n=true}catch{}if(!n){return e}const r=await c.readFile(o,{encoding:"utf8"});const a=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(r);if(!a){return e}t=a.groups.mountPoint.trim();t=t.endsWith("/")?t:`${t}/`;return t}})();const powerShellPathFromWsl=async()=>{const e=await h();return`${e}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`};const powerShellPath=async()=>{if(f){return powerShellPathFromWsl()}return`${n.env.SYSTEMROOT||n.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`};function defineLazyProperty(e,t,o){const define=o=>Object.defineProperty(e,t,{value:o,enumerable:true,writable:true});Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){const e=o();define(e);return e},set(e){define(e)}});return e}const m=(0,s.promisify)(l.execFile);async function defaultBrowserId(){if(n.platform!=="darwin"){throw new Error("macOS only")}const{stdout:e}=await m("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]);const t=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e);const o=t?.groups.id??"com.apple.Safari";if(o==="com.apple.safari"){return"com.apple.Safari"}return o}const g=(0,s.promisify)(l.execFile);async function runAppleScript(e,{humanReadableOutput:t=true,signal:o}={}){if(n.platform!=="darwin"){throw new Error("macOS only")}const r=t?[]:["-ss"];const a={};if(o){a.signal=o}const{stdout:i}=await g("osascript",["-e",e,r],a);return i.trim()}function runAppleScriptSync(e,{humanReadableOutput:t=true}={}){if(process.platform!=="darwin"){throw new Error("macOS only")}const o=t?[]:["-ss"];const n=execFileSync("osascript",["-e",e,...o],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:500});return n.trim()}async function bundleName(e){return runAppleScript(`tell application "Finder" to set app_path to application file id "${e}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}const v=(0,s.promisify)(l.execFile);const y={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}};const b=new Map(Object.entries(y));class UnknownBrowserError extends Error{}async function defaultBrowser(e=v){const{stdout:t}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]);const o=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(t);if(!o){throw new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`)}const{id:n}=o.groups;const r=n.lastIndexOf(".");const a=n.lastIndexOf("-");const i=r===-1?undefined:n.slice(0,r);const s=a===-1?undefined:n.slice(0,a);return y[n]??y[i]??y[s]??{name:n,id:n}}const w=(0,s.promisify)(l.execFile);const titleize=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,(e=>e.toUpperCase()));async function default_browser_defaultBrowser(){if(n.platform==="darwin"){const e=await defaultBrowserId();const t=await bundleName(e);return{name:t,id:e}}if(n.platform==="linux"){const{stdout:e}=await w("xdg-mime",["query","default","x-scheme-handler/http"]);const t=e.trim();const o=titleize(t.replace(/.desktop$/,"").replace("-"," "));return{name:o,id:t}}if(n.platform==="win32"){return defaultBrowser()}throw new Error("Only macOS, Linux, and Windows are supported")}const x=(0,s.promisify)(l.execFile);const S=a.dirname((0,i.fileURLToPath)(require("url").pathToFileURL(__filename).href));const k=a.join(S,"xdg-open");const{platform:C,arch:T}=n;async function getWindowsDefaultBrowserFromWsl(){const e=await powerShellPath();const t=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`;const o=r.Buffer.from(t,"utf16le").toString("base64");const{stdout:n}=await x(e,["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",o],{encoding:"utf8"});const a=n.trim();const i={ChromeHTML:"com.google.chrome",BraveHTML:"com.brave.Browser",MSEdgeHTM:"com.microsoft.edge",FirefoxURL:"org.mozilla.firefox"};return i[a]?{id:i[a]}:{}}const pTryEach=async(e,t)=>{let o;for(const n of e){try{return await t(n)}catch(e){o=e}}throw o};const baseOpen=async e=>{e={wait:false,background:false,newInstance:false,allowNonzeroExitCode:false,...e};if(Array.isArray(e.app)){return pTryEach(e.app,(t=>baseOpen({...e,app:t})))}let{name:t,arguments:o=[]}=e.app??{};o=[...o];if(Array.isArray(t)){return pTryEach(t,(t=>baseOpen({...e,app:{name:t,arguments:o}})))}if(t==="browser"||t==="browserPrivate"){const n={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.Browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge"};const r={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"};const a=f?await getWindowsDefaultBrowserFromWsl():await default_browser_defaultBrowser();if(a.id in n){const i=n[a.id];if(t==="browserPrivate"){o.push(r[i])}return baseOpen({...e,app:{name:P[i],arguments:o}})}throw new Error(`${a.name} is not supported as a default browser`)}let a;const i=[];const s={};if(C==="darwin"){a="open";if(e.wait){i.push("--wait-apps")}if(e.background){i.push("--background")}if(e.newInstance){i.push("--new")}if(t){i.push("-a",t)}}else if(C==="win32"||f&&!isInsideContainer()&&!t){a=await powerShellPath();i.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand");if(!f){s.windowsVerbatimArguments=true}const n=["Start"];if(e.wait){n.push("-Wait")}if(t){n.push(`"\`"${t}\`""`);if(e.target){o.push(e.target)}}else if(e.target){n.push(`"${e.target}"`)}if(o.length>0){o=o.map((e=>`"\`"${e}\`""`));n.push("-ArgumentList",o.join(","))}e.target=r.Buffer.from(n.join(" "),"utf16le").toString("base64")}else{if(t){a=t}else{const e=!S||S==="/";let t=false;try{await c.access(k,c.constants.X_OK);t=true}catch{}const o=n.versions.electron??(C==="android"||e||!t);a=o?"xdg-open":k}if(o.length>0){i.push(...o)}if(!e.wait){s.stdio="ignore";s.detached=true}}if(C==="darwin"&&o.length>0){i.push("--args",...o)}if(e.target){i.push(e.target)}const d=l.spawn(a,i,s);if(e.wait){return new Promise(((t,o)=>{d.once("error",o);d.once("close",(n=>{if(!e.allowNonzeroExitCode&&n>0){o(new Error(`Exited with code ${n}`));return}t(d)}))}))}d.unref();return d};const open_open=(e,t)=>{if(typeof e!=="string"){throw new TypeError("Expected a `target`")}return baseOpen({...t,target:e})};const openApp=(e,t)=>{if(typeof e!=="string"&&!Array.isArray(e)){throw new TypeError("Expected a valid `name`")}const{arguments:o=[]}=t??{};if(o!==undefined&&o!==null&&!Array.isArray(o)){throw new TypeError("Expected `appArguments` as Array type")}return baseOpen({...t,app:{name:e,arguments:o}})};function detectArchBinary(e){if(typeof e==="string"||Array.isArray(e)){return e}const{[T]:t}=e;if(!t){throw new Error(`${T} is not supported`)}return t}function detectPlatformBinary({[C]:e},{wsl:t}){if(t&&f){return detectArchBinary(t)}if(!e){throw new Error(`${C} is not supported`)}return detectArchBinary(e)}const P={};defineLazyProperty(P,"chrome",(()=>detectPlatformBinary({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}})));defineLazyProperty(P,"brave",(()=>detectPlatformBinary({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}})));defineLazyProperty(P,"firefox",(()=>detectPlatformBinary({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"})));defineLazyProperty(P,"edge",(()=>detectPlatformBinary({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"})));defineLazyProperty(P,"browser",(()=>"browser"));defineLazyProperty(P,"browserPrivate",(()=>"browserPrivate"));const E=open_open},8330:e=>{"use strict";e.exports=JSON.parse('{"name":"voxflow","version":"1.11.1","description":"AI audio content creation CLI — stories, podcasts, narration, dubbing, transcription, translation, and video translation with TTS","bin":{"voxflow":"./dist/index.js"},"files":["dist/","README.md","LICENSE"],"engines":{"node":"^20.19.0 || >=22.12.0"},"dependencies":{"open":"^10.0.0","pptxgenjs":"^4.0.1"},"keywords":["tts","story","podcast","ai","audio","text-to-speech","voice","narration","dubbing","synthesize","voices","document","translate","subtitle","srt","transcribe","asr","video-translate","video","voxflow"],"scripts":{"build":"ncc build bin/voxflow.js -o dist --minify && rm -rf dist/cli && node scripts/check-no-asset-rewrite.js","prepublishOnly":"npm run build","lint":"eslint lib/ bin/ tests/","lint:fix":"eslint lib/ bin/ tests/ --fix","test":"node --test tests/*.test.js","test:watch":"node --test --watch tests/*.test.js","version":"node scripts/sync-plugin-versions.js && git add .claude-plugin/plugin.json .cursor-plugin/plugin.json .codex-plugin/plugin.json"},"author":"gonghaoran","license":"Apache-2.0","homepage":"https://voxflow.studio","repository":{"type":"git","url":"https://github.com/VoxFlowStudio/FlowStudio","directory":"cli"},"publishConfig":{"access":"public"},"devDependencies":{"@eslint/js":"^9.39.4","@vercel/ncc":"^0.38.4","eslint":"^9.39.4"}}')}};var t={};function __nccwpck_require__(o){var n=t[o];if(n!==undefined){return n.exports}var r=t[o]={exports:{}};var a=true;try{e[o].call(r.exports,r,r.exports,__nccwpck_require__);a=false}finally{if(a)delete t[o]}return r.exports}(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;var t;__nccwpck_require__.t=function(o,n){if(n&1)o=this(o);if(n&8)return o;if(typeof o==="object"&&o){if(n&4&&o.__esModule)return o;if(n&16&&typeof o.then==="function")return o}var r=Object.create(null);__nccwpck_require__.r(r);var a={};t=t||[null,e({}),e([]),e(e)];for(var i=n&2&&o;typeof i=="object"&&!~t.indexOf(i);i=e(i)){Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>o[e]))}a["default"]=()=>o;__nccwpck_require__.d(r,a);return r}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var o in t){if(__nccwpck_require__.o(t,o)&&!__nccwpck_require__.o(e,o)){Object.defineProperty(e,o,{enumerable:true,get:t[o]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();(()=>{__nccwpck_require__.r=e=>{if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(e,"__esModule",{value:true})}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var o={};if(process.env.CLAUDECODE){process.stderr.write('<claude-code-hint v="1" type="plugin" value="voxflow@claude-plugins-official" />\n')}const{run:n}=__nccwpck_require__(9226);const{logger:r}=__nccwpck_require__(5984);n().catch((e=>{process.stderr.write(`\nFatal error: ${e.message}\n`);r.debug({err:e},"fatal error");process.exit(1)}));module.exports=o})();
|