azot 5.0.0-alpha.26 → 5.0.0-alpha.28

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/azot.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const gz=b;(function(fS,fT){const gy=b,fU=fS();while(!![]){try{const fV=parseInt(gy(0x2fa))/0x1+-parseInt(gy(0x23a))/0x2+parseInt(gy(0x276))/0x3*(parseInt(gy(0x2b9))/0x4)+-parseInt(gy(0x342))/0x5*(-parseInt(gy(0x344))/0x6)+parseInt(gy(0x297))/0x7+-parseInt(gy(0x306))/0x8*(-parseInt(gy(0x287))/0x9)+-parseInt(gy(0x2a6))/0xa;if(fV===fT)break;else fU['push'](fU['shift']());}catch(fW){fU['push'](fU['shift']());}}}(a,0x55123));import{A as c,C as d,D as f,E as g,M as h,O as i,S as j,T as k,_ as l,a as m,b as n,c as o,d as p,f as q,g as r,h as s,i as t,j as u,k as v,l as w,m as x,n as y,o as A,p as B,r as C,s as D,t as E,u as F,v as G,w as H,x as I,y as J}from'./context-qIxgBL5G.mjs';import{createRequire}from'node:module';import K,{constants,existsSync,readFileSync,readdirSync,rmSync,statSync,writeFileSync}from'node:fs';import*as L from'node:path';import M,{basename,dirname,extname,join,parse,resolve}from'node:path';import N from'yargs';import'urlpattern-polyfill';import O from'picocolors';import*as P from'node:fs/promises';import Q,{open,readFile,readdir,rm,stat,writeFile}from'node:fs/promises';import R,{platform,stdout}from'node:process';import{hideBin}from'yargs/helpers';import{EventEmitter as S}from'node:events';import{z}from'zod';import{DASH_FORMATS,HLS_FORMATS,Input,UrlSource}from'dasha';import T from'ky';import{Agent,ProxyAgent}from'undici';import{checkbox,confirm}from'@inquirer/prompts';import{execFileSync}from'node:child_process';import{createAuthClient}from'better-auth/client';import{deviceAuthorizationClient}from'better-auth/client/plugins';import{tributeClient}from'@tribute-tg/better-auth';import{QueryCache,QueryClient}from'@tanstack/query-core';import{createHash}from'node:crypto';import{inspect}from'node:util';import{ALL_FORMATS as U,EncodedAudioPacketSource,EncodedPacketSink,EncodedVideoPacketSource,Input as V,MkvOutputFormat,Mp4OutputFormat,Output,StreamSource,StreamTarget,TextSubtitleSource,UrlSource as W}from'mediabunny';import{finished,pipeline}from'node:stream/promises';import{Readable}from'node:stream';import{isatty}from'node:tty';import{createSpinner}from'nanospinner';import{RemoteCdm,requestMediaKeySystemAccess}from'okova';import{Decryption,FilePathSource,FilePathTarget,Input as X,Output as Y}from'shifro';import{convert}from'@transcrobes/subs-convert';import Z from'open';var a0=Object[gz(0x28a)],a1=Object['defineProperty'],a2=Object['getOwnPropertyDescriptor'],a3=Object['getOwnPropertyNames'],a4=Object['getPrototypeOf'],a5=Object['prototype']['hasOwnProperty'],a6=(fS,fT)=>()=>(fT||(fS((fT={'exports':{}})[gz(0x246)],fT),fS=null),fT['exports']),a7=(fS,fT,fU,fV)=>{if(fT&&typeof fT=='object'||typeof fT=='function'){for(var fW=a3(fT),fX=0x0,fY=fW['length'],fZ;fX<fY;fX++)fZ=fW[fX],!a5['call'](fS,fZ)&&fZ!==fU&&a1(fS,fZ,{'get':(g0=>fT[g0])['bind'](null,fZ),'enumerable':!(fV=a2(fT,fZ))||fV['enumerable']});}return fS;},a8=(fS,fT,fU)=>(fU=fS==null?{}:a0(a4(fS)),a7(fT||!fS||!fS['__esModule']?a1(fU,'default',{'value':fS,'enumerable':!0x0}):fU,fS)),a9=createRequire(import.meta.url);const aa=()=>{const gA=gz;let fS=[];process['resourcesPath']&&fS['push'](join(process['resourcesPath'],'bin','winconsole.node'));let fT=join(__dirname,'..','..','..');return fS['push'](join(fT,gA(0x31f),'bin','win32','winconsole.node')),fS['push'](join(fT,'native','winconsole','build','Release','winconsole.node')),fS['find'](fU=>existsSync(fU))||null;},ab=()=>{if(process['platform']!=='win32')return null;let fS=aa();if(!fS)return null;try{return a9(fS);}catch{return null;}};if(process['platform']==='win32'){let g1=ab();g1&&(g1['attachParentConsole']?.(),g1['enableUtf8']?.());}const ac=(fS=process['argv'],fT=process.env)=>fT['ELECTRON_RUN_AS_NODE']==='1'?fS['slice'](0x2):hideBin(fS),ad={'target':'node','compact':!0x0,'identifierNamesGenerator':'mangled','renameGlobals':!0x0,'simplify':!0x0,'controlFlowFlattening':!0x1,'deadCodeInjection':!0x1,'debugProtection':!0x1,'numbersToExpressions':!0x1,'selfDefending':!0x1,'splitStrings':!0x1,'stringArray':!0x0,'stringArrayCallsTransform':!0x1,'stringArrayEncoding':[],'stringArrayIndexShift':!0x0,'stringArrayRotate':!0x0,'stringArrayShuffle':!0x0,'stringArrayWrappersCount':0x1,'stringArrayWrappersChainedCalls':!0x0,'stringArrayWrappersType':'variable','stringArrayThreshold':0.1,'transformObjectKeys':!0x1,'unicodeEscapeSequence':!0x1},ae=fS=>{let fT=['B','KB','MB','GB'],fU=fS,fV=0x0;for(;fU>=0x400&&fV<fT['length']-0x1;)fU/=0x400,fV+=0x1;return fU['toFixed'](fV===0x0?0x0:0x2)+'\x20'+fT[fV];},af=async(fS,fT)=>{const gB=gz;let fU=readFileSync(fS,gB(0x1e4)),{default:fV}=await import('javascript-obfuscator');console['log'](gB(0x23e)+fS+'...'),console['time']('Obfuscation\x20finished');let fW=fV[gB(0x26b)](fU,ad);console['timeEnd'](gB(0x317));let fX=fW['getObfuscatedCode'](),fY=Buffer['byteLength'](fU,'utf8'),fZ=Buffer['byteLength'](fX,'utf8'),g0=fY===0x0?0x0:fZ/fY;return console[gB(0x2bc)]('Size\x20changed\x20from\x20'+ae(fY)+'\x20to\x20'+ae(fZ)+',\x20'+g0['toFixed'](0x2)+'x\x20increase'),writeFileSync(fT||fS,fX),fX;},ag=new Set(['.ts',gz(0x2eb),'.cjs','.mjs']),ah=new Set(['index','main']),ai=fS=>{const gC=gz;if(existsSync(fS))try{if(!statSync(fS)[gC(0x222)]())return;let fT=readdirSync(fS)['filter'](fW=>!fW['endsWith']('.d.ts'))['filter'](fW=>ag['has'](M['extname'](fW))),fU=fW=>M['basename'](fW,M[gC(0x1de)](fW)),fV=fT['find'](fW=>ah['has'](fU(fW)))||fT[0x0];return fV?M['join'](fS,fV):void 0x0;}catch{return;}},aj=()=>{const gD=gz;let fS=[process['cwd'](),M['join'](process['cwd'](),'src'),M[gD(0x333)](process[gD(0x2ef)](),'lib')];for(let fT of fS){let fU=ai(fT);if(fU)return fU;}},ak=fS=>fS==='esm'?'mjs':'cjs',al=(fS,fT)=>M['join'](process['cwd'](),'dist',M['parse'](fS)['name']+'.'+ak(fT)),am=fS=>{const gE=gz;let fT=M['relative'](process['cwd'](),fS);if(!fT||fT['startsWith']('..'))throw Error(gE(0x2bf)+fS);return'./'+fT['split'](M['sep'])['join']('/');},an=fS=>{const gF=gz;let fT=fS[gF(0x24a)]||fS['entry']||aj();if(!fT)throw Error('No\x20entry\x20file\x20found');return M['resolve'](fT);},ao=()=>{throw Error('The\x20`build`\x20and\x20`dev`\x20commands\x20are\x20unavailable\x20in\x20the\x20desktop-distributed\x20CLI.\x20Use\x20the\x20npm-installed\x20`azot`\x20package\x20in\x20a\x20Node.js\x20environment\x20instead.');},ap=fS=>fS['positional']('entry',{'describe':'Path\x20to\x20the\x20input\x20file','type':'string'})['option']('input',{'alias':'i','describe':'Path\x20to\x20the\x20input\x20file','type':'string'})['option']('format',{'alias':'f','describe':'Output\x20format','choices':['cjs','esm'],'default':'cjs'})['option'](gz(0x1ee),{'describe':'Minify\x20output','type':'boolean'}),aq=fS=>{let fT=M['resolve'](fS);for(;;){let fU=M['join'](fT,'package.json');if(existsSync(fU))return fU;let fV=M['dirname'](fT);if(fV===fT)return;fT=fV;}},ar=fS=>{let fT=aq(fS);if(!fT){let fU='Could\x20not\x20find\x20package.json\x20starting\x20from\x20'+fS;throw B['error'](fU),Error(fU);}try{let fV=JSON['parse'](readFileSync(fT,'utf8'));if(!fV||typeof fV!='object'||Array['isArray'](fV))throw Error('package.json\x20must\x20contain\x20a\x20JSON\x20object');let fW=fV;if(fW['private']!==void 0x0&&typeof fW['private']!='boolean')throw Error('package.json\x20field\x20\x22private\x22\x20must\x20be\x20a\x20boolean\x20when\x20present');return{'private':fW['private']};}catch(fX){let fY='Failed\x20to\x20load\x20package.json\x20for\x20build\x20command\x20from\x20'+fT;throw B['error'](fY),B['debug'](fX),Error(fY);}},as={'command':'build\x20[entry]','describe':'Bundle\x20a\x20Node.js\x20entry\x20file\x20for\x20distribution','builder':fS=>ap(fS)[gz(0x300)]('watch',{'describe':'Watch\x20file\x20changes','type':gz(0x30a)})['option']('obfuscate',{'describe':'Obfuscate\x20output','type':'boolean'}),'handler':async fS=>{const gG=gz;ao();let fT=an(fS),fU=typeof fS['minify']=='boolean'?fS['minify']:!0x0,fV=fS[gG(0x2a8)]===!0x0,fW=fS[gG(0x290)]??'cjs',{build:fX}=await import('tsdown');await fX({'entry':am(fT),'format':fW,'platform':'node','target':'node24','watch':fV,'minify':fU,'inlineOnly':!0x1});let fY=al(fT,fW),fZ=ar(process['cwd']());(typeof fS['obfuscate']=='boolean'?fS['obfuscate']:fZ['private'])&&await af(fY,fY);}},at={'command':'dev\x20[entry]','describe':'Watch\x20and\x20rebuild\x20a\x20Node.js\x20entry\x20file\x20during\x20development','builder':fS=>ap(fS),'handler':async fS=>{const gH=gz;ao();let fT=an(fS),fU=typeof fS['minify']=='boolean'?fS[gH(0x1ee)]:!0x1,{build:fV}=await import('tsdown');await fV({'entry':am(fT),'format':fS['format']??'cjs','platform':'node','target':'node24','watch':!0x0,'minify':fU});}},au=()=>Intl['DateTimeFormat']()['resolvedOptions']()['locale']['startsWith']('ru')?'ru':'en',av={'dark':'dark','light':'light','system':'system'},aw={'mp4':'mp4','mkv':'mkv'},ax=z['object']({'downloadDir':z['string']()['default'](G),'binariesDir':z['string']()['default'](H(join(x,'bin'))),'drmDir':z['string']()['default'](H(join(x,'drm'))),'language':z['string']()[gz(0x314)](au()),'theme':z['enum']([av['dark'],av['light'],av['system']])[gz(0x314)](av[gz(0x2b3)]),'preferHardsub':z['coerce']['boolean']()['default'](!0x1),'retry':z[gz(0x2a0)][gz(0x324)]()['int']()['min'](0x1)['max'](0xa)['default'](0x3),'connections':z['coerce']['number']()[gz(0x34a)]()['min'](0x1)['max'](0x40)['default'](0x4),'maxActiveDownloads':z['coerce']['number']()[gz(0x34a)]()['min'](0x1)['default'](0x1),'proxy':z['string']()['optional'](),'proxyMeta':z['string']()['optional'](),'proxyMedia':z['string']()['optional'](),'movieFilenameTemplate':z['string']()['default']('{title}\x20({quality},\x20{codec})'),'seriesFilenameTemplate':z['string']()['default']('{title}\x20S{s}E{e}\x20({quality},\x20{codec})'),'developerMode':z['coerce']['boolean']()['default'](!0x1),'allowUnknownSources':z[gz(0x2a0)]['boolean']()['default'](!0x1),'videoContainerFormat':z['enum']([aw['mp4'],aw['mkv']])[gz(0x314)](aw['mp4']),'useAlternativeServer':z['coerce'][gz(0x30a)]()['default'](!0x1),'automaticUpdates':z['coerce']['boolean']()['default'](!0x0)}),ay=ax['parse']({});var az=class{#e;constructor(fS){this.#e=w({'defaults':ay,'cwd':dirname(fS),'configName':basename(fS,'.json')}),this.#t();}#t(){const gI=gz;let fS=this.#e['store'],fT=ax['safeParse'](fS),fU='{title}.{audioType}.{quality}.{tag}.{format}.{codec}',fV='{title}.S{s}E{e}.{episodeTitle}.{audioType}.{quality}.{tag}.{format}.{codec}';if(fS['movieFilenameTemplate']===gI(0x2b1)&&this.#e['set']('movieFilenameTemplate',fS['seriesFilenameTemplate']),fS['seriesFilenameTemplate']==='{title}.S{s}E{e}.{episodeTitle}.{audioType}.{quality}.{tag}.{format}.{codec}'&&this.#e['set']('seriesFilenameTemplate',fS['seriesFilenameTemplate']),!fT['success']){console['warn']('Settings\x20validation\x20failed!\x20Resetting\x20to\x20defaults.',fT[gI(0x280)]['flatten']()),this.#e['set'](ay);return;}Object['hasOwn'](fS,'askForOptions')&&this.#e['set'](fT['data']);}['getAll'](){return this.#e['store'];}['get'](fS){return this.#e['get'](fS);}['set'](fS){let fT={...this.#e['store'],...fS},fU=ax['safeParse'](fT);if(!fU['success'])throw console['error']('Invalid\x20settings\x20update:',fU['error']['flatten']()),Error('Settings\x20update\x20failed\x20validation.');this.#e['set'](fU['data']);}['onDidChange'](fS){this.#e['onDidAnyChange'](fS);}};const aA=async fS=>{try{return await Q['access'](fS),!0x0;}catch(fT){if(fT['code']==='ENOENT')return!0x1;throw fT;}},aB=async(fS,{recursive:fT=!0x1}={})=>await Q['readdir'](fS,{'withFileTypes':!0x0,'recursive':fT}),aC=async(fS,{recursive:fT=!0x0,force:fU=!0x0}={})=>{await Q['rm'](fS,{'recursive':fT,'force':fU});},aD=async(fS,{recursive:fT=!0x0}={})=>{await Q['mkdir'](fS,{'recursive':fT});},aE=async fS=>{try{await Q['access'](fS,constants['W_OK']);}catch(fT){let fU=fT['code'];throw fU==='EPERM'||fU==='EACCES'||fU==='ENOENT'?Object['assign'](Error('Download\x20directory\x20is\x20not\x20writable'),{'code':'DOWNLOAD_DIR_NOT_WRITABLE'}):fT;}},aF=async fS=>{const gJ=gz;try{let fT=await Q['readFile'](fS,{'encoding':gJ(0x1e4)});return JSON['parse'](fT);}catch(fU){throw Error('Failed\x20to\x20read\x20JSON\x20file:\x20'+fS,{'cause':fU});}},aG=async(fS,fT)=>{const gK=gz;let fU=parse(fS)['dir'];try{let fV=await aA(fU);fU&&!fV&&await Q['mkdir'](fU),await Q['writeFile'](fS,JSON[gK(0x337)](fT,null,0x2),'utf8');}catch(fW){throw Error('Failed\x20to\x20save\x20data\x20to\x20file:\x20'+fS,{'cause':fW});}},aH={'extract':(fS,fT)=>execFileSync('tar',['-xf',fS,...fT?['-C',fT]:[]],{'stdio':'inherit'})},aI={'CHANNEL_NOT_FOUND':'EXTENSION_INSTALL_CHANNEL_NOT_FOUND','VERSION_NOT_FOUND':'EXTENSION_INSTALL_VERSION_NOT_FOUND','RELEASE_NOT_FOUND':'EXTENSION_INSTALL_RELEASE_NOT_FOUND','ASSET_NOT_FOUND':gz(0x25f),'UNSUPPORTED_SOURCE':gz(0x2c7),'UNSUPPORTED_PACKAGE_TYPE':'EXTENSION_INSTALL_UNSUPPORTED_PACKAGE_TYPE','IMPORT_INVALID':'EXTENSION_INSTALL_IMPORT_INVALID','SOURCE_NOT_FOUND':'EXTENSION_INSTALL_SOURCE_NOT_FOUND','UNKNOWN':'EXTENSION_INSTALL_UNKNOWN'},aJ=new Set(Object['values'](aI));var aK=class extends Error{['code'];['details'];['hint'];constructor(fS){super(fS['message']),this['name']='InstallExtensionError',this['code']=fS['code'],this['details']=fS['details'],this['hint']=fS['hint'];}['toPayload'](){const gL=gz;return{'code':this['code'],'message':this[gL(0x224)],'details':this['details'],'hint':this['hint']};}};const aL=(fS,fT,fU,fV)=>new aK({'code':fS,'message':fT,'details':fU,'hint':fV}),aM=fS=>{let fT=(fS?.['startsWith']('v')?fS[0x1]:fS?.[0x0])??'';return Number['isNaN'](parseInt(fT))?fS?.['split']('.')['at'](0x0)||'latest':fS?.['split']('-')['at'](0x1)?.['split']('.')['at'](0x0)||'latest';},aN=fS=>(fS['version']||fS['tag_name']||'')['replace'](/^v/,''),aO=fS=>[...new Set(fS['filter'](Boolean))],aP=fS=>({'availableVersions':aO((fS||[])['map'](fT=>aN(fT))),'availableChannels':aO((fS||[])['map'](fT=>aM(aN(fT))))}),aQ=(fS,fT,fU)=>{let fV={'source':fU,'preferredVersion':fS['preferredVersion'],'preferredChannel':fS['preferredChannel'],'appChannel':fS['appChannel'],...aP(fT)};return fS['preferredVersion']?aL(aI['VERSION_NOT_FOUND'],'Release\x20not\x20found\x20for\x20requested\x20version:\x20'+fS['preferredVersion'],fV):aL(aI['CHANNEL_NOT_FOUND'],'Release\x20not\x20found\x20for\x20requested\x20channel:\x20'+fS['preferredChannel'],fV);},aR=(fS,fT,fU)=>{const gM=gz;if(!fS?.['length'])return null;if(fT['preferredVersion'])return fS[gM(0x315)](fV=>aN(fV)===fT['preferredVersion'])||null;if(!fT['isExplicitSelection']){let fV=fS['find'](fW=>aM(aN(fW))==='latest');if(fV)return fV;}return fS['find'](fW=>aM(aN(fW))===fT['preferredChannel'])||(fT['allowFallback']&&fT['preferredChannel']!=='latest'?(B['debug']('Release\x20'+fT['preferredChannel']+'\x20not\x20found\x20for\x20'+fU+',\x20falling\x20back\x20to\x20latest\x20stable'),fS['find'](fW=>aM(aN(fW))==='latest')||(B['debug']('Latest\x20stable\x20release\x20not\x20found\x20for\x20'+fU+',\x20falling\x20back\x20to\x20latest\x20with\x20any\x20channel'),fS['at'](0x0)||null)):null);},aS=fS=>{const gN=gz;let [,fT='']=fS['split']('@'),fU=fS['replace'](fT?'@'+fT:'',''),fV=aM(h['version']),fW=!!fT;return{'name':fU,'preferredVersion':Number[gN(0x20b)](parseInt(fT[0x0]??''))?'':fT,'preferredChannel':fW?aM(fT):fV,'appChannel':fV,'isExplicitSelection':fW,'allowFallback':!fW&&fV!=='latest'};},aT=async(fS,fT)=>{const gO=gz;B['info']('Fetching\x20bundle...'),B['debug'](fS);let fU=await fetch(fS);if(!fU['ok'])throw aL(aI['ASSET_NOT_FOUND'],'Failed\x20to\x20download\x20extension\x20bundle:\x20'+fU['status']+'\x20'+fU['statusText'],{'url':fS,'status':fU['status'],'statusText':fU['statusText']});let fV=fU['headers']['get']('content-disposition')?.['split'](gO(0x2aa))[0x1]?.['split'](';')[0x0]?.[gO(0x2e0)]('\x22',''),fW=M['basename'](fS),fX=fT||fV||fW,fY=await fU['arrayBuffer'](),fZ=M['join'](j,fX);return await Q['writeFile'](fZ,Buffer['from'](fY)),await Q['stat'](fZ)['then'](g0=>{const gP=gO;B['debug']('Bundle\x20downloaded\x20('+g0['size']/0x3e8+gP(0x2d8)+fZ);})['catch'](()=>{B['error']('Bundle\x20download\x20failed:\x20can\x27t\x20find\x20output\x20file');}),fZ;},aU=async(fS,fT)=>{const gQ=gz;if(fS['startsWith'](gQ(0x32a))||fS['startsWith']('@streamyx/'))throw aL(aI['UNSUPPORTED_SOURCE'],gQ(0x232),{'source':fS});let fU=fS,fV=fS,fW=M['dirname'](fS),fX=fW!=='.'&&await Q['stat'](fW)['then'](()=>!0x0,()=>!0x1),fY=fS[gQ(0x25d)]('./')||fS['startsWith']('../')||fS['startsWith']('/')||fS['startsWith']('~')||fX,fZ=await Q['stat'](fS)['then'](()=>!0x0,()=>!0x1),g0=fS['startsWith']('https://'),g2=fS[gQ(0x25d)]('gl:')||fS['startsWith']('gitlab:'),g3=fS['startsWith']('github:')||fS['startsWith']('gh:');if(fY&&!fZ&&!g0&&!g3&&!g2)throw B['warn']('Installed\x20extension\x20not\x20found:\x20'+fS),B[gQ(0x200)]('Run\x20\x27azot\x20list\x27\x20and\x20remove\x20the\x20extension\x20from\x20the\x20list.'),aL(aI['SOURCE_NOT_FOUND'],'Installed\x20extension\x20source\x20not\x20found:\x20'+fS,{'source':fS});fS=fS['replace'](/^gl:/,'')['replace'](/^gitlab:/,'')['replace'](/^gh:/,'')['replace'](/^github:/,'');let g4=aS(fS),{name:g5}=g4;if(g0)fU=await aT(fS);else{if(g3){let [gb,gc]=g5['split']('/'),gd='https://api.github.com/repos/'+gb+'/'+gc+'/releases',ge=await fetch(gd)[gQ(0x26c)](gj=>gj['json']());if(ge?.['message']&&!Array['isArray'](ge))throw aL(aI['RELEASE_NOT_FOUND'],'GitHub\x20releases\x20request\x20failed:\x20'+ge['message'],{'source':g5,'provider':'github','apiMessage':ge['message']});let gf=Array['isArray'](ge)?ge:[],gg=aR(gf,g4,g5);if(!gg)throw g4['isExplicitSelection']?aQ(g4,gf,g5):aL(aI['RELEASE_NOT_FOUND'],'GitHub\x20release\x20not\x20found',{'source':g5,'provider':'github',...aP(gf)});let gh=gg['assets']?.['find'](gj=>gj['name']['endsWith']('.tgz')||gj['name']['endsWith']('.zip'));if(!gh)throw B['debug'](gg),aL(aI[gQ(0x319)],'GitHub\x20release\x20asset\x20not\x20found',{'source':g5,'provider':'github','releaseTag':aN(gg)});let gi=gh['browser_download_url'];fU=await aT(gi);}else{if(!fZ){let gj=fT?.['find'](gn=>gn['name']===g5),gk=gj?.['releases']||[],gl=aR(gk,g4,g5),gm=gl?.['assets']['find'](gn=>gn['name']['endsWith']('.tgz'));if(gj&&!gl&&g4['isExplicitSelection'])throw aQ(g4,gk,g5);if(gm)fU=await aT(gm['url'],gm['name']);else{let [gn,go='streamyx-extensions']=g5['split']('/')['reverse'](),gp='https://gitlab.com/api/v4/projects/'+go+'%2F'+gn+'/releases',gq=await fetch(gp)['then'](gu=>gu['json']());if(gq?.['message']&&!Array['isArray'](gq))throw aL(aI[gQ(0x33c)],'GitLab\x20releases\x20request\x20failed:\x20'+gq['message'],{'source':g5,'provider':'gitlab','apiMessage':gq['message']});let gr=Array['isArray'](gq)?gq:[],gs=aR(gr,g4,g5);if(!gs)throw g4['isExplicitSelection']?aQ(g4,gr,g5):aL(aI['RELEASE_NOT_FOUND'],'GitLab\x20release\x20not\x20found',{'source':g5,'provider':'gitlab',...aP(gr)});let gt=gs['assets']?.['links']?.['find'](gu=>gu['name']['endsWith']('.tgz'));if(!gt)throw aL(aI['ASSET_NOT_FOUND'],'GitLab\x20release\x20asset\x20not\x20found',{'source':g5,'provider':'gitlab','releaseTag':aN(gs)});fU=await aT(gt['direct_asset_url']||gt['url'],gt['name']);}}}}let g6=M['extname'](fU),g7=g6==='.zip',g8=g6==='.tgz',g9=new Set(['.js','.mjs','.cjs'])['has'](g6),ga=await Q['stat'](fU)['then'](gu=>gu['isDirectory']())['catch'](()=>!0x1);if(g9?fV=M['dirname'](fU):ga?fV=fU:(fV=fU['replace']('.tgz','')['replace']('.zip',''),await aA(fV)||await aD(fV)),g7||g8)aH['extract'](fU,fV),await aC(fU);else{if(!(g9||ga))throw aL(aI['UNSUPPORTED_PACKAGE_TYPE'],'Unsupported\x20package\x20type',{'source':fS,'extensionSource':fU,'packageType':g6||'unknown'});}return fV;},aV='__matchRules',aW=fS=>typeof fS=='object'&&!!fS&&!Array['isArray'](fS),aX=fS=>{const gR=gz;let fT=fS['trim']()['match'](/^(\*|https?):\/\/([^/]+)(\/.*)$/i);if(!fT)return null;let [,fU,fV,fW]=fT,fX=fU['toLowerCase'](),fY=fX==='*'?['http','https']:fX==='http'||fX==='https'?[fX]:null;if(!fY)return null;let fZ=fV['trim']()['toLowerCase'](),g0=!0x1,g2=[],g3=[];if(fZ==='*')g0=!0x0;else{if(fZ[gR(0x25d)]('*.')){let g6=fZ['slice'](0x1);if(!g6['startsWith']('.')||g6['length']<=0x1)return null;g3=[g6];}else{if(!fZ['includes']('*'))g2=[fZ];else return null;}}if(!fW['startsWith']('/'))return null;let g4=fW['indexOf']('*');if(g4!==-0x1&&g4!==fW['length']-0x1)return null;let g5=g4===-0x1?fW:fW['slice'](0x0,-0x1);return{'schemes':fY,'matchAnyHost':g0,'exactHosts':g2,'wildcardHostSuffixes':g3,'exactPaths':g4===-0x1?[g5]:void 0x0,'pathPrefixes':g4===-0x1?void 0x0:[g5]};},aY=fS=>{const gS=gz;if(!Array[gS(0x2c4)](fS))return;let fT=fS[gS(0x2f9)](fU=>typeof fU==gS(0x21a)&&!!fU['trim']())[gS(0x348)](aX)['filter'](fU=>!!fU);return fT['length']?fT:void 0x0;},aZ=(fS,fT)=>fT['matchAnyHost']||fT['exactHosts']['includes'](fS)||fT['wildcardHostSuffixes']['some'](fU=>fS['endsWith'](fU)),b0=(fS,fT)=>fT['exactPaths']?.['includes'](fS)||!!fT[gz(0x1ed)]?.['some'](fU=>fS['startsWith'](fU))||!fT['exactPaths']?.['length']&&!fT['pathPrefixes']?.['length'],b1=({manifest:fS,packageJson:fT,fallbackName:fU})=>{const gT=gz;let fV=aW(fT?.['config'])?fT[gT(0x328)]:null,fW=(aW(fS)?fS:null)??fV??{},fX=typeof fW['name']==gT(0x21a)&&fW[gT(0x2de)]||typeof fW[gT(0x27d)]=='string'&&fW['title']||fU,fY={...fW,'name':fX,'title':typeof fW['title']==gT(0x21a)&&fW['title']?fW['title']:fX};(typeof fY['icon']!='string'||!fY['icon'])&&delete fY['icon'],(typeof fY['tag']!='string'||!fY['tag'])&&delete fY['tag'],Array['isArray'](fY['permissions'])||delete fY[gT(0x291)],Array['isArray'](fY[gT(0x33b)])||delete fY['regions'],typeof fY['manifestVersion']!='number'&&delete fY['manifestVersion'];let fZ=aY(fW['matches']);return fZ?(fY[gT(0x203)]=Array['isArray'](fW['matches'])?fW['matches']['filter'](g0=>typeof g0==gT(0x21a)):void 0x0,Object['defineProperty'](fY,aV,{'value':fZ,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1})):delete fY['matches'],fY;},b2=async({dir:fS,packageJson:fT,fallbackName:fU})=>{let fV=join(fS,'manifest.json');return b1({'manifest':await aA(fV)?await aF(fV):null,'packageJson':fT,'fallbackName':fU});},b3=fS=>fS['manifest']?.[gz(0x2de)]||fS['manifest']?.['title']||fS['package']?.['config']?.['title']||fS['package']?.['name']||fS[gz(0x2de)]||'(unknown\x20extension)',b4=fS=>fS['manifest']?.[gz(0x283)]||fS['package']?.['config']?.['tag']||void 0x0,b5=(fS,fT)=>{let fU=fS['manifest']?.[aV];if(!Array['isArray'](fU)||!fU['length'])return!0x1;let fV=fT['protocol']['slice'](0x0,-0x1)['toLowerCase'](),fW=fT['hostname']['toLowerCase'](),fX=fT['pathname'];return fU['some'](fY=>!(fY['schemes']?.['length']&&!fY['schemes']['includes'](fV)||!aZ(fW,fY)||!b0(fX,fY)));},b6=fS=>{let fT=fS['manifest']?.[aV];return Array['isArray'](fT)&&fT['length']>0x0;},b7=fS=>fS&&'exports'in fS?fS['exports']:fS,b8=fS=>fS?.['package']?.[gz(0x2de)]||'(unknown\x20extension)',b9=fS=>{const gU=gz;let fT=b7(fS);return!fT||typeof fT!='object'?null:typeof fT['resolveEntries']=='function'?'v2':typeof fT['getMediaInfo']=='function'?'legacy-media':typeof fT['fetchContentMetadata']=='function'?gU(0x2d9):null;},ba=fS=>b9(fS)!==null,bb=fS=>{const gV=gz;let fT=b7(fS);if(!fT||typeof fT!=gV(0x230))throw Error(gV(0x2a7));return fT;},bc=async fS=>{let fT=bb(fS),fU=b8(fS);try{if(typeof fT['setup']=='function'){await fT['setup']();return;}typeof fT['init']=='function'&&await fT['init']();}catch(fV){let fW=typeof fT['setup']=='function'?'setup':'init',fX=fV instanceof Error?fV:Error(String(fV));throw B['error']('Extension\x20'+fU+'\x20'+fW+'\x20failed:\x20'+fX['message']),fX['stack']&&B['debug'](fX['stack']),fX;}},bd=async(fS,fT)=>{let fU=bb(fS),fV=b8(fS);try{if(typeof fU['auth']?.['login']=='function'){await fU['auth']['login'](fT);return;}typeof fU['login']=='function'&&await fU['login'](fT);}catch(fW){let fX=typeof fU['auth']?.['login']=='function'?'auth.login':'login',fY=fW instanceof Error?fW:Error(String(fW));throw B['error']('Extension\x20'+fV+'\x20'+fX+'\x20failed:\x20'+fY['message']),fY['stack']&&B['debug'](fY['stack']),fY;}},be=async fS=>{const gW=gz;let fT=bb(fS),fU=b8(fS);try{if(typeof fT['auth']?.[gW(0x249)]=='function'){await fT['auth']['logout']();return;}typeof fT['logout']=='function'&&await fT['logout']();}catch(fV){let fW=typeof fT['auth']?.['logout']=='function'?'auth.logout':'logout',fX=fV instanceof Error?fV:Error(String(fV));throw B['error'](gW(0x22a)+fU+'\x20'+fW+'\x20failed:\x20'+fX['message']),fX['stack']&&B['debug'](fX['stack']),fX;}},bf=async fS=>{const gX=gz;let fT=bb(fS);typeof fT['hooks']?.['beforeDownload']==gX(0x299)&&await fT['hooks']['beforeDownload']();},bg=async(fS,{skipMux:fT=!0x1}={})=>{const gY=gz;let fU=bb(fS),fV=b8(fS);if(!fT&&typeof fU['hooks']?.['afterMux']=='function')try{await fU['hooks']['afterMux']();}catch(fW){let fX=fW instanceof Error?fW:Error(String(fW));B[gY(0x280)]('Extension\x20'+fV+'\x20hooks.afterMux\x20failed:\x20'+fX['message']),fX['stack']&&B['debug'](fX['stack']);}if(typeof fU['onDownloadFinished']=='function')try{await fU['onDownloadFinished']();}catch(fY){let fZ=fY instanceof Error?fY:Error(String(fY));B['error']('Extension\x20'+fV+'\x20onDownloadFinished\x20failed:\x20'+fZ['message']),fZ[gY(0x264)]&&B['debug'](fZ[gY(0x264)]);}},bh=async(fS,{context:fT,dirname:fU,skipValidation:fV})=>{const gZ=gz;let fW=await y(fS,{'dirname':fU,'context':fT})['finally'](()=>{});if(!fW)return null;let fX=gZ(0x314)in fW['exports']?fW['exports']['default']:fW['exports'];if(!fV&&!ba(fX))throw B['error']('Incompatible\x20extension\x20interface'),aL(aI['IMPORT_INVALID'],'Incompatible\x20extension\x20interface',{'extensionPath':fS});return fW[gZ(0x246)]=fX,fW;},bi=fS=>fS['split']('/')['reverse']()[0x0]['replaceAll']('@','')['replace']('extension-','')['replace']('-extension',''),bj=async fS=>{const h0=gz;let fT=[join(fS,'package.json'),join(fS,'package','package.json')],fU;for(let g3 of fT)if(await aA(g3)){fU=g3;break;}let fV={},fW='',fX='',fY='',fZ=fS;if(fU){fZ=dirname(fU),fV=await aF(fU)||{};let g4=fV['main']||h0(0x2f3);fW=join(fZ,g4),fX=fV['name'],fY=fZ;}else{let g5=await aB(fS),g6=g5['find'](g7=>g7['name']==='index.js')||g5['find'](g7=>g7['name']==='main.js')||g5['find'](g7=>g7['name']==='service.js')||g5['find'](g7=>g7['name']==='extension.js')||g5['find'](g7=>g7[h0(0x2de)]['endsWith']('.js'));g6&&(fW=join(fS,g6['name']),fX=parse(fW)['name']);}if(!fW)throw aL(aI['IMPORT_INVALID'],'Extension\x20main\x20script\x20not\x20found:\x20'+fS,{'dir':fS});fY||=dirname(fW);let g0=bi(fX),g2=await b2({'dir':fZ,'packageJson':fV,'fallbackName':g0});return{'name':g0,'path':fW,'dir':fY,'package':fV,'manifest':g2};},bk=async(fS,fT)=>{const h1=gz;try{let fU=await bj(fS),fV=b3(fU),fW=E({'name':fU['name'],'title':fV,'dir':J});await fW['cookieStore']['import'](join(J,fU['name'],'cookies.txt'));let fX=await bh(fU['path'],{'context':fW,'dirname':fU['dir']});if(!fX)throw aL(aI['IMPORT_INVALID'],'Failed\x20to\x20load\x20extension\x20script:\x20'+fU['path'],{'source':fT,'dir':fS,'path':fU[h1(0x26d)]});return{'source':fT,'exports':fX['exports'],'context':fW,...fU};}catch(fY){throw B['error']('Error\x20importing\x20module:\x20'+fY['message']),B['debug'](fY instanceof Error?fY['stack']||fY['message']:String(fY)),fY;}},bl=f;function b(c,d){c=c-0x1de;const e=a();let f=e[c];return f;}let bm=bl;const bn=fS=>fS['replace'](/\/+$/,''),bo=()=>bn(bm),bp=(fS,fT)=>{let fU=bn(fS);return fT?fU+'/'+(fT['startsWith']('/')?fT['slice'](0x1):fT):fU;},bq=fS=>bp(bo(),fS);let br=null;async function bs(fS){const h2=gz;if(!br){B[h2(0x334)]('Public\x20key\x20not\x20found');let fZ=await bu();if(fZ)B[h2(0x334)]('Public\x20key\x20found:\x20'+fZ['slice'](0x0,0x32)+'...');else return B['error']('Public\x20key\x20not\x20found\x20in\x20response'),!0x1;if(br=await bv(fZ)['catch'](()=>null),!br)return B['error']('Public\x20key\x20import\x20failed'),!0x1;}let fT=fS['headers']['get']('X-Signature-Timestamp'),fU=fS['headers']['get']('X-Signature');if(!fT||!fU)return B['error'](h2(0x2a4)),!0x1;if(Date['now']()-parseInt(fT)>0x493e0)return!0x1;let fV=fT+':'+await fS['clone']()['text'](),fW=bw(fU),fX=new TextEncoder(),fY=crypto['subtle']['verify']({'name':h2(0x2fe),'hash':'SHA-256'},br,fW,fX['encode'](fV));return fY||(br=null),fY;}const bt=()=>atob(i);async function bu(fS='/auth/.well-known/public-key'){try{let fT=await fetch(''+bo()+fS);return fT['ok']?await fT['text']():bt();}catch(fU){return B['error'](fU['message']),bt();}}async function bv(fS){const h3=gz;let fT=bw(fS[h3(0x228)]('-----BEGIN\x20PUBLIC\x20KEY-----','')['replace']('-----END\x20PUBLIC\x20KEY-----','')['trim']());return crypto['subtle']['importKey'](h3(0x298),fT,{'name':'ECDSA','namedCurve':'P-256'},!0x0,['verify']);}function bw(fS){let fT=atob(fS),fU=new Uint8Array(fT['length']);for(let fV=0x0;fV<fT['length'];fV++)fU[fV]=fT['charCodeAt'](fV);return fU['buffer'];}const bx=fS=>createAuthClient({'baseURL':fS+'/auth','plugins':[deviceAuthorizationClient(),tributeClient()],'fetchOptions':{'retry':0x0,'onSuccess':fT=>{const h4=gz;let fU=fT[h4(0x1ea)]['headers']['get']('set-auth-token');fU&&(bJ[h4(0x2bb)]=fU,bK(bJ));},'auth':{'type':'Bearer','token':()=>bJ['accessToken']||bL()['then'](fT=>fT?.['accessToken'])},'onResponse':async fT=>await bs(fT['response'])['catch'](()=>!0x1)?(B['debug']('Response\x20verified:\x20'+fT['response']['url']),fT):(B['error']('Response\x20verification\x20failed:\x20'+fT['response']['status']+'\x20'+fT['response'][gz(0x2db)]+'\x20'+fT['response']['url']),F[gz(0x272)]('error',{'code':'SIGNATURE_VERIFICATION_FAILED'}),new Response(JSON[gz(0x337)]({'error':'SIGNATURE_VERIFICATION_FAILED','message':'Signature\x20verification\x20failed'}),{'status':0x191,'statusText':'Unauthorized'}))}});let by='',bz=bx(bo());const bA=()=>{let fS=bo();return(!bz||by!==fS)&&(by=fS,bz=bx(fS)),bz;},bB=async(fS,fT,fU={})=>{const h5=gz;let {signal:fV,timeoutMs:fW=0x2710}=fU,fX=new AbortController(),fY=()=>fX['abort'](fV?.['reason']);fV?.['addEventListener']('abort',fY,{'once':!0x0});let fZ=!0x1,g0=setTimeout(()=>{fZ=!0x0,fX['abort'](Error('Request\x20timeout'));},fW);try{let g2=await fetch(fS,{...fT,'signal':fX[h5(0x31b)]});if(!g2['ok'])throw Error('Request\x20failed:\x20'+g2['status']);return g2['json']();}catch(g3){throw fZ&&g3 instanceof DOMException&&g3[h5(0x2de)]==='AbortError'?Error('Request\x20timed\x20out\x20after\x20'+fW+'ms',{'cause':g3}):g3;}finally{clearTimeout(g0),fV?.['removeEventListener']('abort',fY);}},bC={'getExtensions':(fS,fT)=>bB(bq('extensions'),{'headers':fS?{'Authorization':'Bearer\x20'+fS}:void 0x0},{'signal':fT}),'getSubscriptions':(fS,fT)=>bB(bq('subscriptions'),{'headers':{'Authorization':'Bearer\x20'+fS}},{'signal':fT})},bD=0x12c*0x3e8,bE=0x12c*0x3e8,bF=new QueryClient({'queryCache':new QueryCache(),'defaultOptions':{'queries':{'staleTime':bD,'gcTime':bE}}}),bG={'get':fS=>bF['getQueryData'](fS),'set':(fS,fT)=>bF['setQueryData'](fS,fT),'reset':fS=>{fS?bF['removeQueries']({'queryKey':fS}):bF['clear']();},'invalidate':fS=>bF['invalidateQueries']({'queryKey':fS}),'refresh':async(fS,fT)=>(bF['invalidateQueries']({'queryKey':fS}),bH({'queryKey':fS,'queryFn':fT}))},bH=async({queryKey:fS,queryFn:fT,staleTime:fU,enabled:fV=!0x0})=>{try{let fW=bF['getQueryState'](fS),fX=fW?fW?.['isInvalidated']||!fW?.['dataUpdatedAt']&&!fW?.['errorUpdatedAt']||Date['now']()-fW['dataUpdatedAt']>(fU??bD):!0x0,fY=()=>bG['reset'](fS),fZ=()=>bG['invalidate'](fS),g0=()=>bG['refresh'](fS,fT);return fV?fW&&!fX?{'data':fW['data'],'reset':fY,'invalidate':fZ,'refresh':g0}:{'data':await bF['fetchQuery']({'queryKey':fS,'queryFn':fT,'staleTime':fU}),'reset':fY,'invalidate':fZ,'refresh':g0}:{'data':null,'reset':fY,'invalidate':fZ,'refresh':g0};}catch(g2){throw bF['removeQueries']({'queryKey':fS}),g2;}},bI=new o(join(s,'session.json')),bJ={'accessToken':'','tokenType':'','scope':'','createdAt':''},bK=async fS=>{const h6=gz;bI['setItem']('access_token',fS['access_token']),bI['setItem']('token_type',fS['token_type']||'Bearer'),bI[h6(0x2b6)]('scope',fS['scope']),bI['setItem']('created_at',new Date()['toISOString']()),bJ['accessToken']=fS['access_token'],bJ['tokenType']=fS['token_type']||'Bearer',bJ['scope']=fS['scope'],bJ['createdAt']=new Date()['toISOString']();},bL=async()=>{const h7=gz;let fS=bI['getItem']('access_token'),fT=bI['getItem'](h7(0x313)),fU=bI['getItem']('scope'),fV=bI[h7(0x2f1)]('created_at');return!fS||!fT||!fU||!fV?null:{'accessToken':fS,'tokenType':fT,'scope':fU,'createdAt':new Date(fV)};},bM=async()=>{const h8=gz;let fS=await bH({'queryKey':['session',bo()],'queryFn':()=>bA()['getSession']()});return{'session':fS['data']?.['data']?.['session'],'user':fS['data']?.[h8(0x335)]?.['user'],'error':fS[h8(0x335)]?.['error']};},bN=async()=>{const h9=gz;let {user:fS,error:fT}=await bM(),fU=await bH({'queryKey':['subscriptions',bo()],'queryFn':async()=>bA()['subscription']['list'](),'enabled':!!fS?.['id']});return{'data':fU['data']?.['data'],'error':fU[h9(0x335)]?.['error']??fT};},bO=['lowConnectionsCount','oneDevice'],bP=[gz(0x1f1),'twoDevices','proxy','decryption','customIcon','tags','parallelDownloads','userExtensions','portableBuild'],bQ=['highConnectionsCount','threeDevices','customMuxFormat','customDecrypter','customDrmClient','premiumExtensions'],bR={'basic':bO,'plus':bP,'pro':[...bO,...bP,...bQ]},bS=()=>bH({'queryKey':['lava-subscriptions',bo()],'queryFn':async()=>{const ha=gz;let fS=bJ['accessToken']||(await bL())?.['accessToken'];return fS?bC[ha(0x296)](fS):[];}}),bT=async()=>{let fS=await bN();return{'plan':(await bS())['data']?.[0x0]?.['productTitle']||fS['data']?.['find'](fT=>new Date(fT['expiresAt'])>new Date())?.['tributeSubscriptionName'],'error':fS['error']};},bU=async()=>{let {user:fS,session:fT}=await bM(),{plan:fU,error:fV}=await bT();return{'user':fS,'session':fT,'error':fV,'plan':fU,'grantedBenefits':fU?bR[fU['toLowerCase']()]??[]:[]};};var bV=a6((fS,fT)=>{const hf=gz;fT['exports']={'instagram':{'create':fU=>{let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hb=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gg=>gg);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7[hb(0x24b)],g7['ask'],g7['utils'];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7[hb(0x242)],g7['MP4'],g7['MP3'];let gb={'Referer':'https://www.instagram.com/'},gc={'X-IG-App-ID':'936619743392459','User-Agent':'Mozilla/5.0\x20(Windows\x20NT\x2010.0;\x20Win64;\x20x64)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/107.0.0.0\x20Safari/537.36'},gd=async gg=>{const hc=hb;let gh=new URLSearchParams({'doc_id':hc(0x23d),'variables':JSON['stringify']({'shortcode':gg,'child_comment_count':0x3,'fetch_comment_count':0x28,'parent_comment_count':0x18,'has_threaded_comments':!0x0})});try{let gi=await fX('https://www.instagram.com/graphql/query/?'+gh['toString'](),{'headers':gc});return gi['ok']?(await gi['json']())['data']?.['xdt_shortcode_media']??null:(g0['error'](hc(0x1f6)+gi['status']),null);}catch(gj){return g0['error']('Error\x20during\x20GraphQL\x20fetch:',gj),null;}},ge=async gg=>{const hd=hb;try{let gh=await fX('https://www.instagram.com/p/'+gg+'/embed/captioned/',{'headers':{'User-Agent':gc[hd(0x2da)]}});if(!gh['ok'])return null;let gi=(await gh['text']())['match'](/window\.__additionalDataLoaded\('extra',\s*({.+?})\s*\);/);return gi?.[0x1]?JSON['parse'](gi[0x1])['shortcode_media']??null:null;}catch(gj){return g0['error']('Error\x20during\x20embed\x20page\x20fetch:',gj),null;}},gf=gg=>{let gh=gg['edge_media_to_caption']?.['edges']?.[0x0]?.['node']?.['text']||'Instagram\x20Post',gi=[],gj=gl=>{if(!gl)return;let gm=gl['is_video']&&gl['video_url']?gl['video_url']:gl['display_url'];gm&&gi['push']({'title':gh,'input':new g9({'source':new ga(gm,{'requestInit':{'headers':gb}})})});},gk=gg['edge_sidecar_to_children']?.['edges'];if(gk?.['length']){for(let gl of gk)gj(gl['node']);}else gj(gg);return gi;};fV['exports']=g8({async 'resolveEntries'(gg){const he=hb;let gh=new URLPattern({'pathname':'/:type(p|reel|tv|reels|videos)/:shortcode{/*}?','baseURL':new URL(gg)['origin']})['exec'](gg)?.[he(0x34d)]['groups']['shortcode'];if(!gh)return g0['error']('Could\x20not\x20extract\x20a\x20valid\x20Instagram\x20shortcode\x20from\x20the\x20URL'),g0[he(0x334)](gg),[];try{let gi=await gd(gh);return gi||=(g0['warn']('GraphQL\x20method\x20failed.\x20Falling\x20back\x20to\x20embed\x20page\x20scraping.'),await ge(gh)),gi?gf(gi):(g0['error']('All\x20extraction\x20methods\x20failed.\x20The\x20post\x20may\x20be\x20private,\x20deleted,\x20or\x20require\x20a\x20login.'),[]);}catch(gj){return g0['error']('A\x20critical\x20error\x20occurred\x20while\x20fetching\x20Instagram\x20metadata:',gj),[];}}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'Instagram','icon':'https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/41/91/13/419113d2-6246-c557-669e-0f0a5c62bcc5/Prod-0-0-1x_U007epad-0-1-0-sRGB-85-220.png/460x0w.webp','matches':['https://instagram.com/*',hf(0x345)]},'pkg':{'name':'instagram','version':'0.0.1','private':!0x0,'keywords':['social-networks'],'homepage':'https://instagram.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'instagram.ts'}},'ntv':{'create':fU=>{const hk=hf;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hg=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gg=>gg);let g8=g7[hg(0x2d1)];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7['ask'],g7['utils'];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7[hg(0x26a)],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7['MP4'],g7['MP3'];let gb=(gg,gh,gi)=>gg['split'](gh)[0x1]?.['split'](gi)[0x0],gc=(gg,gh)=>{const hh=hg;let gi=gb(gg,'<'+gh+'>','</'+gh+'>')?.['trim']();if(!gi)return;let gj=gi['match'](/<!\[CDATA\[(.*?)\]\]>/s);return gj?.[0x1]?gj[0x1][hh(0x29e)]():gi['split']('DATA[')[0x1]?.['split'](']')[0x0]?.[hh(0x29e)]()||gi;},gd=async(gg,gh)=>{let gi=await fX(gg);return gi['ok']?await gi['text']():(g0['error']('Failed\x20to\x20fetch\x20'+gh+'.\x20Status:\x20'+gi['status']+'\x20'+gi['statusText']),null);},ge=async(gg,gh,gi)=>{const hi=hg;let gj=new URL(gg)['pathname'],gk=new Set();for(let gm of gh[hi(0x268)]('href=\x22/serial')){if(!gm['startsWith']('/'))continue;let gn=gm['split']('\x22')[0x0];!gn||gn['length']<=0x1||gn['includes']('/issues/')||gn['includes']('/about/')||gn['split']('/')['length']<=0x2||gk['add'](gg['replace'](gj,'/serial'+gn));}let gl=[];for(let go of gk)gl['push'](...await gf(go,gi));return gl;},gf=async(gg,gh=new Set())=>{const hj=hg;if(gh['has'](gg))return[];gh['add'](gg);let gi=await gd(gg,hj(0x266));if(!gi)return[];let gj=gb(gi,'<meta\x20property=\x22ya:ovs:feed_url\x22\x20content=\x22','\x22>')??gb(gi,'<meta\x20property=\x22ya:ovs:feed_url\x22\x20content=\x22','\x22\x20/>');if(!gj)return new URL(gg)['pathname']['includes']('/serial')?ge(gg,gi,gh):(g0['error']('Could\x20not\x20find\x20video\x20link\x20in\x20the\x20page.'),[]);let gk=gj[hj(0x268)]('video/')[0x1]?.['split']('/')[0x0];if(!gk)return g0['error']('Could\x20not\x20parse\x20NTV\x20video\x20id.'),[];let gl=await gd('https://www.ntv.ru/vi'+gk+'/','NTV\x20XML\x20metadata');if(!gl)return[];let gm=gc(gl,'dash')||gc(gl,'hls'),gn=gc(gl,'file')||gc(gl,'video'),go=gc(gl,'hifile')||gc(gl,'hd_video')||gm||gn;if(!go)return g0['error']('Could\x20not\x20resolve\x20NTV\x20media\x20URL.'),[];let gp=gb(gl,'<embed_tag>','</embed_tag>')||'NTV',gq=gb(gi,'\x22name\x22:\x22','\x22'),gr=gq?.['includes']('серия')?gq['split']('-')[0x0]:void 0x0,gs=gr?parseInt(gr,0xa):void 0x0,gt=gb(gl,'<subtitles>',hj(0x2a9)),gu=gt?'https://www.ntv.ru'+gt:void 0x0;gu&&g0['debug']('Subtitles:\x20'+gu);let gv=new g9({'source':new ga(go)});return gu&&gv[hj(0x1e3)](new ga(gu),{'languageCode':'ru','name':hj(0x2b2)}),[{'type':gs?'episode':'video','title':gp,'season':gs?0x1:void 0x0,'episode':gs,'input':gv}];};fV['exports']=g8({'resolveEntries'(gg){return gf(gg,new Set());}});})(fU[hk(0x2e5)],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'НТВ','icon':'https://static.ntv.ru/static/images/logo.png','matches':['https://ntv.ru/*','https://*.ntv.ru/*']},'pkg':{'name':'ntv','version':'0.0.9','private':!0x0,'keywords':['tv-channels'],'homepage':'https://www.ntv.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':hf(0x341)}},'rbc':{'create':fU=>{const hn=hf;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hl=b;let g7=fW??Streamyx??{};g7&&(g7[hl(0x2d1)]||=gb=>gb);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7['ask'],g7['utils'];let g9=g7['Input'],ga=g7[hl(0x284)];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7['MP4'],g7['MP3'],fV['exports']=g8({async 'resolveEntries'(gb){const hm=hl;let gc=await fX(gb);if(!gc['ok'])throw Error(hm(0x2d0)+gc['status']+'\x20'+gc['statusText']);let gd=(await gc['text']())['match'](/(?:https?:)?\/\/[^\s"'<>]+\.m3u8(?:\?[^\s"'<>]*)?/i)?.[0x0];if(!gd)throw Error('Could\x20not\x20find\x20RBC\x20playlist\x20URL.');return[{'type':'video','input':new g9({'source':new ga(gd['startsWith']('//')?'https:'+gd:gd)})}];}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU[hn(0x2dc)],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'РБК','icon':'https://static.rustore.ru/imgproxy/A-G-s2Q1x2iqq3qHCAo66-nllrtlqEr7XNU_JKXt4mQ/preset:web_app_icon_160/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS80MGViMWY3MS1kMDkzLTQ2NDMtOTkyNi0xZWM0ZjkwNzViMTQ=.webp','matches':['https://rbc.ru/*','https://*.rbc.ru/*']},'pkg':{'name':'rbc','version':'0.0.2','private':!0x0,'keywords':['news'],'homepage':'https://rbc.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':hf(0x260),'email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'rbc.ts'}},'rutube':{'create':fU=>{const hs=hf;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const ho=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=ge=>ge);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7[ho(0x212)],g7['notify'],g7['confirm'],g7['ask'],g7['utils'];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7['MP4'],g7[ho(0x261)];let gb=['/video/:id{/}?','/play/embed/:id{/}?','/shorts/:id{/}?','/yappy/:yappyId{/}?','/video/private/:id{/}?'],gc=ge=>{const hp=ho;let gf={'yappyId':'','id':'','key':''};gf['key']=new URL(ge)['searchParams'][hp(0x285)]('p')??'';for(let gg of gb){let gh=new URLPattern(gg,'https://rutube.ru')[hp(0x2e9)](ge);gh&&(Object['assign'](gf,gh['pathname']['groups']),Object['assign'](gf,gh[hp(0x31e)]['groups']));}return gf;},gd=async ge=>{const hq=ho;let gf=(await fX('https://rutube.ru/pangolin/api/web/yappy/yappypage/?client=wdp&videoId='+ge+'&page=1&page_size=15')['then'](gg=>gg[hq(0x1e5)]())['catch'](()=>null))?.['results']?.['find'](gg=>String(gg['id'])===ge)?.['link'];return gf?[{'type':'video','title':'rutube_yappy_'+ge,'input':new g9({'source':new ga(gf)})}]:(g0['error']('ErrorEmptyDownload'),[]);};fV['exports']=g8({async 'resolveEntries'(ge){const hr=ho;let gf=gc(ge);if(gf['yappyId'])return gd(gf['yappyId']);if(!gf['id'])return g0['error']('Could\x20not\x20extract\x20Rutube\x20video\x20id'),[];let gg=new URL('https://rutube.ru/api/play/options/'+gf['id']+'/?no_404=true&referer&pver=v2');gf['key']&&gg['searchParams']['set']('p',gf[hr(0x338)]);let gh=await fX(gg)['then'](gi=>gi['json']())['catch'](gi=>(gi instanceof Error&&g0[hr(0x334)](gi['message']),null));return gh?gh['detail']||!gh['video_balancer']?.['m3u8']?(g0['error']('Play\x20info\x20is\x20empty'),[]):gh['live_streams']?.['hls']?(g0['error'](hr(0x295)),[]):[{'type':'video','title':gh['title']?.['trim']()||'rutube_'+gf['id'],'input':new g9({'source':new ga(gh['video_balancer']['m3u8'])})}]:(g0['error'](hr(0x236)),[]);}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU[hs(0x24c)]),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'RUTUBE','icon':'https://static.rustore.ru/imgproxy/vcyBc0LG-3ybXcGs_-_OJXH9ULjoegHlLs-DacemG08/preset:app_card_icon/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS9hcGsvMjQ2MjA3L2NvbnRlbnQvSUNPTi9hNTZhZWJlMy01NjVhLTRiZjYtOTQyZC0xZjE0OTk0YjlhNmUucG5n.webp','matches':['https://rutube.ru/*','https://*.rutube.ru/*']},'pkg':{'name':'rutube','version':'0.0.13','private':!0x0,'keywords':['video-hostings'],'homepage':'https://rutube.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'rutube.ts'}},'soundcloud':{'create':fU=>{const hw=hf;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const ht=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gf=>gf);let g8=g7[ht(0x2d1)];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7['ask'];let g9=g7['utils'],ga=g7[ht(0x329)],gb=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7[ht(0x242)],g7['MP4'],g7['MP3'];let gc={'version':'','id':''},gd=async()=>{const hu=ht;try{let gf=await fX('https://soundcloud.com/')['then'](gi=>gi['text']())[hu(0x208)](gi=>{let gj=gi instanceof Error&&gi['cause']!=null?String(gi['cause']):'';return gi instanceof Error&&gj['includes']('ECONNRESET')&&g0['warn']('Soundcloud\x20may\x20be\x20blocked\x20in\x20your\x20region.\x20Use\x20proxy\x20or\x20VPN\x20to\x20bypass\x20restrictions.'),'';}),gg=gf['match'](/window\.__sc_version="([0-9]{10})"/)?.[0x1];if(gg&&gc['version']===gg)return gc['id'];let gh='';for(let gi of gf['matchAll'](/<script.+src="(.+)">/g)){let gj=gi[0x1];if(!gj?.[hu(0x25d)](hu(0x279)))continue;let gk=(await fX(gj)['then'](gl=>gl[hu(0x21e)]())['catch'](()=>''))['match'](/\("client_id=[A-Za-z0-9]{32}"\)/)?.[0x0]['match'](/[A-Za-z0-9]{32}/)?.[0x0];if(gk){gh=gk;break;}}return gg&&(gc['version']=gg,gc['id']=gh),gh;}catch{return'';}},ge=gf=>gf[ht(0x1f0)]?.['some'](gg=>gg==='aac'||gg===ht(0x30c))??!0x1;fV[ht(0x246)]=g8({async 'resolveEntries'(gf,gg){const hv=ht;let {author:gh,song:gi,accessKey:gj,shortLink:gk}=g9['execUrlPatterns'](gf,[':author/:song/s-:accessKey',hv(0x258),':shortLink'],['https://soundcloud.com','https://on.soundcloud.com'])['pathname'],gl=await gd();if(!gl)throw Error('No\x20client\x20ID');let gm;if(new URL(gf)['hostname']===hv(0x22c)&&gk&&(gm=await fX('https://on.soundcloud.com/'+gk+'/',{'redirect':'manual'})['then'](gt=>{let gu=gt['headers']['get']('location');if(gt['status']===0x12e&&gu?.['startsWith']('https://soundcloud.com/'))return gu['split']('?',0x1)[0x0];})['catch'](()=>void 0x0)),!gm&&gh&&gi&&(gm=hv(0x323)+gh+'/'+gi+(gj?'/s-'+gj:'')),!gm)throw Error('Could\x20not\x20fetch');let gn=await fX('https://api-v2.soundcloud.com/resolve?url='+gm+'&client_id='+gl)['then'](gt=>gt['status']===0xc8?gt['json']():null)['catch'](()=>null);if(!gn)throw Error('Could\x20not\x20fetch');let go=gn['media']?.[hv(0x214)];if(!go?.['length'])throw Error('Empty\x20download');let gp=go[hv(0x315)](gt=>gt['preset']==='opus_0_0'),gq=go['find'](gt=>gt['preset']==='mp3_0_0');if(gq&&(ge(gg)||!gp)&&(gp=gq),!gp)throw Error('Empty\x20download');let gr=''+gp['url']+(gp['url']['includes']('?')?'&':'?')+'client_id='+gl+'&track_authorization='+gn['track_authorization'];if(!gr['startsWith']('https://api-v2.soundcloud.com/media/soundcloud:tracks:'))throw Error(hv(0x2ce));let gs=await fX(gr)['then'](async gt=>(await gt['json']())['url']??'')['catch'](()=>'');if(!gs)throw Error('Could\x20not\x20fetch');return[{'type':'audio','title':gn[hv(0x27d)]['trim'](),'author':gn['user']['username'][hv(0x29e)](),'input':new ga({'source':new gb(gs)})}];}});})(fU['Azot'],fU['fetch'],fU[hw(0x2dd)],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU[hw(0x281)],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'SoundCloud','icon':'https://play-lh.googleusercontent.com/JSSeB3XQtb9sHD5FWTqVM4AksY_Kg2q20eExenxGqPJZdn2uVQxi8eoHkP5MA-IR4w=w480-h960-rw','matches':['https://soundcloud.com/*',hf(0x256)]},'pkg':{'name':'soundcloud','version':'0.0.6','private':!0x0,'keywords':['music'],'homepage':'https://soundcloud.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'soundcloud.ts'}},'tiktok':{'create':fU=>{const hy=hf;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hx=b;let g7=fW??Streamyx??{};g7&&(g7[hx(0x2d1)]||=gb=>gb);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7[hx(0x2c9)],g7['utils'];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7[hx(0x340)],g7['HLS'],g7['HLS_FORMATS'],g7['MP4'],g7['MP3'],fV['exports']=g8({async 'resolveEntries'(gb){let gc=await fX(gb);if(!gc['ok'])return g0['error']('Failed\x20to\x20fetch\x20TikTok\x20page.\x20Status:\x20'+gc['status']),[];let gd=(await gc['text']())['split']('<script\x20id=\x22__UNIVERSAL_DATA_FOR_REHYDRATION__\x22\x20type=\x22application/json\x22>')[0x1]?.['split']('</script>')[0x0];if(!gd)return g0['error']('Could\x20not\x20find\x20target\x20script\x20tag.\x20TikTok\x20might\x20have\x20updated\x20their\x20page\x20structure.'),[];let ge;try{ge=JSON['parse'](gd);}catch(gi){return g0['error']('Failed\x20to\x20parse\x20TikTok\x20page\x20JSON',gi,{'url':gb}),[];}let gf=ge['__DEFAULT_SCOPE__']?.['webapp.video-detail'],gg=gf?.['itemInfo']?.['itemStruct'];if(!gg)return g0['error']('Could\x20not\x20find\x20video\x20data\x20in\x20the\x20JSON\x20payload.\x20The\x20content\x20might\x20be\x20unavailable\x20or\x20the\x20structure\x20has\x20changed.'),gf?.['statusMsg']&&g0['error']('Error\x20'+gf['statusCode']+':\x20'+gf['statusMsg']),[];let gh=gg['video']?.['playAddr'];return gh?[{'type':'video','title':gg['desc']||'TikTok\x20Video','input':new g9({'source':new ga(gh,{'requestInit':{'headers':{'Referer':'https://www.tiktok.com/','Cookie':g4['cookie']}}})})}]:(g0['error']('Could\x20not\x20find\x20a\x20video\x20URL\x20(playAddr)\x20in\x20the\x20JSON\x20payload.'),[]);}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU[hy(0x25c)],fU['document'],fU['navigator'],fU[hy(0x24c)]),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'TikTok','tag':'TT','icon':'https://play-lh.googleusercontent.com/LdBITldj-tJxqLm-CsWSbnt4BMo2gk53cgM7mWIL-zn44m1ywLyQgxRsHKqp8r0qceXs=w480-h960-rw','permissions':[],'matches':['https://tiktok.com/*','https://*.tiktok.com/*']},'pkg':{'name':'tiktok','version':'0.0.2','private':!0x0,'keywords':['social-networks'],'homepage':'https://www.tiktok.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':hf(0x302)}],'type':'module','main':'tiktok.ts'}},'virtualroom':{'create':fU=>{const hB=hf;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hz=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gb=>gb);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7['ask'],g7['utils'];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7['MP4'],g7[hz(0x261)],fV['exports']=g8({async 'resolveEntries'(gb){const hA=hz;let gc=new URL(gb)['searchParams']['get']('recordId');if(!gc)return g0['error']('Could\x20not\x20extract\x20VirtualRoom\x20recordId.'),[];let gd=await fX('https://mv1.virtualroom.ru/vr/player/records/'+gc+'/info')['then'](gg=>gg['ok']?gg['json']():null)[hA(0x208)](()=>null),ge=await fX('https://mv1.virtualroom.ru/vr/player/records/'+gc+'/events')['then'](gg=>gg['ok']?gg['json']():null)['catch'](()=>null),gf=gd?.['data']?.['roomParameters']?.[hA(0x2de)]??'VirtualRoom';return(ge?.['data']?.['translations']??[])['filter'](gg=>!!gg['url'])['map'](gg=>({'title':[gf,gg['type'],gg['source'],gg['start']][hA(0x2f9)](Boolean)['join']('\x20'),'input':new g9({'source':new ga(gg['url'])})}));}});})(fU['Azot'],fU['fetch'],fU[hB(0x2dd)],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'VirtualRoom','icon':hf(0x2b0),'matches':['https://virtualroom.ru/*','https://*.virtualroom.ru/*']},'pkg':{'name':'virtualroom','version':'0.0.7','private':!0x0,'keywords':[hf(0x26e)],'homepage':'https://virtualroom.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'virtualroom.ts'}},'vk':{'create':fU=>{const hE=hf;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hC=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gf=>gf);let g8=g7[hC(0x2d1)];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7[hC(0x2c9)],g7['utils'];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7[hC(0x2f0)],g7['MP3'];let gb=['2160','1440','1080','720','480','360','240','144'],gc=gf=>{let gg=gf['match'](/video-(\d+)_(\d+)/);return gg?{'ownerId':gg[0x1],'videoId':gg[0x2]}:null;},gd=gf=>{if(!gf)return null;for(let gg of gf)if(Array['isArray'](gg)){for(let gh of gg)if(gh&&typeof gh=='object'&&'player'in gh)return gh;}return null;},ge=(gf,gg)=>{let gh=gg['videoQuality']?.['replace']('p','')['trim'](),gi=gb['filter'](gj=>!!gf['url'+gj]);return gi['length']?gh&&gi['includes'](gh)?gh:gi[0x0]:null;};fV['exports']=g8({async 'resolveEntries'(gf,gg){const hD=hC;let gh=gc(gf);if(!gh)return g0[hD(0x280)]('Could\x20not\x20extract\x20VK\x20video\x20identifiers'),[];let gi=await fX('https://vkvideo.ru/al_video.php?act=show',{'method':'POST','headers':{'content-type':'application/x-www-form-urlencoded;\x20charset=utf-8','accept':hD(0x1e7),'accept-language':'ru-RU,ru;q=0.9','sec-ch-ua':'\x22Chromium\x22;v=\x22130\x22,\x20\x22Google\x20Chrome\x22;v=\x22130\x22,\x20\x22Not?A_Brand\x22;v=\x2299\x22','sec-ch-ua-mobile':'?0','sec-ch-ua-platform':'\x22macOS\x22','sec-fetch-dest':'empty','sec-fetch-mode':'cors','sec-fetch-site':'same-origin','x-requested-with':'XMLHttpRequest','Referer':gf,'Referrer-Policy':'strict-origin-when-cross-origin'},'body':new URLSearchParams({'al':'1','autoplay':'1','claim':'','force_no_repeat':'true','is_video_page':hD(0x2e2),'list':'','module':'direct','t':'','video':'-'+gh['ownerId']+'_'+gh['videoId']})[hD(0x2f8)]()});if(!gi['ok'])throw Error('VK\x20request\x20failed:\x20'+gi['status']+'\x20'+gi['statusText']);let gj=gd((await gi['json']())['payload']),gk=gj?.['player']?.['params'],gl=gk&&gk['length']>0x0?gk[0x0]:void 0x0;if(!gj||!gl)return g0[hD(0x280)]('Could\x20not\x20find\x20VK\x20player\x20payload'),[];if(gj['mvData']?.[hD(0x27a)]===0x1||gj[hD(0x31d)]?.['is_active_live']==='1')return g0['error']('Live\x20videos\x20are\x20not\x20supported'),[];let gm=ge(gl,gg),gn=gm?gl['url'+gm]:void 0x0,go=gl['dash_sep']||gn;return go?[{'type':'video','title':[gl[hD(0x247)]?.['trim'](),gl['md_author']?.['trim']()]['filter'](Boolean)['join']('\x20'),'input':new g9({'source':new ga(go,{'requestInit':{'headers':{'Referer':gf,'Cookie':g4['cookie']}}})})}]:(g0['error']('Could\x20not\x20find\x20video\x20URL'),[]);}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU[hE(0x212)],fU['alert'],fU[hE(0x278)],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'VK','icon':hf(0x2ff),'matches':[hf(0x2a3),hf(0x26f),'https://vkvideo.ru/*','https://*.vkvideo.ru/*']},'pkg':{'name':'vk','version':'0.0.8','private':!0x0,'keywords':['video-hostings'],'homepage':'https://vkvideo.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':hf(0x2f4),'url':'https://github.com/vitalygashkov'}],'type':'module','main':'vk.ts'}},'weibo':{'create':fU=>{const hH=hf;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hF=b;let g7=fW??Streamyx??{};g7&&(g7[hF(0x2d1)]||=gc=>gc);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7['ask'];let g9=g7['utils'],ga=g7[hF(0x329)],gb=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7['MP4'],g7['MP3'],fV['exports']=g8({async 'resolveEntries'(gc){const hG=hF;let gd=g9['execUrlPatterns'](gc,['/:userId(\x5cd+)/:bid','/detail/:mid'],['https://weibo.com/','https://m.weibo.cn']),ge=gd['pathname']['bid']||gd['pathname']['mid'];if(!ge)return[];let gf=await fX('https://m.weibo.cn/statuses/show?id='+ge,{'credentials':'include','referrer':'https://m.weibo.cn/status/'+(gd['pathname'][hG(0x308)]??ge)+'?jumpfrom=weibocom','method':'GET','mode':'cors'})['then'](gj=>gj['json']())['catch'](()=>null);if(!gf?.['data'])return g0['error']('Could\x20not\x20resolve\x20Weibo\x20post\x20metadata'),[];let gg=[],gh=gf['data']['pics'],gi=gf['data']['page_info'];if(gh?.['length']){for(let gj of gh['filter'](gk=>gk['type']==='video'||gk['type']==='livephoto'))gj['videoSrc']&&gg['push']({'type':'video','title':gj['pid'],'input':new ga({'source':new gb(gj['videoSrc'])})});}else{if(gi?.['type']==='video'){let gk=Object[hG(0x263)](gi['urls']??{})[0x0],gl=gi['media_info']?.['stream_url_hd']||gi['media_info']?.['stream_url'],gm=gk||gl;gm&&gg['push']({'type':'video','title':gi['title']||gi['page_title'],'input':new ga({'source':new gb(gm)})});}}return gg;}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU[hH(0x212)],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'Weibo','icon':'https://play-lh.googleusercontent.com/TTKq2trnzgtoyM0jc1pyrrmXtA_Yd3A2hxubZtDahdZStYf4GPANZa-wjDb1ELHrGqh_=w480-h960-rw','matches':['https://weibo.com/*','https://*.weibo.com/*','https://weibo.cn/*',hf(0x1fc)]},'pkg':{'name':'weibo','version':'0.0.6','private':!0x0,'keywords':['social-networks'],'homepage':'https://weibo.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':hf(0x260),'email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'weibo.ts'}}};}),bW=a8(bV(),0x1);const bX=fS=>({'name':fS['name'],'source':fS['source'],'dir':fS['dir'],'path':fS['path'],'package':fS['package'],'manifest':fS['manifest'],'installedAt':fS['installedAt']||new Date()['toISOString']()});var bY=class gw extends S{['extensions']=new Map();[gz(0x1e9)];['indexPath'];['infoList']=[];constructor({dirs:fS,indexPath:fT}={}){super(),this['extensionDirs']=fS??[process['cwd']()],this['indexPath']=fT??L['join'](process['cwd'](),'index.json');}async['init'](){return await this['ensureValidIndexPath'](),await this['loadInfo'](),this;}async['loadInfo'](){const hI=gz;return this[hI(0x28c)]=await aF(this['indexPath'])['catch'](()=>[]),this['infoList'];}async['saveInfo'](){return await this['ensureValidIndexPath'](),await aG(this['indexPath'],this['infoList']);}async['ensureValidIndexPath'](){(await P['stat'](this['indexPath'])['catch'](()=>null))?.['isDirectory']()&&(B['warn']('Invalid\x20extensions\x20index\x20path\x20repaired:\x20'+this['indexPath']),await aC(this['indexPath']),await P['writeFile'](this['indexPath'],'[]','utf8'));}static async['getAvailableExtensions'](){try{return(await bC['getExtensions'](bJ['accessToken'],AbortSignal['timeout'](0x1f40)))['data'];}catch(fS){return B['warn']('Failed\x20to\x20fetch\x20extensions\x20catalog:\x20'+(fS instanceof Error?fS['message']:String(fS))),[];}}async['discover'](){const hJ=gz;for(let fS of this['extensionDirs']){B['debug']('Loading\x20extensions\x20from\x20'+fS);let fT=await P['readdir'](fS,{'withFileTypes':!0x0})['catch'](()=>[]);for(let fU of fT)if(fU['isDirectory']()){let fV=L['join'](fS,fU['name']);if(await P['readdir'](fV)['then'](fW=>fW['filter'](fX=>!fX['startsWith']('.')))['then'](fW=>!fW['length']))continue;await this['loadExtension'](fV);}}for(let fW of this['infoList'])this['extensionDirs']['some'](fX=>fW[hJ(0x332)]?.['includes'](fX))||!fW['dir']||(B['debug']('Loading\x20dev\x20extension\x20from\x20'+fW['dir']),await this['loadExtension'](fW['dir']));}async #e(fS,fT){const fU=await P['readFile'](fS,'utf8'),{Azot:fV,fetch:fW,console:fX,localStorage:fY,cookieStore:fZ,window:g0,document:g2,navigator:g3}=fT,g4={'exports':{}};eval('(()\x20=>\x20{'+fU+'})();');const g5=g4['exports'];return{'exports':g5,'context':fT};}async['prepareContext'](fS,fT){let fU=E({'name':fS,'dir':J,'title':fT});return await fU['cookieStore']['import'](L['join'](J,fS,'cookies.txt')),fU;}async['loadScript'](fS,fT){const hK=gz;let fU=fT['name'],fV=b3(fT),fW=await this['prepareContext'](fU,fV),fX=await y(fS,{'dirname':fT[hK(0x332)],'context':fW});if(fX)return fX['exports']='default'in fX[hK(0x246)]?fX['exports'][hK(0x314)]:fX['exports'],fX;}async['loadCoreExtensions'](){const hL=gz;let fS=Object['keys'](bW['default']);B['debug']('Loading\x20'+fS['length']+'\x20built-in\x20extensions:\x20'+fS[hL(0x333)](',\x20'));for(let fT of Object['values'](bW['default'])){let fU=fT['pkg']['name'],fV=b1({'manifest':fT['manifest'],'packageJson':fT[hL(0x2b7)],'fallbackName':fU}),fW=fV[hL(0x2de)];try{let fX=await this['prepareContext'](fU,fW),fY={'exports':fT['create'](fX),'package':fT['pkg'],'manifest':fV,'context':fX};this['validate'](fY),this['extensions']['set'](fU,fY),this['emit'](hL(0x304),fU);}catch(fZ){B['debug'](fZ instanceof Error?fZ['message']:String(fZ)),this['emit']('error',fZ,fU);}}}async['loadExtension'](fS){const hM=gz;try{B['debug']('Loading\x20extension\x20from\x20'+fS);let fT=await bj(fS)['catch'](fW=>B['error'](fW));if(!fT)return;fT[hM(0x1e1)]['dir']=fT['dir'];let fU=await this['loadScript'](fT['path'],fT);if(!fU)return;let fV={'package':fT['package'],'manifest':fT['manifest'],'exports':fU['exports'],'context':fU['context']};this['validate'](fV),this['extensions']['set'](fT['package']['name'],fV),this['emit']('loaded',fT['package']['name']);}catch(fW){this['emit']('error',fW,fS);}}['validate'](fS){if(typeof fS!='object'||!fS||!ba(fS['exports']))throw Error('Invalid\x20extension\x20interface:\x20'+fS['package']['name']);}['getExtension'](fS){const hN=gz;return this['extensions']['get'](fS)??Array['from'](this['extensions'][hN(0x263)]())['find'](fT=>fT['package']['name']===fS)??null;}async['getExtensionForUrl'](fS){const hO=gz;let fT;try{fT=new URL(fS);}catch(fU){return B['debug']('Invalid\x20extension\x20URL:\x20'+fS),B[hO(0x334)](fU instanceof Error?fU['message']:String(fU)),null;}for(let fV of this['extensions']['values']()){let fW=null,fX=fV['exports']['canHandle'],fY=fT['hostname']['includes'](fV['package'][hO(0x2de)]);if(fW=b6(fV)?b5(fV,fT):typeof fX=='function'?await fX(fS):typeof fX=='string'?new URLPattern(fX)['test'](fS):fY,fW)return fV;}return null;}async['install'](fS){const hP=gz;let fT=await gw['getAvailableExtensions'](),fU=[];for(let fV of fS){let fW=await stat(fV)['then'](fZ=>fZ['isDirectory']())['catch'](()=>!0x1)?fV:await aU(fV,fT);if(!fW)throw aL(aI['SOURCE_NOT_FOUND'],'Extension\x20source\x20not\x20found:\x20'+fV,{'source':fV});let fX=await bk(fW,fV);if(!fX)throw aL(aI['IMPORT_INVALID'],'Extension\x20import\x20failed:\x20'+fV,{'source':fV,'dir':fW});fU['push'](fX);let fY=this['infoList']['find'](({name:fZ})=>fZ===fX['name']);if(fY){let fZ=fY['source'];fZ!==fX[hP(0x301)]&&await aC(fZ);let g0=fY['dir']?this.#t(fY['dir']):null,g2=fX[hP(0x332)]?this.#t(fX[hP(0x332)]):null;g0&&g0!==g2&&await aC(g0),fY[hP(0x27e)]=new Date()['toISOString'](),Object['assign'](fY,bX(fX)),B['info']('Extension\x20'+fX['name']+hP(0x216));}else this['infoList']['push'](bX(fX)),B[hP(0x34f)]('Extension\x20'+fX['name']+'\x20added');}if(await this['saveInfo'](),fU['length']){for(let g3 of fU)this['extensions']['set'](g3['name'],g3);}}#t(fS){let fT=L['parse'](fS);return fT['dir']===j?fS:fT['dir'];}async['uninstall'](fS){const hQ=gz;for(let fT of fS){let fU=this['infoList']['find'](fX=>fX['name']===fT);if(!fU){B['error']('Extension\x20'+fT+'\x20not\x20found');return;}let fV=fU['dir']??'',fW=fV?.['includes'](j);await aA(fV)?(fW&&await aC(this.#t(fV)),this['infoList']=this['infoList']['filter'](fX=>fX['name']!==fT),B['info']('Extension\x20'+fT+'\x20removed'),this[hQ(0x207)][hQ(0x209)](fT)):B['warn']('Extension\x20'+fT+'\x20directory\x20not\x20found:\x20'+fV);}await this['saveInfo']();}async['importCookies'](fS,fT){let fU=this['getExtension'](fS);if(!fU)throw Error('Extension\x20'+fS+'\x20not\x20found');return await fU['context']['cookieStore']['import'](fT,{'removeSource':!0x1});}async['login'](fS,fT={}){let fU=this['getExtension'](fS);fU&&await bd(fU,fT);}async['logout'](fS){for(let fT of fS){let fU=this['getExtension'](fT);if(!fU)return;B['info']('Logging\x20out...'),await be(fU),B['debug']('Clearing\x20localStorage...'),fU['context']['localStorage']['clear'](),B['debug']('Clearing\x20cookies\x20store...');let fV=await fU['context']['cookieStore']['getAll']();for(let fW of fV)await fU['context']['cookieStore']['delete'](fW);B['info']('Logged\x20out\x20from\x20extension\x20'+fT);}}['list'](){return Array['from'](this['extensions']['values']())['map'](fS=>({'name':fS['package']['name'],'version':fS['package']['version'],'description':fS['package']['description'],'manifest':fS['manifest'],'package':fS['package']}));}};const bZ=(fS,fT)=>!fS||'payload'in fS||'keys'in fS?fS:{...fS,'headers':{...fS['headers'],...fT?.['context']['http'][gz(0x241)]}},c0=async(fS,fT)=>{const hR=gz;if(!fT)return fS;let fU=await fS[hR(0x235)]()['arrayBuffer'](),fV=Buffer['from'](fU)[hR(0x2f8)]('base64'),fW=fT['replace']('{{challenge}}',fV);return new Request(fS[hR(0x32f)],{'method':fS['method'],'headers':fS['headers'],'body':fW});},c1=async fS=>{const hS=gz;let fT=await fS['clone']()['arrayBuffer']();if(fT[0x0]===0x7b){let fU=null;try{fU=JSON['parse'](Buffer['from'](fT)['toString']('utf8'));}catch(fV){B['error']('Can\x27t\x20parse\x20license\x20response\x20as\x20JSON'),B['debug'](fV['message']),B['debug']('Base64\x20response\x20data:\x20'+Buffer['from'](fT)['toString'](hS(0x2df)));}if(!fU)return fS;try{let fW=hS(0x23b),fX=fW+Buffer['from'](fT)['toString']('utf8')['split']('\x22'+fW)[0x1]['split']('\x22')[0x0],fY=Buffer['from'](fX,'base64');return new Response(fY,{'status':fS['status'],'headers':fS['headers']});}catch{B['error']('Can\x27t\x20recognize\x20license\x20response'),B['error']('Response:\x20'+JSON['stringify'](fU));}}return fS;},c2=fS=>typeof fS=='string'?[{'sources':[{'url':fS}]}]:Array['isArray'](fS)&&typeof fS[0x0]=='string'?fS['map'](fT=>({'sources':[{'url':fT}]})):Array['isArray'](fS)?fS:fS&&typeof fS=='object'?[fS]:[],c3=fS=>fS['sources']??fS['streams']??[],c4=(fS,fT)=>({'id':fS['id'],'title':fS['title'],'tag':b4(fT),'seasonNumber':fS['seasonNumber']??fS['season'],'episodeNumber':fS['episodeNumber']??fS[gz(0x27f)],'episodeTitle':fS['episodeTitle']}),c5=async(fS,fT,fU)=>{const hT=gz;let fV=bb(fU);if(typeof fV[hT(0x271)]=='function'){let fY=c2(await fV['getMediaInfo'](fS,fT));if(!fY['length'])return B['info']('No\x20metadata\x20found'),[];let fZ=[];for(let g0 of fY){if(typeof fV['refreshMediaInfo']=='function'){let g3=await fV['refreshMediaInfo'](g0,fT);g3&&typeof g3=='object'&&Object['assign'](g0,g3);}let g2=c3(g0);for(let g4 of g2){let g5=typeof g4=='string'?{'url':g4}:g4;fZ['push']({'source':{'url':g5['url'],'headers':g5['headers'],'drm':g5['drm']&&!Array['isArray'](g5['drm'])&&typeof g5[hT(0x252)]=='object'?{'server':g5['drm'][hT(0x1f2)]}:void 0x0},'metadata':c4(g0,fU),'drm':g5['drm']&&!Array['isArray'](g5['drm'])&&typeof g5['drm']==hT(0x230)?{'server':g5['drm']['server']}:void 0x0});}}return B['info']('Fetching\x20metadata\x20finished'),fZ;}let fW=await fV['fetchContentMetadata']?.(fS,fT);if(!fW?.['length'])return B['info']('No\x20metadata\x20found'),[];let fX=[];for(let g6 of fW){let g7={...g6},g8;if(!g7['source']&&fU['exports']['fetchContentSource']&&g7['id']){let gc=await fU['exports']['fetchContentSource'](g7['id'],fT);gc&&(g7['source']=gc);}if(!g7['source']?.['url']){B['error']('Can\x27t\x20find\x20content\x20source');continue;}g7['source']['drm']&&'payload'in g7['source'][hT(0x252)]&&fU['exports']['fetchContentDrm']&&(g8=g7['source']['drm']['payload'],g7[hT(0x301)]['drm']=void 0x0);let {source:g9,...ga}=g7,gb=bZ(g7['source']['drm'],fU);g9['drm']=gb,g9['headers']={...g9['headers'],...fU['context']['http']['headers']},fU['exports']['tag']&&(ga['tag']=fU['exports']['tag']),fX['push']({'source':g9,'metadata':ga,'drm':gb,'drmPayload':g8});}return B['info']('Fetching\x20metadata\x20finished'),fX;},c6=async(fS,fT,fU)=>{if(fS['drmPayload']&&fU?.['exports']['fetchContentDrm']){let fW=bZ(await fU['exports']['fetchContentDrm'](fS['drmPayload'],fT),fU);return fS['source']['drm']=fW,fS['drm']=fW,fW;}let fV=bZ(fS['source']['drm']??fS['drm'],fU);return fS['source']['drm']=fV,fS['drm']=fV,fV;},c7=fS=>{let fT=fS['template']?c0:void 0x0,fU=c1,fV=new C();return async({url:fW,data:fX})=>{const hU=b;let fY=new Request(fW,{'body':Buffer['from'](fX),'method':'POST','headers':fS['headers']}),fZ=await fT?.(fY,fS[hU(0x2fc)])||fY,g0=await fV[hU(0x2a5)](fZ['url'],{'body':await fZ['arrayBuffer'](),'headers':fZ['headers'],'method':fZ[hU(0x28e)]}),g2=await fU?.(g0)||g0;return new Uint8Array(await g2['arrayBuffer']());};},c8=new Map(),c9=fS=>{if(!fS)return;let fT=Object['fromEntries'](new Headers(fS)['entries']());return Object['keys'](fT)['length']?fT:void 0x0;},ca=fS=>{let {input:fT,...fU}=fS;return fU;},cb=(fS,fT,fU)=>createHash(gz(0x221))['update'](JSON['stringify']({'extension':fS[gz(0x1e1)]['name'],'url':fT,'id':fU['id']??null,'title':fU['title']??null,'season':fU['season']??null,'episode':fU['episode']??null}))['digest']('hex'),cc=(fS,fT)=>{const hV=gz;let fU=fS['source']??fS['_rootSource'],fV=fU?.['rootPath'];if(typeof fV!='string'||!fV)return fT??null;let fW=fU?.['_url']instanceof Request?fU[hV(0x31c)]['headers']:void 0x0,fX=fU?.['_options']?.['requestInit']?.['headers'],fY={...c9(fW),...c9(fX)};return{...fT??{},'url':fV,'headers':Object['keys'](fY)['length']?fY:fT?.['headers']};},cd=(fS,fT)=>{let fU=fS['id']??fS['details']?.['id'];return{'id':fU==null?void 0x0:String(fU),'title':fS['title'],'tag':b4(fT),'seasonNumber':fS['season'],'episodeNumber':fS['episode'],'episodeTitle':fS['episodeTitle']};},ce=fS=>fS['length']?fS['length']===0x1?fS[0x0]:fS:null,cf=fS=>{let fT;try{fT=new URL(fS);}catch{throw Error('Invalid\x20direct\x20media\x20URL:\x20'+fS);}let fU=fT['pathname']['replace'](/\/+$/,'')['split']('/')['filter'](Boolean)['pop'](),fV=fU?.['split']('.')['slice'](0x0,-0x1)['join']('.')||fU||fT['hostname']||'download';return{'source':{'url':fS},'metadata':{'title':fV}};},cg=async(fS,fT)=>{const hW=gz;let fU=fT[hW(0x1e2)]||fT['proxyMeta'];fU&&(await fS['context']['http']['configure']({'proxyUrl':fU}),await t[hW(0x25b)]({'proxyUrl':fU}));},ch=async(fS,fT,fU)=>{const hX=gz;if(!fU){B[hX(0x200)]('No\x20suitable\x20extension\x20available.\x20Downloading\x20as\x20a\x20direct\x20link...');let {source:fV,metadata:fW}=cf(fS);return fV['audioLanguage']=fT['languages']?.[0x0],fV['http2']=fT['http2'],{'source':fV,'metadata':fW};}if(await cg(fU,fT),await bc(fU),b9(fU)==='v2'){let fX=bb(fU);B['info']('Resolving\x20media\x20entries...');let fY=await fX['resolveEntries'](fS,fT);if(!fY?.['length'])return B[hX(0x34f)]('No\x20metadata\x20found'),null;let fZ=fY[hX(0x348)](g0=>{let g2=g0,g3=ca(g0),g4=g0['input']?cb(fU,fS,g2):void 0x0;g4&&g0['input']&&c8['set'](g4,g0['input']);let g5=g0['input']?cc(g0['input']):null;return{'source':g5??{'url':fS},'metadata':cd(g3,fU),'extension':{'api':'v2','entry':g3,'cacheKey':g4,'hasResolvedSource':!!g5}};});return B['info']('Resolving\x20media\x20entries\x20finished'),ce(fZ);}return B['info']('Fetching\x20content\x20metadata...'),ce(await c5(fS,fT,fU));},ci=async({resource:fS,url:fT,options:fU,extension:fV})=>{const hY=gz;if(!fV||!fS['extension']||fS['extension']['api']!=='v2'||b9(fV)!=='v2')return{'source':fS[hY(0x301)]};await cg(fV,fU),await bc(fV);let fW=bb(fV),fX=fS['extension']['entry'],fY=fS['extension']['cacheKey']?c8['get'](fS['extension']['cacheKey']):void 0x0;if(!fY&&typeof fW['resolveMedia']=='function'&&(fY=await fW['resolveMedia'](fT,fU,fX)??void 0x0,fY&&fS['extension'][hY(0x2b4)]&&c8['set'](fS['extension']['cacheKey'],fY)),!fY){if(fS['extension']['hasResolvedSource'])return{'source':fS['source'],'entry':fX};throw Error('Extension\x20'+fV['package']['name']+'\x20could\x20not\x20materialize\x20media\x20entry.\x20Provide\x20resolveMedia()\x20or\x20an\x20inline\x20input\x20rooted\x20in\x20UrlSource.');}return{'source':cc(fY,fS['source'])??fS['source'],'input':fY,'entry':fX};},cj=async(fS,fT,fU)=>c6(fS,fT,fU);var ck=class{#e=[];#t=new Set();#n=new Map();#r=new Map();#i=new Set();get['activeRunCount'](){return this.#r['size'];}get[gz(0x269)](){return this.#e['length'];}['getActiveRun'](fS){return this.#r['get'](fS);}['setActiveRun'](fS,fT){this.#r['set'](fS,fT);}['deleteActiveRun'](fS){const hZ=gz;this.#r[hZ(0x209)](fS);}['getActiveJob'](fS){return this.#n['get'](fS);}['setActiveJob'](fS){this.#n['set'](fS['id'],fS);}['deleteActiveJob'](fS){this.#n['delete'](fS);}['queueResumeAfterStop'](fS){this.#i['add'](fS);}['consumeResumeAfterStop'](fS){let fT=this.#i['has'](fS);return fT&&this.#i['delete'](fS),fT;}['enqueue'](fS){this.#t['has'](fS['id'])||this.#r['has'](fS['id'])||(this.#e['push'](fS['id']),this.#t['add'](fS['id']));}['dequeue'](fS){if(!this.#t['has'](fS))return!0x1;let fT=this.#e['indexOf'](fS);return fT!==-0x1&&this.#e['splice'](fT,0x1),this.#t['delete'](fS),!0x0;}['dequeueNext'](fS){for(;this.#e['length']>0x0;){let fT=this.#e['shift']();if(!fT)return;this.#t['delete'](fT);let fU=fS(fT);if(fU&&fU['status']==='queued')return fU;}}};const cl=['code','errno','syscall','address','port','host','hostname','path','type'],cm=fS=>typeof fS=='object'&&!!fS&&'status'in fS&&'statusText'in fS&&'url'in fS,cn=fS=>{let fT=[],fU=fS;for(let fV of cl){let fW=fU[fV];fW==null||fW===''||fT['push'](fV+'='+String(fW));}return fT;},co=(fS,fT=0x0)=>{const i0=gz;if(fT>0x3)return'[max-depth]';if(fS instanceof Error){let fU=cn(fS),fV='cause'in fS?fS['cause']:void 0x0,fW=[fS['name']+':\x20'+fS['message']];return fU['length']&&fW['push']('details='+fU['join'](',\x20')),fV!==void 0x0&&fV!==fS&&fW['push']('cause='+co(fV,fT+0x1)),fW['join']('\x20|\x20');}return cm(fS)?'Response\x20'+fS['status']+'\x20'+fS['statusText']+'\x20url='+fS[i0(0x32f)]:inspect(fS,{'depth':0x2,'breakLength':0x1/0x0});},cp=(fS,fT)=>{const i1=gz;B['debug'](fS+':\x20'+co(fT)),fT instanceof Error&&fT[i1(0x264)]&&B['debug'](fT['stack']);},cq=(fS,fT)=>{const i2=gz;let fU=fT+i2(0x1eb);return fS['type']==='subtitle'?fU+='SUBTITLES':fU+=fS['type']?.['toUpperCase'](),fS['type']==='video'&&(fS['width']&&(fU+='\x20∙\x20'+fS['width']+'x'+fS['height']),fS['bitrate']&&(fU+='\x20∙\x20'+Math['round'](fS[i2(0x2cf)]/0x3e8)+'\x20KiB/s')),fS['type']==='audio'&&(fS['languageCode']&&(fU+='\x20∙\x20'+fS['languageCode']['toUpperCase']()),fS['name']&&(fU+='\x20('+fS['name']+')'),fS['sampleRate']&&(fU+='\x20∙\x20'+fS['sampleRate']+'\x20kHz'),fS['bitrate']&&(fU+='\x20∙\x20'+Math['round'](fS['bitrate']/0x3e8)+'\x20KiB/s')),fS['type']===i2(0x2e8)&&(fS['languageCode']&&(fU+='\x20∙\x20'+fS['languageCode']['toUpperCase']()),fS[i2(0x2de)]&&(fU+='\x20('+fS['name']+')'),fS['forced']&&(fU+='\x20FORCED')),fU;},cr=fS=>fS['id'],cs=fS=>{const i3=gz;let fT=new Map();for(let fU of fS){let fV=cr(fU),fW=fT['get'](fV);if(fW){fW[i3(0x2cc)](fU);continue;}fT['set'](fV,[fU]);}return Array['from'](fT[i3(0x211)]())['filter'](([,fX])=>fX['length']>0x1);},ct=fS=>{const i4=gz;let fT=cs(fS);if(!fT['length'])return;let fU=fT['map'](([fV,fW])=>fV+'\x20('+fW['length']+'\x20copies)')['join'](',\x20');throw Object['assign'](Error('Duplicate\x20tracks\x20selected:\x20'+fU),{'code':i4(0x2e4)});},cu=fS=>{const i5=gz;if(!fS||typeof fS!='object'||!('code'in fS))return;let fT=fS['code'];return typeof fT==i5(0x21a)?fT:void 0x0;};var cv=class extends Error{['code'];constructor(fS,fT=fS,fU){super(fT,fU),this['name']='DownloaderError',this['code']=fS;}};const cw=(fS,fT='DOWNLOAD_FAILED')=>{const i6=gz;if(fS instanceof cv||fS instanceof Error&&fS['name']===i6(0x29c))return fS;if(fS instanceof Error){let fU=new cv(cu(fS)??fT,fS['message'],{'cause':fS});return fS['stack']&&(fU['stack']=fS['stack']),fU;}return new cv(fT,typeof fS=='string'?fS:'Unknown\x20error');},cx=fS=>{const i7=gz;let fT=fS['replace'](/[<>:"/\\|?*\x00-\x1F]/g,'');fT=fT['replace'](/^[\s.]+|[\s.]+$/g,''),fT=fT['replace'](/\s+/g,'\x20');let fU=fT['lastIndexOf']('.'),fV=fU>0x0,fW=fV?fT['slice'](fU):'',fX=fV?fT['slice'](0x0,fU):fT;if(fW['length']>=0xff)fT=fT['slice'](0x0,0xff);else{let fZ=0xff-fW[i7(0x29a)];fX[i7(0x29a)]>fZ&&(fX=fX['slice'](0x0,fZ)),fT=fX+fW;}let fY=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i;if(fW['length']<0xff){let g0=fT['lastIndexOf']('.'),g2=g0>0x0;if(fW=g2?fT['slice'](g0):'',fX=g2?fT['slice'](0x0,g0):fT,fY['test'](fX)){let g3=0xff-fW['length'];fT=('_'+fX)['slice'](0x0,g3)+fW;}}return fT['length']===0x0?'untitled':fT;},cy=(fS,fT)=>Object['keys'](fT)['reduce']((fU,fV)=>{let fW='{'+fV+'}',fX=fT[fV];if(!fX){let fY=RegExp('(?:\x5c.|^)\x5c{'+fV+'\x5c}(?=\x5c.|$)|\x5c{'+fV+'\x5c}(\x5c.|$)|\x5c{'+fV+'\x5c}','g');return fU['replace'](fY,(fZ,g0)=>'')['replaceAll']('....','...');}return fU['replaceAll'](fW,fX);},fS)['replaceAll']('\x20\x20','\x20'),cz=fS=>typeof fS==gz(0x21a)&&fS['trim']()||'mp4',cA=fS=>{const i8=gz;let fT='seasonNumber'in fS?''+fS['seasonNumber']:'',fU='episodeNumber'in fS?''+fS['episodeNumber']:'',fV=fT?'S'+fT:'',fW=fU?'E'+fU:'',fX=fT&&fU?fV+':'+fW:'',fY='episodeTitle'in fS&&fS['episodeTitle']?.['trim']()?'\x22'+fS['episodeTitle']+'\x22':'';return{'title':((fS[i8(0x27d)]??'')+'\x20'+fX+'\x20'+fY)['trim']()};},cB=({settings:fS,options:fT,source:fU,meta:fV,allTracks:fW})=>{const i9=gz;let fX=fV['title'],fY=fV['tag'],fZ='seasonNumber'in fV?fV['seasonNumber']:void 0x0,g0='episodeNumber'in fV?fV['episodeNumber']:void 0x0,g2='episodeTitle'in fV?fV['episodeTitle']:'',g3=fW['find'](ga=>ga['type']==='video')?.['codec']??'',g4=fS['get']('downloadDir'),g5=fT['movieTemplate']||fS[i9(0x285)]('movieFilenameTemplate'),g6=fT['episodeTemplate']||fS['get']('seriesFilenameTemplate'),g7=cx(cy(g0?g6:g5,{'title':fX??'','s':fZ?fZ['toString']()['padStart'](0x2,'0'):'','e':g0?g0['toString']()['padStart'](0x2,'0'):'','quality':fT['videoQuality']??'','codec':g3,'tag':fY??'','episodeTitle':g2??'','audioType':fU['audioType']?fU['audioType'][i9(0x2ab)]():'','format':'WEB-DL'}))+'.'+cz(fT['format']||fS['get']('videoContainerFormat')),g8=fT['outputPath']||join(g4,g7),g9=parse(g8);return{'downloadDir':g4,'outputPath':g8,'resolvedFilenameWithoutExtension':g9['name'],'filenameWithExtension':g9['base'],'outputDirectory':g9['dir']||g4,'downloadMetadata':cA(fV)};},cC=async(fS,fT,fU)=>fU??open(fS,fT),cD=fS=>{let fT=null;return new StreamSource({'getSize':async()=>(fT=await cC(fS,'r',fT),(await fT['stat']())['size']),'read':async(fU,fV)=>{fT=await cC(fS,'r',fT);let fW=new Uint8Array(fV-fU);return await fT['read'](fW,0x0,fV-fU,fU),fW;},'dispose':async()=>{let fU=fT;fT=null,await fU?.['close']();},'prefetchProfile':'fileSystem'});},cE=fS=>{let fT=null;return new StreamTarget(new WritableStream({'start':async()=>{fT=await cC(fS,'w',fT);},'write':async fU=>{if(!fT)throw Error('MediaBunny\x20output\x20handle\x20was\x20not\x20initialized\x20for\x20'+fS);await fT['write'](fU['data'],0x0,fU['data']['byteLength'],fU['position']);},'close':async()=>{let fU=fT;fT=null,await fU?.['close']();},'abort':async()=>{let fU=fT;fT=null,await fU?.['close']();}}),{'chunked':!0x0});},cF=async(fS,fT)=>{const ia=gz;let fU=new V({'formats':U,'source':fS['startsWith']('https')?new W(fS,{'requestInit':{'headers':fT}}):cD(fS)});return{'tracks':await fU['getTracks'](),'primaryVideoTrack':await fU['getPrimaryVideoTrack'](),'primaryAudioTrack':await fU[ia(0x2e1)]()};},cG=[...DASH_FORMATS,...HLS_FORMATS],cH=new Set(['authorization','cookie','set-cookie',gz(0x288)]),cI=fS=>Object['fromEntries'](Object['keys'](fS)['map'](fT=>[fT,cH['has'](fT['toLowerCase']())?gz(0x33d):fS[fT]])),cJ=fS=>fS==='mpd'?DASH_FORMATS:fS==='m3u8'?HLS_FORMATS:cG,cK=({http:fS,source:fT,detection:fU})=>(B['debug']('Fetching\x20manifest...'),B['debug'](fT['url']),fT['headers']&&B['debug'](JSON['stringify'](cI(fT[gz(0x241)]))),new Input({'source':new UrlSource(fT['url'],{'requestInit':{'headers':fT['headers']},'fetchFn':fS['fetch']['bind'](fS)}),'formats':cJ(fU['kind'])})),cL=fS=>createHash('sha1')['update'](fS)['digest']('hex'),cM=(fS,fT)=>{if(fS)switch(fS){case'aar':case'abk':return'rus';case'ave':return'eng';case'zu':return fT?.['includes']('start.film')?'ru':'zu';default:return fS;}},cN=({origin:fS,type:fT,sourceUrl:fU,languageCode:fV,name:fW,codec:fX})=>fS+':'+fT+':'+cL([fU??'',fV??'',fW??'',fX??'']['join']('|')),cO=async(fS,fT)=>{const ib=gz;let [fU,fV,fW,fX,fY,fZ]=await Promise['all']([fS[ib(0x2ca)](),fS[ib(0x349)](),fS['getLanguageCode'](),fS['getName'](),fS['getDisposition'](),fS['hasOnlyKeyPackets']()]),g0={'id':'manifest:'+fS['type']+':'+fS['id'],'origin':ib(0x346),'type':fS['type'],'codec':fU,'bitrate':fV,'languageCode':cM(fW,fT),'name':fX,'forced':fY['forced'],'hearingImpaired':fY['hearingImpaired'],'visuallyImpaired':fY['visuallyImpaired'],'isDefault':fY['default'],'isIFrameOnly':fZ,'inputTrack':fS};if(fS['isVideoTrack']()){let [g2,g3]=await Promise['all']([fS['getDisplayWidth'](),fS['getDisplayHeight']()]);g0['width']=g2,g0['height']=g3;}if(fS['isAudioTrack']()){let [g4,g5]=await Promise['all']([fS['getNumberOfChannels'](),fS['getSampleRate']()]);g0['numberOfChannels']=g4,g0['sampleRate']=g5;}return g0;},cP=async fS=>fS['segments']?fS['segments']:fS['inputTrack']?(fS['segmentsPromise']??=fS['inputTrack']['getSegments']()[gz(0x26c)](fT=>(fS['segments']=fT,fS['segmentCount']=fT['length'],fT)),fS['segmentsPromise']):(fS['segments']=[],fS['segmentCount']=0x0,fS['segments']),cQ=(fS,fT)=>{let fU=fS['filter'](fV=>fT['some'](fW=>fW===fV['codec']));return fU['length']?fU:fS['toSorted']((fV,fW)=>(fW['bitrate']??0x0)-(fV['bitrate']??0x0));},cR=(fS,fT)=>{const ic=gz;let fU=fT?parseInt(String(fT),0xa)*0x10/0x9:void 0x0,fV=fS['toSorted']((fY,fZ)=>(fZ['bitrate']??0x0)-(fY[ic(0x2cf)]??0x0));if(!fT)return fV;let fW=fS['filter'](fY=>Number(fY['height'])===Number(fT));if(fW['length'])return fW;let fX=fS['filter'](fY=>Number(fY[ic(0x248)])===Number(fU));return fX['length']?fX:fV;},cS=(fS,fT)=>fS['filter'](fU=>fU['numberOfChannels']===Number(fT)),cT=fS=>fS?.[gz(0x29e)]()['toLowerCase']()??'',cU=fS=>cT(fS)['slice'](0x0,0x2),cV=fS=>cT(fS)||'und',cW=(fS,fT)=>{let fU=cT(fS),fV=cT(fT);return!fU||!fV?!0x1:fU===fV||fU['startsWith'](fV+'-')?!0x0:cU(fU)===cU(fV);},cX=fS=>Array['from'](new Map(fS['map'](fT=>cT(fT))[gz(0x2f9)](Boolean)['map'](fT=>[cU(fT),fT]))['values']()),cY=(fS,fT)=>{const id=gz;let fU=new Map();for(let fV of fS){let fW=cV(fV['languageCode']),fX=fU['get'](fW);if(!fX){fU['set'](fW,[fV]);continue;}fX['length']<fT&&fX['push'](fV);}return Array['from'](fU['values']())[id(0x2cb)]();},cZ=(fS,fT,fU=0x1)=>{const ie=gz;let fV=fS['toSorted']((fZ,g0)=>(g0['bitrate']??0x0)-(fZ['bitrate']??0x0)),fW=cX(fT),fX=[];for(let fZ of fW){let g0=fV['filter'](g2=>cW(g2['languageCode'],fZ));g0['length']&&fX['push'](...cY(g0,fU));}let fY=cX(fS['map'](g2=>g2['languageCode']||'und'));if(!fX[ie(0x29a)])for(let g2 of fY){let g3=fV['filter'](g4=>cW(g4['languageCode']??'und',g2));g3['length']&&fX['push'](...cY(g3,fU));}return fX;},d0=(fS,fT)=>{const ig=gz;if(!fT?.['inputTrack'])return fS;let fU=fT['inputTrack'],fV=fS[ig(0x2f9)](fW=>fW['inputTrack']?fW[ig(0x2c1)]['canBePairedWith'](fU):!0x0);return fV['length']?fV:fS;},d1=fS=>(fS??0x0)/0x3e8,d2=async fS=>{if(typeof fS['segmentCount']=='number')return fS['segmentCount']+'\x20Segments';if(!fS['inputTrack'])return'Direct';try{return(await cP(fS))['length']+'\x20Segments';}catch{return'?\x20Segments';}},d3=({videos:fS,audios:fT,subtitles:fU})=>({'videos':fS,'audios':fT,'subtitles':fU,'all':[...fS,...fT,...fU]});async function d4(fS,fT,fU){const ih=gz;let fV=fT['videoQuality'],fW=fS['filter'](g8=>g8[ih(0x1fb)]===ih(0x205)&&!g8['isIFrameOnly']),fX=fS['filter'](g8=>g8['type']==='audio'),fY=fS['filter'](g8=>g8['type']==='subtitle');if(fT['select']){let g8=await Promise['all'](fW['map'](async(gg,gh)=>({'name':(gg['width']??'?')+'x'+(gg['height']??'?')+'\x20|\x20'+(d1(gg['bitrate'])||'?')+'\x20Kbps\x20|\x20'+(gg[ih(0x213)]??'?')+'\x20|\x20'+await d2(gg),'value':gg['id'],'checked':gh===0x0}))),g9=fW[ih(0x29a)]?await checkbox({'message':'Select\x20video\x20streams','pageSize':0xc,'choices':g8,'loop':!0x1}):[],ga=fW['filter'](gg=>g9['includes'](gg['id'])),gb=await Promise['all'](fX['map'](async(gg,gh)=>({'name':''+(gg['name']?gg['name']+'\x20|\x20':'')+(d1(gg['bitrate'])||'?')+'\x20Kbps\x20|\x20'+(gg[ih(0x213)]?gg['codec']+'\x20|\x20':'')+(gg['languageCode']||'und')+'\x20|\x20'+(gg['numberOfChannels']??'?')+'CH\x20|\x20'+await d2(gg),'value':gg['id'],'checked':gh===0x0}))),gc=fX['length']?await checkbox({'message':'Select\x20audio\x20streams','pageSize':0xc,'choices':gb,'loop':!0x1}):[],gd=fX['filter'](gg=>gc['includes'](gg['id'])),ge=await Promise[ih(0x1fd)](fY['map'](async(gg,gh)=>({'name':(gg['codec']??'?')+'\x20|\x20'+(gg['languageCode']||'und')+ih(0x1ef)+await d2(gg),'value':gg['id'],'checked':gh===0x0}))),gf=fY[ih(0x29a)]?await checkbox({'message':'Select\x20subtitles','pageSize':0xc,'choices':ge,'loop':!0x1}):[];return d3({'videos':ga,'audios':gd,'subtitles':fY['filter'](gg=>gf['includes'](gg['id']))});}fT['videoCodecs']&&(fW=cQ(fW,fT[ih(0x204)])),fW=cR(fW,fV||NaN);let fZ=fW[0x0],g0=[...fT['languages']||[]],g2=fU[ih(0x31a)]?.['slice'](0x0,0x2);!g0['length']&&g2&&g0[ih(0x2cc)](g2);let g3=d0(fX,fZ);fT['audioChannels']&&(g3=cS(g3,fT['audioChannels'])),fT['audioCodecs']&&(g3=cQ(g3,fT['audioCodecs']));let g4=cZ(g3,g0,0x1);g4['length']&&(g3=g4);let g5=g0['at'](-0x1),g6=g5?g3['map'](gg=>!gg['languageCode']||gg[ih(0x240)]==='und'?{...gg,'languageCode':g5}:gg):g3,g7=fY['filter'](gg=>fT['subtitleLanguages']?.['length']?fT['subtitleLanguages']['some'](gh=>cW(gg[ih(0x240)]||'und',gh)):!0x1);return d3({'videos':fT['skipVideo']||!fZ?[]:[fZ],'audios':fT['skipAudio']?[]:g6,'subtitles':fT[ih(0x307)]?[]:g7});}const d5=()=>({'videos':[],'audios':[],'subtitles':[],'all':[]}),d6={'aac':'aac','mp4a':'aac','mp4a.40.2':'aac','ac3':'ac3','ac-3':'ac3','eac3':'eac3','ec-3':'eac3','opus':'opus','vorbis':'vorbis','flac':'flac'},d7=fS=>{if(!fS)return null;try{return new URL(fS);}catch{return null;}},d8=fS=>{let fT=d7(fS);if(fT)try{return decodeURIComponent(fT['pathname']);}catch{return fT['pathname'];}},d9=fS=>{const ii=gz;if(!fS)return'aac';let fT=fS['toLowerCase']();return d6[fT]??d6[fT[ii(0x268)]('.')[0x0]??'']??'aac';},da=(fS,fT)=>fS['filter'](fU=>fU['type']===fT)['length'],db=fS=>{const ij=gz;let fT='Extracted,\x20there\x20are\x20';if(fS['length']===0x0)fT+='no\x20tracks';else{fT+=fS['length']+'\x20tracks';let fU=da(fS,ij(0x205));fU&&(fT+=',\x20'+fU+'\x20video\x20tracks');let fV=da(fS,'audio');fV&&(fT+=',\x20'+fV+'\x20audio\x20tracks');let fW=da(fS,'subtitle');fW&&(fT+=',\x20'+fW+'\x20subtitle\x20tracks');}B['info'](fT);},dc=(fS,fT=[])=>{const ik=gz;let fU=[...fT];for(let fV of fS[ik(0x2c3)]??[]){let fW=d8(fV['url']),fX=cM(fV[ik(0x2ed)],fS['url']);fU[ik(0x1f3)](fY=>{const il=ik;let fZ=d8(fY[il(0x2be)]);return!fW||!fZ?!0x1:fW===fZ;})||fU['push']({'id':cN({'origin':'external-subtitle','type':'subtitle','sourceUrl':fV['url'],'languageCode':fX,'name':fV['label']||fV['title'],'codec':fV[ik(0x290)]}),'origin':'external-subtitle','type':'subtitle','sourceUrl':fV['url'],'languageCode':fX,'codec':fV['format'],'forced':fV['forced'],'name':fV[ik(0x29d)]||fV['title']});}return fU;},dd=async({options:fS,source:fT,meta:fU,detection:fV})=>{const im=gz;let fW={...fS},fX={...fU};if(!fX[im(0x27d)]){let g5=d7(fT['url'])?.['pathname']['split']('/')['pop']();g5&&(fX[im(0x27d)]=g5);}let {primaryVideoTrack:fY,primaryAudioTrack:fZ}=await cF(fT['url'],fT['headers']),g0=await fY?.['getCodec'](),g2=await fY?.[im(0x286)](),g3=await fY?.['getCodedHeight']();fW['videoQuality']||=g3?g3+'p':void 0x0;let g4=d5();if(g4['subtitles']=dc(fT),g4['all']['push'](...g4['subtitles']),fV['isAudio']&&!fW['skipAudio']){let g6={'id':cN({'origin':'progressive','type':'audio','sourceUrl':fT['url'],'languageCode':fT['audioLanguage'],'codec':await fZ?.['getCodec']()}),'origin':'progressive','type':'audio','codec':d9(await fZ?.['getCodec']()),'languageCode':cM(await fZ?.['getLanguageCode'](),fT['url'])??cM(fT['audioLanguage'],fT[im(0x32f)])??'und','numberOfChannels':await fZ?.['getNumberOfChannels'](),'sampleRate':await fZ?.['getSampleRate'](),'sourceUrl':fT['url']};return g4['audios']['push'](g6),g4['all']['push'](g6),{'options':fW,'source':fT,'meta':fX,'allTracks':[g6],'tracks':g4};}if(!fW['skipVideo']){let g7=parseInt((fW['videoQuality']??'')['replace']('p',''),0xa),g8={'id':cN({'origin':'progressive','type':'video','sourceUrl':fT['url'],'codec':g0}),'origin':'progressive','type':'video','codec':g0??im(0x226),'width':g2??void 0x0,'height':g3??(g7||void 0x0),'sourceUrl':fT['url']};return g4['videos']['push'](g8),g4[im(0x1fd)]['push'](g8),{'options':fW,'source':fT,'meta':fX,'allTracks':[g8],'tracks':g4};}return{'options':fW,'source':fT,'meta':fX,'allTracks':[],'tracks':g4};},de=async({options:fS,source:fT,meta:fU,input:fV,disposeInput:fW=!0x0})=>{const io=gz;let fX={...fS},fY={...fU},fZ=fW;try{let g0=await fV['getTracks']();if(!g0['length'])throw new cv('MANIFEST_PARSE_FAILED','Failed\x20to\x20parse\x20manifest');let g2=await Promise['all'](g0[io(0x348)](g5=>cO(g5,fT['url'])));db(g2);let g3=await d4(g2,fX,fT),g4=g3['videos'][0x0]?.['height'];if(g4&&(fX['videoQuality']=g4+'p'),!fY['title']){let g5=d7(fT['url'])?.[io(0x259)];g5&&(fY['title']=g5+'_'+A());}return fZ=!0x1,{'options':fX,'source':fT,'meta':fY,'allTracks':g2,'tracks':g3,'dispose':fW?()=>fV['dispose']?.():void 0x0};}finally{fZ&&fV['dispose']?.();}},df=async({http:fS,options:fT,source:fU,meta:fV,detection:fW})=>de({'options':fT,'source':fU,'meta':fV,'input':cK({'http':fS,'source':fU,'detection':fW})}),dg=async({http:fS,options:fT,source:fU,meta:fV,input:fW,detection:fX})=>fW?de({'options':fT,'source':fU,'meta':fV,'input':fW,'disposeInput':!0x1}):fX['strategy']==='progressive'?dd({'options':fT,'source':fU,'meta':fV,'detection':fX}):df({'http':fS,'options':fT,'source':fU,'meta':fV,'detection':fX}),dh=(fS,fT)=>{try{let fU=new URL(fS);return fU['pathname']['endsWith'](fT)||fU['search']['endsWith'](fT);}catch{return!0x1;}},di=async(fS,fT)=>{const ip=gz;let fU=dh(fT['url'],'.m3u8'),fV=dh(fT['url'],'.mpd'),fW=dh(fT['url'],'.mp4'),fX=dh(fT['url'],'.mov'),fY=!0x1,fZ=!0x1;if(!fU&&!fV&&!fW&&!fX)try{let g0=await fS['fetch'](fT['url'],{'method':'HEAD','headers':fT['headers']});if(!g0['ok'])B['warn']('HEAD\x20request\x20for\x20'+fT['url']+'\x20returned\x20'+g0['status']+'\x20'+g0['statusText']);else{let g2=g0['headers']['get'](ip(0x250));fY=!!g2?.['includes']('audio'),fZ=!!g2?.['includes']('video');}}catch(g3){let g4=g3 instanceof Error?g3['message']:String(g3);B['warn']('HEAD\x20request\x20failed\x20for\x20'+fT['url']+':\x20'+g4);}return fV?{'strategy':'manifest','kind':'mpd','isAudio':fY,'isVideo':fZ,'matchedContentLabel':ip(0x201)}:fU?{'strategy':'manifest','kind':'m3u8','isAudio':fY,'isVideo':fZ,'matchedContentLabel':'HTTP\x20Live\x20Streaming'}:fY||fZ||fW||fX?{'strategy':'progressive','kind':'progressive','isAudio':fY,'isVideo':fZ,'matchedContentLabel':'Progressive\x20Stream'}:{'strategy':'manifest','kind':'unknown','isAudio':fY,'isVideo':fZ};};var dj=a6((fS,fT)=>{const ir=gz;function fU(fV){var fW=new fV(),fX=fW;function fY(){var g0=fW;return g0['next']?fW=g0['next']:(fW=new fV(),fX=fW),g0['next']=null,g0;}function fZ(g0){const iq=b;fX[iq(0x245)]=g0,fX=g0;}return{'get':fY,'release':fZ};}fT[ir(0x246)]=fU;}),dk=a6((fS,fT)=>{const ix=gz;var fU=dj();function fV(fZ,g0,g2){if(typeof fZ=='function'&&(g2=g0,g0=fZ,fZ=null),!(g2>=0x1))throw Error('fastqueue\x20concurrency\x20must\x20be\x20equal\x20to\x20or\x20greater\x20than\x201');var g3=fU(fX),g4=null,g5=null,g6=0x0,g7=null,g8={'push':gf,'drain':fW,'saturated':fW,'pause':ga,'paused':!0x1,get 'concurrency'(){return g2;},set 'concurrency'(gm){if(!(gm>=0x1))throw Error('fastqueue\x20concurrency\x20must\x20be\x20equal\x20to\x20or\x20greater\x20than\x201');if(g2=gm,!g8['paused']){for(;g4&&g6<g2;)g6++,gh();}},'running':g9,'resume':gd,'idle':ge,'length':gb,'getQueue':gc,'unshift':gg,'empty':fW,'kill':gi,'killAndDrain':gj,'error':gl,'abort':gk};return g8;function g9(){return g6;}function ga(){g8['paused']=!0x0;}function gb(){for(var gm=g4,gn=0x0;gm;)gm=gm['next'],gn++;return gn;}function gc(){for(var gm=g4,gn=[];gm;)gn['push'](gm['value']),gm=gm['next'];return gn;}function gd(){if(g8['paused']){if(g8['paused']=!0x1,g4===null){g6++,gh();return;}for(;g4&&g6<g2;)g6++,gh();}}function ge(){return g6===0x0&&g8['length']()===0x0;}function gf(gm,gn){const is=b;var go=g3['get']();go['context']=fZ,go['release']=gh,go['value']=gm,go['callback']=gn||fW,go['errorHandler']=g7,g6>=g2||g8[is(0x244)]?g5?(g5['next']=go,g5=go):(g4=go,g5=go,g8['saturated']()):(g6++,g0['call'](fZ,go['value'],go['worked']));}function gg(gm,gn){const it=b;var go=g3['get']();go['context']=fZ,go['release']=gh,go['value']=gm,go['callback']=gn||fW,go['errorHandler']=g7,g6>=g2||g8['paused']?g4?(go['next']=g4,g4=go):(g4=go,g5=go,g8[it(0x311)]()):(g6++,g0[it(0x27c)](fZ,go['value'],go['worked']));}function gh(gm){const iu=b;gm&&g3['release'](gm);var gn=g4;gn&&g6<=g2?g8['paused']?g6--:(g5===g4&&(g5=null),g4=gn['next'],gn['next']=null,g0['call'](fZ,gn['value'],gn['worked']),g5===null&&g8['empty']()):--g6===0x0&&g8[iu(0x24e)]();}function gi(){g4=null,g5=null,g8['drain']=fW;}function gj(){g4=null,g5=null,g8['drain'](),g8['drain']=fW;}function gk(){const iv=b;var gm=g4;for(g4=null,g5=null;gm;){var gn=gm['next'],go=gm['callback'],gp=gm['errorHandler'],gq=gm['value'],gr=gm['context'];gm[iv(0x21f)]=null,gm['callback']=fW,gm[iv(0x210)]=null,gp&&gp(Error('abort'),gq),go['call'](gr,Error('abort')),gm['release'](gm),gm=gn;}g8['drain']=fW;}function gl(gm){g7=gm;}}function fW(){}function fX(){this['value']=null,this['callback']=fW,this['next']=null,this['release']=fW,this['context']=null,this['errorHandler']=null;var fZ=this;this['worked']=function(g0,g2){const iw=b;var g3=fZ['callback'],g4=fZ['errorHandler'],g5=fZ['value'];fZ['value']=null,fZ['callback']=fW,fZ['errorHandler']&&g4(g0,g5),g3[iw(0x27c)](fZ['context'],g0,g2),fZ['release'](fZ);};}function fY(fZ,g0,g2){typeof fZ=='function'&&(g2=g0,g0=fZ,fZ=null);function g3(ga,gb){g0['call'](this,ga)['then'](function(gc){gb(null,gc);},gb);}var g4=fV(fZ,g3,g2),g5=g4['push'],g6=g4['unshift'];return g4['push']=g7,g4['unshift']=g8,g4['drained']=g9,g4;function g7(ga){var gb=new Promise(function(gc,gd){g5(ga,function(ge,gf){if(ge){gd(ge);return;}gc(gf);});});return gb['catch'](fW),gb;}function g8(ga){var gb=new Promise(function(gc,gd){g6(ga,function(ge,gf){if(ge){gd(ge);return;}gc(gf);});});return gb['catch'](fW),gb;}function g9(){return new Promise(function(ga){process['nextTick'](function(){if(g4['idle']())ga();else{var gb=g4['drain'];g4['drain']=function(){typeof gb=='function'&&gb(),ga(),g4['drain']=gb;};}});});}}fT[ix(0x246)]=fV,fT['exports'][ix(0x24d)]=fY;}),dl=a8(dk(),0x1);const dm=0x493e0,dn=(fS={})=>{const iy=gz;let fT=fS['maxRetries']??0x5,{proxy:fU}=fS,fV=fU?new ProxyAgent({'uri':fU,'allowH2':!0x0}):new Agent({'allowH2':!0x0}),fW=T['create']({'fetch':fS[iy(0x2a5)],'dispatcher':fV,'proxy':fU,'timeout':dm,'retry':{'limit':fT,'methods':['get','head'],'statusCodes':[0x198,0x19d,0x1ad,0x1f4,0x1f6,0x1f7,0x1f8],'backoffLimit':0x7530},'throwHttpErrors':!0x0,'redirect':'follow','headers':{'user-agent':'Mozilla/5.0\x20(Windows\x20NT\x2010.0;\x20Win64;\x20x64)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/127.0.0.0\x20Safari/537.36'}});return Object['assign'](fW,{'close':async()=>{const iz=iy;fV[iz(0x2d3)]||fV['destroyed']||await fV['close']();},'destroy':async fX=>{fV['destroyed']||await fV['destroy'](fX);}});},dp=fS=>new Promise(fT=>setTimeout(fT,fS)),dq=async(fS,fT)=>{const iA=gz;let fU=await Q[iA(0x327)](fT)[iA(0x208)](()=>null);(!fU||!fU['isDirectory']())&&await Q['mkdir'](fT,{'recursive':!0x0});let fV=dr(fS,fT),fW=await Q['stat'](fV)['catch'](()=>null);return(!fW||!fW['isDirectory']())&&await Q['mkdir'](fV,{'recursive':!0x0}),fV;},dr=(fS,fT)=>{const iB=gz;let fU=M['resolve'](fS),fV=M['parse'](fS)['name'],fW=createHash('sha1')['update'](fU)[iB(0x320)]('hex')['slice'](0x0,0xa);return M['join'](fT,fV+'-'+fW);},ds=async fS=>{const iC=gz;let fT=M['dirname'](fS),fU=M[iC(0x2cd)](fT);M['parse'](fU)['root']!==fU&&(await Q['stat'](fT)[iC(0x26c)](()=>!0x0)['catch'](()=>!0x1)||await Q[iC(0x2b8)](fT,{'recursive':!0x0}));},dt=async(...fS)=>{const iD=gz;let fT=[];for(let fU of fS)fU&&fT['push'](Q['rm'](fU,{'recursive':!0x0,'force':!0x0})['catch'](()=>void 0x0));await Promise[iD(0x1fd)](fT);},du=fS=>fS+'.part.json',dv=fS=>{const iE=gz;if(fS['filePath'])return fS[iE(0x22b)];if(fS['output'])return du(fS['output']);throw Error('Either\x20output\x20or\x20filePath\x20is\x20required\x20for\x20FileResumeStore');},dw=fS=>{if(!fS||typeof fS!='object')return!0x1;let fT='code'in fS?fS['code']:void 0x0;return fT==='EPERM'||fT==='EACCES'||fT==='EBUSY';},dx=async(fS,fT)=>{const iF=gz;let fU=R[iF(0x294)]==='win32'?[0x0,0x32,0x96,0x12c,0x1f4]:[0x0],fV;for(let fW of fU){fW>0x0&&await dp(fW);try{await Q['rename'](fS,fT);return;}catch(fX){if(fV=fX,!dw(fX))break;await Q['rm'](fT,{'force':!0x0})['catch'](()=>void 0x0);try{await Q['rename'](fS,fT);return;}catch(fY){if(fV=fY,!dw(fY))break;}}}throw fV;};var dy=class{async['get'](fS){let fT=dv(fS);if(!await Q['stat'](fT)['then'](()=>!0x0)['catch'](()=>!0x1))return null;try{let fU=await Q['readFile'](fT,'utf8');return JSON['parse'](fU);}catch{return null;}}async['set'](fS,fT){let fU=dv(fS);await ds(fU);let fV=fU+'.'+R['pid']+'.'+Date['now']()['toString'](0x24)+'.tmp';await Q['writeFile'](fV,JSON['stringify'](fT));try{await dx(fV,fU);}finally{try{await Q['rm'](fV,{'force':!0x0});}catch{}}}async['delete'](fS){let fT=dv(fS);await Q['rm'](fT,{'force':!0x0})['catch'](()=>void 0x0);}};const dz=fS=>M['resolve'](fS),dA=fS=>createHash('sha1')['update'](dz(fS))['digest']('hex'),dB=fS=>fS['map']((fT,fU)=>({'index':fU,'start':fT[gz(0x282)],'end':fT['end'],'output':fT['output'],'completed':!0x1,'bytesWritten':0x0})),dC=(fS,fT)=>fS[gz(0x229)]['length']===fT[gz(0x29a)]?fS['parts'][gz(0x28b)]((fU,fV)=>{const iG=gz;let fW=fT[fV];return fW?fU['start']===fW[iG(0x282)]&&fU[iG(0x2d7)]===fW[iG(0x2d7)]&&(fU['output']??null)===(fW['output']??null):!0x1;}):!0x1,dD=(fS,fT)=>!fT||!fS['sourceSignature']?!0x0:fS['sourceSignature']===fT,dE=fS=>{let fT=fS['parts']['reduce']((fU,fV)=>fU+fV['bytesWritten'],0x0);return fT>0x0?fT:fS['bytesDownloaded'];},dF=fS=>{if(!fS||typeof fS!='object')return!0x1;let fT=fS;return fT['version']===0x2&&typeof fT['key']=='string'&&Array['isArray'](fT['parts'])&&typeof fT['bytesDownloaded']=='number';};var dG=class{['key'];['output'];[gz(0x22b)];['cleanupOnSuccess'];['store'];[gz(0x34e)];['trustExplicitKey'];constructor(fS={}){const iH=gz;if(this['output']=fS['output'],this[iH(0x22b)]=fS['filePath'],this['key']=fS['key']??(this['output']?dA(this[iH(0x310)]):''),!this['key'])throw Error('Resume\x20key\x20is\x20required\x20when\x20output\x20is\x20not\x20provided');this['store']=fS['store']??new dy(),this['cleanupOnSuccess']=fS['cleanupOnSuccess']??!0x0,this['target']={'key':this['key'],'output':this['output'],'filePath':this['filePath']},this['trustExplicitKey']=typeof fS['key']=='string'&&fS[iH(0x338)]['length']>0x0;}async['read'](){const iI=gz;let fS=await this['store']['get'](this[iI(0x34e)]);return dF(fS)?fS:null;}async['write'](fS){let fT=new Date()['toISOString'](),fU={...fS,'version':0x2,'key':this['key'],'output':fS['output']??this['output'],'bytesDownloaded':dE(fS),'createdAt':fS['createdAt']||fT,'updatedAt':fT};await this['store']['set'](this['target'],fU);}async['delete'](){await this['store']['delete'](this['target']);}['createState'](fS){const iJ=gz;let fT=new Date()[iJ(0x1f8)]();return{'version':0x2,'key':this['key'],'output':this['output'],'input':fS[iJ(0x24a)],'bytesTotal':fS['bytesTotal'],'bytesDownloaded':0x0,'parts':dB(fS['parts']),'sourceSignature':fS['sourceSignature'],'planner':fS['planner'],'createdAt':fT,'updatedAt':fT};}[gz(0x2ec)](fS,fT){const iK=gz;let fU=fS['version']!==0x2,fV=fS['key']!==this['key'],fW=!this['trustExplicitKey']&&!dD(fS,fT['sourceSignature']),fX=!dC(fS,fT[iK(0x229)]);if(fU||fV||fW||fX)return{'state':this['createState'](fT),'reset':!0x0};let fY={...fS,'key':this['key'],'output':this['output'],'input':fT[iK(0x24a)],'bytesTotal':fT['bytesTotal'],'sourceSignature':fT['sourceSignature'],'planner':fT['planner'],'parts':fT[iK(0x229)]['map']((fZ,g0)=>{let g2=fS['parts'][g0];return{'index':g0,'start':fZ['start'],'end':fZ['end'],'output':fZ['output'],'completed':g2?.['completed']??!0x1,'bytesWritten':g2?.['bytesWritten']??0x0};}),'createdAt':fS['createdAt'],'updatedAt':fS['updatedAt']};return fY['bytesDownloaded']=dE(fY),{'state':fY,'reset':!0x1};}['markPartCompleted'](fS,fT,fU){let fV=fS['parts'][fT];if(!fV)return fS;let fW=fV['bytesWritten'];return fV['completed']=!0x0,fV['bytesWritten']=fU,fS['bytesDownloaded']=Math['max'](0x0,fS['bytesDownloaded']-fW+fU),fS['updatedAt']=new Date()['toISOString'](),fS;}async['getProgress'](){const iL=gz;let fS=await this['read']();if(!fS)return null;let fT=fS['bytesDownloaded'];if(fS[iL(0x2ad)]){let fW=fS['bytesTotal'];return{'bytesDownloaded':fT,'totalBytes':fW,'percentComplete':fW>0x0?Math['round'](fT/fW*0x64):0x0};}let fU=fS['parts']['length'],fV=fS['parts']['filter'](fX=>fX['completed'])['length'];return{'bytesDownloaded':fT,'totalBytes':null,'percentComplete':fU>0x0?Math['round'](fV/fU*0x64):0x0,'segmentsCompleted':fV,'segmentsTotal':fU};}};const dH=0x8*0x2**0x14,dI=(fS,fT,fU)=>{const iM=gz;let fV='part_'+fU+'.part';return M[iM(0x333)](fT,fV);},dJ=(fS,fT,fU)=>{let fV=Math['ceil'](fS/Math['max'](0x1,fT));return Math['max'](0x1,Math['min'](fV,Math['max'](0x1,fU)));},dK=(fS,fT,fU)=>{const iN=gz;let fV=dJ(fS,fT,fU),fW=[],fX=0x0;for(;fX<fS;){let fY=Math[iN(0x23f)](fS-0x1,fX+fV-0x1);fW['push']([fX,fY]),fX=fY+0x1;}return fW;},dL=fS=>{let [fT,fU]=fS;return'bytes='+fT+'-'+(fU||'');},dM=fS=>dK(fS['contentLength'],fS['maxWorkerCount'],fS['maxChunkSize']??dH)['map'](fT=>{let [fU,fV]=fT,fW=new Headers(fS['requestInit']?.['headers']);return fW['set']('Range',dL([fU,fV])),{'url':fS['url'],'headers':fW,'start':fU,'end':fV};}),dN=fS=>{const iO=gz;let fT=fS?Error('The\x20operation\x20was\x20aborted',{'cause':fS}):Error('The\x20operation\x20was\x20aborted');return fT[iO(0x2de)]='AbortError',fT;},dO=fS=>{if(!(fS instanceof Error))return!0x1;if(fS['name']==='AbortError'||fS['code']==='ABORT_ERR')return!0x0;let fT=fS['cause'];return fT instanceof Error&&fT['name']==='AbortError';},dP=async fS=>await fS['client']['get'](fS['url'],{'redirect':'follow',...fS[gz(0x28d)]}),dQ=(fS,fT,fU)=>async fV=>{if(fU?.['aborted'])throw dN();let fW=typeof fT=='number'?{'flags':'r+','start':fT}:{'flags':'w'},fX=K['createWriteStream'](fS,fW),fY=Readable['fromWeb'](fV['body']);try{await pipeline(fY,fX,{'signal':fU});}catch(fZ){throw dO(fZ)?dN(fZ):fZ;}if(fU?.['aborted'])throw dN();return fV;},dR=(fS,fT,fU)=>fV=>{if(fU?.['aborted'])throw dN();let fW=parseInt(fV['headers']['get']('content-length')||'0');if(fS['increase'](fW),fU?.['aborted'])throw dN();return fT&&!fU?.['aborted']?fT(fS['toProgressInfo']()):fS['log'](),fV;},dS=fS=>typeof fS=='boolean'?{'enabled':fS,'cleanupOnSuccess':!0x0}:fS?{'enabled':fS['enabled']??!0x0,'key':fS['key'],'store':fS['store'],'filePath':fS[gz(0x22b)],'cleanupOnSuccess':fS[gz(0x2e7)]??!0x0}:{'enabled':!0x1,'cleanupOnSuccess':!0x0},dT=fS=>({'tempDir':fS['tempDir']??process['cwd'](),'maxRetries':fS['maxRetries']??0x5,'maxChunkSize':fS['maxChunkSize']??dH,'maxWorkerCount':fS['maxWorkerCount']??0x4,'resume':dS(fS['resume']),'proxy':fS['proxy'],'requestInit':fS['requestInit'],'fetchFn':fS['fetchFn']}),dU={'total':{'b':0x0,'mb':0x0},'current':{'b':0x0,'mb':0x0},'chunkSize':0x0,'chunkSizes':[],'averageSize':{'b':0x0,'mb':0x0},'averageTotal':{'b':0x0,'mb':0x0},'speed':{'bps':0x0,'mbps':0x0}},dV=fS=>{let fT=Math['floor'](fS/0xe10),fU=Math['floor'](fS%0xe10/0x3c),fV=fS%0x3c,fW=fT>0x0?fT+'h':'',fX=fU>0x0?fU+'m':'',fY=fV>0x0?fV+'s':'';return fT>0x0?fW+'\x20'+(fX||'0m')+'\x20'+(fY&&''+fY):!fT&&fU>0x0?fX+'\x20'+(fY&&''+fY):fY;},dW=(fS=0x0)=>{let fT=structuredClone(dU),fU=0x0,fV=setInterval(()=>{const iP=b;fU>0x1&&(fT[iP(0x274)]['bps']=fT['current']['b']/fU),fU+=0.5;},0x1f4);return{'state':fT,'setTotal':fW=>{fT['total']['b']=fW,fT['total']['mb']=fW/0x400/0x400;},'setCurrent'(fW){const iQ=b;fT['current']['b']=fW,fT[iQ(0x2f6)]['mb']=fW/0x400/0x400;},'increase'(fW){const iR=b;fT['current']['b']+=fW,fT['current']['mb']=fT['current']['b']/0x400/0x400,fT['speed']['mbps']=fT['speed']['bps']/0x400/0x400,fT[iR(0x20a)]=fW,fT['chunkSizes']['push'](fW),fT['averageSize']['b']=fT['current']['b']/fT['chunkSizes']['length'],fT['averageSize']['mb']=fT['averageSize']['b']/0x400/0x400,fT['averageTotal']['b']=fS*fT['averageSize']['b'],fT['averageTotal']['mb']=fT['averageTotal']['b']/0x400/0x400;},'stop'(){clearInterval(fV),Object['assign'](fT,dU);},'log'(){let fW=fT['current']['b'],fX=fT['total']['b'],fY=fW+(fX?'/'+fX:'');stdout['write']('\x0dDownloading\x20['+fY+']');},'stopLog'(){stdout['write']('\x0a');},'toString'(){let fW='';fT['speed']['bps']&&(fW+=fT['speed']['mbps']['toFixed'](0x1)+'\x20MB/s\x20–\x20'),fW+=''+fT['current']['mb']['toFixed'](0x1),fT['total']['b']?fW+='\x20of\x20'+fT['total']['mb']['toFixed'](0x1)+'\x20MB':fW+='\x20MB';let fX=fT['total']['b']||fT['averageTotal']['b'];if(fX){let fY=fX-fT['speed']['bps']*fU,fZ=Math['round'](fY/fT['speed']['bps']),g0=dV(fZ);fZ&&isFinite(fZ)&&g0&&(fW+=',\x20'+g0+'\x20left');}return fW;},'toProgressInfo'(){const iS=b;let fW=fT['total']['b']||null;return{'bytesDownloaded':fT['current']['b'],'totalBytes':fW,'percentComplete':fW?fT['current']['b']/fW*0x64:null,'bytesPerSecond':fT['speed']['bps'],'estimatedSecondsRemaining':fT['speed']['bps']>0x0&&fW?(fW-fT[iS(0x2f6)]['b'])/fT['speed'][iS(0x2e6)]:null};}};},dX=new Set(['authorization','cookie',gz(0x270),'x-amz-date','x-amz-security-token','x-amz-content-sha256','x-goog-date','x-goog-security-token']),dY=(fS,fT={})=>{if(!fS)return[];let fU=fT['includeVolatile']??!0x1,fV=[];return new Headers(fS)['forEach']((fW,fX)=>{!fU&&dX['has'](fX['toLowerCase']())||fV['push']([fX,fW]);}),fV['sort'](([fW],[fX])=>fW['localeCompare'](fX)),fV;},dZ=fS=>{const iT=gz;try{let fT=new URL(fS),fU=fT['pathname']['split']('/')['map'](fV=>fV&&(fV[iT(0x220)]('=')||fV[iT(0x220)](',')?':volatile':fV))['join']('/');return''+fT['origin']+fU;}catch{let fV=String(fS);return(fV['split']('#')[0x0]??fV)[iT(0x268)]('?')[0x0]||fV;}},e0=fS=>({'url':dZ(fS['url']),'start':fS['start'],'end':fS['end'],'output':fS['output'],'headers':dY(fS['headers'])}),e1=fS=>{const iU=gz;let fT={'input':Array['isArray'](fS['input'])?fS['input']['map'](fU=>e0(fU)):dZ(String(fS['resolvedUrl'])),'requestHeaders':dY(fS['requestHeaders']),'parts':fS[iU(0x229)]['map'](fU=>e0(fU)),'maxWorkerCount':fS['maxWorkerCount'],'maxChunkSize':fS['maxChunkSize']};return createHash('sha1')['update'](JSON['stringify'](fT))['digest']('hex');},e2=async fS=>{const iV=gz;if(!fS['manager'])return null;let fT={'input':Array['isArray'](fS['input'])?fS['input']:fS['resolvedUrl'],'parts':fS['parts'],'bytesTotal':fS['bytesTotal'],'sourceSignature':fS['sourceSignature'],'planner':{'maxWorkerCount':fS['maxWorkerCount'],'maxChunkSize':fS['maxChunkSize']}},fU=await fS['manager']['read'](),fV=(fU?fS['manager']['reconcileState'](fU,fT):null)?.[iV(0x2c5)]??fS['manager']['createState'](fT);return await fS[iV(0x2af)]['write'](fV),fV;},e3=fS=>{if(fS&&!fS['parts']['every'](fT=>fT['completed']))throw Error('Not\x20all\x20segments\x20were\x20downloaded\x20successfully.\x20Try\x20resuming\x20later.');},e4=fS=>{const iW=gz;if(Array['isArray'](fS['input']))return fS['input']['map']((fT,fU)=>({...fT,'output':dI(fS['url'],fS['tempFileDir'],fU)}));if(!fS['acceptsRanges'])throw Error('Unable\x20to\x20get\x20parts');if(!fS['size'])throw Error('Size\x20is\x20not\x20known');return dM({'url':fS['url'],'requestInit':fS['requestInit'],'contentLength':fS['size'],'maxWorkerCount':fS[iW(0x347)],'maxChunkSize':fS['maxChunkSize']});},e5=async fS=>{const iX=gz;if(!fS[iX(0x229)]['some'](fU=>typeof fU[iX(0x282)]=='number'&&(fU['output']??fS['output'])===fS['output'])||await Q['stat'](fS['output'])['then'](()=>!0x0)['catch'](()=>!0x1))return;let fT=await Q['open'](fS['output'],'w');fS['size']&&fS['size']>0x0&&await fT['truncate'](fS['size']),await fT['close']();},e6=()=>{const iY=gz;let fS=Error(iY(0x2fb));return fS['name']='AbortError',fS;},e7=fS=>{const iZ=gz;let fT=fS['match'](/bytes\s+(\d+)-(\d+)\/(\d+|\*)/i);if(!fT||!fT[0x1]||!fT[0x2]||!fT[0x3])return null;let fU=parseInt(fT[0x1],0xa),fV=parseInt(fT[0x2],0xa),fW=fT[0x3];if(!Number[iZ(0x275)](fU)||!Number[iZ(0x275)](fV)||fV<fU)return null;if(fW==='*')return{'start':fU,'end':fV,'total':null};let fX=parseInt(fW,0xa);return!Number['isFinite'](fX)||fX<=0x0?null:{'start':fU,'end':fV,'total':fX};},e8=(fS,fT)=>{const j0=gz;if(typeof fT['start']!='number'||typeof fT['end']!='number')return;if(fS['status']!==0xce)throw Error('Range\x20request\x20failed\x20for\x20bytes='+fT['start']+'-'+fT['end']+j0(0x20f)+fS['status']);let fU=fS['headers']['get']('content-range');if(!fU)throw Error('Range\x20request\x20failed\x20for\x20bytes='+fT['start']+'-'+fT['end']+':\x20missing\x20Content-Range\x20header');let fV=e7(fU);if(!fV)throw Error('Range\x20request\x20failed\x20for\x20bytes='+fT['start']+'-'+fT['end']+':\x20invalid\x20Content-Range\x20\x22'+fU+'\x22');if(fV['start']!==fT['start']||fV['end']!==fT[j0(0x2d7)])throw Error('Range\x20request\x20failed\x20for\x20bytes='+fT['start']+'-'+fT['end']+':\x20got\x20bytes='+fV['start']+'-'+fV[j0(0x2d7)]);},e9=async(fS,fT,fU)=>{const j1=gz;let fV=fS['headers']['get'](j1(0x2ee));if(fV){let fX=parseInt(fV,0xa);if(Number['isFinite'](fX)&&fX>0x0)return fX;}let fW=fS['headers']['get']('content-range');if(fW){let fY=fW['match'](/bytes\s+(\d+)-(\d+)\//i);if(fY&&fY[0x1]&&fY[0x2]){let fZ=parseInt(fY[0x1],0xa),g0=parseInt(fY[0x2],0xa);if(Number['isFinite'](fZ)&&Number['isFinite'](g0)&&g0>=fZ)return g0-fZ+0x1;}}return typeof fT['start']=='number'&&typeof fT['end']=='number'?Math['max'](0x0,fT['end']-fT['start']+0x1):fT['output']&&fT['output']!==fU?Q['stat'](fT['output'])['then'](g2=>g2['size'])['catch'](()=>0x0):0x0;},ea=(fS,fT)=>fS['map']((fU,fV)=>fV)['filter'](fU=>!(fT?.['parts'][fU]?.[gz(0x2e3)]??!0x1)),eb=fS=>{const j2=gz;let fT=Promise['resolve']();return{'enqueue':()=>(fT=fT[j2(0x26c)](fS),fT),'onIdle':()=>fT};},ec=async fS=>{const j6=gz;let fT=fS['signal']??fS['requestInit']?.['signal']??void 0x0,fU=()=>{const j3=b;if(fT?.[j3(0x29f)])throw e6();};fU();let fV=ea(fS['parts'],fS['resumeState']),fW=dl['promise'](async g5=>{const j4=b;let {index:g6,part:g7}=g5;fU();let g8=await dP({'index':g6,'client':fS['client'],'url':g7['url'],'requestInit':{...fS['requestInit'],'signal':fT,'headers':g7['headers']??fS['requestInit']?.['headers']}});if(fU(),e8(g8,g7),await dQ(g7['output']??fS['output'],g7['start'],fT)(g8),dR(fS['progress'],fS[j4(0x2f5)],fT)(g8),fU(),fS['resumeState']&&fS['resumeManager']){let g9=await e9(g8,g7,fS['output']);fS['resumeManager']['markPartCompleted'](fS['resumeState'],g6,g9),await g0['enqueue']();}},fS['maxWorkerCount']),fX=()=>{fW['pause'](),fW['killAndDrain'](),fW['kill']();};if(fT?.['aborted'])throw fX(),e6();let fY=()=>{},fZ=fT?new Promise((g5,g6)=>{const j5=b;let g7=()=>{fX(),g6(e6());};fT[j5(0x217)]('abort',g7,{'once':!0x0}),fY=()=>fT['removeEventListener']('abort',g7);}):null,g0=eb(async()=>{!fS['resumeState']||!fS['resumeManager']||await fS['resumeManager']['write'](fS['resumeState']);}),g2=fV['map'](g5=>{let g6=fS['parts'][g5];return g6?(fU(),fW['push']({'index':g5,'part':g6})):Promise['resolve']();}),g3=[];try{let g5=Promise['allSettled'](g2);fZ&&(await Promise['race']([g5,fZ]),fU()),g3=await g5;}finally{fY(),await g0['onIdle']();}let g4=g3[j6(0x315)](g6=>g6[j6(0x30e)]==='rejected');if(g4?.['status']==='rejected')throw g4['reason'];},ed=async(fS,fT)=>{await new Promise((fU,fV)=>{let fW=K['createReadStream'](fS),fX=()=>{fT['off']('error',fY),fW['off']('error',fZ),fW['off']('end',g0);},fY=g2=>{fX(),fV(Error('Output\x20write\x20stream\x20error',{'cause':g2}));},fZ=g2=>{fX(),fV(Error('Segment\x20read\x20stream\x20error',{'cause':g2}));},g0=()=>{fX(),fU();};fT['on']('error',fY),fW['on']('error',fZ),fW['on']('end',g0),fW['pipe'](fT,{'end':!0x1});});},ee=async fS=>{const j7=gz;let fT=fS[j7(0x229)][j7(0x348)](fV=>fV['output'])['filter'](fV=>!!fV&&fV!==fS['output']);if(!fT['length'])return;let fU=K['createWriteStream'](fS['output']);for(let fV of fT)await ed(fV,fU);fU['end'](),await finished(fU);},ef=async fS=>{const j8=gz;if(!fS['expectedSize'])return;let fT=await Q['stat'](fS['output'])['then'](fU=>fU['size'])[j8(0x208)](()=>null);if(fT&&fT!==fS['expectedSize'])throw Error('Actual\x20size\x20'+fT+'\x20doesn\x27t\x20match\x20expected\x20size\x20'+fS['expectedSize']);},eg=async fS=>{fS['resumeManager']&&fS['resumeManager']['cleanupOnSuccess']&&await fS['resumeManager']['delete'](),await dt(fS['tempFileDir']);},eh=async fS=>{const j9=gz;let fT=e1({'input':fS['input'],'resolvedUrl':fS['url'],'parts':fS['parts'],'requestHeaders':fS['requestInit']?.['headers'],'maxWorkerCount':fS['maxWorkerCount'],'maxChunkSize':fS['maxChunkSize']}),fU=await e2({'manager':fS['resumeManager'],'input':fS['input'],'resolvedUrl':fS['url'],'parts':fS['parts'],'bytesTotal':fS['size']??void 0x0,'sourceSignature':fT,'maxWorkerCount':fS['maxWorkerCount'],'maxChunkSize':fS['maxChunkSize']}),fV=dW(fS['parts']['length']);fS['size']&&fV['setTotal'](fS['size']),fU?.['bytesDownloaded']&&fV['setCurrent'](fU['bytesDownloaded']),await e5({'output':fS['output'],'size':fS['size'],'parts':fS['parts']});try{await ec({'parts':fS['parts'],'output':fS['output'],'maxWorkerCount':fS['maxWorkerCount'],'client':fS['client'],'requestInit':fS['requestInit'],'progress':fV,'onProgress':fS['onProgress'],'resumeState':fU,'resumeManager':fS['resumeManager'],'signal':fS['signal']});}finally{fV[j9(0x289)](),fS['onProgress']||fV['stopLog']();}e3(fU),await ee({'output':fS['output'],'parts':fS['parts']}),await ef({'output':fS['output'],'expectedSize':Array['isArray'](fS['input'])?null:fS['size']}),await eg({'tempFileDir':fS['tempFileDir'],'resumeManager':fS['resumeManager']});},ei=async fS=>{const ja=gz;let fT=new Headers(fS['requestInit']?.['headers']);fT['set']('Range','bytes=0-0');let fU=Array['isArray'](fS[ja(0x24a)])?fS[ja(0x24a)][0x0]?.['url']:fS['input'];if(!fU)throw Error('Input\x20is\x20empty');let fV=await fS['client'][ja(0x34b)](fU,{...fS['requestInit'],'headers':fT}),fW=fV['headers']['get']('content-type'),fX=fV['headers'][ja(0x285)]('content-length'),fY=fV['headers']['get']('content-range'),fZ=fY?.['split']('/')?.[0x1]||fX,g0=fZ&&!Array['isArray'](fS[ja(0x24a)])?parseInt(fZ,0xa):null,g2=fV['headers']['get']('accept-ranges')===ja(0x30f)||!!fY?.['includes']('bytes')||!!fW?.['includes'](ja(0x205))||!!fW?.['includes']('audio')||!!fW?.[ja(0x220)]('octet-stream');return{'url':fV['url'],'size':g0,'acceptsRanges':g2};};var ej=class gx{['input'];['output'];['resume'];['onProgress'];['config'];['client'];['resumeManager'];['probe'];[gz(0x20d)];constructor(fS){const jb=gz;this['input']=fS['input'],this['output']=fS['output'],this['resume']=fS['resume'],this['onProgress']=fS[jb(0x2f5)],this['config']=dT(fS),this['client']=dn({'maxRetries':this['config']['maxRetries'],'proxy':this['config']['proxy'],'fetch':this['config']['fetchFn']}),this['config']['resume']['enabled']&&(this['resumeManager']=new dG({'output':this['output'],'key':this['config']['resume']['key'],'filePath':this['config']['resume']['filePath'],'store':this['config']['resume'][jb(0x2f7)],'cleanupOnSuccess':this['config']['resume'][jb(0x2e7)]}));}static async['init'](fS){let fT=new gx(fS);return await fT['_init'](),fT;}async['_init'](){const jc=gz;this['probe']=await ei({'client':this['client'],'input':this[jc(0x24a)],'requestInit':this['config']['requestInit']}),await ds(this['output']),this['tempFileDir']=await dq(this[jc(0x310)],this['config'][jc(0x233)]),this[jc(0x328)]['resume'][jc(0x218)]||(await dt(this['output'],du(this['output']),this[jc(0x20d)]),this['tempFileDir']=await dq(this['output'],this[jc(0x328)][jc(0x233)]));}async['execute'](){const jd=gz;if(!this['probe']||!this['tempFileDir'])throw Error('Download\x20was\x20not\x20initialized.\x20Use\x20Download.init(options).');try{let fS=e4({'input':this[jd(0x24a)],'url':this['probe']['url'],'size':this['probe']['size'],'acceptsRanges':this['probe']['acceptsRanges'],'requestInit':this['config']['requestInit'],'tempFileDir':this['tempFileDir'],'maxWorkerCount':this[jd(0x328)]['maxWorkerCount'],'maxChunkSize':this['config']['maxChunkSize']});await eh({'input':this['input'],'output':this['output'],'url':this['probe']['url'],'size':this['probe']['size'],'requestInit':this['config']['requestInit'],'maxWorkerCount':this['config']['maxWorkerCount'],'maxChunkSize':this['config']['maxChunkSize'],'onProgress':this[jd(0x2f5)],'client':this['client'],'parts':fS,'tempFileDir':this['tempFileDir'],'resumeManager':this['resumeManager'],'signal':this['config']['requestInit']?.['signal']??void 0x0});}finally{await this['close']();}}async['getSize'](){if(this['probe']||=await ei({'client':this['client'],'input':this['input'],'requestInit':this['config']['requestInit']}),!this['probe']['size'])throw Error('Size\x20is\x20not\x20known');return this['probe']['size'];}async['close'](){await this['client']['close']();}};const ek=async({attempts:fS,fn:fT,shouldRetry:fU,onRetry:fV})=>{let fW=Math['max'](0x1,Math['trunc'](fS)),fX;for(let fY=0x1;fY<=fW;fY+=0x1)try{return await fT(fY);}catch(fZ){if(fX=fZ,fY>=fW||!fU?.(fZ,fY))throw fZ;await fV?.(fZ,fY);}throw fX instanceof Error?fX:Error(String(fX));},el=()=>{const je=gz;if(process['platform']==='win32'&&!isatty(process['stderr']['fd'])&&ab()?.['getConsoleSize']?.()?.[je(0x1f5)])try{let fS=a9('nanospinner/dist/consts.js');fS&&fS['isTTY']===!0x1&&(fS['isTTY']=!0x0,fS['symbols']?.['frames']?.['length']===0x1&&(fS['symbols']['frames']=['-','\x5c','|','/']));}catch{}},em=fS=>{const jf=gz;let fT=process['stderr'];if(!fS||process['platform']!=='win32')return fT;if(!fT['columns']||fT[jf(0x1f5)]!==fS){let fU=Object['getOwnPropertyDescriptor'](fT,jf(0x1f5))??Object['getOwnPropertyDescriptor'](Object['getPrototypeOf'](fT),'columns');if(!fU||fU['writable']||fU['set'])try{fT['columns']=fS;}catch{}if(fT['columns']!==fS){let fV=Object['create'](fT);return Object['defineProperty'](fV,'columns',{'value':fS,'configurable':!0x0,'enumerable':!0x0,'writable':!0x0}),B['warn']('Unable\x20to\x20override\x20stderr.columns;\x20using\x20spinner-local\x20width\x20'+fS+'.'),fV;}}return fT;},en={'debug':gz(0x293),'info':'green','warn':'yellow','error':'red'},eo=fS=>{let fT=fS['toUpperCase'](),fU=O[en[fS]];return fU(fT);},ep=(fS,fT)=>typeof fT==gz(0x21a)?fS+'\x20'+fT:fT&&{...fT,'text':(fS+'\x20'+(fT['text']??''))['trimEnd']()},eq=(fS,fT)=>{const jg=gz;el();let fU=D(eo('info')),fV=createSpinner(fS,{'stream':em(ab()?.['getConsoleSize']?.()?.['columns']??process['stderr']['columns']??process['stdout']['columns']??(process[jg(0x294)]==='win32'?0x78:0x50))})['start']({'text':fU+'\x20'+fS,'color':fT}),fW=fV[jg(0x34c)][jg(0x219)](fV),fX=fV['success'][jg(0x219)](fV),fY=fV['error']['bind'](fV);return fV['update']=fZ=>fW(ep(fU,fZ)),fV['success']=fZ=>fX(ep(fU,fZ)),fV['error']=fZ=>fY(ep(fU,fZ)),fV;},er=0x10,es=fS=>{if(!(!fS||typeof fS!='object'||!('drm'in fS)))return fS['drm']?.['widevine']?.['pssh'];},et=(fS,fT)=>createHash('sha1')['update'](fS+':'+cr(fT))['digest']('hex'),eu=({outputDirectory:fS,resolvedFilenameWithoutExtension:fT,track:fU})=>join(fS,fT+'.'+createHash('sha256')['update'](cr(fU))['digest']('hex')['slice'](0x0,0x6)+'.'+(fU['type']==='subtitle'?gz(0x1fa):fU['type']==='audio'?'m4a':gz(0x223))),ev=(fS,fT)=>{if(fT)return{'Range':'bytes='+fS+'-'+(fS+fT-0x1)};},ew=async fS=>{const jh=gz;if(fS['sourceUrl']&&!fS['inputTrack'])return fS['sourceUrl'];let fT=[],fU=await cP(fS),fV=fU[0x0];fV?.['initSegment']&&fT['push']({'url':fV['initSegment']['location']['path'],'headers':ev(fV['initSegment']['location']['offset'],fV['initSegment']['location']['length'])});for(let fW of fU)fT[jh(0x2cc)]({'url':fW['location']['path'],'headers':ev(fW['location']['offset'],fW['location']['length'])});return!fT['length']&&fS['sourceUrl']?fS['sourceUrl']:fT['length']===0x1&&!fT[0x0]?.['headers']?fT[0x0]['url']:fT;},ex=fS=>{let fT=Math['max'](0x1,Math['trunc'](fS)),fU=Math['min'](er,fT);return{'normalizedRequestedConnections':fT,'maxWorkerCount':fU,'wasClamped':fT!==fU};},ey=fS=>Math[gz(0x1e0)](0x1,Math['trunc'](fS)+0x1),ez=(fS,fT)=>fT['origin']==='manifest'?{'enabled':!0x0,'key':et(fS,fT)}:!0x0,eA=({title:fS,progress:fT,track:fU,filepath:fV,target:fW})=>{const ji=gz;let fX={'b':fT['totalBytes']??NaN,'mb':(fT['totalBytes']??NaN)/0x400/0x400},fY={'b':fT['bytesDownloaded']??NaN,'mb':(fT['bytesDownloaded']??NaN)/0x400/0x400},fZ=fT['totalBytes']?Math['round'](fT['bytesDownloaded']/fT['totalBytes']*0x64):void 0x0;return{'title':fS,'total':fX,'current':fY,'percentage':fZ,'speed':{'bps':fT[ji(0x32c)]??NaN,'mbps':(fT['bytesPerSecond']??NaN)/0x400/0x400},'trackName':basename(fV),'trackPath':fV,'finalName':fW['finalName'],'finalPath':fW['finalPath'],'state':fZ===0x64?'downloaded':'downloading','quality':fU['type']==='video'&&fU['width']?fU[ji(0x248)]+'x'+fU['height']:void 0x0,'codec':fU['type']==='video'?fU['codec']??void 0x0:void 0x0};},eB=fS=>'Downloading\x20∙\x20'+((fS['bytesDownloaded']/0x400/0x400)['toFixed'](0x2)+'\x20MB')+(fS['totalBytes']?'\x20of\x20'+(fS['totalBytes']/0x400/0x400)['toFixed'](0x2)+gz(0x318):''),eC=fS=>fS['flatMap'](fT=>{let fU=fT['segments']?.[0x0],fV=es(fU?.['initSegment']?.['encryption'])??es(fU?.['encryption']);return fV?[fV]:[];})['map'](fT=>{const jj=gz;let fU=fT;return typeof fU=='string'?fU:fU instanceof Uint8Array||fU instanceof ArrayBuffer?Buffer['from'](fU)['toString'](jj(0x2df)):ArrayBuffer['isView'](fU)?Buffer['from'](fU['buffer'])['toString']('base64'):String(fU);}),eD=(fS,fT)=>({'path':fT,'type':fS['type'],'language':fS[gz(0x240)],'label':fS['name']??void 0x0,'forced':fS['type']==='subtitle'?fS['forced']:!0x1}),eE=async({track:fS,filepath:fT,description:fU,target:fV,source:fW,options:fX,settings:fY,abortSignal:fZ,title:g0,emitProgress:g2})=>{const jk=gz;B['info'](fU),B['debug'](jk(0x331)+fT);let g3=fX[jk(0x2a1)]??fY['get'](jk(0x2a1))??0x1,{maxWorkerCount:g4,wasClamped:g5}=ex(g3);g5&&B['warn']('Connections\x20value\x20'+g3+'\x20was\x20clamped\x20to\x20'+g4+'\x20for\x20stability'),B['debug']('Max\x20worker\x20count:\x20'+g4);let g6=eq('Downloading','yellow'),g7='',g8=await ew(fS),g9=ey(fX['retry']??fY['get']('retry')??0x1);try{await ek({'attempts':g9,'fn':async()=>{const jl=jk;let ga=await ej['init']({'input':g8,'output':fT,'tempDir':l,'requestInit':{'headers':fW[jl(0x241)],'signal':fZ},'proxy':fX['proxyMedia']||fX['proxy']||void 0x0,'resume':ez(fW['url'],fS),'maxRetries':fX['retry'],'maxWorkerCount':g4,'onProgress':gb=>{g2(eA({'title':g0,'progress':gb,'track':fS,'filepath':fT,'target':fV})),g7=eB(gb),g6['update'](g7);}});if(fZ?.['aborted']){B['debug']('Track\x20download\x20skipped,\x20already\x20aborted:\x20'+fT);let gb=Error('The\x20operation\x20was\x20aborted');throw gb['name']='AbortError',gb;}await ga['execute']();},'shouldRetry':ga=>!(ga instanceof Error&&ga['name']===jk(0x29c)),'onRetry':async(ga,gb)=>{let gc=ga instanceof Error?ga['message']:String(ga);B['warn']('Track\x20download\x20retry\x20'+gb+'/'+(g9-0x1)+'\x20scheduled\x20for\x20'+fT+':\x20'+gc);}}),g6['success'](g7);}catch(ga){if(g6['error'](fU),ga instanceof Error&&ga['name']==='AbortError')throw ga;let gb=ga instanceof Error?ga['message']:String(ga);throw B['error']('Download\x20track\x20failed:\x20'+gb),ga instanceof Error&&ga['stack']?B[jk(0x334)](ga['stack']):B['debug'](gb),ga instanceof Error?ga:Error(gb);}},eF=fS=>fS instanceof Error&&fS['name']==='AbortError',eG=fS=>!!fS&&typeof fS=='object'&&'aborted'in fS&&'addEventListener'in fS&&typeof fS['addEventListener']=='function';var eH=class extends S{#e;#t;#n;#r;#i;#a;constructor({settings:fS,downloadsStorage:fT}){super(),this.#i=fS,this.#a=fT;}async['start'](fS,fT,fU={'id':crypto['randomUUID']()},fV,fW){const jm=gz;eG(fV)?(this.#r=new AbortController(),fV['addEventListener']('abort',()=>{this.#r?.['abort']();})):this.#r=void 0x0;let fX=new C({'proxyUrl':fS['proxy']||fS['proxyMeta']||void 0x0});this.#e={...fS},this.#t=fT,this.#n={...fU};let fY;try{this.#o();let fZ=await di(fX,this.#t);fZ['matchedContentLabel']&&B['info']('Content\x20Matched:\x20'+fZ[jm(0x267)]),B['info']('Parsing\x20streams...'),fY=await dg({'http':fX,'options':this.#e,'source':this.#t,'meta':this.#n,'input':fW,'detection':fZ}),this.#e=fY['options'],this.#n=fY['meta'],await aE(this.#i[jm(0x285)]('downloadDir'));let g0=cB({'settings':this.#i,'options':this.#e,'source':this.#t,'meta':this.#n,'allTracks':fY['allTracks']});return this.#s(g0['outputPath'],g0['resolvedFilenameWithoutExtension']),await this.#c(fY,g0);}catch(g2){if(eF(g2))throw g2;let g3=cw(g2);throw this['emit']('error',g3),g3;}finally{await fY?.['dispose']?.();}}#o(){const jn=gz;B['debug']('URL:\x20'+this.#t['url']);let fS='seasonNumber'in this.#n?this.#n['seasonNumber']:void 0x0,fT='episodeNumber'in this.#n?this.#n[jn(0x273)]:void 0x0,fU='episodeTitle'in this.#n?this.#n['episodeTitle']:'',fV=[this.#n['title'],fS?'S'+fS:'',fT?'E'+fT:'',fU]['filter'](Boolean)['join']('\x20∙\x20');fV&&B['info'](fV);}#s(fS,fT){const jo=gz;this['emit']('output-path',fS),B['debug']('Resolved\x20output\x20path:\x20'+fS);let fU=cA(this.#n),fV=this.#a[jo(0x257)](fS);fV&&(fV[jo(0x27d)]=fU['title']||fT),B['debug'](jo(0x316)),this['emit'](jo(0x282),this.#a['jobs']);}async #c(fS,fT){const jp=gz;B['debug']('Downloading\x20tracks');let fU=[];ct(fS[jp(0x206)]['all']);for(let fV of fS['tracks']['all']){let fW=eu({'outputDirectory':fT['outputDirectory'],'resolvedFilenameWithoutExtension':fT['resolvedFilenameWithoutExtension'],'track':fV}),fX=cq(fV,fT[jp(0x251)]);fV['type']==='subtitle'&&B['debug'](jp(0x253)+(fV['sourceUrl']??'manifest\x20subtitle\x20track')),await eE({'track':fV,'filepath':fW,'description':fX,'target':{'finalName':fT['filenameWithExtension'],'finalPath':fT['outputPath']},'source':this.#t,'options':this.#e,'settings':this.#i,'abortSignal':this.#r?.['signal'],'title':cA(this.#n)['title'],'emitProgress':fY=>{this['emit']('progress',fY,fT['outputPath']);}}),await aA(fW)&&fU['push'](eD(fV,fW));}return{'downloaded':fU,'psshList':eC(fS['tracks']['all']),'selectedTracks':fS['tracks']['all']};}};const eI=fS=>{const jq=gz;try{let fT=new URL(fS),fU=[...new Set(fT['searchParams'][jq(0x25e)]())],fV=fU['length']?'?'+fU['join'](','):'';return''+fT['origin']+fT['pathname']+fV;}catch{return fS;}},eJ=async(fS,fT)=>{const jr=gz;let {verbose:fU,url:fV,resolveLicense:fW}=fT,fX=Buffer['from'](fS,'base64'),fY='cenc',fZ=bp(bo(),'drm'),g0=new RemoteCdm({'keySystem':jr(0x22e),'baseUrl':fZ,'headers':{'Authorization':'Bearer\x20'+bJ['accessToken']}}),g2='initializing',g3=null;try{B['debug']('DRM\x20key\x20request\x20started:\x20license='+eI(fV)+',\x20remoteCdm='+eI(fZ)+',\x20psshLength='+fS['length']+',\x20initDataBytes='+fX['length']),g2='requesting-media-key-system-access';let g4=requestMediaKeySystemAccess(g0[jr(0x309)],[]);g2='creating-media-keys';let g5=await g4['createMediaKeys']({'cdm':g0});g2='creating-session',g3=g5['createSession'](),g2='generating-license-request',B['debug']('Generating\x20license\x20request...');let g6=g3['waitForLicenseRequest']();await g3['generateRequest']('cenc',fX);let g7=await g6;B['debug']('License\x20request\x20of\x20'+g7[jr(0x29a)]+jr(0x2ac)+g3['sessionId']),g2='requesting-license',B['debug']('Requesting\x20license\x20at\x20'+fV);let g8=await fW({'url':fV,'pssh':fS,'data':new Uint8Array(g7),'sessionId':g3['sessionId']});if(g8[0x0]===0x7b||g8[0x0]===0x3c){B[jr(0x334)]('License\x20response\x20is\x20not\x20binary');let ga=Buffer['from'](g8)['toString']('utf8');if(B['debug'](ga),ga['includes']('<html>'))throw Error('Invalid\x20license\x20response');}g2='updating-session',B['debug']('Updating\x20session...'),await g3[jr(0x34c)](new Uint8Array(g8)),g2='waiting-for-key-statuses-change',B['debug']('Waiting\x20for\x20key\x20statuses\x20change...');let g9=await g3['waitForKeyStatusesChange']();B['debug'](jr(0x2d5)+g9['length']),g2='closing-session',await g3['close'](),await g3['remove']();for(let gb of g9){let gc='Key:\x20'+gb['keyId']+':'+gb['key'];fU?B['info'](gc):B[jr(0x334)](gc);}return g9['map'](gd=>({'kid':gd['keyId'],'key':gd['key']}));}catch(gd){throw B['error']('Failed\x20to\x20get\x20DRM\x20content\x20keys\x20at\x20stage='+g2+'\x20for\x20license='+eI(fV)+'\x20via\x20remoteCdm='+eI(fZ)),cp('DRM\x20content\x20key\x20error',gd),gd;}finally{if(g3){try{await g3['close']();}catch{}try{await g3['remove']();}catch{}}}},eK=async({keys:fS,drm:fT,psshList:fU,drmDir:fV,resolveLicense:fW,licenseUrl:fX})=>{const js=gz;B['debug']('Extracting\x20decryption\x20keys');let fY=[],fZ=fT&&'keys'in fT?fT['keys']:[],g0=[...fS||[],...fZ];g0['length']&&fY['push'](...g0);let g2=fX??(fT&&'server'in fT?fT['server']:void 0x0);if(fW&&g2){let g3=[...new Set(fU??[])];for(let [g4,g5]of g3['entries']()){B['debug']('Resolving\x20DRM\x20keys\x20for\x20PSSH\x20'+(g4+0x1)+'/'+g3['length']+'\x20using\x20'+eI(g2)),B['debug']('PSSH:\x20'+g5);let g6=await eJ(g5,{'url':g2,'resolveLicense':fW,'clientDir':fV});g6&&g6['length']&&fY['push'](...g6);}fY['length']||(B[js(0x200)](js(0x321)),B[js(0x334)]('PSSH:\x20'+g3[js(0x333)](',\x20')));}return fY;};var eL=class{['strategy'];constructor(fS){this['strategy']=fS;}async['prepare'](){await this['strategy']['prepare']?.();}async['process'](fS){let fT=await this['strategy']['decryptFile'](fS);return fS['cleanup']&&await rm(fS['input'],{'force':!0x0}),fT;}};const eM=fS=>fS['replaceAll']('-','')['toLowerCase']();var eN=class{async['decryptFile'](fS){const jt=gz;let fT=new Map();for(let fU of fS['keys']){if(!fU['kid'])throw Error('Shifro\x20requires\x20a\x20KID\x20for\x20every\x20decryption\x20key');fT[jt(0x225)](eM(fU['kid']),eM(fU['key']));}return B[jt(0x334)](jt(0x322)+fS['input']),await(await Decryption['init']({'input':new X({'source':new FilePathSource(fS['input']),'keys':fT}),'output':new Y({'target':new FilePathTarget(fS['output'])})}))['execute'](),fS['output'];}};const eO=/(?:(.+?)\n)?((?:\d{2}:)?\d{2}:\d{2}\.\d{3})\s+-->\s+((?:\d{2}:)?\d{2}:\d{2}\.\d{3})([^\n]*)/g,eP=/^\uFEFF?WEBVTT(?:.|\n)*?\n{2}/,eQ=/(?:(\d{2}):)?(\d{2}):(\d{2})\.(\d{3})/,eR={'ar':gz(0x2f2),'de':'deu','en':'eng','es':'spa','fr':'fra','hi':'hin','it':'ita','ja':'jpn','ko':'kor','pl':'pol','pt':'por','ru':gz(0x2c2),'th':'tha','tr':'tur','uk':'ukr','und':'und','vi':'vie','zh':'zho'},eS=fS=>fS==='subtitle'||fS==='text',eT=fS=>{let fT=fS['trim']()['split'](':');if(fT['length']<0x2||fT['length']>0x3)throw Error('Invalid\x20trim\x20timestamp:\x20'+fS);let fU=Number(fT['at'](-0x1)),fV=Number(fT['at'](-0x2)),fW=fT['length']===0x3?Number(fT[0x0]):0x0;if(![fW,fV,fU]['every'](fX=>Number['isFinite'](fX)&&fX>=0x0))throw Error('Invalid\x20trim\x20timestamp:\x20'+fS);return fW*0xe10+fV*0x3c+fU;},eU=fS=>{const ju=gz;let fT=eQ[ju(0x2e9)](fS);if(!fT)throw Error('Invalid\x20WebVTT\x20timestamp:\x20'+fS);return 0xe10*0x3e8*Number(fT[0x1]||'0')+0x3c*0x3e8*Number(fT[0x2])+0x3e8*Number(fT[0x3])+Number(fT[0x4]);},eV=fS=>{let fT=Math['floor'](fS/(0xe10*0x3e8)),fU=Math['floor'](fS%(0xe10*0x3e8)/(0x3c*0x3e8)),fV=Math['floor'](fS%(0x3c*0x3e8)/0x3e8),fW=fS%0x3e8;return fT['toString']()['padStart'](0x2,'0')+':'+fU['toString']()['padStart'](0x2,'0')+':'+fV['toString']()['padStart'](0x2,'0')+'.'+fW['toString']()['padStart'](0x3,'0');},eW=fS=>{const jv=gz;let fT=[fS['invalidEntries']?.['length']?fS['invalidEntries'][jv(0x29a)]+jv(0x330):void 0x0,fS['invalidTimecodes']?.['length']?fS['invalidTimecodes'][jv(0x29a)]+'\x20invalid\x20timecodes':void 0x0,fS[jv(0x20e)]?.['length']?fS['invalidIndices']['length']+'\x20invalid\x20indices':void 0x0,fS['timecodeIssues']?.['reversedTimecodes']?.['length']?fS['timecodeIssues']['reversedTimecodes']['length']+jv(0x305):void 0x0,fS['timecodeIssues']?.['overlappingTimecodes']?.['length']?fS['timecodeIssues'][jv(0x254)]['length']+jv(0x22f):void 0x0]['filter'](Boolean);return fT['length']?'\x20('+fT['join'](',\x20')+')':'';},eX=fS=>{const jw=gz;let fT=fS['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')['trim']();if(eP[jw(0x1ff)](fT))return fT;let {subtitle:fU,status:fV}=convert(fS,'.vtt');if(!fV['success'])throw Error('Failed\x20to\x20convert\x20subtitle\x20to\x20WebVTT'+eW(fV)+'.');return fU['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')[jw(0x29e)]();},eY=fS=>{const jx=gz;if(!fS)return;let fT=fS[jx(0x29e)]()['toLowerCase']();if(!fT)return;let fU=fT['split']('-')[0x0]??fT;return/^[a-z]{3}$/['test'](fU)?fU:eR[fU];},eZ=fS=>{switch(extname(fS)['toLowerCase']()){case'.mp4':return new Mp4OutputFormat();case'.mkv':return new MkvOutputFormat();default:throw Error('Unsupported\x20mux\x20output\x20format:\x20'+fS);}},f0=fS=>new V({'formats':U,'source':cD(fS)}),f1=fS=>{let fT=fS['trimBegin']?eT(fS['trimBegin']):void 0x0,fU=fS['trimEnd']?eT(fS['trimEnd']):void 0x0;if(fT!==void 0x0&&fU!==void 0x0&&fU<=fT)throw Error('trimEnd\x20must\x20be\x20greater\x20than\x20trimBegin');return{'trimBegin':fT,'trimEnd':fU};},f2=async(fS,fT,fU,fV,fW)=>{const jy=gz;let fX=f0(fT),fY=await fX['getPrimaryVideoTrack']();if(!fY)throw Error('Missing\x20video\x20track\x20in\x20'+fT);let fZ=fY['codec'];if(!fZ)throw Error(jy(0x202)+fT);if(fW!==void 0x0&&fW>=await fY['computeDuration']())throw Error('trimBegin\x20excludes\x20the\x20full\x20video\x20track\x20in\x20'+fT);let g0=new EncodedPacketSink(fY),g2=fW===void 0x0?await g0['getFirstKeyPacket']({'verifyKeyPackets':!0x0}):await g0['getKeyPacket'](fW,{'verifyKeyPackets':!0x0})??await g0['getFirstKeyPacket']({'verifyKeyPackets':!0x0});if(!g2)throw Error('No\x20video\x20packets\x20found\x20in\x20'+fT);let g3=new EncodedVideoPacketSource(fZ);return fS['addVideoTrack'](g3,{'disposition':fY['disposition'],'name':fU??fY['name']??void 0x0,'rotation':fV['supportsVideoRotationMetadata']?fY['rotation']:void 0x0}),{'kind':'video','input':fX,'sink':g0,'source':g3,'startPacket':g2,'startTimestamp':g2['timestamp'],'emit':async g4=>{let g5={'decoderConfig':await fY['getDecoderConfig']()??void 0x0},g6=!0x0;for await(let g7 of g0['packets'](g2,void 0x0,{'verifyKeyPackets':!0x0}))await g3['add'](g7['clone']({'timestamp':g7['timestamp']-g4}),g6?g5:void 0x0),g6=!0x1;g3['close']();}};},f3=async(fS,fT,fU,fV,fW)=>{let fX=f0(fT),fY=await fX['getPrimaryAudioTrack']();if(!fY)throw Error('Missing\x20audio\x20track\x20in\x20'+fT);let fZ=fY['codec'];if(!fZ)throw Error('Unknown\x20audio\x20codec\x20in\x20'+fT);if(fW!==void 0x0&&fW>=await fY['computeDuration']())throw Error('trimBegin\x20excludes\x20the\x20full\x20audio\x20track\x20in\x20'+fT);let g0=new EncodedPacketSink(fY),g2=fW===void 0x0?await g0['getFirstPacket']():await g0['getPacket'](fW)??await g0['getFirstPacket']();if(!g2)throw Error('No\x20audio\x20packets\x20found\x20in\x20'+fT);let g3=new EncodedAudioPacketSource(fZ);return fS['addAudioTrack'](g3,{'disposition':fY['disposition'],'languageCode':eY(fU)??eY(fY['languageCode']),'name':fV??fY['name']??void 0x0}),{'kind':'audio','input':fX,'sink':g0,'source':g3,'startPacket':g2,'startTimestamp':g2['timestamp'],'emit':async g4=>{let g5={'decoderConfig':await fY['getDecoderConfig']()??void 0x0},g6=!0x0;for await(let g7 of g0['packets'](g2))await g3['add'](g7['clone']({'timestamp':g7['timestamp']-g4}),g6?g5:void 0x0),g6=!0x1;g3['close']();}};},f4=(fS,{trimBegin:fT,trimEnd:fU,commonStart:fV})=>{const jz=gz;let fW=fS['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')['trim']();if(!eP['test'](fW))throw Error('Only\x20WebVTT\x20subtitles\x20are\x20supported\x20by\x20the\x20MediaBunny\x20muxer.');let fX=fT===void 0x0?void 0x0:Math[jz(0x2ea)](fT*0x3e8),fY=fU===void 0x0?void 0x0:Math['round'](fU*0x3e8),fZ=Math['round'](fV*0x3e8);eO['lastIndex']=0x0;let g0=eO['exec'](fW),g2=fW['slice'](0x0,g0?.['index']??fW['length'])['trimEnd'](),g3=[],g4=g0?fW['slice'](g0['index']):'';for(;;){eO['lastIndex']=0x0;let g5=eO['exec'](g4);if(!g5)break;let g6=g5['index']+g5[0x0]['length'],g7=g4['indexOf']('\x0a',g6)+0x1,g8=g4[jz(0x23c)]('\x0a\x0a',g6);g8===-0x1&&(g8=g4['length']);let g9=g5[0x1]?.['trim'](),ga=g5[0x4]?.['trim'](),gb=g4['slice'](g7,g8)[jz(0x29e)](),gc=eU(g5[0x2]),gd=eU(g5[0x3]),ge=Math['max'](gc,fX??gc)-fZ,gf=Math['min'](gd,fY??gd)-fZ;if(gf>ge){let gg=eV(ge)+'\x20-->\x20'+eV(gf)+(ga?'\x20'+ga:'');g3[jz(0x2cc)]([g9,gg,gb]['filter'](Boolean)['join']('\x0a'));}g4=g4['slice'](g8)['trimStart']();}return[g2,...g3]['filter'](Boolean)['join']('\x0a\x0a');},f5=async(fS,fT,fU,fV,fW)=>{const jA=gz;if(fU['type']==='video')return f2(fS,fU['path'],fU['label'],fT,fV);if(fU['type']==='audio')return f3(fS,fU['path'],fU[jA(0x2ed)],fU['label'],fV);if(eS(fU['type'])){let fX=eX(await readFile(fU['path'],'utf8')),fY=new TextSubtitleSource('webvtt');return fS['addSubtitleTrack'](fY,{'disposition':fU['forced']?{'forced':!0x0}:void 0x0,'languageCode':eY(fU['language']),'name':fU['label']}),{'kind':'subtitle','source':fY,'emit':async fZ=>{const jB=jA;let g0=f4(fX,{'trimBegin':fV,'trimEnd':fW,'commonStart':fZ});await fY[jB(0x262)](g0),fY['close']();}};}throw Error(jA(0x2c8)+fU['type']);};var f6=class{async['mux'](fS){const jC=gz;let {trimBegin:fT,trimEnd:fU}=f1(fS),fV=eZ(fS['output']),fW=new Output({'format':fV,'target':cE(fS['output'])}),fX=[];try{for(let g0 of fS['inputs'])fX['push'](await f5(fW,fV,g0,fT,fU));let fY=fX['filter'](g2=>g2['kind']!=='subtitle');if(!fX['length'])throw Error('No\x20tracks\x20provided\x20for\x20muxing.');let fZ=fY['length']>0x0?Math['min'](...fY[jC(0x348)](g2=>g2['startTimestamp'])):fT??0x0;await fW['start']();for(let g2 of fX){if(g2[jC(0x33f)]==='subtitle'){await g2['emit'](fZ);continue;}await g2['emit'](fZ);}return await fW[jC(0x1f9)](),fS['output'];}catch(g3){throw await fW['cancel']()['catch'](()=>void 0x0),g3;}finally{for(let g4 of fX)g4['kind']!=='subtitle'&&g4['input']['dispose']();}}},f7=class{['strategy'];constructor(fS){this['strategy']=fS;}async['prepare'](){await this['strategy']['prepare']?.();}async['process'](fS){let fT=await this['strategy']['mux'](fS);if(fS['cleanup']){for(let fU of new Set(fS['inputs']['map'](fV=>fV['path'])))await rm(fU,{'force':!0x0});}return fT;}},f8=class{['fn'];['next']=null;constructor(fS){this['fn']=fS,this['next']=null;}},f9=class{['first']=null;['last']=null;constructor(){const jD=gz;this[jD(0x265)]=null,this['last']=null;}['add'](fS){let fT=new f8(fS);return this['first']?this['last']['next']=fT:this['first']=fT,this['last']=fT,this;}async['process'](fS){let fT=this['first'],fU=async()=>await fT['fn'](fS,async()=>{if(fT=fT['next'],fT)return await fU();throw Error('No\x20handler\x20detected');});return await fU();}};const fa=async(fS,fT)=>{const jE=gz;if(!fS['keys']['length'])return fT();let fU=eq(jE(0x22d)),fV=new eL(new eN());await fV['prepare']();for(let fW of fS['inputs']){let fX=extname(fW['path']),fY=fW['path']['replace'](fX,'.dec'+fX);if(!(fW['type']!=='video'&&fW['type']!=='audio')){if(await fV[jE(0x238)]({'input':fW['path'],'output':fY,'keys':fS['keys'],'type':fW['type'],'cleanup':!0x0}),!existsSync(fY))throw Error(jE(0x24f)+fW['path']+'.\x20Unable\x20to\x20find\x20'+fY);fW['path']=fY;}}fU['success']('Decrypted'),await fT();},fb=async(fS,fT)=>{if(fS['skipMux'])return fT();let fU=eq('Muxing'),fV=new f7(new f6());await fV['prepare'](),await fV['process']({'inputs':fS['inputs'],'output':fS['output'],'trimBegin':fS['trimBegin'],'trimEnd':fS['trimEnd'],'cleanup':!0x0}),existsSync(fS['output'])?(fU['success']('Muxed'),B['debug']('Muxed:\x20'+fS['output'])):fU['error']('Muxing\x20failed.\x20Output\x20file\x20not\x20found:\x20'+fS['output']);},fc=0x1,fd=0x4,fe=0x8,ff=0x10,fg=(fS,fT)=>Math['max'](fc,Math['trunc'](typeof fS=='number'&&Number['isFinite'](fS)?fS:fT)),fh=fS=>fS['includes'](gz(0x25a))?ff:fS['includes']('mediumConnectionsCount')?fe:fd,fi=({requestedConnections:fS,fallbackConnections:fT=fc,grantedBenefits:fU})=>{let fV=fg(fS,fg(fT,fc)),fW=fh(fU),fX=Math['min'](fV,fW);return{'connections':fX,'normalizedRequestedConnections':fV,'maxAllowedConnections':fW,'wasClamped':fX<fV};},fj=async fS=>{const jF=gz;let {grantedBenefits:fT}=await bU(),fU=null,fV=fT['includes']('parallelDownloads'),fW=fS['maxActiveDownloads']&&fS['maxActiveDownloads']>0x1;if(!fV&&fW&&(fU=Error('PARALLEL_DOWNLOADS_NOT_ALLOWED'),fS[jF(0x28f)]=0x1),fS['proxy']||fS['proxyMeta']||fS['proxyMedia']){let fX=fT['includes']('proxy'),fY=fS[jF(0x1e2)]||fS['proxyMeta']||fS['proxyMedia'];!fX&&fY&&(fU=Error(jF(0x21d)),delete fS['proxy'],delete fS['proxyMeta'],delete fS['proxyMedia']);}if(fS['videoContainerFormat']&&fS['videoContainerFormat']!=='mp4'&&(fT['includes']('customMuxFormat')||(fU=Error('CUSTOM_MUX_FORMAT_NOT_ALLOWED'),fS['videoContainerFormat']='mp4')),typeof fS['connections']=='number'){let {connections:fZ}=fi({'requestedConnections':fS['connections'],'grantedBenefits':fT});fS['connections']=fZ;}return{'error':fU,'data':fS};},fk=fS=>({'retry':fS['get']('retry'),'connections':fS['get']('connections'),'proxy':fS['get']('proxy'),'proxyMeta':fS['get']('proxyMeta'),'proxyMedia':fS['get']('proxyMedia'),'movieTemplate':fS['get']('movieFilenameTemplate'),'episodeTemplate':fS['get']('seriesFilenameTemplate'),'hardsub':fS[gz(0x285)]('preferHardsub'),'format':fS['get']('videoContainerFormat')}),fl=({options:fS,fallbackConnections:fT,grantedBenefits:fU})=>{let fV=fi({'requestedConnections':fS['connections'],'fallbackConnections':fT,'grantedBenefits':fU});return{'options':{...fS,'connections':fV['connections']},'limit':fV};},fm=({settings:fS,requestedOptions:fT,filePath:fU,grantedBenefits:fV})=>{let fW=fk(fS),{options:fX,limit:fY}=fl({'options':{...fW,...fT},'fallbackConnections':fW['connections'],'grantedBenefits':fV});return fU&&(fX['outputPath']=fU),{'baseOptions':fW,'options':fX,'limit':fY};};var fn=class{[gz(0x277)];['extensionManager'];['downloadsStorage'];['callbacks'];constructor(fS,fT,fU,fV){this['settings']=fS,this['extensionManager']=fT,this['downloadsStorage']=fU,this['callbacks']=fV;}async[gz(0x1e8)](fS,fT,fU){const jG=gz;let fV;try{fS['status']='downloading',await this['callbacks']['persistJob'](fS),this['callbacks']['emitStatusChanged'](fS);let {options:fW,limit:fX}=fm({'settings':this['settings'],'requestedOptions':fS['options'],'filePath':fS['filePath'],'grantedBenefits':fU});fX[jG(0x1ec)]&&B['warn']('Connections\x20value\x20'+fX['normalizedRequestedConnections']+'\x20exceeds\x20tier\x20limit\x20('+fX['maxAllowedConnections']+').\x20Using\x20'+fX[jG(0x2a1)]+'.');let fY=new eH({'settings':this['settings'],'downloadsStorage':this['downloadsStorage']});this.#e(fS,fT,fY);let fZ=fS['resource'];if(!fZ)throw Error('Download\x20job\x20is\x20missing\x20a\x20media\x20resource');let g0=fS['url']?await this['extensionManager']['getExtensionForUrl'](fS['url']):null,g2=fS['url']?await ci({'resource':fZ,'url':fS['url'],'options':fW,'extension':g0}):{'source':fZ['source']};fV=g2['input'],fZ['source']=g2[jG(0x301)],await this['callbacks']['persistJob'](fS),g0&&await bf(g0);let {downloaded:g3=[],psshList:g4,selectedTracks:g5}=await fY['start'](fW,g2['source'],fZ['metadata'],fT['signal'],g2['input']);if(fT['signal']['aborted'])return;if(!g3['length'])throw F['emit']('error',{'code':'NO_FILES_DOWNLOADED'}),Error('No\x20files\x20were\x20downloaded');g3['length']&&!fS['filePath']&&(fS['filePath']=g3[0x0]?.['path']),this['callbacks'][jG(0x2d6)](fS['id'],fS['filePath']);for(let g8 of g3)this['callbacks']['trackArtifact'](fS['id'],g8['path']);if(fS['status']!==jG(0x234))return;fS['status']='processing',this['callbacks']['emitStatusChanged'](fS);let g6=await this.#r({'job':fS,'options':fW,'psshList':g4??[],'selectedTracks':g5,'extension':g0,'resolvedEntry':g2['entry'],'resolvedInput':g2['input']}),g7=new f9();g7['add'](fa)['add'](fb),await g7['process']({'inputs':g3,'output':fS['filePath'],'keys':g6,'trimBegin':fW['trimBegin'],'trimEnd':fW['trimEnd'],'binariesDir':this['settings']['get']('binariesDir'),'skipMux':fW['skipMux']}),g0&&await bg(g0,{'skipMux':fW['skipMux']}),fS[jG(0x30e)]='completed',fS['progress']=0x64,this['callbacks']['emitStatusChanged'](fS),this['callbacks']['emitJobCompleted'](fS);}catch(g9){if(g9 instanceof Error&&g9['name']==='AbortError'){B['debug']('Download\x20was\x20aborted\x20(paused):\x20'+fS['id']);return;}let {normalizedError:ga,alreadyHandled:gb}=this.#t(fS,g9);if(this.#n(ga),gb)return;B['error']('Download\x20job\x20failed:\x20'+ga),cp('Download\x20job\x20failure',ga),this['callbacks']['emitStatusChanged'](fS),this['callbacks']['emitJobError'](fS,ga);}finally{await fV?.['dispose']?.();}}#e(fS,fT,fU){fU['on']('output-path',fW=>{const jH=b;fS['filePath']=fW,this[jH(0x1f4)]['trackArtifact'](fS['id'],fW),this['callbacks']['persistJob'](fS),B['debug']('Job\x20output\x20path\x20persisted\x20early:\x20id='+fS['id']+',\x20path='+fW);});let fV={};fU['on']('progress',fW=>{const jI=b;if(fT['signal']['aborted']||fS['status']!=='downloading')return;fV[fW['trackPath']]=fW,this['callbacks']['trackArtifact'](fS['id'],fW['trackPath']),this['callbacks']['trackArtifact'](fS['id'],fW['finalPath']);let fX=0x0,fY=0x0;for(let g0 in fV)fX+=fV[g0][jI(0x2f6)]['b'],fY+=fV[g0]['total']['b'];let fZ=fY>0x0?fX/fY*0x64:0x0;fS['filePath']=fW['finalPath'],fS['progress']=fZ,fS['downloadedBytes']=fX,fS['totalBytes']=fY,fW['quality']&&(fS['quality']=fW[jI(0x339)]),fW['codec']&&(fS['codec']=fW['codec']),this['callbacks']['emitProgress'](fS),this['callbacks']['persistJob'](fS);}),fU['on']('error',fW=>{const jJ=b;if(fS['status']==='paused'||fT['signal']['aborted'])return;let {normalizedError:fX,alreadyHandled:fY}=this.#t(fS,fW);fY||(B['error']('Downloader\x20process\x20failed:\x20'+fX[jJ(0x224)]),fX['stack']&&B['debug'](fX['stack']),this['callbacks']['emitStatusChanged'](fS),this['callbacks']['emitJobError'](fS,fX));});}#t(fS,fT){let fU=fT instanceof Error?fT:Error(String(fT)),fV=fS['status']==='error'&&fS['error']===fU['message'];return fV||(fS['status']='error',fS['error']=fU['message']),{'normalizedError':fU,'alreadyHandled':fV};}#n(fS){const jK=gz;(fS&&typeof fS=='object'&&'code'in fS?String(fS['code']):'')===jK(0x231)&&F['emit']('error',{'code':'DOWNLOAD_DIR_NOT_WRITABLE'});}async #r({job:fS,options:fT,psshList:fU,selectedTracks:fV,extension:fW,resolvedEntry:fX,resolvedInput:fY}){const jL=gz;let fZ=fS['resource']?.[jL(0x301)]?.[jL(0x252)]??fS['resource']?.['drm'];fS['resource']?.['drmPayload']&&fS['url']&&(fZ=await cj(fS['resource'],fT,fW));let g0=await this.#i({'extension':fW,'selectedTracks':fV,'resolvedEntry':fX,'resolvedInput':fY,'options':fT}),g2=await this.#a({'extension':fW,'selectedTracks':fV,'resolvedEntry':fX,'resolvedInput':fY,'options':fT}),g3=fZ&&'server'in fZ?c7(fZ):void 0x0,g4=g2['resolveLicense']??g3,g5=g2['licenseUrl']??(fZ&&'server'in fZ?fZ['server']:void 0x0);return eK({'keys':[...fT['keys']??[],...g0],'drm':fZ,'psshList':fU,'drmDir':this['settings']['get']('drmDir'),'resolveLicense':g4,'licenseUrl':g5})['catch'](g6=>{const jM=jL;throw B['error']('Failed\x20to\x20extract\x20decryption\x20keys\x20for\x20job\x20'+fS['id']),B['debug']('DRM\x20extraction\x20context:\x20title='+(fS['title']||fS['resource']?.[jM(0x30d)]?.['title']||'(unknown)')+',\x20drmServer='+(fZ&&jM(0x1f2)in fZ?fZ['server']:'(none)')+',\x20psshCount='+fU['length']+',\x20providedKeyCount='+(fT['keys']?.['length']??0x0)),g6 instanceof Error?(cp('DRM\x20extraction\x20failure',g6),g6['message']==='Unauthorized'&&F['emit'](jM(0x280),{'code':'DRM_UNAUTHORIZED'}),g6['message']===jM(0x215)&&F['emit']('error',{'code':'DRM_FORBIDDEN'})):B['debug'](String(g6)),g6;});}async #i({extension:fS,selectedTracks:fT,resolvedEntry:fU,resolvedInput:fV,options:fW}){const jN=gz;if(!fS||!fU||!fV)return[];let fX=bb(fS);if(typeof fX['drm']?.['getKeys']!='function')return[];let fY=new Map(),fZ={...fU,'input':fV};for(let g0 of fT){if(!g0['inputTrack'])continue;let g2=(await cP(g0)['catch'](()=>[]))[0x0],g3=g2?.[jN(0x237)]?.['encryption']??g2?.['encryption'],g4=[g3?.['drm']?.['widevine']?'widevine':null,g3?.['drm']?.['playready']?'playready':null,g3?.['drm']?.['fairplay']?'fairplay':null]['filter'](Boolean)[0x0];if(!g4)continue;let g5=await fX['drm']['getKeys']({'system':g4,'entry':fZ,'track':g0[jN(0x2c1)],'options':fW});for(let [g6,g7]of g5??[])fY['set'](g6,g7);}return Array['from'](fY,([g8,g9])=>({'kid':g8,'key':g9}));}async #a({extension:fS,selectedTracks:fT,resolvedEntry:fU,resolvedInput:fV,options:fW}){const jO=gz;if(!fS||!fU||!fV)return{};let fX=bb(fS);if(typeof fX['drm']?.['getLicense']!='function')return{};let fY=await this.#o(fT);if(!fY['size'])return{};let fZ={...fU,'input':fV};return{'licenseUrl':'extension://'+fS[jO(0x1e1)]['name']+'/license','resolveLicense':async({pssh:g0,data:g2})=>{let g3=fY['get'](g0);if(!g3)throw Error('No\x20DRM\x20track\x20binding\x20found\x20for\x20PSSH\x20'+g0);return await fX['drm']['getLicense']({'system':g3['system'],'entry':fZ,'track':g3['track'],'options':fW,'data':g2});}};}async #o(fS){let fT=new Map();for(let fU of fS){if(!fU['inputTrack'])continue;let fV=(await cP(fU)['catch'](()=>[]))[0x0],fW=fV?.['initSegment']?.['encryption']??fV?.['encryption'];for(let fX of[this.#s(fU,'widevine',fW?.['drm']?.['widevine']?.['pssh']),this.#s(fU,'playready',fW?.['drm']?.['playready']?.['pssh']),this.#s(fU,'fairplay',fW?.['drm']?.['fairplay']?.['pssh'])])!fX||fT['has'](fX['pssh'])||fT['set'](fX['pssh'],fX);}return fT;}#s(fS,fT,fU){const jP=gz;if(!fS['inputTrack']||!fU)return null;let fV=typeof fU=='string'?fU:fU instanceof Uint8Array||fU instanceof ArrayBuffer?Buffer['from'](fU)[jP(0x2f8)]('base64'):null;return fV?{'pssh':fV,'system':fT,'track':fS['inputTrack']}:null;}},fo=class extends S{['settings'];['extensionManager'];['downloadsStorage'];#e=new ck();#t=new Map();#n=null;#r;['maxActiveDownloads'];constructor(fS,fT,fU){const jQ=gz;super(),this['settings']=fS,this[jQ(0x32e)]=fT,this['downloadsStorage']=fU,this['maxActiveDownloads']=fS['get']('maxActiveDownloads'),this.#r=new fn(fS,fT,fU,{'persistJob':fV=>this['downloadsStorage']['update'](fV),'emitStatusChanged':fV=>this['emit']('job-status-changed',fV),'emitProgress':fV=>this[jQ(0x272)]('job-progress',fV),'emitJobError':(fV,fW)=>this[jQ(0x272)]('job-error',fV,fW),'emitJobCompleted':fV=>this['emit']('job-completed',fV),'trackArtifact':(fV,fW)=>this.#m(fV,fW)}),B['debug']('Created\x20download\x20manager\x20with\x20max\x20active\x20downloads:\x20'+this['maxActiveDownloads']);}async['initializeFromStorage'](){const jR=gz;let fS=new Set([jR(0x234),jR(0x312),'processing','pending','analyzing']);for(let fT of this['downloadsStorage']['jobs'])fT['status']==='paused'||fT['status']==='completed'||fT['status']==='error'||fS['has'](fT['status'])&&(fT['status']!=='queued'&&(fT['status']='queued',fT['error']=void 0x0,await this['downloadsStorage'][jR(0x34c)](fT)),this.#d(fT));this.#s();}async['analyze'](fS,fT={}){const jS=gz;if(!fS){let fV=Error('Cannot\x20prepare\x20job\x20without\x20a\x20URL.');throw this['emit']('error',fV),fV;}let fU=await ch(fS,fT,await this[jS(0x32e)]['getExtensionForUrl'](fS));if(!fU)throw Error(jS(0x2a2));return fU;}async['add'](fS){const jT=gz;if(!fS['url']&&!fS['resource'])throw Error('Job\x20must\x20have\x20either\x20a\x20URL\x20or\x20a\x20pre-prepared\x20resource.');let fT={'id':crypto['randomUUID'](),'status':'queued','progress':0x0,'downloadedBytes':0x0,'createdAt':new Date()[jT(0x1f8)](),...fS};B['debug']('Adding\x20new\x20job:\x20'+fT['id']),B['debug']('URL:\x20'+fT['url']),await this['downloadsStorage']['add'](fT),this['emit']('job-added',fT),this.#d(fT),this.#s();}async['pause'](fS){let fT=await this.#i(fS,'pause');fT&&B['debug']('Paused\x20download:\x20'+fT['id']);}async['resume'](fS){const jU=gz;let fT=this.#e['getActiveRun'](fS);if(fT){fT['cancellationReason']==='pause'||fT['controller']['signal']['aborted']?(this.#e[jU(0x2c0)](fS),B['debug']('Resume\x20queued\x20until\x20stop\x20completes:\x20'+fS)):B['debug']('Resume\x20skipped\x20while\x20job\x20is\x20active:\x20'+fS);return;}let fU=this.#y(fS);if(!fU){B['warn']('Resume\x20failed:\x20Job\x20'+fS+'\x20not\x20found');return;}if(fU['status']==='paused'){await this.#a(fU),B['debug'](jU(0x1f7)+fU['id']);return;}fU['status']==='error'&&await this.#o(fU)&&B['debug']('Retried\x20download:\x20'+fU['id']);}async['remove'](fS){await this.#i(fS,'remove'),await this['downloadsStorage']['delete'](fS),this.#t['delete'](fS);}async['removeWithFile'](fS){let fT=this.#y(fS),fU=await this.#i(fS,'remove-with-file')||fT,fV=this.#h(fS,fU);await this['downloadsStorage']['delete'](fS),await this.#_(fV),this.#t['delete'](fS);}async #i(fS,fT){const jV=gz;let fU=this.#f(fS),fV=this.#e['getActiveRun'](fS),fW=this.#y(fS);return fV?fT==='pause'&&fV['job']['status']!=='downloading'?(B['debug']('Pause\x20ignored\x20for\x20non-downloading\x20stage:\x20id='+fS+',\x20stage='+fV['job']['status']),fV['job']):(fV['cancellationReason']=fT,fT==='pause'&&(fV[jV(0x326)]['status']='paused',fV['job']['error']=void 0x0,await this['downloadsStorage']['update'](fV['job']),this['emit']('job-status-changed',fV['job'])),fV['controller']['abort'](),await fV['runPromise'],fV['job']):(fT==='pause'&&fW&&(fU||fW['status']==='queued')&&(fW['status']='paused',fW['error']=void 0x0,await this[jV(0x33a)]['update'](fW),this['emit']('job-status-changed',fW)),fW??void 0x0);}async #a(fS){const jW=gz;fS['status']='queued',fS[jW(0x280)]=void 0x0,await this['downloadsStorage']['update'](fS),this['emit']('job-status-changed',fS),this.#d(fS),this.#s();}async #o(fS){const jX=gz;let fT=this.#h(fS['id'],fS);this.#t['delete'](fS['id']),await this.#_(fT),fS['status']='analyzing',fS['error']=void 0x0,fS['progress']=0x0,fS['downloadedBytes']=0x0,fS['totalBytes']=void 0x0,fS['quality']=void 0x0,fS['codec']=void 0x0,await this['downloadsStorage']['update'](fS),this['emit']('job-status-changed',fS);try{if(fS['url']){let fU=await this['analyze'](fS['url'],fS['options']??{}),fV=this.#g(fS,fU);if(!fV)throw Error('No\x20media\x20resource\x20found');fS['resource']=fV;}return await this.#a(fS),!0x0;}catch(fW){return fS['status']='error',fS['error']=fW instanceof Error?fW[jX(0x224)]:String(fW),await this['downloadsStorage']['update'](fS),this['emit']('job-status-changed',fS),this['emit']('job-error',fS,fW),!0x1;}}#s(){const jY=gz;for(this['maxActiveDownloads']=this[jY(0x277)]['get']('maxActiveDownloads');this.#e['activeRunCount']<this[jY(0x28f)];){let fS=this.#p();if(!fS)break;this.#c(fS);}this.#e['queuedCount']===0x0&&this.#e['activeRunCount']===0x0&&this['emit']('idle');}#c(fS){if(fS['status']!=='queued'){B['warn']('Skipping\x20non-queued\x20job\x20start:\x20'+fS['id']+'\x20('+fS['status']+')');return;}let fT=new AbortController(),fU={'controller':fT,'job':fS,'runPromise':Promise['resolve']()};this.#e['setActiveRun'](fS['id'],fU),fU['runPromise']=this.#u(fS,fT)['catch'](fV=>{const jZ=b;let fW=fV instanceof Error?fV:Error('Download\x20run\x20failed:\x20'+String(fV));B[jZ(0x280)](fW['message']),this['emit']('error',fW);});}async #l(){if(this.#n)return this.#n;try{let {grantedBenefits:fS}=await bU();this.#n=fS;}catch(fT){let fU=fT instanceof Error?fT['message']:String(fT);B['warn']('Failed\x20to\x20resolve\x20customer\x20plan\x20for\x20connection\x20limits.\x20Falling\x20back\x20to\x20Free\x20limits:\x20'+fU),this.#n=[];}return this.#n;}async #u(fS,fT){this.#e['setActiveJob'](fS);try{let fU=await this.#l();await this.#r['run'](fS,fT,fU);}finally{let fV=this.#e['getActiveRun'](fS['id']);if(fV){let fW=fV?.['cancellationReason'],fX=fW==='pause'&&this.#e['consumeResumeAfterStop'](fS['id']);fW==='pause'?(fS['status']='paused',fS['error']=void 0x0,await this['downloadsStorage']['update'](fS),this['emit']('job-status-changed',fS)):fW!=='remove'&&fW!=='remove-with-file'&&await this['downloadsStorage']['update'](fS),this.#e['deleteActiveJob'](fS['id']),this.#e['deleteActiveRun'](fS['id']),fX&&fS['status']==='paused'&&(fS['status']='queued',fS['error']=void 0x0,await this['downloadsStorage']['update'](fS),this['emit']('job-status-changed',fS),this.#d(fS)),this.#s();}}}#d(fS){this.#e['enqueue'](fS);}#f(fS){return this.#e['dequeue'](fS);}#p(){return this.#e['dequeueNext'](fS=>this.#y(fS));}#m(fS,fT){const k0=gz;if(!fT)return;let fU=this.#t['get'](fS);fU||(fU=new Set(),this.#t[k0(0x225)](fS,fU)),fU[k0(0x262)](fT);}#h(fS,fT){let fU=new Set();for(let fW of this.#t['get'](fS)??[])fU['add'](fW);fT?.['filePath']&&fU['add'](fT['filePath']);let fV=new Set();for(let fX of fU)fV['add'](fX),fV['add'](fX+'.part.json'),fV['add'](this.#v(fX));return fV;}#g(fS,fT){const k1=gz;let fU=Array['isArray'](fT)?fT:[fT];if(fU['length']<=0x1)return fU[0x0];let fV=fS['resource']?.['metadata'],fW=fS['resource']?.['source'][k1(0x32f)],fX=fV&&'seasonNumber'in fV?fV[k1(0x32b)]:null,fY=fV&&'episodeNumber'in fV?fV['episodeNumber']:null,fZ=fV&&'episodeTitle'in fV?fV['episodeTitle']:null;return fU['find'](g0=>{const k2=k1;let g2=g0['metadata'];if(fV?.['id']&&g2?.['id'])return fV['id']===g2['id'];let g3=g2&&'seasonNumber'in g2?g2[k2(0x32b)]:null,g4=g2&&'episodeNumber'in g2?g2['episodeNumber']:null,g5=g2&&'episodeTitle'in g2?g2['episodeTitle']:null;return fV?.['title']&&g2?.['title']&&fV['title']===g2[k2(0x27d)]&&fX===g3&&fY===g4&&fZ===g5?!0x0:!!fW&&fW===g0['source'][k2(0x32f)];})??fU[0x0];}async #_(fS){fS['size']!==0x0&&await Promise['all']([...fS]['map'](fT=>rm(fT,{'recursive':!0x0,'force':!0x0})['catch'](()=>void 0x0)));}#v(fS){let fT=resolve(fS),fU=parse(fS)['name'];return join(l,fU+'-'+createHash('sha1')['update'](fT)['digest']('hex')['slice'](0x0,0xa));}#y(fS){return this.#e['getActiveJob'](fS)||this['downloadsStorage']['get'](fS);}['onJobAdded'](fS){return this['on']('job-added',fS),()=>this['removeListener']('job-added',fS);}['onJobStatusChanged'](fS){return this['on']('job-status-changed',fS),()=>this['removeListener']('job-status-changed',fS);}['onJobProgress'](fS){return this['on']('job-progress',fS),()=>this['removeListener']('job-progress',fS);}['onJobCompleted'](fS){const k3=gz;return this['on']('job-completed',fS),()=>this['removeListener'](k3(0x20c),fS);}['onJobError'](fS){return this['on']('job-error',fS),()=>this['removeListener']('job-error',fS);}['onIdle'](fS){return this['on']('idle',fS),()=>this['removeListener']('idle',fS);}['onError'](fS){const k4=gz;return this['on']('error',fS),()=>this[k4(0x227)]('error',fS);}['waitForIdle'](){return new Promise(fS=>this['onIdle'](fS));}};const fp=fS=>{const k5=gz;if(!fS)return null;let [fT,fU]=fS['toLowerCase']()['split']('e');return[parseInt(fT[k5(0x29e)]()['toLowerCase']()['replace']('s','')),parseFloat(fU?.['trim']())];},fq=fS=>{let fT=0x0,fU=0x270f,fV=[],fW=fS['split'](',');for(let fY of fW){let [fZ,g0]=fY['split']('-'),g2=fp(fZ),g3=fp(g0);if(g2&&!g0){let [g4,g5]=g2;if(isNaN(g5)){for(let g6=0x0;g6<=fU;g6++)fV['push']([g4,g6]);}else fV['push']([g4,g5]);}else{if(g2&&g3){let [g7,g8]=g2,[g9,ga]=g3;for(let gb=g7;gb<=g9;gb++){let gc=g8||0x0,gd=gb===g9?ga:fU;for(let ge=gc;ge<=gd;ge++)fV['push']([gb,ge]);}}}}let fX=new Map();for(let [gf,gg]of fV)fX['has'](gf)||fX['set'](gf,new Set()),fX['get'](gf)?.['add'](gg);return fX;},fr=fS=>{if(!fS)return{};let fT={},fU=typeof fS=='string'?fS['split']('|'):fS;for(let fV of fU){let [fW,...fX]=fV['split'](':'),fY=fX['join'](':');if(!fY)throw Error('Can\x27t\x20parse\x20header:\x20'+fV);fT[fW['trim']()]=fY['trim']();}return fT;},ft=async fS=>{const k6=gz;let fT=!0x1,fU=fS;do try{fU?fT=!!new URL(fU):fU=(await m['ask']({'fields':{'url':{'label':'URL'}}}))[k6(0x32f)];}catch{fU=(await m['ask']({'fields':{'url':{'label':'URL'}}}))['url'];}while(!fT);return fU!==fS&&B['debug']('URL:\x20'+fU),fU;},fu=(fS,fT)=>new Date(fT['createdAt']??0x0)['getTime']()-new Date(fS['createdAt']??0x0)['getTime']();var fv=class{['filePath'];['jobs']=[];#e=Promise['resolve']();constructor(fS){this['filePath']=fS;}['parse'](fS){let fT=JSON['parse'](fS),fU=Object['entries'](fT);return new Map(fU);}async['load'](){await this.#e;try{let fS=await readFile(this['filePath'],{'encoding':'utf8'});this['jobs']=JSON['parse'](fS)['toSorted'](fu);}catch{this['jobs']=[];}return this;}get['size'](){return this['jobs']['length'];}async['add'](fS){await this.#t(async()=>{const k7=b;this[k7(0x292)]['unshift'](fS),await this['save']();});}async['update'](fS){await this.#t(async()=>{let fT=this['jobs']['findIndex'](fU=>fU['id']===fS['id']);fT!==-0x1&&(this['jobs'][fT]=fS,await this['save']());});}['getByFilePath'](fS){return this['jobs']['find'](fT=>fT['filePath']===fS);}['get'](fS){return this['jobs']['find'](fT=>fT['id']===fS);}['has'](fS){return this['jobs']['some'](fT=>fT['id']===fS);}async['delete'](fS){await this.#t(async()=>{let fT=this['jobs']['findIndex'](fU=>fU['id']===fS);fT!==-0x1&&(this['jobs']['splice'](fT,0x1),await this['save']());});}async['deleteWithFile'](fS){let fT=await this.#t(async()=>{let fU=this['jobs']['findIndex'](fW=>fW['id']===fS);if(fU===-0x1)return null;let [fV]=this['jobs']['splice'](fU,0x1);return await this['save'](),fV??null;});fT?.['filePath']&&await rm(fT['filePath'],{'recursive':!0x0,'force':!0x0});}async['clear'](){await this.#t(async()=>{const k8=b;this['jobs']=[],await this[k8(0x1df)]();});}async['save'](){return writeFile(this['filePath'],JSON['stringify'](this['jobs'],null,0x2));}#t(fS){const k9=gz;let fT=this.#e['then'](fS,fS);return this.#e=fT[k9(0x26c)](()=>void 0x0,()=>void 0x0),fT;}};const fw={'command':['download\x20[urls..]','$0\x20[urls..]'],'aliases':['dl'],'describe':'Download\x20media\x20content\x20by\x20URL','builder':fS=>fS['option']('quality',{'alias':'q','describe':'Video\x20resolution\x20quality\x20-\x202160p/1080p/720p/...,\x20defaults\x20to\x20highest\x20available','type':gz(0x21a)})['option']('video-codec',{'alias':'v','describe':'Video\x20codec\x20-\x20avc\x20|\x20hevc\x20|\x20vp8\x20|\x20vp9\x20|\x20av1\x20|\x20vc1,\x20defaults\x20to\x20any','type':'string'})['option']('video-range',{'alias':'r','describe':'Video\x20color\x20range\x20-\x20sdr\x20|\x20hlg\x20|\x20hdr10\x20|\x20hdr10+\x20|\x20dv,\x20defaults\x20to\x20sdr','type':'string'})['option'](gz(0x2ba),{'describe':'Video\x20bitrate\x20(in\x20kbps),\x20defaults\x20to\x20highest\x20available','type':gz(0x324)})['option']('video-dimension',{'describe':'Video\x20dimension\x20-\x202D/3D\x20(HSBS/HOU/FSBS/OU),\x20defaults\x20to\x202D','default':'2D','type':'string'})['option']('audio-codec',{'alias':'a','describe':'Audio\x20codec\x20-\x20aac\x20|\x20opus\x20|\x20mp3\x20|\x20vorbis\x20|\x20flac\x20|\x20alac\x20|\x20ac3\x20|\x20eac3\x20|\x20dts,\x20defaults\x20to\x20any','type':'string'})['option']('audio-channels',{'alias':'c','describe':'Audio\x20channels,\x20matches\x20sub-channel\x20layouts\x20like\x205.1\x20with\x206.0','type':'number'})['option']('audio-bitrate',{'describe':'Audio\x20bitrate\x20(in\x20kbps),\x20defaults\x20to\x20highest\x20available','type':'number'})['option']('subs-format',{'alias':'s','describe':gz(0x2bd),'type':'string'})['option']('subs-lang',{'alias':'S','describe':'Subtitles\x20language(s)','type':'string'})['option']('lang',{'alias':'l','describe':'Video/audio\x20language(s)','type':gz(0x21a)})[gz(0x300)]('skip-video',{'describe':'do\x20not\x20download\x20video','type':'boolean'})['option']('skip-audio',{'describe':'do\x20not\x20download\x20audio','type':'boolean'})['option']('skip-subtitles',{'describe':'do\x20not\x20download\x20subtitles','type':'boolean'})['option']('skip-mux',{'describe':'Disable\x20merge\x20audio/video/subs\x20into\x20single\x20file','type':'boolean'})['option']('select',{'describe':'Select\x20audio/video/subtitle\x20streams\x20from\x20manifest\x20manually','type':'boolean'})['option']('episodes',{'alias':'e','describe':'Seasons/episodes\x20to\x20download,\x20e.g.\x20`S01E01`,\x20`S01-S05,S07`,\x20`S01E01-S02E03`,\x20`S02-S02E03`,\x20etc.','type':gz(0x21a),'coerce':fT=>fq(fT)})['option']('retry',{'alias':'R','describe':'Number\x20of\x20retries\x20in\x20case\x20of\x20unsuccessful\x20request','type':'number','default':ay['retry']})['option']('connections',{'alias':'C','describe':'Number\x20of\x20parallel\x20http\x20connections\x20per\x20download','type':gz(0x324),'default':ay['connections']})['option']('proxy',{'describe':gz(0x33e),'type':'string'})['option']('proxy-meta',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20metadata\x20fetching','type':'string'})['option']('proxy-media',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20media\x20downloading','type':'string'})['option']('movie-template',{'describe':'Movie\x20filename\x20template','type':'string','default':ay['movieFilenameTemplate']})['option']('episode-template',{'describe':'Episode\x20filename\x20template','type':'string','default':ay['seriesFilenameTemplate']})['option']('hardsub',{'describe':'Download\x20hardsubbed\x20video\x20if\x20available','type':'boolean'})['option']('trim-begin',{'describe':'Trim\x20video\x20at\x20the\x20beginning;\x20example:\x2000:00:06','type':gz(0x21a)})['option']('trim-end',{'describe':'Trim\x20video\x20at\x20the\x20end;\x20example:\x2000:01:30','type':'string'})['option']('key',{'describe':'Set\x20content\x20decryption\x20key\x20(if\x20manifest\x20URL\x20as\x20main\x20URL\x20passed),\x20format:\x20KID:KEY','type':'array','string':!0x0,'coerce':fT=>fT['map'](fU=>{let [fV,fW]=fU['split'](':');return{'kid':fV,'key':fW};})})['option']('header',{'alias':'H','describe':'Pass\x20custom\x20header(s)\x20for\x20manifest\x20request','type':'array','string':!0x0,'coerce':fT=>fr(fT)})['option']('format',{'alias':'f','describe':'Video\x20container\x20format\x20-\x20mp4\x20|\x20mkv\x20(Pro\x20only)','type':'string','choices':['mp4','mkv']}),'handler':async fS=>{const ka=gz;let fT=fS;fT['videoQuality']=fS['quality'];let fU=new az(d);if(fT['format']){let {error:g7}=await fj({'videoContainerFormat':fT['format']});g7&&(B['error']('Invalid\x20format:\x20'+g7['message']),B['info']('Learn\x20more:\x20https://azot.mov/pricing'),process['exit'](0x1));}let fV=[];try{({grantedBenefits:fV}=await bU());}catch(g8){let g9=g8 instanceof Error?g8['message']:String(g8);B['warn']('Failed\x20to\x20resolve\x20customer\x20plan\x20for\x20connection\x20limits.\x20Falling\x20back\x20to\x20Free\x20limits:\x20'+g9);}let {options:fW,limit:{normalizedRequestedConnections:fX,maxAllowedConnections:fY,wasClamped:fZ,connections:g0}}=fl({'options':fT,'fallbackConnections':fU['get']('connections'),'grantedBenefits':fV});Object['assign'](fT,fW),fZ&&B['warn']('Connections\x20value\x20'+fX+'\x20exceeds\x20tier\x20limit\x20('+fY+').\x20Using\x20'+g0+'.');let g2=new bY({'dirs':[j],'indexPath':I});await g2['init'](),await g2['loadCoreExtensions'](),await g2[ka(0x239)]();let g3=new fv(join(x,'downloads.json'));await g3['load']();let g4=new fo(fU,g2,g3);bL()['then'](ga=>Object['assign'](bJ,ga)),g4['onJobCompleted'](ga=>{const kb=ka;B[kb(0x334)]('Job\x20completed:\x20'+ga['id']);}),g4['onJobError'](ga=>{B['debug']('Job\x20failed:\x20'+ga['error']);}),g4['onError'](ga=>{const kc=ka;B['error'](kc(0x30b)+ga['message']);});let g5=(Array['isArray'](fS['urls'])?fS['urls']:[])[ka(0x2f9)](ga=>ga!==process['argv'][0x1]),g6=g5['length']>0x0?g5:[''];for(let ga of g6){let gb=await ft(ga),gc=await g4['analyze'](gb,fT),gd=Array['isArray'](gc)?gc:[gc];for(let ge of gd)g4['add']({'url':gb,'options':fT,'resource':ge});}await g4['waitForIdle']();}},fx=gz(0x2d2),fy=async()=>{const kd=gz;if(await bL()&&!await confirm({'message':'You\x27re\x20already\x20logged\x20in.\x20Do\x20you\x20want\x20to\x20log\x20in\x20again?','default':!0x1})){B['debug']('Login\x20cancelled');return;}let fS=createSpinner('Requesting\x20device\x20authorization...');fS['start']();try{let fT=bA(),{data:fU,error:fV}=await fT['device']['code']({'client_id':fx,'scope':'openid\x20profile\x20email'});if(fS['stop'](),fV||!fU)B['error']('Failed\x20to\x20request\x20device\x20authorization:\x20'+(fV?.['error_description']||fV?.[kd(0x2db)]||'Unknown\x20error')),B['debug'](fV);else{let {device_code:fW,user_code:fX,verification_uri:fY,verification_uri_complete:fZ,interval:g0=0x5,expires_in:g2}=fU;console['log'](''),console['log'](O['cyan']('📱\x20Device\x20Authorization\x20Required')),console['log'](''),console['log']('Please\x20visit:\x20'+O['underline'](O['blue'](fY))),console['log']('Enter\x20code:\x20'+O['bold'](O['green'](fX))),console['log'](''),await confirm({'message':kd(0x2ae),'default':!0x0})&&await Z(fZ||fY),console['log'](O['gray']('Waiting\x20for\x20authorization\x20(expires\x20in\x20'+Math['floor'](g2/0x3c)+'\x20minutes)...'));let g3=await fz(fT,fW,fx,g0);if(g3){await bK(g3);let {data:g4}=await fT['getSession']({'fetchOptions':{'headers':{'Authorization':'Bearer\x20'+g3['access_token']}}});console['log'](O['green']('✅\x20Login\x20successful!\x20Logged\x20in\x20as\x20'+(g4?.[kd(0x303)]?.['name']||g4?.['user']?.[kd(0x2fd)]||'User')));}}}catch(g5){fS['stop'](),B['error']('Login\x20failed:\x20'+(g5 instanceof Error?g5['message']:'Unknown\x20error'));}};async function fz(fS,fT,fU,fV){let fW=fV,fX=createSpinner('',{'color':'cyan'}),fY=0x0;return new Promise(fZ=>{let g0=async()=>{const ke=b;fY=(fY+0x1)%0x4,fX['update'](O[ke(0x293)]('Polling\x20for\x20authorization'+'.'['repeat'](fY)+'\x20'['repeat'](0x3-fY))),fX['isSpinning']()||fX['start']();try{let {data:g2,error:g3}=await fS['device']['token']({'grant_type':'urn:ietf:params:oauth:grant-type:device_code','device_code':fT,'client_id':fU,'fetchOptions':{'headers':{'user-agent':'Azot\x20Desktop'}}});if(g2?.['access_token']){fX['stop'](),fZ(g2);return;}else{if(g3)switch(g3['error']){case'authorization_pending':break;case'slow_down':fW+=0x5,fX['update'](O['yellow']('Slowing\x20down\x20polling\x20to\x20'+fW+'s'));break;case'access_denied':fX['stop'](),B['error']('Access\x20was\x20denied\x20by\x20the\x20user');break;case'expired_token':fX['stop'](),B['error']('The\x20device\x20code\x20has\x20expired.\x20Please\x20try\x20again.');break;default:fX['stop'](),B['error']('Error:\x20'+g3['error_description']);}}}catch(g4){fX['stop'](),B['error']('Network\x20error:\x20'+(g4 instanceof Error?g4[ke(0x224)]:'Unknown\x20error'));return;}setTimeout(g0,fW*0x3e8);};setTimeout(g0,fW*0x3e8);});}const fA=async()=>{const kf=gz;B[kf(0x34f)](kf(0x255));let fS=await bA()['signOut']();fS['error']?B['error'](kf(0x2c6)+fS['error']['message']):(B['info']('Logout\x20successful'),await bK({}));},fB={'command':'login\x20[extension]','describe':'Login\x20to\x20extension\x20(or\x20if\x20no\x20extension\x20is\x20specified,\x20login\x20to\x20Azot\x20account)','builder':fS=>fS['option']('username',{'alias':'u','describe':'Username','type':'string'})['option']('password',{'alias':'p','describe':'Password','type':'string'})['option']('otp',{'alias':'o','describe':'One-time\x20password','type':'string'}),'handler':async fS=>{const kg=gz;let fT=fS['extension'],fU={'username':fS['username'],'password':fS[kg(0x27b)],'otp':fS['otp']};if(fT){let fV=new bY({'dirs':[j],'indexPath':I});await fV['init'](),await fV['discover'](),await fV[kg(0x2b5)](fT,fU);}else fy();}},fC={'command':'list','aliases':['ls'],'describe':'Lists\x20information\x20about\x20installed/active\x20extensions','handler':async()=>{const kh=gz;let fS=await new bY({'indexPath':I})['init']();if(!fS['infoList']['length'])return console['log']('No\x20added\x20extensions\x20found');for(let fT of fS['infoList']){let fU=''+O['bold'](O['blue'](fT['name']['padEnd'](0xf))),fV=O['green'](fT['package']?.['version']);console[kh(0x2bc)](fU+fV);}console['log']('\x0a'+O['dim'](kh(0x343)+n));}},fD=new Intl['RelativeTimeFormat']('en',{'style':'long'}),fE=fS=>{let fT=Math['floor'](fS/0x18),fU=Math['abs'](fT);return fU>0x16d?fD['format'](Math['floor'](fT/0x16d),'year'):fU>0x1e?fD['format'](Math['floor'](fT/0x1e),'month'):fU>0x7?fD['format'](Math['floor'](fT/0x7),'week'):fU>0x1?fD['format'](Math['floor'](fT),'day'):fD['format'](Math['floor'](fS),'hour');},fF=(fS,fT,fU)=>{let fV=''+O['bold'](O['blue'](fS['padEnd'](0xf))),fW=O['green'](fT['padEnd'](0xa)),fX=O['dim'](fU);console['log'](fV+fW+fX);},fG={'command':'list-remote','aliases':['ls-remote'],'describe':'List\x20all\x20available\x20extensions','handler':async()=>{const ki=gz;bL()[ki(0x26c)](fU=>Object['assign'](bJ,fU));let fS=await bY['getAvailableExtensions'](),fT=Date['now']();for(let fU of fS){let fV=fU['releases']['toSorted']((fZ,g0)=>new Date(g0['createdAt'])['getTime']()-new Date(fZ['createdAt'])[ki(0x1fe)]())['at'](0x0);if(!fV)continue;let fW=fV['createdAt'],fX=new Date(fW)['getTime']()-fT,fY=fE(Math['floor'](fX/0x36ee80));fF(fU['name'],fV['version'],fY);}}},fH={'command':'logout\x20[extensions..]','describe':'Logout\x20from\x20extension\x20(or\x20if\x20no\x20extension\x20is\x20specified,\x20logout\x20from\x20Azot\x20account)','handler':async fS=>{let fT=fS['extensions'];if(fT?.['length']){let fU=new bY({'dirs':[j],'indexPath':I});await fU['init'](),await fU['discover'](),await fU['logout'](fT);}else fA();}},fI={'command':'settings\x20[key]\x20[value]','describe':'CLI\x20access\x20to\x20get/set\x20configuration\x20settings','handler':async fS=>{const kj=gz;let fT=new az(d),fU=fS['key'],fV=fS[kj(0x21f)];if(fU&&fV){fT['set']({[fU]:fV}),console['log']('Setting\x20'+O['bold'](O['blue'](fU))+'\x20set\x20to\x20'+O['green'](fV));return;}else{if(fU){let fX=fT['get'](fU);console['log'](fX?'Setting\x20'+O['bold'](O['blue'](fU))+'\x20is\x20'+O['green'](fX):'Setting\x20'+O['bold'](O['blue'](fU))+'\x20is\x20not\x20found');return;}}let fW=fT['getAll']();for(let [fY,fZ]of Object['entries'](fW)){let g0=(''+fY)['padEnd'](0x19),g2=String(fZ)['replaceAll']('{','{{')['replaceAll']('}','}}');console['log'](O['bold'](O['blue'](g0))+'\x20'+g2);}console['log']('\x0a'+O['dim']('Location:\x20'+d));}},fJ={'command':'uninstall\x20<extensions..>','aliases':['rm'],'describe':'Uninstall\x20an\x20extension','handler':async fS=>{let fT=fS['extensions'],fU=new bY({'dirs':[j],'indexPath':I});await fU['init'](),await fU['uninstall'](fT);}},fK={'command':'install\x20<extensions..>','aliases':['i'],'describe':'Install\x20extension','handler':async fS=>{const kk=gz;let fT=fS[kk(0x207)],fU=new bY({'dirs':[j],'indexPath':I});await fU['init'](),await fU['install'](fT);}},fL={'command':'logs','describe':gz(0x243),'handler':async()=>{let fS=r,fT=await readdir(fS)['then'](fV=>fV['filter'](fW=>fW['endsWith']('.log'))),fU=fV=>join(fS,fV);fT['length']||B['info']('No\x20logs\x20found');for(let fV of fT)B['info'](fU(fV));}};B['debug'](v);const fM=ac(process['argv']);function a(){const km=['Cannot\x20fetch\x20play\x20info','initSegment','process','discover','1051556PXQOyj','CAIS','indexOf','8845758582119845','Obfuscating\x20','min','languageCode','headers','HLS_FORMATS','Show\x20logs\x20list','paused','next','exports','md_title','width','logout','input','confirm','window','promise','drain','Decryption\x20failed\x20for\x20file\x20','content-type','resolvedFilenameWithoutExtension','drm','URL:\x20','overlappingTimecodes','Logging\x20out...','https://*.soundcloud.com/*','getByFilePath',':author/:song','host','highConnectionsCount','configure','alert','startsWith','keys','EXTENSION_INSTALL_ASSET_NOT_FOUND','Vitaly\x20Gashkov','MP3','add','values','stack','first','NTV\x20page','matchedContentLabel','split','queuedCount','DASH','obfuscate','then','path','videotelephony','https://*.vk.com/*','set-cookie','getMediaInfo','emit','episodeNumber','speed','isFinite','89130FkNzvG','settings','document','https://a-v2.sndcdn.com/','is_active_live','password','call','title','installedAt','episode','error','navigator','start','tag','UrlSource','get','getCodedWidth','2687814ZxgrDQ','api-key','stop','create','every','infoList','requestInit','method','maxActiveDownloads','format','permissions','jobs','gray','platform','Live\x20videos\x20are\x20not\x20supported','getSubscriptions','1735993iGsdLQ','spki','function','length','help','AbortError','label','trim','aborted','coerce','connections','No\x20media\x20resource\x20found','https://vk.com/*','Signature\x20headers\x20not\x20found','fetch','7598680fJuqqD','Invalid\x20extension\x20exports','watch','</subtitles>','filename=','toUpperCase','\x20bytes\x20generated\x20for\x20session\x20','bytesTotal','Open\x20browser\x20automatically?','manager','https://sun9-50.userapi.com/impg/rY5N7sdA93TFdjkeYqPTnPIjvCJ0rALo_V7V8g/zLAaAv0PpvY.jpg?size=400x400&quality=95&sign=5ddcd6358131b204b8619cb8eeff943f&type=album','{title}.{audioType}.{quality}.{tag}.{format}.{codec}','Russian','system','cacheKey','login','setItem','pkg','mkdir','48WeAlhw','video-bitrate','accessToken','log','Subtitle\x20format\x20-\x20SRT/SSA/ASS/TTML/VTT/STPP/WVTT','sourceUrl','Entry\x20file\x20must\x20be\x20inside\x20the\x20current\x20working\x20directory:\x20','queueResumeAfterStop','inputTrack','rus','subtitles','isArray','state','Logout\x20failed:\x20','EXTENSION_INSTALL_UNSUPPORTED_SOURCE','Unsupported\x20mux\x20input\x20type:\x20','ask','getCodec','flat','push','resolve','Empty\x20download','bitrate','Failed\x20to\x20fetch\x20RBC\x20page:\x20','defineExtension','azot-desktop','closed','usage','Keys\x20count:\x20','trackArtifact','end','\x20KB):\x20','legacy-content','User-Agent','statusText','console','localStorage','name','base64','replaceAll','getPrimaryAudioTrack','true','completed','DUPLICATE_TRACKS_SELECTED','Azot','bps','cleanupOnSuccess','subtitle','exec','round','.js','reconcileState','language','content-length','cwd','MP4','getItem','ara','index.js','vitalygashkov@vk.com','onProgress','current','store','toString','filter','681363cTVgcK','The\x20operation\x20was\x20aborted','template','email','ECDSA','https://static.rustore.ru/imgproxy/kSjDiz_MKxD_jzwgEqqaIjQZTE-NEP1Xt8HtJT7EU4s/preset:app_card_icon/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS9hcGsvMjAyNzgyMzI5NS9jb250ZW50L0lDT04vOTc0ODYwMTgtNTc4NS00MjRkLTljYWItNGZlNDk2ZDI3Yzc2LnBuZw==.webp','option','source','https://github.com/vitalygashkov','user','loaded','\x20reversed\x20timecodes','8bxKvAz','skipSubtitles','bid','keySystem','boolean','Download\x20manager\x20error:\x20','mp3','metadata','status','bytes','output','saturated','queued','token_type','default','find','Emit\x20download\x20start','Obfuscation\x20finished','\x20MB','ASSET_NOT_FOUND','audioLanguage','signal','_url','mvData','search','assets','digest','Can\x27t\x20get\x20decryption\x20keys','Decrypting\x20via\x20shifro:\x20','https://soundcloud.com/','number','https://azot.mov','job','stat','config','Input','npm:','seasonNumber','bytesPerSecond','wrap','extensionManager','url','\x20invalid\x20entries','Path:\x20','dir','join','debug','data','Usage:\x20$0\x20<command>\x20','stringify','key','quality','downloadsStorage','regions','RELEASE_NOT_FOUND','[REDACTED]','Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20all\x20requests','kind','DASH_FORMATS','ntv.ts','465IkUmhi','Location:\x20','3198ZIFwEF','https://*.instagram.com/*','manifest','maxWorkerCount','map','getBitrate','int','head','update','pathname','target','info','extname','save','max','package','proxy','addSubtitleTrack','utf8','json','cyan','*/*','run','extensionDirs','response','\x20∙\x20','wasClamped','pathPrefixes','minify','\x20|\x20','audioCodecs','mediumConnectionsCount','server','some','callbacks','columns','GraphQL\x20request\x20failed\x20with\x20status:\x20','Resumed\x20download:\x20','toISOString','finalize','vtt','type','https://*.weibo.cn/*','all','getTime','test','warn','Dynamic\x20Adaptive\x20Streaming\x20over\x20HTTP','Unknown\x20video\x20codec\x20in\x20','matches','videoCodecs','video','tracks','extensions','catch','delete','chunkSize','isNaN','job-completed','tempFileDir','invalidIndices',':\x20expected\x20206,\x20got\x20','errorHandler','entries','prompt','codec','transcodings','Forbidden','\x20updated','addEventListener','enabled','bind','string','dim','scriptName','PROXY_NOT_ALLOWED','text','value','includes','sha1','isDirectory','mp4','message','set','avc','removeListener','replace','parts','Extension\x20','filePath','on.soundcloud.com','Decrypting','com.widevine.alpha','\x20overlapping\x20timecodes','object','DOWNLOAD_DIR_NOT_WRITABLE','NPM\x20extension\x20sources\x20are\x20no\x20longer\x20supported','tempDir','downloading','clone'];a=function(){return km;};return a();}B['debug'](k+'\x20'+fM['join']('\x20'));const fN=new Set(['build','dev']);F['on']('error',fS=>{let fT=p(fS);B['error'](fT['message']);});const fO=O['magenta'](O['bold'](g))+'\x20is\x20'+h['description']['toLocaleLowerCase'](),fP=O['bold'](gz(0x336)+O[gz(0x1e6)]('[...options]')),fQ=(fS,fT)=>{let fU=fT instanceof Error?fT:Error(String(fT));B['fatal'](fS+':\x20'+fU['message']),fU['stack']&&B['debug'](fU['stack']),rmSync(l,{'recursive':!0x0,'force':!0x0}),process['exit'](0x1);};process['on']('uncaughtException',fS=>{fQ('Unexpected\x20error',fS);}),process['on']('unhandledRejection',fS=>{fQ('Unhandled\x20promise\x20rejection',fS);}),!c&&fN['has'](fM[0x0]??'')&&fQ('CLI\x20error',Error('The\x20`build`\x20and\x20`dev`\x20commands\x20are\x20unavailable\x20in\x20the\x20desktop-distributed\x20CLI.\x20Use\x20the\x20npm-installed\x20`azot`\x20package\x20in\x20a\x20Node.js\x20environment\x20instead.'));const fR=N(fM)[gz(0x21c)](k)[gz(0x2d4)](fO+'\x0a\x0a'+fP)['command'](fw)['command'](fC)['command'](fG)['command'](fK)['command'](fJ)['command'](fB)['command'](fH)['command'](fI)['command'](fL)['option']('debug',{'describe':'Debug\x20mode','type':'boolean'})[gz(0x32d)](N()['terminalWidth']())[gz(0x29b)]()['alias']('h','help')['showHelpOnFail'](!0x1)['version'](u)['updateStrings']({'Commands:':O['bold']('Commands:'),'Options:':O['bold']('Options:'),'default':O['dim']('default'),'aliases':O['dim']('aliases'),'boolean':O['dim']('boolean'),'string':O['dim']('string'),'number':O[gz(0x21b)]('number')})['epilogue']('Learn\x20more\x20about\x20Azot:\x20'+O['magenta'](gz(0x325))+'.');c&&fR['command'](as)['command'](at),fR['parseAsync']()['then'](async fS=>{const kl=gz;await q(r);let fT=String(fS['_'][0x0]??'');fT==='dev'||fT==='build'&&fS[kl(0x2a8)]===!0x0||process['exit'](0x0);})['catch'](fS=>{fQ('CLI\x20error',fS);});export{};
2
+ const gA=b;(function(fT,fU){const gz=b,fV=fT();while(!![]){try{const fW=-parseInt(gz(0x30e))/0x1*(-parseInt(gz(0x217))/0x2)+-parseInt(gz(0x2c2))/0x3*(-parseInt(gz(0x1cb))/0x4)+-parseInt(gz(0x21d))/0x5*(parseInt(gz(0x2c5))/0x6)+parseInt(gz(0x1ef))/0x7*(-parseInt(gz(0x2a8))/0x8)+-parseInt(gz(0x2a6))/0x9+parseInt(gz(0x23b))/0xa+-parseInt(gz(0x267))/0xb*(-parseInt(gz(0x2ce))/0xc);if(fW===fU)break;else fV['push'](fV['shift']());}catch(fX){fV['push'](fV['shift']());}}}(a,0x4d023));import{A as c,C as d,D as f,E as g,M as h,N as i,O as j,S as k,T as l,_ as m,a as n,b as o,c as p,d as q,f as r,g as s,h as t,i as u,j as v,k as w,l as x,m as y,n as A,o as B,p as C,r as D,s as E,t as F,u as G,v as H,w as I,x as J,y as K}from'./context-CXpQsIh1.mjs';import{createRequire}from'node:module';import L,{constants,existsSync,readFileSync,readdirSync,rmSync,statSync,writeFileSync}from'node:fs';import*as M from'node:path';import N,{basename,dirname,extname,join,parse,resolve}from'node:path';import O from'yargs';import'urlpattern-polyfill';import P from'picocolors';import*as Q from'node:fs/promises';import R,{open,readFile,readdir,rm,stat,writeFile}from'node:fs/promises';import S,{platform,stdout}from'node:process';import{hideBin}from'yargs/helpers';import{EventEmitter as T}from'node:events';import{z}from'zod';import{DASH_FORMATS,HLS_FORMATS,Input,UrlSource}from'dasha';import U from'ky';import{Agent,ProxyAgent}from'undici';import{checkbox,confirm}from'@inquirer/prompts';import{execFileSync}from'node:child_process';import{createAuthClient}from'better-auth/client';import{deviceAuthorizationClient}from'better-auth/client/plugins';import{tributeClient}from'@tribute-tg/better-auth';import{QueryCache,QueryClient}from'@tanstack/query-core';import{createHash}from'node:crypto';import{inspect}from'node:util';import{ALL_FORMATS as V,EncodedAudioPacketSource,EncodedPacketSink,EncodedVideoPacketSource,Input as W,MkvOutputFormat,Mp4OutputFormat,Output,StreamSource,StreamTarget,TextSubtitleSource,UrlSource as X}from'mediabunny';import{finished,pipeline}from'node:stream/promises';import{Readable}from'node:stream';import{isatty}from'node:tty';import{createSpinner}from'nanospinner';import{RemoteCdm,requestMediaKeySystemAccess}from'okova';import{Decryption,FilePathSource,FilePathTarget,Input as Y,Output as Z}from'shifro';import{convert}from'@transcrobes/subs-convert';import a0 from'open';var a1=Object['create'],a2=Object[gA(0x2dc)],a3=Object[gA(0x243)],a4=Object[gA(0x20c)],a5=Object['getPrototypeOf'],a6=Object['prototype']['hasOwnProperty'],a7=(fT,fU)=>()=>(fU||(fT((fU={'exports':{}})['exports'],fU),fT=null),fU[gA(0x328)]),a8=(fT,fU,fV,fW)=>{if(fU&&typeof fU=='object'||typeof fU=='function'){for(var fX=a4(fU),fY=0x0,fZ=fX['length'],g0;fY<fZ;fY++)g0=fX[fY],!a6['call'](fT,g0)&&g0!==fV&&a2(fT,g0,{'get':(g1=>fU[g1])['bind'](null,g0),'enumerable':!(fW=a3(fU,g0))||fW['enumerable']});}return fT;},a9=(fT,fU,fV)=>(fV=fT==null?{}:a1(a5(fT)),a8(fU||!fT||!fT['__esModule']?a2(fV,'default',{'value':fT,'enumerable':!0x0}):fV,fT)),aa=createRequire(import.meta.url);const ab=()=>{const gB=gA;let fT=[];process['resourcesPath']&&fT[gB(0x265)](join(process['resourcesPath'],gB(0x31c),'winconsole.node'));let fU=join(__dirname,'..','..','..');return fT['push'](join(fU,'assets','bin','win32','winconsole.node')),fT['push'](join(fU,'native','winconsole','build','Release','winconsole.node')),fT['find'](fV=>existsSync(fV))||null;},ac=()=>{if(process['platform']!=='win32')return null;let fT=ab();if(!fT)return null;try{return aa(fT);}catch{return null;}};if(process['platform']==='win32'&&process.env.ELECTRON_RUN_AS_NODE==='1'){let g2=ac();g2&&(g2['attachParentConsole']?.(),g2['enableUtf8']?.());}const ad=(fT=process['argv'],fU=process.env)=>fU['ELECTRON_RUN_AS_NODE']==='1'?fT['slice'](0x2):hideBin(fT),ae={'target':'node','compact':!0x0,'identifierNamesGenerator':'mangled','renameGlobals':!0x0,'simplify':!0x0,'controlFlowFlattening':!0x1,'deadCodeInjection':!0x1,'debugProtection':!0x1,'numbersToExpressions':!0x1,'selfDefending':!0x1,'splitStrings':!0x1,'stringArray':!0x0,'stringArrayCallsTransform':!0x1,'stringArrayEncoding':[],'stringArrayIndexShift':!0x0,'stringArrayRotate':!0x0,'stringArrayShuffle':!0x0,'stringArrayWrappersCount':0x1,'stringArrayWrappersChainedCalls':!0x0,'stringArrayWrappersType':'variable','stringArrayThreshold':0.1,'transformObjectKeys':!0x1,'unicodeEscapeSequence':!0x1},af=fT=>{let fU=['B','KB','MB','GB'],fV=fT,fW=0x0;for(;fV>=0x400&&fW<fU['length']-0x1;)fV/=0x400,fW+=0x1;return fV['toFixed'](fW===0x0?0x0:0x2)+'\x20'+fU[fW];},ag=async(fT,fU)=>{let fV=readFileSync(fT,'utf8'),{default:fW}=await import('javascript-obfuscator');console['log']('Obfuscating\x20'+fT+'...'),console['time']('Obfuscation\x20finished');let fX=fW['obfuscate'](fV,ae);console['timeEnd']('Obfuscation\x20finished');let fY=fX['getObfuscatedCode'](),fZ=Buffer['byteLength'](fV,'utf8'),g0=Buffer['byteLength'](fY,'utf8'),g1=fZ===0x0?0x0:g0/fZ;return console['log']('Size\x20changed\x20from\x20'+af(fZ)+'\x20to\x20'+af(g0)+',\x20'+g1['toFixed'](0x2)+'x\x20increase'),writeFileSync(fU||fT,fY),fY;},ah=new Set(['.ts','.js','.cjs',gA(0x268)]),ai=new Set(['index','main']),aj=fT=>{const gC=gA;if(existsSync(fT))try{if(!statSync(fT)['isDirectory']())return;let fU=readdirSync(fT)['filter'](fX=>!fX[gC(0x2d3)]('.d.ts'))['filter'](fX=>ah['has'](N['extname'](fX))),fV=fX=>N['basename'](fX,N['extname'](fX)),fW=fU['find'](fX=>ai['has'](fV(fX)))||fU[0x0];return fW?N['join'](fT,fW):void 0x0;}catch{return;}},ak=()=>{let fT=[process['cwd'](),N['join'](process['cwd'](),'src'),N['join'](process['cwd'](),'lib')];for(let fU of fT){let fV=aj(fU);if(fV)return fV;}},al=fT=>fT==='esm'?gA(0x1db):'cjs',am=(fT,fU)=>N['join'](process['cwd'](),'dist',N['parse'](fT)[gA(0x2c0)]+'.'+al(fU)),an=fT=>{const gD=gA;let fU=N['relative'](process['cwd'](),fT);if(!fU||fU[gD(0x2d0)]('..'))throw Error(gD(0x209)+fT);return'./'+fU['split'](N['sep'])['join']('/');},ao=fT=>{let fU=fT['input']||fT['entry']||ak();if(!fU)throw Error('No\x20entry\x20file\x20found');return N['resolve'](fU);},ap=()=>{if(c)throw Error('The\x20`build`\x20and\x20`dev`\x20commands\x20are\x20unavailable\x20in\x20the\x20desktop-distributed\x20CLI.\x20Use\x20the\x20npm-installed\x20`azot`\x20package\x20in\x20a\x20Node.js\x20environment\x20instead.');},aq=fT=>fT['positional']('entry',{'describe':'Path\x20to\x20the\x20input\x20file','type':'string'})['option']('input',{'alias':'i','describe':'Path\x20to\x20the\x20input\x20file','type':'string'})['option']('format',{'alias':'f','describe':'Output\x20format','choices':['cjs','esm'],'default':'cjs'})['option']('minify',{'describe':'Minify\x20output','type':'boolean'}),ar=fT=>{const gE=gA;let fU=N['resolve'](fT);for(;;){let fV=N['join'](fU,gE(0x256));if(existsSync(fV))return fV;let fW=N['dirname'](fU);if(fW===fU)return;fU=fW;}},as=fT=>{const gF=gA;let fU=ar(fT);if(!fU){let fV='Could\x20not\x20find\x20package.json\x20starting\x20from\x20'+fT;throw C['error'](fV),Error(fV);}try{let fW=JSON['parse'](readFileSync(fU,'utf8'));if(!fW||typeof fW!=gF(0x23f)||Array['isArray'](fW))throw Error('package.json\x20must\x20contain\x20a\x20JSON\x20object');let fX=fW;if(fX['private']!==void 0x0&&typeof fX['private']!='boolean')throw Error('package.json\x20field\x20\x22private\x22\x20must\x20be\x20a\x20boolean\x20when\x20present');return{'private':fX['private']};}catch(fY){let fZ='Failed\x20to\x20load\x20package.json\x20for\x20build\x20command\x20from\x20'+fU;throw C['error'](fZ),C['debug'](fY),Error(fZ);}},at={'command':'build\x20[entry]','describe':'Bundle\x20a\x20Node.js\x20entry\x20file\x20for\x20distribution','builder':fT=>aq(fT)['option']('watch',{'describe':'Watch\x20file\x20changes','type':gA(0x33a)})['option']('obfuscate',{'describe':'Obfuscate\x20output','type':'boolean'}),'handler':async fT=>{const gG=gA;ap();let fU=ao(fT),fV=typeof fT[gG(0x294)]=='boolean'?fT['minify']:!0x0,fW=fT['watch']===!0x0,fX=fT['format']??'cjs',{build:fY}=await import('tsdown');await fY({'entry':an(fU),'format':fX,'platform':'node','target':'node24','watch':fW,'minify':fV,'inlineOnly':!0x1});let fZ=am(fU,fX),g0=as(process['cwd']());(typeof fT['obfuscate']=='boolean'?fT['obfuscate']:g0['private'])&&await ag(fZ,fZ);}},au={'command':gA(0x24c),'describe':'Watch\x20and\x20rebuild\x20a\x20Node.js\x20entry\x20file\x20during\x20development','builder':fT=>aq(fT),'handler':async fT=>{const gH=gA;ap();let fU=ao(fT),fV=typeof fT['minify']==gH(0x33a)?fT['minify']:!0x1,{build:fW}=await import('tsdown');await fW({'entry':an(fU),'format':fT['format']??'cjs','platform':gH(0x313),'target':'node24','watch':!0x0,'minify':fV});}},av=()=>Intl['DateTimeFormat']()['resolvedOptions']()['locale']['startsWith']('ru')?'ru':'en',aw={'dark':'dark','light':'light','system':'system'},ax={'mp4':'mp4','mkv':'mkv'},ay=z['object']({'downloadDir':z['string']()['default'](H),'binariesDir':z['string']()['default'](I(join(y,'bin'))),'drmDir':z['string']()[gA(0x222)](I(join(y,'drm'))),'language':z['string']()['default'](av()),'theme':z['enum']([aw['dark'],aw['light'],aw['system']])['default'](aw['system']),'preferHardsub':z['coerce']['boolean']()['default'](!0x1),'retry':z['coerce']['number']()['int']()['min'](0x1)['max'](0xa)['default'](0x3),'connections':z['coerce']['number']()['int']()['min'](0x1)['max'](0x40)['default'](0x4),'maxActiveDownloads':z['coerce']['number']()['int']()['min'](0x1)['default'](0x1),'proxy':z['string']()['optional'](),'proxyMeta':z['string']()['optional'](),'proxyMedia':z['string']()['optional'](),'movieFilenameTemplate':z['string']()['default']('{title}\x20({quality},\x20{codec})'),'seriesFilenameTemplate':z['string']()['default']('{title}\x20S{s}E{e}\x20({quality},\x20{codec})'),'developerMode':z[gA(0x24d)]['boolean']()['default'](!0x1),'allowUnknownSources':z[gA(0x24d)][gA(0x33a)]()[gA(0x222)](!0x1),'videoContainerFormat':z['enum']([ax[gA(0x1d4)],ax['mkv']])['default'](ax['mp4']),'useAlternativeServer':z['coerce']['boolean']()['default'](!0x1),'automaticUpdates':z['coerce']['boolean']()['default'](!0x0)}),az=ay['parse']({});var aA=class{#e;constructor(fT){this.#e=x({'defaults':az,'cwd':dirname(fT),'configName':basename(fT,'.json')}),this.#t();}#t(){const gI=gA;let fT=this.#e[gI(0x1d0)],fU=ay['safeParse'](fT),fV='{title}.{audioType}.{quality}.{tag}.{format}.{codec}',fW='{title}.S{s}E{e}.{episodeTitle}.{audioType}.{quality}.{tag}.{format}.{codec}';if(fT['movieFilenameTemplate']==='{title}.{audioType}.{quality}.{tag}.{format}.{codec}'&&this.#e['set'](gI(0x2b9),fT['seriesFilenameTemplate']),fT['seriesFilenameTemplate']==='{title}.S{s}E{e}.{episodeTitle}.{audioType}.{quality}.{tag}.{format}.{codec}'&&this.#e['set']('seriesFilenameTemplate',fT['seriesFilenameTemplate']),!fU['success']){console[gI(0x225)]('Settings\x20validation\x20failed!\x20Resetting\x20to\x20defaults.',fU['error']['flatten']()),this.#e['set'](az);return;}Object['hasOwn'](fT,'askForOptions')&&this.#e['set'](fU['data']);}['getAll'](){return this.#e['store'];}['get'](fT){return this.#e['get'](fT);}['set'](fT){let fU={...this.#e['store'],...fT},fV=ay['safeParse'](fU);if(!fV['success'])throw console['error']('Invalid\x20settings\x20update:',fV['error']['flatten']()),Error('Settings\x20update\x20failed\x20validation.');this.#e['set'](fV['data']);}['onDidChange'](fT){this.#e['onDidAnyChange'](fT);}};function a(){const kg=['Could\x20not\x20find\x20RBC\x20playlist\x20URL.','\x20for\x20stability','1Qebtty','https://mv1.virtualroom.ru/vr/player/records/','replace','activeRunCount','direct_asset_url','node','afterMux','bitrate','indexPath','label','8845758582119845','initSegment','drm','.part','bin','getProgress','subtitle','stat','Invalid\x20format:\x20','https://play-lh.googleusercontent.com/JSSeB3XQtb9sHD5FWTqVM4AksY_Kg2q20eExenxGqPJZdn2uVQxi8eoHkP5MA-IR4w=w480-h960-rw','resource','onJobStatusChanged','execute','drain','aac','json','exports','Public\x20key\x20import\x20failed','update','settings','function','find','matchAll','padStart','strategy','No\x20metadata\x20found','join','getItem','Resolving\x20media\x20entries...','quality','skip-mux','set','import','queueResumeAfterStop','boolean','values','videos','\x20|\x20','IMPORT_INVALID','sleep','GraphQL\x20request\x20failed\x20with\x20status:\x20','edges','isInvalidated','scope','origin','lang','8452tZTBjd','follow','part_','server','(unknown)','store','token','resumeManager','window','mp4','data','get','https://*.weibo.com/*','downloadedBytes','module','/info','mjs','sourceSignature','context','prompt','toLocaleLowerCase','manager','utils','debug','sessionId','emit','green','logout','https://*.vk.com/*','dequeue','https://soundcloud.com/','download','bytesDownloaded','preferredVersion','add','getKeys','7vVDdwx','addEventListener','audio','idle','errorHandler','\x20minutes)...','Login\x20to\x20extension\x20(or\x20if\x20no\x20extension\x20is\x20specified,\x20login\x20to\x20Azot\x20account)','Failed\x20to\x20parse\x20TikTok\x20page\x20JSON','https://github.com/vitalygashkov','Failed\x20to\x20fetch\x20','map','nextTick','authorization_pending','wasClamped','start.film','codec','details','parse','min','stop','navigator','segments','hooks','index','requestHeaders','GitHub\x20release\x20not\x20found','Entry\x20file\x20must\x20be\x20inside\x20the\x20current\x20working\x20directory:\x20','progressive','split','getOwnPropertyNames','segmentCount','Bundle\x20download\x20failed:\x20can\x27t\x20find\x20output\x20file','message','info','NTV\x20page','...','auth','string','mpd','defineExtension','476886aNCypg','title','abk','persistJob','UNSUPPORTED_SOURCE','length','10GJdviW','http2','Polling\x20for\x20authorization','jobs','statusMsg','default','loadCoreExtensions','filter','warn','/serial','aborted','splice','Select\x20video\x20streams','skipVideo','queued','setItem','probe','uninstall','localStorage','retry','path','searchParams','digest','package','resumeState','description','next','subtitles','some','error','3793030cClHwZ','max','/?no_404=true&referer&pver=v2','document','object','Vitaly\x20Gashkov','maxChunkSize','remove-with-file','getOwnPropertyDescriptor','then','https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/41/91/13/419113d2-6246-c557-669e-0f0a5c62bcc5/Prod-0-0-1x_U007epad-0-1-0-sRGB-85-220.png/460x0w.webp','hint','version','cleanup','.cjs','proxy','MP3','dev\x20[entry]','coerce','width','SOURCE_NOT_FOUND','proxyMedia','dirname','https://www.ntv.ru/','stringify','RELEASE_NOT_FOUND','job','package.json','\x20bytes\x20generated\x20for\x20session\x20','trim-begin','240','https://api.github.com/repos/','Extension\x20','bytesWritten','Download\x20manager\x20error:\x20','all','cleanupOnSuccess','number','headers','arrayBuffer','logs','https://azot.mov/','push','forced','12806717eUINUE','.mjs','dir','status','loadExtension','exactPaths','opus','type','Disable\x20merge\x20audio/video/subs\x20into\x20single\x20file','install','columns','clone','isArray','edge_media_to_caption','job-error','seasonNumber','hardsub','480','cookies.txt','key','token_type','sources','head','playAddr','dataUpdatedAt','getActiveJob','media_info','http','sha256','0.0.9','videoContainerFormat','tur','has','legacy-content','callbacks','No\x20client\x20ID','completed','downloadDir',',\x20remoteCdm=','tempFileDir','trim','start','subscription','player','extensions','minify','1080','open','parts','catch','video-hostings','isSpinning','Direct','connections','vitalygashkov@vk.com','infoList','pending','access_token','getTracks','mediumConnectionsCount','code','isExplicitSelection','job-status-changed','5582052ohQbHy','stack','4043176tnRUOF','bytesTotal','pathname','toString','notify','platform','getTime','maxActiveDownloads','create','maxWorkerCount','console','trimEnd','Input\x20is\x20empty','client','Unauthorized','cwd','bold','movieFilenameTemplate','video','option','invalidate','AbortError','input',',\x20providedKeyCount=','name','HLS_FORMATS','105wHYEdW','Azot','source','1244688bfgHAm','(unknown\x20extension)','size','every','resolveMedia','episodeNumber','Failed\x20to\x20resolve\x20customer\x20plan\x20for\x20connection\x20limits.\x20Falling\x20back\x20to\x20Free\x20limits:\x20','Weibo','playready','12iWRCZI','downloadsStorage','startsWith','writeFile','value','endsWith','config','inputTrack','saturated','DASH_FORMATS','Dynamic\x20Adaptive\x20Streaming\x20over\x20HTTP','removeQueries','inputs','ASSET_NOT_FOUND','defineProperty','url','month','text','includes','pathPrefixes','premiumExtensions','DASH','sourceUrl','und','Options:','manifest','Failed\x20to\x20load\x20extension\x20script:\x20','call','urn:ietf:params:oauth:grant-type:device_code','ask','filePath','SIGNATURE_VERIFICATION_FAILED','Resolving\x20DRM\x20keys\x20for\x20PSSH\x20','end','episodeTitle','movieTemplate','output','Resolved\x20output\x20path:\x20','https','reverse','template','speed','ErrorEmptyDownload','keys','cause','\x20failed:\x20','EPERM','Signature\x20verification\x20failed','padEnd','User','prepareContext','fetch','base64','https://play-lh.googleusercontent.com/TTKq2trnzgtoyM0jc1pyrrmXtA_Yd3A2hxubZtDahdZStYf4GPANZa-wjDb1ELHrGqh_=w480-h960-rw','streamyx-extensions','repeat','exec','downloading','from','Video\x20codec\x20-\x20avc\x20|\x20hevc\x20|\x20vp8\x20|\x20vp9\x20|\x20av1\x20|\x20vc1,\x20defaults\x20to\x20any','cookieStore','beforeDownload'];a=function(){return kg;};return a();}const aB=async fT=>{try{return await R['access'](fT),!0x0;}catch(fU){if(fU['code']==='ENOENT')return!0x1;throw fU;}},aC=async(fT,{recursive:fU=!0x1}={})=>await R['readdir'](fT,{'withFileTypes':!0x0,'recursive':fU}),aD=async(fT,{recursive:fU=!0x0,force:fV=!0x0}={})=>{await R['rm'](fT,{'recursive':fU,'force':fV});},aE=async(fT,{recursive:fU=!0x0}={})=>{await R['mkdir'](fT,{'recursive':fU});},aF=async fT=>{const gJ=gA;try{await R['access'](fT,constants['W_OK']);}catch(fU){let fV=fU['code'];throw fV===gJ(0x2fc)||fV==='EACCES'||fV==='ENOENT'?Object['assign'](Error('Download\x20directory\x20is\x20not\x20writable'),{'code':'DOWNLOAD_DIR_NOT_WRITABLE'}):fU;}},aG=async fT=>{try{let fU=await R['readFile'](fT,{'encoding':'utf8'});return JSON['parse'](fU);}catch(fV){throw Error('Failed\x20to\x20read\x20JSON\x20file:\x20'+fT,{'cause':fV});}},aH=async(fT,fU)=>{const gK=gA;let fV=parse(fT)[gK(0x269)];try{let fW=await aB(fV);fV&&!fW&&await R['mkdir'](fV),await R['writeFile'](fT,JSON[gK(0x253)](fU,null,0x2),'utf8');}catch(fX){throw Error('Failed\x20to\x20save\x20data\x20to\x20file:\x20'+fT,{'cause':fX});}},aI={'extract':(fT,fU)=>execFileSync('tar',['-xf',fT,...fU?['-C',fU]:[]],{'stdio':'inherit'})},aJ={'CHANNEL_NOT_FOUND':'EXTENSION_INSTALL_CHANNEL_NOT_FOUND','VERSION_NOT_FOUND':'EXTENSION_INSTALL_VERSION_NOT_FOUND','RELEASE_NOT_FOUND':'EXTENSION_INSTALL_RELEASE_NOT_FOUND','ASSET_NOT_FOUND':'EXTENSION_INSTALL_ASSET_NOT_FOUND','UNSUPPORTED_SOURCE':'EXTENSION_INSTALL_UNSUPPORTED_SOURCE','UNSUPPORTED_PACKAGE_TYPE':'EXTENSION_INSTALL_UNSUPPORTED_PACKAGE_TYPE','IMPORT_INVALID':'EXTENSION_INSTALL_IMPORT_INVALID','SOURCE_NOT_FOUND':'EXTENSION_INSTALL_SOURCE_NOT_FOUND','UNKNOWN':'EXTENSION_INSTALL_UNKNOWN'},aK=new Set(Object['values'](aJ));var aL=class extends Error{['code'];[gA(0x1ff)];['hint'];constructor(fT){super(fT['message']),this['name']='InstallExtensionError',this['code']=fT['code'],this['details']=fT['details'],this['hint']=fT['hint'];}['toPayload'](){const gL=gA;return{'code':this['code'],'message':this['message'],'details':this['details'],'hint':this[gL(0x246)]};}};const aM=(fT,fU,fV,fW)=>new aL({'code':fT,'message':fU,'details':fV,'hint':fW}),aN=fT=>{let fU=(fT?.['startsWith']('v')?fT[0x1]:fT?.[0x0])??'';return Number['isNaN'](parseInt(fU))?fT?.['split']('.')['at'](0x0)||'latest':fT?.['split']('-')['at'](0x1)?.['split']('.')['at'](0x0)||'latest';},aO=fT=>(fT['version']||fT['tag_name']||'')[gA(0x310)](/^v/,''),aP=fT=>[...new Set(fT['filter'](Boolean))],aQ=fT=>({'availableVersions':aP((fT||[])['map'](fU=>aO(fU))),'availableChannels':aP((fT||[])['map'](fU=>aN(aO(fU))))}),aR=(fT,fU,fV)=>{const gM=gA;let fW={'source':fV,'preferredVersion':fT['preferredVersion'],'preferredChannel':fT['preferredChannel'],'appChannel':fT['appChannel'],...aQ(fU)};return fT[gM(0x1ec)]?aM(aJ['VERSION_NOT_FOUND'],'Release\x20not\x20found\x20for\x20requested\x20version:\x20'+fT['preferredVersion'],fW):aM(aJ['CHANNEL_NOT_FOUND'],'Release\x20not\x20found\x20for\x20requested\x20channel:\x20'+fT['preferredChannel'],fW);},aS=(fT,fU,fV)=>{const gN=gA;if(!fT?.['length'])return null;if(fU['preferredVersion'])return fT['find'](fW=>aO(fW)===fU['preferredVersion'])||null;if(!fU['isExplicitSelection']){let fW=fT[gN(0x32d)](fX=>aN(aO(fX))==='latest');if(fW)return fW;}return fT['find'](fX=>aN(aO(fX))===fU['preferredChannel'])||(fU['allowFallback']&&fU['preferredChannel']!=='latest'?(C['debug']('Release\x20'+fU['preferredChannel']+'\x20not\x20found\x20for\x20'+fV+',\x20falling\x20back\x20to\x20latest\x20stable'),fT['find'](fX=>aN(aO(fX))==='latest')||(C['debug']('Latest\x20stable\x20release\x20not\x20found\x20for\x20'+fV+',\x20falling\x20back\x20to\x20latest\x20with\x20any\x20channel'),fT['at'](0x0)||null)):null);},aT=fT=>{const gO=gA;let [,fU='']=fT['split']('@'),fV=fT[gO(0x310)](fU?'@'+fU:'',''),fW=aN(i['version']),fX=!!fU;return{'name':fV,'preferredVersion':Number['isNaN'](parseInt(fU[0x0]??''))?'':fU,'preferredChannel':fX?aN(fU):fW,'appChannel':fW,'isExplicitSelection':fX,'allowFallback':!fX&&fW!=='latest'};},aU=async(fT,fU)=>{const gP=gA;C['info']('Fetching\x20bundle...'),C['debug'](fT);let fV=await fetch(fT);if(!fV['ok'])throw aM(aJ['ASSET_NOT_FOUND'],'Failed\x20to\x20download\x20extension\x20bundle:\x20'+fV[gP(0x26a)]+'\x20'+fV['statusText'],{'url':fT,'status':fV['status'],'statusText':fV['statusText']});let fW=fV[gP(0x261)]['get']('content-disposition')?.['split']('filename=')[0x1]?.['split'](';')[0x0]?.['replaceAll']('\x22',''),fX=N['basename'](fT),fY=fU||fW||fX,fZ=await fV['arrayBuffer'](),g0=N['join'](k,fY);return await R['writeFile'](g0,Buffer['from'](fZ)),await R['stat'](g0)['then'](g1=>{C['debug']('Bundle\x20downloaded\x20('+g1['size']/0x3e8+'\x20KB):\x20'+g0);})[gP(0x298)](()=>{const gQ=gP;C['error'](gQ(0x20e));}),g0;},aV=async(fT,fU)=>{const gR=gA;if(fT['startsWith']('npm:')||fT['startsWith']('@streamyx/'))throw aM(aJ[gR(0x21b)],'NPM\x20extension\x20sources\x20are\x20no\x20longer\x20supported',{'source':fT});let fV=fT,fW=fT,fX=N['dirname'](fT),fY=fX!=='.'&&await R['stat'](fX)['then'](()=>!0x0,()=>!0x1),fZ=fT['startsWith']('./')||fT[gR(0x2d0)]('../')||fT['startsWith']('/')||fT['startsWith']('~')||fY,g0=await R['stat'](fT)['then'](()=>!0x0,()=>!0x1),g1=fT[gR(0x2d0)]('https://'),g3=fT['startsWith']('gl:')||fT['startsWith']('gitlab:'),g4=fT['startsWith']('github:')||fT['startsWith']('gh:');if(fZ&&!g0&&!g1&&!g4&&!g3)throw C['warn']('Installed\x20extension\x20not\x20found:\x20'+fT),C['warn']('Run\x20\x27azot\x20list\x27\x20and\x20remove\x20the\x20extension\x20from\x20the\x20list.'),aM(aJ['SOURCE_NOT_FOUND'],'Installed\x20extension\x20source\x20not\x20found:\x20'+fT,{'source':fT});fT=fT['replace'](/^gl:/,'')[gR(0x310)](/^gitlab:/,'')['replace'](/^gh:/,'')['replace'](/^github:/,'');let g5=aT(fT),{name:g6}=g5;if(g1)fV=await aU(fT);else{if(g4){let [gc,gd]=g6['split']('/'),ge=gR(0x25a)+gc+'/'+gd+'/releases',gf=await fetch(ge)['then'](gk=>gk['json']());if(gf?.['message']&&!Array['isArray'](gf))throw aM(aJ['RELEASE_NOT_FOUND'],'GitHub\x20releases\x20request\x20failed:\x20'+gf['message'],{'source':g6,'provider':'github','apiMessage':gf['message']});let gg=Array['isArray'](gf)?gf:[],gh=aS(gg,g5,g6);if(!gh)throw g5[gR(0x2a4)]?aR(g5,gg,g6):aM(aJ[gR(0x254)],gR(0x208),{'source':g6,'provider':'github',...aQ(gg)});let gi=gh['assets']?.['find'](gk=>gk['name']['endsWith']('.tgz')||gk['name'][gR(0x2d3)]('.zip'));if(!gi)throw C['debug'](gh),aM(aJ[gR(0x2db)],'GitHub\x20release\x20asset\x20not\x20found',{'source':g6,'provider':'github','releaseTag':aO(gh)});let gj=gi['browser_download_url'];fV=await aU(gj);}else{if(!g0){let gk=fU?.['find'](go=>go['name']===g6),gl=gk?.['releases']||[],gm=aS(gl,g5,g6),gn=gm?.['assets']['find'](go=>go['name'][gR(0x2d3)]('.tgz'));if(gk&&!gm&&g5['isExplicitSelection'])throw aR(g5,gl,g6);if(gn)fV=await aU(gn['url'],gn['name']);else{let [go,gp=gR(0x304)]=g6['split']('/')['reverse'](),gq='https://gitlab.com/api/v4/projects/'+gp+'%2F'+go+'/releases',gr=await fetch(gq)['then'](gv=>gv['json']());if(gr?.['message']&&!Array['isArray'](gr))throw aM(aJ['RELEASE_NOT_FOUND'],'GitLab\x20releases\x20request\x20failed:\x20'+gr[gR(0x20f)],{'source':g6,'provider':'gitlab','apiMessage':gr[gR(0x20f)]});let gs=Array['isArray'](gr)?gr:[],gt=aS(gs,g5,g6);if(!gt)throw g5['isExplicitSelection']?aR(g5,gs,g6):aM(aJ['RELEASE_NOT_FOUND'],'GitLab\x20release\x20not\x20found',{'source':g6,'provider':'gitlab',...aQ(gs)});let gu=gt['assets']?.['links']?.[gR(0x32d)](gv=>gv['name']['endsWith']('.tgz'));if(!gu)throw aM(aJ['ASSET_NOT_FOUND'],'GitLab\x20release\x20asset\x20not\x20found',{'source':g6,'provider':'gitlab','releaseTag':aO(gt)});fV=await aU(gu[gR(0x312)]||gu[gR(0x2dd)],gu['name']);}}}}let g7=N['extname'](fV),g8=g7==='.zip',g9=g7==='.tgz',ga=new Set(['.js','.mjs',gR(0x249)])['has'](g7),gb=await R['stat'](fV)['then'](gv=>gv['isDirectory']())['catch'](()=>!0x1);if(ga?fW=N[gR(0x251)](fV):gb?fW=fV:(fW=fV['replace']('.tgz','')['replace']('.zip',''),await aB(fW)||await aE(fW)),g8||g9)aI['extract'](fV,fW),await aD(fV);else{if(!(ga||gb))throw aM(aJ['UNSUPPORTED_PACKAGE_TYPE'],'Unsupported\x20package\x20type',{'source':fT,'extensionSource':fV,'packageType':g7||'unknown'});}return fW;},aW='__matchRules',aX=fT=>typeof fT=='object'&&!!fT&&!Array['isArray'](fT),aY=fT=>{const gS=gA;let fU=fT['trim']()['match'](/^(\*|https?):\/\/([^/]+)(\/.*)$/i);if(!fU)return null;let [,fV,fW,fX]=fU,fY=fV['toLowerCase'](),fZ=fY==='*'?['http',gS(0x2f4)]:fY===gS(0x282)||fY==='https'?[fY]:null;if(!fZ)return null;let g0=fW['trim']()['toLowerCase'](),g1=!0x1,g3=[],g4=[];if(g0==='*')g1=!0x0;else{if(g0['startsWith']('*.')){let g7=g0['slice'](0x1);if(!g7['startsWith']('.')||g7['length']<=0x1)return null;g4=[g7];}else{if(!g0['includes']('*'))g3=[g0];else return null;}}if(!fX['startsWith']('/'))return null;let g5=fX['indexOf']('*');if(g5!==-0x1&&g5!==fX['length']-0x1)return null;let g6=g5===-0x1?fX:fX['slice'](0x0,-0x1);return{'schemes':fZ,'matchAnyHost':g1,'exactHosts':g3,'wildcardHostSuffixes':g4,'exactPaths':g5===-0x1?[g6]:void 0x0,'pathPrefixes':g5===-0x1?void 0x0:[g6]};},aZ=fT=>{if(!Array['isArray'](fT))return;let fU=fT['filter'](fV=>typeof fV=='string'&&!!fV['trim']())['map'](aY)['filter'](fV=>!!fV);return fU['length']?fU:void 0x0;},b0=(fT,fU)=>fU['matchAnyHost']||fU['exactHosts']['includes'](fT)||fU['wildcardHostSuffixes']['some'](fV=>fT['endsWith'](fV)),b1=(fT,fU)=>fU[gA(0x26c)]?.['includes'](fT)||!!fU['pathPrefixes']?.['some'](fV=>fT['startsWith'](fV))||!fU['exactPaths']?.['length']&&!fU[gA(0x2e1)]?.['length'],b2=({manifest:fT,packageJson:fU,fallbackName:fV})=>{const gT=gA;let fW=aX(fU?.['config'])?fU['config']:null,fX=(aX(fT)?fT:null)??fW??{},fY=typeof fX['name']=='string'&&fX['name']||typeof fX['title']=='string'&&fX['title']||fV,fZ={...fX,'name':fY,'title':typeof fX['title']=='string'&&fX['title']?fX[gT(0x218)]:fY};(typeof fZ['icon']!='string'||!fZ['icon'])&&delete fZ['icon'],(typeof fZ['tag']!='string'||!fZ['tag'])&&delete fZ['tag'],Array[gT(0x273)](fZ['permissions'])||delete fZ['permissions'],Array['isArray'](fZ['regions'])||delete fZ['regions'],typeof fZ['manifestVersion']!='number'&&delete fZ['manifestVersion'];let g0=aZ(fX['matches']);return g0?(fZ['matches']=Array['isArray'](fX['matches'])?fX['matches']['filter'](g1=>typeof g1=='string'):void 0x0,Object['defineProperty'](fZ,aW,{'value':g0,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1})):delete fZ['matches'],fZ;},b3=async({dir:fT,packageJson:fU,fallbackName:fV})=>{let fW=join(fT,'manifest.json');return b2({'manifest':await aB(fW)?await aG(fW):null,'packageJson':fU,'fallbackName':fV});},b4=fT=>fT['manifest']?.[gA(0x2c0)]||fT['manifest']?.['title']||fT['package']?.['config']?.['title']||fT['package']?.['name']||fT['name']||gA(0x2c6),b5=fT=>fT['manifest']?.['tag']||fT['package']?.[gA(0x2d4)]?.['tag']||void 0x0,b6=(fT,fU)=>{let fV=fT['manifest']?.[aW];if(!Array['isArray'](fV)||!fV['length'])return!0x1;let fW=fU['protocol']['slice'](0x0,-0x1)['toLowerCase'](),fX=fU['hostname']['toLowerCase'](),fY=fU['pathname'];return fV['some'](fZ=>!(fZ['schemes']?.['length']&&!fZ['schemes']['includes'](fW)||!b0(fX,fZ)||!b1(fY,fZ)));},b7=fT=>{const gU=gA;let fU=fT['manifest']?.[aW];return Array[gU(0x273)](fU)&&fU['length']>0x0;},b8=fT=>fT&&'exports'in fT?fT['exports']:fT,b9=fT=>fT?.[gA(0x234)]?.[gA(0x2c0)]||gA(0x2c6),ba=fT=>{const gV=gA;let fU=b8(fT);return!fU||typeof fU!='object'?null:typeof fU['resolveEntries']=='function'?'v2':typeof fU['getMediaInfo']=='function'?'legacy-media':typeof fU['fetchContentMetadata']=='function'?gV(0x288):null;},bb=fT=>ba(fT)!==null,bc=fT=>{let fU=b8(fT);if(!fU||typeof fU!='object')throw Error('Invalid\x20extension\x20exports');return fU;},bd=async fT=>{const gW=gA;let fU=bc(fT),fV=b9(fT);try{if(typeof fU['setup']=='function'){await fU['setup']();return;}typeof fU['init']==gW(0x32c)&&await fU['init']();}catch(fW){let fX=typeof fU['setup']=='function'?'setup':'init',fY=fW instanceof Error?fW:Error(String(fW));throw C['error']('Extension\x20'+fV+'\x20'+fX+'\x20failed:\x20'+fY['message']),fY['stack']&&C['debug'](fY['stack']),fY;}},be=async(fT,fU)=>{const gX=gA;let fV=bc(fT),fW=b9(fT);try{if(typeof fV[gX(0x213)]?.['login']=='function'){await fV['auth']['login'](fU);return;}typeof fV['login']=='function'&&await fV['login'](fU);}catch(fX){let fY=typeof fV['auth']?.['login']=='function'?'auth.login':'login',fZ=fX instanceof Error?fX:Error(String(fX));throw C['error'](gX(0x25b)+fW+'\x20'+fY+'\x20failed:\x20'+fZ['message']),fZ['stack']&&C['debug'](fZ['stack']),fZ;}},bf=async fT=>{const gY=gA;let fU=bc(fT),fV=b9(fT);try{if(typeof fU['auth']?.['logout']=='function'){await fU['auth']['logout']();return;}typeof fU['logout']=='function'&&await fU['logout']();}catch(fW){let fX=typeof fU['auth']?.['logout']=='function'?'auth.logout':'logout',fY=fW instanceof Error?fW:Error(String(fW));throw C['error']('Extension\x20'+fV+'\x20'+fX+gY(0x2fb)+fY['message']),fY['stack']&&C['debug'](fY['stack']),fY;}},bg=async fT=>{const gZ=gA;let fU=bc(fT);typeof fU['hooks']?.[gZ(0x30b)]==gZ(0x32c)&&await fU['hooks']['beforeDownload']();},bh=async(fT,{skipMux:fU=!0x1}={})=>{const h0=gA;let fV=bc(fT),fW=b9(fT);if(!fU&&typeof fV[h0(0x205)]?.['afterMux']=='function')try{await fV['hooks'][h0(0x314)]();}catch(fX){let fY=fX instanceof Error?fX:Error(String(fX));C['error']('Extension\x20'+fW+'\x20hooks.afterMux\x20failed:\x20'+fY['message']),fY[h0(0x2a7)]&&C['debug'](fY['stack']);}if(typeof fV['onDownloadFinished']=='function')try{await fV['onDownloadFinished']();}catch(fZ){let g0=fZ instanceof Error?fZ:Error(String(fZ));C['error']('Extension\x20'+fW+'\x20onDownloadFinished\x20failed:\x20'+g0['message']),g0['stack']&&C['debug'](g0[h0(0x2a7)]);}},bi=async(fT,{context:fU,dirname:fV,skipValidation:fW})=>{const h1=gA;let fX=await A(fT,{'dirname':fV,'context':fU})['finally'](()=>{});if(!fX)return null;let fY='default'in fX[h1(0x328)]?fX['exports']['default']:fX[h1(0x328)];if(!fW&&!bb(fY))throw C['error']('Incompatible\x20extension\x20interface'),aM(aJ[h1(0x33e)],'Incompatible\x20extension\x20interface',{'extensionPath':fT});return fX['exports']=fY,fX;},bj=fT=>fT['split']('/')[gA(0x2f5)]()[0x0]['replaceAll']('@','')['replace']('extension-','')[gA(0x310)]('-extension',''),bk=async fT=>{const h2=gA;let fU=[join(fT,'package.json'),join(fT,'package','package.json')],fV;for(let g4 of fU)if(await aB(g4)){fV=g4;break;}let fW={},fX='',fY='',fZ='',g0=fT;if(fV){g0=dirname(fV),fW=await aG(fV)||{};let g5=fW['main']||'index.js';fX=join(g0,g5),fY=fW['name'],fZ=g0;}else{let g6=await aC(fT),g7=g6['find'](g8=>g8['name']==='index.js')||g6['find'](g8=>g8['name']==='main.js')||g6['find'](g8=>g8['name']==='service.js')||g6['find'](g8=>g8['name']==='extension.js')||g6['find'](g8=>g8['name']['endsWith']('.js'));g7&&(fX=join(fT,g7['name']),fY=parse(fX)[h2(0x2c0)]);}if(!fX)throw aM(aJ['IMPORT_INVALID'],'Extension\x20main\x20script\x20not\x20found:\x20'+fT,{'dir':fT});fZ||=dirname(fX);let g1=bj(fY),g3=await b3({'dir':g0,'packageJson':fW,'fallbackName':g1});return{'name':g1,'path':fX,'dir':fZ,'package':fW,'manifest':g3};},bl=async(fT,fU)=>{const h3=gA;try{let fV=await bk(fT),fW=b4(fV),fX=F({'name':fV['name'],'title':fW,'dir':K});await fX['cookieStore']['import'](join(K,fV['name'],'cookies.txt'));let fY=await bi(fV['path'],{'context':fX,'dirname':fV['dir']});if(!fY)throw aM(aJ['IMPORT_INVALID'],h3(0x2e8)+fV['path'],{'source':fU,'dir':fT,'path':fV['path']});return{'source':fU,'exports':fY['exports'],'context':fX,...fV};}catch(fZ){throw C['error']('Error\x20importing\x20module:\x20'+fZ['message']),C['debug'](fZ instanceof Error?fZ['stack']||fZ['message']:String(fZ)),fZ;}},bm=f;let bn=bm;const bo=fT=>fT['replace'](/\/+$/,''),bp=()=>bo(bn),bq=(fT,fU)=>{let fV=bo(fT);return fU?fV+'/'+(fU['startsWith']('/')?fU['slice'](0x1):fU):fV;},br=fT=>bq(bp(),fT);let bs=null;async function bt(fT){const h4=gA;if(!bs){C['debug']('Public\x20key\x20not\x20found');let g0=await bv();if(g0)C['debug']('Public\x20key\x20found:\x20'+g0['slice'](0x0,0x32)+h4(0x212));else return C['error']('Public\x20key\x20not\x20found\x20in\x20response'),!0x1;if(bs=await bw(g0)['catch'](()=>null),!bs)return C['error'](h4(0x329)),!0x1;}let fU=fT['headers']['get']('X-Signature-Timestamp'),fV=fT[h4(0x261)]['get']('X-Signature');if(!fU||!fV)return C['error']('Signature\x20headers\x20not\x20found'),!0x1;if(Date['now']()-parseInt(fU)>0x493e0)return!0x1;let fW=fU+':'+await fT['clone']()[h4(0x2df)](),fX=bx(fV),fY=new TextEncoder(),fZ=crypto['subtle']['verify']({'name':'ECDSA','hash':'SHA-256'},bs,fX,fY['encode'](fW));return fZ||(bs=null),fZ;}const bu=()=>atob(j);async function bv(fT='/auth/.well-known/public-key'){try{let fU=await fetch(''+bp()+fT);return fU['ok']?await fU['text']():bu();}catch(fV){return C['error'](fV['message']),bu();}}async function bw(fT){const h5=gA;let fU=bx(fT[h5(0x310)]('-----BEGIN\x20PUBLIC\x20KEY-----','')['replace']('-----END\x20PUBLIC\x20KEY-----','')['trim']());return crypto['subtle']['importKey']('spki',fU,{'name':'ECDSA','namedCurve':'P-256'},!0x0,['verify']);}function bx(fT){let fU=atob(fT),fV=new Uint8Array(fU['length']);for(let fW=0x0;fW<fU['length'];fW++)fV[fW]=fU['charCodeAt'](fW);return fV['buffer'];}const by=fT=>createAuthClient({'baseURL':fT+'/auth','plugins':[deviceAuthorizationClient(),tributeClient()],'fetchOptions':{'retry':0x0,'onSuccess':fU=>{let fV=fU['response']['headers']['get']('set-auth-token');fV&&(bK['accessToken']=fV,bL(bK));},'auth':{'type':'Bearer','token':()=>bK['accessToken']||bM()['then'](fU=>fU?.['accessToken'])},'onResponse':async fU=>await bt(fU['response'])['catch'](()=>!0x1)?(C['debug']('Response\x20verified:\x20'+fU['response']['url']),fU):(C['error']('Response\x20verification\x20failed:\x20'+fU['response']['status']+'\x20'+fU['response']['statusText']+'\x20'+fU['response']['url']),G['emit']('error',{'code':gA(0x2ed)}),new Response(JSON['stringify']({'error':gA(0x2ed),'message':gA(0x2fd)}),{'status':0x191,'statusText':'Unauthorized'}))}});let bz='',bA=by(bp());const bB=()=>{let fT=bp();return(!bA||bz!==fT)&&(bz=fT,bA=by(fT)),bA;},bC=async(fT,fU,fV={})=>{let {signal:fW,timeoutMs:fX=0x2710}=fV,fY=new AbortController(),fZ=()=>fY['abort'](fW?.['reason']);fW?.['addEventListener']('abort',fZ,{'once':!0x0});let g0=!0x1,g1=setTimeout(()=>{g0=!0x0,fY['abort'](Error('Request\x20timeout'));},fX);try{let g3=await fetch(fT,{...fU,'signal':fY['signal']});if(!g3['ok'])throw Error('Request\x20failed:\x20'+g3['status']);return g3['json']();}catch(g4){throw g0&&g4 instanceof DOMException&&g4['name']==='AbortError'?Error('Request\x20timed\x20out\x20after\x20'+fX+'ms',{'cause':g4}):g4;}finally{clearTimeout(g1),fW?.['removeEventListener']('abort',fZ);}},bD={'getExtensions':(fT,fU)=>bC(br(gA(0x293)),{'headers':fT?{'Authorization':'Bearer\x20'+fT}:void 0x0},{'signal':fU}),'getSubscriptions':(fT,fU)=>bC(br('subscriptions'),{'headers':{'Authorization':'Bearer\x20'+fT}},{'signal':fU})},bE=0x12c*0x3e8,bF=0x12c*0x3e8,bG=new QueryClient({'queryCache':new QueryCache(),'defaultOptions':{'queries':{'staleTime':bE,'gcTime':bF}}}),bH={'get':fT=>bG['getQueryData'](fT),'set':(fT,fU)=>bG['setQueryData'](fT,fU),'reset':fT=>{fT?bG['removeQueries']({'queryKey':fT}):bG['clear']();},'invalidate':fT=>bG['invalidateQueries']({'queryKey':fT}),'refresh':async(fT,fU)=>(bG['invalidateQueries']({'queryKey':fT}),bI({'queryKey':fT,'queryFn':fU}))},bI=async({queryKey:fT,queryFn:fU,staleTime:fV,enabled:fW=!0x0})=>{const h6=gA;try{let fX=bG['getQueryState'](fT),fY=fX?fX?.[h6(0x1c7)]||!fX?.[h6(0x27f)]&&!fX?.['errorUpdatedAt']||Date['now']()-fX['dataUpdatedAt']>(fV??bE):!0x0,fZ=()=>bH['reset'](fT),g0=()=>bH[h6(0x2bc)](fT),g1=()=>bH['refresh'](fT,fU);return fW?fX&&!fY?{'data':fX['data'],'reset':fZ,'invalidate':g0,'refresh':g1}:{'data':await bG['fetchQuery']({'queryKey':fT,'queryFn':fU,'staleTime':fV}),'reset':fZ,'invalidate':g0,'refresh':g1}:{'data':null,'reset':fZ,'invalidate':g0,'refresh':g1};}catch(g3){throw bG[h6(0x2d9)]({'queryKey':fT}),g3;}},bJ=new p(join(t,'session.json')),bK={'accessToken':'','tokenType':'','scope':'','createdAt':''},bL=async fT=>{const h7=gA;bJ['setItem']('access_token',fT['access_token']),bJ['setItem']('token_type',fT[h7(0x27b)]||'Bearer'),bJ['setItem'](h7(0x1c8),fT['scope']),bJ[h7(0x22c)]('created_at',new Date()['toISOString']()),bK['accessToken']=fT['access_token'],bK['tokenType']=fT['token_type']||'Bearer',bK['scope']=fT['scope'],bK['createdAt']=new Date()['toISOString']();},bM=async()=>{const h8=gA;let fT=bJ[h8(0x333)](h8(0x2a0)),fU=bJ['getItem']('token_type'),fV=bJ['getItem']('scope'),fW=bJ['getItem']('created_at');return!fT||!fU||!fV||!fW?null:{'accessToken':fT,'tokenType':fU,'scope':fV,'createdAt':new Date(fW)};},bN=async()=>{const h9=gA;let fT=await bI({'queryKey':['session',bp()],'queryFn':()=>bB()['getSession']()});return{'session':fT['data']?.['data']?.['session'],'user':fT['data']?.[h9(0x1d5)]?.['user'],'error':fT[h9(0x1d5)]?.['error']};},bO=async()=>{const ha=gA;let {user:fT,error:fU}=await bN(),fV=await bI({'queryKey':['subscriptions',bp()],'queryFn':async()=>bB()[ha(0x291)]['list'](),'enabled':!!fT?.['id']});return{'data':fV['data']?.['data'],'error':fV['data']?.['error']??fU};},bP=['lowConnectionsCount','oneDevice'],bQ=['mediumConnectionsCount','twoDevices',gA(0x24a),'decryption','customIcon','tags','parallelDownloads','userExtensions','portableBuild'],bR=['highConnectionsCount','threeDevices','customMuxFormat','customDecrypter','customDrmClient',gA(0x2e2)],bS={'basic':bP,'plus':bQ,'pro':[...bP,...bQ,...bR]},bT=()=>bI({'queryKey':['lava-subscriptions',bp()],'queryFn':async()=>{let fT=bK['accessToken']||(await bM())?.['accessToken'];return fT?bD['getSubscriptions'](fT):[];}}),bU=async()=>{let fT=await bO();return{'plan':(await bT())['data']?.[0x0]?.['productTitle']||fT['data']?.['find'](fU=>new Date(fU['expiresAt'])>new Date())?.['tributeSubscriptionName'],'error':fT['error']};},bV=async()=>{let {user:fT,session:fU}=await bN(),{plan:fV,error:fW}=await bU();return{'user':fT,'session':fU,'error':fW,'plan':fV,'grantedBenefits':fV?bS[fV['toLowerCase']()]??[]:[]};};var bW=a7((fT,fU)=>{const hb=gA;fU[hb(0x328)]={'instagram':{'create':fV=>{const hg=hb;let fW={'exports':{}};return((fX,fY,fZ,g0,g1,g3,g4,g5,g6,g7)=>{const hc=b;let g8=fX??Streamyx??{};g8&&(g8['defineExtension']||=gh=>gh);let g9=g8['defineExtension'];g8[hc(0x247)],g8['sleep'],g8[hc(0x2be)],g8['prompt'],g8['notify'],g8['confirm'],g8[hc(0x2eb)],g8['utils'];let ga=g8['Input'],gb=g8['UrlSource'];g8['ALL_FORMATS'],g8['DASH'],g8['DASH_FORMATS'],g8['HLS'],g8['HLS_FORMATS'],g8['MP4'],g8['MP3'];let gc={'Referer':'https://www.instagram.com/'},gd={'X-IG-App-ID':'936619743392459','User-Agent':'Mozilla/5.0\x20(Windows\x20NT\x2010.0;\x20Win64;\x20x64)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/107.0.0.0\x20Safari/537.36'},ge=async gh=>{const hd=hc;let gi=new URLSearchParams({'doc_id':hd(0x318),'variables':JSON['stringify']({'shortcode':gh,'child_comment_count':0x3,'fetch_comment_count':0x28,'parent_comment_count':0x18,'has_threaded_comments':!0x0})});try{let gj=await fY('https://www.instagram.com/graphql/query/?'+gi['toString'](),{'headers':gd});return gj['ok']?(await gj[hd(0x327)]())[hd(0x1d5)]?.['xdt_shortcode_media']??null:(g1['error'](hd(0x340)+gj['status']),null);}catch(gk){return g1['error']('Error\x20during\x20GraphQL\x20fetch:',gk),null;}},gf=async gh=>{try{let gi=await fY('https://www.instagram.com/p/'+gh+'/embed/captioned/',{'headers':{'User-Agent':gd['User-Agent']}});if(!gi['ok'])return null;let gj=(await gi['text']())['match'](/window\.__additionalDataLoaded\('extra',\s*({.+?})\s*\);/);return gj?.[0x1]?JSON['parse'](gj[0x1])['shortcode_media']??null:null;}catch(gk){return g1['error']('Error\x20during\x20embed\x20page\x20fetch:',gk),null;}},gg=gh=>{const he=hc;let gi=gh[he(0x274)]?.['edges']?.[0x0]?.['node']?.['text']||'Instagram\x20Post',gj=[],gk=gm=>{if(!gm)return;let gn=gm['is_video']&&gm['video_url']?gm['video_url']:gm['display_url'];gn&&gj['push']({'title':gi,'input':new ga({'source':new gb(gn,{'requestInit':{'headers':gc}})})});},gl=gh['edge_sidecar_to_children']?.[he(0x1c6)];if(gl?.['length']){for(let gm of gl)gk(gm['node']);}else gk(gh);return gj;};fW['exports']=g9({async 'resolveEntries'(gh){const hf=hc;let gi=new URLPattern({'pathname':'/:type(p|reel|tv|reels|videos)/:shortcode{/*}?','baseURL':new URL(gh)[hf(0x1c9)]})['exec'](gh)?.['pathname']['groups']['shortcode'];if(!gi)return g1['error']('Could\x20not\x20extract\x20a\x20valid\x20Instagram\x20shortcode\x20from\x20the\x20URL'),g1['debug'](gh),[];try{let gj=await ge(gi);return gj||=(g1['warn']('GraphQL\x20method\x20failed.\x20Falling\x20back\x20to\x20embed\x20page\x20scraping.'),await gf(gi)),gj?gg(gj):(g1[hf(0x23a)]('All\x20extraction\x20methods\x20failed.\x20The\x20post\x20may\x20be\x20private,\x20deleted,\x20or\x20require\x20a\x20login.'),[]);}catch(gk){return g1['error']('A\x20critical\x20error\x20occurred\x20while\x20fetching\x20Instagram\x20metadata:',gk),[];}}});})(fV['Azot'],fV['fetch'],fV['localStorage'],fV['cookieStore'],fV['console'],fV['prompt'],fV['alert'],fV['document'],fV[hg(0x203)],fV[hg(0x1d3)]),fW['exports']['default']||fW[hg(0x328)];},'manifest':{'manifestVersion':0x1,'name':'Instagram','icon':hb(0x245),'matches':['https://instagram.com/*','https://*.instagram.com/*']},'pkg':{'name':'instagram','version':'0.0.1','private':!0x0,'keywords':['social-networks'],'homepage':'https://instagram.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'instagram.ts'}},'ntv':{'create':fV=>{const hl=hb;let fW={'exports':{}};return((fX,fY,fZ,g0,g1,g3,g4,g5,g6,g7)=>{const hk=b;let g8=fX??Streamyx??{};g8&&(g8['defineExtension']||=gh=>gh);let g9=g8['defineExtension'];g8['version'],g8['sleep'],g8['input'],g8['prompt'],g8['notify'],g8['confirm'],g8['ask'],g8['utils'];let ga=g8['Input'],gb=g8['UrlSource'];g8['ALL_FORMATS'],g8['DASH'],g8['DASH_FORMATS'],g8['HLS'],g8['HLS_FORMATS'],g8['MP4'],g8['MP3'];let gc=(gh,gi,gj)=>gh['split'](gi)[0x1]?.['split'](gj)[0x0],gd=(gh,gi)=>{let gj=gc(gh,'<'+gi+'>','</'+gi+'>')?.['trim']();if(!gj)return;let gk=gj['match'](/<!\[CDATA\[(.*?)\]\]>/s);return gk?.[0x1]?gk[0x1]['trim']():gj['split']('DATA[')[0x1]?.['split'](']')[0x0]?.['trim']()||gj;},ge=async(gh,gi)=>{const hh=b;let gj=await fY(gh);return gj['ok']?await gj[hh(0x2df)]():(g1['error'](hh(0x1f8)+gi+'.\x20Status:\x20'+gj[hh(0x26a)]+'\x20'+gj['statusText']),null);},gf=async(gh,gi,gj)=>{const hi=b;let gk=new URL(gh)['pathname'],gl=new Set();for(let gn of gi['split']('href=\x22/serial')){if(!gn['startsWith']('/'))continue;let go=gn['split']('\x22')[0x0];!go||go['length']<=0x1||go['includes']('/issues/')||go['includes']('/about/')||go['split']('/')['length']<=0x2||gl['add'](gh['replace'](gk,hi(0x226)+go));}let gm=[];for(let gp of gl)gm['push'](...await gg(gp,gj));return gm;},gg=async(gh,gi=new Set())=>{const hj=b;if(gi['has'](gh))return[];gi['add'](gh);let gj=await ge(gh,hj(0x211));if(!gj)return[];let gk=gc(gj,'<meta\x20property=\x22ya:ovs:feed_url\x22\x20content=\x22','\x22>')??gc(gj,'<meta\x20property=\x22ya:ovs:feed_url\x22\x20content=\x22','\x22\x20/>');if(!gk)return new URL(gh)['pathname']['includes']('/serial')?gf(gh,gj,gi):(g1['error']('Could\x20not\x20find\x20video\x20link\x20in\x20the\x20page.'),[]);let gl=gk['split']('video/')[0x1]?.['split']('/')[0x0];if(!gl)return g1['error']('Could\x20not\x20parse\x20NTV\x20video\x20id.'),[];let gm=await ge('https://www.ntv.ru/vi'+gl+'/','NTV\x20XML\x20metadata');if(!gm)return[];let gn=gd(gm,'dash')||gd(gm,'hls'),go=gd(gm,'file')||gd(gm,'video'),gp=gd(gm,'hifile')||gd(gm,'hd_video')||gn||go;if(!gp)return g1['error']('Could\x20not\x20resolve\x20NTV\x20media\x20URL.'),[];let gq=gc(gm,'<embed_tag>','</embed_tag>')||'NTV',gr=gc(gj,'\x22name\x22:\x22','\x22'),gs=gr?.['includes']('серия')?gr['split']('-')[0x0]:void 0x0,gt=gs?parseInt(gs,0xa):void 0x0,gu=gc(gm,'<subtitles>','</subtitles>'),gv=gu?'https://www.ntv.ru'+gu:void 0x0;gv&&g1['debug']('Subtitles:\x20'+gv);let gw=new ga({'source':new gb(gp)});return gv&&gw['addSubtitleTrack'](new gb(gv),{'languageCode':'ru','name':'Russian'}),[{'type':gt?'episode':'video','title':gq,'season':gt?0x1:void 0x0,'episode':gt,'input':gw}];};fW[hk(0x328)]=g9({'resolveEntries'(gh){return gg(gh,new Set());}});})(fV['Azot'],fV[hl(0x301)],fV['localStorage'],fV['cookieStore'],fV['console'],fV['prompt'],fV['alert'],fV['document'],fV['navigator'],fV['window']),fW['exports']['default']||fW['exports'];},'manifest':{'manifestVersion':0x1,'name':'НТВ','icon':'https://static.ntv.ru/static/images/logo.png','matches':['https://ntv.ru/*','https://*.ntv.ru/*']},'pkg':{'name':'ntv','version':hb(0x284),'private':!0x0,'keywords':['tv-channels'],'homepage':hb(0x252),'author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':hb(0x240),'email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'ntv.ts'}},'rbc':{'create':fV=>{const ho=hb;let fW={'exports':{}};return((fX,fY,fZ,g0,g1,g3,g4,g5,g6,g7)=>{const hm=b;let g8=fX??Streamyx??{};g8&&(g8[hm(0x216)]||=gc=>gc);let g9=g8['defineExtension'];g8['version'],g8['sleep'],g8['input'],g8['prompt'],g8['notify'],g8['confirm'],g8['ask'],g8['utils'];let ga=g8['Input'],gb=g8['UrlSource'];g8['ALL_FORMATS'],g8['DASH'],g8['DASH_FORMATS'],g8['HLS'],g8[hm(0x2c1)],g8['MP4'],g8['MP3'],fW['exports']=g9({async 'resolveEntries'(gc){const hn=hm;let gd=await fY(gc);if(!gd['ok'])throw Error('Failed\x20to\x20fetch\x20RBC\x20page:\x20'+gd['status']+'\x20'+gd['statusText']);let ge=(await gd['text']())['match'](/(?:https?:)?\/\/[^\s"'<>]+\.m3u8(?:\?[^\s"'<>]*)?/i)?.[0x0];if(!ge)throw Error(hn(0x30c));return[{'type':'video','input':new ga({'source':new gb(ge['startsWith']('//')?'https:'+ge:ge)})}];}});})(fV['Azot'],fV['fetch'],fV['localStorage'],fV['cookieStore'],fV['console'],fV['prompt'],fV['alert'],fV[ho(0x23e)],fV['navigator'],fV['window']),fW['exports'][ho(0x222)]||fW['exports'];},'manifest':{'manifestVersion':0x1,'name':'РБК','icon':'https://static.rustore.ru/imgproxy/A-G-s2Q1x2iqq3qHCAo66-nllrtlqEr7XNU_JKXt4mQ/preset:web_app_icon_160/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS80MGViMWY3MS1kMDkzLTQ2NDMtOTkyNi0xZWM0ZjkwNzViMTQ=.webp','matches':['https://rbc.ru/*','https://*.rbc.ru/*']},'pkg':{'name':'rbc','version':'0.0.2','private':!0x0,'keywords':['news'],'homepage':'https://rbc.ru/','author':{'name':hb(0x2c3),'url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'rbc.ts'}},'rutube':{'create':fV=>{let fW={'exports':{}};return((fX,fY,fZ,g0,g1,g3,g4,g5,g6,g7)=>{const hp=b;let g8=fX??Streamyx??{};g8&&(g8[hp(0x216)]||=gf=>gf);let g9=g8['defineExtension'];g8['version'],g8['sleep'],g8['input'],g8['prompt'],g8['notify'],g8['confirm'],g8[hp(0x2eb)],g8['utils'];let ga=g8['Input'],gb=g8['UrlSource'];g8['ALL_FORMATS'],g8[hp(0x2e3)],g8[hp(0x2d7)],g8['HLS'],g8['HLS_FORMATS'],g8['MP4'],g8[hp(0x24b)];let gc=['/video/:id{/}?','/play/embed/:id{/}?','/shorts/:id{/}?','/yappy/:yappyId{/}?','/video/private/:id{/}?'],gd=gf=>{const hq=hp;let gg={'yappyId':'','id':'','key':''};gg['key']=new URL(gf)['searchParams']['get']('p')??'';for(let gh of gc){let gi=new URLPattern(gh,'https://rutube.ru')['exec'](gf);gi&&(Object['assign'](gg,gi[hq(0x2aa)]['groups']),Object['assign'](gg,gi['search']['groups']));}return gg;},ge=async gf=>{const hr=hp;let gg=(await fY('https://rutube.ru/pangolin/api/web/yappy/yappypage/?client=wdp&videoId='+gf+'&page=1&page_size=15')['then'](gh=>gh['json']())['catch'](()=>null))?.['results']?.['find'](gh=>String(gh['id'])===gf)?.['link'];return gg?[{'type':'video','title':'rutube_yappy_'+gf,'input':new ga({'source':new gb(gg)})}]:(g1['error'](hr(0x2f8)),[]);};fW[hp(0x328)]=g9({async 'resolveEntries'(gf){const hs=hp;let gg=gd(gf);if(gg['yappyId'])return ge(gg['yappyId']);if(!gg['id'])return g1['error']('Could\x20not\x20extract\x20Rutube\x20video\x20id'),[];let gh=new URL('https://rutube.ru/api/play/options/'+gg['id']+hs(0x23d));gg['key']&&gh['searchParams']['set']('p',gg['key']);let gi=await fY(gh)['then'](gj=>gj['json']())['catch'](gj=>(gj instanceof Error&&g1[hs(0x1e2)](gj['message']),null));return gi?gi['detail']||!gi['video_balancer']?.['m3u8']?(g1['error']('Play\x20info\x20is\x20empty'),[]):gi['live_streams']?.['hls']?(g1['error']('Live\x20videos\x20are\x20not\x20supported'),[]):[{'type':'video','title':gi['title']?.[hs(0x28f)]()||'rutube_'+gg['id'],'input':new ga({'source':new gb(gi['video_balancer']['m3u8'])})}]:(g1['error']('Cannot\x20fetch\x20play\x20info'),[]);}});})(fV['Azot'],fV['fetch'],fV['localStorage'],fV['cookieStore'],fV['console'],fV['prompt'],fV['alert'],fV['document'],fV['navigator'],fV['window']),fW['exports']['default']||fW['exports'];},'manifest':{'manifestVersion':0x1,'name':'RUTUBE','icon':'https://static.rustore.ru/imgproxy/vcyBc0LG-3ybXcGs_-_OJXH9ULjoegHlLs-DacemG08/preset:app_card_icon/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS9hcGsvMjQ2MjA3L2NvbnRlbnQvSUNPTi9hNTZhZWJlMy01NjVhLTRiZjYtOTQyZC0xZjE0OTk0YjlhNmUucG5n.webp','matches':['https://rutube.ru/*','https://*.rutube.ru/*']},'pkg':{'name':'rutube','version':'0.0.13','private':!0x0,'keywords':[hb(0x299)],'homepage':'https://rutube.ru/','author':{'name':'Azot','url':hb(0x264)},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':hb(0x1f7)}],'type':'module','main':'rutube.ts'}},'soundcloud':{'create':fV=>{const hw=hb;let fW={'exports':{}};return((fX,fY,fZ,g0,g1,g3,g4,g5,g6,g7)=>{const ht=b;let g8=fX??Streamyx??{};g8&&(g8['defineExtension']||=gg=>gg);let g9=g8['defineExtension'];g8['version'],g8[ht(0x33f)],g8['input'],g8['prompt'],g8['notify'],g8['confirm'],g8['ask'];let ga=g8['utils'],gb=g8['Input'],gc=g8['UrlSource'];g8['ALL_FORMATS'],g8['DASH'],g8['DASH_FORMATS'],g8['HLS'],g8['HLS_FORMATS'],g8['MP4'],g8['MP3'];let gd={'version':'','id':''},ge=async()=>{const hu=ht;try{let gg=await fY('https://soundcloud.com/')['then'](gj=>gj[hu(0x2df)]())['catch'](gj=>{let gk=gj instanceof Error&&gj['cause']!=null?String(gj['cause']):'';return gj instanceof Error&&gk['includes']('ECONNRESET')&&g1['warn']('Soundcloud\x20may\x20be\x20blocked\x20in\x20your\x20region.\x20Use\x20proxy\x20or\x20VPN\x20to\x20bypass\x20restrictions.'),'';}),gh=gg['match'](/window\.__sc_version="([0-9]{10})"/)?.[0x1];if(gh&&gd['version']===gh)return gd['id'];let gi='';for(let gj of gg[hu(0x32e)](/<script.+src="(.+)">/g)){let gk=gj[0x1];if(!gk?.['startsWith']('https://a-v2.sndcdn.com/'))continue;let gl=(await fY(gk)['then'](gm=>gm['text']())['catch'](()=>''))['match'](/\("client_id=[A-Za-z0-9]{32}"\)/)?.[0x0]['match'](/[A-Za-z0-9]{32}/)?.[0x0];if(gl){gi=gl;break;}}return gh&&(gd['version']=gh,gd['id']=gi),gi;}catch{return'';}},gf=gg=>gg['audioCodecs']?.['some'](gh=>gh==='aac'||gh==='mp3')??!0x1;fW['exports']=g9({async 'resolveEntries'(gg,gh){const hv=ht;let {author:gi,song:gj,accessKey:gk,shortLink:gl}=ga['execUrlPatterns'](gg,[':author/:song/s-:accessKey',':author/:song',':shortLink'],['https://soundcloud.com','https://on.soundcloud.com'])['pathname'],gm=await ge();if(!gm)throw Error(hv(0x28a));let gn;if(new URL(gg)['hostname']==='on.soundcloud.com'&&gl&&(gn=await fY('https://on.soundcloud.com/'+gl+'/',{'redirect':'manual'})['then'](gu=>{let gv=gu['headers']['get']('location');if(gu['status']===0x12e&&gv?.['startsWith']('https://soundcloud.com/'))return gv['split']('?',0x1)[0x0];})['catch'](()=>void 0x0)),!gn&&gi&&gj&&(gn=hv(0x1e9)+gi+'/'+gj+(gk?'/s-'+gk:'')),!gn)throw Error('Could\x20not\x20fetch');let go=await fY('https://api-v2.soundcloud.com/resolve?url='+gn+'&client_id='+gm)['then'](gu=>gu[hv(0x26a)]===0xc8?gu['json']():null)['catch'](()=>null);if(!go)throw Error('Could\x20not\x20fetch');let gp=go['media']?.['transcodings'];if(!gp?.['length'])throw Error('Empty\x20download');let gq=gp[hv(0x32d)](gu=>gu['preset']==='opus_0_0'),gr=gp['find'](gu=>gu['preset']==='mp3_0_0');if(gr&&(gf(gh)||!gq)&&(gq=gr),!gq)throw Error('Empty\x20download');let gs=''+gq['url']+(gq['url']['includes']('?')?'&':'?')+'client_id='+gm+'&track_authorization='+go['track_authorization'];if(!gs['startsWith']('https://api-v2.soundcloud.com/media/soundcloud:tracks:'))throw Error('Empty\x20download');let gt=await fY(gs)[hv(0x244)](async gu=>(await gu['json']())['url']??'')['catch'](()=>'');if(!gt)throw Error('Could\x20not\x20fetch');return[{'type':hv(0x1f1),'title':go['title']['trim'](),'author':go['user']['username']['trim'](),'input':new gb({'source':new gc(gt)})}];}});})(fV['Azot'],fV['fetch'],fV['localStorage'],fV['cookieStore'],fV['console'],fV['prompt'],fV['alert'],fV[hw(0x23e)],fV['navigator'],fV['window']),fW['exports']['default']||fW['exports'];},'manifest':{'manifestVersion':0x1,'name':'SoundCloud','icon':hb(0x321),'matches':['https://soundcloud.com/*','https://*.soundcloud.com/*']},'pkg':{'name':'soundcloud','version':'0.0.6','private':!0x0,'keywords':['music'],'homepage':hb(0x1e9),'author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':hb(0x240),'email':hb(0x29d),'url':'https://github.com/vitalygashkov'}],'type':'module','main':'soundcloud.ts'}},'tiktok':{'create':fV=>{const hz=hb;let fW={'exports':{}};return((fX,fY,fZ,g0,g1,g3,g4,g5,g6,g7)=>{const hx=b;let g8=fX??Streamyx??{};g8&&(g8['defineExtension']||=gc=>gc);let g9=g8['defineExtension'];g8['version'],g8['sleep'],g8['input'],g8['prompt'],g8['notify'],g8['confirm'],g8['ask'],g8[hx(0x1e1)];let ga=g8['Input'],gb=g8['UrlSource'];g8['ALL_FORMATS'],g8['DASH'],g8[hx(0x2d7)],g8['HLS'],g8['HLS_FORMATS'],g8['MP4'],g8[hx(0x24b)],fW['exports']=g9({async 'resolveEntries'(gc){const hy=hx;let gd=await fY(gc);if(!gd['ok'])return g1['error']('Failed\x20to\x20fetch\x20TikTok\x20page.\x20Status:\x20'+gd['status']),[];let ge=(await gd['text']())['split']('<script\x20id=\x22__UNIVERSAL_DATA_FOR_REHYDRATION__\x22\x20type=\x22application/json\x22>')[0x1]?.['split']('</script>')[0x0];if(!ge)return g1['error']('Could\x20not\x20find\x20target\x20script\x20tag.\x20TikTok\x20might\x20have\x20updated\x20their\x20page\x20structure.'),[];let gf;try{gf=JSON['parse'](ge);}catch(gj){return g1['error'](hy(0x1f6),gj,{'url':gc}),[];}let gg=gf['__DEFAULT_SCOPE__']?.['webapp.video-detail'],gh=gg?.['itemInfo']?.['itemStruct'];if(!gh)return g1['error']('Could\x20not\x20find\x20video\x20data\x20in\x20the\x20JSON\x20payload.\x20The\x20content\x20might\x20be\x20unavailable\x20or\x20the\x20structure\x20has\x20changed.'),gg?.['statusMsg']&&g1['error']('Error\x20'+gg['statusCode']+':\x20'+gg[hy(0x221)]),[];let gi=gh['video']?.[hy(0x27e)];return gi?[{'type':'video','title':gh['desc']||'TikTok\x20Video','input':new ga({'source':new gb(gi,{'requestInit':{'headers':{'Referer':'https://www.tiktok.com/','Cookie':g5['cookie']}}})})}]:(g1['error']('Could\x20not\x20find\x20a\x20video\x20URL\x20(playAddr)\x20in\x20the\x20JSON\x20payload.'),[]);}});})(fV['Azot'],fV['fetch'],fV['localStorage'],fV['cookieStore'],fV['console'],fV['prompt'],fV['alert'],fV['document'],fV['navigator'],fV[hz(0x1d3)]),fW['exports']['default']||fW['exports'];},'manifest':{'manifestVersion':0x1,'name':'TikTok','tag':'TT','icon':'https://play-lh.googleusercontent.com/LdBITldj-tJxqLm-CsWSbnt4BMo2gk53cgM7mWIL-zn44m1ywLyQgxRsHKqp8r0qceXs=w480-h960-rw','permissions':[],'matches':['https://tiktok.com/*','https://*.tiktok.com/*']},'pkg':{'name':'tiktok','version':'0.0.2','private':!0x0,'keywords':['social-networks'],'homepage':'https://www.tiktok.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':hb(0x1d9),'main':'tiktok.ts'}},'virtualroom':{'create':fV=>{const hC=hb;let fW={'exports':{}};return((fX,fY,fZ,g0,g1,g3,g4,g5,g6,g7)=>{const hA=b;let g8=fX??Streamyx??{};g8&&(g8['defineExtension']||=gc=>gc);let g9=g8['defineExtension'];g8['version'],g8['sleep'],g8['input'],g8[hA(0x1de)],g8[hA(0x2ac)],g8['confirm'],g8[hA(0x2eb)],g8[hA(0x1e1)];let ga=g8['Input'],gb=g8['UrlSource'];g8['ALL_FORMATS'],g8['DASH'],g8['DASH_FORMATS'],g8['HLS'],g8['HLS_FORMATS'],g8['MP4'],g8['MP3'],fW['exports']=g9({async 'resolveEntries'(gc){const hB=hA;let gd=new URL(gc)[hB(0x232)]['get']('recordId');if(!gd)return g1['error']('Could\x20not\x20extract\x20VirtualRoom\x20recordId.'),[];let ge=await fY('https://mv1.virtualroom.ru/vr/player/records/'+gd+hB(0x1da))['then'](gh=>gh['ok']?gh['json']():null)['catch'](()=>null),gf=await fY(hB(0x30f)+gd+'/events')['then'](gh=>gh['ok']?gh['json']():null)['catch'](()=>null),gg=ge?.['data']?.['roomParameters']?.['name']??'VirtualRoom';return(gf?.['data']?.['translations']??[])['filter'](gh=>!!gh['url'])['map'](gh=>({'title':[gg,gh['type'],gh['source'],gh['start']]['filter'](Boolean)['join']('\x20'),'input':new ga({'source':new gb(gh['url'])})}));}});})(fV[hC(0x2c3)],fV[hC(0x301)],fV['localStorage'],fV['cookieStore'],fV['console'],fV['prompt'],fV['alert'],fV[hC(0x23e)],fV['navigator'],fV['window']),fW['exports']['default']||fW['exports'];},'manifest':{'manifestVersion':0x1,'name':'VirtualRoom','icon':'https://sun9-50.userapi.com/impg/rY5N7sdA93TFdjkeYqPTnPIjvCJ0rALo_V7V8g/zLAaAv0PpvY.jpg?size=400x400&quality=95&sign=5ddcd6358131b204b8619cb8eeff943f&type=album','matches':['https://virtualroom.ru/*','https://*.virtualroom.ru/*']},'pkg':{'name':'virtualroom','version':'0.0.7','private':!0x0,'keywords':['videotelephony'],'homepage':'https://virtualroom.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'virtualroom.ts'}},'vk':{'create':fV=>{const hF=hb;let fW={'exports':{}};return((fX,fY,fZ,g0,g1,g3,g4,g5,g6,g7)=>{const hD=b;let g8=fX??Streamyx??{};g8&&(g8['defineExtension']||=gg=>gg);let g9=g8['defineExtension'];g8[hD(0x247)],g8['sleep'],g8['input'],g8['prompt'],g8['notify'],g8['confirm'],g8['ask'],g8['utils'];let ga=g8['Input'],gb=g8['UrlSource'];g8['ALL_FORMATS'],g8['DASH'],g8['DASH_FORMATS'],g8['HLS'],g8[hD(0x2c1)],g8['MP4'],g8['MP3'];let gc=['2160','1440',hD(0x295),'720',hD(0x278),'360',hD(0x259),'144'],gd=gg=>{let gh=gg['match'](/video-(\d+)_(\d+)/);return gh?{'ownerId':gh[0x1],'videoId':gh[0x2]}:null;},ge=gg=>{if(!gg)return null;for(let gh of gg)if(Array['isArray'](gh)){for(let gi of gh)if(gi&&typeof gi=='object'&&'player'in gi)return gi;}return null;},gf=(gg,gh)=>{let gi=gh['videoQuality']?.['replace']('p','')['trim'](),gj=gc['filter'](gk=>!!gg['url'+gk]);return gj['length']?gi&&gj['includes'](gi)?gi:gj[0x0]:null;};fW['exports']=g9({async 'resolveEntries'(gg,gh){const hE=hD;let gi=gd(gg);if(!gi)return g1['error']('Could\x20not\x20extract\x20VK\x20video\x20identifiers'),[];let gj=await fY('https://vkvideo.ru/al_video.php?act=show',{'method':'POST','headers':{'content-type':'application/x-www-form-urlencoded;\x20charset=utf-8','accept':'*/*','accept-language':'ru-RU,ru;q=0.9','sec-ch-ua':'\x22Chromium\x22;v=\x22130\x22,\x20\x22Google\x20Chrome\x22;v=\x22130\x22,\x20\x22Not?A_Brand\x22;v=\x2299\x22','sec-ch-ua-mobile':'?0','sec-ch-ua-platform':'\x22macOS\x22','sec-fetch-dest':'empty','sec-fetch-mode':'cors','sec-fetch-site':'same-origin','x-requested-with':'XMLHttpRequest','Referer':gg,'Referrer-Policy':'strict-origin-when-cross-origin'},'body':new URLSearchParams({'al':'1','autoplay':'1','claim':'','force_no_repeat':'true','is_video_page':'true','list':'','module':'direct','t':'','video':'-'+gi['ownerId']+'_'+gi['videoId']})['toString']()});if(!gj['ok'])throw Error('VK\x20request\x20failed:\x20'+gj['status']+'\x20'+gj['statusText']);let gk=ge((await gj['json']())['payload']),gl=gk?.[hE(0x292)]?.['params'],gm=gl&&gl['length']>0x0?gl[0x0]:void 0x0;if(!gk||!gm)return g1['error']('Could\x20not\x20find\x20VK\x20player\x20payload'),[];if(gk['mvData']?.['is_active_live']===0x1||gk['mvData']?.['is_active_live']==='1')return g1['error']('Live\x20videos\x20are\x20not\x20supported'),[];let gn=gf(gm,gh),go=gn?gm['url'+gn]:void 0x0,gp=gm['dash_sep']||go;return gp?[{'type':'video','title':[gm['md_title']?.[hE(0x28f)](),gm['md_author']?.['trim']()]['filter'](Boolean)['join']('\x20'),'input':new ga({'source':new gb(gp,{'requestInit':{'headers':{'Referer':gg,'Cookie':g5['cookie']}}})})}]:(g1['error']('Could\x20not\x20find\x20video\x20URL'),[]);}});})(fV['Azot'],fV['fetch'],fV['localStorage'],fV[hF(0x30a)],fV['console'],fV['prompt'],fV['alert'],fV[hF(0x23e)],fV['navigator'],fV[hF(0x1d3)]),fW['exports']['default']||fW['exports'];},'manifest':{'manifestVersion':0x1,'name':'VK','icon':'https://static.rustore.ru/imgproxy/kSjDiz_MKxD_jzwgEqqaIjQZTE-NEP1Xt8HtJT7EU4s/preset:app_card_icon/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS9hcGsvMjAyNzgyMzI5NS9jb250ZW50L0lDT04vOTc0ODYwMTgtNTc4NS00MjRkLTljYWItNGZlNDk2ZDI3Yzc2LnBuZw==.webp','matches':['https://vk.com/*',hb(0x1e7),'https://vkvideo.ru/*','https://*.vkvideo.ru/*']},'pkg':{'name':'vk','version':'0.0.8','private':!0x0,'keywords':['video-hostings'],'homepage':'https://vkvideo.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'vk.ts'}},'weibo':{'create':fV=>{const hH=hb;let fW={'exports':{}};return((fX,fY,fZ,g0,g1,g3,g4,g5,g6,g7)=>{let g8=fX??Streamyx??{};g8&&(g8['defineExtension']||=gd=>gd);let g9=g8['defineExtension'];g8['version'],g8['sleep'],g8['input'],g8['prompt'],g8['notify'],g8['confirm'],g8['ask'];let ga=g8['utils'],gb=g8['Input'],gc=g8['UrlSource'];g8['ALL_FORMATS'],g8['DASH'],g8['DASH_FORMATS'],g8['HLS'],g8['HLS_FORMATS'],g8['MP4'],g8['MP3'],fW['exports']=g9({async 'resolveEntries'(gd){const hG=b;let ge=ga['execUrlPatterns'](gd,['/:userId(\x5cd+)/:bid','/detail/:mid'],['https://weibo.com/','https://m.weibo.cn']),gf=ge[hG(0x2aa)]['bid']||ge['pathname']['mid'];if(!gf)return[];let gg=await fY('https://m.weibo.cn/statuses/show?id='+gf,{'credentials':'include','referrer':'https://m.weibo.cn/status/'+(ge['pathname']['bid']??gf)+'?jumpfrom=weibocom','method':'GET','mode':'cors'})['then'](gk=>gk['json']())['catch'](()=>null);if(!gg?.[hG(0x1d5)])return g1['error']('Could\x20not\x20resolve\x20Weibo\x20post\x20metadata'),[];let gh=[],gi=gg['data']['pics'],gj=gg['data']['page_info'];if(gi?.['length']){for(let gk of gi['filter'](gl=>gl['type']==='video'||gl[hG(0x26e)]==='livephoto'))gk['videoSrc']&&gh['push']({'type':'video','title':gk['pid'],'input':new gb({'source':new gc(gk['videoSrc'])})});}else{if(gj?.['type']==='video'){let gl=Object['values'](gj['urls']??{})[0x0],gm=gj['media_info']?.['stream_url_hd']||gj[hG(0x281)]?.['stream_url'],gn=gl||gm;gn&&gh['push']({'type':'video','title':gj['title']||gj['page_title'],'input':new gb({'source':new gc(gn)})});}}return gh;}});})(fV[hH(0x2c3)],fV['fetch'],fV['localStorage'],fV['cookieStore'],fV[hH(0x2b2)],fV['prompt'],fV['alert'],fV['document'],fV['navigator'],fV['window']),fW['exports']['default']||fW['exports'];},'manifest':{'manifestVersion':0x1,'name':hb(0x2cc),'icon':hb(0x303),'matches':['https://weibo.com/*',hb(0x1d7),'https://weibo.cn/*','https://*.weibo.cn/*']},'pkg':{'name':'weibo','version':'0.0.6','private':!0x0,'keywords':['social-networks'],'homepage':'https://weibo.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'weibo.ts'}}};}),bX=a9(bW(),0x1);const bY=fT=>({'name':fT['name'],'source':fT['source'],'dir':fT[gA(0x269)],'path':fT[gA(0x231)],'package':fT['package'],'manifest':fT[gA(0x2e7)],'installedAt':fT['installedAt']||new Date()['toISOString']()});var bZ=class gx extends T{['extensions']=new Map();['extensionDirs'];['indexPath'];[gA(0x29e)]=[];constructor({dirs:fT,indexPath:fU}={}){const hI=gA;super(),this['extensionDirs']=fT??[process['cwd']()],this['indexPath']=fU??M['join'](process[hI(0x2b7)](),'index.json');}async['init'](){return await this['ensureValidIndexPath'](),await this['loadInfo'](),this;}async['loadInfo'](){return this['infoList']=await aG(this['indexPath'])['catch'](()=>[]),this['infoList'];}async['saveInfo'](){return await this['ensureValidIndexPath'](),await aH(this['indexPath'],this['infoList']);}async['ensureValidIndexPath'](){const hJ=gA;(await Q['stat'](this['indexPath'])['catch'](()=>null))?.['isDirectory']()&&(C['warn']('Invalid\x20extensions\x20index\x20path\x20repaired:\x20'+this['indexPath']),await aD(this[hJ(0x316)]),await Q[hJ(0x2d1)](this['indexPath'],'[]','utf8'));}static async['getAvailableExtensions'](){try{return(await bD['getExtensions'](bK['accessToken'],AbortSignal['timeout'](0x1f40)))['data'];}catch(fT){return C['warn']('Failed\x20to\x20fetch\x20extensions\x20catalog:\x20'+(fT instanceof Error?fT['message']:String(fT))),[];}}async['discover'](){for(let fT of this['extensionDirs']){C['debug']('Loading\x20extensions\x20from\x20'+fT);let fU=await Q['readdir'](fT,{'withFileTypes':!0x0})['catch'](()=>[]);for(let fV of fU)if(fV['isDirectory']()){let fW=M['join'](fT,fV['name']);if(await Q['readdir'](fW)['then'](fX=>fX['filter'](fY=>!fY['startsWith']('.')))['then'](fX=>!fX['length']))continue;await this['loadExtension'](fW);}}for(let fX of this['infoList'])this['extensionDirs']['some'](fY=>fX['dir']?.['includes'](fY))||!fX['dir']||(C['debug']('Loading\x20dev\x20extension\x20from\x20'+fX['dir']),await this['loadExtension'](fX['dir']));}async #e(fT,fU){const fV=await Q['readFile'](fT,'utf8'),{Azot:fW,fetch:fX,console:fY,localStorage:fZ,cookieStore:g0,window:g1,document:g3,navigator:g4}=fU,g5={'exports':{}};eval('(()\x20=>\x20{'+fV+'})();');const g6=g5['exports'];return{'exports':g6,'context':fU};}async[gA(0x300)](fT,fU){const hK=gA;let fV=F({'name':fT,'dir':K,'title':fU});return await fV['cookieStore'][hK(0x338)](M['join'](K,fT,hK(0x279))),fV;}async['loadScript'](fT,fU){let fV=fU['name'],fW=b4(fU),fX=await this['prepareContext'](fV,fW),fY=await A(fT,{'dirname':fU['dir'],'context':fX});if(fY)return fY['exports']='default'in fY['exports']?fY['exports']['default']:fY['exports'],fY;}async['loadCoreExtensions'](){const hL=gA;let fT=Object['keys'](bX['default']);C[hL(0x1e2)]('Loading\x20'+fT['length']+'\x20built-in\x20extensions:\x20'+fT['join'](',\x20'));for(let fU of Object['values'](bX['default'])){let fV=fU['pkg']['name'],fW=b2({'manifest':fU['manifest'],'packageJson':fU['pkg'],'fallbackName':fV}),fX=fW['name'];try{let fY=await this['prepareContext'](fV,fX),fZ={'exports':fU[hL(0x2b0)](fY),'package':fU['pkg'],'manifest':fW,'context':fY};this['validate'](fZ),this['extensions']['set'](fV,fZ),this[hL(0x1e4)]('loaded',fV);}catch(g0){C[hL(0x1e2)](g0 instanceof Error?g0['message']:String(g0)),this['emit']('error',g0,fV);}}}async[gA(0x26b)](fT){const hM=gA;try{C['debug']('Loading\x20extension\x20from\x20'+fT);let fU=await bk(fT)['catch'](fX=>C['error'](fX));if(!fU)return;fU['package']['dir']=fU['dir'];let fV=await this['loadScript'](fU['path'],fU);if(!fV)return;let fW={'package':fU[hM(0x234)],'manifest':fU['manifest'],'exports':fV['exports'],'context':fV['context']};this['validate'](fW),this['extensions']['set'](fU[hM(0x234)]['name'],fW),this['emit']('loaded',fU['package']['name']);}catch(fX){this['emit'](hM(0x23a),fX,fT);}}['validate'](fT){const hN=gA;if(typeof fT!='object'||!fT||!bb(fT['exports']))throw Error('Invalid\x20extension\x20interface:\x20'+fT[hN(0x234)]['name']);}['getExtension'](fT){const hO=gA;return this['extensions']['get'](fT)??Array[hO(0x308)](this['extensions']['values']())['find'](fU=>fU['package'][hO(0x2c0)]===fT)??null;}async['getExtensionForUrl'](fT){const hP=gA;let fU;try{fU=new URL(fT);}catch(fV){return C['debug']('Invalid\x20extension\x20URL:\x20'+fT),C['debug'](fV instanceof Error?fV['message']:String(fV)),null;}for(let fW of this['extensions'][hP(0x33b)]()){let fX=null,fY=fW['exports']['canHandle'],fZ=fU['hostname']['includes'](fW[hP(0x234)]['name']);if(fX=b7(fW)?b6(fW,fU):typeof fY=='function'?await fY(fT):typeof fY=='string'?new URLPattern(fY)['test'](fT):fZ,fX)return fW;}return null;}async[gA(0x270)](fT){const hQ=gA;let fU=await gx['getAvailableExtensions'](),fV=[];for(let fW of fT){let fX=await stat(fW)['then'](g0=>g0['isDirectory']())['catch'](()=>!0x1)?fW:await aV(fW,fU);if(!fX)throw aM(aJ[hQ(0x24f)],'Extension\x20source\x20not\x20found:\x20'+fW,{'source':fW});let fY=await bl(fX,fW);if(!fY)throw aM(aJ['IMPORT_INVALID'],'Extension\x20import\x20failed:\x20'+fW,{'source':fW,'dir':fX});fV['push'](fY);let fZ=this[hQ(0x29e)]['find'](({name:g0})=>g0===fY['name']);if(fZ){let g0=fZ['source'];g0!==fY['source']&&await aD(g0);let g1=fZ[hQ(0x269)]?this.#t(fZ['dir']):null,g3=fY['dir']?this.#t(fY['dir']):null;g1&&g1!==g3&&await aD(g1),fZ['installedAt']=new Date()['toISOString'](),Object['assign'](fZ,bY(fY)),C['info']('Extension\x20'+fY['name']+'\x20updated');}else this[hQ(0x29e)][hQ(0x265)](bY(fY)),C['info']('Extension\x20'+fY['name']+'\x20added');}if(await this['saveInfo'](),fV['length']){for(let g4 of fV)this['extensions']['set'](g4['name'],g4);}}#t(fT){let fU=M['parse'](fT);return fU['dir']===k?fT:fU['dir'];}async[gA(0x22e)](fT){const hR=gA;for(let fU of fT){let fV=this['infoList']['find'](fY=>fY['name']===fU);if(!fV){C['error']('Extension\x20'+fU+'\x20not\x20found');return;}let fW=fV['dir']??'',fX=fW?.['includes'](k);await aB(fW)?(fX&&await aD(this.#t(fW)),this[hR(0x29e)]=this['infoList'][hR(0x224)](fY=>fY['name']!==fU),C['info']('Extension\x20'+fU+'\x20removed'),this['extensions']['delete'](fU)):C['warn']('Extension\x20'+fU+'\x20directory\x20not\x20found:\x20'+fW);}await this['saveInfo']();}async['importCookies'](fT,fU){const hS=gA;let fV=this['getExtension'](fT);if(!fV)throw Error('Extension\x20'+fT+'\x20not\x20found');return await fV['context']['cookieStore'][hS(0x338)](fU,{'removeSource':!0x1});}async['login'](fT,fU={}){let fV=this['getExtension'](fT);fV&&await be(fV,fU);}async[gA(0x1e6)](fT){const hT=gA;for(let fU of fT){let fV=this['getExtension'](fU);if(!fV)return;C[hT(0x210)]('Logging\x20out...'),await bf(fV),C['debug']('Clearing\x20localStorage...'),fV['context'][hT(0x22f)]['clear'](),C['debug']('Clearing\x20cookies\x20store...');let fW=await fV['context']['cookieStore']['getAll']();for(let fX of fW)await fV[hT(0x1dd)]['cookieStore']['delete'](fX);C['info']('Logged\x20out\x20from\x20extension\x20'+fU);}}['list'](){const hU=gA;return Array['from'](this['extensions'][hU(0x33b)]())['map'](fT=>({'name':fT['package']['name'],'version':fT['package']['version'],'description':fT['package'][hU(0x236)],'manifest':fT['manifest'],'package':fT['package']}));}};const c0=(fT,fU)=>!fT||'payload'in fT||'keys'in fT?fT:{...fT,'headers':{...fT['headers'],...fU?.['context']['http']['headers']}},c1=async(fT,fU)=>{if(!fU)return fT;let fV=await fT['clone']()['arrayBuffer'](),fW=Buffer['from'](fV)['toString']('base64'),fX=fU['replace']('{{challenge}}',fW);return new Request(fT['url'],{'method':fT['method'],'headers':fT['headers'],'body':fX});},c2=async fT=>{let fU=await fT['clone']()['arrayBuffer']();if(fU[0x0]===0x7b){let fV=null;try{fV=JSON['parse'](Buffer['from'](fU)['toString']('utf8'));}catch(fW){C['error']('Can\x27t\x20parse\x20license\x20response\x20as\x20JSON'),C['debug'](fW['message']),C['debug']('Base64\x20response\x20data:\x20'+Buffer['from'](fU)['toString']('base64'));}if(!fV)return fT;try{let fX='CAIS',fY=fX+Buffer['from'](fU)['toString']('utf8')['split']('\x22'+fX)[0x1]['split']('\x22')[0x0],fZ=Buffer['from'](fY,'base64');return new Response(fZ,{'status':fT['status'],'headers':fT['headers']});}catch{C['error']('Can\x27t\x20recognize\x20license\x20response'),C['error']('Response:\x20'+JSON['stringify'](fV));}}return fT;},c3=fT=>typeof fT=='string'?[{'sources':[{'url':fT}]}]:Array['isArray'](fT)&&typeof fT[0x0]=='string'?fT['map'](fU=>({'sources':[{'url':fU}]})):Array['isArray'](fT)?fT:fT&&typeof fT=='object'?[fT]:[],c4=fT=>fT[gA(0x27c)]??fT['streams']??[],c5=(fT,fU)=>({'id':fT['id'],'title':fT['title'],'tag':b5(fU),'seasonNumber':fT[gA(0x276)]??fT['season'],'episodeNumber':fT['episodeNumber']??fT['episode'],'episodeTitle':fT['episodeTitle']}),c6=async(fT,fU,fV)=>{const hV=gA;let fW=bc(fV);if(typeof fW['getMediaInfo']=='function'){let fZ=c3(await fW['getMediaInfo'](fT,fU));if(!fZ['length'])return C['info']('No\x20metadata\x20found'),[];let g0=[];for(let g1 of fZ){if(typeof fW['refreshMediaInfo']=='function'){let g4=await fW['refreshMediaInfo'](g1,fU);g4&&typeof g4=='object'&&Object['assign'](g1,g4);}let g3=c4(g1);for(let g5 of g3){let g6=typeof g5=='string'?{'url':g5}:g5;g0['push']({'source':{'url':g6['url'],'headers':g6['headers'],'drm':g6['drm']&&!Array['isArray'](g6[hV(0x31a)])&&typeof g6['drm']=='object'?{'server':g6[hV(0x31a)][hV(0x1ce)]}:void 0x0},'metadata':c5(g1,fV),'drm':g6['drm']&&!Array['isArray'](g6['drm'])&&typeof g6[hV(0x31a)]==hV(0x23f)?{'server':g6['drm']['server']}:void 0x0});}}return C['info']('Fetching\x20metadata\x20finished'),g0;}let fX=await fW['fetchContentMetadata']?.(fT,fU);if(!fX?.['length'])return C['info'](hV(0x331)),[];let fY=[];for(let g7 of fX){let g8={...g7},g9;if(!g8['source']&&fV['exports']['fetchContentSource']&&g8['id']){let gd=await fV['exports']['fetchContentSource'](g8['id'],fU);gd&&(g8['source']=gd);}if(!g8['source']?.['url']){C['error']('Can\x27t\x20find\x20content\x20source');continue;}g8['source']['drm']&&'payload'in g8['source']['drm']&&fV['exports']['fetchContentDrm']&&(g9=g8['source']['drm']['payload'],g8['source']['drm']=void 0x0);let {source:ga,...gb}=g8,gc=c0(g8['source']['drm'],fV);ga['drm']=gc,ga['headers']={...ga['headers'],...fV['context']['http']['headers']},fV['exports']['tag']&&(gb['tag']=fV['exports']['tag']),fY['push']({'source':ga,'metadata':gb,'drm':gc,'drmPayload':g9});}return C['info']('Fetching\x20metadata\x20finished'),fY;},c7=async(fT,fU,fV)=>{const hW=gA;if(fT['drmPayload']&&fV?.['exports']['fetchContentDrm']){let fX=c0(await fV['exports']['fetchContentDrm'](fT['drmPayload'],fU),fV);return fT['source']['drm']=fX,fT['drm']=fX,fX;}let fW=c0(fT['source']['drm']??fT[hW(0x31a)],fV);return fT['source']['drm']=fW,fT['drm']=fW,fW;},c8=fT=>{const hX=gA;let fU=fT[hX(0x2f6)]?c1:void 0x0,fV=c2,fW=new D();return async({url:fX,data:fY})=>{const hY=hX;let fZ=new Request(fX,{'body':Buffer['from'](fY),'method':'POST','headers':fT['headers']}),g0=await fU?.(fZ,fT['template'])||fZ,g1=await fW['fetch'](g0['url'],{'body':await g0['arrayBuffer'](),'headers':g0['headers'],'method':g0['method']}),g3=await fV?.(g1)||g1;return new Uint8Array(await g3[hY(0x262)]());};},c9=new Map(),ca=fT=>{const hZ=gA;if(!fT)return;let fU=Object['fromEntries'](new Headers(fT)['entries']());return Object[hZ(0x2f9)](fU)['length']?fU:void 0x0;},cb=fT=>{let {input:fU,...fV}=fT;return fV;},cc=(fT,fU,fV)=>createHash('sha1')['update'](JSON['stringify']({'extension':fT['package']['name'],'url':fU,'id':fV['id']??null,'title':fV['title']??null,'season':fV['season']??null,'episode':fV['episode']??null}))['digest']('hex'),cd=(fT,fU)=>{const i0=gA;let fV=fT['source']??fT['_rootSource'],fW=fV?.['rootPath'];if(typeof fW!=i0(0x214)||!fW)return fU??null;let fX=fV?.['_url']instanceof Request?fV['_url']['headers']:void 0x0,fY=fV?.['_options']?.['requestInit']?.['headers'],fZ={...ca(fX),...ca(fY)};return{...fU??{},'url':fW,'headers':Object['keys'](fZ)['length']?fZ:fU?.['headers']};},ce=(fT,fU)=>{const i1=gA;let fV=fT['id']??fT[i1(0x1ff)]?.['id'];return{'id':fV==null?void 0x0:String(fV),'title':fT['title'],'tag':b5(fU),'seasonNumber':fT['season'],'episodeNumber':fT['episode'],'episodeTitle':fT['episodeTitle']};},cf=fT=>fT['length']?fT[gA(0x21c)]===0x1?fT[0x0]:fT:null,cg=fT=>{const i2=gA;let fU;try{fU=new URL(fT);}catch{throw Error('Invalid\x20direct\x20media\x20URL:\x20'+fT);}let fV=fU['pathname'][i2(0x310)](/\/+$/,'')['split']('/')['filter'](Boolean)['pop'](),fW=fV?.['split']('.')['slice'](0x0,-0x1)[i2(0x332)]('.')||fV||fU['hostname']||i2(0x1ea);return{'source':{'url':fT},'metadata':{'title':fW}};},ch=async(fT,fU)=>{let fV=fU['proxy']||fU['proxyMeta'];fV&&(await fT['context']['http']['configure']({'proxyUrl':fV}),await u['configure']({'proxyUrl':fV}));},ci=async(fT,fU,fV)=>{const i3=gA;if(!fV){C['warn']('No\x20suitable\x20extension\x20available.\x20Downloading\x20as\x20a\x20direct\x20link...');let {source:fW,metadata:fX}=cg(fT);return fW['audioLanguage']=fU['languages']?.[0x0],fW['http2']=fU[i3(0x21e)],{'source':fW,'metadata':fX};}if(await ch(fV,fU),await bd(fV),ba(fV)==='v2'){let fY=bc(fV);C[i3(0x210)](i3(0x334));let fZ=await fY['resolveEntries'](fT,fU);if(!fZ?.[i3(0x21c)])return C[i3(0x210)]('No\x20metadata\x20found'),null;let g0=fZ['map'](g1=>{const i4=i3;let g3=g1,g4=cb(g1),g5=g1[i4(0x2be)]?cc(fV,fT,g3):void 0x0;g5&&g1['input']&&c9['set'](g5,g1['input']);let g6=g1['input']?cd(g1[i4(0x2be)]):null;return{'source':g6??{'url':fT},'metadata':ce(g4,fV),'extension':{'api':'v2','entry':g4,'cacheKey':g5,'hasResolvedSource':!!g6}};});return C['info']('Resolving\x20media\x20entries\x20finished'),cf(g0);}return C['info']('Fetching\x20content\x20metadata...'),cf(await c6(fT,fU,fV));},cj=async({resource:fT,url:fU,options:fV,extension:fW})=>{const i5=gA;if(!fW||!fT['extension']||fT['extension']['api']!=='v2'||ba(fW)!=='v2')return{'source':fT['source']};await ch(fW,fV),await bd(fW);let fX=bc(fW),fY=fT['extension']['entry'],fZ=fT['extension']['cacheKey']?c9['get'](fT['extension']['cacheKey']):void 0x0;if(!fZ&&typeof fX['resolveMedia']=='function'&&(fZ=await fX[i5(0x2c9)](fU,fV,fY)??void 0x0,fZ&&fT['extension']['cacheKey']&&c9['set'](fT['extension']['cacheKey'],fZ)),!fZ){if(fT['extension']['hasResolvedSource'])return{'source':fT[i5(0x2c4)],'entry':fY};throw Error('Extension\x20'+fW['package']['name']+'\x20could\x20not\x20materialize\x20media\x20entry.\x20Provide\x20resolveMedia()\x20or\x20an\x20inline\x20input\x20rooted\x20in\x20UrlSource.');}return{'source':cd(fZ,fT['source'])??fT['source'],'input':fZ,'entry':fY};},ck=async(fT,fU,fV)=>c7(fT,fU,fV);var cl=class{#e=[];#t=new Set();#n=new Map();#r=new Map();#i=new Set();get['activeRunCount'](){const i6=gA;return this.#r[i6(0x2c7)];}get['queuedCount'](){return this.#e['length'];}['getActiveRun'](fT){return this.#r['get'](fT);}['setActiveRun'](fT,fU){this.#r['set'](fT,fU);}['deleteActiveRun'](fT){this.#r['delete'](fT);}[gA(0x280)](fT){return this.#n['get'](fT);}['setActiveJob'](fT){const i7=gA;this.#n[i7(0x337)](fT['id'],fT);}['deleteActiveJob'](fT){this.#n['delete'](fT);}[gA(0x339)](fT){this.#i['add'](fT);}['consumeResumeAfterStop'](fT){let fU=this.#i['has'](fT);return fU&&this.#i['delete'](fT),fU;}['enqueue'](fT){this.#t['has'](fT['id'])||this.#r['has'](fT['id'])||(this.#e['push'](fT['id']),this.#t['add'](fT['id']));}['dequeue'](fT){if(!this.#t['has'](fT))return!0x1;let fU=this.#e['indexOf'](fT);return fU!==-0x1&&this.#e['splice'](fU,0x1),this.#t['delete'](fT),!0x0;}['dequeueNext'](fT){for(;this.#e['length']>0x0;){let fU=this.#e['shift']();if(!fU)return;this.#t['delete'](fU);let fV=fT(fU);if(fV&&fV['status']==='queued')return fV;}}};const cm=['code','errno','syscall','address','port','host','hostname','path','type'],cn=fT=>typeof fT=='object'&&!!fT&&gA(0x26a)in fT&&'statusText'in fT&&'url'in fT,co=fT=>{let fU=[],fV=fT;for(let fW of cm){let fX=fV[fW];fX==null||fX===''||fU['push'](fW+'='+String(fX));}return fU;},cp=(fT,fU=0x0)=>{const i8=gA;if(fU>0x3)return'[max-depth]';if(fT instanceof Error){let fV=co(fT),fW='cause'in fT?fT[i8(0x2fa)]:void 0x0,fX=[fT['name']+':\x20'+fT['message']];return fV['length']&&fX['push']('details='+fV['join'](',\x20')),fW!==void 0x0&&fW!==fT&&fX['push']('cause='+cp(fW,fU+0x1)),fX['join']('\x20|\x20');}return cn(fT)?'Response\x20'+fT['status']+'\x20'+fT['statusText']+'\x20url='+fT['url']:inspect(fT,{'depth':0x2,'breakLength':0x1/0x0});},cq=(fT,fU)=>{const i9=gA;C['debug'](fT+':\x20'+cp(fU)),fU instanceof Error&&fU[i9(0x2a7)]&&C['debug'](fU['stack']);},cr=(fT,fU)=>{const ia=gA;let fV=fU+'\x20∙\x20';return fT[ia(0x26e)]==='subtitle'?fV+='SUBTITLES':fV+=fT['type']?.['toUpperCase'](),fT[ia(0x26e)]==='video'&&(fT['width']&&(fV+='\x20∙\x20'+fT['width']+'x'+fT['height']),fT['bitrate']&&(fV+='\x20∙\x20'+Math['round'](fT['bitrate']/0x3e8)+'\x20KiB/s')),fT['type']==='audio'&&(fT['languageCode']&&(fV+='\x20∙\x20'+fT['languageCode']['toUpperCase']()),fT[ia(0x2c0)]&&(fV+='\x20('+fT['name']+')'),fT['sampleRate']&&(fV+='\x20∙\x20'+fT['sampleRate']+'\x20kHz'),fT['bitrate']&&(fV+='\x20∙\x20'+Math['round'](fT[ia(0x315)]/0x3e8)+'\x20KiB/s')),fT[ia(0x26e)]==='subtitle'&&(fT['languageCode']&&(fV+='\x20∙\x20'+fT['languageCode']['toUpperCase']()),fT['name']&&(fV+='\x20('+fT['name']+')'),fT['forced']&&(fV+='\x20FORCED')),fV;},cs=fT=>fT['id'],ct=fT=>{let fU=new Map();for(let fV of fT){let fW=cs(fV),fX=fU['get'](fW);if(fX){fX['push'](fV);continue;}fU['set'](fW,[fV]);}return Array['from'](fU['entries']())['filter'](([,fY])=>fY['length']>0x1);},cu=fT=>{const ib=gA;let fU=ct(fT);if(!fU[ib(0x21c)])return;let fV=fU['map'](([fW,fX])=>fW+'\x20('+fX['length']+'\x20copies)')['join'](',\x20');throw Object['assign'](Error('Duplicate\x20tracks\x20selected:\x20'+fV),{'code':'DUPLICATE_TRACKS_SELECTED'});},cv=fT=>{const ic=gA;if(!fT||typeof fT!='object'||!('code'in fT))return;let fU=fT['code'];return typeof fU==ic(0x214)?fU:void 0x0;};var cw=class extends Error{['code'];constructor(fT,fU=fT,fV){super(fU,fV),this['name']='DownloaderError',this['code']=fT;}};const cx=(fT,fU='DOWNLOAD_FAILED')=>{const id=gA;if(fT instanceof cw||fT instanceof Error&&fT['name']==='AbortError')return fT;if(fT instanceof Error){let fV=new cw(cv(fT)??fU,fT['message'],{'cause':fT});return fT['stack']&&(fV['stack']=fT['stack']),fV;}return new cw(fU,typeof fT==id(0x214)?fT:'Unknown\x20error');},cy=fT=>{const ie=gA;let fU=fT['replace'](/[<>:"/\\|?*\x00-\x1F]/g,'');fU=fU['replace'](/^[\s.]+|[\s.]+$/g,''),fU=fU['replace'](/\s+/g,'\x20');let fV=fU['lastIndexOf']('.'),fW=fV>0x0,fX=fW?fU['slice'](fV):'',fY=fW?fU['slice'](0x0,fV):fU;if(fX['length']>=0xff)fU=fU['slice'](0x0,0xff);else{let g0=0xff-fX['length'];fY[ie(0x21c)]>g0&&(fY=fY['slice'](0x0,g0)),fU=fY+fX;}let fZ=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i;if(fX['length']<0xff){let g1=fU['lastIndexOf']('.'),g3=g1>0x0;if(fX=g3?fU['slice'](g1):'',fY=g3?fU['slice'](0x0,g1):fU,fZ['test'](fY)){let g4=0xff-fX['length'];fU=('_'+fY)['slice'](0x0,g4)+fX;}}return fU['length']===0x0?'untitled':fU;},cz=(fT,fU)=>Object['keys'](fU)['reduce']((fV,fW)=>{let fX='{'+fW+'}',fY=fU[fW];if(!fY){let fZ=RegExp('(?:\x5c.|^)\x5c{'+fW+'\x5c}(?=\x5c.|$)|\x5c{'+fW+'\x5c}(\x5c.|$)|\x5c{'+fW+'\x5c}','g');return fV['replace'](fZ,(g0,g1)=>'')['replaceAll']('....','...');}return fV['replaceAll'](fX,fY);},fT)['replaceAll']('\x20\x20','\x20'),cA=fT=>typeof fT==gA(0x214)&&fT['trim']()||'mp4',cB=fT=>{const ig=gA;let fU='seasonNumber'in fT?''+fT['seasonNumber']:'',fV=ig(0x2ca)in fT?''+fT['episodeNumber']:'',fW=fU?'S'+fU:'',fX=fV?'E'+fV:'',fY=fU&&fV?fW+':'+fX:'',fZ='episodeTitle'in fT&&fT['episodeTitle']?.['trim']()?'\x22'+fT['episodeTitle']+'\x22':'';return{'title':((fT['title']??'')+'\x20'+fY+'\x20'+fZ)['trim']()};},cC=({settings:fT,options:fU,source:fV,meta:fW,allTracks:fX})=>{const ih=gA;let fY=fW['title'],fZ=fW['tag'],g0=ih(0x276)in fW?fW['seasonNumber']:void 0x0,g1='episodeNumber'in fW?fW['episodeNumber']:void 0x0,g3='episodeTitle'in fW?fW['episodeTitle']:'',g4=fX['find'](gb=>gb['type']==='video')?.['codec']??'',g5=fT['get'](ih(0x28c)),g6=fU[ih(0x2f1)]||fT['get']('movieFilenameTemplate'),g7=fU['episodeTemplate']||fT['get']('seriesFilenameTemplate'),g8=cy(cz(g1?g7:g6,{'title':fY??'','s':g0?g0['toString']()[ih(0x32f)](0x2,'0'):'','e':g1?g1['toString']()[ih(0x32f)](0x2,'0'):'','quality':fU['videoQuality']??'','codec':g4,'tag':fZ??'','episodeTitle':g3??'','audioType':fV['audioType']?fV['audioType']['toUpperCase']():'','format':'WEB-DL'}))+'.'+cA(fU['format']||fT['get'](ih(0x285))),g9=fU['outputPath']||join(g5,g8),ga=parse(g9);return{'downloadDir':g5,'outputPath':g9,'resolvedFilenameWithoutExtension':ga['name'],'filenameWithExtension':ga['base'],'outputDirectory':ga['dir']||g5,'downloadMetadata':cB(fW)};},cD=async(fT,fU,fV)=>fV??open(fT,fU),cE=fT=>{let fU=null;return new StreamSource({'getSize':async()=>(fU=await cD(fT,'r',fU),(await fU['stat']())['size']),'read':async(fV,fW)=>{fU=await cD(fT,'r',fU);let fX=new Uint8Array(fW-fV);return await fU['read'](fX,0x0,fW-fV,fV),fX;},'dispose':async()=>{let fV=fU;fU=null,await fV?.['close']();},'prefetchProfile':'fileSystem'});},cF=fT=>{let fU=null;return new StreamTarget(new WritableStream({'start':async()=>{fU=await cD(fT,'w',fU);},'write':async fV=>{const ii=b;if(!fU)throw Error('MediaBunny\x20output\x20handle\x20was\x20not\x20initialized\x20for\x20'+fT);await fU['write'](fV['data'],0x0,fV[ii(0x1d5)]['byteLength'],fV['position']);},'close':async()=>{let fV=fU;fU=null,await fV?.['close']();},'abort':async()=>{let fV=fU;fU=null,await fV?.['close']();}}),{'chunked':!0x0});},cG=async(fT,fU)=>{const ij=gA;let fV=new W({'formats':V,'source':fT['startsWith']('https')?new X(fT,{'requestInit':{'headers':fU}}):cE(fT)});return{'tracks':await fV[ij(0x2a1)](),'primaryVideoTrack':await fV['getPrimaryVideoTrack'](),'primaryAudioTrack':await fV['getPrimaryAudioTrack']()};},cH=[...DASH_FORMATS,...HLS_FORMATS],cI=new Set(['authorization','cookie','set-cookie','api-key']),cJ=fT=>Object['fromEntries'](Object['keys'](fT)['map'](fU=>[fU,cI['has'](fU['toLowerCase']())?'[REDACTED]':fT[fU]])),cK=fT=>fT===gA(0x215)?DASH_FORMATS:fT==='m3u8'?HLS_FORMATS:cH,cL=({http:fT,source:fU,detection:fV})=>(C['debug']('Fetching\x20manifest...'),C[gA(0x1e2)](fU['url']),fU['headers']&&C['debug'](JSON['stringify'](cJ(fU['headers']))),new Input({'source':new UrlSource(fU['url'],{'requestInit':{'headers':fU['headers']},'fetchFn':fT['fetch']['bind'](fT)}),'formats':cK(fV['kind'])})),cM=fT=>createHash('sha1')['update'](fT)[gA(0x233)]('hex'),cN=(fT,fU)=>{const ik=gA;if(fT)switch(fT){case'aar':case ik(0x219):return'rus';case'ave':return'eng';case'zu':return fU?.['includes'](ik(0x1fd))?'ru':'zu';default:return fT;}},cO=({origin:fT,type:fU,sourceUrl:fV,languageCode:fW,name:fX,codec:fY})=>fT+':'+fU+':'+cM([fV??'',fW??'',fX??'',fY??'']['join']('|')),cP=async(fT,fU)=>{const il=gA;let [fV,fW,fX,fY,fZ,g0]=await Promise['all']([fT['getCodec'](),fT['getBitrate'](),fT['getLanguageCode'](),fT['getName'](),fT['getDisposition'](),fT['hasOnlyKeyPackets']()]),g1={'id':'manifest:'+fT['type']+':'+fT['id'],'origin':'manifest','type':fT['type'],'codec':fV,'bitrate':fW,'languageCode':cN(fX,fU),'name':fY,'forced':fZ['forced'],'hearingImpaired':fZ['hearingImpaired'],'visuallyImpaired':fZ['visuallyImpaired'],'isDefault':fZ['default'],'isIFrameOnly':g0,'inputTrack':fT};if(fT['isVideoTrack']()){let [g3,g4]=await Promise['all']([fT['getDisplayWidth'](),fT['getDisplayHeight']()]);g1[il(0x24e)]=g3,g1['height']=g4;}if(fT['isAudioTrack']()){let [g5,g6]=await Promise['all']([fT['getNumberOfChannels'](),fT['getSampleRate']()]);g1['numberOfChannels']=g5,g1['sampleRate']=g6;}return g1;},cQ=async fT=>fT['segments']?fT['segments']:fT['inputTrack']?(fT['segmentsPromise']??=fT['inputTrack']['getSegments']()['then'](fU=>(fT['segments']=fU,fT['segmentCount']=fU['length'],fU)),fT['segmentsPromise']):(fT[gA(0x204)]=[],fT['segmentCount']=0x0,fT['segments']),cR=(fT,fU)=>{let fV=fT['filter'](fW=>fU['some'](fX=>fX===fW['codec']));return fV['length']?fV:fT['toSorted']((fW,fX)=>(fX['bitrate']??0x0)-(fW['bitrate']??0x0));},cS=(fT,fU)=>{let fV=fU?parseInt(String(fU),0xa)*0x10/0x9:void 0x0,fW=fT['toSorted']((fZ,g0)=>(g0['bitrate']??0x0)-(fZ['bitrate']??0x0));if(!fU)return fW;let fX=fT['filter'](fZ=>Number(fZ['height'])===Number(fU));if(fX['length'])return fX;let fY=fT['filter'](fZ=>Number(fZ['width'])===Number(fV));return fY['length']?fY:fW;},cT=(fT,fU)=>fT['filter'](fV=>fV['numberOfChannels']===Number(fU)),cU=fT=>fT?.['trim']()['toLowerCase']()??'',cV=fT=>cU(fT)['slice'](0x0,0x2),cW=fT=>cU(fT)||'und',cX=(fT,fU)=>{let fV=cU(fT),fW=cU(fU);return!fV||!fW?!0x1:fV===fW||fV['startsWith'](fW+'-')?!0x0:cV(fV)===cV(fW);},cY=fT=>Array['from'](new Map(fT['map'](fU=>cU(fU))['filter'](Boolean)['map'](fU=>[cV(fU),fU]))[gA(0x33b)]()),cZ=(fT,fU)=>{const im=gA;let fV=new Map();for(let fW of fT){let fX=cW(fW['languageCode']),fY=fV[im(0x1d6)](fX);if(!fY){fV['set'](fX,[fW]);continue;}fY[im(0x21c)]<fU&&fY['push'](fW);}return Array['from'](fV['values']())['flat']();},d0=(fT,fU,fV=0x1)=>{const io=gA;let fW=fT['toSorted']((g0,g1)=>(g1['bitrate']??0x0)-(g0['bitrate']??0x0)),fX=cY(fU),fY=[];for(let g0 of fX){let g1=fW['filter'](g3=>cX(g3['languageCode'],g0));g1['length']&&fY['push'](...cZ(g1,fV));}let fZ=cY(fT['map'](g3=>g3['languageCode']||'und'));if(!fY['length'])for(let g3 of fZ){let g4=fW['filter'](g5=>cX(g5['languageCode']??io(0x2e5),g3));g4['length']&&fY['push'](...cZ(g4,fV));}return fY;},d1=(fT,fU)=>{const ip=gA;if(!fU?.['inputTrack'])return fT;let fV=fU['inputTrack'],fW=fT['filter'](fX=>fX['inputTrack']?fX[ip(0x2d5)]['canBePairedWith'](fV):!0x0);return fW['length']?fW:fT;},d2=fT=>(fT??0x0)/0x3e8,d3=async fT=>{const iq=gA;if(typeof fT['segmentCount']=='number')return fT[iq(0x20d)]+'\x20Segments';if(!fT['inputTrack'])return iq(0x29b);try{return(await cQ(fT))['length']+'\x20Segments';}catch{return'?\x20Segments';}},d4=({videos:fT,audios:fU,subtitles:fV})=>({'videos':fT,'audios':fU,'subtitles':fV,'all':[...fT,...fU,...fV]});async function d5(fT,fU,fV){const ir=gA;let fW=fU['videoQuality'],fX=fT['filter'](g9=>g9['type']==='video'&&!g9['isIFrameOnly']),fY=fT['filter'](g9=>g9['type']==='audio'),fZ=fT['filter'](g9=>g9['type']===ir(0x31e));if(fU['select']){let g9=await Promise['all'](fX['map'](async(gh,gi)=>({'name':(gh['width']??'?')+'x'+(gh['height']??'?')+'\x20|\x20'+(d2(gh['bitrate'])||'?')+'\x20Kbps\x20|\x20'+(gh['codec']??'?')+'\x20|\x20'+await d3(gh),'value':gh['id'],'checked':gi===0x0}))),ga=fX['length']?await checkbox({'message':ir(0x229),'pageSize':0xc,'choices':g9,'loop':!0x1}):[],gb=fX['filter'](gh=>ga['includes'](gh['id'])),gc=await Promise['all'](fY['map'](async(gh,gi)=>({'name':''+(gh['name']?gh['name']+'\x20|\x20':'')+(d2(gh['bitrate'])||'?')+'\x20Kbps\x20|\x20'+(gh['codec']?gh['codec']+'\x20|\x20':'')+(gh['languageCode']||'und')+'\x20|\x20'+(gh['numberOfChannels']??'?')+'CH\x20|\x20'+await d3(gh),'value':gh['id'],'checked':gi===0x0}))),gd=fY['length']?await checkbox({'message':'Select\x20audio\x20streams','pageSize':0xc,'choices':gc,'loop':!0x1}):[],ge=fY['filter'](gh=>gd['includes'](gh['id'])),gf=await Promise['all'](fZ['map'](async(gh,gi)=>({'name':(gh['codec']??'?')+'\x20|\x20'+(gh['languageCode']||ir(0x2e5))+ir(0x33d)+await d3(gh),'value':gh['id'],'checked':gi===0x0}))),gg=fZ['length']?await checkbox({'message':'Select\x20subtitles','pageSize':0xc,'choices':gf,'loop':!0x1}):[];return d4({'videos':gb,'audios':ge,'subtitles':fZ['filter'](gh=>gg['includes'](gh['id']))});}fU['videoCodecs']&&(fX=cR(fX,fU['videoCodecs'])),fX=cS(fX,fW||NaN);let g0=fX[0x0],g1=[...fU['languages']||[]],g3=fV['audioLanguage']?.['slice'](0x0,0x2);!g1['length']&&g3&&g1['push'](g3);let g4=d1(fY,g0);fU['audioChannels']&&(g4=cT(g4,fU['audioChannels'])),fU['audioCodecs']&&(g4=cR(g4,fU['audioCodecs']));let g5=d0(g4,g1,0x1);g5['length']&&(g4=g5);let g6=g1['at'](-0x1),g7=g6?g4['map'](gh=>!gh['languageCode']||gh['languageCode']==='und'?{...gh,'languageCode':g6}:gh):g4,g8=fZ['filter'](gh=>fU['subtitleLanguages']?.['length']?fU['subtitleLanguages'][ir(0x239)](gi=>cX(gh['languageCode']||'und',gi)):!0x1);return d4({'videos':fU['skipVideo']||!g0?[]:[g0],'audios':fU['skipAudio']?[]:g7,'subtitles':fU['skipSubtitles']?[]:g8});}const d6=()=>({'videos':[],'audios':[],'subtitles':[],'all':[]}),d7={'aac':'aac','mp4a':'aac','mp4a.40.2':gA(0x326),'ac3':'ac3','ac-3':'ac3','eac3':'eac3','ec-3':'eac3','opus':gA(0x26d),'vorbis':'vorbis','flac':'flac'},d8=fT=>{if(!fT)return null;try{return new URL(fT);}catch{return null;}},d9=fT=>{let fU=d8(fT);if(fU)try{return decodeURIComponent(fU['pathname']);}catch{return fU['pathname'];}},da=fT=>{const is=gA;if(!fT)return'aac';let fU=fT['toLowerCase']();return d7[fU]??d7[fU['split']('.')[0x0]??'']??is(0x326);},db=(fT,fU)=>fT['filter'](fV=>fV['type']===fU)['length'],dc=fT=>{let fU='Extracted,\x20there\x20are\x20';if(fT['length']===0x0)fU+='no\x20tracks';else{fU+=fT['length']+'\x20tracks';let fV=db(fT,'video');fV&&(fU+=',\x20'+fV+'\x20video\x20tracks');let fW=db(fT,'audio');fW&&(fU+=',\x20'+fW+'\x20audio\x20tracks');let fX=db(fT,'subtitle');fX&&(fU+=',\x20'+fX+'\x20subtitle\x20tracks');}C['info'](fU);},dd=(fT,fU=[])=>{const iu=gA;let fV=[...fU];for(let fW of fT['subtitles']??[]){let fX=d9(fW['url']),fY=cN(fW['language'],fT['url']);fV['some'](fZ=>{const it=b;let g0=d9(fZ[it(0x2e4)]);return!fX||!g0?!0x1:fX===g0;})||fV['push']({'id':cO({'origin':'external-subtitle','type':'subtitle','sourceUrl':fW[iu(0x2dd)],'languageCode':fY,'name':fW[iu(0x317)]||fW['title'],'codec':fW['format']}),'origin':'external-subtitle','type':'subtitle','sourceUrl':fW['url'],'languageCode':fY,'codec':fW['format'],'forced':fW['forced'],'name':fW['label']||fW['title']});}return fV;},de=async({options:fT,source:fU,meta:fV,detection:fW})=>{const iv=gA;let fX={...fT},fY={...fV};if(!fY['title']){let g6=d8(fU['url'])?.['pathname'][iv(0x20b)]('/')['pop']();g6&&(fY['title']=g6);}let {primaryVideoTrack:fZ,primaryAudioTrack:g0}=await cG(fU['url'],fU['headers']),g1=await fZ?.['getCodec'](),g3=await fZ?.['getCodedWidth'](),g4=await fZ?.['getCodedHeight']();fX['videoQuality']||=g4?g4+'p':void 0x0;let g5=d6();if(g5[iv(0x238)]=dd(fU),g5['all']['push'](...g5[iv(0x238)]),fW['isAudio']&&!fX['skipAudio']){let g7={'id':cO({'origin':'progressive','type':'audio','sourceUrl':fU['url'],'languageCode':fU['audioLanguage'],'codec':await g0?.['getCodec']()}),'origin':'progressive','type':'audio','codec':da(await g0?.['getCodec']()),'languageCode':cN(await g0?.['getLanguageCode'](),fU['url'])??cN(fU['audioLanguage'],fU['url'])??'und','numberOfChannels':await g0?.['getNumberOfChannels'](),'sampleRate':await g0?.['getSampleRate'](),'sourceUrl':fU[iv(0x2dd)]};return g5['audios']['push'](g7),g5[iv(0x25e)]['push'](g7),{'options':fX,'source':fU,'meta':fY,'allTracks':[g7],'tracks':g5};}if(!fX[iv(0x22a)]){let g8=parseInt((fX['videoQuality']??'')['replace']('p',''),0xa),g9={'id':cO({'origin':'progressive','type':'video','sourceUrl':fU[iv(0x2dd)],'codec':g1}),'origin':'progressive','type':'video','codec':g1??'avc','width':g3??void 0x0,'height':g4??(g8||void 0x0),'sourceUrl':fU['url']};return g5[iv(0x33c)]['push'](g9),g5['all']['push'](g9),{'options':fX,'source':fU,'meta':fY,'allTracks':[g9],'tracks':g5};}return{'options':fX,'source':fU,'meta':fY,'allTracks':[],'tracks':g5};},df=async({options:fT,source:fU,meta:fV,input:fW,disposeInput:fX=!0x0})=>{const iw=gA;let fY={...fT},fZ={...fV},g0=fX;try{let g1=await fW['getTracks']();if(!g1['length'])throw new cw('MANIFEST_PARSE_FAILED','Failed\x20to\x20parse\x20manifest');let g3=await Promise['all'](g1['map'](g6=>cP(g6,fU[iw(0x2dd)])));dc(g3);let g4=await d5(g3,fY,fU),g5=g4['videos'][0x0]?.['height'];if(g5&&(fY['videoQuality']=g5+'p'),!fZ['title']){let g6=d8(fU['url'])?.['host'];g6&&(fZ['title']=g6+'_'+B());}return g0=!0x1,{'options':fY,'source':fU,'meta':fZ,'allTracks':g3,'tracks':g4,'dispose':fX?()=>fW['dispose']?.():void 0x0};}finally{g0&&fW['dispose']?.();}},dg=async({http:fT,options:fU,source:fV,meta:fW,detection:fX})=>df({'options':fU,'source':fV,'meta':fW,'input':cL({'http':fT,'source':fV,'detection':fX})}),dh=async({http:fT,options:fU,source:fV,meta:fW,input:fX,detection:fY})=>fX?df({'options':fU,'source':fV,'meta':fW,'input':fX,'disposeInput':!0x1}):fY['strategy']==='progressive'?de({'options':fU,'source':fV,'meta':fW,'detection':fY}):dg({'http':fT,'options':fU,'source':fV,'meta':fW,'detection':fY}),di=(fT,fU)=>{const ix=gA;try{let fV=new URL(fT);return fV['pathname'][ix(0x2d3)](fU)||fV['search']['endsWith'](fU);}catch{return!0x1;}},dj=async(fT,fU)=>{const iy=gA;let fV=di(fU['url'],'.m3u8'),fW=di(fU['url'],'.mpd'),fX=di(fU['url'],'.mp4'),fY=di(fU[iy(0x2dd)],'.mov'),fZ=!0x1,g0=!0x1;if(!fV&&!fW&&!fX&&!fY)try{let g1=await fT['fetch'](fU['url'],{'method':'HEAD','headers':fU['headers']});if(!g1['ok'])C['warn']('HEAD\x20request\x20for\x20'+fU['url']+'\x20returned\x20'+g1[iy(0x26a)]+'\x20'+g1['statusText']);else{let g3=g1['headers'][iy(0x1d6)]('content-type');fZ=!!g3?.['includes']('audio'),g0=!!g3?.['includes'](iy(0x2ba));}}catch(g4){let g5=g4 instanceof Error?g4[iy(0x20f)]:String(g4);C['warn']('HEAD\x20request\x20failed\x20for\x20'+fU[iy(0x2dd)]+':\x20'+g5);}return fW?{'strategy':'manifest','kind':'mpd','isAudio':fZ,'isVideo':g0,'matchedContentLabel':iy(0x2d8)}:fV?{'strategy':'manifest','kind':'m3u8','isAudio':fZ,'isVideo':g0,'matchedContentLabel':'HTTP\x20Live\x20Streaming'}:fZ||g0||fX||fY?{'strategy':iy(0x20a),'kind':'progressive','isAudio':fZ,'isVideo':g0,'matchedContentLabel':'Progressive\x20Stream'}:{'strategy':'manifest','kind':'unknown','isAudio':fZ,'isVideo':g0};};var dk=a7((fT,fU)=>{function fV(fW){var fX=new fW(),fY=fX;function fZ(){var g1=fX;return g1['next']?fX=g1['next']:(fX=new fW(),fY=fX),g1['next']=null,g1;}function g0(g1){fY['next']=g1,fY=g1;}return{'get':fZ,'release':g0};}fU['exports']=fV;}),dl=a7((fT,fU)=>{var fV=dk();function fW(g0,g1,g3){if(typeof g0=='function'&&(g3=g1,g1=g0,g0=null),!(g3>=0x1))throw Error('fastqueue\x20concurrency\x20must\x20be\x20equal\x20to\x20or\x20greater\x20than\x201');var g4=fV(fY),g5=null,g6=null,g7=0x0,g8=null,g9={'push':gg,'drain':fX,'saturated':fX,'pause':gb,'paused':!0x1,get 'concurrency'(){return g3;},set 'concurrency'(gn){if(!(gn>=0x1))throw Error('fastqueue\x20concurrency\x20must\x20be\x20equal\x20to\x20or\x20greater\x20than\x201');if(g3=gn,!g9['paused']){for(;g5&&g7<g3;)g7++,gi();}},'running':ga,'resume':ge,'idle':gf,'length':gc,'getQueue':gd,'unshift':gh,'empty':fX,'kill':gj,'killAndDrain':gk,'error':gm,'abort':gl};return g9;function ga(){return g7;}function gb(){g9['paused']=!0x0;}function gc(){for(var gn=g5,go=0x0;gn;)gn=gn['next'],go++;return go;}function gd(){for(var gn=g5,go=[];gn;)go['push'](gn['value']),gn=gn['next'];return go;}function ge(){if(g9['paused']){if(g9['paused']=!0x1,g5===null){g7++,gi();return;}for(;g5&&g7<g3;)g7++,gi();}}function gf(){return g7===0x0&&g9['length']()===0x0;}function gg(gn,go){const iz=b;var gp=g4['get']();gp['context']=g0,gp['release']=gi,gp['value']=gn,gp['callback']=go||fX,gp[iz(0x1f3)]=g8,g7>=g3||g9['paused']?g6?(g6[iz(0x237)]=gp,g6=gp):(g5=gp,g6=gp,g9['saturated']()):(g7++,g1[iz(0x2e9)](g0,gp['value'],gp['worked']));}function gh(gn,go){const iA=b;var gp=g4['get']();gp['context']=g0,gp['release']=gi,gp[iA(0x2d2)]=gn,gp['callback']=go||fX,gp['errorHandler']=g8,g7>=g3||g9['paused']?g5?(gp['next']=g5,g5=gp):(g5=gp,g6=gp,g9[iA(0x2d6)]()):(g7++,g1['call'](g0,gp['value'],gp['worked']));}function gi(gn){gn&&g4['release'](gn);var go=g5;go&&g7<=g3?g9['paused']?g7--:(g6===g5&&(g6=null),g5=go['next'],go['next']=null,g1['call'](g0,go['value'],go['worked']),g6===null&&g9['empty']()):--g7===0x0&&g9['drain']();}function gj(){g5=null,g6=null,g9['drain']=fX;}function gk(){g5=null,g6=null,g9['drain'](),g9['drain']=fX;}function gl(){const iB=b;var gn=g5;for(g5=null,g6=null;gn;){var go=gn[iB(0x237)],gp=gn['callback'],gq=gn['errorHandler'],gr=gn['value'],gs=gn[iB(0x1dd)];gn[iB(0x2d2)]=null,gn['callback']=fX,gn['errorHandler']=null,gq&&gq(Error('abort'),gr),gp[iB(0x2e9)](gs,Error('abort')),gn['release'](gn),gn=go;}g9['drain']=fX;}function gm(gn){g8=gn;}}function fX(){}function fY(){this['value']=null,this['callback']=fX,this['next']=null,this['release']=fX,this['context']=null,this['errorHandler']=null;var g0=this;this['worked']=function(g1,g3){var g4=g0['callback'],g5=g0['errorHandler'],g6=g0['value'];g0['value']=null,g0['callback']=fX,g0['errorHandler']&&g5(g1,g6),g4['call'](g0['context'],g1,g3),g0['release'](g0);};}function fZ(g0,g1,g3){typeof g0=='function'&&(g3=g1,g1=g0,g0=null);function g4(gb,gc){g1['call'](this,gb)['then'](function(gd){gc(null,gd);},gc);}var g5=fW(g0,g4,g3),g6=g5['push'],g7=g5['unshift'];return g5['push']=g8,g5['unshift']=g9,g5['drained']=ga,g5;function g8(gb){const iC=b;var gc=new Promise(function(gd,ge){g6(gb,function(gf,gg){if(gf){ge(gf);return;}gd(gg);});});return gc[iC(0x298)](fX),gc;}function g9(gb){const iD=b;var gc=new Promise(function(gd,ge){g7(gb,function(gf,gg){if(gf){ge(gf);return;}gd(gg);});});return gc[iD(0x298)](fX),gc;}function ga(){return new Promise(function(gb){const iE=b;process[iE(0x1fa)](function(){const iF=iE;if(g5['idle']())gb();else{var gc=g5[iF(0x325)];g5['drain']=function(){typeof gc=='function'&&gc(),gb(),g5['drain']=gc;};}});});}}fU['exports']=fW,fU['exports']['promise']=fZ;}),dm=a9(dl(),0x1);const dn=0x493e0,dp=(fT={})=>{const iG=gA;let fU=fT['maxRetries']??0x5,fV=!0x1,fW=!0x1,fX=null,{proxy:fY}=fT,fZ=fY?new ProxyAgent({'uri':fY,'allowH2':!0x0}):new Agent({'allowH2':!0x0}),g0=U['create']({'fetch':fT['fetch'],'dispatcher':fZ,'proxy':fY,'timeout':dn,'retry':{'limit':fU,'methods':['get','head'],'statusCodes':[0x198,0x19d,0x1ad,0x1f4,0x1f6,0x1f7,0x1f8],'backoffLimit':0x7530},'throwHttpErrors':!0x0,'redirect':iG(0x1cc),'headers':{'user-agent':'Mozilla/5.0\x20(Windows\x20NT\x2010.0;\x20Win64;\x20x64)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/127.0.0.0\x20Safari/537.36'}});return Object['assign'](g0,{'close':async()=>{if(fX)return fX;fV||fW||(fV=!0x0,fX=fZ['close'](),await fX);},'destroy':async g1=>{if(fX)return fX;fV||fW||(fV=!0x0,fW=!0x0,fX=fZ['destroy'](g1??null),await fX);}});},dq=fT=>new Promise(fU=>setTimeout(fU,fT)),dr=async(fT,fU)=>{const iH=gA;let fV=await R['stat'](fU)['catch'](()=>null);(!fV||!fV['isDirectory']())&&await R['mkdir'](fU,{'recursive':!0x0});let fW=ds(fT,fU),fX=await R[iH(0x31f)](fW)['catch'](()=>null);return(!fX||!fX['isDirectory']())&&await R['mkdir'](fW,{'recursive':!0x0}),fW;},ds=(fT,fU)=>{let fV=N['resolve'](fT),fW=N['parse'](fT)['name'],fX=createHash('sha1')['update'](fV)['digest']('hex')['slice'](0x0,0xa);return N['join'](fU,fW+'-'+fX);},dt=async fT=>{const iI=gA;let fU=N['dirname'](fT),fV=N['resolve'](fU);N['parse'](fV)['root']!==fV&&(await R[iI(0x31f)](fU)['then'](()=>!0x0)['catch'](()=>!0x1)||await R['mkdir'](fU,{'recursive':!0x0}));},du=async(...fT)=>{let fU=[];for(let fV of fT)fV&&fU['push'](R['rm'](fV,{'recursive':!0x0,'force':!0x0})['catch'](()=>void 0x0));await Promise['all'](fU);},dv=fT=>fT+'.part.json',dw=fT=>{const iJ=gA;if(fT[iJ(0x2ec)])return fT['filePath'];if(fT['output'])return dv(fT['output']);throw Error('Either\x20output\x20or\x20filePath\x20is\x20required\x20for\x20FileResumeStore');},dx=fT=>{const iK=gA;if(!fT||typeof fT!=iK(0x23f))return!0x1;let fU='code'in fT?fT[iK(0x2a3)]:void 0x0;return fU==='EPERM'||fU==='EACCES'||fU==='EBUSY';},dy=async(fT,fU)=>{const iL=gA;let fV=S[iL(0x2ad)]==='win32'?[0x0,0x32,0x96,0x12c,0x1f4]:[0x0],fW;for(let fX of fV){fX>0x0&&await dq(fX);try{await R['rename'](fT,fU);return;}catch(fY){if(fW=fY,!dx(fY))break;await R['rm'](fU,{'force':!0x0})['catch'](()=>void 0x0);try{await R['rename'](fT,fU);return;}catch(fZ){if(fW=fZ,!dx(fZ))break;}}}throw fW;};var dz=class{async['get'](fT){let fU=dw(fT);if(!await R['stat'](fU)['then'](()=>!0x0)['catch'](()=>!0x1))return null;try{let fV=await R['readFile'](fU,'utf8');return JSON['parse'](fV);}catch{return null;}}async['set'](fT,fU){let fV=dw(fT);await dt(fV);let fW=fV+'.'+S['pid']+'.'+Date['now']()['toString'](0x24)+'.tmp';await R['writeFile'](fW,JSON['stringify'](fU));try{await dy(fW,fV);}finally{try{await R['rm'](fW,{'force':!0x0});}catch{}}}async['delete'](fT){let fU=dw(fT);await R['rm'](fU,{'force':!0x0})['catch'](()=>void 0x0);}};const dA=fT=>N['resolve'](fT),dB=fT=>createHash('sha1')['update'](dA(fT))['digest']('hex'),dC=fT=>fT['map']((fU,fV)=>({'index':fV,'start':fU['start'],'end':fU['end'],'output':fU[gA(0x2f2)],'completed':!0x1,'bytesWritten':0x0})),dD=(fT,fU)=>fT['parts']['length']===fU['length']?fT['parts']['every']((fV,fW)=>{let fX=fU[fW];return fX?fV['start']===fX['start']&&fV['end']===fX['end']&&(fV['output']??null)===(fX['output']??null):!0x1;}):!0x1,dE=(fT,fU)=>!fU||!fT['sourceSignature']?!0x0:fT['sourceSignature']===fU,dF=fT=>{const iM=gA;let fU=fT[iM(0x297)]['reduce']((fV,fW)=>fV+fW['bytesWritten'],0x0);return fU>0x0?fU:fT['bytesDownloaded'];},dG=fT=>{if(!fT||typeof fT!='object')return!0x1;let fU=fT;return fU['version']===0x2&&typeof fU['key']=='string'&&Array['isArray'](fU['parts'])&&typeof fU['bytesDownloaded']=='number';};var dH=class{['key'];['output'];['filePath'];['cleanupOnSuccess'];['store'];['target'];['trustExplicitKey'];constructor(fT={}){const iN=gA;if(this['output']=fT['output'],this['filePath']=fT['filePath'],this['key']=fT['key']??(this['output']?dB(this[iN(0x2f2)]):''),!this['key'])throw Error('Resume\x20key\x20is\x20required\x20when\x20output\x20is\x20not\x20provided');this['store']=fT['store']??new dz(),this['cleanupOnSuccess']=fT['cleanupOnSuccess']??!0x0,this['target']={'key':this['key'],'output':this['output'],'filePath':this['filePath']},this['trustExplicitKey']=typeof fT['key']==iN(0x214)&&fT[iN(0x27a)]['length']>0x0;}async['read'](){let fT=await this['store']['get'](this['target']);return dG(fT)?fT:null;}async['write'](fT){let fU=new Date()['toISOString'](),fV={...fT,'version':0x2,'key':this['key'],'output':fT['output']??this['output'],'bytesDownloaded':dF(fT),'createdAt':fT['createdAt']||fU,'updatedAt':fU};await this['store']['set'](this['target'],fV);}async['delete'](){const iO=gA;await this[iO(0x1d0)]['delete'](this['target']);}['createState'](fT){const iP=gA;let fU=new Date()['toISOString']();return{'version':0x2,'key':this['key'],'output':this[iP(0x2f2)],'input':fT['input'],'bytesTotal':fT[iP(0x2a9)],'bytesDownloaded':0x0,'parts':dC(fT[iP(0x297)]),'sourceSignature':fT['sourceSignature'],'planner':fT['planner'],'createdAt':fU,'updatedAt':fU};}['reconcileState'](fT,fU){const iQ=gA;let fV=fT['version']!==0x2,fW=fT['key']!==this['key'],fX=!this['trustExplicitKey']&&!dE(fT,fU[iQ(0x1dc)]),fY=!dD(fT,fU['parts']);if(fV||fW||fX||fY)return{'state':this['createState'](fU),'reset':!0x0};let fZ={...fT,'key':this['key'],'output':this['output'],'input':fU['input'],'bytesTotal':fU['bytesTotal'],'sourceSignature':fU[iQ(0x1dc)],'planner':fU['planner'],'parts':fU['parts']['map']((g0,g1)=>{let g3=fT['parts'][g1];return{'index':g1,'start':g0['start'],'end':g0['end'],'output':g0['output'],'completed':g3?.['completed']??!0x1,'bytesWritten':g3?.['bytesWritten']??0x0};}),'createdAt':fT['createdAt'],'updatedAt':fT['updatedAt']};return fZ['bytesDownloaded']=dF(fZ),{'state':fZ,'reset':!0x1};}['markPartCompleted'](fT,fU,fV){const iR=gA;let fW=fT['parts'][fU];if(!fW)return fT;let fX=fW['bytesWritten'];return fW[iR(0x28b)]=!0x0,fW[iR(0x25c)]=fV,fT['bytesDownloaded']=Math['max'](0x0,fT['bytesDownloaded']-fX+fV),fT['updatedAt']=new Date()['toISOString'](),fT;}async[gA(0x31d)](){const iS=gA;let fT=await this['read']();if(!fT)return null;let fU=fT[iS(0x1eb)];if(fT['bytesTotal']){let fX=fT['bytesTotal'];return{'bytesDownloaded':fU,'totalBytes':fX,'percentComplete':fX>0x0?Math['round'](fU/fX*0x64):0x0};}let fV=fT['parts']['length'],fW=fT['parts']['filter'](fY=>fY['completed'])['length'];return{'bytesDownloaded':fU,'totalBytes':null,'percentComplete':fV>0x0?Math['round'](fW/fV*0x64):0x0,'segmentsCompleted':fW,'segmentsTotal':fV};}};const dI=0x8*0x2**0x14,dJ=(fT,fU,fV)=>{const iT=gA;let fW=iT(0x1cd)+fV+iT(0x31b);return N['join'](fU,fW);},dK=(fT,fU,fV)=>{const iU=gA;let fW=Math['ceil'](fT/Math['max'](0x1,fU));return Math[iU(0x23c)](0x1,Math['min'](fW,Math['max'](0x1,fV)));},dL=(fT,fU,fV)=>{let fW=dK(fT,fU,fV),fX=[],fY=0x0;for(;fY<fT;){let fZ=Math['min'](fT-0x1,fY+fW-0x1);fX['push']([fY,fZ]),fY=fZ+0x1;}return fX;},dM=fT=>{let [fU,fV]=fT;return'bytes='+fU+'-'+(fV||'');},dN=fT=>dL(fT['contentLength'],fT['maxWorkerCount'],fT[gA(0x241)]??dI)[gA(0x1f9)](fU=>{let [fV,fW]=fU,fX=new Headers(fT['requestInit']?.['headers']);return fX['set']('Range',dM([fV,fW])),{'url':fT['url'],'headers':fX,'start':fV,'end':fW};}),dO=fT=>{let fU=fT?Error('The\x20operation\x20was\x20aborted',{'cause':fT}):Error('The\x20operation\x20was\x20aborted');return fU['name']='AbortError',fU;},dP=fT=>{const iV=gA;if(!(fT instanceof Error))return!0x1;if(fT['name']===iV(0x2bd)||fT['code']==='ABORT_ERR')return!0x0;let fU=fT['cause'];return fU instanceof Error&&fU['name']==='AbortError';},dQ=async fT=>await fT['client']['get'](fT[gA(0x2dd)],{'redirect':gA(0x1cc),...fT['requestInit']}),dR=(fT,fU,fV)=>async fW=>{const iW=gA;if(fV?.[iW(0x227)])throw dO();let fX=typeof fU=='number'?{'flags':'r+','start':fU}:{'flags':'w'},fY=L['createWriteStream'](fT,fX),fZ=Readable['fromWeb'](fW['body']);try{await pipeline(fZ,fY,{'signal':fV});}catch(g0){throw dP(g0)?dO(g0):g0;}if(fV?.['aborted'])throw dO();return fW;},dS=(fT,fU,fV)=>fW=>{if(fV?.['aborted'])throw dO();let fX=parseInt(fW['headers']['get']('content-length')||'0');if(fT['increase'](fX),fV?.['aborted'])throw dO();return fU&&!fV?.['aborted']?fU(fT['toProgressInfo']()):fT['log'](),fW;},dT=fT=>typeof fT=='boolean'?{'enabled':fT,'cleanupOnSuccess':!0x0}:fT?{'enabled':fT['enabled']??!0x0,'key':fT['key'],'store':fT['store'],'filePath':fT['filePath'],'cleanupOnSuccess':fT['cleanupOnSuccess']??!0x0}:{'enabled':!0x1,'cleanupOnSuccess':!0x0},dU=fT=>({'tempDir':fT['tempDir']??process['cwd'](),'maxRetries':fT['maxRetries']??0x5,'maxChunkSize':fT['maxChunkSize']??dI,'maxWorkerCount':fT['maxWorkerCount']??0x4,'resume':dT(fT['resume']),'proxy':fT[gA(0x24a)],'requestInit':fT['requestInit'],'fetchFn':fT['fetchFn']}),dV={'total':{'b':0x0,'mb':0x0},'current':{'b':0x0,'mb':0x0},'chunkSize':0x0,'chunkSizes':[],'averageSize':{'b':0x0,'mb':0x0},'averageTotal':{'b':0x0,'mb':0x0},'speed':{'bps':0x0,'mbps':0x0}},dW=fT=>{let fU=Math['floor'](fT/0xe10),fV=Math['floor'](fT%0xe10/0x3c),fW=fT%0x3c,fX=fU>0x0?fU+'h':'',fY=fV>0x0?fV+'m':'',fZ=fW>0x0?fW+'s':'';return fU>0x0?fX+'\x20'+(fY||'0m')+'\x20'+(fZ&&''+fZ):!fU&&fV>0x0?fY+'\x20'+(fZ&&''+fZ):fZ;},dX=(fT=0x0)=>{let fU=structuredClone(dV),fV=0x0,fW=setInterval(()=>{fV>0x1&&(fU['speed']['bps']=fU['current']['b']/fV),fV+=0.5;},0x1f4);return{'state':fU,'setTotal':fX=>{fU['total']['b']=fX,fU['total']['mb']=fX/0x400/0x400;},'setCurrent'(fX){fU['current']['b']=fX,fU['current']['mb']=fX/0x400/0x400;},'increase'(fX){const iX=b;fU['current']['b']+=fX,fU['current']['mb']=fU['current']['b']/0x400/0x400,fU['speed']['mbps']=fU['speed']['bps']/0x400/0x400,fU['chunkSize']=fX,fU['chunkSizes']['push'](fX),fU['averageSize']['b']=fU['current']['b']/fU['chunkSizes'][iX(0x21c)],fU['averageSize']['mb']=fU['averageSize']['b']/0x400/0x400,fU['averageTotal']['b']=fT*fU['averageSize']['b'],fU['averageTotal']['mb']=fU['averageTotal']['b']/0x400/0x400;},'stop'(){clearInterval(fW),Object['assign'](fU,dV);},'log'(){let fX=fU['current']['b'],fY=fU['total']['b'],fZ=fX+(fY?'/'+fY:'');stdout['write']('\x0dDownloading\x20['+fZ+']');},'stopLog'(){stdout['write']('\x0a');},'toString'(){const iY=b;let fX='';fU['speed']['bps']&&(fX+=fU['speed']['mbps']['toFixed'](0x1)+'\x20MB/s\x20–\x20'),fX+=''+fU['current']['mb']['toFixed'](0x1),fU['total']['b']?fX+='\x20of\x20'+fU['total']['mb']['toFixed'](0x1)+'\x20MB':fX+='\x20MB';let fY=fU['total']['b']||fU['averageTotal']['b'];if(fY){let fZ=fY-fU[iY(0x2f7)]['bps']*fV,g0=Math['round'](fZ/fU['speed']['bps']),g1=dW(g0);g0&&isFinite(g0)&&g1&&(fX+=',\x20'+g1+'\x20left');}return fX;},'toProgressInfo'(){let fX=fU['total']['b']||null;return{'bytesDownloaded':fU['current']['b'],'totalBytes':fX,'percentComplete':fX?fU['current']['b']/fX*0x64:null,'bytesPerSecond':fU['speed']['bps'],'estimatedSecondsRemaining':fU['speed']['bps']>0x0&&fX?(fX-fU['current']['b'])/fU['speed']['bps']:null};}};},dY=new Set(['authorization','cookie','set-cookie','x-amz-date','x-amz-security-token','x-amz-content-sha256','x-goog-date','x-goog-security-token']),dZ=(fT,fU={})=>{if(!fT)return[];let fV=fU['includeVolatile']??!0x1,fW=[];return new Headers(fT)['forEach']((fX,fY)=>{!fV&&dY['has'](fY['toLowerCase']())||fW['push']([fY,fX]);}),fW['sort'](([fX],[fY])=>fX['localeCompare'](fY)),fW;},e0=fT=>{const iZ=gA;try{let fU=new URL(fT),fV=fU['pathname']['split']('/')['map'](fW=>fW&&(fW['includes']('=')||fW[iZ(0x2e0)](',')?':volatile':fW))['join']('/');return''+fU['origin']+fV;}catch{let fW=String(fT);return(fW['split']('#')[0x0]??fW)['split']('?')[0x0]||fW;}},e1=fT=>({'url':e0(fT[gA(0x2dd)]),'start':fT['start'],'end':fT['end'],'output':fT['output'],'headers':dZ(fT['headers'])}),e2=fT=>{const j0=gA;let fU={'input':Array['isArray'](fT['input'])?fT['input']['map'](fV=>e1(fV)):e0(String(fT['resolvedUrl'])),'requestHeaders':dZ(fT[j0(0x207)]),'parts':fT['parts']['map'](fV=>e1(fV)),'maxWorkerCount':fT['maxWorkerCount'],'maxChunkSize':fT['maxChunkSize']};return createHash('sha1')['update'](JSON['stringify'](fU))['digest']('hex');},e3=async fT=>{const j1=gA;if(!fT[j1(0x1e0)])return null;let fU={'input':Array['isArray'](fT['input'])?fT['input']:fT['resolvedUrl'],'parts':fT['parts'],'bytesTotal':fT[j1(0x2a9)],'sourceSignature':fT['sourceSignature'],'planner':{'maxWorkerCount':fT['maxWorkerCount'],'maxChunkSize':fT['maxChunkSize']}},fV=await fT['manager']['read'](),fW=(fV?fT['manager']['reconcileState'](fV,fU):null)?.['state']??fT['manager']['createState'](fU);return await fT['manager']['write'](fW),fW;},e4=fT=>{const j2=gA;if(fT&&!fT['parts'][j2(0x2c8)](fU=>fU['completed']))throw Error('Not\x20all\x20segments\x20were\x20downloaded\x20successfully.\x20Try\x20resuming\x20later.');},e5=fT=>{const j3=gA;if(Array['isArray'](fT['input']))return fT['input']['map']((fU,fV)=>({...fU,'output':dJ(fT['url'],fT['tempFileDir'],fV)}));if(!fT['acceptsRanges'])throw Error('Unable\x20to\x20get\x20parts');if(!fT['size'])throw Error('Size\x20is\x20not\x20known');return dN({'url':fT['url'],'requestInit':fT['requestInit'],'contentLength':fT[j3(0x2c7)],'maxWorkerCount':fT['maxWorkerCount'],'maxChunkSize':fT['maxChunkSize']});},e6=async fT=>{const j4=gA;if(!fT['parts']['some'](fV=>typeof fV['start']=='number'&&(fV['output']??fT['output'])===fT[j4(0x2f2)])||await R['stat'](fT['output'])['then'](()=>!0x0)[j4(0x298)](()=>!0x1))return;let fU=await R[j4(0x296)](fT[j4(0x2f2)],'w');fT['size']&&fT['size']>0x0&&await fU['truncate'](fT['size']),await fU['close']();},e7=()=>{let fT=Error('The\x20operation\x20was\x20aborted');return fT['name']='AbortError',fT;},e8=fT=>{let fU=fT['match'](/bytes\s+(\d+)-(\d+)\/(\d+|\*)/i);if(!fU||!fU[0x1]||!fU[0x2]||!fU[0x3])return null;let fV=parseInt(fU[0x1],0xa),fW=parseInt(fU[0x2],0xa),fX=fU[0x3];if(!Number['isFinite'](fV)||!Number['isFinite'](fW)||fW<fV)return null;if(fX==='*')return{'start':fV,'end':fW,'total':null};let fY=parseInt(fX,0xa);return!Number['isFinite'](fY)||fY<=0x0?null:{'start':fV,'end':fW,'total':fY};},e9=(fT,fU)=>{const j5=gA;if(typeof fU['start']!='number'||typeof fU[j5(0x2ef)]!='number')return;if(fT['status']!==0xce)throw Error('Range\x20request\x20failed\x20for\x20bytes='+fU['start']+'-'+fU['end']+':\x20expected\x20206,\x20got\x20'+fT['status']);let fV=fT['headers']['get']('content-range');if(!fV)throw Error('Range\x20request\x20failed\x20for\x20bytes='+fU[j5(0x290)]+'-'+fU['end']+':\x20missing\x20Content-Range\x20header');let fW=e8(fV);if(!fW)throw Error('Range\x20request\x20failed\x20for\x20bytes='+fU['start']+'-'+fU['end']+':\x20invalid\x20Content-Range\x20\x22'+fV+'\x22');if(fW['start']!==fU['start']||fW['end']!==fU['end'])throw Error('Range\x20request\x20failed\x20for\x20bytes='+fU['start']+'-'+fU['end']+':\x20got\x20bytes='+fW['start']+'-'+fW['end']);},ea=async(fT,fU,fV)=>{const j6=gA;let fW=fT['headers']['get']('content-length');if(fW){let fY=parseInt(fW,0xa);if(Number['isFinite'](fY)&&fY>0x0)return fY;}let fX=fT['headers']['get']('content-range');if(fX){let fZ=fX['match'](/bytes\s+(\d+)-(\d+)\//i);if(fZ&&fZ[0x1]&&fZ[0x2]){let g0=parseInt(fZ[0x1],0xa),g1=parseInt(fZ[0x2],0xa);if(Number['isFinite'](g0)&&Number['isFinite'](g1)&&g1>=g0)return g1-g0+0x1;}}return typeof fU['start']=='number'&&typeof fU['end']==j6(0x260)?Math['max'](0x0,fU['end']-fU['start']+0x1):fU['output']&&fU['output']!==fV?R[j6(0x31f)](fU['output'])['then'](g3=>g3['size'])['catch'](()=>0x0):0x0;},eb=(fT,fU)=>fT['map']((fV,fW)=>fW)['filter'](fV=>!(fU?.['parts'][fV]?.['completed']??!0x1)),ec=fT=>{let fU=Promise['resolve']();return{'enqueue':()=>(fU=fU['then'](fT),fU),'onIdle':()=>fU};},ed=async fT=>{const j7=gA;let fU=fT['signal']??fT['requestInit']?.['signal']??void 0x0,fV=()=>{if(fU?.['aborted'])throw e7();};fV();let fW=eb(fT['parts'],fT[j7(0x235)]),fX=dm['promise'](async g6=>{let {index:g7,part:g8}=g6;fV();let g9=await dQ({'index':g7,'client':fT['client'],'url':g8['url'],'requestInit':{...fT['requestInit'],'signal':fU,'headers':g8['headers']??fT['requestInit']?.['headers']}});if(fV(),e9(g9,g8),await dR(g8['output']??fT['output'],g8['start'],fU)(g9),dS(fT['progress'],fT['onProgress'],fU)(g9),fV(),fT['resumeState']&&fT['resumeManager']){let ga=await ea(g9,g8,fT['output']);fT['resumeManager']['markPartCompleted'](fT['resumeState'],g7,ga),await g1['enqueue']();}},fT[j7(0x2b1)]),fY=()=>{fX['pause'](),fX['killAndDrain'](),fX['kill']();};if(fU?.['aborted'])throw fY(),e7();let fZ=()=>{},g0=fU?new Promise((g6,g7)=>{let g8=()=>{fY(),g7(e7());};fU['addEventListener']('abort',g8,{'once':!0x0}),fZ=()=>fU['removeEventListener']('abort',g8);}):null,g1=ec(async()=>{const j8=j7;!fT['resumeState']||!fT['resumeManager']||await fT[j8(0x1d2)]['write'](fT['resumeState']);}),g3=fW['map'](g6=>{let g7=fT['parts'][g6];return g7?(fV(),fX['push']({'index':g6,'part':g7})):Promise['resolve']();}),g4=[];try{let g6=Promise['allSettled'](g3);g0&&(await Promise['race']([g6,g0]),fV()),g4=await g6;}finally{fZ(),await g1['onIdle']();}let g5=g4['find'](g7=>g7['status']==='rejected');if(g5?.['status']==='rejected')throw g5['reason'];},ee=async(fT,fU)=>{await new Promise((fV,fW)=>{const j9=b;let fX=L['createReadStream'](fT),fY=()=>{fU['off']('error',fZ),fX['off']('error',g0),fX['off']('end',g1);},fZ=g3=>{fY(),fW(Error('Output\x20write\x20stream\x20error',{'cause':g3}));},g0=g3=>{fY(),fW(Error('Segment\x20read\x20stream\x20error',{'cause':g3}));},g1=()=>{fY(),fV();};fU['on'](j9(0x23a),fZ),fX['on']('error',g0),fX['on']('end',g1),fX['pipe'](fU,{'end':!0x1});});},ef=async fT=>{let fU=fT['parts']['map'](fW=>fW['output'])['filter'](fW=>!!fW&&fW!==fT['output']);if(!fU['length'])return;let fV=L['createWriteStream'](fT['output']);for(let fW of fU)await ee(fW,fV);fV['end'](),await finished(fV);},eg=async fT=>{const ja=gA;if(!fT['expectedSize'])return;let fU=await R[ja(0x31f)](fT['output'])['then'](fV=>fV['size'])['catch'](()=>null);if(fU&&fU!==fT['expectedSize'])throw Error('Actual\x20size\x20'+fU+'\x20doesn\x27t\x20match\x20expected\x20size\x20'+fT['expectedSize']);},eh=async fT=>{const jb=gA;fT['resumeManager']&&fT['resumeManager'][jb(0x25f)]&&await fT['resumeManager']['delete'](),await du(fT[jb(0x28e)]);},ei=async fT=>{const jc=gA;let fU=e2({'input':fT['input'],'resolvedUrl':fT['url'],'parts':fT[jc(0x297)],'requestHeaders':fT['requestInit']?.['headers'],'maxWorkerCount':fT['maxWorkerCount'],'maxChunkSize':fT['maxChunkSize']}),fV=await e3({'manager':fT['resumeManager'],'input':fT[jc(0x2be)],'resolvedUrl':fT['url'],'parts':fT['parts'],'bytesTotal':fT[jc(0x2c7)]??void 0x0,'sourceSignature':fU,'maxWorkerCount':fT['maxWorkerCount'],'maxChunkSize':fT['maxChunkSize']}),fW=dX(fT['parts']['length']);fT['size']&&fW['setTotal'](fT['size']),fV?.['bytesDownloaded']&&fW['setCurrent'](fV['bytesDownloaded']),await e6({'output':fT['output'],'size':fT['size'],'parts':fT['parts']});try{await ed({'parts':fT['parts'],'output':fT['output'],'maxWorkerCount':fT['maxWorkerCount'],'client':fT[jc(0x2b5)],'requestInit':fT['requestInit'],'progress':fW,'onProgress':fT['onProgress'],'resumeState':fV,'resumeManager':fT['resumeManager'],'signal':fT['signal']});}finally{fW['stop'](),fT['onProgress']||fW['stopLog']();}e4(fV),await ef({'output':fT['output'],'parts':fT['parts']}),await eg({'output':fT['output'],'expectedSize':Array['isArray'](fT['input'])?null:fT[jc(0x2c7)]}),await eh({'tempFileDir':fT['tempFileDir'],'resumeManager':fT[jc(0x1d2)]});},ej=async fT=>{const jd=gA;let fU=new Headers(fT['requestInit']?.['headers']);fU[jd(0x337)]('Range','bytes=0-0');let fV=Array['isArray'](fT[jd(0x2be)])?fT[jd(0x2be)][0x0]?.['url']:fT['input'];if(!fV)throw Error(jd(0x2b4));let fW=await fT['client'][jd(0x27d)](fV,{...fT['requestInit'],'headers':fU}),fX=fW['headers']['get']('content-type'),fY=fW['headers']['get']('content-length'),fZ=fW['headers']['get']('content-range'),g0=fZ?.['split']('/')?.[0x1]||fY,g1=g0&&!Array[jd(0x273)](fT['input'])?parseInt(g0,0xa):null,g3=fW['headers']['get']('accept-ranges')==='bytes'||!!fZ?.['includes']('bytes')||!!fX?.['includes']('video')||!!fX?.['includes']('audio')||!!fX?.['includes']('octet-stream');return{'url':fW['url'],'size':g1,'acceptsRanges':g3};};var ek=class gy{['input'];['output'];['resume'];['onProgress'];['config'];['client'];['resumeManager'];['executed']=!0x1;['probe'];['tempFileDir'];constructor(fT){const je=gA;this['input']=fT['input'],this['output']=fT['output'],this['resume']=fT['resume'],this['onProgress']=fT['onProgress'],this['config']=dU(fT),this['client']=dp({'maxRetries':this['config']['maxRetries'],'proxy':this[je(0x2d4)]['proxy'],'fetch':this['config']['fetchFn']}),this[je(0x2d4)]['resume']['enabled']&&(this['resumeManager']=new dH({'output':this[je(0x2f2)],'key':this['config']['resume']['key'],'filePath':this[je(0x2d4)]['resume']['filePath'],'store':this['config']['resume']['store'],'cleanupOnSuccess':this['config']['resume'][je(0x25f)]}));}static async['init'](fT){let fU=new gy(fT);return await fU['_init'](),fU;}async['_init'](){const jf=gA;this['probe']=await ej({'client':this['client'],'input':this['input'],'requestInit':this['config']['requestInit']}),await dt(this['output']),this['tempFileDir']=await dr(this['output'],this['config']['tempDir']),this[jf(0x2d4)]['resume']['enabled']||(await du(this[jf(0x2f2)],dv(this['output']),this['tempFileDir']),this['tempFileDir']=await dr(this['output'],this['config']['tempDir']));}async['execute'](){const jg=gA;if(!this['probe']||!this[jg(0x28e)])throw Error('Download\x20was\x20not\x20initialized.\x20Use\x20Download.init(options).');if(this['executed'])throw Error('Download.execute()\x20can\x20only\x20be\x20called\x20once\x20per\x20instance.');this['executed']=!0x0;try{let fT=e5({'input':this[jg(0x2be)],'url':this['probe']['url'],'size':this['probe']['size'],'acceptsRanges':this['probe']['acceptsRanges'],'requestInit':this['config']['requestInit'],'tempFileDir':this['tempFileDir'],'maxWorkerCount':this[jg(0x2d4)]['maxWorkerCount'],'maxChunkSize':this['config'][jg(0x241)]});await ei({'input':this['input'],'output':this['output'],'url':this[jg(0x22d)]['url'],'size':this['probe'][jg(0x2c7)],'requestInit':this['config']['requestInit'],'maxWorkerCount':this['config']['maxWorkerCount'],'maxChunkSize':this['config']['maxChunkSize'],'onProgress':this['onProgress'],'client':this['client'],'parts':fT,'tempFileDir':this['tempFileDir'],'resumeManager':this['resumeManager'],'signal':this['config']['requestInit']?.['signal']??void 0x0});}finally{try{await this['close']();}catch{}}}async['getSize'](){if(this['probe']||=await ej({'client':this['client'],'input':this['input'],'requestInit':this['config']['requestInit']}),!this['probe']['size'])throw Error('Size\x20is\x20not\x20known');return this['probe']['size'];}async['close'](){const jh=gA;await this[jh(0x2b5)]['close']();}};const el=async({attempts:fT,fn:fU,shouldRetry:fV,onRetry:fW})=>{const ji=gA;let fX=Math[ji(0x23c)](0x1,Math['trunc'](fT)),fY;for(let fZ=0x1;fZ<=fX;fZ+=0x1)try{return await fU(fZ);}catch(g0){if(fY=g0,fZ>=fX||!fV?.(g0,fZ))throw g0;await fW?.(g0,fZ);}throw fY instanceof Error?fY:Error(String(fY));},em=()=>{if(!(process['platform']!=='win32'||process.env.ELECTRON_RUN_AS_NODE!=='1')&&!isatty(process['stderr']['fd'])&&ac()?.['getConsoleSize']?.()?.['columns'])try{let fT=aa('nanospinner/dist/consts.js');fT&&fT['isTTY']===!0x1&&(fT['isTTY']=!0x0,fT['symbols']?.['frames']?.['length']===0x1&&(fT['symbols']['frames']=['-','\x5c','|','/']));}catch{}},en=fT=>{const jj=gA;let fU=process['stderr'];if(!fT||process['platform']!=='win32'||process.env.ELECTRON_RUN_AS_NODE!=='1')return fU;if(!fU['columns']||fU['columns']!==fT){let fV=Object[jj(0x243)](fU,'columns')??Object['getOwnPropertyDescriptor'](Object['getPrototypeOf'](fU),jj(0x271));if(!fV||fV['writable']||fV['set'])try{fU['columns']=fT;}catch{}if(fU['columns']!==fT){let fW=Object['create'](fU);return Object['defineProperty'](fW,'columns',{'value':fT,'configurable':!0x0,'enumerable':!0x0,'writable':!0x0}),C['warn']('Unable\x20to\x20override\x20stderr.columns;\x20using\x20spinner-local\x20width\x20'+fT+'.'),fW;}}return fU;},eo={'debug':'gray','info':'green','warn':'yellow','error':'red'},ep=fT=>{let fU=fT['toUpperCase'](),fV=P[eo[fT]];return fV(fU);},eq=(fT,fU)=>typeof fU=='string'?fT+'\x20'+fU:fU&&{...fU,'text':(fT+'\x20'+(fU['text']??''))['trimEnd']()},er=(fT,fU)=>{const jk=gA;em();let fV=E(ep(jk(0x210))),fW=createSpinner(fT,{'stream':en(ac()?.['getConsoleSize']?.()?.['columns']??process['stderr']['columns']??process['stdout']['columns']??(process[jk(0x2ad)]==='win32'?0x78:0x50))})['start']({'text':fV+'\x20'+fT,'color':fU}),fX=fW['update']['bind'](fW),fY=fW['success']['bind'](fW),fZ=fW['error']['bind'](fW);return fW['update']=g0=>fX(eq(fV,g0)),fW['success']=g0=>fY(eq(fV,g0)),fW['error']=g0=>fZ(eq(fV,g0)),fW;},es=0x10,et=fT=>{if(!(!fT||typeof fT!='object'||!('drm'in fT)))return fT['drm']?.['widevine']?.['pssh'];},eu=(fT,fU)=>createHash('sha1')['update'](fT+':'+cs(fU))['digest']('hex'),ev=({outputDirectory:fT,resolvedFilenameWithoutExtension:fU,track:fV})=>join(fT,fU+'.'+createHash(gA(0x283))[gA(0x32a)](cs(fV))['digest']('hex')['slice'](0x0,0x6)+'.'+(fV['type']==='subtitle'?'vtt':fV['type']==='audio'?'m4a':'mp4')),ew=(fT,fU)=>{if(fU)return{'Range':'bytes='+fT+'-'+(fT+fU-0x1)};},ex=async fT=>{const jl=gA;if(fT['sourceUrl']&&!fT['inputTrack'])return fT[jl(0x2e4)];let fU=[],fV=await cQ(fT),fW=fV[0x0];fW?.['initSegment']&&fU['push']({'url':fW[jl(0x319)]['location']['path'],'headers':ew(fW[jl(0x319)]['location']['offset'],fW['initSegment']['location']['length'])});for(let fX of fV)fU['push']({'url':fX['location']['path'],'headers':ew(fX['location']['offset'],fX['location']['length'])});return!fU['length']&&fT['sourceUrl']?fT['sourceUrl']:fU['length']===0x1&&!fU[0x0]?.['headers']?fU[0x0]['url']:fU;},ey=fT=>{let fU=Math['max'](0x1,Math['trunc'](fT)),fV=Math['min'](es,fU);return{'normalizedRequestedConnections':fU,'maxWorkerCount':fV,'wasClamped':fU!==fV};},ez=fT=>Math['max'](0x1,Math['trunc'](fT)+0x1),eA=(fT,fU)=>fU['origin']==='manifest'?{'enabled':!0x0,'key':eu(fT,fU)}:!0x0,eB=({title:fT,progress:fU,track:fV,filepath:fW,target:fX})=>{const jm=gA;let fY={'b':fU['totalBytes']??NaN,'mb':(fU['totalBytes']??NaN)/0x400/0x400},fZ={'b':fU['bytesDownloaded']??NaN,'mb':(fU['bytesDownloaded']??NaN)/0x400/0x400},g0=fU['totalBytes']?Math['round'](fU['bytesDownloaded']/fU['totalBytes']*0x64):void 0x0;return{'title':fT,'total':fY,'current':fZ,'percentage':g0,'speed':{'bps':fU['bytesPerSecond']??NaN,'mbps':(fU['bytesPerSecond']??NaN)/0x400/0x400},'trackName':basename(fW),'trackPath':fW,'finalName':fX['finalName'],'finalPath':fX['finalPath'],'state':g0===0x64?'downloaded':jm(0x307),'quality':fV['type']==='video'&&fV['width']?fV['width']+'x'+fV['height']:void 0x0,'codec':fV['type']==='video'?fV['codec']??void 0x0:void 0x0};},eC=fT=>'Downloading\x20∙\x20'+((fT['bytesDownloaded']/0x400/0x400)['toFixed'](0x2)+'\x20MB')+(fT['totalBytes']?'\x20of\x20'+(fT['totalBytes']/0x400/0x400)['toFixed'](0x2)+'\x20MB':''),eD=fT=>fT['flatMap'](fU=>{let fV=fU['segments']?.[0x0],fW=et(fV?.['initSegment']?.['encryption'])??et(fV?.['encryption']);return fW?[fW]:[];})['map'](fU=>{const jn=gA;let fV=fU;return typeof fV=='string'?fV:fV instanceof Uint8Array||fV instanceof ArrayBuffer?Buffer['from'](fV)['toString']('base64'):ArrayBuffer['isView'](fV)?Buffer['from'](fV['buffer'])[jn(0x2ab)]('base64'):String(fV);}),eE=(fT,fU)=>({'path':fU,'type':fT['type'],'language':fT['languageCode'],'label':fT['name']??void 0x0,'forced':fT['type']==='subtitle'?fT[gA(0x266)]:!0x1}),eF=async({track:fT,filepath:fU,description:fV,target:fW,source:fX,options:fY,settings:fZ,abortSignal:g0,title:g1,emitProgress:g3})=>{const jo=gA;C['info'](fV),C['debug']('Path:\x20'+fU);let g4=fY['connections']??fZ['get'](jo(0x29c))??0x1,{maxWorkerCount:g5,wasClamped:g6}=ey(g4);g6&&C['warn']('Connections\x20value\x20'+g4+'\x20was\x20clamped\x20to\x20'+g5+jo(0x30d)),C[jo(0x1e2)]('Max\x20worker\x20count:\x20'+g5);let g7=er('Downloading','yellow'),g8='',g9=await ex(fT),ga=ez(fY['retry']??fZ['get'](jo(0x230))??0x1);try{await el({'attempts':ga,'fn':async()=>{let gb=await ek['init']({'input':g9,'output':fU,'tempDir':m,'requestInit':{'headers':fX['headers'],'signal':g0},'proxy':fY['proxyMedia']||fY['proxy']||void 0x0,'resume':eA(fX['url'],fT),'maxRetries':fY['retry'],'maxWorkerCount':g5,'onProgress':gc=>{g3(eB({'title':g1,'progress':gc,'track':fT,'filepath':fU,'target':fW})),g8=eC(gc),g7['update'](g8);}});if(g0?.['aborted']){C['debug']('Track\x20download\x20skipped,\x20already\x20aborted:\x20'+fU);let gc=Error('The\x20operation\x20was\x20aborted');throw gc['name']='AbortError',gc;}await gb['execute']();},'shouldRetry':gb=>!(gb instanceof Error&&gb['name']==='AbortError'),'onRetry':async(gb,gc)=>{let gd=gb instanceof Error?gb['message']:String(gb);C['warn']('Track\x20download\x20retry\x20'+gc+'/'+(ga-0x1)+'\x20scheduled\x20for\x20'+fU+':\x20'+gd);}}),g7['success'](g8);}catch(gb){if(g7[jo(0x23a)](fV),gb instanceof Error&&gb['name']==='AbortError')throw gb;let gc=gb instanceof Error?gb['message']:String(gb);throw C['error']('Download\x20track\x20failed:\x20'+gc),gb instanceof Error&&gb['stack']?C['debug'](gb['stack']):C['debug'](gc),gb instanceof Error?gb:Error(gc);}},eG=fT=>fT instanceof Error&&fT['name']==='AbortError',eH=fT=>!!fT&&typeof fT=='object'&&'aborted'in fT&&gA(0x1f0)in fT&&typeof fT[gA(0x1f0)]=='function';var eI=class extends T{#e;#t;#n;#r;#i;#a;constructor({settings:fT,downloadsStorage:fU}){super(),this.#i=fT,this.#a=fU;}async['start'](fT,fU,fV={'id':crypto['randomUUID']()},fW,fX){eH(fW)?(this.#r=new AbortController(),fW['addEventListener']('abort',()=>{this.#r?.['abort']();})):this.#r=void 0x0;let fY=new D({'proxyUrl':fT['proxy']||fT['proxyMeta']||void 0x0});this.#e={...fT},this.#t=fU,this.#n={...fV};let fZ;try{this.#o();let g0=await dj(fY,this.#t);g0['matchedContentLabel']&&C['info']('Content\x20Matched:\x20'+g0['matchedContentLabel']),C['info']('Parsing\x20streams...'),fZ=await dh({'http':fY,'options':this.#e,'source':this.#t,'meta':this.#n,'input':fX,'detection':g0}),this.#e=fZ['options'],this.#n=fZ['meta'],await aF(this.#i['get']('downloadDir'));let g1=cC({'settings':this.#i,'options':this.#e,'source':this.#t,'meta':this.#n,'allTracks':fZ['allTracks']});return this.#s(g1['outputPath'],g1['resolvedFilenameWithoutExtension']),await this.#c(fZ,g1);}catch(g3){if(eG(g3))throw g3;let g4=cx(g3);throw this['emit']('error',g4),g4;}finally{await fZ?.['dispose']?.();}}#o(){const jp=gA;C['debug']('URL:\x20'+this.#t['url']);let fT='seasonNumber'in this.#n?this.#n['seasonNumber']:void 0x0,fU='episodeNumber'in this.#n?this.#n['episodeNumber']:void 0x0,fV='episodeTitle'in this.#n?this.#n[jp(0x2f0)]:'',fW=[this.#n['title'],fT?'S'+fT:'',fU?'E'+fU:'',fV]['filter'](Boolean)['join']('\x20∙\x20');fW&&C['info'](fW);}#s(fT,fU){const jq=gA;this['emit']('output-path',fT),C['debug'](jq(0x2f3)+fT);let fV=cB(this.#n),fW=this.#a['getByFilePath'](fT);fW&&(fW['title']=fV['title']||fU),C['debug']('Emit\x20download\x20start'),this['emit']('start',this.#a['jobs']);}async #c(fT,fU){const jr=gA;C['debug']('Downloading\x20tracks');let fV=[];cu(fT['tracks']['all']);for(let fW of fT['tracks'][jr(0x25e)]){let fX=ev({'outputDirectory':fU['outputDirectory'],'resolvedFilenameWithoutExtension':fU['resolvedFilenameWithoutExtension'],'track':fW}),fY=cr(fW,fU['resolvedFilenameWithoutExtension']);fW['type']==='subtitle'&&C['debug']('URL:\x20'+(fW['sourceUrl']??'manifest\x20subtitle\x20track')),await eF({'track':fW,'filepath':fX,'description':fY,'target':{'finalName':fU['filenameWithExtension'],'finalPath':fU['outputPath']},'source':this.#t,'options':this.#e,'settings':this.#i,'abortSignal':this.#r?.['signal'],'title':cB(this.#n)['title'],'emitProgress':fZ=>{this['emit']('progress',fZ,fU['outputPath']);}}),await aB(fX)&&fV['push'](eE(fW,fX));}return{'downloaded':fV,'psshList':eD(fT['tracks']['all']),'selectedTracks':fT['tracks']['all']};}};const eJ=fT=>{try{let fU=new URL(fT),fV=[...new Set(fU['searchParams']['keys']())],fW=fV['length']?'?'+fV['join'](','):'';return''+fU['origin']+fU['pathname']+fW;}catch{return fT;}},eK=async(fT,fU)=>{const js=gA;let {verbose:fV,url:fW,resolveLicense:fX}=fU,fY=Buffer['from'](fT,'base64'),fZ='cenc',g0=bq(bp(),'drm'),g1=new RemoteCdm({'keySystem':'com.widevine.alpha','baseUrl':g0,'headers':{'Authorization':'Bearer\x20'+bK['accessToken']}}),g3='initializing',g4=null;try{C['debug']('DRM\x20key\x20request\x20started:\x20license='+eJ(fW)+js(0x28d)+eJ(g0)+',\x20psshLength='+fT['length']+',\x20initDataBytes='+fY['length']),g3='requesting-media-key-system-access';let g5=requestMediaKeySystemAccess(g1['keySystem'],[]);g3='creating-media-keys';let g6=await g5['createMediaKeys']({'cdm':g1});g3='creating-session',g4=g6['createSession'](),g3='generating-license-request',C['debug']('Generating\x20license\x20request...');let g7=g4['waitForLicenseRequest']();await g4['generateRequest']('cenc',fY);let g8=await g7;C['debug']('License\x20request\x20of\x20'+g8[js(0x21c)]+js(0x257)+g4['sessionId']),g3='requesting-license',C['debug']('Requesting\x20license\x20at\x20'+fW);let g9=await fX({'url':fW,'pssh':fT,'data':new Uint8Array(g8),'sessionId':g4[js(0x1e3)]});if(g9[0x0]===0x7b||g9[0x0]===0x3c){C['debug']('License\x20response\x20is\x20not\x20binary');let gb=Buffer['from'](g9)['toString']('utf8');if(C['debug'](gb),gb['includes']('<html>'))throw Error('Invalid\x20license\x20response');}g3='updating-session',C['debug']('Updating\x20session...'),await g4['update'](new Uint8Array(g9)),g3='waiting-for-key-statuses-change',C['debug']('Waiting\x20for\x20key\x20statuses\x20change...');let ga=await g4['waitForKeyStatusesChange']();C['debug']('Keys\x20count:\x20'+ga['length']),g3='closing-session',await g4['close'](),await g4['remove']();for(let gc of ga){let gd='Key:\x20'+gc['keyId']+':'+gc['key'];fV?C['info'](gd):C['debug'](gd);}return ga['map'](ge=>({'kid':ge['keyId'],'key':ge[js(0x27a)]}));}catch(ge){throw C['error']('Failed\x20to\x20get\x20DRM\x20content\x20keys\x20at\x20stage='+g3+'\x20for\x20license='+eJ(fW)+'\x20via\x20remoteCdm='+eJ(g0)),cq('DRM\x20content\x20key\x20error',ge),ge;}finally{if(g4){try{await g4['close']();}catch{}try{await g4['remove']();}catch{}}}},eL=async({keys:fT,drm:fU,psshList:fV,drmDir:fW,resolveLicense:fX,licenseUrl:fY})=>{const jt=gA;C['debug']('Extracting\x20decryption\x20keys');let fZ=[],g0=fU&&'keys'in fU?fU[jt(0x2f9)]:[],g1=[...fT||[],...g0];g1['length']&&fZ['push'](...g1);let g3=fY??(fU&&'server'in fU?fU['server']:void 0x0);if(fX&&g3){let g4=[...new Set(fV??[])];for(let [g5,g6]of g4['entries']()){C[jt(0x1e2)](jt(0x2ee)+(g5+0x1)+'/'+g4['length']+'\x20using\x20'+eJ(g3)),C['debug']('PSSH:\x20'+g6);let g7=await eK(g6,{'url':g3,'resolveLicense':fX,'clientDir':fW});g7&&g7['length']&&fZ['push'](...g7);}fZ['length']||(C['warn']('Can\x27t\x20get\x20decryption\x20keys'),C['debug']('PSSH:\x20'+g4['join'](',\x20')));}return fZ;};var eM=class{['strategy'];constructor(fT){this['strategy']=fT;}async['prepare'](){await this['strategy']['prepare']?.();}async['process'](fT){const ju=gA;let fU=await this['strategy']['decryptFile'](fT);return fT[ju(0x248)]&&await rm(fT['input'],{'force':!0x0}),fU;}};const eN=fT=>fT['replaceAll']('-','')['toLowerCase']();var eO=class{async['decryptFile'](fT){const jv=gA;let fU=new Map();for(let fV of fT['keys']){if(!fV['kid'])throw Error('Shifro\x20requires\x20a\x20KID\x20for\x20every\x20decryption\x20key');fU['set'](eN(fV['kid']),eN(fV['key']));}return C['debug']('Decrypting\x20via\x20shifro:\x20'+fT['input']),await(await Decryption['init']({'input':new Y({'source':new FilePathSource(fT['input']),'keys':fU}),'output':new Z({'target':new FilePathTarget(fT['output'])})}))[jv(0x324)](),fT['output'];}};const eP=/(?:(.+?)\n)?((?:\d{2}:)?\d{2}:\d{2}\.\d{3})\s+-->\s+((?:\d{2}:)?\d{2}:\d{2}\.\d{3})([^\n]*)/g,eQ=/^\uFEFF?WEBVTT(?:.|\n)*?\n{2}/,eR=/(?:(\d{2}):)?(\d{2}):(\d{2})\.(\d{3})/,eS={'ar':'ara','de':'deu','en':'eng','es':'spa','fr':'fra','hi':'hin','it':'ita','ja':'jpn','ko':'kor','pl':'pol','pt':'por','ru':'rus','th':'tha','tr':gA(0x286),'uk':'ukr','und':'und','vi':'vie','zh':'zho'},eT=fT=>fT===gA(0x31e)||fT==='text',eU=fT=>{const jw=gA;let fU=fT[jw(0x28f)]()['split'](':');if(fU['length']<0x2||fU['length']>0x3)throw Error('Invalid\x20trim\x20timestamp:\x20'+fT);let fV=Number(fU['at'](-0x1)),fW=Number(fU['at'](-0x2)),fX=fU['length']===0x3?Number(fU[0x0]):0x0;if(![fX,fW,fV]['every'](fY=>Number['isFinite'](fY)&&fY>=0x0))throw Error('Invalid\x20trim\x20timestamp:\x20'+fT);return fX*0xe10+fW*0x3c+fV;},eV=fT=>{let fU=eR['exec'](fT);if(!fU)throw Error('Invalid\x20WebVTT\x20timestamp:\x20'+fT);return 0xe10*0x3e8*Number(fU[0x1]||'0')+0x3c*0x3e8*Number(fU[0x2])+0x3e8*Number(fU[0x3])+Number(fU[0x4]);},eW=fT=>{let fU=Math['floor'](fT/(0xe10*0x3e8)),fV=Math['floor'](fT%(0xe10*0x3e8)/(0x3c*0x3e8)),fW=Math['floor'](fT%(0x3c*0x3e8)/0x3e8),fX=fT%0x3e8;return fU['toString']()['padStart'](0x2,'0')+':'+fV['toString']()['padStart'](0x2,'0')+':'+fW['toString']()['padStart'](0x2,'0')+'.'+fX['toString']()['padStart'](0x3,'0');},eX=fT=>{let fU=[fT['invalidEntries']?.['length']?fT['invalidEntries']['length']+'\x20invalid\x20entries':void 0x0,fT['invalidTimecodes']?.['length']?fT['invalidTimecodes']['length']+'\x20invalid\x20timecodes':void 0x0,fT['invalidIndices']?.['length']?fT['invalidIndices']['length']+'\x20invalid\x20indices':void 0x0,fT['timecodeIssues']?.['reversedTimecodes']?.['length']?fT['timecodeIssues']['reversedTimecodes']['length']+'\x20reversed\x20timecodes':void 0x0,fT['timecodeIssues']?.['overlappingTimecodes']?.['length']?fT['timecodeIssues']['overlappingTimecodes']['length']+'\x20overlapping\x20timecodes':void 0x0]['filter'](Boolean);return fU['length']?'\x20('+fU['join'](',\x20')+')':'';},eY=fT=>{const jx=gA;let fU=fT['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')[jx(0x28f)]();if(eQ['test'](fU))return fU;let {subtitle:fV,status:fW}=convert(fT,'.vtt');if(!fW['success'])throw Error('Failed\x20to\x20convert\x20subtitle\x20to\x20WebVTT'+eX(fW)+'.');return fV['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')['trim']();},eZ=fT=>{if(!fT)return;let fU=fT['trim']()['toLowerCase']();if(!fU)return;let fV=fU['split']('-')[0x0]??fU;return/^[a-z]{3}$/['test'](fV)?fV:eS[fV];},f0=fT=>{switch(extname(fT)['toLowerCase']()){case'.mp4':return new Mp4OutputFormat();case'.mkv':return new MkvOutputFormat();default:throw Error('Unsupported\x20mux\x20output\x20format:\x20'+fT);}},f1=fT=>new W({'formats':V,'source':cE(fT)}),f2=fT=>{const jy=gA;let fU=fT['trimBegin']?eU(fT['trimBegin']):void 0x0,fV=fT['trimEnd']?eU(fT[jy(0x2b3)]):void 0x0;if(fU!==void 0x0&&fV!==void 0x0&&fV<=fU)throw Error('trimEnd\x20must\x20be\x20greater\x20than\x20trimBegin');return{'trimBegin':fU,'trimEnd':fV};},f3=async(fT,fU,fV,fW,fX)=>{let fY=f1(fU),fZ=await fY['getPrimaryVideoTrack']();if(!fZ)throw Error('Missing\x20video\x20track\x20in\x20'+fU);let g0=fZ['codec'];if(!g0)throw Error('Unknown\x20video\x20codec\x20in\x20'+fU);if(fX!==void 0x0&&fX>=await fZ['computeDuration']())throw Error('trimBegin\x20excludes\x20the\x20full\x20video\x20track\x20in\x20'+fU);let g1=new EncodedPacketSink(fZ),g3=fX===void 0x0?await g1['getFirstKeyPacket']({'verifyKeyPackets':!0x0}):await g1['getKeyPacket'](fX,{'verifyKeyPackets':!0x0})??await g1['getFirstKeyPacket']({'verifyKeyPackets':!0x0});if(!g3)throw Error('No\x20video\x20packets\x20found\x20in\x20'+fU);let g4=new EncodedVideoPacketSource(g0);return fT['addVideoTrack'](g4,{'disposition':fZ['disposition'],'name':fV??fZ['name']??void 0x0,'rotation':fW['supportsVideoRotationMetadata']?fZ['rotation']:void 0x0}),{'kind':'video','input':fY,'sink':g1,'source':g4,'startPacket':g3,'startTimestamp':g3['timestamp'],'emit':async g5=>{let g6={'decoderConfig':await fZ['getDecoderConfig']()??void 0x0},g7=!0x0;for await(let g8 of g1['packets'](g3,void 0x0,{'verifyKeyPackets':!0x0}))await g4['add'](g8['clone']({'timestamp':g8['timestamp']-g5}),g7?g6:void 0x0),g7=!0x1;g4['close']();}};},f4=async(fT,fU,fV,fW,fX)=>{let fY=f1(fU),fZ=await fY['getPrimaryAudioTrack']();if(!fZ)throw Error('Missing\x20audio\x20track\x20in\x20'+fU);let g0=fZ['codec'];if(!g0)throw Error('Unknown\x20audio\x20codec\x20in\x20'+fU);if(fX!==void 0x0&&fX>=await fZ['computeDuration']())throw Error('trimBegin\x20excludes\x20the\x20full\x20audio\x20track\x20in\x20'+fU);let g1=new EncodedPacketSink(fZ),g3=fX===void 0x0?await g1['getFirstPacket']():await g1['getPacket'](fX)??await g1['getFirstPacket']();if(!g3)throw Error('No\x20audio\x20packets\x20found\x20in\x20'+fU);let g4=new EncodedAudioPacketSource(g0);return fT['addAudioTrack'](g4,{'disposition':fZ['disposition'],'languageCode':eZ(fV)??eZ(fZ['languageCode']),'name':fW??fZ['name']??void 0x0}),{'kind':'audio','input':fY,'sink':g1,'source':g4,'startPacket':g3,'startTimestamp':g3['timestamp'],'emit':async g5=>{const jz=b;let g6={'decoderConfig':await fZ['getDecoderConfig']()??void 0x0},g7=!0x0;for await(let g8 of g1['packets'](g3))await g4['add'](g8[jz(0x272)]({'timestamp':g8['timestamp']-g5}),g7?g6:void 0x0),g7=!0x1;g4['close']();}};},f5=(fT,{trimBegin:fU,trimEnd:fV,commonStart:fW})=>{const jA=gA;let fX=fT['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')['trim']();if(!eQ['test'](fX))throw Error('Only\x20WebVTT\x20subtitles\x20are\x20supported\x20by\x20the\x20MediaBunny\x20muxer.');let fY=fU===void 0x0?void 0x0:Math['round'](fU*0x3e8),fZ=fV===void 0x0?void 0x0:Math['round'](fV*0x3e8),g0=Math['round'](fW*0x3e8);eP['lastIndex']=0x0;let g1=eP['exec'](fX),g3=fX['slice'](0x0,g1?.[jA(0x206)]??fX['length'])['trimEnd'](),g4=[],g5=g1?fX['slice'](g1['index']):'';for(;;){eP['lastIndex']=0x0;let g6=eP[jA(0x306)](g5);if(!g6)break;let g7=g6['index']+g6[0x0]['length'],g8=g5['indexOf']('\x0a',g7)+0x1,g9=g5['indexOf']('\x0a\x0a',g7);g9===-0x1&&(g9=g5['length']);let ga=g6[0x1]?.['trim'](),gb=g6[0x4]?.['trim'](),gc=g5['slice'](g8,g9)['trim'](),gd=eV(g6[0x2]),ge=eV(g6[0x3]),gf=Math['max'](gd,fY??gd)-g0,gg=Math['min'](ge,fZ??ge)-g0;if(gg>gf){let gh=eW(gf)+'\x20-->\x20'+eW(gg)+(gb?'\x20'+gb:'');g4['push']([ga,gh,gc]['filter'](Boolean)['join']('\x0a'));}g5=g5['slice'](g9)['trimStart']();}return[g3,...g4]['filter'](Boolean)['join']('\x0a\x0a');},f6=async(fT,fU,fV,fW,fX)=>{const jB=gA;if(fV['type']==='video')return f3(fT,fV[jB(0x231)],fV[jB(0x317)],fU,fW);if(fV['type']==='audio')return f4(fT,fV['path'],fV['language'],fV['label'],fW);if(eT(fV['type'])){let fY=eY(await readFile(fV['path'],'utf8')),fZ=new TextSubtitleSource('webvtt');return fT['addSubtitleTrack'](fZ,{'disposition':fV['forced']?{'forced':!0x0}:void 0x0,'languageCode':eZ(fV['language']),'name':fV['label']}),{'kind':'subtitle','source':fZ,'emit':async g0=>{let g1=f5(fY,{'trimBegin':fW,'trimEnd':fX,'commonStart':g0});await fZ['add'](g1),fZ['close']();}};}throw Error('Unsupported\x20mux\x20input\x20type:\x20'+fV[jB(0x26e)]);};var f7=class{async['mux'](fT){const jC=gA;let {trimBegin:fU,trimEnd:fV}=f2(fT),fW=f0(fT['output']),fX=new Output({'format':fW,'target':cF(fT['output'])}),fY=[];try{for(let g1 of fT['inputs'])fY['push'](await f6(fX,fW,g1,fU,fV));let fZ=fY['filter'](g3=>g3['kind']!==jC(0x31e));if(!fY['length'])throw Error('No\x20tracks\x20provided\x20for\x20muxing.');let g0=fZ['length']>0x0?Math[jC(0x201)](...fZ['map'](g3=>g3['startTimestamp'])):fU??0x0;await fX['start']();for(let g3 of fY){if(g3['kind']==='subtitle'){await g3['emit'](g0);continue;}await g3['emit'](g0);}return await fX['finalize'](),fT['output'];}catch(g4){throw await fX['cancel']()['catch'](()=>void 0x0),g4;}finally{for(let g5 of fY)g5['kind']!=='subtitle'&&g5['input']['dispose']();}}},f8=class{['strategy'];constructor(fT){const jD=gA;this[jD(0x330)]=fT;}async['prepare'](){await this['strategy']['prepare']?.();}async['process'](fT){let fU=await this['strategy']['mux'](fT);if(fT['cleanup']){for(let fV of new Set(fT['inputs']['map'](fW=>fW['path'])))await rm(fV,{'force':!0x0});}return fU;}},f9=class{['fn'];['next']=null;constructor(fT){this['fn']=fT,this['next']=null;}},fa=class{['first']=null;['last']=null;constructor(){this['first']=null,this['last']=null;}['add'](fT){let fU=new f9(fT);return this['first']?this['last']['next']=fU:this['first']=fU,this['last']=fU,this;}async['process'](fT){let fU=this['first'],fV=async()=>await fU['fn'](fT,async()=>{if(fU=fU['next'],fU)return await fV();throw Error('No\x20handler\x20detected');});return await fV();}};const fb=async(fT,fU)=>{const jE=gA;if(!fT['keys']['length'])return fU();let fV=er('Decrypting'),fW=new eM(new eO());await fW['prepare']();for(let fX of fT[jE(0x2da)]){let fY=extname(fX['path']),fZ=fX['path']['replace'](fY,'.dec'+fY);if(!(fX['type']!=='video'&&fX['type']!=='audio')){if(await fW['process']({'input':fX['path'],'output':fZ,'keys':fT['keys'],'type':fX['type'],'cleanup':!0x0}),!existsSync(fZ))throw Error('Decryption\x20failed\x20for\x20file\x20'+fX['path']+'.\x20Unable\x20to\x20find\x20'+fZ);fX['path']=fZ;}}fV['success']('Decrypted'),await fU();},fc=async(fT,fU)=>{const jF=gA;if(fT['skipMux'])return fU();let fV=er('Muxing'),fW=new f8(new f7());await fW['prepare'](),await fW['process']({'inputs':fT[jF(0x2da)],'output':fT['output'],'trimBegin':fT['trimBegin'],'trimEnd':fT['trimEnd'],'cleanup':!0x0}),existsSync(fT['output'])?(fV['success']('Muxed'),C['debug']('Muxed:\x20'+fT['output'])):fV['error']('Muxing\x20failed.\x20Output\x20file\x20not\x20found:\x20'+fT['output']);},fd=0x1,fe=0x4,ff=0x8,fg=0x10,fh=(fT,fU)=>Math['max'](fd,Math['trunc'](typeof fT=='number'&&Number['isFinite'](fT)?fT:fU)),fi=fT=>fT['includes']('highConnectionsCount')?fg:fT['includes'](gA(0x2a2))?ff:fe,fj=({requestedConnections:fT,fallbackConnections:fU=fd,grantedBenefits:fV})=>{let fW=fh(fT,fh(fU,fd)),fX=fi(fV),fY=Math['min'](fW,fX);return{'connections':fY,'normalizedRequestedConnections':fW,'maxAllowedConnections':fX,'wasClamped':fY<fW};},fk=async fT=>{const jG=gA;let {grantedBenefits:fU}=await bV(),fV=null,fW=fU['includes']('parallelDownloads'),fX=fT['maxActiveDownloads']&&fT['maxActiveDownloads']>0x1;if(!fW&&fX&&(fV=Error('PARALLEL_DOWNLOADS_NOT_ALLOWED'),fT['maxActiveDownloads']=0x1),fT[jG(0x24a)]||fT['proxyMeta']||fT[jG(0x250)]){let fY=fU['includes']('proxy'),fZ=fT['proxy']||fT['proxyMeta']||fT['proxyMedia'];!fY&&fZ&&(fV=Error('PROXY_NOT_ALLOWED'),delete fT['proxy'],delete fT['proxyMeta'],delete fT['proxyMedia']);}if(fT['videoContainerFormat']&&fT['videoContainerFormat']!=='mp4'&&(fU['includes']('customMuxFormat')||(fV=Error('CUSTOM_MUX_FORMAT_NOT_ALLOWED'),fT[jG(0x285)]='mp4')),typeof fT['connections']=='number'){let {connections:g0}=fj({'requestedConnections':fT[jG(0x29c)],'grantedBenefits':fU});fT['connections']=g0;}return{'error':fV,'data':fT};},fl=fT=>({'retry':fT['get']('retry'),'connections':fT['get']('connections'),'proxy':fT['get'](gA(0x24a)),'proxyMeta':fT['get']('proxyMeta'),'proxyMedia':fT['get'](gA(0x250)),'movieTemplate':fT['get']('movieFilenameTemplate'),'episodeTemplate':fT['get']('seriesFilenameTemplate'),'hardsub':fT['get']('preferHardsub'),'format':fT['get']('videoContainerFormat')}),fm=({options:fT,fallbackConnections:fU,grantedBenefits:fV})=>{let fW=fj({'requestedConnections':fT['connections'],'fallbackConnections':fU,'grantedBenefits':fV});return{'options':{...fT,'connections':fW['connections']},'limit':fW};},fn=({settings:fT,requestedOptions:fU,filePath:fV,grantedBenefits:fW})=>{let fX=fl(fT),{options:fY,limit:fZ}=fm({'options':{...fX,...fU},'fallbackConnections':fX['connections'],'grantedBenefits':fW});return fV&&(fY['outputPath']=fV),{'baseOptions':fX,'options':fY,'limit':fZ};};var fo=class{['settings'];['extensionManager'];['downloadsStorage'];['callbacks'];constructor(fT,fU,fV,fW){this['settings']=fT,this['extensionManager']=fU,this['downloadsStorage']=fV,this['callbacks']=fW;}async['run'](fT,fU,fV){const jH=gA;let fW;try{fT['status']='downloading',await this['callbacks'][jH(0x21a)](fT),this[jH(0x289)]['emitStatusChanged'](fT);let {options:fX,limit:fY}=fn({'settings':this['settings'],'requestedOptions':fT['options'],'filePath':fT['filePath'],'grantedBenefits':fV});fY[jH(0x1fc)]&&C['warn']('Connections\x20value\x20'+fY['normalizedRequestedConnections']+'\x20exceeds\x20tier\x20limit\x20('+fY['maxAllowedConnections']+').\x20Using\x20'+fY['connections']+'.');let fZ=new eI({'settings':this['settings'],'downloadsStorage':this[jH(0x2cf)]});this.#e(fT,fU,fZ);let g0=fT[jH(0x322)];if(!g0)throw Error('Download\x20job\x20is\x20missing\x20a\x20media\x20resource');let g1=fT['url']?await this['extensionManager']['getExtensionForUrl'](fT['url']):null,g3=fT['url']?await cj({'resource':g0,'url':fT[jH(0x2dd)],'options':fX,'extension':g1}):{'source':g0['source']};fW=g3['input'],g0['source']=g3[jH(0x2c4)],await this['callbacks']['persistJob'](fT),g1&&await bg(g1);let {downloaded:g4=[],psshList:g5,selectedTracks:g6}=await fZ['start'](fX,g3['source'],g0['metadata'],fU['signal'],g3[jH(0x2be)]);if(fU['signal'][jH(0x227)])return;if(!g4['length'])throw G['emit']('error',{'code':'NO_FILES_DOWNLOADED'}),Error('No\x20files\x20were\x20downloaded');g4['length']&&!fT['filePath']&&(fT['filePath']=g4[0x0]?.['path']),this['callbacks']['trackArtifact'](fT['id'],fT['filePath']);for(let g9 of g4)this['callbacks']['trackArtifact'](fT['id'],g9['path']);if(fT['status']!==jH(0x307))return;fT['status']='processing',this['callbacks']['emitStatusChanged'](fT);let g7=await this.#r({'job':fT,'options':fX,'psshList':g5??[],'selectedTracks':g6,'extension':g1,'resolvedEntry':g3['entry'],'resolvedInput':g3[jH(0x2be)]}),g8=new fa();g8['add'](fb)[jH(0x1ed)](fc),await g8['process']({'inputs':g4,'output':fT['filePath'],'keys':g7,'trimBegin':fX['trimBegin'],'trimEnd':fX['trimEnd'],'binariesDir':this['settings']['get']('binariesDir'),'skipMux':fX['skipMux']}),g1&&await bh(g1,{'skipMux':fX['skipMux']}),fT['status']=jH(0x28b),fT['progress']=0x64,this['callbacks']['emitStatusChanged'](fT),this['callbacks']['emitJobCompleted'](fT);}catch(ga){if(ga instanceof Error&&ga['name']==='AbortError'){C['debug']('Download\x20was\x20aborted\x20(paused):\x20'+fT['id']);return;}let {normalizedError:gb,alreadyHandled:gc}=this.#t(fT,ga);if(this.#n(gb),gc)return;C['error']('Download\x20job\x20failed:\x20'+gb),cq('Download\x20job\x20failure',gb),this['callbacks']['emitStatusChanged'](fT),this['callbacks']['emitJobError'](fT,gb);}finally{await fW?.['dispose']?.();}}#e(fT,fU,fV){fV['on']('output-path',fX=>{const jI=b;fT['filePath']=fX,this['callbacks']['trackArtifact'](fT['id'],fX),this[jI(0x289)][jI(0x21a)](fT),C[jI(0x1e2)]('Job\x20output\x20path\x20persisted\x20early:\x20id='+fT['id']+',\x20path='+fX);});let fW={};fV['on']('progress',fX=>{const jJ=b;if(fU['signal']['aborted']||fT['status']!=='downloading')return;fW[fX['trackPath']]=fX,this['callbacks']['trackArtifact'](fT['id'],fX['trackPath']),this['callbacks']['trackArtifact'](fT['id'],fX['finalPath']);let fY=0x0,fZ=0x0;for(let g1 in fW)fY+=fW[g1]['current']['b'],fZ+=fW[g1]['total']['b'];let g0=fZ>0x0?fY/fZ*0x64:0x0;fT[jJ(0x2ec)]=fX['finalPath'],fT['progress']=g0,fT[jJ(0x1d8)]=fY,fT['totalBytes']=fZ,fX['quality']&&(fT['quality']=fX['quality']),fX['codec']&&(fT[jJ(0x1fe)]=fX[jJ(0x1fe)]),this['callbacks']['emitProgress'](fT),this['callbacks']['persistJob'](fT);}),fV['on']('error',fX=>{const jK=b;if(fT['status']==='paused'||fU['signal'][jK(0x227)])return;let {normalizedError:fY,alreadyHandled:fZ}=this.#t(fT,fX);fZ||(C['error']('Downloader\x20process\x20failed:\x20'+fY['message']),fY['stack']&&C['debug'](fY['stack']),this['callbacks']['emitStatusChanged'](fT),this['callbacks']['emitJobError'](fT,fY));});}#t(fT,fU){const jL=gA;let fV=fU instanceof Error?fU:Error(String(fU)),fW=fT['status']==='error'&&fT['error']===fV['message'];return fW||(fT[jL(0x26a)]='error',fT['error']=fV['message']),{'normalizedError':fV,'alreadyHandled':fW};}#n(fT){const jM=gA;(fT&&typeof fT=='object'&&'code'in fT?String(fT['code']):'')==='DOWNLOAD_DIR_NOT_WRITABLE'&&G[jM(0x1e4)]('error',{'code':'DOWNLOAD_DIR_NOT_WRITABLE'});}async #r({job:fT,options:fU,psshList:fV,selectedTracks:fW,extension:fX,resolvedEntry:fY,resolvedInput:fZ}){let g0=fT['resource']?.['source']?.['drm']??fT['resource']?.['drm'];fT['resource']?.['drmPayload']&&fT['url']&&(g0=await ck(fT['resource'],fU,fX));let g1=await this.#i({'extension':fX,'selectedTracks':fW,'resolvedEntry':fY,'resolvedInput':fZ,'options':fU}),g3=await this.#a({'extension':fX,'selectedTracks':fW,'resolvedEntry':fY,'resolvedInput':fZ,'options':fU}),g4=g0&&'server'in g0?c8(g0):void 0x0,g5=g3['resolveLicense']??g4,g6=g3['licenseUrl']??(g0&&'server'in g0?g0['server']:void 0x0);return eL({'keys':[...fU['keys']??[],...g1],'drm':g0,'psshList':fV,'drmDir':this['settings']['get']('drmDir'),'resolveLicense':g5,'licenseUrl':g6})['catch'](g7=>{const jN=b;throw C['error']('Failed\x20to\x20extract\x20decryption\x20keys\x20for\x20job\x20'+fT['id']),C['debug']('DRM\x20extraction\x20context:\x20title='+(fT['title']||fT['resource']?.['metadata']?.['title']||jN(0x1cf))+',\x20drmServer='+(g0&&'server'in g0?g0['server']:'(none)')+',\x20psshCount='+fV['length']+jN(0x2bf)+(fU['keys']?.['length']??0x0)),g7 instanceof Error?(cq('DRM\x20extraction\x20failure',g7),g7['message']===jN(0x2b6)&&G['emit']('error',{'code':'DRM_UNAUTHORIZED'}),g7['message']==='Forbidden'&&G['emit']('error',{'code':'DRM_FORBIDDEN'})):C['debug'](String(g7)),g7;});}async #i({extension:fT,selectedTracks:fU,resolvedEntry:fV,resolvedInput:fW,options:fX}){const jO=gA;if(!fT||!fV||!fW)return[];let fY=bc(fT);if(typeof fY['drm']?.[jO(0x1ee)]!='function')return[];let fZ=new Map(),g0={...fV,'input':fW};for(let g1 of fU){if(!g1['inputTrack'])continue;let g3=(await cQ(g1)['catch'](()=>[]))[0x0],g4=g3?.['initSegment']?.['encryption']??g3?.['encryption'],g5=[g4?.['drm']?.['widevine']?'widevine':null,g4?.['drm']?.[jO(0x2cd)]?'playready':null,g4?.['drm']?.['fairplay']?'fairplay':null]['filter'](Boolean)[0x0];if(!g5)continue;let g6=await fY['drm']['getKeys']({'system':g5,'entry':g0,'track':g1['inputTrack'],'options':fX});for(let [g7,g8]of g6??[])fZ['set'](g7,g8);}return Array['from'](fZ,([g9,ga])=>({'kid':g9,'key':ga}));}async #a({extension:fT,selectedTracks:fU,resolvedEntry:fV,resolvedInput:fW,options:fX}){const jP=gA;if(!fT||!fV||!fW)return{};let fY=bc(fT);if(typeof fY['drm']?.['getLicense']!='function')return{};let fZ=await this.#o(fU);if(!fZ['size'])return{};let g0={...fV,'input':fW};return{'licenseUrl':'extension://'+fT['package'][jP(0x2c0)]+'/license','resolveLicense':async({pssh:g1,data:g3})=>{let g4=fZ['get'](g1);if(!g4)throw Error('No\x20DRM\x20track\x20binding\x20found\x20for\x20PSSH\x20'+g1);return await fY['drm']['getLicense']({'system':g4['system'],'entry':g0,'track':g4['track'],'options':fX,'data':g3});}};}async #o(fT){const jQ=gA;let fU=new Map();for(let fV of fT){if(!fV['inputTrack'])continue;let fW=(await cQ(fV)['catch'](()=>[]))[0x0],fX=fW?.['initSegment']?.['encryption']??fW?.['encryption'];for(let fY of[this.#s(fV,'widevine',fX?.['drm']?.['widevine']?.['pssh']),this.#s(fV,'playready',fX?.['drm']?.['playready']?.['pssh']),this.#s(fV,'fairplay',fX?.['drm']?.['fairplay']?.['pssh'])])!fY||fU[jQ(0x287)](fY['pssh'])||fU['set'](fY['pssh'],fY);}return fU;}#s(fT,fU,fV){const jR=gA;if(!fT['inputTrack']||!fV)return null;let fW=typeof fV==jR(0x214)?fV:fV instanceof Uint8Array||fV instanceof ArrayBuffer?Buffer['from'](fV)['toString'](jR(0x302)):null;return fW?{'pssh':fW,'system':fU,'track':fT['inputTrack']}:null;}},fp=class extends T{[gA(0x32b)];['extensionManager'];['downloadsStorage'];#e=new cl();#t=new Map();#n=null;#r;['maxActiveDownloads'];constructor(fT,fU,fV){const jS=gA;super(),this['settings']=fT,this['extensionManager']=fU,this['downloadsStorage']=fV,this['maxActiveDownloads']=fT['get'](jS(0x2af)),this.#r=new fo(fT,fU,fV,{'persistJob':fW=>this['downloadsStorage']['update'](fW),'emitStatusChanged':fW=>this['emit']('job-status-changed',fW),'emitProgress':fW=>this['emit']('job-progress',fW),'emitJobError':(fW,fX)=>this['emit']('job-error',fW,fX),'emitJobCompleted':fW=>this['emit']('job-completed',fW),'trackArtifact':(fW,fX)=>this.#m(fW,fX)}),C['debug']('Created\x20download\x20manager\x20with\x20max\x20active\x20downloads:\x20'+this['maxActiveDownloads']);}async['initializeFromStorage'](){const jT=gA;let fT=new Set(['downloading','queued','processing',jT(0x29f),'analyzing']);for(let fU of this['downloadsStorage']['jobs'])fU['status']==='paused'||fU['status']==='completed'||fU['status']==='error'||fT['has'](fU['status'])&&(fU['status']!=='queued'&&(fU['status']='queued',fU['error']=void 0x0,await this['downloadsStorage']['update'](fU)),this.#d(fU));this.#s();}async['analyze'](fT,fU={}){if(!fT){let fW=Error('Cannot\x20prepare\x20job\x20without\x20a\x20URL.');throw this['emit']('error',fW),fW;}let fV=await ci(fT,fU,await this['extensionManager']['getExtensionForUrl'](fT));if(!fV)throw Error('No\x20media\x20resource\x20found');return fV;}async['add'](fT){const jU=gA;if(!fT['url']&&!fT['resource'])throw Error('Job\x20must\x20have\x20either\x20a\x20URL\x20or\x20a\x20pre-prepared\x20resource.');let fU={'id':crypto['randomUUID'](),'status':'queued','progress':0x0,'downloadedBytes':0x0,'createdAt':new Date()['toISOString'](),...fT};C['debug']('Adding\x20new\x20job:\x20'+fU['id']),C['debug']('URL:\x20'+fU['url']),await this['downloadsStorage'][jU(0x1ed)](fU),this['emit']('job-added',fU),this.#d(fU),this.#s();}async['pause'](fT){let fU=await this.#i(fT,'pause');fU&&C['debug']('Paused\x20download:\x20'+fU['id']);}async['resume'](fT){const jV=gA;let fU=this.#e['getActiveRun'](fT);if(fU){fU['cancellationReason']==='pause'||fU['controller']['signal']['aborted']?(this.#e['queueResumeAfterStop'](fT),C['debug']('Resume\x20queued\x20until\x20stop\x20completes:\x20'+fT)):C['debug']('Resume\x20skipped\x20while\x20job\x20is\x20active:\x20'+fT);return;}let fV=this.#y(fT);if(!fV){C['warn']('Resume\x20failed:\x20Job\x20'+fT+'\x20not\x20found');return;}if(fV['status']==='paused'){await this.#a(fV),C[jV(0x1e2)]('Resumed\x20download:\x20'+fV['id']);return;}fV[jV(0x26a)]===jV(0x23a)&&await this.#o(fV)&&C['debug']('Retried\x20download:\x20'+fV['id']);}async['remove'](fT){await this.#i(fT,'remove'),await this['downloadsStorage']['delete'](fT),this.#t['delete'](fT);}async['removeWithFile'](fT){let fU=this.#y(fT),fV=await this.#i(fT,'remove-with-file')||fU,fW=this.#h(fT,fV);await this['downloadsStorage']['delete'](fT),await this.#_(fW),this.#t['delete'](fT);}async #i(fT,fU){const jW=gA;let fV=this.#f(fT),fW=this.#e['getActiveRun'](fT),fX=this.#y(fT);return fW?fU==='pause'&&fW['job']['status']!=='downloading'?(C['debug']('Pause\x20ignored\x20for\x20non-downloading\x20stage:\x20id='+fT+',\x20stage='+fW['job']['status']),fW['job']):(fW['cancellationReason']=fU,fU==='pause'&&(fW['job']['status']='paused',fW['job']['error']=void 0x0,await this['downloadsStorage']['update'](fW['job']),this['emit'](jW(0x2a5),fW['job'])),fW['controller']['abort'](),await fW['runPromise'],fW[jW(0x255)]):(fU==='pause'&&fX&&(fV||fX['status']==='queued')&&(fX['status']='paused',fX['error']=void 0x0,await this['downloadsStorage']['update'](fX),this['emit']('job-status-changed',fX)),fX??void 0x0);}async #a(fT){const jX=gA;fT['status']=jX(0x22b),fT[jX(0x23a)]=void 0x0,await this['downloadsStorage']['update'](fT),this['emit']('job-status-changed',fT),this.#d(fT),this.#s();}async #o(fT){const jY=gA;let fU=this.#h(fT['id'],fT);this.#t['delete'](fT['id']),await this.#_(fU),fT['status']='analyzing',fT['error']=void 0x0,fT['progress']=0x0,fT['downloadedBytes']=0x0,fT['totalBytes']=void 0x0,fT['quality']=void 0x0,fT['codec']=void 0x0,await this['downloadsStorage']['update'](fT),this['emit']('job-status-changed',fT);try{if(fT['url']){let fV=await this['analyze'](fT['url'],fT['options']??{}),fW=this.#g(fT,fV);if(!fW)throw Error('No\x20media\x20resource\x20found');fT['resource']=fW;}return await this.#a(fT),!0x0;}catch(fX){return fT['status']='error',fT['error']=fX instanceof Error?fX['message']:String(fX),await this['downloadsStorage']['update'](fT),this['emit']('job-status-changed',fT),this[jY(0x1e4)](jY(0x275),fT,fX),!0x1;}}#s(){const jZ=gA;for(this['maxActiveDownloads']=this['settings']['get']('maxActiveDownloads');this.#e[jZ(0x311)]<this[jZ(0x2af)];){let fT=this.#p();if(!fT)break;this.#c(fT);}this.#e['queuedCount']===0x0&&this.#e['activeRunCount']===0x0&&this['emit'](jZ(0x1f2));}#c(fT){if(fT['status']!=='queued'){C['warn']('Skipping\x20non-queued\x20job\x20start:\x20'+fT['id']+'\x20('+fT['status']+')');return;}let fU=new AbortController(),fV={'controller':fU,'job':fT,'runPromise':Promise['resolve']()};this.#e['setActiveRun'](fT['id'],fV),fV['runPromise']=this.#u(fT,fU)['catch'](fW=>{const k0=b;let fX=fW instanceof Error?fW:Error('Download\x20run\x20failed:\x20'+String(fW));C['error'](fX['message']),this['emit'](k0(0x23a),fX);});}async #l(){const k1=gA;if(this.#n)return this.#n;try{let {grantedBenefits:fT}=await bV();this.#n=fT;}catch(fU){let fV=fU instanceof Error?fU[k1(0x20f)]:String(fU);C['warn'](k1(0x2cb)+fV),this.#n=[];}return this.#n;}async #u(fT,fU){const k2=gA;this.#e['setActiveJob'](fT);try{let fV=await this.#l();await this.#r['run'](fT,fU,fV);}finally{let fW=this.#e['getActiveRun'](fT['id']);if(fW){let fX=fW?.['cancellationReason'],fY=fX==='pause'&&this.#e['consumeResumeAfterStop'](fT['id']);fX==='pause'?(fT['status']='paused',fT['error']=void 0x0,await this['downloadsStorage']['update'](fT),this['emit']('job-status-changed',fT)):fX!=='remove'&&fX!==k2(0x242)&&await this['downloadsStorage']['update'](fT),this.#e['deleteActiveJob'](fT['id']),this.#e['deleteActiveRun'](fT['id']),fY&&fT['status']==='paused'&&(fT['status']='queued',fT['error']=void 0x0,await this['downloadsStorage']['update'](fT),this['emit']('job-status-changed',fT),this.#d(fT)),this.#s();}}}#d(fT){this.#e['enqueue'](fT);}#f(fT){const k3=gA;return this.#e[k3(0x1e8)](fT);}#p(){return this.#e['dequeueNext'](fT=>this.#y(fT));}#m(fT,fU){if(!fU)return;let fV=this.#t['get'](fT);fV||(fV=new Set(),this.#t['set'](fT,fV)),fV['add'](fU);}#h(fT,fU){let fV=new Set();for(let fX of this.#t['get'](fT)??[])fV['add'](fX);fU?.['filePath']&&fV['add'](fU['filePath']);let fW=new Set();for(let fY of fV)fW['add'](fY),fW['add'](fY+'.part.json'),fW['add'](this.#v(fY));return fW;}#g(fT,fU){const k4=gA;let fV=Array['isArray'](fU)?fU:[fU];if(fV['length']<=0x1)return fV[0x0];let fW=fT['resource']?.['metadata'],fX=fT['resource']?.['source'][k4(0x2dd)],fY=fW&&'seasonNumber'in fW?fW['seasonNumber']:null,fZ=fW&&'episodeNumber'in fW?fW['episodeNumber']:null,g0=fW&&'episodeTitle'in fW?fW['episodeTitle']:null;return fV['find'](g1=>{let g3=g1['metadata'];if(fW?.['id']&&g3?.['id'])return fW['id']===g3['id'];let g4=g3&&'seasonNumber'in g3?g3['seasonNumber']:null,g5=g3&&'episodeNumber'in g3?g3['episodeNumber']:null,g6=g3&&'episodeTitle'in g3?g3['episodeTitle']:null;return fW?.['title']&&g3?.['title']&&fW['title']===g3['title']&&fY===g4&&fZ===g5&&g0===g6?!0x0:!!fX&&fX===g1['source']['url'];})??fV[0x0];}async #_(fT){fT['size']!==0x0&&await Promise['all']([...fT]['map'](fU=>rm(fU,{'recursive':!0x0,'force':!0x0})['catch'](()=>void 0x0)));}#v(fT){let fU=resolve(fT),fV=parse(fT)['name'];return join(m,fV+'-'+createHash('sha1')['update'](fU)['digest']('hex')['slice'](0x0,0xa));}#y(fT){return this.#e['getActiveJob'](fT)||this['downloadsStorage']['get'](fT);}['onJobAdded'](fT){return this['on']('job-added',fT),()=>this['removeListener']('job-added',fT);}[gA(0x323)](fT){return this['on']('job-status-changed',fT),()=>this['removeListener']('job-status-changed',fT);}['onJobProgress'](fT){return this['on']('job-progress',fT),()=>this['removeListener']('job-progress',fT);}['onJobCompleted'](fT){return this['on']('job-completed',fT),()=>this['removeListener']('job-completed',fT);}['onJobError'](fT){return this['on']('job-error',fT),()=>this['removeListener']('job-error',fT);}['onIdle'](fT){return this['on']('idle',fT),()=>this['removeListener']('idle',fT);}['onError'](fT){return this['on']('error',fT),()=>this['removeListener']('error',fT);}['waitForIdle'](){return new Promise(fT=>this['onIdle'](fT));}};const fq=fT=>{if(!fT)return null;let [fU,fV]=fT['toLowerCase']()['split']('e');return[parseInt(fU['trim']()['toLowerCase']()['replace']('s','')),parseFloat(fV?.['trim']())];},fr=fT=>{let fU=0x0,fV=0x270f,fW=[],fX=fT['split'](',');for(let fZ of fX){let [g0,g1]=fZ['split']('-'),g3=fq(g0),g4=fq(g1);if(g3&&!g1){let [g5,g6]=g3;if(isNaN(g6)){for(let g7=0x0;g7<=fV;g7++)fW['push']([g5,g7]);}else fW['push']([g5,g6]);}else{if(g3&&g4){let [g8,g9]=g3,[ga,gb]=g4;for(let gc=g8;gc<=ga;gc++){let gd=g9||0x0,ge=gc===ga?gb:fV;for(let gf=gd;gf<=ge;gf++)fW['push']([gc,gf]);}}}}let fY=new Map();for(let [gg,gh]of fW)fY['has'](gg)||fY['set'](gg,new Set()),fY['get'](gg)?.['add'](gh);return fY;},ft=fT=>{if(!fT)return{};let fU={},fV=typeof fT=='string'?fT['split']('|'):fT;for(let fW of fV){let [fX,...fY]=fW['split'](':'),fZ=fY['join'](':');if(!fZ)throw Error('Can\x27t\x20parse\x20header:\x20'+fW);fU[fX['trim']()]=fZ['trim']();}return fU;},fu=async fT=>{const k5=gA;let fU=!0x1,fV=fT;do try{fV?fU=!!new URL(fV):fV=(await n['ask']({'fields':{'url':{'label':'URL'}}}))['url'];}catch{fV=(await n['ask']({'fields':{'url':{'label':'URL'}}}))[k5(0x2dd)];}while(!fU);return fV!==fT&&C['debug']('URL:\x20'+fV),fV;},fv=(fT,fU)=>new Date(fU['createdAt']??0x0)['getTime']()-new Date(fT['createdAt']??0x0)[gA(0x2ae)]();var fw=class{['filePath'];['jobs']=[];#e=Promise['resolve']();constructor(fT){this['filePath']=fT;}[gA(0x200)](fT){let fU=JSON['parse'](fT),fV=Object['entries'](fU);return new Map(fV);}async['load'](){await this.#e;try{let fT=await readFile(this['filePath'],{'encoding':'utf8'});this['jobs']=JSON['parse'](fT)['toSorted'](fv);}catch{this['jobs']=[];}return this;}get['size'](){return this['jobs']['length'];}async['add'](fT){await this.#t(async()=>{this['jobs']['unshift'](fT),await this['save']();});}async['update'](fT){await this.#t(async()=>{let fU=this['jobs']['findIndex'](fV=>fV['id']===fT['id']);fU!==-0x1&&(this['jobs'][fU]=fT,await this['save']());});}['getByFilePath'](fT){return this['jobs']['find'](fU=>fU['filePath']===fT);}[gA(0x1d6)](fT){const k6=gA;return this[k6(0x220)]['find'](fU=>fU['id']===fT);}['has'](fT){return this['jobs']['some'](fU=>fU['id']===fT);}async['delete'](fT){await this.#t(async()=>{const k7=b;let fU=this['jobs']['findIndex'](fV=>fV['id']===fT);fU!==-0x1&&(this['jobs'][k7(0x228)](fU,0x1),await this['save']());});}async['deleteWithFile'](fT){let fU=await this.#t(async()=>{let fV=this['jobs']['findIndex'](fX=>fX['id']===fT);if(fV===-0x1)return null;let [fW]=this['jobs']['splice'](fV,0x1);return await this['save'](),fW??null;});fU?.['filePath']&&await rm(fU['filePath'],{'recursive':!0x0,'force':!0x0});}async['clear'](){await this.#t(async()=>{this['jobs']=[],await this['save']();});}async['save'](){const k8=gA;return writeFile(this['filePath'],JSON['stringify'](this[k8(0x220)],null,0x2));}#t(fT){let fU=this.#e['then'](fT,fT);return this.#e=fU['then'](()=>void 0x0,()=>void 0x0),fU;}};const fx={'command':['download\x20[urls..]','$0\x20[urls..]'],'aliases':['dl'],'describe':'Download\x20media\x20content\x20by\x20URL','builder':fT=>fT['option'](gA(0x335),{'alias':'q','describe':'Video\x20resolution\x20quality\x20-\x202160p/1080p/720p/...,\x20defaults\x20to\x20highest\x20available','type':'string'})['option']('video-codec',{'alias':'v','describe':gA(0x309),'type':'string'})['option']('video-range',{'alias':'r','describe':'Video\x20color\x20range\x20-\x20sdr\x20|\x20hlg\x20|\x20hdr10\x20|\x20hdr10+\x20|\x20dv,\x20defaults\x20to\x20sdr','type':'string'})['option']('video-bitrate',{'describe':'Video\x20bitrate\x20(in\x20kbps),\x20defaults\x20to\x20highest\x20available','type':'number'})['option']('video-dimension',{'describe':'Video\x20dimension\x20-\x202D/3D\x20(HSBS/HOU/FSBS/OU),\x20defaults\x20to\x202D','default':'2D','type':'string'})['option']('audio-codec',{'alias':'a','describe':'Audio\x20codec\x20-\x20aac\x20|\x20opus\x20|\x20mp3\x20|\x20vorbis\x20|\x20flac\x20|\x20alac\x20|\x20ac3\x20|\x20eac3\x20|\x20dts,\x20defaults\x20to\x20any','type':'string'})['option']('audio-channels',{'alias':'c','describe':'Audio\x20channels,\x20matches\x20sub-channel\x20layouts\x20like\x205.1\x20with\x206.0','type':'number'})['option']('audio-bitrate',{'describe':'Audio\x20bitrate\x20(in\x20kbps),\x20defaults\x20to\x20highest\x20available','type':'number'})['option']('subs-format',{'alias':'s','describe':'Subtitle\x20format\x20-\x20SRT/SSA/ASS/TTML/VTT/STPP/WVTT','type':'string'})['option']('subs-lang',{'alias':'S','describe':'Subtitles\x20language(s)','type':'string'})['option'](gA(0x1ca),{'alias':'l','describe':'Video/audio\x20language(s)','type':gA(0x214)})['option']('skip-video',{'describe':'do\x20not\x20download\x20video','type':'boolean'})['option']('skip-audio',{'describe':'do\x20not\x20download\x20audio','type':gA(0x33a)})['option']('skip-subtitles',{'describe':'do\x20not\x20download\x20subtitles','type':'boolean'})['option'](gA(0x336),{'describe':gA(0x26f),'type':'boolean'})['option']('select',{'describe':'Select\x20audio/video/subtitle\x20streams\x20from\x20manifest\x20manually','type':'boolean'})['option']('episodes',{'alias':'e','describe':'Seasons/episodes\x20to\x20download,\x20e.g.\x20`S01E01`,\x20`S01-S05,S07`,\x20`S01E01-S02E03`,\x20`S02-S02E03`,\x20etc.','type':'string','coerce':fU=>fr(fU)})['option']('retry',{'alias':'R','describe':'Number\x20of\x20retries\x20in\x20case\x20of\x20unsuccessful\x20request','type':'number','default':az['retry']})[gA(0x2bb)]('connections',{'alias':'C','describe':'Number\x20of\x20parallel\x20http\x20connections\x20per\x20download','type':'number','default':az[gA(0x29c)]})['option']('proxy',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20all\x20requests','type':'string'})['option']('proxy-meta',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20metadata\x20fetching','type':'string'})['option']('proxy-media',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20media\x20downloading','type':'string'})['option']('movie-template',{'describe':'Movie\x20filename\x20template','type':'string','default':az['movieFilenameTemplate']})['option']('episode-template',{'describe':'Episode\x20filename\x20template','type':'string','default':az['seriesFilenameTemplate']})['option'](gA(0x277),{'describe':'Download\x20hardsubbed\x20video\x20if\x20available','type':'boolean'})['option'](gA(0x258),{'describe':'Trim\x20video\x20at\x20the\x20beginning;\x20example:\x2000:00:06','type':'string'})['option']('trim-end',{'describe':'Trim\x20video\x20at\x20the\x20end;\x20example:\x2000:01:30','type':'string'})['option']('key',{'describe':'Set\x20content\x20decryption\x20key\x20(if\x20manifest\x20URL\x20as\x20main\x20URL\x20passed),\x20format:\x20KID:KEY','type':'array','string':!0x0,'coerce':fU=>fU['map'](fV=>{let [fW,fX]=fV['split'](':');return{'kid':fW,'key':fX};})})[gA(0x2bb)]('header',{'alias':'H','describe':'Pass\x20custom\x20header(s)\x20for\x20manifest\x20request','type':'array','string':!0x0,'coerce':fU=>ft(fU)})['option']('format',{'alias':'f','describe':'Video\x20container\x20format\x20-\x20mp4\x20|\x20mkv\x20(Pro\x20only)','type':'string','choices':[gA(0x1d4),'mkv']}),'handler':async fT=>{const k9=gA;let fU=fT;fU['videoQuality']=fT['quality'];let fV=new aA(d);if(fU['format']){let {error:g9}=await fk({'videoContainerFormat':fU['format']});g9&&(C['error'](k9(0x320)+g9['message']),C['info']('Learn\x20more:\x20https://azot.mov/pricing'),process['exit'](0x1));}let fW=[];try{({grantedBenefits:fW}=await bV());}catch(ga){let gb=ga instanceof Error?ga[k9(0x20f)]:String(ga);C['warn']('Failed\x20to\x20resolve\x20customer\x20plan\x20for\x20connection\x20limits.\x20Falling\x20back\x20to\x20Free\x20limits:\x20'+gb);}let {options:fX,limit:{normalizedRequestedConnections:fY,maxAllowedConnections:fZ,wasClamped:g0,connections:g1}}=fm({'options':fU,'fallbackConnections':fV['get']('connections'),'grantedBenefits':fW});Object['assign'](fU,fX),g0&&C['warn']('Connections\x20value\x20'+fY+'\x20exceeds\x20tier\x20limit\x20('+fZ+').\x20Using\x20'+g1+'.');let g3=new bZ({'dirs':[k],'indexPath':J});await g3['init'](),await g3[k9(0x223)](),await g3['discover']();let g4=new fw(join(y,'downloads.json'));await g4['load']();let g5=new fp(fV,g3,g4);bM()['then'](gc=>Object['assign'](bK,gc)),g5['onJobCompleted'](gc=>{C['debug']('Job\x20completed:\x20'+gc['id']);}),g5['onJobError'](gc=>{C['debug']('Job\x20failed:\x20'+gc['error']);}),g5['onError'](gc=>{const ka=k9;C['error'](ka(0x25d)+gc['message']);});let g6=Array['isArray'](fT['urls'])?fT['urls']:[],g7=process.env.ELECTRON_RUN_AS_NODE==='1'?g6['filter'](gc=>gc!==process['argv'][0x1]):g6,g8=g7['length']>0x0?g7:[''];for(let gc of g8){let gd=await fu(gc),ge=await g5['analyze'](gd,fU),gf=Array['isArray'](ge)?ge:[ge];for(let gg of gf)g5['add']({'url':gd,'options':fU,'resource':gg});}await g5['waitForIdle']();}},fy='azot-desktop',fz=async()=>{const kb=gA;if(await bM()&&!await confirm({'message':'You\x27re\x20already\x20logged\x20in.\x20Do\x20you\x20want\x20to\x20log\x20in\x20again?','default':!0x1})){C['debug']('Login\x20cancelled');return;}let fT=createSpinner('Requesting\x20device\x20authorization...');fT['start']();try{let fU=bB(),{data:fV,error:fW}=await fU['device']['code']({'client_id':fy,'scope':'openid\x20profile\x20email'});if(fT['stop'](),fW||!fV)C['error']('Failed\x20to\x20request\x20device\x20authorization:\x20'+(fW?.['error_description']||fW?.['statusText']||'Unknown\x20error')),C['debug'](fW);else{let {device_code:fX,user_code:fY,verification_uri:fZ,verification_uri_complete:g0,interval:g1=0x5,expires_in:g3}=fV;console['log'](''),console['log'](P['cyan']('📱\x20Device\x20Authorization\x20Required')),console['log'](''),console['log']('Please\x20visit:\x20'+P['underline'](P['blue'](fZ))),console['log']('Enter\x20code:\x20'+P['bold'](P[kb(0x1e5)](fY))),console['log'](''),await confirm({'message':'Open\x20browser\x20automatically?','default':!0x0})&&await a0(g0||fZ),console['log'](P['gray']('Waiting\x20for\x20authorization\x20(expires\x20in\x20'+Math['floor'](g3/0x3c)+kb(0x1f4)));let g4=await fA(fU,fX,fy,g1);if(g4){await bL(g4);let {data:g5}=await fU['getSession']({'fetchOptions':{'headers':{'Authorization':'Bearer\x20'+g4['access_token']}}});console['log'](P['green']('✅\x20Login\x20successful!\x20Logged\x20in\x20as\x20'+(g5?.['user']?.['name']||g5?.['user']?.['email']||kb(0x2ff))));}}}catch(g6){fT['stop'](),C['error']('Login\x20failed:\x20'+(g6 instanceof Error?g6['message']:'Unknown\x20error'));}};async function fA(fT,fU,fV,fW){let fX=fW,fY=createSpinner('',{'color':'cyan'}),fZ=0x0;return new Promise(g0=>{let g1=async()=>{const kc=b;fZ=(fZ+0x1)%0x4,fY['update'](P['gray'](kc(0x21f)+'.'['repeat'](fZ)+'\x20'[kc(0x305)](0x3-fZ))),fY[kc(0x29a)]()||fY['start']();try{let {data:g3,error:g4}=await fT['device'][kc(0x1d1)]({'grant_type':kc(0x2ea),'device_code':fU,'client_id':fV,'fetchOptions':{'headers':{'user-agent':'Azot\x20Desktop'}}});if(g3?.['access_token']){fY[kc(0x202)](),g0(g3);return;}else{if(g4)switch(g4['error']){case kc(0x1fb):break;case'slow_down':fX+=0x5,fY['update'](P['yellow']('Slowing\x20down\x20polling\x20to\x20'+fX+'s'));break;case'access_denied':fY['stop'](),C['error']('Access\x20was\x20denied\x20by\x20the\x20user');break;case'expired_token':fY[kc(0x202)](),C['error']('The\x20device\x20code\x20has\x20expired.\x20Please\x20try\x20again.');break;default:fY[kc(0x202)](),C['error']('Error:\x20'+g4['error_description']);}}}catch(g5){fY['stop'](),C[kc(0x23a)]('Network\x20error:\x20'+(g5 instanceof Error?g5[kc(0x20f)]:'Unknown\x20error'));return;}setTimeout(g1,fX*0x3e8);};setTimeout(g1,fX*0x3e8);});}const fB=async()=>{C['info']('Logging\x20out...');let fT=await bB()['signOut']();fT['error']?C['error']('Logout\x20failed:\x20'+fT['error']['message']):(C['info']('Logout\x20successful'),await bL({}));},fC={'command':'login\x20[extension]','describe':gA(0x1f5),'builder':fT=>fT['option']('username',{'alias':'u','describe':'Username','type':'string'})['option']('password',{'alias':'p','describe':'Password','type':'string'})['option']('otp',{'alias':'o','describe':'One-time\x20password','type':'string'}),'handler':async fT=>{let fU=fT['extension'],fV={'username':fT['username'],'password':fT['password'],'otp':fT['otp']};if(fU){let fW=new bZ({'dirs':[k],'indexPath':J});await fW['init'](),await fW['discover'](),await fW['login'](fU,fV);}else fz();}},fD={'command':'list','aliases':['ls'],'describe':'Lists\x20information\x20about\x20installed/active\x20extensions','handler':async()=>{let fT=await new bZ({'indexPath':J})['init']();if(!fT['infoList']['length'])return console['log']('No\x20added\x20extensions\x20found');for(let fU of fT['infoList']){let fV=''+P['bold'](P['blue'](fU['name']['padEnd'](0xf))),fW=P['green'](fU['package']?.['version']);console['log'](fV+fW);}console['log']('\x0a'+P['dim']('Location:\x20'+o));}},fE=new Intl['RelativeTimeFormat']('en',{'style':'long'}),fF=fT=>{const kd=gA;let fU=Math['floor'](fT/0x18),fV=Math['abs'](fU);return fV>0x16d?fE['format'](Math['floor'](fU/0x16d),'year'):fV>0x1e?fE['format'](Math['floor'](fU/0x1e),kd(0x2de)):fV>0x7?fE['format'](Math['floor'](fU/0x7),'week'):fV>0x1?fE['format'](Math['floor'](fU),'day'):fE['format'](Math['floor'](fT),'hour');},fG=(fT,fU,fV)=>{const ke=gA;let fW=''+P['bold'](P['blue'](fT[ke(0x2fe)](0xf))),fX=P['green'](fU['padEnd'](0xa)),fY=P['dim'](fV);console['log'](fW+fX+fY);},fH={'command':'list-remote','aliases':['ls-remote'],'describe':'List\x20all\x20available\x20extensions','handler':async()=>{bM()['then'](fV=>Object['assign'](bK,fV));let fT=await bZ['getAvailableExtensions'](),fU=Date['now']();for(let fV of fT){let fW=fV['releases']['toSorted']((g0,g1)=>new Date(g1['createdAt'])['getTime']()-new Date(g0['createdAt'])['getTime']())['at'](0x0);if(!fW)continue;let fX=fW['createdAt'],fY=new Date(fX)['getTime']()-fU,fZ=fF(Math['floor'](fY/0x36ee80));fG(fV['name'],fW['version'],fZ);}}},fI={'command':'logout\x20[extensions..]','describe':'Logout\x20from\x20extension\x20(or\x20if\x20no\x20extension\x20is\x20specified,\x20logout\x20from\x20Azot\x20account)','handler':async fT=>{let fU=fT['extensions'];if(fU?.['length']){let fV=new bZ({'dirs':[k],'indexPath':J});await fV['init'](),await fV['discover'](),await fV['logout'](fU);}else fB();}},fJ={'command':'settings\x20[key]\x20[value]','describe':'CLI\x20access\x20to\x20get/set\x20configuration\x20settings','handler':async fT=>{let fU=new aA(d),fV=fT['key'],fW=fT['value'];if(fV&&fW){fU['set']({[fV]:fW}),console['log']('Setting\x20'+P['bold'](P['blue'](fV))+'\x20set\x20to\x20'+P['green'](fW));return;}else{if(fV){let fY=fU['get'](fV);console['log'](fY?'Setting\x20'+P['bold'](P['blue'](fV))+'\x20is\x20'+P['green'](fY):'Setting\x20'+P['bold'](P['blue'](fV))+'\x20is\x20not\x20found');return;}}let fX=fU['getAll']();for(let [fZ,g0]of Object['entries'](fX)){let g1=(''+fZ)['padEnd'](0x19),g3=String(g0)['replaceAll']('{','{{')['replaceAll']('}','}}');console['log'](P['bold'](P['blue'](g1))+'\x20'+g3);}console['log']('\x0a'+P['dim']('Location:\x20'+d));}},fK={'command':'uninstall\x20<extensions..>','aliases':['rm'],'describe':'Uninstall\x20an\x20extension','handler':async fT=>{let fU=fT['extensions'],fV=new bZ({'dirs':[k],'indexPath':J});await fV['init'](),await fV['uninstall'](fU);}},fL={'command':'install\x20<extensions..>','aliases':['i'],'describe':'Install\x20extension','handler':async fT=>{const kf=gA;let fU=fT['extensions'],fV=new bZ({'dirs':[k],'indexPath':J});await fV['init'](),await fV[kf(0x270)](fU);}},fM={'command':gA(0x263),'describe':'Show\x20logs\x20list','handler':async()=>{let fT=s,fU=await readdir(fT)['then'](fW=>fW['filter'](fX=>fX['endsWith']('.log'))),fV=fW=>join(fT,fW);fU['length']||C['info']('No\x20logs\x20found');for(let fW of fU)C['info'](fV(fW));}};C[gA(0x1e2)](w);const fN=ad(process['argv']);C['debug'](l+'\x20'+fN['join']('\x20'));function b(c,d){c=c-0x1c6;const e=a();let f=e[c];return f;}const fO=new Set(['build','dev']);G['on']('error',fT=>{let fU=q(fT);C['error'](fU['message']);});const fP=P['magenta'](P['bold'](g))+'\x20is\x20'+i['description'][gA(0x1df)](),fQ=P[gA(0x2b8)]('Usage:\x20$0\x20<command>\x20'+P['cyan']('[...options]')),fR=(fT,fU)=>{let fV=fU instanceof Error?fU:Error(String(fU));C['fatal'](fT+':\x20'+fV['message']),fV['stack']&&C['debug'](fV['stack']),rmSync(m,{'recursive':!0x0,'force':!0x0}),process['exit'](0x1);};process['on']('uncaughtException',fT=>{fR('Unexpected\x20error',fT);}),process['on']('unhandledRejection',fT=>{fR('Unhandled\x20promise\x20rejection',fT);}),!v&&fO['has'](fN[0x0]??'')&&fR('CLI\x20error',Error('The\x20`build`\x20and\x20`dev`\x20commands\x20are\x20unavailable\x20in\x20the\x20desktop-distributed\x20CLI.\x20Use\x20the\x20npm-installed\x20`azot`\x20package\x20in\x20a\x20Node.js\x20environment\x20instead.'));const fS=O(fN)['scriptName'](l)['usage'](fP+'\x0a\x0a'+fQ)['command'](fx)['command'](fD)['command'](fH)['command'](fL)['command'](fK)['command'](fC)['command'](fI)['command'](fJ)['command'](fM)['option']('debug',{'describe':'Debug\x20mode','type':'boolean'})['wrap'](O()['terminalWidth']())['help']()['alias']('h','help')['showHelpOnFail'](!0x1)['version'](h)['updateStrings']({'Commands:':P['bold']('Commands:'),'Options:':P['bold'](gA(0x2e6)),'default':P['dim']('default'),'aliases':P['dim']('aliases'),'boolean':P['dim']('boolean'),'string':P['dim']('string'),'number':P['dim']('number')})['epilogue']('Learn\x20more\x20about\x20Azot:\x20'+P['magenta']('https://azot.mov')+'.');v&&fS['command'](at)['command'](au),fS['parseAsync']()['then'](async fT=>{await r(s);let fU=String(fT['_'][0x0]??'');fU==='dev'||fU==='build'&&fT['watch']===!0x0||process['exit'](0x0);})['catch'](fT=>{fR('CLI\x20error',fT);});export{};